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 7a8b528..52c7700 100644 --- a/client-api/src/main/java/org/jiayunet/controller/JobController.java +++ b/client-api/src/main/java/org/jiayunet/controller/JobController.java @@ -5,6 +5,7 @@ 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.JobApplyQueryParam; import org.jiayunet.pojo.param.job.JobDislikeParam; import org.jiayunet.pojo.param.job.JobQueryParam; import org.jiayunet.service.JobService; @@ -79,4 +80,13 @@ public class JobController { Long userId = UserSecurityTool.getUserId(); return jobService.listFavoriteJobs(param, userId); } + + /** + * 投递列表 + */ + @PostMapping("/apply/list") + public PageResult listApplications(@Validated @RequestBody JobApplyQueryParam param) { + Long userId = UserSecurityTool.getUserId(); + return jobService.listApplications(param, userId); + } } diff --git a/client-api/src/main/java/org/jiayunet/pojo/param/job/JobApplyQueryParam.java b/client-api/src/main/java/org/jiayunet/pojo/param/job/JobApplyQueryParam.java new file mode 100644 index 0000000..43d6566 --- /dev/null +++ b/client-api/src/main/java/org/jiayunet/pojo/param/job/JobApplyQueryParam.java @@ -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 JobApplyQueryParam extends PageParam { + + /** 投递状态(可选筛选,0=已投递 1=面试中 2=有Offer 3=未通过 4=已结束) */ + private Integer status; +} 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 d15aa9f..45bb2f0 100644 --- a/client-api/src/main/java/org/jiayunet/service/JobService.java +++ b/client-api/src/main/java/org/jiayunet/service/JobService.java @@ -9,6 +9,7 @@ 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.JobQueryParam; import org.jiayunet.pojo.po.*; import org.jiayunet.pojo.vo.JobListItemVo; @@ -380,7 +381,7 @@ public class JobService { */ public PageResult listFavoriteJobs(PageParam param, Long userId) { // 1. 分页查询收藏记录 - Page favPage = new Page<>(param.getPageNum(), param.getPageNum()); + Page favPage = new Page<>(param.getPageNum(), param.getPageSize()); Page favorites = userJobFavoriteMapper.selectPage(favPage, new LambdaQueryWrapper().eq(UserJobFavorite::getUserId, userId).orderByDesc(UserJobFavorite::getCreateTime)); // 2. 提取 jobId 列表 @@ -397,4 +398,35 @@ public class JobService { return listJobs(queryParam, userId); } + + /** + * 投递列表查询 + *

方法逻辑流程:

+ *

1. 分页查询投递记录(可选 status 筛选,按 applyTime 倒序)

+ *

2. 提取岗位ID列表

+ *

3. 复用岗位列表查询逻辑

+ */ + public PageResult listApplications(JobApplyQueryParam param, Long userId) { + // 1. 分页查询投递记录 + Page appPage = new Page<>(param.getPageNum(), param.getPageSize()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper().eq(UserJobApplication::getUserId, userId); + if (param.getStatus() != null) { + wrapper.eq(UserJobApplication::getStatus, param.getStatus()); + } + Page applications = userJobApplicationMapper.selectPage(appPage, wrapper.orderByDesc(UserJobApplication::getApplyTime)); + + // 2. 提取 jobId 列表 + List jobIds = applications.getRecords().stream().map(UserJobApplication::getJobId).collect(Collectors.toList()); + if (jobIds.isEmpty()) { + return new PageResult<>(param.getPageNum().longValue(), param.getPageSize().longValue(), 0L, Collections.emptyList()); + } + + // 3. 构造查询参数,复用岗位列表逻辑 + JobQueryParam queryParam = new JobQueryParam(); + queryParam.setPageNum(param.getPageNum()); + queryParam.setPageSize(param.getPageSize()); + queryParam.setJobIds(jobIds); + + return listJobs(queryParam, userId); + } }