本文最后更新于 2026年5月15日 下午
新增角色接口的实现
新增角色接口的需求
先检查角色编码是否重复
如果是自定义部门数据则必须选择部门
转换dto实体
如果是其他情况,则保存到角色表
如果是自定义的数据权限 则保存角色部门关联数据到 sys_role_dept 表中
条件:dataScope 不为空 且 dataScope=5 为“自定义部门权限” 且 deptIds 不为空 且 deptIds 里面至少有一个部门
代码实现
创建 AddRoleDto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
@Data @AllArgsConstructor @NoArgsConstructor @ApiModel(description = "添加角色请求对象") public class AddRoleDto {
@NotBlank(message = "角色编码不能为空") @ApiModelProperty(value = "角色编码", required = true, example = "testRole") private String roleCode;
@NotBlank(message = "角色名称不能为空") @ApiModelProperty(value = "角色名称", required = true, example = "测试角色") private String name;
@ApiModelProperty(value = "排序", example = "1") private Integer sort;
@NotBlank(message = "状态不能为空") @Pattern(regexp = "^[01]$", message = "状态只能为0或1") @ApiModelProperty(value = "状态(0-正常,1-停用)", required = true, example = "0") private String status;
@ApiModelProperty(value = "数据权限(1-所有数据 2-部门及子部门数据 3-本部门数据 4-本人数据 5-自定义部门数据)", example = "4") private Integer dataScope;
@ApiModelProperty(value = "自定义权限部门ID集合(dataScope=5时有效)") private List<Long> deptIds;
@ApiModelProperty(value = "备注", example = "这是角色备注") private String remark;
}
|
在 SysRoleServiceImpl 中实现方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
@Override @Transactional public ResponseResult addRole(AddRoleDto addRoleDto) { LambdaQueryWrapper<SysRole> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysRole::getRoleCode, addRoleDto.getRoleCode()); SysRole existRole = sysRoleService.getOne(wrapper); if (existRole != null) { return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, "角色编码已存在!"); }
if (addRoleDto.getDataScope() != null && addRoleDto.getDataScope().equals(SystemConstants.CUSTOM_DEPT_DATA_SCOPE) && (addRoleDto.getDeptIds() == null || addRoleDto.getDeptIds().isEmpty())) { return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, "自定义数据权限时必须选择部门!"); }
SysRole sysRole = BeanCopyUtils.copyBean(addRoleDto, SysRole.class);
boolean save = sysRoleService.save(sysRole); if (!save) { return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, "新增角色失败!"); }
if (addRoleDto.getDataScope() != null && addRoleDto.getDataScope().equals(SystemConstants.CUSTOM_DEPT_DATA_SCOPE) && addRoleDto.getDeptIds() != null && !addRoleDto.getDeptIds().isEmpty()) {
List<SysRoleDept> roleDeptList = new ArrayList<>(); for (Long deptId : addRoleDto.getDeptIds()) { SysRoleDept roleDept = new SysRoleDept(); roleDept.setRoleId(sysRole.getId()); roleDept.setDeptId(deptId); roleDeptList.add(roleDept); }
boolean saveDept = sysRoleDeptService.saveBatch(roleDeptList); if (!saveDept) { return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, "新增角色部门关联失败!"); } }
return ResponseResult.okResult(); }
|
PS:该系列只做为作者学习开发项目做的笔记用
不一定符合读者来学习,仅供参考
预告
后续会记录博客的开发过程
每次学习会做一份笔记来进行发表
“一花一世界,一叶一菩提”
版权所有 © 2026 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/