From f27f2d499d3ea18ed3e109960e067b4b6107a35e Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Fri, 2 Jun 2023 19:16:49 +0800 Subject: [PATCH] Added search in RoleManagement --- .../permission/PowerController.java | 2 +- .../controller/permission/RoleController.java | 24 ++- .../mapper/permission/RoleMapper.java | 2 + .../service/permission/IRoleService.java | 4 +- .../permission/impl/RoleServiceImpl.java | 23 ++- .../mapper/permission/RoleMapper.xml | 22 +++ ui/src/pages/info/StaffManagement.vue | 7 +- ui/src/pages/power/RoleManagement.vue | 160 +++++++++++++++--- 8 files changed, 214 insertions(+), 30 deletions(-) diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/PowerController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/PowerController.java index e88622d..dbd9fbe 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/PowerController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/permission/PowerController.java @@ -32,7 +32,7 @@ public class PowerController { @Operation(summary = "获取所有权限") @GetMapping - @PreAuthorize("hasAnyAuthority('system:role:add', 'system:role:modify')") + @PreAuthorize("hasAnyAuthority('system:role:get','system:role:add', 'system:role:modify')") public ResponseResult getAllPower() { PowerSet powerSet = powerService.getAllPower(); 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 3a5d59c..40ccbe0 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 @@ -5,17 +5,20 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.permission.Role; 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.IRoleService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.enums.ParameterIn; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; 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; /** @@ -26,6 +29,7 @@ import java.util.List; * @author FatttSnake * @since 2023-04-30 */ +@Slf4j @RestController @RequestMapping("/role") @Tag(name = "角色", description = "角色相关接口") @@ -41,8 +45,24 @@ public class RoleController { @Operation(summary = "获取所有角色") @GetMapping @PreAuthorize("hasAuthority('system:role:get')") - public ResponseResult> getAllRole(Long currentPage, Long pageSize) { - IPage roles = roleService.getAllRole(currentPage, pageSize); + public ResponseResult> getAllRole(Long currentPage, Long pageSize, String searchName, String searchPower, Integer searchEnable) { + List searchPowerList = new ArrayList<>(); + 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)); + } + } + } + } catch (Exception e) { + throw new DataValidationFailedException(); + } + + IPage roles = roleService.getAllRole(currentPage, pageSize, searchName, searchPowerList, searchEnable); return ResponseResult.databaseSelectSuccess(roles); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/RoleMapper.java b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/RoleMapper.java index 266c004..62bad08 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/RoleMapper.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/permission/RoleMapper.java @@ -17,6 +17,8 @@ import java.util.List; */ @Mapper public interface RoleMapper extends BaseMapper { + List filterRoleByPowerId(@Param("roleList") List roleList, @Param("powerId") Long powerId, String searchName, Integer searchEnable); + List getAll(@Param("roleList") List roleList); Role getOneById(@Param("id") long id); diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IRoleService.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IRoleService.java index 2f8d375..919c8ec 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IRoleService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/IRoleService.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.cfive.pinnacle.entity.permission.Role; 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 IRoleService extends IService { - IPage getAllRole(Long currentPage, Long pageSize); + IPage getAllRole(Long currentPage, Long pageSize, String searchName, List searchPower, Integer searchEnable); Role getRole(long id); diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java index 52cf401..ae31d2b 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/permission/impl/RoleServiceImpl.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.PageDTO; import com.cfive.pinnacle.entity.permission.*; import com.cfive.pinnacle.exception.DataValidationFailedException; @@ -10,6 +9,7 @@ import com.cfive.pinnacle.mapper.permission.RoleMapper; import com.cfive.pinnacle.mapper.permission.PowerRoleMapper; import com.cfive.pinnacle.service.permission.IRoleService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,6 +26,7 @@ import java.util.Set; * @author FatttSnake * @since 2023-04-30 */ +@Slf4j @Service public class RoleServiceImpl extends ServiceImpl implements IRoleService { @@ -43,10 +44,24 @@ public class RoleServiceImpl extends ServiceImpl implements IR } @Override - public IPage getAllRole(Long currentPage, Long pageSize) { + public IPage getAllRole(Long currentPage, Long pageSize, String searchName, List searchPower, Integer searchEnable) { IPage roleIPage = PageDTO.of(currentPage, pageSize); - roleIPage = roleMapper.selectPage(roleIPage, Wrappers.emptyWrapper()); - roleIPage.setRecords(roleMapper.getAll(roleIPage.getRecords())); + searchName = searchName.trim(); + List roleList = roleMapper.filterRoleByPowerId(null, null, searchName, searchEnable); + if (searchPower.size() > 0) { + for (Long powerId : searchPower) { + roleList = roleMapper.filterRoleByPowerId(roleList, powerId, null, null); + if (roleList.size() == 0) { + break; + } + } + } + + if (roleList.size() > 0) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper().in(Role::getId, roleList); + roleIPage = roleMapper.selectPage(roleIPage, wrapper); + roleIPage.setRecords(roleMapper.getAll(roleIPage.getRecords())); + } return roleIPage; } diff --git a/Pinnacle/src/main/resources/mapper/permission/RoleMapper.xml b/Pinnacle/src/main/resources/mapper/permission/RoleMapper.xml index 3c56f09..67a6223 100644 --- a/Pinnacle/src/main/resources/mapper/permission/RoleMapper.xml +++ b/Pinnacle/src/main/resources/mapper/permission/RoleMapper.xml @@ -2,6 +2,28 @@ + +