Forráskód Böngészése

1、解决已知bug
2、规范控制器地址

rayson 11 hónapja
szülő
commit
1a276dc936
13 módosított fájl, 196 hozzáadás és 54 törlés
  1. 10 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/interview/AppInterviewInviteController.java
  2. 18 15
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/AppJobCvRelController.java
  3. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/hire/AppHireJobCvRelQueryReqVO.java
  4. 52 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/interview/InterviewInviteMapper.java
  5. 16 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/invite/EnterpriseInviteRecordMapper.java
  6. 14 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java
  7. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/scheduled/InterviewInviteScheduled.java
  8. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteService.java
  9. 19 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteServiceImpl.java
  10. 1 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelService.java
  11. 0 19
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelServiceImpl.java
  12. 10 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationService.java
  13. 34 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java

+ 10 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/interview/AppInterviewInviteController.java

@@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 
+import java.util.List;
+
 import static com.citu.framework.common.pojo.CommonResult.success;
 
 @Tag(name = "求职端 - 面试邀请")
@@ -43,6 +45,14 @@ public class AppInterviewInviteController {
         return success(service.page(reqVO));
     }
 
+    @PreAuthenticated
+    @GetMapping("/get/list/by/{inviteUserId}")
+    @Operation(summary = "根据邀请人id获取面试邀约列表")
+    public CommonResult<List<AppInterviewInviteRespVO>> getListByInviteUserId
+            (@PathVariable("inviteUserId")  Long inviteUserId) {
+        return success(service.getListByInviteUserId(inviteUserId));
+    }
+
     @PreAuthenticated
     @PostMapping("/reject")
     @Operation(summary = "拒绝邀约面试")

+ 18 - 15
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/AppJobCvRelController.java

@@ -37,6 +37,21 @@ public class AppJobCvRelController {
     @Resource
     private JobCvRelService jobCvRelService;
 
+
+    @GetMapping("/page")
+    @PreAuthenticated
+    @Operation(summary = "获取投递的职位分页")
+    public CommonResult<PageResult<AppJobAdvertisedRespVO>> getJobCvPage(@Valid PageParam page) {
+        return success(jobIntegrationService.getJobCvPage(page));
+    }
+
+    @GetMapping("/look/page")
+    @PreAuthenticated
+    @Operation(summary = "看过我的企业用户")
+    public CommonResult<PageResult<AppJobCvLookRespVO>> getJobCvLook(@Valid PageParam page) {
+        return success(jobIntegrationService.getJobCvLook(page));
+    }
+
     @PostMapping("/send")
     @PreAuthenticated
     @Operation(summary = "投递简历")
@@ -52,7 +67,7 @@ public class AppJobCvRelController {
     }
 
     @PreAuthenticated
-    @GetMapping("/page")
+    @GetMapping("/hire/page")
     @Operation(summary = "众聘分享-获取邀请投递的职位信息")
     public CommonResult<PageResult<AppHireJobCvRelRespVO>> page
             (@Valid AppHireJobCvRelQueryReqVO pageReqVO) {
@@ -60,10 +75,10 @@ public class AppJobCvRelController {
     }
 
     @PreAuthenticated
-    @GetMapping("/get/commend/count")
+    @GetMapping("/hire/get/recommend/count")
     @Operation(summary = "众聘分享-获取推荐职位投递状态数量")
     public CommonResult<List<CommonRespVO>> getRecommendCount() {
-        return success(jobCvRelService.getRecommendCount());
+        return success(jobIntegrationService.getRecommendCount());
     }
 
     @GetMapping("/send/check")
@@ -73,19 +88,7 @@ public class AppJobCvRelController {
         return success(jobCvRelService.checkSend(jobId));
     }
 
-    @GetMapping("/get/job/cv/page")
-    @PreAuthenticated
-    @Operation(summary = "获取投递的职位分页")
-    public CommonResult<PageResult<AppJobAdvertisedRespVO>> getJobCvPage(@Valid PageParam page) {
-        return success(jobIntegrationService.getJobCvPage(page));
-    }
 
-    @GetMapping("/get/job/cv/look/page")
-    @PreAuthenticated
-    @Operation(summary = "看过我的企业用户")
-    public CommonResult<PageResult<AppJobCvLookRespVO>> getJobCvLook(@Valid PageParam page) {
-        return success(jobIntegrationService.getJobCvLook(page));
-    }
 
 
 }

+ 3 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/hire/AppHireJobCvRelQueryReqVO.java

@@ -8,8 +8,10 @@ import lombok.Data;
 @Data
 public class AppHireJobCvRelQueryReqVO extends PageParam {
 
-    @Schema(description = "投递的简历状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @Schema(description = "状态 0 已报名| 1 已入职| 2已结算", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private String status;
 
 
+
+
 }

+ 52 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/interview/InterviewInviteMapper.java

@@ -14,8 +14,10 @@ import com.citu.module.menduner.system.controller.base.interview.InterviewInvite
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import com.citu.module.menduner.system.dal.dataobject.unfit.UnfitCandidateDO;
+import com.citu.module.menduner.system.enums.cv.ConversationStatusEnum;
 import com.citu.module.menduner.system.enums.interview.InterviewInviteStatusEnum;
 import com.citu.module.menduner.system.enums.unfit.UnfitTypeEnum;
 import org.apache.ibatis.annotations.Mapper;
@@ -45,6 +47,33 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
                 .orderByDesc(InterviewInviteDO::getId));
     }
 
+    /**
+     * 求职端 获取面试邀约列表
+     *
+     * @param inviteUserId 邀请用户id
+     * @param userId       受邀用户id
+     **/
+    default List<AppInterviewInviteRespVO> getListByInviteUserId(Long inviteUserId, Long userId) {
+        MPJLambdaWrapperX<InterviewInviteDO> query = new MPJLambdaWrapperX<>();
+        query.selectAll(InterviewInviteDO.class);
+        query.selectAssociation(JobAdvertisedDO.class, AppInterviewInviteRespVO::getJob);
+        query.selectAssociation(EnterpriseDO.class, AppInterviewInviteRespVO::getEnterprise);
+
+        query.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, InterviewInviteDO::getJobId);
+        query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId);
+
+        query.eq(InterviewInviteDO::getUserId, userId);
+        query.eq(InterviewInviteDO::getInviteUserId, inviteUserId);
+
+        query.orderByDesc(InterviewInviteDO::getUpdateTime);
+
+        return selectJoinList(AppInterviewInviteRespVO.class, query);
+    }
+
+
+    /**
+     * 求职端 面试邀约列表分页
+     **/
     default PageResult<AppInterviewInviteRespVO> page(AppInterviewInvitePageReqVO reqVO, Long userId) {
         MPJLambdaWrapperX<InterviewInviteDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(InterviewInviteDO.class);
@@ -68,6 +97,9 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
         return selectJoinPage(reqVO, AppInterviewInviteRespVO.class, query);
     }
 
+    /**
+     * 招聘端 面试邀约列表分页
+     **/
     default PageResult<AppAdminInterviewInviteRespVO> page(AppAdminInterviewInviteReqPageVO reqVO,
                                                            Long enterpriseId, Long userId) {
         MPJLambdaWrapperX<InterviewInviteDO> query = new MPJLambdaWrapperX<>();
@@ -129,6 +161,9 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
     }
 
 
+    /**
+     * 获取3个小时内的面试邀约列表
+     **/
     default List<InterviewInviteDO> getApproachingInterviewList() {
         // 获取当前时间
         LocalDateTime now = LocalDateTime.now();
@@ -145,4 +180,21 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
         return selectJoinList(InterviewInviteDO.class, query);
     }
 
+    default List<CommonRespVO> getRecommendCount(List<Long> jobIdList) {
+        MPJLambdaWrapperX<InterviewInviteDO> wrapper = new MPJLambdaWrapperX<>();
+        wrapper.
+                selectAs(InterviewInviteDO::getConversationStatus, "`key`")
+                .selectCount(InterviewInviteDO::getId, CommonRespVO::getValue)
+                .innerJoin(JobCvRelDO.class, JobCvRelDO::getJobId, InterviewInviteDO::getJobId)
+                .eq(JobCvRelDO::getType, "1")
+                .in(JobCvRelDO::getJobId, jobIdList)
+                .in(InterviewInviteDO::getConversationStatus,
+                        ConversationStatusEnum.ENTRY.getStatus(), ConversationStatusEnum.SETTLEMENT.getStatus())
+                .groupBy(InterviewInviteDO::getConversationStatus);
+
+        wrapper.orderByDesc("`key`");
+        return selectJoinList(CommonRespVO.class, wrapper);
+    }
+
+
 }

+ 16 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/invite/EnterpriseInviteRecordMapper.java

@@ -44,15 +44,25 @@ public interface EnterpriseInviteRecordMapper extends BaseMapperX<EnterpriseInvi
             Long userId) {
         MPJLambdaWrapperX<EnterpriseInviteRecordDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAll(EnterpriseInviteRecordDO.class);
-        wrapper.selectAssociation(EnterpriseUserBindDO.class, AppAdminEnterpriseInviteRecordRespVO::getEnterpriseUser);
 
-        wrapper.selectAs(EnterpriseDO::getName, AppAdminEnterpriseUserRespVO::getEnterpriseName);
-        wrapper.selectAs(EnterpriseDO::getAnotherName, AppAdminEnterpriseUserRespVO::getEnterpriseAnotherName);
-        wrapper.selectAs(EnterpriseDO::getLogoUrl, AppAdminEnterpriseUserRespVO::getLogoUrl);
+        wrapper.selectAssociation(AppAdminEnterpriseInviteRecordRespVO::getEnterpriseUser,
+                on -> on
+                        .result(EnterpriseUserBindDO::getId,AppAdminEnterpriseUserRespVO::getId)
+                        .result(EnterpriseUserBindDO::getEnterpriseId, AppAdminEnterpriseUserRespVO::getEnterpriseId)
+                        .result(EnterpriseUserBindDO::getName, AppAdminEnterpriseUserRespVO::getName)
+                        .result(EnterpriseUserBindDO::getSex, AppAdminEnterpriseUserRespVO::getSex)
+                        .result(EnterpriseUserBindDO::getAvatar, AppAdminEnterpriseUserRespVO::getAvatar)
+                        .result(EnterpriseUserBindDO::getStatus, AppAdminEnterpriseUserRespVO::getStatus)
+                        .result(EnterpriseUserBindDO::getLoginDate, AppAdminEnterpriseUserRespVO::getLoginDate)
+
+                        .result(EnterpriseDO::getName, AppAdminEnterpriseUserRespVO::getEnterpriseName)
+                        .result(EnterpriseDO::getAnotherName, AppAdminEnterpriseUserRespVO::getEnterpriseAnotherName)
+                        .result(EnterpriseDO::getLogoUrl, AppAdminEnterpriseUserRespVO::getLogoUrl)
+        );
 
         wrapper.innerJoin(EnterpriseUserBindDO.class, on ->
-                on.eq(EnterpriseUserBindDO::getEnterpriseId, EnterpriseInviteRecordDO::getInviteEnterpriseId)
-                        .eq(EnterpriseUserBindDO::getUserId, EnterpriseInviteRecordDO::getInviteUserId)
+                on.eq(EnterpriseUserBindDO::getEnterpriseId, EnterpriseInviteRecordDO::getEnterpriseId)
+                        .eq(EnterpriseUserBindDO::getUserId, EnterpriseInviteRecordDO::getUserId)
         );
 
 

+ 14 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java

@@ -1,6 +1,5 @@
 package com.citu.module.menduner.system.dal.mysql.job;
 
-import cn.hutool.core.collection.CollUtil;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
@@ -15,20 +14,19 @@ import com.citu.module.menduner.system.controller.appadmin.person.hire.AppAdminH
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobCvRelPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
+import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import com.citu.module.menduner.system.dal.dataobject.unfit.UnfitCandidateDO;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import com.citu.module.menduner.system.enums.cv.ConversationStatusEnum;
 import com.citu.module.menduner.system.enums.cv.JobCvRelStatusEnum;
 import com.citu.module.menduner.system.enums.unfit.UnfitTypeEnum;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * 招聘职位简历投递 Mapper
@@ -117,6 +115,9 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
         return selectJoinPage(reqVO, AppAdminHireJobCvRelRespVO.class, wrapper);
     }
 
+    /**
+     * 求职端- 我的推荐列表分页
+     **/
     default PageResult<AppHireJobCvRelRespVO> page(AppHireJobCvRelQueryReqVO reqVO, Long userId) {
         // 职位投递userId inner 招聘职位userId and 职位投递userId inner 人才信息userId
         MPJLambdaWrapperX<JobCvRelDO> wrapper = new MPJLambdaWrapperX<>();
@@ -132,7 +133,15 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
         wrapper.innerJoin(PersonInfoDO.class, PersonInfoDO::getUserId, JobCvRelDO::getUserId);
 
         wrapper.eq(JobCvRelDO::getRecommendUserId, userId);
-        wrapper.eq(JobCvRelDO::getStatus, reqVO.getStatus());
+
+        // TODO 此处有坑
+        //        if (Integer.parseInt(reqVO.getStatus()) > 0) {
+        //            wrapper.selectAll(InterviewInviteDO.class);
+        //            wrapper.innerJoin(InterviewInviteDO.class,on->on
+        //                    .eq(InterviewInviteDO::getJobId, JobAdvertisedDO::getId));
+        //            wrapper.eq(InterviewInviteDO::getConversationStatus,
+        //                    reqVO.getStatus());
+        //        }
 
         setUnfitCandidate(wrapper);
 
@@ -218,7 +227,6 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
     }
 
 
-
     /**
      * 投递简历的年龄分布
      **/

+ 3 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/scheduled/InterviewInviteScheduled.java

@@ -18,6 +18,7 @@ import java.util.List;
 /**
  * @author rayson
  * 面试定时任务
+ * TODO 后面在丢队列,先暂时这么干
  * @create 2024/7/24 下午2:28
  **/
 @Slf4j
@@ -34,7 +35,8 @@ public class InterviewInviteScheduled {
      **/
     @Async
     @TenantIgnore
-    @Scheduled(cron = "0 */3 * * * ?")
+//    @Scheduled(cron = "0 */3 * * * ?")
+    @Scheduled(cron = "*/5 * * * * *")
     public void approachingInterview() {
         List<InterviewInviteDO> list = mapper.getApproachingInterviewList();
 

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteService.java

@@ -82,6 +82,22 @@ public interface InterviewInviteService {
      */
     PageResult<AppInterviewInviteRespVO> page(AppInterviewInvitePageReqVO reqVO);
 
+    /**
+     * 根据邀请人id获取面试邀约列表
+     *
+     * @param inviteUserId 邀约人id
+     * @return 面试日程列表
+     */
+    List<AppInterviewInviteRespVO> getListByInviteUserId(Long inviteUserId);
+
+    /**
+     * 获取推荐职位面试会话状态数量
+     *
+     * @param jobIdList 职位id列表
+     * @return 推荐职位投递状态数量
+     */
+    List<CommonRespVO> getRecommendCount(List<Long> jobIdList);
+
     // ========== 招聘端 ==========
 
     /**

+ 19 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteServiceImpl.java

@@ -35,6 +35,7 @@ import org.springframework.validation.annotation.Validated;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.Collections;
 import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -160,6 +161,24 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
         return result;
     }
 
+    @Override
+    public List<AppInterviewInviteRespVO> getListByInviteUserId(Long inviteUserId) {
+        List<AppInterviewInviteRespVO> result =
+                mapper.getListByInviteUserId(inviteUserId, LoginUserContext.getUserId());
+        result.forEach(resp -> {
+            EnterpriseUserContactRespVO contactRespVO = userBindService
+                    .getContact(resp.getEnterpriseId(), resp.getInviteUserId());
+            // 设置联系人
+            resp.setContact(contactRespVO);
+        });
+        return result;
+    }
+
+    @Override
+    public List<CommonRespVO> getRecommendCount(List<Long> jobIdList) {
+        return mapper.getRecommendCount(jobIdList);
+    }
+
     @Override
     public PageResult<AppAdminInterviewInviteRespVO> page(AppAdminInterviewInviteReqPageVO reqVO) {
         LoginUser loginUser = LoginUserContext.get();

+ 1 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelService.java

@@ -94,12 +94,7 @@ public interface JobCvRelService {
      */
     boolean checkSend(Long jobId);
 
-    /**
-     * 获取推荐职位投递状态数量
-     *
-     * @return 推荐职位数量
-     */
-    List<CommonRespVO> getRecommendCount();
+
 
     /**
      * 获取推荐邀请投递的职位信息

+ 0 - 19
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelServiceImpl.java

@@ -170,25 +170,6 @@ public class JobCvRelServiceImpl implements JobCvRelService {
         return jobCvRelMapper.checkDataWithin15Day(userId, jobId);
     }
 
-    @Override
-    public List<CommonRespVO> getRecommendCount() {
-        List<CommonRespVO> list = new ArrayList<>();
-        List<JobCvRelDO> jobList = jobCvRelMapper
-                .selectByRecommendUserId(LoginUserContext.getUserId());
-        // 分组
-        Map<String, Long> groupedMap = jobList.stream()
-                .collect(
-                        Collectors.groupingBy(JobCvRelDO::getStatus, Collectors.counting())
-                );
-
-        for (Map.Entry<String, Long> entry : groupedMap.entrySet()) {
-            CommonRespVO respVO = new CommonRespVO();
-            respVO.setKey(entry.getKey());
-            respVO.setValue(entry.getValue().toString());
-            list.add(respVO);
-        }
-        return list;
-    }
 
     @Override
     public PageResult<AppHireJobCvRelRespVO> page(AppHireJobCvRelQueryReqVO reqVO) {

+ 10 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationService.java

@@ -11,8 +11,11 @@ import com.citu.module.menduner.system.controller.appadmin.person.cv.AppAdminJob
 import com.citu.module.menduner.system.controller.appadmin.person.cv.AppAdminJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.appadmin.unfit.AppAdminUnfitCandidatePageReqVO;
 import com.citu.module.menduner.system.controller.appadmin.unfit.AppAdminUnfitCandidateRespVO;
+import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseBaseSimpleRespVO;
 
+import java.util.List;
+
 /**
  * 招聘职位相关的整合层
  * 解决三层架构带来的业务循环依赖设计
@@ -60,6 +63,13 @@ public interface JobIntegrationService {
      */
     PageResult<AppJobCvLookRespVO> getJobCvLook(PageParam page);
 
+    /**
+     * 众聘分享-获取推荐职位投递状态数量
+     *
+     * @return 推荐职位数量
+     */
+    List<CommonRespVO> getRecommendCount();
+
     // ========== 招聘端 ==========
 
     /**

+ 34 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java

@@ -13,6 +13,7 @@ import com.citu.module.menduner.system.controller.appadmin.person.cv.AppAdminJob
 import com.citu.module.menduner.system.controller.appadmin.person.cv.AppAdminJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.appadmin.unfit.AppAdminUnfitCandidatePageReqVO;
 import com.citu.module.menduner.system.controller.appadmin.unfit.AppAdminUnfitCandidateRespVO;
+import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.contact.EnterpriseUserContactRespVO;
 import com.citu.module.menduner.system.controller.base.contact.EnterpriseUserSummaryRespVO;
 import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseBaseSimpleRespVO;
@@ -32,6 +33,7 @@ import com.citu.module.menduner.system.dal.mysql.job.JobCvRelMapper;
 import com.citu.module.menduner.system.dal.mysql.unfit.UnfitCandidateMapper;
 import com.citu.module.menduner.system.service.area.AreaService;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
+import com.citu.module.menduner.system.service.interview.InterviewInviteService;
 import com.citu.module.menduner.system.service.person.favorite.PersonJobFavoriteService;
 import com.citu.module.menduner.system.service.person.subscribe.PersonEnterpriseSubscribeService;
 import com.citu.module.menduner.system.util.ESQueryBuildUtils;
@@ -76,6 +78,9 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
     @Resource
     private PersonEnterpriseSubscribeService personEnterpriseSubscribeService;
 
+    @Resource
+    private InterviewInviteService interviewInviteService;
+
     @Resource
     private EnterpriseMapper enterpriseMapper;
 
@@ -191,6 +196,35 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
         return pageResult;
     }
 
+    @Override
+    public List<CommonRespVO> getRecommendCount() {
+        List<JobCvRelDO> cvList = jobCvRelMapper
+                .selectByRecommendUserId(LoginUserContext.getUserId());
+        if(CollUtil.isEmpty(cvList)) {
+            return null;
+        }
+
+        // 分组
+
+        List<CommonRespVO> cvStatusList = new ArrayList(1){{
+            CommonRespVO respVO = new CommonRespVO();
+            // 已报名
+            respVO.setKey("0");
+            respVO.setValue(cvList.size());
+            add(respVO);
+        }};
+
+
+        List<Long> jobIdList = cvList.stream().map(JobCvRelDO::getJobId).collect(Collectors.toList());
+
+        List<CommonRespVO> interviewConversationStatusList = interviewInviteService
+                .getRecommendCount(jobIdList);
+
+        // 合并
+        cvStatusList.addAll(interviewConversationStatusList);
+        return cvStatusList;
+    }
+
     @Override
     public PageResult<AppJobAdvertisedRespVO> search(AppJobAdvertisedSearchPageReqVO reqVO) {