From 973c0b809e1ad7a2f092fc345d48b29eb83205ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=A1=BA=E4=B8=9C?= <577732344@qq.com> Date: Thu, 15 Jan 2026 10:16:05 +0800 Subject: [PATCH] =?UTF-8?q?bugfix-=E4=BC=81=E4=B8=9A=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ruoyi/cms/domain/Job.java | 7 ++++++ .../cms/service/impl/ESJobSearchImpl.java | 22 +++++++++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java index 771a6ed..f4017d5 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Job.java @@ -48,6 +48,13 @@ public class Job extends BaseEntity @ApiModelProperty("最大薪资(元)") private Long maxSalary; + + @TableField(exist = false) + private Long salaryMin; + + @TableField(exist = false) + private Long salaryMax; + @Excel(name = "学历要求 对应字典education") @ApiModelProperty("学历要求 对应字典education") private String education; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java index b5d7435..20d1223 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java @@ -491,13 +491,21 @@ public class ESJobSearchImpl implements IESJobSearchService Integer maxValue = StringUtil.findMaxValue(esJobSearch.getEducation()); wrapper.and(x->x.eq(ESJobDocument::getEducation_int,maxValue)); } - // 用户传入最小薪资:查询岗位最大薪资 >= 用户最小薪资(岗位薪资上限至少要达到用户期望) - if(Objects.nonNull(esJobSearch.getMinSalary())){ - wrapper.and(x->x.ge(ESJobDocument::getMaxSalary,esJobSearch.getMinSalary())); - } - // 用户传入最大薪资:查询岗位最小薪资 <= 用户最大薪资(岗位薪资下限不能超过用户预算) - if(Objects.nonNull(esJobSearch.getMaxSalary())){ - wrapper.and(x->x.le(ESJobDocument::getMinSalary,esJobSearch.getMaxSalary())); + // 薪资范围筛选:兼容前端字段 salaryMin/salaryMax 和 minSalary/maxSalary + Long userMinSalary = Objects.nonNull(esJobSearch.getSalaryMin()) ? esJobSearch.getSalaryMin() : esJobSearch.getMinSalary(); + Long userMaxSalary = Objects.nonNull(esJobSearch.getSalaryMax()) ? esJobSearch.getSalaryMax() : esJobSearch.getMaxSalary(); + + // 岗位薪资范围与用户期望薪资范围有交集 + // 条件:岗位最小薪资 <= 用户最大薪资 AND 岗位最大薪资 >= 用户最小薪资 + if(Objects.nonNull(userMinSalary) && Objects.nonNull(userMaxSalary)){ + wrapper.and(x->x.le(ESJobDocument::getMinSalary,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)); } if(!StringUtil.isEmptyOrNull(esJobSearch.getExperience())){ Integer maxValue = StringUtil.findMaxValue(esJobSearch.getExperience());