From d77eb50a5bc8a2cb9a71c45043d82805c4ac8a84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E6=96=87=E8=B1=AA?= <980287353@qq.com> Date: Tue, 25 Jun 2024 23:23:50 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=8F=90=E4=BA=A4=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=8E=88=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../role/controller/RoleController.java | 44 ++++---- .../role/mapper/CoreRoleUserMapper.java | 4 +- .../{OwerPointDTO.java => OwnerMenuDTO.java} | 16 +-- .../role/pojos/dto/OwnerPointDTO.java | 19 ++++ .../role/service/CoreRoleService.java | 100 ++++++++++++++++-- .../role/service/CoreServerService.java | 51 --------- .../resources/mapper/CoreRoleUserMapper.xml | 2 +- 7 files changed, 140 insertions(+), 96 deletions(-) rename springboot-role/src/main/java/com/tiesheng/role/pojos/dto/{OwerPointDTO.java => OwnerMenuDTO.java} (58%) create mode 100644 springboot-role/src/main/java/com/tiesheng/role/pojos/dto/OwnerPointDTO.java delete mode 100644 springboot-role/src/main/java/com/tiesheng/role/service/CoreServerService.java diff --git a/springboot-role/src/main/java/com/tiesheng/role/controller/RoleController.java b/springboot-role/src/main/java/com/tiesheng/role/controller/RoleController.java index 71a479c..cfb692a 100644 --- a/springboot-role/src/main/java/com/tiesheng/role/controller/RoleController.java +++ b/springboot-role/src/main/java/com/tiesheng/role/controller/RoleController.java @@ -4,15 +4,11 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tiesheng.role.pojos.dao.*; -import com.tiesheng.role.pojos.dto.GroupRxUpdateDTO; -import com.tiesheng.role.pojos.dto.MenuListDTO; -import com.tiesheng.role.pojos.dto.OwerPointDTO; -import com.tiesheng.role.pojos.dto.ServiceDTO; +import com.tiesheng.role.pojos.dto.*; import com.tiesheng.role.pojos.vo.GroupTypeDTO; import com.tiesheng.role.pojos.vo.RoleUserPageVO; import com.tiesheng.role.pojos.vo.ServiceMenuVO; import com.tiesheng.role.service.CoreRoleService; -import com.tiesheng.role.service.CoreServerService; import com.tiesheng.util.config.TsTokenConfig; import com.tiesheng.util.exception.ApiException; import com.tiesheng.util.pojos.ApiResp; @@ -31,8 +27,6 @@ import java.util.stream.Collectors; @RequestMapping("/role") public class RoleController { - @Resource - CoreServerService coreServerService; @Resource CoreRoleService coreRoleService; @@ -182,7 +176,10 @@ public class RoleController { */ @GetMapping("/server/list") public ApiResp> list() { - return ApiResp.respOK(coreServerService.list()); + return ApiResp.respOK(coreRoleService.getServerMapper().selectList(new QueryWrapper() + .eq(CoreRoleServer.IS_DELETED, 0) + .eq("is_open", 1) + )); } @@ -194,7 +191,11 @@ public class RoleController { */ @PostMapping("/server/update") public ApiResp update(@RequestBody CoreRoleServer coreService) { - coreServerService.saveOrUpdate(coreService); + if (StrUtil.isNotEmpty(coreService.getId())) { + coreRoleService.getServerMapper().updateById(coreService); + } else { + coreRoleService.getServerMapper().insert(coreService); + } return ApiResp.respOK(""); } @@ -207,14 +208,14 @@ public class RoleController { @GetMapping("/authority/list") public ApiResp> menuList(@Valid MenuListDTO dto) { - List list = coreServerService.getAuthorityMapper().selectList(new QueryWrapper() + List list = coreRoleService.getAuthorityMapper().selectList(new QueryWrapper() .eq(CoreRoleAuthority.IS_DELETED, 0) .eq("service", dto.getService()) .eq(StrUtil.isNotEmpty(dto.getPlatform()), "platform", dto.getPlatform()) .orderByAsc("sort") ); - List collect = coreServerService.menuWrap(list, null); + List collect = coreRoleService.menuChildrenWrap(list, null); return ApiResp.respOK(collect); } @@ -229,10 +230,10 @@ public class RoleController { public ApiResp menuUpdate(@RequestBody CoreRoleAuthority serviceMenu) { serviceMenu.setParent(StrUtil.emptyToDefault(serviceMenu.getParent(), null)); if (StrUtil.isEmpty(serviceMenu.getId())) { - coreServerService.getAuthorityMapper().insert(serviceMenu); + coreRoleService.getAuthorityMapper().insert(serviceMenu); } else { serviceMenu.setNo(null); - coreServerService.getAuthorityMapper().updateById(serviceMenu); + coreRoleService.getAuthorityMapper().updateById(serviceMenu); } return ApiResp.respOK(""); } @@ -246,10 +247,12 @@ public class RoleController { @GetMapping("/owner/server") public ApiResp> ownerServer() { TokenBean tokenBean = TsTokenConfig.get(); - List allOwnerMenus = coreRoleService.getAllOwnerMenus(tokenBean.getId(), tokenBean.getRoleId()); + List allOwnerMenus = coreRoleService.getOwnerAuthorityLeafList(tokenBean.getId(), tokenBean.getRoleId()); - List roleServerList = coreServerService.list(new QueryWrapper() + List roleServerList = coreRoleService.getServerMapper().selectList(new QueryWrapper() .in("id", allOwnerMenus.stream().map(CoreRoleAuthority::getService).collect(Collectors.toList())) + .eq(CoreRoleServer.IS_DELETED, 0) + .eq("is_open", 1) ); return ApiResp.respOK(roleServerList); @@ -262,9 +265,12 @@ public class RoleController { * @return */ @GetMapping("/owner/menu") - public ApiResp ownerMenu(@Valid ServiceDTO dto) { + public ApiResp> ownerMenu(@Valid OwnerMenuDTO dto) { - return ApiResp.respOK(""); + TokenBean tokenBean = TsTokenConfig.get(); + List ownerMenus = coreRoleService.getOwnerMenus(tokenBean.getId(), tokenBean.getRoleId(), dto); + + return ApiResp.respOK(ownerMenus); } /** @@ -273,10 +279,10 @@ public class RoleController { * @return */ @GetMapping("/owner/point") - public ApiResp> ownerPoint(@Valid OwerPointDTO dto) { + public ApiResp> ownerPoint(@Valid OwnerPointDTO dto) { TokenBean tokenBean = TsTokenConfig.get(); - List allOwnerMenus = coreRoleService.getAllOwnerMenus(tokenBean.getId(), tokenBean.getRoleId()); + List allOwnerMenus = coreRoleService.getOwnerAuthorityLeafList(tokenBean.getId(), tokenBean.getRoleId()); List collect = allOwnerMenus.stream() .filter(it -> Objects.equals(it.getType(), "point")) diff --git a/springboot-role/src/main/java/com/tiesheng/role/mapper/CoreRoleUserMapper.java b/springboot-role/src/main/java/com/tiesheng/role/mapper/CoreRoleUserMapper.java index 06087b0..9869d6a 100644 --- a/springboot-role/src/main/java/com/tiesheng/role/mapper/CoreRoleUserMapper.java +++ b/springboot-role/src/main/java/com/tiesheng/role/mapper/CoreRoleUserMapper.java @@ -29,7 +29,7 @@ public interface CoreRoleUserMapper extends BaseMapper { * @param userId * @return */ - List getAllAuthorityByUserId(@Param("userId") String userId, - @Param("roleId") String roleId); + List getOwnerAuthorityLeafList(@Param("userId") String userId, + @Param("roleId") String roleId); } diff --git a/springboot-role/src/main/java/com/tiesheng/role/pojos/dto/OwerPointDTO.java b/springboot-role/src/main/java/com/tiesheng/role/pojos/dto/OwnerMenuDTO.java similarity index 58% rename from springboot-role/src/main/java/com/tiesheng/role/pojos/dto/OwerPointDTO.java rename to springboot-role/src/main/java/com/tiesheng/role/pojos/dto/OwnerMenuDTO.java index 70e7c16..95d5c4a 100644 --- a/springboot-role/src/main/java/com/tiesheng/role/pojos/dto/OwerPointDTO.java +++ b/springboot-role/src/main/java/com/tiesheng/role/pojos/dto/OwnerMenuDTO.java @@ -2,9 +2,7 @@ package com.tiesheng.role.pojos.dto; import javax.validation.constraints.NotEmpty; -public class OwerPointDTO extends ServiceDTO { - - private String parent; +public class OwnerMenuDTO extends ServiceDTO { @NotEmpty(message = "请选择一个平台") private String platform; @@ -13,19 +11,11 @@ public class OwerPointDTO extends ServiceDTO { // setter\getter /////////////////////////////////////////////////////////////////////////// - public String getParent() { - return parent; - } - - public void setParent(String parent) { - this.parent = parent; - } - - public String getPlatform() { + public @NotEmpty(message = "请选择一个平台") String getPlatform() { return platform; } - public void setPlatform(String platform) { + public void setPlatform(@NotEmpty(message = "请选择一个平台") String platform) { this.platform = platform; } } diff --git a/springboot-role/src/main/java/com/tiesheng/role/pojos/dto/OwnerPointDTO.java b/springboot-role/src/main/java/com/tiesheng/role/pojos/dto/OwnerPointDTO.java new file mode 100644 index 0000000..bbead6a --- /dev/null +++ b/springboot-role/src/main/java/com/tiesheng/role/pojos/dto/OwnerPointDTO.java @@ -0,0 +1,19 @@ +package com.tiesheng.role.pojos.dto; + +public class OwnerPointDTO extends OwnerMenuDTO { + + private String parent; + + /////////////////////////////////////////////////////////////////////////// + // setter\getter + /////////////////////////////////////////////////////////////////////////// + + public String getParent() { + return parent; + } + + public void setParent(String parent) { + this.parent = parent; + } + +} diff --git a/springboot-role/src/main/java/com/tiesheng/role/service/CoreRoleService.java b/springboot-role/src/main/java/com/tiesheng/role/service/CoreRoleService.java index c4ed00b..c1492d7 100644 --- a/springboot-role/src/main/java/com/tiesheng/role/service/CoreRoleService.java +++ b/springboot-role/src/main/java/com/tiesheng/role/service/CoreRoleService.java @@ -1,20 +1,24 @@ package com.tiesheng.role.service; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.tiesheng.role.mapper.CoreRoleGroupMapper; -import com.tiesheng.role.mapper.CoreRoleGroupRxMapper; -import com.tiesheng.role.mapper.CoreRoleUserMapper; +import com.tiesheng.role.mapper.*; import com.tiesheng.role.pojos.dao.CoreRoleAuthority; import com.tiesheng.role.pojos.dao.CoreRoleGroup; import com.tiesheng.role.pojos.dao.CoreRoleGroupRx; import com.tiesheng.role.pojos.dto.GroupRxUpdateDTO; +import com.tiesheng.role.pojos.dto.MenuListDTO; +import com.tiesheng.role.pojos.dto.OwnerMenuDTO; +import com.tiesheng.role.pojos.vo.ServiceMenuVO; import com.tiesheng.util.service.TsServiceBase; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @Service public class CoreRoleService extends TsServiceBase { @@ -26,6 +30,19 @@ public class CoreRoleService extends TsServiceBase menuChildrenWrap(List coreServiceMenuList, String parent) { + List distinctList = coreServiceMenuList.stream().distinct().collect(Collectors.toList()); + + List list = new ArrayList<>(); + + for (CoreRoleAuthority coreServiceMenu : distinctList) { + if (!StrUtil.equals(parent, coreServiceMenu.getParent())) { + continue; + } + + ServiceMenuVO menuVO = BeanUtil.copyProperties(coreServiceMenu, ServiceMenuVO.class); + menuVO.setChildren(menuChildrenWrap(distinctList, coreServiceMenu.getId())); + list.add(menuVO); + } + + return list; + } + + /** * 更新角色的权限 * @@ -58,16 +101,53 @@ public class CoreRoleService extends TsServiceBase getAllOwnerMenus(String userId, String roleId) { - List authority = coreRoleUserMapper.getAllAuthorityByUserId(userId, roleId); + public List getOwnerAuthorityLeafList(String userId, String roleId) { + return coreRoleUserMapper.getOwnerAuthorityLeafList(userId, roleId); + } - return authority; - } + /** + * 获取自己拥有的所有菜单 + * + * @param userId + * @param roleId + * @return + */ + public List getOwnerMenus(String userId, String roleId, OwnerMenuDTO dto) { + List allOwnerMenus = getOwnerAuthorityLeafList(userId, roleId); + + List allRoleAuthorityList = coreRoleAuthorityMapper.selectList(new QueryWrapper() + .eq(CoreRoleAuthority.IS_DELETED, 0) + .eq("service", dto.getService()) + .eq("platform", dto.getPlatform()) + .eq("is_open", 1) + ); + Map allAuthorityMap = CollUtil.fieldValueMap(allRoleAuthorityList, "id"); + + + List ownerAuthorityList = new ArrayList<>(); + for (CoreRoleAuthority roleAuthority : allOwnerMenus) { + ownerAuthorityList.add(roleAuthority); + + String parentId = roleAuthority.getParent(); + while (StrUtil.isNotEmpty(parentId)) { + CoreRoleAuthority parent = allAuthorityMap.get(parentId); + if (parent == null) { + parentId = ""; + } else { + parentId = parent.getParent(); + ownerAuthorityList.add(parent); + } + } + } + return menuChildrenWrap(ownerAuthorityList.stream() + .filter(it -> Objects.equals(it.getType(), "group") || Objects.equals(it.getType(), "menu")) + .collect(Collectors.toList()), null); + } } diff --git a/springboot-role/src/main/java/com/tiesheng/role/service/CoreServerService.java b/springboot-role/src/main/java/com/tiesheng/role/service/CoreServerService.java deleted file mode 100644 index fe7cd64..0000000 --- a/springboot-role/src/main/java/com/tiesheng/role/service/CoreServerService.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.tiesheng.role.service; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.tiesheng.role.mapper.CoreRoleAuthorityMapper; -import com.tiesheng.role.mapper.CoreRoleServerMapper; -import com.tiesheng.role.pojos.dao.CoreRoleAuthority; -import com.tiesheng.role.pojos.dao.CoreRoleServer; -import com.tiesheng.role.pojos.vo.ServiceMenuVO; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; - -@Service -public class CoreServerService extends ServiceImpl { - - @Resource - CoreRoleAuthorityMapper coreRoleAuthorityMapper; - - public CoreRoleAuthorityMapper getAuthorityMapper() { - return coreRoleAuthorityMapper; - } - - - /** - * 菜单封装 - * - * @param coreServiceMenuList - * @param level - * @return - */ - public List menuWrap(List coreServiceMenuList, String parent) { - List list = new ArrayList<>(); - - for (CoreRoleAuthority coreServiceMenu : coreServiceMenuList) { - if (!StrUtil.equals(parent, coreServiceMenu.getParent())) { - continue; - } - - ServiceMenuVO menuVO = BeanUtil.copyProperties(coreServiceMenu, ServiceMenuVO.class); - menuVO.setChildren(menuWrap(coreServiceMenuList, coreServiceMenu.getId())); - list.add(menuVO); - } - - return list; - } - -} diff --git a/springboot-role/src/main/resources/mapper/CoreRoleUserMapper.xml b/springboot-role/src/main/resources/mapper/CoreRoleUserMapper.xml index 37fc94a..9d33d60 100644 --- a/springboot-role/src/main/resources/mapper/CoreRoleUserMapper.xml +++ b/springboot-role/src/main/resources/mapper/CoreRoleUserMapper.xml @@ -32,7 +32,7 @@ ${ew.customSqlSegment} - select * from core_role_authority where is_open = 1