From 1758dd9cfacddf902be1c756eb228376df5d2277 Mon Sep 17 00:00:00 2001 From: lapuda <577732344@qq.com> Date: Fri, 24 Jul 2026 10:10:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BA=BF=E4=B8=8A=E6=8B=9B?= =?UTF-8?q?=E8=81=98=E4=BC=9A=E6=A0=87=E9=A2=98=E6=90=9C=E7=B4=A2=E9=80=9A?= =?UTF-8?q?=E9=85=8D=E7=AC=A6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rc/impl/PublicJobFairServiceImpl.java | 17 +++++++++++++++++ .../rc/impl/PublicJobFairServiceImplTest.java | 12 ++++++++++++ 2 files changed, 29 insertions(+) diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java index ab93927..745b1b2 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java @@ -59,6 +59,7 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService { @Override public PublicJobFairResponse getJobFairPage(PublicJobFairQuery query) { + query.setJobFairTitle(normalizeJobFairTitle(query.getJobFairTitle())); PageHelper.startPage(query.getPageNum(), query.getPageSize()); List list = publicJobFairMapper.selectPublicJobFairList(query); fillJobFairStatus(list); @@ -180,12 +181,28 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService { @Override public List selectList(PublicJobFairQuery query) { + query.setJobFairTitle(normalizeJobFairTitle(query.getJobFairTitle())); List list = publicJobFairMapper.selectPublicJobFairList(query); fillJobFairStatus(list); fillCompanyApplyState(list); return list; } + /** + * 将标题查询条件转换为 LIKE 的字面量片段。 + * + *

标题搜索是普通的包含匹配,用户输入的通配符不应改变 SQL 的匹配范围。

+ */ + static String normalizeJobFairTitle(String title) { + if (StringUtils.isBlank(title)) { + return null; + } + return title.trim() + .replace("\\", "\\\\") + .replace("%", "\\%") + .replace("_", "\\_"); + } + @Override public PublicJobFair selectById(String jobFairId) { PublicJobFair jobFair = publicJobFairMapper.selectPublicJobFairById(jobFairId); diff --git a/ruoyi-bussiness/src/test/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImplTest.java b/ruoyi-bussiness/src/test/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImplTest.java index 22de463..e3e5cac 100644 --- a/ruoyi-bussiness/src/test/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImplTest.java +++ b/ruoyi-bussiness/src/test/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImplTest.java @@ -39,6 +39,18 @@ class PublicJobFairServiceImplTest assertNull(PublicJobFairServiceImpl.resolveJobFairStatus(START_TIME, null, END_TIME)); } + @Test + void titleSearchEscapesLikeWildcardsAndTrimsWhitespace() + { + assertEquals("100\\%\\_\\\\", PublicJobFairServiceImpl.normalizeJobFairTitle(" 100%_\\ ")); + } + + @Test + void blankTitleSearchIsIgnored() + { + assertNull(PublicJobFairServiceImpl.normalizeJobFairTitle(" \t")); + } + private String resolveStatus(Date now) { return PublicJobFairServiceImpl.resolveJobFairStatus(START_TIME, END_TIME, now);