处理角色管理、部门管理,组织id参数

This commit is contained in:
yangsb
2024-03-25 14:40:09 +08:00
parent 90ef611d0d
commit 6ea70bdb43
8 changed files with 39 additions and 14 deletions
@@ -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 个字符")
@@ -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<Long> 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<Boolean> updateRole(@Valid @RequestBody RoleSaveReqVO updateReqVO) {
if(Objects.isNull(updateReqVO.getOrganId())) {
updateReqVO.setOrganId(OrganContextHolder.getOrganId());
}
roleService.updateRole(updateReqVO);
return success(true);
}
@@ -28,4 +28,6 @@ public class UserProfileUpdateReqVO {
@Schema(description = "用户性别,参见 SexEnum 枚举类", example = "1")
private Integer sex;
private Long organId;
}
@@ -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<DeptDO> {
@@ -19,8 +23,17 @@ public interface DeptMapper extends BaseMapperX<DeptDO> {
.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<DeptDO>()
.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) {
@@ -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;
}
@@ -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;
@@ -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);
/**
* 更新角色
@@ -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);