es筛选bug修复
This commit is contained in:
@@ -535,17 +535,17 @@ public class ESJobSearchImpl implements IESJobSearchService
|
||||
Long userMinSalary = Objects.nonNull(esJobSearch.getSalaryMin()) ? esJobSearch.getSalaryMin() : esJobSearch.getMinSalary();
|
||||
Long userMaxSalary = Objects.nonNull(esJobSearch.getSalaryMax()) ? esJobSearch.getSalaryMax() : esJobSearch.getMaxSalary();
|
||||
|
||||
// 岗位薪资范围与用户期望薪资范围有交集
|
||||
// 条件:岗位最小薪资 <= 用户最大薪资 AND 岗位最大薪资 >= 用户最小薪资
|
||||
// 岗位最高薪资必须在用户筛选范围内
|
||||
// 条件:岗位最大薪资 <= 用户最大薪资 AND 岗位最大薪资 >= 用户最小薪资
|
||||
if(Objects.nonNull(userMinSalary) && Objects.nonNull(userMaxSalary)){
|
||||
wrapper.and(x->x.le(ESJobDocument::getMinSalary,userMaxSalary)
|
||||
wrapper.and(x->x.le(ESJobDocument::getMaxSalary,userMaxSalary)
|
||||
.ge(ESJobDocument::getMaxSalary,userMinSalary));
|
||||
} else if(Objects.nonNull(userMinSalary)){
|
||||
// 只有最小薪资:岗位最大薪资 >= 用户最小薪资
|
||||
wrapper.and(x->x.ge(ESJobDocument::getMaxSalary,userMinSalary));
|
||||
} else if(Objects.nonNull(userMaxSalary)){
|
||||
// 只有最大薪资:岗位最小薪资 <= 用户最大薪资
|
||||
wrapper.and(x->x.le(ESJobDocument::getMinSalary,userMaxSalary));
|
||||
// 只有最大薪资:岗位最大薪资 <= 用户最大薪资
|
||||
wrapper.and(x->x.le(ESJobDocument::getMaxSalary,userMaxSalary));
|
||||
}
|
||||
if(!StringUtil.isEmptyOrNull(esJobSearch.getExperience())){
|
||||
Integer maxValue = StringUtil.findMaxValue(esJobSearch.getExperience());
|
||||
@@ -644,20 +644,37 @@ public class ESJobSearchImpl implements IESJobSearchService
|
||||
.match(ESJobDocument::getDescription,jobQuery.getJobTitle().trim(),1.0f));
|
||||
}
|
||||
if(hasText(jobQuery.getEducation())){
|
||||
wrapper.and(a->a.eq(ESJobDocument::getEducation,jobQuery.getEducation().trim()));
|
||||
// 支持逗号分隔的多值筛选(如 "3,4")
|
||||
String eduStr = jobQuery.getEducation().trim();
|
||||
if (eduStr.contains(",")) {
|
||||
List<String> eduList = StringUtil.convertStringToStringList(eduStr);
|
||||
wrapper.and(a->a.in(ESJobDocument::getEducation,eduList));
|
||||
} else {
|
||||
wrapper.and(a->a.eq(ESJobDocument::getEducation,eduStr));
|
||||
}
|
||||
}
|
||||
if(hasText(jobQuery.getArea())){
|
||||
List<Integer> integers = StringUtil.convertStringToIntegerList(jobQuery.getArea().trim());
|
||||
wrapper.and(x->x.in(ESJobDocument::getJobLocationAreaCode,integers));
|
||||
}
|
||||
if(hasText(jobQuery.getExperience())){
|
||||
wrapper.and(a->a.le(ESJobDocument::getExperience,jobQuery.getExperience().trim()));
|
||||
// 支持逗号分隔的多值筛选,取最大值(最宽松的经验要求)
|
||||
String expStr = jobQuery.getExperience().trim();
|
||||
if (expStr.contains(",")) {
|
||||
Integer maxExp = StringUtil.findMaxValue(expStr);
|
||||
if (maxExp != null) {
|
||||
wrapper.and(a->a.le(ESJobDocument::getExperience,maxExp.toString()));
|
||||
}
|
||||
} else {
|
||||
wrapper.and(a->a.le(ESJobDocument::getExperience,expStr));
|
||||
}
|
||||
}
|
||||
// 薪资范围:岗位最高薪资必须在用户筛选范围内
|
||||
if(Objects.nonNull(jobQuery.getMaxSalary())){
|
||||
wrapper.and(x->x.le(ESJobDocument::getMaxSalary,jobQuery.getMaxSalary()));
|
||||
}
|
||||
if(Objects.nonNull(jobQuery.getMinSalary())){
|
||||
wrapper.and(x->x.ge(ESJobDocument::getMinSalary,jobQuery.getMinSalary()));
|
||||
wrapper.and(x->x.ge(ESJobDocument::getMaxSalary,jobQuery.getMinSalary()));
|
||||
}
|
||||
if(hasText(jobQuery.getScaleDictCode())){
|
||||
wrapper.and(a->a.eq(ESJobDocument::getScaleDictCode,jobQuery.getScaleDictCode().trim()));
|
||||
@@ -684,7 +701,12 @@ public class ESJobSearchImpl implements IESJobSearchService
|
||||
wrapper.and(a->a.eq(ESJobDocument::getType,jobQuery.getType().trim()));
|
||||
}
|
||||
if(Objects.nonNull(jobQuery.getOrder())){
|
||||
if (jobQuery.getOrder()==3){
|
||||
// 最大薪资排序
|
||||
wrapper.sort(SortBuilders.fieldSort("maxSalary").order(SortOrder.DESC).missing("_last"));
|
||||
} else {
|
||||
wrapper.sort(SortBuilders.fieldSort("postingDate").order(SortOrder.DESC).missing("_last"));
|
||||
}
|
||||
if (jobQuery.getOrder()==1){
|
||||
wrapper.orderByDesc(ESJobDocument::getIsHot);
|
||||
wrapper.orderByDesc(ESJobDocument::getApplyNum);
|
||||
@@ -741,11 +763,12 @@ public class ESJobSearchImpl implements IESJobSearchService
|
||||
if(hasText(jobQuery.getExperience())){
|
||||
wrapper.and(a->a.le(ESJobDocument::getExperience,jobQuery.getExperience().trim()));
|
||||
}
|
||||
// 薪资范围:岗位最高薪资必须在用户筛选范围内
|
||||
if(Objects.nonNull(jobQuery.getMaxSalary())){
|
||||
wrapper.and(x->x.le(ESJobDocument::getMaxSalary,jobQuery.getMaxSalary()));
|
||||
}
|
||||
if(Objects.nonNull(jobQuery.getMinSalary())){
|
||||
wrapper.and(x->x.ge(ESJobDocument::getMinSalary,jobQuery.getMinSalary()));
|
||||
wrapper.and(x->x.ge(ESJobDocument::getMaxSalary,jobQuery.getMinSalary()));
|
||||
}
|
||||
if(hasText(jobQuery.getScaleDictCode())){
|
||||
wrapper.and(a->a.eq(ESJobDocument::getScaleDictCode,jobQuery.getScaleDictCode().trim()));
|
||||
|
||||
Reference in New Issue
Block a user