|
|
@@ -12,10 +12,10 @@ import com.ningdatech.basic.exception.BizException; |
|
|
|
import com.ningdatech.basic.exception.code.ExceptionCode; |
|
|
|
import com.ningdatech.basic.util.CollUtils; |
|
|
|
import com.ningdatech.cache.repository.CachePlusOps; |
|
|
|
import com.ningdatech.pmapi.sys.mapper.RoleMapper; |
|
|
|
import com.ningdatech.pmapi.sys.model.dto.MenuDataScopeDTO; |
|
|
|
import com.ningdatech.pmapi.sys.model.dto.RoleSaveDTO; |
|
|
|
import com.ningdatech.pmapi.sys.model.dto.RoleUpdateDTO; |
|
|
|
import com.ningdatech.pmapi.sys.mapper.RoleMapper; |
|
|
|
import com.ningdatech.pmapi.sys.model.entity.*; |
|
|
|
import com.ningdatech.pmapi.sys.service.*; |
|
|
|
import com.ningdatech.pmapi.sys.utils.AuthCacheKeyUtils; |
|
|
@@ -40,18 +40,12 @@ import java.util.stream.Collectors; |
|
|
|
@RequiredArgsConstructor |
|
|
|
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService { |
|
|
|
|
|
|
|
private final IUserRoleService IUserRoleService; |
|
|
|
private final IUserRoleService userRoleService; |
|
|
|
private final RoleMapper roleMapper; |
|
|
|
private final IRoleMenuDatascopeService roleMenuDatascopeService; |
|
|
|
|
|
|
|
private final CachePlusOps cachePlusOps; |
|
|
|
|
|
|
|
private final IRoleMenuService roleMenuService; |
|
|
|
|
|
|
|
private final IMenuService IMenuService; |
|
|
|
|
|
|
|
private static final String SUPER_ADMIN = "SUPER_ADMIN"; |
|
|
|
|
|
|
|
private final IMenuService menuService; |
|
|
|
|
|
|
|
/** |
|
|
|
* 删除角色时,需要级联删除跟角色相关的一切资源: |
|
|
@@ -68,7 +62,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
if (IUserRoleService.count(Wrappers.lambdaQuery(UserRole.class).select(UserRole::getUserId) |
|
|
|
if (userRoleService.count(Wrappers.lambdaQuery(UserRole.class).select(UserRole::getUserId) |
|
|
|
.in(UserRole::getRoleId, ids)) > 0) { |
|
|
|
throw new BizException(ExceptionCode.OPERATION_EX.getCode(), "该角色下还有用户 不能随意删除!"); |
|
|
|
} |
|
|
@@ -77,7 +71,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR |
|
|
|
boolean removeFlag = removeByIds(ids); |
|
|
|
|
|
|
|
//角色拥有的用户 |
|
|
|
IUserRoleService.remove(Wrappers.lambdaQuery(UserRole.class).in(UserRole::getRoleId, ids)); |
|
|
|
userRoleService.remove(Wrappers.lambdaQuery(UserRole.class).in(UserRole::getRoleId, ids)); |
|
|
|
if (removeFlag) { |
|
|
|
// 角色绑定了那些用户 |
|
|
|
if (roleMenuService.remove(Wrappers.lambdaQuery(RoleMenu.class).in(RoleMenu::getRoleId, ids))) { |
|
|
@@ -149,18 +143,19 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR |
|
|
|
public void updateRole(RoleUpdateDTO data, Long userId) { |
|
|
|
Role roleOld = roleMapper.selectById(data.getId()); |
|
|
|
if (Objects.isNull(roleOld)) { |
|
|
|
throw new BaseUncheckedException(HttpStatus.HTTP_OK, String.format("修改用户%d 为空", data.getId())); |
|
|
|
throw BizException.wrap("修改用户 %d 为空", data.getId()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StrUtil.isNotBlank(data.getName()) && check(data.getName(), roleOld.getId())) { |
|
|
|
throw BizException.wrap("角色名{} 已经存在", data.getName()); |
|
|
|
throw BizException.wrap("角色名 %s 已经存在", data.getName()); |
|
|
|
} |
|
|
|
Role role = BeanUtil.toBean(data, Role.class); |
|
|
|
role.setUpdateBy(userId); |
|
|
|
updateById(role); |
|
|
|
saveRoleMenu(data.getMenuIds(), role.getId()); |
|
|
|
saveRoleMenuDatascope(data.getMenuDataScopeList(), role.getId()); |
|
|
|
cachePlusOps.del(AuthCacheKeyUtils.userResourceCacheKey(userId)); |
|
|
|
List<Long> userIdList = userRoleService.listUserIdByRoleId(role.getId()); |
|
|
|
userIdList.forEach(w -> cachePlusOps.del(AuthCacheKeyUtils.userResourceCacheKey(w))); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@@ -184,7 +179,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR |
|
|
|
roleMenuService.remove(Wrappers.lambdaQuery(RoleMenu.class).eq(RoleMenu::getRoleId, roleId)); |
|
|
|
Set<RoleMenu> toAddMenus = new HashSet<>(); |
|
|
|
for (Long menuId : menuIds) { |
|
|
|
Menu menu = IMenuService.getById(menuId); |
|
|
|
Menu menu = menuService.getById(menuId); |
|
|
|
if (Objects.isNull(menu)) { |
|
|
|
continue; |
|
|
|
} |
|
|
@@ -203,7 +198,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR |
|
|
|
if (Objects.isNull(menu.getPid()) || menu.getPid().equals(0L)) { |
|
|
|
return; |
|
|
|
} |
|
|
|
Menu parent = IMenuService.getById(menu.getPid()); |
|
|
|
Menu parent = menuService.getById(menu.getPid()); |
|
|
|
if (Objects.isNull(parent)) { |
|
|
|
return; |
|
|
|
} |
|
|
|