From 6ea70bdb4370a62b9d5dc876993116bb0796dbc4 Mon Sep 17 00:00:00 2001 From: yangsb Date: Mon, 25 Mar 2024 14:40:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E8=A7=92=E8=89=B2=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E3=80=81=E9=83=A8=E9=97=A8=E7=AE=A1=E7=90=86=EF=BC=8C?= =?UTF-8?q?=E7=BB=84=E7=BB=87id=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/dept/vo/dept/DeptSaveReqVO.java | 3 +++ .../admin/permission/RoleController.java | 10 +++++++++- .../user/vo/profile/UserProfileUpdateReqVO.java | 2 ++ .../system/dal/mysql/dept/DeptMapper.java | 17 +++++++++++++++-- .../system/service/dept/DeptServiceImpl.java | 8 ++++---- .../system/service/organ/OrganServiceImpl.java | 2 +- .../system/service/permission/RoleService.java | 2 +- .../service/permission/RoleServiceImpl.java | 9 ++++----- 8 files changed, 39 insertions(+), 14 deletions(-) diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/dept/vo/dept/DeptSaveReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/dept/vo/dept/DeptSaveReqVO.java index f59879aae..21a9bb343 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/dept/vo/dept/DeptSaveReqVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/dept/vo/dept/DeptSaveReqVO.java @@ -17,6 +17,9 @@ public class DeptSaveReqVO { @Schema(description = "部门编号", example = "1024") private Long id; + @Schema(description = "组织id") + private Long organId; + @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰") @NotBlank(message = "部门名称不能为空") @Size(max = 30, message = "部门名称长度不能超过 30 个字符") 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 1b93fa35d..1ac3f3c0f 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 @@ -7,6 +7,7 @@ import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.util.object.BeanUtils; 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.controller.admin.permission.vo.role.RolePageReqVO; @@ -29,6 +30,7 @@ import javax.validation.Valid; import java.io.IOException; import java.util.Comparator; import java.util.List; +import java.util.Objects; import static com.cf.imes.framework.common.pojo.CommonResult.success; import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -47,14 +49,20 @@ public class RoleController { @Operation(summary = "创建角色") @PreAuthorize("@ss.hasPermission('system:role:create')") public CommonResult createRole(@Valid @RequestBody RoleSaveReqVO createReqVO) { + if(Objects.isNull(createReqVO.getOrganId())) { + createReqVO.setOrganId(OrganContextHolder.getOrganId()); + } Long organId = SecurityFrameworkUtils.getLoginUser().getOrganId(); - return success(roleService.createRole(createReqVO, null, organId)); + return success(roleService.createRole(createReqVO, null)); } @PutMapping("/update") @Operation(summary = "修改角色") @PreAuthorize("@ss.hasPermission('system:role:update')") public CommonResult updateRole(@Valid @RequestBody RoleSaveReqVO updateReqVO) { + if(Objects.isNull(updateReqVO.getOrganId())) { + updateReqVO.setOrganId(OrganContextHolder.getOrganId()); + } roleService.updateRole(updateReqVO); return success(true); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java index 137329ce9..7f7488ac5 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java @@ -28,4 +28,6 @@ public class UserProfileUpdateReqVO { @Schema(description = "用户性别,参见 SexEnum 枚举类", example = "1") private Integer sex; + private Long organId; + } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/dept/DeptMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/dept/DeptMapper.java index 03296ce8f..7b2f7a354 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/dept/DeptMapper.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/dept/DeptMapper.java @@ -2,12 +2,16 @@ package com.cf.imes.module.system.dal.mysql.dept; 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.context.OrganContextHolder; +import com.cf.imes.framework.organ.core.security.OrganSecurityWebFilter; +import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.system.controller.admin.dept.vo.dept.DeptListReqVO; import com.cf.imes.module.system.dal.dataobject.dept.DeptDO; import org.apache.ibatis.annotations.Mapper; import java.util.Collection; import java.util.List; +import java.util.Objects; @Mapper public interface DeptMapper extends BaseMapperX { @@ -19,8 +23,17 @@ public interface DeptMapper extends BaseMapperX { .eqIfPresent(DeptDO::getStatus, reqVO.getStatus())); } - default DeptDO selectByParentIdAndName(Long parentId, String name) { - return selectOne(DeptDO::getParentId, parentId, DeptDO::getName, name); + default DeptDO selectByParentIdAndName(Long parentId, String name, Long organId) { + //如果请求中没有organId 从上下文中获取 + if(Objects.isNull(organId)) { + organId = OrganContextHolder.getOrganId(); + } + return selectOne(new LambdaQueryWrapperX() + .eq(DeptDO::getOrganId, organId) + .eq(DeptDO::getParentId, parentId) + .eq(DeptDO::getName, name) + ); + //return selectOne(DeptDO::getParentId, parentId, DeptDO::getName, name); } default Long selectCountByParentId(Long parentId) { diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/dept/DeptServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/dept/DeptServiceImpl.java index f54995a95..2e64e0a86 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/dept/DeptServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/dept/DeptServiceImpl.java @@ -48,7 +48,7 @@ public class DeptServiceImpl implements DeptService { // 校验父部门的有效性 validateParentDept(null, createReqVO.getParentId()); // 校验部门名的唯一性 - validateDeptNameUnique(null, createReqVO.getParentId(), createReqVO.getName()); + validateDeptNameUnique(null, createReqVO.getParentId(), createReqVO.getName(), createReqVO.getOrganId()); // 插入部门 DeptDO dept = BeanUtils.toBean(createReqVO, DeptDO.class); @@ -68,7 +68,7 @@ public class DeptServiceImpl implements DeptService { // 校验父部门的有效性 validateParentDept(updateReqVO.getId(), updateReqVO.getParentId()); // 校验部门名的唯一性 - validateDeptNameUnique(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getName()); + validateDeptNameUnique(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getName(), updateReqVO.getOrganId()); // 更新部门 DeptDO updateObj = BeanUtils.toBean(updateReqVO, DeptDO.class); @@ -136,8 +136,8 @@ public class DeptServiceImpl implements DeptService { } @VisibleForTesting - void validateDeptNameUnique(Long id, Long parentId, String name) { - DeptDO dept = deptMapper.selectByParentIdAndName(parentId, name); + void validateDeptNameUnique(Long id, Long parentId, String name, Long organId) { + DeptDO dept = deptMapper.selectByParentIdAndName(parentId, name, organId); if (dept == null) { return; } 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 bf31015eb..b81752091 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 @@ -150,7 +150,7 @@ public class OrganServiceImpl implements OrganService { RoleSaveReqVO reqVO = new RoleSaveReqVO(); reqVO.setName(RoleCodeEnum.TENANT_ADMIN.getName()).setCode(RoleCodeEnum.TENANT_ADMIN.getCode()) .setSort(0).setRemark("系统自动生成").setOrganId(organId); - Long roleId = roleService.createRole(reqVO, RoleTypeEnum.SYSTEM.getType(), organId); + Long roleId = roleService.createRole(reqVO, RoleTypeEnum.SYSTEM.getType()); // 分配权限 permissionService.assignRoleMenu(roleId, tenantPackage.getMenuIds()); return roleId; diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java index 84c8237b5..58fcc6e53 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java @@ -24,7 +24,7 @@ public interface RoleService { * @param type 角色类型 * @return 角色编号 */ - Long createRole(@Valid RoleSaveReqVO createReqVO, Integer type, Long organId); + Long createRole(@Valid RoleSaveReqVO createReqVO, Integer type); /** * 更新角色 diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java index d61931c5c..5f70fb828 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java @@ -49,15 +49,15 @@ public class RoleServiceImpl implements RoleService { @Override @Transactional(rollbackFor = Exception.class) - public Long createRole(RoleSaveReqVO createReqVO, Integer type, Long organId) { + public Long createRole(RoleSaveReqVO createReqVO, Integer type) { // 校验角色 - validateRoleDuplicate(createReqVO.getName(), createReqVO.getCode(), null, organId); + validateRoleDuplicate(createReqVO.getName(), createReqVO.getCode(), null, createReqVO.getOrganId()); // 插入到数据库 RoleDO role = BeanUtils.toBean(createReqVO, RoleDO.class); role.setType(ObjectUtil.defaultIfNull(type, RoleTypeEnum.CUSTOM.getType())); role.setStatus(CommonStatusEnum.ENABLE.getStatus()); role.setDataScope(DataScopeEnum.ALL.getScope()); // 默认可查看所有数据。原因是,可能一些项目不需要项目权限 - role.setOrganId(organId); + role.setOrganId(createReqVO.getOrganId()); roleMapper.insert(role); // 返回 return role.getId(); @@ -66,11 +66,10 @@ public class RoleServiceImpl implements RoleService { @Override @CacheEvict(value = RedisKeyConstants.ROLE, key = "#updateReqVO.id") public void updateRole(RoleSaveReqVO updateReqVO) { - Long organId = SecurityFrameworkUtils.getLoginUser().getOrganId(); // 校验是否可以更新 validateRoleForUpdate(updateReqVO.getId()); // 校验角色的唯一字段是否重复 - validateRoleDuplicate(updateReqVO.getName(), updateReqVO.getCode(), updateReqVO.getId(), organId); + validateRoleDuplicate(updateReqVO.getName(), updateReqVO.getCode(), updateReqVO.getId(), updateReqVO.getOrganId()); // 更新到数据库 RoleDO updateObj = BeanUtils.toBean(updateReqVO, RoleDO.class);