diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/constants/permission/InternalRoleConstants.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/constants/permission/InternalRoleConstants.java new file mode 100644 index 000000000..2396cc8bc --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/constants/permission/InternalRoleConstants.java @@ -0,0 +1,26 @@ +package com.cf.imes.module.system.constants.permission; + +/** + * 内部角色常量 + * + * @author Gqr + * @since 2024/6/22 11:44 + */ +public final class InternalRoleConstants { + + /** + * 组织管理员角色id + */ + public static final Long ORGAN_ADMIN_ROLE_ID = 165L; + + + /** + * 组织员工角色id + */ + public static final Long ORGAN_STAFF_ROLE_ID = 166L; + + /** + * 内置角色组织id + */ + public static final Long INTERNAL_ROLE_ORGAN_ID = 0L; +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java index 1cfe3e339..f9ebe39e9 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java @@ -6,6 +6,7 @@ import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.framework.security.core.LoginUser; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; +import com.cf.imes.module.system.constants.permission.InternalRoleConstants; import com.cf.imes.module.system.controller.admin.permission.vo.permission.PermissionAssignRoleDataScopeReqVO; import com.cf.imes.module.system.controller.admin.permission.vo.permission.PermissionAssignRoleMenuReqVO; import com.cf.imes.module.system.controller.admin.permission.vo.permission.PermissionAssignRoleUserReqVO; @@ -25,8 +26,6 @@ import java.util.Objects; import java.util.Set; import static com.cf.imes.framework.common.pojo.CommonResult.success; -import static com.cf.imes.module.system.service.organ.OrganServiceImpl.ORGAN_ADMIN_ROLE_ID; -import static com.cf.imes.module.system.service.organ.OrganServiceImpl.ORGAN_STAFF_ROLE_ID; /** * 权限 Controller,提供赋予用户、角色的权限的 API 接口 @@ -56,7 +55,8 @@ public class PermissionController { @PreAuthorize("@ss.hasPermission('system:permission:assign-role-menu')") public CommonResult assignRoleMenu(@Validated @RequestBody PermissionAssignRoleMenuReqVO reqVO) { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); - if(!loginUser.getIsSupAdmin() && ( Objects.equals(reqVO.getRoleId(), ORGAN_ADMIN_ROLE_ID) || Objects.equals(reqVO.getRoleId(), ORGAN_STAFF_ROLE_ID))) { + boolean isOrganRole = Objects.equals(reqVO.getRoleId(), InternalRoleConstants.ORGAN_ADMIN_ROLE_ID) || Objects.equals(reqVO.getRoleId(), InternalRoleConstants.ORGAN_STAFF_ROLE_ID); + if(!loginUser.getIsSupAdmin() && (isOrganRole)) { throw new ServiceException(11541, "内置角色无权修改菜单权限"); } if(Objects.equals(reqVO.getRoleId(), 1L)) { @@ -67,8 +67,7 @@ public class PermissionController { throw new ServiceException(11541, "无法修改自身的角色菜单权限"); } - if(Objects.equals(reqVO.getRoleId(), ORGAN_ADMIN_ROLE_ID) || Objects.equals(reqVO.getRoleId(), ORGAN_STAFF_ROLE_ID)) { - } else { + if (!isOrganRole) { // 开启多组织的情况下,需要过滤掉未开通的菜单 organService.handleOrganMenu(menuIds -> { reqVO.getMenuIds().removeIf(menuId -> !CollUtil.contains(menuIds, menuId)); diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/RoleController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/RoleController.java index 7ff7fc762..6c68daa6b 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/RoleController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/RoleController.java @@ -10,7 +10,7 @@ import com.cf.imes.framework.excel.core.util.ExcelUtils; import com.cf.imes.framework.operatelog.core.annotations.OperateLog; import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; -import com.cf.imes.module.system.controller.admin.permission.vo.role.*; +import com.cf.imes.module.system.constants.permission.InternalRoleConstants; import com.cf.imes.module.system.controller.admin.permission.vo.role.RolePageReqVO; import com.cf.imes.module.system.controller.admin.permission.vo.role.RoleRespVO; import com.cf.imes.module.system.controller.admin.permission.vo.role.RoleSaveReqVO; @@ -32,12 +32,9 @@ import java.io.IOException; import java.util.Comparator; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; import static com.cf.imes.framework.common.pojo.CommonResult.success; import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; -import static com.cf.imes.module.system.service.organ.OrganServiceImpl.ORGAN_ADMIN_ROLE_ID; -import static com.cf.imes.module.system.service.organ.OrganServiceImpl.ORGAN_STAFF_ROLE_ID; import static java.util.Collections.singleton; @Tag(name = "管理后台 - 角色") @@ -64,7 +61,7 @@ public class RoleController { @Operation(summary = "修改角色") @PreAuthorize("@ss.hasPermission('system:role:update')") public CommonResult updateRole(@Valid @RequestBody RoleSaveReqVO updateReqVO) { - if(Objects.equals(updateReqVO.getId(), ORGAN_ADMIN_ROLE_ID) || Objects.equals(updateReqVO.getId(), ORGAN_STAFF_ROLE_ID)) { + if (Objects.equals(updateReqVO.getId(), InternalRoleConstants.ORGAN_ADMIN_ROLE_ID) || Objects.equals(updateReqVO.getId(), InternalRoleConstants.ORGAN_STAFF_ROLE_ID)) { throw new ServiceException(11541, "内置角色无法修改"); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMenuMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMenuMapper.java index 36d2976df..169bfccff 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMenuMapper.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMenuMapper.java @@ -3,7 +3,7 @@ package com.cf.imes.module.system.dal.mysql.permission; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.organ.core.aop.OrganIgnore; -import com.cf.imes.framework.organ.core.context.OrganContextHolder; +import com.cf.imes.module.system.constants.permission.InternalRoleConstants; import com.cf.imes.module.system.dal.dataobject.permission.RoleMenuDO; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.apache.ibatis.annotations.Mapper; @@ -11,8 +11,6 @@ import org.apache.ibatis.annotations.Mapper; import java.util.Collection; import java.util.List; -import static com.cf.imes.module.system.service.organ.OrganServiceImpl.ORGAN_ADMIN_ROLE_ID; -import static com.cf.imes.module.system.service.organ.OrganServiceImpl.ORGAN_STAFF_ROLE_ID; @Mapper public interface RoleMenuMapper extends BaseMapperX { @@ -44,9 +42,9 @@ public interface RoleMenuMapper extends BaseMapperX { } @OrganIgnore - default List selectListByRoleIdWithOrganAdmin(Collection roleIds){ + default List selectListByRoleIdWithOrganAdmin(Collection roleIds) { return selectList(new LambdaQueryWrapperX() - .eq(RoleMenuDO::getOrganId, 0) + .eq(RoleMenuDO::getOrganId, InternalRoleConstants.INTERNAL_ROLE_ORGAN_ID) .in(RoleMenuDO::getRoleId, roleIds)); } } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java index 40f3c0dd4..0857310fc 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java @@ -14,12 +14,12 @@ import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.organ.config.OrganProperties; import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.framework.organ.core.util.OrganUtils; +import com.cf.imes.module.system.constants.permission.InternalRoleConstants; import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganSimpleRespVO; import com.cf.imes.module.system.controller.admin.permission.vo.role.RoleSaveReqVO; import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganPageReqVO; import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganSaveReqVO; import com.cf.imes.module.system.controller.admin.user.vo.user.UserSaveReqVO; -import com.cf.imes.module.system.controller.admin.user.vo.user.UserSimpleRespVO; import com.cf.imes.module.system.convert.organ.OrganConvert; import com.cf.imes.module.system.dal.dataobject.permission.MenuDO; import com.cf.imes.module.system.dal.dataobject.permission.RoleDO; @@ -79,10 +79,6 @@ public class OrganServiceImpl implements OrganService { private MenuService menuService; @Resource private PermissionService permissionService; - //组织管理员角色id - public static final Long ORGAN_ADMIN_ROLE_ID = 165L; - //组织员工角色id - public static final Long ORGAN_STAFF_ROLE_ID = 166L; @Value("${chenfeng.organ.use-data-code:imes_prod}") private String useDataCode; @@ -150,7 +146,7 @@ public class OrganServiceImpl implements OrganService { // 创建角色 /*Long roleId = createRole(tenantPackage, organId);*/ // 创建用户,并分配角色 - Long userId = createUser(ORGAN_ADMIN_ROLE_ID, createReqVO, organId); + Long userId = createUser(InternalRoleConstants.ORGAN_ADMIN_ROLE_ID, createReqVO, organId); // 修改组织的管理员 organMapper.updateById(new OrganizationDO().setId(tenant.getId()).setContactUserId(userId)); }); @@ -243,7 +239,7 @@ public class OrganServiceImpl implements OrganService { OrganUtils.execute(organId, () -> { // 获得所有角色 List roles = roleService.getMeAndDefaultRoleList(); - roles.forEach(role -> Assert.isTrue(organId.equals(role.getOrganId()) || role.getOrganId().equals(0L), "角色({}/{}) 组织不匹配", + roles.forEach(role -> Assert.isTrue(organId.equals(role.getOrganId()) || role.getOrganId().equals(InternalRoleConstants.INTERNAL_ROLE_ORGAN_ID), "角色({}/{}) 组织不匹配", role.getId(), role.getOrganId(), organId)); // 兜底校验 // 重新分配每个角色的权限 roles.forEach(role -> { diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java index 2b8a97ddf..3be20159d 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java @@ -15,6 +15,7 @@ import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.framework.security.core.LoginUser; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.system.api.permission.dto.DeptDataPermissionRespDTO; +import com.cf.imes.module.system.constants.permission.InternalRoleConstants; import com.cf.imes.module.system.controller.admin.permission.vo.permission.PermissionAssignRoleUserReqVO; import com.cf.imes.module.system.controller.admin.permission.vo.permission.PermissionAssignUserRoleReqVO; import com.cf.imes.module.system.dal.dataobject.permission.MenuDO; @@ -53,8 +54,6 @@ import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.e import static com.cf.imes.framework.common.util.collection.CollectionUtils.convertSet; import static com.cf.imes.framework.common.util.json.JsonUtils.toJsonString; import static com.cf.imes.module.system.enums.ErrorCodeConstants.ROLE_ME_ERROR; -import static com.cf.imes.module.system.service.organ.OrganServiceImpl.ORGAN_ADMIN_ROLE_ID; -import static com.cf.imes.module.system.service.organ.OrganServiceImpl.ORGAN_STAFF_ROLE_ID; /** * 权限 Service 实现类 @@ -161,7 +160,8 @@ public class PermissionServiceImpl implements PermissionService { public void assignRoleMenu(Long roleId, Set menuIds, Long organId) { // 获得角色拥有菜单编号 Set dbMenuIds = null; - if (Objects.equals(roleId, ORGAN_ADMIN_ROLE_ID) || Objects.equals(roleId, ORGAN_STAFF_ROLE_ID)) { + boolean isOrganRole = Objects.equals(roleId, InternalRoleConstants.ORGAN_ADMIN_ROLE_ID) || Objects.equals(roleId, InternalRoleConstants.ORGAN_STAFF_ROLE_ID); + if (isOrganRole) { dbMenuIds = convertSet(roleMenuMapper.selectListByRoleIdWithOrganAdmin(List.of(roleId)), RoleMenuDO::getMenuId); }else { dbMenuIds = convertSet(roleMenuMapper.selectListByRoleId(roleId), RoleMenuDO::getMenuId); @@ -177,8 +177,8 @@ public class PermissionServiceImpl implements PermissionService { RoleMenuDO entity = new RoleMenuDO(); entity.setRoleId(roleId); entity.setMenuId(menuId); - if (Objects.equals(roleId, ORGAN_ADMIN_ROLE_ID) || Objects.equals(roleId, ORGAN_STAFF_ROLE_ID)) { - entity.setOrganId(0L); + if (isOrganRole) { + entity.setOrganId(InternalRoleConstants.INTERNAL_ROLE_ORGAN_ID); }else { entity.setOrganId(organId); } @@ -244,7 +244,7 @@ public class PermissionServiceImpl implements PermissionService { } // 如果是非管理员的情况下,获得拥有的菜单编号 List from = null; - if(roleIds.contains(ORGAN_ADMIN_ROLE_ID) || roleIds.contains(ORGAN_STAFF_ROLE_ID)) { + if(roleIds.contains(InternalRoleConstants.ORGAN_ADMIN_ROLE_ID) || roleIds.contains(InternalRoleConstants.ORGAN_STAFF_ROLE_ID)) { from = roleMenuMapper.selectListByRoleIdWithOrganAdmin(roleIds); }else { from = roleMenuMapper.selectListByRoleId(roleIds); diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java index b0efa93ee..982e588ed 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java @@ -19,6 +19,7 @@ import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.infra.api.file.FileApi; import com.cf.imes.module.system.api.user.dto.OrganAdminUserRespDTO; +import com.cf.imes.module.system.constants.permission.InternalRoleConstants; import com.cf.imes.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; import com.cf.imes.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; import com.cf.imes.module.system.controller.admin.user.vo.user.UserImportExcelVO; @@ -48,13 +49,11 @@ import javax.annotation.Resource; import java.io.InputStream; import java.time.LocalDateTime; import java.util.*; -import java.util.stream.Collectors; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.common.util.collection.CollectionUtils.convertList; import static com.cf.imes.framework.common.util.collection.CollectionUtils.convertSet; import static com.cf.imes.module.system.enums.ErrorCodeConstants.USER_ME_ERROR; -import static com.cf.imes.module.system.service.organ.OrganServiceImpl.ORGAN_ADMIN_ROLE_ID; /** * 后台用户 Service 实现类 @@ -518,7 +517,7 @@ public class AdminUserServiceImpl implements AdminUserService { } MPJLambdaWrapperX wrapperX = new MPJLambdaWrapperX<>(); wrapperX.leftJoin(UserRoleDO.class, UserRoleDO::getUserId, AdminUserDO::getId) - .eq(UserRoleDO::getRoleId, ORGAN_ADMIN_ROLE_ID) + .eq(UserRoleDO::getRoleId, InternalRoleConstants.ORGAN_ADMIN_ROLE_ID) ; List organAdminUserRespDTOS = userMapper.selectJoinList(OrganAdminUserRespDTO.class, wrapperX); return organAdminUserRespDTOS;