Browse Source

1、完善招聘会第一版功能

rayson 5 months ago
parent
commit
6155a95097

+ 16 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/fair/AppRecruitFairController.java

@@ -5,12 +5,13 @@ import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.common.util.LoginUserContext;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.joinJobFairReqVO;
 import com.citu.module.menduner.system.controller.base.fair.JobFairRespVO;
 import com.citu.module.menduner.system.service.area.AreaService;
 import com.citu.module.menduner.system.service.fair.FairService;
 import com.citu.module.menduner.system.service.job.JobAdvertisedService;
+import com.citu.module.menduner.system.service.job.JobCvRelService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.validation.annotation.Validated;
@@ -18,6 +19,8 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
 import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
@@ -37,6 +40,10 @@ public class AppRecruitFairController {
     @Resource
     private JobAdvertisedService jobAdvertisedService;
 
+    @Resource
+    private JobCvRelService jobCvRelService;
+
+
     @PreAuthenticated
     @GetMapping("/list")
     @Operation(summary = "获得招聘会列表")
@@ -71,17 +78,23 @@ public class AppRecruitFairController {
     @PreAuthenticated
     @GetMapping("/get/by/job-fair")
     @Operation(summary = "根据招聘会id获取加入的职位信息")
-    public CommonResult<List<AppRecruitJobSimpleRespVO>> getByJobFairId(@RequestParam("id") Long id) {
+    public CommonResult<List<AppRecruitJobRespVO>> getByJobFairId(@RequestParam("id") Long id) {
         List<Long> jobIdList = fairService
                 .getJobIdListByJobFairIdAndEnterpriseId(id, LoginUserContext.getEnterpriseId());
         if (ObjectUtil.isEmpty(jobIdList)) {
             return success(null);
         }
-        List<AppRecruitJobSimpleRespVO> list = jobAdvertisedService.getByIdsList(jobIdList);
+        List<AppRecruitJobRespVO> list = jobAdvertisedService.getByIdsList(jobIdList);
         list.forEach(item -> {
             if (null != item.getAreaId()) {
                 item.setArea(areaService.getById(item.getAreaId()));
             }
+            long count = jobCvRelService.getCountByJobFairIdAndJobId(id, item.getId());
+            item.setCount(count);
+            // 计算多少天后到期
+            if (null != item.getExpireTime()) {
+                item.setExpireDay(ChronoUnit.DAYS.between(LocalDateTime.now(), item.getExpireTime()));
+            }
         });
         return success(list);
     }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/AppRecruitJobAdvertisedController.java

@@ -122,7 +122,7 @@ public class AppRecruitJobAdvertisedController {
     @PreAuthenticated
     @GetMapping("/list")
     @Operation(summary = "获取发布的职位列表")
-    public CommonResult<List<AppRecruitJobSimpleRespVO>> getList
+    public CommonResult<List<AppRecruitJobRespVO>> getList
             (@RequestParam(value = "status", required = false) String status) {
         return success(jobAdvertisedService.getList(status));
     }

+ 3 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java

@@ -13,6 +13,7 @@ import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdver
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExportRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobPageReqVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
@@ -317,7 +318,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
      * @param userId       用户id
      * @param ids          id集合
      **/
-    default List<AppRecruitJobSimpleRespVO> list(Long enterpriseId, Long userId, List<Long> ids, String status) {
+    default List<AppRecruitJobRespVO> list(Long enterpriseId, Long userId, List<Long> ids, String status) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(JobAdvertisedDO.class);
         query.eq(JobAdvertisedDO::getEnterpriseId, enterpriseId);
@@ -326,7 +327,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
         query.eqIfPresent(JobAdvertisedDO::getStatus, status);
         query.inIfPresent(JobAdvertisedDO::getId, ids);
         query.orderByDesc(JobAdvertisedDO::getUpdateTime);
-        return selectJoinList(AppRecruitJobSimpleRespVO.class, query);
+        return selectJoinList(AppRecruitJobRespVO.class, query);
     }
 
     /**

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

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.dal.mysql.job;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
@@ -176,12 +177,18 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
 
 
     // 根据用户ID和职位id判断7天内是否有数据,如果有返回true
-    default Boolean checkDataWithin7Day(Long userId,Long jobFairId, Long jobId) {
-        return selectCount(new LambdaQueryWrapperX<JobCvRelDO>()
+    default Boolean checkDataWithin7Day(Long userId, Long jobFairId, Long jobId) {
+        LambdaQueryWrapper<JobCvRelDO> wrapper = new LambdaQueryWrapperX<JobCvRelDO>()
                 .eq(JobCvRelDO::getUserId, userId)
-                .eqIfPresent(JobCvRelDO::getJobFairId, jobFairId)
                 .eq(JobCvRelDO::getJobId, jobId)
-                .ge(JobCvRelDO::getCreateTime, LocalDateTime.now().minusDays(7))) > 0;
+                .ge(JobCvRelDO::getCreateTime, LocalDateTime.now().minusDays(7));
+        if(null == jobFairId) {
+            wrapper.isNull(JobCvRelDO::getJobFairId);
+        }else {
+            wrapper.eq(JobCvRelDO::getJobFairId, jobFairId);
+        }
+
+        return selectCount(wrapper) > 0;
     }
 
     // 根据用户id和职位id获取投递简历信息
@@ -194,6 +201,13 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
         );
     }
 
+    default long selectCountByJobFairIdAndJobId(Long jobFairId, Long jobId) {
+        return selectCount(new LambdaQueryWrapperX<JobCvRelDO>()
+                .eq(JobCvRelDO::getJobFairId, jobFairId)
+                .eq(JobCvRelDO::getJobId, jobId)
+        );
+    }
+
     default List<JobCvRelDO> selectByJobIdList(List<Long> jobIdList) {
         return selectList(new LambdaQueryWrapperX<JobCvRelDO>()
                 .in(JobCvRelDO::getJobId, jobIdList)

+ 17 - 8
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairServiceImpl.java

@@ -105,6 +105,12 @@ public class FairServiceImpl implements FairService {
         // 更新
         FairDO updateObj = BeanUtils.toBean(updateReqVO, FairDO.class);
         fairMapper.updateById(updateObj);
+        if (MendunerStatusEnum.DISABLE.getStatus().equals(updateObj.getStatus())) {
+            disable(List.of(updateReqVO.getId()));
+        }
+        if (MendunerStatusEnum.ENABLE.getStatus().equals(updateObj.getStatus())) {
+            enable(List.of(updateReqVO.getId()));
+        }
     }
 
     @Override
@@ -190,12 +196,14 @@ public class FairServiceImpl implements FairService {
     public void enable(List<Long> ids) {
         for (Long id : ids) {
             FairDO fairDO = getJobFair(id);
-            if (MendunerStatusEnum.ENABLE.getStatus().equals(fairDO.getStatus())) {
-                // 已经是开启状态
-                return;
-            }
+//            if (MendunerStatusEnum.ENABLE.getStatus().equals(fairDO.getStatus())) {
+//                // 已经是开启状态
+//                return;
+//            }
             fairDO.setStatus(MendunerStatusEnum.ENABLE.getStatus());
             fairMapper.updateById(fairDO);
+            // 关闭由招聘会创建的职位
+            jobAdvertisedService.enableJobAdvertised(JobSourceEnum.FAIR.getType(), fairDO.getId());
         }
     }
 
@@ -204,14 +212,15 @@ public class FairServiceImpl implements FairService {
     public void disable(List<Long> ids) {
         for (Long id : ids) {
             FairDO fairDO = getJobFair(id);
-            if (MendunerStatusEnum.DISABLE.getStatus().equals(fairDO.getStatus())) {
-                // 已经是关闭状态
-                return;
-            }
+//            if (MendunerStatusEnum.DISABLE.getStatus().equals(fairDO.getStatus())) {
+//                // 已经是关闭状态
+//                return;
+//            }
             fairDO.setStatus(MendunerStatusEnum.DISABLE.getStatus());
             fairMapper.updateById(fairDO);
             // 关闭由招聘会创建的职位
             jobAdvertisedService.closeJobAdvertised(JobSourceEnum.FAIR.getType(), fairDO.getId());
+            //TODO 招聘会与职位的关联
         }
     }
 

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

@@ -6,11 +6,8 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedHomeRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedSimpleRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExtendRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExtendSaveReqVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.*;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedRenewalReqVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSaveReqVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobAnalysisRespVO;
@@ -94,6 +91,14 @@ public interface JobAdvertisedService {
      **/
     void closeJobAdvertised(String source,Long bizId);
 
+    /**
+     * 根据职位来源和来源关联id启用职位
+     *
+     * @param source 职位来源
+     * @param bizId  职位id
+     **/
+    void enableJobAdvertised(String source,Long bizId);
+
     /**
      * 根据企业id和职位类型获取职位列表
      *
@@ -193,14 +198,14 @@ public interface JobAdvertisedService {
      *
      * @return 简易职位信息的集合
      **/
-    List<AppRecruitJobSimpleRespVO> getList(String status);
+    List<AppRecruitJobRespVO> getList(String status);
 
     /**
      * 获取根据id集合获取对应发布的职位
      *
      * @return 简易职位信息的集合
      **/
-    List<AppRecruitJobSimpleRespVO> getByIdsList(List<Long> ids);
+    List<AppRecruitJobRespVO> getByIdsList(List<Long> ids);
 
     /**
      * 置顶职位

+ 29 - 13
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java

@@ -20,8 +20,8 @@ import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdver
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExtendRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExtendSaveReqVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSaveReqVO;
-import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobAnalysisRespVO;
@@ -166,7 +166,20 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     public void closeJobAdvertised(String source, Long bizId) {
         List<JobAdvertisedDO> list = mapper.selectBySourceAndBizId(source, bizId);
         for (JobAdvertisedDO job : list) {
-            disable(job);
+            if (JobStatusEnum.ENABLE.getStatus().equals(job.getStatus())) {
+                disable(job);
+            }
+        }
+    }
+
+    @Override
+    @DSTransactional
+    public void enableJobAdvertised(String source, Long bizId) {
+        List<JobAdvertisedDO> list = mapper.selectBySourceAndBizId(source, bizId);
+        for (JobAdvertisedDO job : list) {
+            if (JobStatusEnum.DISABLE.getStatus().equals(job.getStatus())) {
+                enable(job);
+            }
         }
     }
 
@@ -547,13 +560,16 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
             boolean exec = job.getCreateTime().isAfter(LocalDateTime.of(2024, 11, 1, 0, 0));
             // 扣除额度 20241101之后的数据才做处理
             vipEntitlementCheckAspect.deductQuota(VipEntitlementCheck.OPERATE_PUBLISH_JOB, exec);
-            job.setStatus(JobStatusEnum.ENABLE.getStatus());
-            mapper.updateById(job);
-            jobDataSync(job, SyncConstants.UPDATE);
-
+            enable(job);
         }
     }
 
+    void enable(JobAdvertisedDO job) {
+        job.setStatus(JobStatusEnum.ENABLE.getStatus());
+        mapper.updateById(job);
+        jobDataSync(job, SyncConstants.UPDATE);
+    }
+
     @Override
     public void enableAndUpdateExpireTime(Long id, LocalDateTime expireTime) {
         JobAdvertisedDO job = get(id);
@@ -574,16 +590,16 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     public void disable(List<Long> ids) {
         for (Long id : ids) {
             JobAdvertisedDO job = get(id);
+            if (JobStatusEnum.DISABLE.getStatus().equals(job.getStatus())) {
+                // 已经是关闭状态
+                throw exception(MDE_JOB_ADVERTISED_STATUS_CLOSE_ERROR);
+            }
             disable(job);
         }
     }
 
 
     void disable(JobAdvertisedDO job) {
-        if (JobStatusEnum.DISABLE.getStatus().equals(job.getStatus())) {
-            // 已经是关闭状态
-            throw exception(MDE_JOB_ADVERTISED_STATUS_CLOSE_ERROR);
-        }
         job.setStatus(JobStatusEnum.DISABLE.getStatus());
         mapper.updateById(job);
         jobDataSync(job, SyncConstants.UPDATE);
@@ -601,8 +617,8 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     }
 
     @Override
-    public List<AppRecruitJobSimpleRespVO> getList(String status) {
-        List<AppRecruitJobSimpleRespVO> list = mapper.list(
+    public List<AppRecruitJobRespVO> getList(String status) {
+        List<AppRecruitJobRespVO> list = mapper.list(
                 LoginUserContext.getEnterpriseId(),
                 LoginUserContext.getUserId(),
                 null, status
@@ -616,7 +632,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     }
 
     @Override
-    public List<AppRecruitJobSimpleRespVO> getByIdsList(List<Long> ids) {
+    public List<AppRecruitJobRespVO> getByIdsList(List<Long> ids) {
         return mapper.list(
                 LoginUserContext.getEnterpriseId(),
                 LoginUserContext.getUserId(),

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

@@ -73,6 +73,16 @@ public interface JobCvRelService {
     JobCvRelDO selectByUserIdAndJobId(Long userId, Long jobId);
 
 
+    /**
+     * 根据招聘会id和职位id查询投递简历数量
+     *
+     * @param jobFairId 招聘会id
+     * @param jobId 职位id
+     * @return 投递简历数量
+     */
+    long getCountByJobFairIdAndJobId(Long jobFairId, Long jobId);
+
+
     // ========== 求职端 ==========
 
     /**

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

@@ -126,6 +126,11 @@ public class JobCvRelServiceImpl implements JobCvRelService {
         return cv;
     }
 
+    @Override
+    public long getCountByJobFairIdAndJobId(Long jobFairId, Long jobId) {
+        return jobCvRelMapper.selectCountByJobFairIdAndJobId(jobFairId, jobId);
+    }
+
     @Override
     @DSTransactional
     public Long send(AppJobCvRelReqVO reqVO) {