添加状态统计接口
This commit is contained in:
@@ -9,6 +9,8 @@ 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.JobQueryParam;
|
||||
import org.jiayunet.pojo.vo.JobApplyCountVo;
|
||||
import org.jiayunet.pojo.vo.JobFavoriteCountVo;
|
||||
import org.jiayunet.service.JobService;
|
||||
import org.jiayunet.tool.UserSecurityTool;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -99,4 +101,22 @@ public class JobController {
|
||||
Long userId = UserSecurityTool.getUserId();
|
||||
jobService.applyJob(param.getJobId(), param.getStatus(), userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 收藏统计
|
||||
*/
|
||||
@GetMapping("/favorite/count")
|
||||
public JobFavoriteCountVo getFavoriteCount() {
|
||||
Long userId = UserSecurityTool.getUserId();
|
||||
return jobService.getFavoriteCount(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 投递统计
|
||||
*/
|
||||
@GetMapping("/apply/count")
|
||||
public JobApplyCountVo getApplyCount() {
|
||||
Long userId = UserSecurityTool.getUserId();
|
||||
return jobService.getApplyCount(userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package org.jiayunet.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 投递统计结果
|
||||
*
|
||||
* @author zk
|
||||
*/
|
||||
@Data
|
||||
public class JobApplyCountVo {
|
||||
|
||||
/** 投递总数 */
|
||||
private Long totalCount;
|
||||
|
||||
/** 已投递数(status=0) */
|
||||
private Long appliedCount;
|
||||
|
||||
/** 面试中数(status=1) */
|
||||
private Long interviewingCount;
|
||||
|
||||
/** 有Offer数(status=2) */
|
||||
private Long offerCount;
|
||||
|
||||
/** 未通过数(status=3) */
|
||||
private Long rejectedCount;
|
||||
|
||||
/** 已结束数(status=4) */
|
||||
private Long closedCount;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package org.jiayunet.pojo.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 收藏统计结果
|
||||
*
|
||||
* @author zk
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class JobFavoriteCountVo {
|
||||
|
||||
/** 收藏总数 */
|
||||
private Long totalCount;
|
||||
|
||||
/** 有效收藏数(岗位status=0) */
|
||||
private Long validCount;
|
||||
|
||||
/** 失效收藏数(岗位status!=0或已删除) */
|
||||
private Long invalidCount;
|
||||
}
|
||||
@@ -12,6 +12,8 @@ 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.JobApplyCountVo;
|
||||
import org.jiayunet.pojo.vo.JobFavoriteCountVo;
|
||||
import org.jiayunet.pojo.vo.JobListItemVo;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -461,4 +463,51 @@ public class JobService {
|
||||
userJobApplicationMapper.insert(application);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 收藏统计
|
||||
* <p>方法逻辑流程:</p>
|
||||
* <p>1. 查询收藏总数</p>
|
||||
* <p>2. 查询有效收藏数(JOIN岗位表,status=0)</p>
|
||||
* <p>3. 计算失效收藏数</p>
|
||||
*/
|
||||
public JobFavoriteCountVo getFavoriteCount(Long userId) {
|
||||
// 1. 查询收藏总数
|
||||
Long totalCount = userJobFavoriteMapper.selectCount(new LambdaQueryWrapper<UserJobFavorite>().eq(UserJobFavorite::getUserId, userId));
|
||||
|
||||
// 2. 查询有效收藏数(岗位status=0)
|
||||
List<UserJobFavorite> favorites = userJobFavoriteMapper.selectList(new LambdaQueryWrapper<UserJobFavorite>().eq(UserJobFavorite::getUserId, userId));
|
||||
List<Long> jobIds = favorites.stream().map(UserJobFavorite::getJobId).collect(Collectors.toList());
|
||||
Long validCount = 0L;
|
||||
if (!jobIds.isEmpty()) {
|
||||
validCount = jobMapper.selectCount(new LambdaQueryWrapper<Job>().in(Job::getId, jobIds).eq(Job::getStatus, 0));
|
||||
}
|
||||
|
||||
// 3. 计算失效收藏数
|
||||
Long invalidCount = totalCount - validCount;
|
||||
|
||||
return new JobFavoriteCountVo(totalCount, validCount, invalidCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* 投递统计
|
||||
* <p>方法逻辑流程:</p>
|
||||
* <p>1. 查询所有投递记录</p>
|
||||
* <p>2. 按状态分组统计</p>
|
||||
*/
|
||||
public JobApplyCountVo getApplyCount(Long userId) {
|
||||
// 1. 查询所有投递记录
|
||||
List<UserJobApplication> applications = userJobApplicationMapper.selectList(new LambdaQueryWrapper<UserJobApplication>().eq(UserJobApplication::getUserId, userId));
|
||||
|
||||
// 2. 按状态分组统计
|
||||
JobApplyCountVo vo = new JobApplyCountVo();
|
||||
vo.setTotalCount((long) applications.size());
|
||||
vo.setAppliedCount(applications.stream().filter(a -> a.getStatus() == 0).count());
|
||||
vo.setInterviewingCount(applications.stream().filter(a -> a.getStatus() == 1).count());
|
||||
vo.setOfferCount(applications.stream().filter(a -> a.getStatus() == 2).count());
|
||||
vo.setRejectedCount(applications.stream().filter(a -> a.getStatus() == 3).count());
|
||||
vo.setClosedCount(applications.stream().filter(a -> a.getStatus() == 4).count());
|
||||
|
||||
return vo;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user