| | |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Map<String, Object> create(RoleManageCreateRequest req) { |
| | | String roleName = req.getRoleName().trim(); |
| | | validateRoleNameUnique(roleName, null); |
| | | String code = generateUniqueRoleCode(); |
| | | SysRole r = new SysRole(); |
| | | r.setRoleCode(code); |
| | | r.setRoleName(req.getRoleName().trim()); |
| | | r.setRemark(trimToNull(req.getRemark())); |
| | | r.setRoleName(roleName); |
| | | r.setRemark(trimToEmpty(req.getRemark())); |
| | | sysRoleMapper.insert(r); |
| | | SysRole fresh = sysRoleMapper.selectById(r.getId()); |
| | | if (fresh == null || !StringUtils.hasText(fresh.getUuid())) { |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void update(Long id, RoleManageUpdateRequest req) { |
| | | SysRole r = loadActiveWithUuid(id, req.getUuid()); |
| | | r.setRoleName(req.getRoleName().trim()); |
| | | r.setRemark(trimToNull(req.getRemark())); |
| | | String roleName = req.getRoleName().trim(); |
| | | validateRoleNameUnique(roleName, id); |
| | | r.setRoleName(roleName); |
| | | r.setRemark(trimToEmpty(req.getRemark())); |
| | | sysRoleMapper.updateById(r); |
| | | replaceRoleMenus(id, req.getMenuIds()); |
| | | } |
| | |
| | | throw new BizException(BizErrorCode.AUTH_FORBIDDEN, "无法生成唯一角色编码"); |
| | | } |
| | | |
| | | private void validateRoleNameUnique(String roleName, Long excludeRoleId) { |
| | | LambdaQueryWrapper<SysRole> query = |
| | | new LambdaQueryWrapper<SysRole>() |
| | | .eq(SysRole::getDelFlag, 0) |
| | | .eq(SysRole::getRoleName, roleName); |
| | | if (excludeRoleId != null) { |
| | | query.ne(SysRole::getId, excludeRoleId); |
| | | } |
| | | long exists = sysRoleMapper.selectCount(query); |
| | | if (exists > 0) { |
| | | throw new BizException(BizErrorCode.AUTH_INVALID_CREDENTIALS, "角色名称已存在"); |
| | | } |
| | | } |
| | | |
| | | private static String trimToNull(String s) { |
| | | if (!StringUtils.hasText(s)) { |
| | | return null; |
| | |
| | | String t = s.trim(); |
| | | return t.isEmpty() ? null : t; |
| | | } |
| | | |
| | | private static String trimToEmpty(String s) { |
| | | return s == null ? "" : s.trim(); |
| | | } |
| | | } |