From 163bbabcea37d810b042faa85168a64232ed5a47 Mon Sep 17 00:00:00 2001 From: sh Date: Fri, 17 Jul 2026 20:18:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8E=BB=E6=8E=89=E6=8E=A8?= =?UTF-8?q?=E8=8D=90=E6=B3=A8=E9=87=8A=E7=9A=84=E6=94=BE=E5=AE=BD=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cms/service/impl/ESJobSearchImpl.java | 176 +++++++++--------- 1 file changed, 88 insertions(+), 88 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 5fcadd6..99ca8fc 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 @@ -264,50 +264,50 @@ public class ESJobSearchImpl implements IESJobSearchService List esJobDocuments = esJobDocumentMapper.selectList(wrapper); -// if (!isCompanyUser &&esJobDocuments.size() < esJobSearch.getPageSize()) { -// // 定义要逐步放宽的搜索条件字段 -// List relaxConditions = new ArrayList<>(); -// relaxConditions.add(() -> newSearch.setArea(null)); -// relaxConditions.add(() -> newSearch.setExperience(null)); -// relaxConditions.add(() -> newSearch.setMaxSalary(null)); -// relaxConditions.add(() -> newSearch.setMinSalary(null)); -// relaxConditions.add(() -> newSearch.setEducation(null)); -// relaxConditions.add(()-> newSearch.setJobTitle(null)); -// // 保存所有查询到的文档 -// List allDocuments = new ArrayList<>(esJobDocuments); -// -// // 记录已经放宽的条件数量 -// int relaxedConditions = 0; -// -// // 继续放宽条件直到满足分页或所有条件都已放宽 -// while (allDocuments.size() < esJobSearch.getPageSize() -// && relaxedConditions < relaxConditions.size()) { -// // 放宽下一个条件 -// relaxConditions.get(relaxedConditions).run(); -// relaxedConditions++; -// -// // 查询新增的文档(不包含之前已经查询到的) -// wrapper = getWrapper(newSearch, jobIds); -// wrapper.limit(esJobSearch.getPageSize() - allDocuments.size()); -// if (!allDocuments.isEmpty()) { -// // 排除已经查询到的文档ID -// Set existingIds = allDocuments.stream() -// .map(ESJobDocument::getId) -// .collect(Collectors.toSet()); -// wrapper.not().in(ESJobDocument::getId, existingIds); -// } -// -// List newDocuments = esJobDocumentMapper.selectList(wrapper); -// allDocuments.addAll(newDocuments); -// } -// -// // 如果总数超过分页大小,截取所需数量 -// if (allDocuments.size() > esJobSearch.getPageSize()) { -// esJobDocuments = allDocuments.subList(0, esJobSearch.getPageSize()); -// } else { -// esJobDocuments = allDocuments; -// } -// } + if (!isCompanyUser &&esJobDocuments.size() < esJobSearch.getPageSize()) { + // 定义要逐步放宽的搜索条件字段 + List relaxConditions = new ArrayList<>(); + relaxConditions.add(() -> newSearch.setArea(null)); + relaxConditions.add(() -> newSearch.setExperience(null)); + relaxConditions.add(() -> newSearch.setMaxSalary(null)); + relaxConditions.add(() -> newSearch.setMinSalary(null)); + relaxConditions.add(() -> newSearch.setEducation(null)); + relaxConditions.add(()-> newSearch.setJobTitle(null)); + // 保存所有查询到的文档 + List allDocuments = new ArrayList<>(esJobDocuments); + + // 记录已经放宽的条件数量 + int relaxedConditions = 0; + + // 继续放宽条件直到满足分页或所有条件都已放宽 + while (allDocuments.size() < esJobSearch.getPageSize() + && relaxedConditions < relaxConditions.size()) { + // 放宽下一个条件 + relaxConditions.get(relaxedConditions).run(); + relaxedConditions++; + + // 查询新增的文档(不包含之前已经查询到的) + wrapper = getWrapper(newSearch, jobIds); + wrapper.limit(esJobSearch.getPageSize() - allDocuments.size()); + if (!allDocuments.isEmpty()) { + // 排除已经查询到的文档ID + Set existingIds = allDocuments.stream() + .map(ESJobDocument::getId) + .collect(Collectors.toSet()); + wrapper.not().in(ESJobDocument::getId, existingIds); + } + + List newDocuments = esJobDocumentMapper.selectList(wrapper); + allDocuments.addAll(newDocuments); + } + + // 如果总数超过分页大小,截取所需数量 + if (allDocuments.size() > esJobSearch.getPageSize()) { + esJobDocuments = allDocuments.subList(0, esJobSearch.getPageSize()); + } else { + esJobDocuments = allDocuments; + } + } return esJobDocuments; } @@ -926,50 +926,50 @@ public class ESJobSearchImpl implements IESJobSearchService wrapper.limit(esJobSearch.getPageSize()); List esJobDocuments = esJobDocumentMapper.selectList(wrapper); -// if (esJobDocuments.size() < esJobSearch.getPageSize()) { -// // 定义要逐步放宽的搜索条件字段 -// List relaxConditions = new ArrayList<>(); -// relaxConditions.add(() -> newSearch.setArea(null)); -// relaxConditions.add(() -> newSearch.setExperience(null)); -// relaxConditions.add(() -> newSearch.setMaxSalary(null)); -// relaxConditions.add(() -> newSearch.setMinSalary(null)); -// relaxConditions.add(() -> newSearch.setEducation(null)); -// relaxConditions.add(()-> newSearch.setJobTitle(null)); -// // 保存所有查询到的文档 -// List allDocuments = new ArrayList<>(esJobDocuments); -// -// // 记录已经放宽的条件数量 -// int relaxedConditions = 0; -// -// // 继续放宽条件直到满足分页或所有条件都已放宽 -// while (allDocuments.size() < esJobSearch.getPageSize() -// && relaxedConditions < relaxConditions.size()) { -// // 放宽下一个条件 -// relaxConditions.get(relaxedConditions).run(); -// relaxedConditions++; -// -// // 查询新增的文档(不包含之前已经查询到的) -// wrapper = getWrapper(newSearch, jobIds); -// wrapper.limit(esJobSearch.getPageSize() - allDocuments.size()); -// if (!allDocuments.isEmpty()) { -// // 排除已经查询到的文档ID -// Set existingIds = allDocuments.stream() -// .map(ESJobDocument::getId) -// .collect(Collectors.toSet()); -// wrapper.not().in(ESJobDocument::getId, existingIds); -// } -// -// List newDocuments = esJobDocumentMapper.selectList(wrapper); -// allDocuments.addAll(newDocuments); -// } -// -// // 如果总数超过分页大小,截取所需数量 -// if (allDocuments.size() > esJobSearch.getPageSize()) { -// esJobDocuments = allDocuments.subList(0, esJobSearch.getPageSize()); -// } else { -// esJobDocuments = allDocuments; -// } -// } + if (esJobDocuments.size() < esJobSearch.getPageSize()) { + // 定义要逐步放宽的搜索条件字段 + List relaxConditions = new ArrayList<>(); + relaxConditions.add(() -> newSearch.setArea(null)); + relaxConditions.add(() -> newSearch.setExperience(null)); + relaxConditions.add(() -> newSearch.setMaxSalary(null)); + relaxConditions.add(() -> newSearch.setMinSalary(null)); + relaxConditions.add(() -> newSearch.setEducation(null)); + relaxConditions.add(()-> newSearch.setJobTitle(null)); + // 保存所有查询到的文档 + List allDocuments = new ArrayList<>(esJobDocuments); + + // 记录已经放宽的条件数量 + int relaxedConditions = 0; + + // 继续放宽条件直到满足分页或所有条件都已放宽 + while (allDocuments.size() < esJobSearch.getPageSize() + && relaxedConditions < relaxConditions.size()) { + // 放宽下一个条件 + relaxConditions.get(relaxedConditions).run(); + relaxedConditions++; + + // 查询新增的文档(不包含之前已经查询到的) + wrapper = getWrapper(newSearch, jobIds); + wrapper.limit(esJobSearch.getPageSize() - allDocuments.size()); + if (!allDocuments.isEmpty()) { + // 排除已经查询到的文档ID + Set existingIds = allDocuments.stream() + .map(ESJobDocument::getId) + .collect(Collectors.toSet()); + wrapper.not().in(ESJobDocument::getId, existingIds); + } + + List newDocuments = esJobDocumentMapper.selectList(wrapper); + allDocuments.addAll(newDocuments); + } + + // 如果总数超过分页大小,截取所需数量 + if (allDocuments.size() > esJobSearch.getPageSize()) { + esJobDocuments = allDocuments.subList(0, esJobSearch.getPageSize()); + } else { + esJobDocuments = allDocuments; + } + } return esJobDocuments; }