diff --git a/client-api/src/main/java/org/jiayunet/pojo/dto/job/JobDto.java b/client-api/src/main/java/org/jiayunet/pojo/dto/job/JobDto.java index 9046c0b..175a56e 100644 --- a/client-api/src/main/java/org/jiayunet/pojo/dto/job/JobDto.java +++ b/client-api/src/main/java/org/jiayunet/pojo/dto/job/JobDto.java @@ -48,6 +48,9 @@ public class JobDto { /** 是否收藏 */ private Boolean isFavorite; + /** 投递状态(null=未投递,0=已投递 1=面试中 2=有Offer 3=未通过 4=已结束) */ + private Integer applicationStatus; + /** 匹配总分(0-90) */ private Integer matchScore; 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 98d8a4e..d15aa9f 100644 --- a/client-api/src/main/java/org/jiayunet/service/JobService.java +++ b/client-api/src/main/java/org/jiayunet/service/JobService.java @@ -22,9 +22,9 @@ import java.util.stream.Collectors; /** * 岗位服务 - *

主要功能:岗位列表查询、岗位详情查询、岗位收藏管理、岗位不感兴趣管理、匹配度计算

+ *

主要功能:岗位列表查询、岗位详情查询、岗位收藏管理、岗位不感兴趣管理、岗位投递管理、匹配度计算

*

依赖服务:JobMatchService(匹配度计算)

- *

使用的表:bg_job、bg_company、bg_user_job_dislike、bg_user_job_favorite、bg_job_region、bg_china_regions_code、bg_job_category、bg_industry

+ *

使用的表:bg_job、bg_company、bg_user_job_dislike、bg_user_job_favorite、bg_user_job_application、bg_job_region、bg_china_regions_code、bg_job_category、bg_industry

* * @author zk */ @@ -56,6 +56,9 @@ public class JobService { @Autowired private JobRegionRelationMapper jobRegionRelationMapper; + @Autowired + private UserJobApplicationMapper userJobApplicationMapper; + @Autowired private JobMatchService jobMatchService; @@ -96,14 +99,18 @@ public class JobService { List jobIds = page.getRecords().stream().map(JobListItemVo::getId).collect(Collectors.toList()); Map favoriteMap = getFavoriteMap(userId, jobIds); - // 8. 批量计算匹配度 + // 8. 查询投递状态 + Map applicationMap = getApplicationStatusMap(userId, jobIds); + + // 9. 批量计算匹配度 Map> matchScoreMap = jobMatchService.batchCalculateMatchScore(page.getRecords(), userId); - // 9. 组装返回数据 + // 10. 组装返回数据 List dtoList = page.getRecords().stream().map(vo -> { JobDto dto = new JobDto(); BeanUtils.copyProperties(vo, dto); dto.setIsFavorite(favoriteMap.getOrDefault(vo.getId(), false)); + dto.setApplicationStatus(applicationMap.get(vo.getId())); Map scoreMap = matchScoreMap.get(vo.getId()); if (scoreMap != null) { JobMatchScoreDto matchScore = new JobMatchScoreDto(scoreMap.get("industryScore"), scoreMap.get("skillScore"), scoreMap.get("experienceScore")); @@ -167,6 +174,18 @@ public class JobService { return favorites.stream().collect(Collectors.toMap(UserJobFavorite::getJobId, f -> true)); } + /** + * 查询投递状态Map + *

批量查询用户对岗位的投递状态

+ */ + private Map getApplicationStatusMap(Long userId, List jobIds) { + if (jobIds == null || jobIds.isEmpty()) { + return Collections.emptyMap(); + } + List applications = userJobApplicationMapper.selectList(new LambdaQueryWrapper().eq(UserJobApplication::getUserId, userId).in(UserJobApplication::getJobId, jobIds)); + return applications.stream().collect(Collectors.toMap(UserJobApplication::getJobId, UserJobApplication::getStatus)); + } + /** * 查询岗位详情