修复线上招聘会标题搜索通配符问题
This commit is contained in:
@@ -59,6 +59,7 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PublicJobFairResponse getJobFairPage(PublicJobFairQuery query) {
|
public PublicJobFairResponse getJobFairPage(PublicJobFairQuery query) {
|
||||||
|
query.setJobFairTitle(normalizeJobFairTitle(query.getJobFairTitle()));
|
||||||
PageHelper.startPage(query.getPageNum(), query.getPageSize());
|
PageHelper.startPage(query.getPageNum(), query.getPageSize());
|
||||||
List<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
|
List<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
|
||||||
fillJobFairStatus(list);
|
fillJobFairStatus(list);
|
||||||
@@ -180,12 +181,28 @@ public class PublicJobFairServiceImpl implements IPublicJobFairService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PublicJobFair> selectList(PublicJobFairQuery query) {
|
public List<PublicJobFair> selectList(PublicJobFairQuery query) {
|
||||||
|
query.setJobFairTitle(normalizeJobFairTitle(query.getJobFairTitle()));
|
||||||
List<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
|
List<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
|
||||||
fillJobFairStatus(list);
|
fillJobFairStatus(list);
|
||||||
fillCompanyApplyState(list);
|
fillCompanyApplyState(list);
|
||||||
return 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
|
@Override
|
||||||
public PublicJobFair selectById(String jobFairId) {
|
public PublicJobFair selectById(String jobFairId) {
|
||||||
PublicJobFair jobFair = publicJobFairMapper.selectPublicJobFairById(jobFairId);
|
PublicJobFair jobFair = publicJobFairMapper.selectPublicJobFairById(jobFairId);
|
||||||
|
|||||||
@@ -39,6 +39,18 @@ class PublicJobFairServiceImplTest
|
|||||||
assertNull(PublicJobFairServiceImpl.resolveJobFairStatus(START_TIME, null, END_TIME));
|
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)
|
private String resolveStatus(Date now)
|
||||||
{
|
{
|
||||||
return PublicJobFairServiceImpl.resolveJobFairStatus(START_TIME, END_TIME, now);
|
return PublicJobFairServiceImpl.resolveJobFairStatus(START_TIME, END_TIME, now);
|
||||||
|
|||||||
Reference in New Issue
Block a user