From d78344c9af6f1502cc0ca7323ebb7a91d4eedad3 Mon Sep 17 00:00:00 2001 From: chenhaojie Date: Tue, 25 Jun 2024 18:34:27 +0800 Subject: [PATCH] =?UTF-8?q?das=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/controller/SysRoleController.java | 3 +- .../modules/auth/mapper/SysRoleMapper.java | 4 ++ .../modules/auth/service/SysRoleService.java | 2 +- .../auth/service/impl/SysRoleServiceImpl.java | 52 +++++++++++++++++-- .../main/resources/mapper/SysRoleMapper.xml | 8 +++ 5 files changed, 61 insertions(+), 8 deletions(-) diff --git a/das/src/main/java/com/das/modules/auth/controller/SysRoleController.java b/das/src/main/java/com/das/modules/auth/controller/SysRoleController.java index 4492be73..b8d1636f 100644 --- a/das/src/main/java/com/das/modules/auth/controller/SysRoleController.java +++ b/das/src/main/java/com/das/modules/auth/controller/SysRoleController.java @@ -39,8 +39,7 @@ public class SysRoleController { */ @PostMapping("/update") public R updateRole(@RequestBody SysRoleDto sysRoleDto) { - sysRoleService.updateRole(sysRoleDto); - return R.success(); + return R.success(sysRoleService.updateRole(sysRoleDto)); } /** diff --git a/das/src/main/java/com/das/modules/auth/mapper/SysRoleMapper.java b/das/src/main/java/com/das/modules/auth/mapper/SysRoleMapper.java index 26921690..db73319f 100644 --- a/das/src/main/java/com/das/modules/auth/mapper/SysRoleMapper.java +++ b/das/src/main/java/com/das/modules/auth/mapper/SysRoleMapper.java @@ -28,4 +28,8 @@ public interface SysRoleMapper extends BaseMapper { IPage queryRoleList(IPage page, @Param("sysRole") SysRoleQueryDto sysRoleQueryDto); List queryAuthorityById(@Param("id")Long id); + + SysRole selectByCode(@Param("roleCode") String roleCode); + + long existRoleByName(@Param("name") String name); } diff --git a/das/src/main/java/com/das/modules/auth/service/SysRoleService.java b/das/src/main/java/com/das/modules/auth/service/SysRoleService.java index 94c0cbec..da08a4ea 100644 --- a/das/src/main/java/com/das/modules/auth/service/SysRoleService.java +++ b/das/src/main/java/com/das/modules/auth/service/SysRoleService.java @@ -11,7 +11,7 @@ import java.util.List; public interface SysRoleService { SysRoleDto createRole(SysRoleDto sysRoleDto); - int updateRole(SysRoleDto sysRoleDto); + SysRoleDto updateRole(SysRoleDto sysRoleDto); int deleteRole(DeleteDto deleteDto); diff --git a/das/src/main/java/com/das/modules/auth/service/impl/SysRoleServiceImpl.java b/das/src/main/java/com/das/modules/auth/service/impl/SysRoleServiceImpl.java index f4716dc6..10d55a04 100644 --- a/das/src/main/java/com/das/modules/auth/service/impl/SysRoleServiceImpl.java +++ b/das/src/main/java/com/das/modules/auth/service/impl/SysRoleServiceImpl.java @@ -53,7 +53,7 @@ public class SysRoleServiceImpl implements SysRoleService { } SysRole sysRole = new SysRole(); - BeanCopyUtils.copy(sysRoleDto,sysRole); + BeanCopyUtils.copy(sysRoleDto, sysRole); sysRole.setId(SequenceUtils.generateId()); sysRole.setRevision(1); sysRole.setCreatedTime(new Date()); @@ -108,11 +108,53 @@ public class SysRoleServiceImpl implements SysRoleService { } @Override - public int updateRole(SysRoleDto sysRoleDto) { + public SysRoleDto updateRole(SysRoleDto sysRoleDto) { SysRole sysRole = new SysRole(); - BeanCopyUtils.copy(sysRoleDto,sysRole); - sysRole.setUpdatedTime(new Date()); - return sysRoleMapper.updateById(sysRole); + if (StringUtils.isEmpty(sysRoleDto.getId())) { + throw new ServiceException("参数缺失"); + } + SysRole role = sysRoleMapper.selectByCode(sysRoleDto.getRoleCode()); + if (role == null) { + throw new ServiceException(String.format("角色 %s 不存在", sysRoleDto.getRoleCode())); + } + if (StringUtils.hasText(sysRoleDto.getRoleName())) { + //若与数据库中角色名相同 则表示未对名称进行修改 + if (!role.getRoleName().equals(sysRoleDto.getRoleName())) { + //判断角色名是否存在 + long roleCount = sysRoleMapper.existRoleByName(sysRoleDto.getRoleName()); + if (roleCount > 0) { + throw new ServiceException(String.format("角色名 %s 已存在", sysRoleDto.getRoleName())); + } + } + } + + // 更新角色自身 + sysRole.setRoleName(sysRoleDto.getRoleName()); + sysRole.setRoleCode(sysRoleDto.getRoleCode()); + sysRole.setId(sysRoleDto.getId()); + this.sysRoleMapper.updateById(sysRole); + //验证权限有效性 + String errorAuths = checkErrorAuthorities(sysRoleDto.getAuthList()); + if (StringUtils.hasText(errorAuths)) { + throw new ServiceException("权限不存在 " + errorAuths); + } + if (sysRoleDto.getAuthList() != null) { + //解锁role与auth绑定 + QueryWrapper authorityInfoQueryWrapper = new QueryWrapper<>(); + authorityInfoQueryWrapper.eq("role_id", sysRoleDto.getId()); + sysRoleAuthorityMapper.delete(authorityInfoQueryWrapper); + //绑定新权限 + for (Long authId : sysRoleDto.getAuthList()) { + SysRoleAuthority roleAuthority = new SysRoleAuthority(); + roleAuthority.setRoleId(sysRole.getId()); + roleAuthority.setAuthorityId(authId); + roleAuthority.setRevision(1); + roleAuthority.setCreatedTime(new Date()); + roleAuthority.setUpdatedTime(new Date()); + sysRoleAuthorityMapper.insert(roleAuthority); + } + } + return sysRoleDto; } @Override diff --git a/das/src/main/resources/mapper/SysRoleMapper.xml b/das/src/main/resources/mapper/SysRoleMapper.xml index e7e22d46..5e3985b5 100644 --- a/das/src/main/resources/mapper/SysRoleMapper.xml +++ b/das/src/main/resources/mapper/SysRoleMapper.xml @@ -32,4 +32,12 @@ where srra.role_id = #{id} + + + +