From 20fe3a6fa220037709d935ab3881c345094b2419 Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Sun, 4 Jun 2023 03:47:46 +0800 Subject: [PATCH] Added regex search in RoleManagement --- .../controller/permission/RoleController.java | 4 +- .../mapper/permission/RoleMapper.java | 2 +- .../service/permission/IRoleService.java | 2 +- .../permission/impl/RoleServiceImpl.java | 6 +-- .../mapper/permission/RoleMapper.xml | 7 ++- ui/src/pages/power/RoleManagement.vue | 53 +++++++++++++++++-- 6 files changed, 61 insertions(+), 13 deletions(-) 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 0230d9c..c2168e2 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 @@ -44,10 +44,10 @@ public class RoleController { @Operation(summary = "获取所有角色") @GetMapping @PreAuthorize("hasAuthority('system:role:get')") - public ResponseResult> getAllRole(Long currentPage, Long pageSize, String searchName, String searchPower, Integer searchEnable) { + public ResponseResult> getAllRole(Long currentPage, Long pageSize, String searchName, String searchPower, Integer searchEnable, Integer searchRegex) { List searchPowerList = WebUtil.convertStringToList(searchPower, Long.class); - IPage roles = roleService.getAllRole(currentPage, pageSize, searchName, searchPowerList, searchEnable); + IPage roles = roleService.getAllRole(currentPage, pageSize, searchName, searchPowerList, searchEnable, searchRegex); 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 62bad08..68111fe 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,7 +17,7 @@ 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 filterRoleByPowerId(@Param("roleList") List roleList, @Param("powerId") Long powerId, @Param("searchName") String searchName, @Param("searchEnable") Integer searchEnable, @Param("searchRegex") Integer searchRegex); List getAll(@Param("roleList") List roleList); 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 919c8ec..78c2938 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 @@ -15,7 +15,7 @@ import java.util.List; * @since 2023-04-30 */ public interface IRoleService extends IService { - IPage getAllRole(Long currentPage, Long pageSize, String searchName, List searchPower, Integer searchEnable); + IPage getAllRole(Long currentPage, Long pageSize, String searchName, List searchPower, Integer searchEnable, Integer searchRegex); 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 745785f..53f6cea 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 @@ -44,13 +44,13 @@ public class RoleServiceImpl extends ServiceImpl implements IR } @Override - public IPage getAllRole(Long currentPage, Long pageSize, String searchName, List searchPower, Integer searchEnable) { + public IPage getAllRole(Long currentPage, Long pageSize, String searchName, List searchPower, Integer searchEnable, Integer searchRegex) { IPage roleIPage = PageDTO.of(currentPage, pageSize); searchName = searchName.trim(); - List roleList = roleMapper.filterRoleByPowerId(null, null, searchName, searchEnable); + List roleList = roleMapper.filterRoleByPowerId(null, null, searchName, searchEnable, searchRegex); if (roleList.size() > 0) { for (Long powerId : searchPower) { - roleList = roleMapper.filterRoleByPowerId(roleList, powerId, null, null); + roleList = roleMapper.filterRoleByPowerId(roleList, powerId, null, null, null); if (roleList.size() == 0) { break; } diff --git a/Pinnacle/src/main/resources/mapper/permission/RoleMapper.xml b/Pinnacle/src/main/resources/mapper/permission/RoleMapper.xml index 67a6223..393d61d 100644 --- a/Pinnacle/src/main/resources/mapper/permission/RoleMapper.xml +++ b/Pinnacle/src/main/resources/mapper/permission/RoleMapper.xml @@ -16,7 +16,12 @@ #{item} - and instr(t_role.name, #{searchName}) > 0 + + and t_role.name regexp #{searchName} + + + and instr(t_role.name, #{searchName}) > 0 + and t_role.enable = #{searchEnable} diff --git a/ui/src/pages/power/RoleManagement.vue b/ui/src/pages/power/RoleManagement.vue index 8ed5cc2..38b72e2 100644 --- a/ui/src/pages/power/RoleManagement.vue +++ b/ui/src/pages/power/RoleManagement.vue @@ -24,14 +24,29 @@ - + + > + + @@ -161,10 +176,13 @@ export default { dialogLoading: true, powerOptions: [], searchName: '', - searchPower: [], - searchEnable: -1, inputName: '', + searchRegex: 0, + checkedRegex: 0, + isRegexLegal: true, + searchPower: [], selectedPower: [], + searchEnable: -1, selectedEnable: -1, currentPage: 1, pageSize: 50, @@ -204,6 +222,13 @@ export default { }, methods: { loadRoleTable() { + if (!this.isRegexLegal) { + ElMessage.error({ + dangerouslyUseHTMLString: true, + message: '非法正则表达式,请重新输入' + }) + return + } this.tableLoading = true request .get('/role', { @@ -211,7 +236,8 @@ export default { pageSize: this.pageSize, searchName: this.searchName, searchPower: this.searchPower + '', - searchEnable: this.searchEnable + searchEnable: this.searchEnable, + searchRegex: this.searchRegex ?? 0 }) .then((res) => { const response = res.data @@ -430,16 +456,33 @@ export default { }, handleQuery() { this.searchName = _.cloneDeep(this.inputName) + this.searchRegex = _.cloneDeep(this.checkedRegex) this.searchPower = _.cloneDeep(this.selectedPower) this.searchEnable = _.cloneDeep(this.selectedEnable) this.currentPage = 1 + this.handleInputChange() this.loadRoleTable() }, handleClear() { this.inputName = '' + this.checkedRegex = 0 this.selectedPower = [] this.selectedEnable = -1 this.handleQuery() + }, + handleInputChange() { + if (this.checkedRegex) { + try { + RegExp(this.inputName) + this.isRegexLegal = !( + this.inputName.includes('{}') || this.inputName.includes('[]') + ) + } catch (e) { + this.isRegexLegal = false + } + } else { + this.isRegexLegal = true + } } }, mounted() {