From 51cd40c162bff08365c9fce742a137342a704c14 Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Fri, 2 Jun 2023 21:43:31 +0800 Subject: [PATCH] Added search in GroupManagement. Optimized RoleController. --- .../permission/GroupController.java | 19 ++- .../controller/permission/RoleController.java | 10 +- .../mapper/permission/GroupMapper.java | 1 + .../service/permission/IGroupService.java | 4 +- .../permission/impl/GroupServiceImpl.java | 23 +++- .../mapper/permission/GroupMapper.xml | 27 ++++- ui/src/pages/power/GroupManagement.vue | 111 +++++++++++++++--- ui/src/pages/power/RoleManagement.vue | 43 +------ 8 files changed, 167 insertions(+), 71 deletions(-) diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/GroupController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/GroupController.java index ec8805a..70aec32 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/GroupController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/GroupController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.permission.Group; import com.cfive.pinnacle.entity.common.ResponseCode; import com.cfive.pinnacle.entity.common.ResponseResult; +import com.cfive.pinnacle.exception.DataValidationFailedException; import com.cfive.pinnacle.service.permission.IGroupService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -16,6 +17,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; /** @@ -39,9 +41,20 @@ public class GroupController { @Operation(summary = "获取所有用户组") @GetMapping - @PreAuthorize("hasAuthority('system:group:get' )") - public ResponseResult> getAllGroup(Long currentPage, Long pageSize) { - IPage groups = groupService.getAllGroup(currentPage, pageSize); + @PreAuthorize("hasAuthority('system:group:get')") + public ResponseResult> getAllGroup(Long currentPage, Long pageSize, String searchName, String searchRole, Integer searchEnable) { + List searchRoleList = new ArrayList<>(); + try { + if (searchRole != null && !searchRole.isBlank()) { + String[] searchRoleStr = searchRole.split(","); + for (String s : searchRoleStr) { + searchRoleList.add(Long.parseLong(s)); + } + } + } catch (Exception e) { + throw new DataValidationFailedException(); + } + IPage groups = groupService.getAllGroup(currentPage, pageSize, searchName, searchRoleList, searchEnable); return ResponseResult.databaseSelectSuccess(groups); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java index 40ccbe0..4a7f5be 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/RoleController.java @@ -50,12 +50,8 @@ public class RoleController { try { if (searchPower != null && !searchPower.isBlank()) { String[] searchPowerStr = searchPower.split(","); - if (searchPowerStr.length == 1) { - searchPowerList.add(Long.parseLong(searchPowerStr[0])); - } else { - for (String s : searchPowerStr) { - searchPowerList.add(Long.parseLong(s)); - } + for (String s : searchPowerStr) { + searchPowerList.add(Long.parseLong(s)); } } } catch (Exception e) { @@ -68,7 +64,7 @@ public class RoleController { @Operation(summary = "获取角色列表") @GetMapping("list") - @PreAuthorize("hasAnyAuthority('system:group:add', 'system:group:modify', 'system:user:add', 'system:user:modify')") + @PreAuthorize("hasAnyAuthority('system:group:get', 'system:group:add', 'system:group:modify', 'system:user:add', 'system:user:modify')") public ResponseResult> getRoleList() { List roles = roleService.list(); return ResponseResult.databaseSelectSuccess(roles); diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/GroupMapper.java b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/GroupMapper.java index 004668b..fddc3b8 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/GroupMapper.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/GroupMapper.java @@ -17,6 +17,7 @@ import java.util.List; */ @Mapper public interface GroupMapper extends BaseMapper { + List filterGroupByRoleId(@Param("groupList") List groupList, @Param("roleId") Long roleId, String searchName, Integer searchEnable); List getAll(@Param("groupList") List groupList); Group getOneById(@Param("id") long id); diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IGroupService.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IGroupService.java index e777aae..2e51943 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IGroupService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IGroupService.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.permission.Group; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 用户组 服务类 @@ -13,7 +15,7 @@ import com.baomidou.mybatisplus.extension.service.IService; * @since 2023-04-30 */ public interface IGroupService extends IService { - IPage getAllGroup(Long currentPage, Long pageSize); + IPage getAllGroup(Long currentPage, Long pageSize, String searchName, List searchRole, Integer searchEnable); Group getGroup(Long id); diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/GroupServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/GroupServiceImpl.java index 1df926c..6bb01bf 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/GroupServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/GroupServiceImpl.java @@ -2,7 +2,6 @@ package com.cfive.pinnacle.service.permission.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.cfive.pinnacle.entity.permission.Group; @@ -16,6 +15,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.HashSet; +import java.util.List; /** *

@@ -41,10 +41,25 @@ public class GroupServiceImpl extends ServiceImpl implements } @Override - public IPage getAllGroup(Long currentPage, Long pageSize) { + public IPage getAllGroup(Long currentPage, Long pageSize, String searchName, List searchRole, Integer searchEnable) { Page groupIPage = PageDTO.of(currentPage, pageSize); - groupIPage = groupMapper.selectPage(groupIPage, Wrappers.emptyWrapper()); - groupIPage.setRecords(groupMapper.getAll(groupIPage.getRecords())); + searchName = searchName.trim(); + List groupList = groupMapper.filterGroupByRoleId(null, null, searchName, searchEnable); + if (searchRole.size() > 0) { + for (Long roleId : searchRole) { + groupList = groupMapper.filterGroupByRoleId(groupList, roleId, null, null); + if (groupList.size() == 0) { + break; + } + } + } + + if (groupList.size() > 0) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper().in(Group::getId, groupList); + groupIPage = groupMapper.selectPage(groupIPage, wrapper); + groupIPage.setRecords(groupMapper.getAll(groupIPage.getRecords())); + } + return groupIPage; } diff --git a/Pinnacle/src/main/resources/mapper/permission/GroupMapper.xml b/Pinnacle/src/main/resources/mapper/permission/GroupMapper.xml index acce8c4..438bcb9 100644 --- a/Pinnacle/src/main/resources/mapper/permission/GroupMapper.xml +++ b/Pinnacle/src/main/resources/mapper/permission/GroupMapper.xml @@ -2,6 +2,28 @@ + + - + + + + diff --git a/ui/src/pages/power/GroupManagement.vue b/ui/src/pages/power/GroupManagement.vue index 31a3331..0a15e09 100644 --- a/ui/src/pages/power/GroupManagement.vue +++ b/ui/src/pages/power/GroupManagement.vue @@ -1,19 +1,71 @@