修复线上招聘会标题搜索通配符问题
This commit is contained in:
@@ -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<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
|
||||
fillJobFairStatus(list);
|
||||
@@ -180,12 +181,28 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
|
||||
|
||||
@Override
|
||||
public List<PublicJobFair> selectList(PublicJobFairQuery query) {
|
||||
query.setJobFairTitle(normalizeJobFairTitle(query.getJobFairTitle()));
|
||||
List<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
|
||||
fillJobFairStatus(list);
|
||||
fillCompanyApplyState(list);
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将标题查询条件转换为 LIKE 的字面量片段。
|
||||
*
|
||||
* <p>标题搜索是普通的包含匹配,用户输入的通配符不应改变 SQL 的匹配范围。</p>
|
||||
*/
|
||||
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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user