添加状态统计接口
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.JobApplyQueryParam;
|
||||||
import org.jiayunet.pojo.param.job.JobDislikeParam;
|
import org.jiayunet.pojo.param.job.JobDislikeParam;
|
||||||
import org.jiayunet.pojo.param.job.JobQueryParam;
|
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.service.JobService;
|
||||||
import org.jiayunet.tool.UserSecurityTool;
|
import org.jiayunet.tool.UserSecurityTool;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@@ -99,4 +101,22 @@ public class JobController {
|
|||||||
Long userId = UserSecurityTool.getUserId();
|
Long userId = UserSecurityTool.getUserId();
|
||||||
jobService.applyJob(param.getJobId(), param.getStatus(), userId);
|
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.JobApplyQueryParam;
|
||||||
import org.jiayunet.pojo.param.job.JobQueryParam;
|
import org.jiayunet.pojo.param.job.JobQueryParam;
|
||||||
import org.jiayunet.pojo.po.*;
|
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.jiayunet.pojo.vo.JobListItemVo;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -461,4 +463,51 @@ public class JobService {
|
|||||||
userJobApplicationMapper.insert(application);
|
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