From 7da56998b25cb6aec8782b86f5546a33418c5914 Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Sun, 4 Jun 2023 03:21:30 +0800 Subject: [PATCH] Added regex search in DepartmentManagement --- .../controller/DepartmentController.java | 7 +- .../pinnacle/entity/common/ResponseCode.java | 1 + .../pinnacle/mapper/DepartmentMapper.java | 2 +- .../pinnacle/service/IDepartmentService.java | 2 +- .../service/impl/DepartmentServiceImpl.java | 5 +- .../resources/mapper/DepartmentMapper.xml | 49 +++++++++--- ui/src/pages/info/DepartmentManagement.vue | 75 ++++++++++++++----- 7 files changed, 108 insertions(+), 33 deletions(-) diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/DepartmentController.java b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/DepartmentController.java index 850ca78..5261dfb 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/controller/DepartmentController.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/controller/DepartmentController.java @@ -8,6 +8,7 @@ import com.cfive.pinnacle.entity.common.ResponseResult; import com.cfive.pinnacle.service.IDepartmentService; import com.cfive.pinnacle.utils.WebUtil; 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.web.bind.annotation.*; @@ -22,6 +23,7 @@ import java.util.List; * @author FatttSnake * @since 2023-04-30 */ +@Slf4j @RestController @RequestMapping("/department") @Tag(name = "部门", description = "部门相关接口") @@ -45,8 +47,9 @@ public class DepartmentController { @GetMapping @PreAuthorize("hasAuthority('department:admin:get')") - public ResponseResult> getAllDepartment(Long currentPage, Long pageSize, Integer searchType, String searchInput) { - return ResponseResult.databaseSelectSuccess(departmentService.getAllDepartment(currentPage, pageSize, searchType, searchInput)); + public ResponseResult> getAllDepartment(Long currentPage, Long pageSize, Integer searchType, String searchInput, Integer searchRegex) { + log.info(searchInput); + return ResponseResult.databaseSelectSuccess(departmentService.getAllDepartment(currentPage, pageSize, searchType, searchInput, searchRegex)); } @GetMapping("list") diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/entity/common/ResponseCode.java b/Pinnacle/src/main/java/com/cfive/pinnacle/entity/common/ResponseCode.java index 7ac5a91..6275c99 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/entity/common/ResponseCode.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/entity/common/ResponseCode.java @@ -25,6 +25,7 @@ public class ResponseCode { public static final int DATABASE_CONNECT_ERROR = 20036; public static final int DATABASE_DATA_TO_LONG = 20037; public static final int DATABASE_DATA_VALIDATION_FAILED = 20038; + public static final int DATABASE_EXECUTE_ERROR = 20039; public static final int UNAUTHORIZED = 30010; public static final int ACCESS_DENIED = 30030; diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/DepartmentMapper.java b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/DepartmentMapper.java index f50edb8..0013465 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/DepartmentMapper.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/mapper/DepartmentMapper.java @@ -21,5 +21,5 @@ public interface DepartmentMapper extends BaseMapper { @Deprecated List getDepartAndUser(); - IPage getAllDepartment(IPage page, @Param("searchType") Integer searchType, @Param("searchInput") String searchInput); + IPage getAllDepartment(IPage page, @Param("searchType") Integer searchType, @Param("searchInput") String searchInput, @Param("searchRegex") Integer searchRegex); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/IDepartmentService.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/IDepartmentService.java index 0ef3cda..13f56ce 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/IDepartmentService.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/IDepartmentService.java @@ -18,5 +18,5 @@ public interface IDepartmentService extends IService { @Deprecated List getDepartAndUser(); - IPage getAllDepartment(Long currentPage, Long pageSize, Integer searchType, String searchInput); + IPage getAllDepartment(Long currentPage, Long pageSize, Integer searchType, String searchInput, Integer searchRegex); } diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/DepartmentServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/DepartmentServiceImpl.java index db2b90d..5c9c697 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/DepartmentServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/DepartmentServiceImpl.java @@ -35,7 +35,7 @@ public class DepartmentServiceImpl extends ServiceImpl getAllDepartment(Long currentPage, Long pageSize, Integer searchType, String searchInput) { + public IPage getAllDepartment(Long currentPage, Long pageSize, Integer searchType, String searchInput, Integer searchRegex) { IPage departmentIPage; if (currentPage == null || pageSize == null) { departmentIPage = PageDTO.of(0, -1); @@ -43,6 +43,7 @@ public class DepartmentServiceImpl extends ServiceImpl select id, name, tel, address, deleted, version - from t_department where deleted = 0 + from t_department where deleted = 0 - and ( - instr(name, #{searchInput}) > 0 - or instr(tel, #{searchInput}) > 0 - or instr(address, #{searchInput}) > 0 - ) + + and ( + name regexp #{searchInput} + or tel regexp #{searchInput} + or address regexp #{searchInput} + ) + + + and ( + instr(name, #{searchInput}) > 0 + or instr(tel, #{searchInput}) > 0 + or instr(address, #{searchInput}) > 0 + ) + - and instr(name, #{searchInput}) > 0 + + and name regexp #{searchInput} + + + and instr(name, #{searchInput}) > 0 + - and instr(tel, #{searchInput}) > 0 + + and tel regexp #{searchInput} + + + and instr(tel, #{searchInput}) > 0 + - and instr(address, #{searchInput}) > 0 + + and address regexp #{searchInput} + + + and instr(address, #{searchInput}) > 0 + diff --git a/ui/src/pages/info/DepartmentManagement.vue b/ui/src/pages/info/DepartmentManagement.vue index 941c704..972c463 100644 --- a/ui/src/pages/info/DepartmentManagement.vue +++ b/ui/src/pages/info/DepartmentManagement.vue @@ -24,22 +24,35 @@ - - - + + + + + + 查询 @@ -141,7 +154,10 @@ export default { selectedType: 0, searchInput: '', inputInput: '', + searchRegex: 0, + checkedRegex: 0, currentPage: 1, + isRegexLegal: true, pageSize: 50, totalCount: 0, departmentTable: [], @@ -164,13 +180,21 @@ export default { }, methods: { loadDepartmentTable() { + if (!this.isRegexLegal) { + ElMessage.error({ + dangerouslyUseHTMLString: true, + message: '非法正则表达式,请重新输入' + }) + return + } this.tableLoading = true request .get('/department', { currentPage: this.currentPage, pageSize: this.pageSize, searchType: this.searchType, - searchInput: this.searchInput + searchInput: this.searchInput, + searchRegex: this.searchRegex ?? 0 }) .then((res) => { const response = res.data @@ -300,13 +324,30 @@ export default { handleQuery() { this.searchType = _.cloneDeep(this.selectedType) this.searchInput = _.cloneDeep(this.inputInput) + this.searchRegex = _.cloneDeep(this.checkedRegex) this.currentPage = 1 + this.handleInputChange() this.loadDepartmentTable() }, handleClear() { this.selectedType = 0 this.inputInput = '' + this.checkedRegex = 0 this.handleQuery() + }, + handleInputChange() { + if (this.checkedRegex) { + try { + RegExp(this.inputInput) + this.isRegexLegal = !( + this.inputInput.includes('{}') || this.inputInput.includes('[]') + ) + } catch (e) { + this.isRegexLegal = false + } + } else { + this.isRegexLegal = true + } } }, mounted() {