From 009571b7d0a7221334769cdf4d809f1fed49414e Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Thu, 17 Jul 2025 13:27:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=9F=A5=E8=AF=A2=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/controller/RoleController.java | 1 + .../java/com/example/demo/domain/vo/RoleVo.java | 6 +++++- .../example/demo/serviceImpl/RoleServiceImpl.java | 23 ++++++++++++++-------- src/main/resources/mapper/RoleMapper.xml | 4 ++-- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/demo/controller/RoleController.java b/src/main/java/com/example/demo/controller/RoleController.java index 31531ad..a8c54c1 100644 --- a/src/main/java/com/example/demo/controller/RoleController.java +++ b/src/main/java/com/example/demo/controller/RoleController.java @@ -68,6 +68,7 @@ public class RoleController { return Result.success(roleService.selectBy(page.getPageNum(), page.getPageSize(), page.getRoleVo())); } } catch (Exception e) { + e.printStackTrace(); return Result.error("请检查筛选数据的格式"); } diff --git a/src/main/java/com/example/demo/domain/vo/RoleVo.java b/src/main/java/com/example/demo/domain/vo/RoleVo.java index fdcf846..bbcaca4 100644 --- a/src/main/java/com/example/demo/domain/vo/RoleVo.java +++ b/src/main/java/com/example/demo/domain/vo/RoleVo.java @@ -2,6 +2,7 @@ package com.example.demo.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -20,6 +21,7 @@ import java.util.List; @Data @NoArgsConstructor +@AllArgsConstructor public class RoleVo implements Serializable { private static final long serialVersionUID = 1L; @@ -28,7 +30,7 @@ public class RoleVo implements Serializable { private String roleKey; // 角色标识符 private Integer priority;//优先级 private Integer fatherId;//上级角色id - private Integer fatherName;//上级角色名称 + private String fatherName;//上级角色名称 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date createTime; // 创建时间 @@ -36,4 +38,6 @@ public class RoleVo implements Serializable { private Date updateTime; // 更新时间 List menuIds;//拥有的菜单id + + List tree;//菜单树 } diff --git a/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java index 8651353..d70aff4 100644 --- a/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java @@ -2,6 +2,7 @@ package com.example.demo.serviceImpl; import com.example.demo.domain.entity.Role; import com.example.demo.domain.vo.ConsumeUser; +import com.example.demo.domain.vo.MenuVo; import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.RoleVo; import com.example.demo.mapper.RefundMapper; @@ -38,29 +39,28 @@ public class RoleServiceImpl implements RoleService { @Transactional public Result addRole(RoleVo roleVo) { //校验角色 - if(roleVo.getRoleName()==null|| roleVo.getRoleName().isEmpty()){ + if (roleVo.getRoleName() == null || roleVo.getRoleName().isEmpty()) { return Result.error("角色名为空"); } - if(roleMapper.selectByRoleName(roleVo.getRoleName())!=null){ + if (roleMapper.selectByRoleName(roleVo.getRoleName()) != null) { return Result.error("角色名重复"); } - if(roleVo.getPriority()==null){ + if (roleVo.getPriority() == null) { return Result.error("优先级为空"); } - if(roleVo.getMenuIds()==null||roleVo.getMenuIds().isEmpty()){ + if (roleVo.getMenuIds() == null || roleVo.getMenuIds().isEmpty()) { return Result.error("权限为空"); } try { roleMapper.addRole(roleVo); Role role = roleMapper.selectByRoleName(roleVo.getRoleName()); - if(role==null){ + if (role == null) { return Result.error("角色添加失败"); - }else{ + } else { roleVo.setId(role.getId()); } menuService.addPermission(roleVo); - }catch (Exception e) - { + } catch (Exception e) { return Result.error("添加失败"); } @@ -83,6 +83,13 @@ public class RoleServiceImpl implements RoleService { public PageInfo selectBy(Integer pageNum, Integer pageSize, RoleVo roleVo) { PageHelper.startPage(pageNum, pageSize); List roleVos = roleMapper.selectBy(roleVo); + // 遍历 roleVos 列表 + for (RoleVo role : roleVos) { + // 获取每个角色的权限树 + List permissionTree = menuService.getPermissionTree(role.getId()); + // 将权限树设置到角色对象中 + role.setTree(permissionTree); + } return new PageInfo<>(roleVos); } } diff --git a/src/main/resources/mapper/RoleMapper.xml b/src/main/resources/mapper/RoleMapper.xml index 51e0cad..8411b09 100644 --- a/src/main/resources/mapper/RoleMapper.xml +++ b/src/main/resources/mapper/RoleMapper.xml @@ -49,8 +49,8 @@ -- 自连接,通过 father_id 关联父角色 LEFT JOIN role father ON r.father_id = father.id - - r.role_name LIKE CONCAT('%', #{roleVo.roleName}, '%') + + r.role_name LIKE CONCAT('%', #{roleName}, '%') ORDER BY r.priority DESC