From 5074297775200e0b4232fde5a9cf68fd40c057f3 Mon Sep 17 00:00:00 2001 From: zk Date: Wed, 5 Aug 2026 12:09:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=83=AD=E9=97=A8=E5=9F=8E?= =?UTF-8?q?=E5=B8=82=20=E8=A1=8C=E4=B8=9A=20=E5=9C=B0=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jiayunet/controller/JobController.java | 36 +++++++++++ .../java/org/jiayunet/service/JobService.java | 30 +++++++++ .../java/org/jiayunet/mapper/JobMapper.java | 21 +++++++ .../java/org/jiayunet/pojo/vo/HotCityVo.java | 18 ++++++ .../org/jiayunet/pojo/vo/HotIndustryVo.java | 18 ++++++ .../jiayunet/pojo/vo/HotJobCategoryVo.java | 18 ++++++ .../src/main/resources/mapper/JobMapper.xml | 61 +++++++++++++++++++ 7 files changed, 202 insertions(+) create mode 100644 manager/src/main/java/org/jiayunet/pojo/vo/HotCityVo.java create mode 100644 manager/src/main/java/org/jiayunet/pojo/vo/HotIndustryVo.java create mode 100644 manager/src/main/java/org/jiayunet/pojo/vo/HotJobCategoryVo.java diff --git a/client-api/src/main/java/org/jiayunet/controller/JobController.java b/client-api/src/main/java/org/jiayunet/controller/JobController.java index 83b33d7..9f1d08b 100644 --- a/client-api/src/main/java/org/jiayunet/controller/JobController.java +++ b/client-api/src/main/java/org/jiayunet/controller/JobController.java @@ -8,6 +8,9 @@ import org.jiayunet.pojo.dto.job.JobDetailDto; import org.jiayunet.pojo.dto.job.JobDto; import org.jiayunet.pojo.dto.job.JobAgentRecommendDto; import org.jiayunet.pojo.param.job.*; +import org.jiayunet.pojo.vo.HotCityVo; +import org.jiayunet.pojo.vo.HotIndustryVo; +import org.jiayunet.pojo.vo.HotJobCategoryVo; import org.jiayunet.pojo.vo.JobApplyCountVo; import java.util.List; import org.jiayunet.pojo.vo.JobFavoriteCountVo; @@ -64,6 +67,39 @@ public class JobController { return jobService.countJobs(param, userId); } + /** + * 岗位热门行业 + *

按上架岗位数量倒序返回二级行业,接口允许不登录访问

+ * + * @param limit 返回条数,默认10 + */ + @GetMapping("/industry/hot") + public List listHotIndustries(@RequestParam(required = false, defaultValue = "10") Integer limit) { + return jobService.listHotIndustries(limit); + } + + /** + * 热门岗位类型 + *

按上架岗位数量倒序返回二级岗位类型,接口允许不登录访问

+ * + * @param limit 返回条数,默认10 + */ + @GetMapping("/category/hot") + public List listHotJobCategories(@RequestParam(required = false, defaultValue = "10") Integer limit) { + return jobService.listHotJobCategories(limit); + } + + /** + * 热门城市 + *

按上架岗位数量倒序返回城市,接口允许不登录访问

+ * + * @param limit 返回条数,默认10 + */ + @GetMapping("/city/hot") + public List listHotCities(@RequestParam(required = false, defaultValue = "10") Integer limit) { + return jobService.listHotCities(limit); + } + /** * 岗位详情 *

返回岗位完整信息、公司信息、匹配度、收藏状态

diff --git a/client-api/src/main/java/org/jiayunet/service/JobService.java b/client-api/src/main/java/org/jiayunet/service/JobService.java index 0c275aa..12b80e1 100644 --- a/client-api/src/main/java/org/jiayunet/service/JobService.java +++ b/client-api/src/main/java/org/jiayunet/service/JobService.java @@ -22,6 +22,9 @@ import org.jiayunet.pojo.po.*; import org.jiayunet.tool.HttpTool; import org.jiayunet.exception.BusinessException; import org.jiayunet.exception.BusinessExpCodeEnum; +import org.jiayunet.pojo.vo.HotCityVo; +import org.jiayunet.pojo.vo.HotIndustryVo; +import org.jiayunet.pojo.vo.HotJobCategoryVo; import org.jiayunet.pojo.vo.JobApplyCountVo; import org.jiayunet.pojo.vo.JobFavoriteCountVo; import org.jiayunet.pojo.vo.JobListItemVo; @@ -204,6 +207,33 @@ public class JobService { return total == null ? 0L : total; } + /** + * 热门行业查询(二级行业) + *

岗位关联公司、公司关联行业(bg_industry level=2),按上架岗位数量倒序取前 limit 个

+ *

只返回行业ID和名称,岗位数量仅用于排序不对外暴露

+ */ + public List listHotIndustries(Integer limit) { + return jobMapper.selectHotIndustries(limit); + } + + /** + * 热门岗位类型查询(二级岗位类型) + *

bg_job.category_id 存三级叶子,SQL 内自关联上溯到二级后按二级分组,按上架岗位数量倒序取前 limit 个

+ *

只返回岗位类型ID和名称,岗位数量仅用于排序不对外暴露

+ */ + public List listHotJobCategories(Integer limit) { + return jobMapper.selectHotJobCategories(limit); + } + + /** + * 热门城市查询 + *

岗位关联公司、公司关联地区,按上架岗位数量倒序取前 limit 个

+ *

只返回地区编码和名称,岗位数量仅用于排序不对外暴露

+ */ + public List listHotCities(Integer limit) { + return jobMapper.selectHotCities(limit); + } + /** * 扩展地区编码(包含自身和所有子级) *

一次查询:code本身 + provinceCode匹配 + cityCode匹配

diff --git a/manager/src/main/java/org/jiayunet/mapper/JobMapper.java b/manager/src/main/java/org/jiayunet/mapper/JobMapper.java index b8cef8c..e376c90 100644 --- a/manager/src/main/java/org/jiayunet/mapper/JobMapper.java +++ b/manager/src/main/java/org/jiayunet/mapper/JobMapper.java @@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.jiayunet.pojo.po.Job; +import org.jiayunet.pojo.vo.HotCityVo; +import org.jiayunet.pojo.vo.HotIndustryVo; +import org.jiayunet.pojo.vo.HotJobCategoryVo; import org.jiayunet.pojo.vo.JobListItemVo; import java.time.Instant; @@ -27,4 +30,22 @@ public interface JobMapper extends CommonMapper { *

过滤条件与 selectJobPage 共用同一段 SQL(jobPageWhere),保证列表与总数口径一致

*/ Long countJobPage(@Param("jobIds") List jobIds, @Param("statusFilter") List statusFilter, @Param("keyword") String keyword, @Param("regionCodes") List regionCodes, @Param("categoryIds") List categoryIds, @Param("industryIds") List industryIds, @Param("employmentType") Integer employmentType, @Param("excludeJobIds") List excludeJobIds, @Param("excludeCompanyIds") List excludeCompanyIds, @Param("excludeRegionCodes") List excludeRegionCodes, @Param("excludeIndustryIds") List excludeIndustryIds, @Param("recruitCategory") Integer recruitCategory, @Param("companyTypes") List companyTypes, @Param("companyId") Long companyId, @Param("educations") List educations, @Param("publishStartTime") Instant publishStartTime, @Param("publishEndTime") Instant publishEndTime); + + /** + * 查询热门行业(二级行业) + *

岗位关联公司、公司关联行业,按上架岗位数量倒序取前 limit 个

+ */ + List selectHotIndustries(@Param("limit") Integer limit); + + /** + * 查询热门岗位类型(二级岗位类型) + *

岗位类型表自关联,从三级叶子上溯到二级后分组,按上架岗位数量倒序取前 limit 个

+ */ + List selectHotJobCategories(@Param("limit") Integer limit); + + /** + * 查询热门城市 + *

岗位关联公司、公司关联地区,按上架岗位数量倒序取前 limit 个

+ */ + List selectHotCities(@Param("limit") Integer limit); } diff --git a/manager/src/main/java/org/jiayunet/pojo/vo/HotCityVo.java b/manager/src/main/java/org/jiayunet/pojo/vo/HotCityVo.java new file mode 100644 index 0000000..a46e881 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/vo/HotCityVo.java @@ -0,0 +1,18 @@ +package org.jiayunet.pojo.vo; + +import lombok.Data; + +/** + * 热门城市VO + * + * @author zk + */ +@Data +public class HotCityVo { + + /** 地区编码 */ + private String code; + + /** 地区名称 */ + private String name; +} diff --git a/manager/src/main/java/org/jiayunet/pojo/vo/HotIndustryVo.java b/manager/src/main/java/org/jiayunet/pojo/vo/HotIndustryVo.java new file mode 100644 index 0000000..c9cc1ff --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/vo/HotIndustryVo.java @@ -0,0 +1,18 @@ +package org.jiayunet.pojo.vo; + +import lombok.Data; + +/** + * 热门行业VO(二级行业) + * + * @author zk + */ +@Data +public class HotIndustryVo { + + /** 行业ID */ + private Long id; + + /** 行业名称 */ + private String name; +} diff --git a/manager/src/main/java/org/jiayunet/pojo/vo/HotJobCategoryVo.java b/manager/src/main/java/org/jiayunet/pojo/vo/HotJobCategoryVo.java new file mode 100644 index 0000000..3df3563 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/vo/HotJobCategoryVo.java @@ -0,0 +1,18 @@ +package org.jiayunet.pojo.vo; + +import lombok.Data; + +/** + * 热门岗位类型VO(二级岗位类型) + * + * @author zk + */ +@Data +public class HotJobCategoryVo { + + /** 岗位类型ID */ + private Long id; + + /** 岗位类型名称 */ + private String name; +} diff --git a/manager/src/main/resources/mapper/JobMapper.xml b/manager/src/main/resources/mapper/JobMapper.xml index a08e9db..7105234 100644 --- a/manager/src/main/resources/mapper/JobMapper.xml +++ b/manager/src/main/resources/mapper/JobMapper.xml @@ -188,4 +188,65 @@ + + + + + + + + +