添加各种列表查询接口
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
package org.jiayunet.controller;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.jiayunet.pojo.PageParam;
|
||||
import org.jiayunet.pojo.PageResult;
|
||||
import org.jiayunet.pojo.dto.job.JobDetailDto;
|
||||
import org.jiayunet.pojo.dto.job.JobDto;
|
||||
import org.jiayunet.pojo.param.job.JobApplyParam;
|
||||
import org.jiayunet.pojo.param.job.JobApplyQueryParam;
|
||||
import org.jiayunet.pojo.param.job.JobDislikeParam;
|
||||
import org.jiayunet.pojo.param.job.JobFavoriteQueryParam;
|
||||
import org.jiayunet.pojo.param.job.JobQueryParam;
|
||||
import org.jiayunet.pojo.vo.JobApplyCountVo;
|
||||
import org.jiayunet.pojo.vo.JobFavoriteCountVo;
|
||||
@@ -79,7 +79,7 @@ public class JobController {
|
||||
* 收藏列表
|
||||
*/
|
||||
@PostMapping("/favorite/list")
|
||||
public PageResult<JobDto> listFavoriteJobs(@Validated @RequestBody PageParam param) {
|
||||
public PageResult<JobDto> listFavoriteJobs(@Validated @RequestBody JobFavoriteQueryParam param) {
|
||||
Long userId = UserSecurityTool.getUserId();
|
||||
return jobService.listFavoriteJobs(param, userId);
|
||||
}
|
||||
|
||||
@@ -51,6 +51,9 @@ public class JobDto {
|
||||
/** 投递状态(null=未投递,0=已投递 1=面试中 2=有Offer 3=未通过 4=已结束) */
|
||||
private Integer applicationStatus;
|
||||
|
||||
/** 岗位状态(0=有效 1=已下架 2=已过期) */
|
||||
private Integer status;
|
||||
|
||||
/** 匹配总分(0-90) */
|
||||
private Integer matchScore;
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package org.jiayunet.pojo.param.job;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.jiayunet.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* 收藏列表查询参数
|
||||
*
|
||||
* @author zk
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class JobFavoriteQueryParam extends PageParam {
|
||||
|
||||
/** 是否只查询有效收藏(true=只查有效岗位,false=只查失效岗位,null=查所有) */
|
||||
private Boolean valid;
|
||||
}
|
||||
@@ -29,4 +29,7 @@ public class JobQueryParam extends PageParam {
|
||||
|
||||
/** 指定岗位ID列表(用于收藏列表) */
|
||||
private List<Long> jobIds;
|
||||
|
||||
/** 岗位状态过滤(0=有效 1=已下架 2=已过期,可多选,null或空=查所有) */
|
||||
private List<Integer> statusFilter;
|
||||
}
|
||||
|
||||
@@ -4,12 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jiayunet.mapper.*;
|
||||
import org.jiayunet.pojo.PageParam;
|
||||
import org.jiayunet.pojo.PageResult;
|
||||
import org.jiayunet.pojo.dto.job.JobDetailDto;
|
||||
import org.jiayunet.pojo.dto.job.JobDto;
|
||||
import org.jiayunet.pojo.dto.job.JobMatchScoreDto;
|
||||
import org.jiayunet.pojo.param.job.JobApplyQueryParam;
|
||||
import org.jiayunet.pojo.param.job.JobFavoriteQueryParam;
|
||||
import org.jiayunet.pojo.param.job.JobQueryParam;
|
||||
import org.jiayunet.pojo.po.*;
|
||||
import org.jiayunet.pojo.vo.JobApplyCountVo;
|
||||
@@ -77,6 +77,11 @@ public class JobService {
|
||||
* <p>7. 组装返回数据</p>
|
||||
*/
|
||||
public PageResult<JobDto> listJobs(JobQueryParam param, Long userId) {
|
||||
// 默认只查有效岗位
|
||||
if (param.getStatusFilter() == null) {
|
||||
param.setStatusFilter(Collections.singletonList(0));
|
||||
}
|
||||
|
||||
// 1. 扩展筛选条件的子级
|
||||
List<String> expandedRegionCodes = expandRegionCodes(param.getRegionCodes());
|
||||
List<Long> expandedCategoryIds = expandCategoryIds(param.getCategoryIds());
|
||||
@@ -114,6 +119,7 @@ public class JobService {
|
||||
BeanUtils.copyProperties(vo, dto);
|
||||
dto.setIsFavorite(favoriteMap.getOrDefault(vo.getId(), false));
|
||||
dto.setApplicationStatus(applicationMap.get(vo.getId()));
|
||||
dto.setStatus(vo.getStatus());
|
||||
Map<String, Integer> scoreMap = matchScoreMap.get(vo.getId());
|
||||
if (scoreMap != null) {
|
||||
JobMatchScoreDto matchScore = new JobMatchScoreDto(scoreMap.get("industryScore"), scoreMap.get("skillScore"), scoreMap.get("experienceScore"));
|
||||
@@ -379,9 +385,9 @@ public class JobService {
|
||||
* <p>方法逻辑流程:</p>
|
||||
* <p>1. 分页查询收藏记录(按创建时间倒序)</p>
|
||||
* <p>2. 提取岗位ID列表</p>
|
||||
* <p>3. 复用岗位列表查询逻辑</p>
|
||||
* <p>3. 复用岗位列表查询逻辑(SQL层面根据valid参数过滤)</p>
|
||||
*/
|
||||
public PageResult<JobDto> listFavoriteJobs(PageParam param, Long userId) {
|
||||
public PageResult<JobDto> listFavoriteJobs(JobFavoriteQueryParam param, Long userId) {
|
||||
// 1. 分页查询收藏记录
|
||||
Page<UserJobFavorite> favPage = new Page<>(param.getPageNum(), param.getPageSize());
|
||||
Page<UserJobFavorite> favorites = userJobFavoriteMapper.selectPage(favPage, new LambdaQueryWrapper<UserJobFavorite>().eq(UserJobFavorite::getUserId, userId).orderByDesc(UserJobFavorite::getCreateTime));
|
||||
@@ -392,11 +398,17 @@ public class JobService {
|
||||
return new PageResult<>(param.getPageNum().longValue(), param.getPageSize().longValue(), 0L, Collections.emptyList());
|
||||
}
|
||||
|
||||
// 3. 构造查询参数,复用岗位列表逻辑
|
||||
// 3. 构造查询参数,复用岗位列表逻辑(SQL层面过滤状态)
|
||||
JobQueryParam queryParam = new JobQueryParam();
|
||||
queryParam.setPageNum(param.getPageNum());
|
||||
queryParam.setPageSize(param.getPageSize());
|
||||
queryParam.setJobIds(jobIds);
|
||||
// valid参数转换:true→[0](有效) false→[1,2](已下架+已过期) null→[0,1,2](所有)
|
||||
if (param.getValid() != null) {
|
||||
queryParam.setStatusFilter(param.getValid() ? Collections.singletonList(0) : Arrays.asList(1, 2));
|
||||
} else {
|
||||
queryParam.setStatusFilter(Arrays.asList(0,1, 2));
|
||||
}
|
||||
|
||||
return listJobs(queryParam, userId);
|
||||
}
|
||||
@@ -423,11 +435,12 @@ public class JobService {
|
||||
return new PageResult<>(param.getPageNum().longValue(), param.getPageSize().longValue(), 0L, Collections.emptyList());
|
||||
}
|
||||
|
||||
// 3. 构造查询参数,复用岗位列表逻辑
|
||||
// 3. 构造查询参数,复用岗位列表逻辑(查所有状态)
|
||||
JobQueryParam queryParam = new JobQueryParam();
|
||||
queryParam.setPageNum(param.getPageNum());
|
||||
queryParam.setPageSize(param.getPageSize());
|
||||
queryParam.setJobIds(jobIds);
|
||||
queryParam.setStatusFilter(Arrays.asList(0,1, 2));
|
||||
|
||||
return listJobs(queryParam, userId);
|
||||
}
|
||||
|
||||
@@ -62,4 +62,7 @@ public class JobListItemVo {
|
||||
|
||||
/** 最低工作年限 */
|
||||
private Integer minExperience;
|
||||
|
||||
/** 岗位状态(0=有效 1=已下架 2=已过期) */
|
||||
private Integer status;
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
j.source_url,
|
||||
j.required_industry_id,
|
||||
j.min_experience,
|
||||
j.status,
|
||||
c.id AS company_id,
|
||||
c.name AS company_name,
|
||||
c.short_name AS company_short_name,
|
||||
@@ -24,8 +25,14 @@
|
||||
INNER JOIN bg_company c ON j.company_id = c.id
|
||||
INNER JOIN bg_china_regions_code r ON c.region_code = r.code
|
||||
INNER JOIN bg_job_category cat ON j.category_id = cat.id
|
||||
WHERE j.status = 0
|
||||
AND c.status = 1
|
||||
WHERE c.status = 1
|
||||
<!-- 岗位状态过滤 -->
|
||||
<if test="statusFilter != null and statusFilter.size() > 0">
|
||||
AND j.status IN
|
||||
<foreach collection="statusFilter" item="status" open="(" separator="," close=")">
|
||||
#{status}
|
||||
</foreach>
|
||||
</if>
|
||||
<!-- 指定岗位ID列表(用于收藏列表) -->
|
||||
<if test="jobIds != null and jobIds.size() > 0">
|
||||
AND j.id IN
|
||||
|
||||
Reference in New Issue
Block a user