From 40d214f80b5b431a410f2899b5b80a7119061969 Mon Sep 17 00:00:00 2001 From: sh Date: Thu, 18 Dec 2025 19:42:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A8=E8=8D=90=E5=B2=97?= =?UTF-8?q?=E4=BD=8D=E2=80=94=E2=80=94=E4=BC=81=E4=B8=9A=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E4=BC=A0=E9=80=92=E9=A1=B5=E6=95=B0=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cms/service/impl/ESJobSearchImpl.java | 122 +++++++++++------- 1 file changed, 72 insertions(+), 50 deletions(-) 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 98b4385..006d0c0 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 @@ -145,65 +145,36 @@ public class ESJobSearchImpl implements IESJobSearchService ESJobSearch newSearch = new ESJobSearch(); BeanUtils.copyProperties(esJobSearch,newSearch); + boolean isCompanyUser = StringUtil.IS_COMPANY_USER.equals(esJobSearch.getUserType()); //查询 if(SiteSecurityUtils.isLogin()){ AppUser appUser = appUserService.selectAppUserByUserId(SiteSecurityUtils.getUserId()); - if(!ListUtil.isEmptyOrNull(appUser.getJobTitle())){ - List jobTitle = appUser.getJobTitle(); - newSearch.setJobTitle(String.join(",", jobTitle)); - } - if(!StringUtil.isEmptyOrNull(esJobSearch.getJobTitle())){ - newSearch.setJobTitle(esJobSearch.getJobTitle()); - } - if(!StringUtil.isEmptyOrNull(appUser.getEducation())){ - newSearch.setEducation(appUser.getEducation()); - } - if(!StringUtil.isEmptyOrNull(esJobSearch.getEducation())){ - newSearch.setEducation(esJobSearch.getEducation()); - } - - if(!StringUtil.isEmptyOrNull(appUser.getArea())){ - newSearch.setArea(appUser.getArea()); - } - if(!StringUtil.isEmptyOrNull(esJobSearch.getArea())){ - newSearch.setArea(esJobSearch.getArea()); - } - if(!StringUtil.isEmptyOrNull(appUser.getWorkExperience())){ - newSearch.setExperience(appUser.getWorkExperience()); - } - if(!StringUtil.isEmptyOrNull(esJobSearch.getExperience())){ - newSearch.setExperience(esJobSearch.getExperience()); - } - if(!StringUtil.isEmptyOrNull(appUser.getSalaryMax())){ - newSearch.setMaxSalary(Long.valueOf(appUser.getSalaryMax())); - } - if(!StringUtil.isEmptyOrNull(appUser.getSalaryMin())){ - newSearch.setMinSalary(Long.valueOf(appUser.getSalaryMin())); - } - if(!StringUtil.isEmptyOrNull(esJobSearch.getJobType())){ - newSearch.setJobType(esJobSearch.getJobType()); - } - if(!StringUtil.isEmptyOrNull(esJobSearch.getType())){ - newSearch.setType(esJobSearch.getType()); - } - if(!StringUtil.isEmptyOrNull(esJobSearch.getDescription())){ - newSearch.setDescription(esJobSearch.getDescription()); - } - if(!StringUtil.isEmptyOrNull(esJobSearch.getCompanyNature())){ - newSearch.setCompanyNature(esJobSearch.getCompanyNature()); - } - if(!StringUtil.isEmptyOrNull(esJobSearch.getCode())){ + if (!StringUtil.isEmptyOrNull(esJobSearch.getCode())) { newSearch.setCode(esJobSearch.getCode()); } + if (!isCompanyUser) { + setJobSeekerParams(appUser, esJobSearch, newSearch); + } } LambdaEsQueryWrapper wrapper = getWrapper(newSearch,jobIds); //todo 暂时 - wrapper.limit(esJobSearch.getPageSize()); + if (isCompanyUser) { + int current = esJobSearch.getCurrent() == null ? 0 : esJobSearch.getCurrent(); + current = Math.max(current, 0); // 非负校验 + int pageSize = esJobSearch.getPageSize() == null ? 10 : esJobSearch.getPageSize(); + pageSize = Math.min(pageSize, 50); // 限制最大条数 + int from = current * pageSize; + wrapper.orderByAsc(ESJobDocument::getId); + wrapper.limit(from, pageSize); + }else{ + wrapper.limit(esJobSearch.getPageSize()); + } + List esJobDocuments = esJobDocumentMapper.selectList(wrapper); - if (esJobDocuments.size() < esJobSearch.getPageSize()) { + if (!isCompanyUser &&esJobDocuments.size() < esJobSearch.getPageSize()) { // 定义要逐步放宽的搜索条件字段 List relaxConditions = new ArrayList<>(); relaxConditions.add(() -> newSearch.setArea(null)); @@ -251,6 +222,58 @@ public class ESJobSearchImpl implements IESJobSearchService return esJobDocuments; } + /** + * 拼装参数 + * @param appUser + * @param esJobSearch + * @param newSearch + */ + private void setJobSeekerParams(AppUser appUser, ESJobSearch esJobSearch, ESJobSearch newSearch) { + if(!ListUtil.isEmptyOrNull(appUser.getJobTitle())){ + List jobTitle = appUser.getJobTitle(); + newSearch.setJobTitle(String.join(",", jobTitle)); + } + if(!StringUtil.isEmptyOrNull(esJobSearch.getJobTitle())){ + newSearch.setJobTitle(esJobSearch.getJobTitle()); + } + if(!StringUtil.isEmptyOrNull(appUser.getEducation())){ + newSearch.setEducation(appUser.getEducation()); + } + if(!StringUtil.isEmptyOrNull(esJobSearch.getEducation())){ + newSearch.setEducation(esJobSearch.getEducation()); + } + + if(!StringUtil.isEmptyOrNull(appUser.getArea())){ + newSearch.setArea(appUser.getArea()); + } + if(!StringUtil.isEmptyOrNull(esJobSearch.getArea())){ + newSearch.setArea(esJobSearch.getArea()); + } + if(!StringUtil.isEmptyOrNull(appUser.getWorkExperience())){ + newSearch.setExperience(appUser.getWorkExperience()); + } + if(!StringUtil.isEmptyOrNull(esJobSearch.getExperience())){ + newSearch.setExperience(esJobSearch.getExperience()); + } + if(!StringUtil.isEmptyOrNull(appUser.getSalaryMax())){ + newSearch.setMaxSalary(Long.valueOf(appUser.getSalaryMax())); + } + if(!StringUtil.isEmptyOrNull(appUser.getSalaryMin())){ + newSearch.setMinSalary(Long.valueOf(appUser.getSalaryMin())); + } + if(!StringUtil.isEmptyOrNull(esJobSearch.getJobType())){ + newSearch.setJobType(esJobSearch.getJobType()); + } + if(!StringUtil.isEmptyOrNull(esJobSearch.getType())){ + newSearch.setType(esJobSearch.getType()); + } + if(!StringUtil.isEmptyOrNull(esJobSearch.getDescription())){ + newSearch.setDescription(esJobSearch.getDescription()); + } + if(!StringUtil.isEmptyOrNull(esJobSearch.getCompanyNature())){ + newSearch.setCompanyNature(esJobSearch.getCompanyNature()); + } + } /** * 新增全文检索数据 @@ -459,9 +482,8 @@ public class ESJobSearchImpl implements IESJobSearchService } } //企业用户排除es去除jobIds - boolean needExclude = true; - needExclude = !StringUtil.IS_COMPANY_USER.equals(esJobSearch.getUserType()); - if(needExclude && !ListUtil.isListEmptyOrNull(jobIds)){ + boolean isCompanyUser = StringUtil.IS_COMPANY_USER.equals(esJobSearch.getUserType()); + if (!isCompanyUser && !ListUtil.isListEmptyOrNull(jobIds)) { wrapper.not().in(ESJobDocument::getJobId, jobIds); } return wrapper;