|
|
@ -4,9 +4,6 @@ import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
|
import cn.hutool.core.util.ArrayUtil; |
|
|
|
import cn.hutool.extra.spring.SpringUtil; |
|
|
|
import com.google.common.annotations.VisibleForTesting; |
|
|
|
import com.google.common.base.Suppliers; |
|
|
|
import com.google.common.collect.Sets; |
|
|
|
import com.win.framework.common.enums.CommonStatusEnum; |
|
|
|
import com.win.framework.common.util.collection.CollectionUtils; |
|
|
|
import com.win.framework.datapermission.core.annotation.DataPermission; |
|
|
@ -21,6 +18,10 @@ import com.win.module.system.dal.redis.RedisKeyConstants; |
|
|
|
import com.win.module.system.enums.permission.DataScopeEnum; |
|
|
|
import com.win.module.system.service.dept.DeptService; |
|
|
|
import com.win.module.system.service.user.AdminUserService; |
|
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional; |
|
|
|
import com.google.common.annotations.VisibleForTesting; |
|
|
|
import com.google.common.base.Suppliers; |
|
|
|
import com.google.common.collect.Sets; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.cache.annotation.CacheEvict; |
|
|
|
import org.springframework.cache.annotation.Cacheable; |
|
|
@ -130,8 +131,9 @@ public class PermissionServiceImpl implements PermissionService { |
|
|
|
// ========== 角色-菜单的相关方法 ==========
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
@CacheEvict(value = RedisKeyConstants.MENU_ROLE_ID_LIST, allEntries = true) // allEntries 清空所有缓存,主要一次更新涉及到的 menuIds 较多,反倒批量会更快
|
|
|
|
@Transactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换
|
|
|
|
@CacheEvict(value = RedisKeyConstants.MENU_ROLE_ID_LIST, |
|
|
|
allEntries = true) // allEntries 清空所有缓存,主要一次更新涉及到的 menuIds 较多,反倒批量会更快
|
|
|
|
public void assignRoleMenu(Long roleId, Set<Long> menuIds) { |
|
|
|
// 获得角色拥有菜单编号
|
|
|
|
Set<Long> dbMenuIds = convertSet(roleMenuMapper.selectListByRoleId(roleId), RoleMenuDO::getMenuId); |
|
|
|