Browse Source

1、优化招聘会相关逻辑

rayson 4 tháng trước cách đây
mục cha
commit
08bc6b4d52
42 tập tin đã thay đổi với 615 bổ sung883 xóa
  1. 2 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  2. 0 20
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/fair/JobFairStatusEnum.java
  3. 19 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/fair/JobFairWhiteSourceEnum.java
  4. 10 18
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/fair/FairController.java
  5. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/job/vo/AppJobAdvertisedDetailRespVO.java
  6. 40 9
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/fair/AppRecruitFairController.java
  7. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/interview/vo/AppRecruitInterviewInviteRespVO.java
  8. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobPageReqVO.java
  9. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobRespVO.java
  10. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/joinJobFairReqVO.java
  11. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/person/cv/AppRecruitJobCvRelRespVO.java
  12. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/unfit/AppRecruitUnfitCandidateRespVO.java
  13. 0 32
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/FairWhiteRespVO.java
  14. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/JobFairEnterprisePageReqVO.java
  15. 13 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/JobFairNotJoinedJobPageReqVO.java
  16. 0 17
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/admission/FairAdmissionDetailRespVO.java
  17. 0 40
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/admission/FairAdmissionPageReqVO.java
  18. 0 48
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/admission/FairAdmissionRespVO.java
  19. 0 36
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/admission/FairAdmissionSaveReqVO.java
  20. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/white/FairWhiteDetailRespVO.java
  21. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/white/FairWhitePageReqVO.java
  22. 4 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/white/FairWhiteReqVO.java
  23. 46 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/white/FairWhiteRespVO.java
  24. 0 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/fair/FairDetailDO.java
  25. 30 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/fair/FairWhiteDO.java
  26. 0 72
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/fair/FairAdmissionMapper.java
  27. 28 8
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/fair/FairDetailMapper.java
  28. 22 18
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/fair/FairWhiteMapper.java
  29. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java
  30. 16 12
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/FairAdmissionConsumer.java
  31. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprisejob/EnterpriseJobServiceImpl.java
  32. 0 78
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairAdmissionService.java
  33. 0 116
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairAdmissionServiceImpl.java
  34. 7 27
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairService.java
  35. 74 124
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairServiceImpl.java
  36. 69 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairWhiteService.java
  37. 159 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairWhiteServiceImpl.java
  38. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteServiceImpl.java
  39. 0 15
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java
  40. 0 176
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  41. 17 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java
  42. 8 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/handler/JobFairOperateHandler.java

+ 2 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -616,6 +616,8 @@ public interface ErrorCodeConstants {
 
     ErrorCode JOB_FAIR_ADMISSION_STATUS_DISABLE = new ErrorCode(1_100_056_008, "您的招聘会门票许可已被禁用,请联系工作人员");
 
+    ErrorCode JOB_FAIR_ADMISSION_STATUS_EXPIRED = new ErrorCode(1_100_056_009, "您在该招聘会发布职位的额度不足,请联系工作人员");
+
     // ========== 招聘职位扩展 1_100_057_000 ==========
     ErrorCode JOB_EXTEND_JOB_ID_NOT_NULL = new ErrorCode(1_100_057_001, "招聘职位id不能为空");
 

+ 0 - 20
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/fair/JobFairStatusEnum.java

@@ -1,20 +0,0 @@
-package com.citu.module.menduner.system.enums.fair;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * 招聘会状态
- * 0正常|1禁用|2移除
- **/
-@Getter
-@AllArgsConstructor
-public enum JobFairStatusEnum {
-    NORMAL("0", "正常"),
-    DISABLE("1", "禁用"),
-    REMOVE("2", "移除");
-
-    private final String status;
-    private final String desc;
-
-}

+ 19 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/fair/JobFairWhiteSourceEnum.java

@@ -0,0 +1,19 @@
+package com.citu.module.menduner.system.enums.fair;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 招聘会白名单
+ * 0后台添加 | 1购买门票
+ **/
+@Getter
+@AllArgsConstructor
+public enum JobFairWhiteSourceEnum {
+    ADMIN("0", "后台添加"),
+    TICKET("1", "购买门票");
+
+    private final String source;
+    private final String desc;
+
+}

+ 10 - 18
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/fair/FairController.java

@@ -9,12 +9,13 @@ import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.common.util.string.StrUtils;
 import com.citu.framework.excel.core.util.ExcelUtils;
 import com.citu.module.menduner.system.controller.base.fair.*;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionDetailRespVO;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionPageReqVO;
+import com.citu.module.menduner.system.controller.base.fair.white.FairWhiteDetailRespVO;
+import com.citu.module.menduner.system.controller.base.fair.white.FairWhitePageReqVO;
+import com.citu.module.menduner.system.controller.base.fair.white.FairWhiteReqVO;
 import com.citu.module.menduner.system.dal.dataobject.fair.FairDO;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
-import com.citu.module.menduner.system.service.fair.FairAdmissionService;
 import com.citu.module.menduner.system.service.fair.FairService;
+import com.citu.module.menduner.system.service.fair.FairWhiteService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -42,7 +43,7 @@ public class FairController {
     private FairService fairService;
 
     @Resource
-    private FairAdmissionService fairAdmissionService;
+    private FairWhiteService fairWhiteService;
 
     @PostMapping("/create")
     @Operation(summary = "创建招聘会")
@@ -117,20 +118,20 @@ public class FairController {
     @GetMapping("/get-white-enterprise")
     @Operation(summary = "获得招聘会白名单企业")
     public CommonResult<PageResult<FairWhiteDetailRespVO>> page(@Valid FairWhitePageReqVO reqVO) {
-        return success(fairService.page(reqVO));
+        return success(fairWhiteService.selectPage(reqVO));
     }
 
     @PutMapping("/add-white-list")
     @Operation(summary = "添加企业白名单")
     public CommonResult<Boolean> addWhiteList(@Valid @RequestBody FairWhiteReqVO reqVO) {
-        fairService.addWhiteList(reqVO.getJobFairId(), StrUtils.splitToLong(reqVO.getEnterpriseIds()));
+        fairWhiteService.addWhiteList(reqVO.getJobFairId(), StrUtils.splitToLong(reqVO.getEnterpriseIds()));
         return success(true);
     }
 
     @PutMapping("/remove-white-list")
     @Operation(summary = "移除企业白名单")
     public CommonResult<Boolean> removeWhiteList(@Valid @RequestBody FairWhiteReqVO reqVO) {
-        fairService.removeWhiteList(reqVO.getJobFairId(), StrUtils.splitToLong(reqVO.getEnterpriseIds()));
+        fairWhiteService.removeWhiteList(reqVO.getJobFairId(), StrUtils.splitToLong(reqVO.getEnterpriseIds()));
         return success(true);
     }
 
@@ -160,28 +161,19 @@ public class FairController {
         return success(true);
     }
 
-    @GetMapping("/admission/page")
-    @Operation(summary = "分页查询招聘会门票权益")
-    public CommonResult<PageResult<FairAdmissionDetailRespVO>> getFairAdmissionPage
-            (FairAdmissionPageReqVO reqVO) {
-        return success(fairAdmissionService.getFairAdmissionPage(reqVO));
-    }
-
     @PostMapping("/admission/enable")
     @Operation(summary = "开启招聘会门票")
     public CommonResult<Boolean> enableAdmission(@RequestParam("id") String id) {
-        fairAdmissionService.updateAdmissionStatus(id, MendunerStatusEnum.ENABLE.getStatus());
+        fairWhiteService.updateAdmissionStatus(id, MendunerStatusEnum.ENABLE.getStatus());
         return success(true);
     }
 
     @PostMapping("/admission/disable")
     @Operation(summary = "禁用招聘会门票")
     public CommonResult<Boolean> disableAdmission(@RequestParam("id") String id) {
-        fairAdmissionService.updateAdmissionStatus(id, MendunerStatusEnum.DISABLE.getStatus());
+        fairWhiteService.updateAdmissionStatus(id, MendunerStatusEnum.DISABLE.getStatus());
         return success(true);
     }
 
 
-
-
 }

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/job/vo/AppJobAdvertisedDetailRespVO.java

@@ -9,6 +9,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Schema(description = "menduner - 招聘职位-详情 Response VO")
 @Data
@@ -29,5 +30,8 @@ public class AppJobAdvertisedDetailRespVO extends JobAdvertisedRespVO {
     @Schema(description = "招聘联系人信息")
     private EnterpriseUserContactRespVO contact;
 
+    @Schema(description = "目前加入哪些招聘会")
+    private List<Long> jobFairIds;
+
 
 }

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

@@ -1,20 +1,24 @@
 package com.citu.module.menduner.system.controller.app.recruit.fair;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageResult;
 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.AppRecruitJobRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.joinJobFairReqVO;
+import com.citu.module.menduner.system.controller.base.fair.JobFairNotJoinedJobPageReqVO;
 import com.citu.module.menduner.system.controller.base.fair.JobFairRespVO;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionRespVO;
-import com.citu.module.menduner.system.dal.dataobject.fair.FairAdmissionDO;
+import com.citu.module.menduner.system.controller.base.fair.white.FairWhiteRespVO;
+import com.citu.module.menduner.system.dal.dataobject.fair.FairWhiteDO;
 import com.citu.module.menduner.system.service.area.AreaService;
-import com.citu.module.menduner.system.service.fair.FairAdmissionService;
 import com.citu.module.menduner.system.service.fair.FairService;
+import com.citu.module.menduner.system.service.fair.FairWhiteService;
 import com.citu.module.menduner.system.service.job.JobAdvertisedService;
 import com.citu.module.menduner.system.service.job.JobCvRelService;
+import com.citu.module.menduner.system.service.job.JobIntegrationService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.validation.annotation.Validated;
@@ -26,7 +30,9 @@ import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.List;
 
+import static com.citu.framework.common.pojo.CommonResult.error;
 import static com.citu.framework.common.pojo.CommonResult.success;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.JOB_FAIR_NOT_EXISTS;
 
 @Tag(name = "招聘端 - 招聘会")
 @RestController
@@ -38,7 +44,7 @@ public class AppRecruitFairController {
     private FairService fairService;
 
     @Resource
-    private FairAdmissionService fairAdmissionService;
+    private FairWhiteService fairWhiteService;
 
     @Resource
     private AreaService areaService;
@@ -46,6 +52,9 @@ public class AppRecruitFairController {
     @Resource
     private JobAdvertisedService jobAdvertisedService;
 
+    @Resource
+    private JobIntegrationService jobIntegrationService;
+
     @Resource
     private JobCvRelService jobCvRelService;
 
@@ -109,16 +118,38 @@ public class AppRecruitFairController {
     @GetMapping("/check/permission")
     @Operation(summary = "效验是否有权限参加招聘会")
     public CommonResult<Boolean> checkPermission(@RequestParam("jobFairId") Long jobFairId) {
-        fairService.checkFairWhite(jobFairId);
-        fairService.syncJob(jobFairId);
+        fairWhiteService.checkFairWhite(LoginUserContext.getEnterpriseId(), jobFairId);
+        if (!fairWhiteService.checkFirstEnterFair(LoginUserContext.getEnterpriseId(), jobFairId)) {
+            // 首次进入才同步数据
+            fairService.syncJob(LoginUserContext.getEnterpriseId(), jobFairId);
+        }
         return success(true);
     }
 
     @PreAuthenticated
     @GetMapping("/admission/get")
     @Operation(summary = "获取招聘会门票权益")
-    public CommonResult<FairAdmissionRespVO> getAdmission(@RequestParam("jobFairId") Long jobFairId) {
-        FairAdmissionDO fairAdmission = fairAdmissionService.get(LoginUserContext.getEnterpriseId(), jobFairId);
-        return success(BeanUtils.toBean(fairAdmission, FairAdmissionRespVO.class));
+    public CommonResult<FairWhiteRespVO> getAdmission(@RequestParam("jobFairId") Long jobFairId) {
+        FairWhiteDO fairWhite = fairWhiteService.get(LoginUserContext.getEnterpriseId(), jobFairId);
+        return success(BeanUtils.toBean(fairWhite, FairWhiteRespVO.class));
+    }
+
+    @PreAuthenticated
+    @GetMapping("/get/not-joined-job/page")
+    @Operation(summary = "获取未加入招聘会的职位列表")
+    public CommonResult<PageResult<AppRecruitJobRespVO>> getNotJoinedJobPage(JobFairNotJoinedJobPageReqVO reqVO) {
+        if (null == reqVO.getJobFairId()) {
+            return error(JOB_FAIR_NOT_EXISTS);
+        }
+        // 获取加入招聘会的职位
+        List<Long> jobIds =
+                fairService.getJobIdsByEnterpriseIdAndJobFairId
+                        (LoginUserContext.getEnterpriseId(), reqVO.getJobFairId());
+        if (CollectionUtils.isNotEmpty(jobIds)) {
+            reqVO.setFilterNotJobIds(jobIds);
+        }
+        return success(jobIntegrationService.page(reqVO));
+
     }
+
 }

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/interview/vo/AppRecruitInterviewInviteRespVO.java

@@ -8,6 +8,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Schema(description = "menduner - 面试邀请 Response VO")
 @Data
@@ -25,4 +26,7 @@ public class AppRecruitInterviewInviteRespVO extends InterviewInviteRespVO {
     @Schema(description = "是否在企业人才库中")
     private Boolean inTalentPool;
 
+    @Schema(description = "目前加入哪些招聘会")
+    private List<Long> jobFairIds;
+
 }

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobPageReqVO.java

@@ -22,6 +22,9 @@ public class AppRecruitJobPageReqVO extends PageParam {
     @Schema(description = "id列表")
     private List<Long> ids;
 
+    @Schema(description = "过滤某些职位id")
+    private List<Long> filterNotJobIds;
+
     @Schema(description = "工作地区", example = "25976")
     private Long areaId;
 

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobRespVO.java

@@ -4,6 +4,8 @@ package com.citu.module.menduner.system.controller.app.recruit.job.vo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.List;
+
 @Schema(description = "招聘端 - 招聘职位 Response VO")
 @Data
 public class AppRecruitJobRespVO extends AppRecruitJobSimpleRespVO {
@@ -19,4 +21,7 @@ public class AppRecruitJobRespVO extends AppRecruitJobSimpleRespVO {
 
     @Schema(description = "是否可编辑")
     private boolean edit;
+
+    @Schema(description = "目前加入哪些招聘会")
+    private List<Long> jobFairIds;
 }

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/joinJobFairReqVO.java

@@ -1,12 +1,18 @@
 package com.citu.module.menduner.system.controller.app.recruit.job.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import javax.validation.constraints.NotNull;
 
 @Schema(description = "招聘端 -加入招聘会 Request VO")
 @Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
 public class joinJobFairReqVO {
 
     /**

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/person/cv/AppRecruitJobCvRelRespVO.java

@@ -6,6 +6,8 @@ import com.citu.module.menduner.system.controller.base.job.cv.JobCvRelSimpleResp
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.List;
+
 
 @Schema(description = "menduner - 招聘职位简历投递分页 Response VO")
 @Data
@@ -20,4 +22,7 @@ public class AppRecruitJobCvRelRespVO extends JobCvRelSimpleRespVO {
     @Schema(description = "招聘信息")
     private AppRecruitJobSimpleRespVO job;
 
+    @Schema(description = "目前加入哪些招聘会")
+    private List<Long> jobFairIds;
+
 }

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/unfit/AppRecruitUnfitCandidateRespVO.java

@@ -6,6 +6,8 @@ import com.citu.module.menduner.system.controller.base.unfit.UnfitCandidateRespV
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.List;
+
 @Schema(description = "menduner - 不合适的候选人 Response VO")
 @Data
 public class AppRecruitUnfitCandidateRespVO extends UnfitCandidateRespVO {
@@ -15,4 +17,7 @@ public class AppRecruitUnfitCandidateRespVO extends UnfitCandidateRespVO {
 
     @Schema(description = "招聘信息")
     private AppRecruitJobSimpleRespVO job;
+
+    @Schema(description = "目前加入哪些招聘会")
+    private List<Long> jobFairIds;
 }

+ 0 - 32
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/FairWhiteRespVO.java

@@ -1,32 +0,0 @@
-package com.citu.module.menduner.system.controller.base.fair;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.citu.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-@Schema(description = "管理后台 - 招聘会白名单 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class FairWhiteRespVO  {
-
-
-    @Schema(description = "id", example = "1")
-    private Long id;
-
-    @Schema(description = "企业id", example = "1")
-    private Long enterpriseId;
-
-    @Schema(description = "招聘会id", example = "1")
-    private Long jobFairId;
-
-    @Schema(description = "企业名称", example = "1")
-    private String name;
-
-    @Schema(description = "招聘会信息")
-    private JobFairRespVO jobFair;
-
-}

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/JobFairEnterprisePageReqVO.java

@@ -23,4 +23,7 @@ public class JobFairEnterprisePageReqVO extends PageParam {
     @Schema(description = "行业类型id")
     private List<Long> industryId;
 
+    @Schema(description = "企业id")
+    private List<Long> enterpriseId;
+
 }

+ 13 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/JobFairNotJoinedJobPageReqVO.java

@@ -0,0 +1,13 @@
+package com.citu.module.menduner.system.controller.base.fair;
+
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobPageReqVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "未加入招聘会的职位分页查询条件 Request VO")
+@Data
+public class JobFairNotJoinedJobPageReqVO extends AppRecruitJobPageReqVO {
+
+    @Schema(description = "招聘会id")
+    private Long jobFairId;
+}

+ 0 - 17
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/admission/FairAdmissionDetailRespVO.java

@@ -1,17 +0,0 @@
-package com.citu.module.menduner.system.controller.base.fair.admission;
-
-import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseSimpleRespVO;
-import com.citu.module.menduner.system.controller.base.fair.JobFairRespVO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Schema(description = "管理后台 - 招聘会门票权益详情 Response VO")
-@Data
-public class FairAdmissionDetailRespVO extends FairAdmissionRespVO{
-
-    @Schema(description = "企业信息")
-    private EnterpriseSimpleRespVO enterprise;
-
-    @Schema(description = "招聘会信息")
-    private JobFairRespVO jobFair;
-}

+ 0 - 40
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/admission/FairAdmissionPageReqVO.java

@@ -1,40 +0,0 @@
-package com.citu.module.menduner.system.controller.base.fair.admission;
-
-
-import com.citu.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 招聘会门票权益分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class FairAdmissionPageReqVO extends PageParam {
-
-    @Schema(description = "招聘会id", example = "6236")
-    private Long jobFairId;
-
-    @Schema(description = "企业id", example = "17350")
-    private Long enterpriseId;
-
-    @Schema(description = "用户id", example = "7780")
-    private Long userId;
-
-    @Schema(description = "企业名称", example = "1")
-    private String name;
-
-    @Schema(description = "状态(0启用|1禁用)", example = "0")
-    private String status;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 48
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/admission/FairAdmissionRespVO.java

@@ -1,48 +0,0 @@
-package com.citu.module.menduner.system.controller.base.fair.admission;
-
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 招聘会门票权益 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class FairAdmissionRespVO {
-
-    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20496")
-    @ExcelProperty("id")
-    private Long id;
-
-    @Schema(description = "招聘会id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6236")
-    @ExcelProperty("招聘会id")
-    private Long jobFairId;
-
-    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17350")
-    @ExcelProperty("企业id")
-    private Long enterpriseId;
-
-    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7780")
-    @ExcelProperty("用户id")
-    private Long userId;
-
-    @Schema(description = "现在允许发布的职位数量", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("现在允许发布的职位数量")
-    private Integer num;
-
-    @Schema(description = "原本允许发布的职位数量", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("原本允许发布的职位数量")
-    private Integer originNum;
-
-    @Schema(description = "状态(0启用|1禁用)", example = "0")
-    @ExcelProperty("状态(0启用|1禁用)")
-    private String status;
-
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-}

+ 0 - 36
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/admission/FairAdmissionSaveReqVO.java

@@ -1,36 +0,0 @@
-package com.citu.module.menduner.system.controller.base.fair.admission;
-
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-
-@Schema(description = "管理后台 - 招聘会门票权益新增/修改 Request VO")
-@Data
-public class FairAdmissionSaveReqVO {
-
-    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20496")
-    private Long id;
-
-    @Schema(description = "招聘会id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6236")
-    private Long jobFairId;
-
-    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17350")
-    private Long enterpriseId;
-
-    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7780")
-    private Long userId;
-
-    @Schema(description = "现在允许发布的职位数量", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "现在允许发布的职位数量不能为空")
-    private Integer num;
-
-    @Schema(description = "原本允许发布的职位数量", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "原本允许发布的职位数量不能为空")
-    private Integer originNum;
-
-    @Schema(description = "状态(0启用|1禁用)", example = "0")
-    private String status;
-
-}

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/FairWhiteDetailRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/white/FairWhiteDetailRespVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.base.fair;
+package com.citu.module.menduner.system.controller.base.fair.white;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseSimpleRespVO;

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/FairWhitePageReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/white/FairWhitePageReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.base.fair;
+package com.citu.module.menduner.system.controller.base.fair.white;
 
 import com.citu.framework.common.pojo.PageParam;
 import io.swagger.v3.oas.annotations.media.Schema;

+ 4 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/FairWhiteReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/white/FairWhiteReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.base.fair;
+package com.citu.module.menduner.system.controller.base.fair.white;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -15,4 +15,7 @@ public class FairWhiteReqVO {
 
     @Schema(description = "企业名称", example = "1")
     private String enterpriseName;
+
+    @Schema(description = "加入来源(0后台添加|1购买门票)", example = "1")
+    private String source;
 }

+ 46 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/white/FairWhiteRespVO.java

@@ -0,0 +1,46 @@
+package com.citu.module.menduner.system.controller.base.fair.white;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.citu.module.menduner.system.controller.base.fair.JobFairRespVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 招聘会白名单 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class FairWhiteRespVO {
+
+    @Schema(description = "id", example = "1")
+    private Long id;
+
+    @Schema(description = "加入来源(0后台添加|1购买门票)", example = "1")
+    private String source;
+
+    @Schema(description = "企业id", example = "1")
+    private Long enterpriseId;
+
+    @Schema(description = "招聘会id", example = "1")
+    private Long jobFairId;
+
+    @Schema(description = "企业名称", example = "1")
+    private String name;
+
+    @Schema(description = "是否首次进入")
+    private Boolean first;
+
+    @Schema(description = "购买门票的用户id")
+    private Long userId;
+
+    @Schema(description = "现在允许发布的职位数量")
+    private Integer num;
+
+    @Schema(description = "原本允许发布的职位数量")
+    private Integer originNum;
+
+    @Schema(description = "门票状态(0启用|1禁用)")
+    private String admissionStatus;
+
+    @Schema(description = "招聘会信息")
+    private JobFairRespVO jobFair;
+
+}

+ 0 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/fair/FairDetailDO.java

@@ -39,9 +39,5 @@ public class FairDetailDO extends TenantBaseDO {
      * 职位id
      */
     private Long jobId;
-    /**
-     * 状态 0正常 1禁用 2移除
-     */
-    private String status;
 
 }

+ 30 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/fair/FairWhiteDO.java

@@ -27,6 +27,11 @@ public class FairWhiteDO extends TenantBaseDO {
     @TableId
     private Long id;
 
+    /**
+     * 加入来源(0后台添加|1购买门票)
+     */
+    private String source;
+
     /**
      * 招聘会id
      */
@@ -41,4 +46,29 @@ public class FairWhiteDO extends TenantBaseDO {
      * 企业名称
      */
     private String name;
+
+    /**
+     * 是否首次进入
+     */
+    private Boolean first;
+
+    /**
+     * 购买门票的用户id
+     */
+    private Long userId;
+
+    /**
+     * 现在允许发布的职位数量
+     */
+    private Integer num;
+
+    /**
+     * 原本允许发布的职位数量
+     */
+    private Integer originNum;
+
+    /**
+     * 门票状态(0启用|1禁用)
+     */
+    private String admissionStatus;
 }

+ 0 - 72
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/fair/FairAdmissionMapper.java

@@ -1,72 +0,0 @@
-package com.citu.module.menduner.system.dal.mysql.fair;
-
-
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.mybatis.core.mapper.BaseMapperX;
-import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
-import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
-import com.citu.module.menduner.system.controller.base.fair.FairWhiteDetailRespVO;
-import com.citu.module.menduner.system.controller.base.fair.FairWhitePageReqVO;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionDetailRespVO;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionPageReqVO;
-import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
-import com.citu.module.menduner.system.dal.dataobject.fair.FairAdmissionDO;
-import com.citu.module.menduner.system.dal.dataobject.fair.FairDO;
-import com.citu.module.menduner.system.dal.dataobject.fair.FairWhiteDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 招聘会门票权益 Mapper
- *
- * @author Rayson
- */
-@Mapper
-public interface FairAdmissionMapper extends BaseMapperX<FairAdmissionDO> {
-
-    default PageResult<FairAdmissionDO> selectPage(FairAdmissionPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<FairAdmissionDO>()
-                .eqIfPresent(FairAdmissionDO::getJobFairId, reqVO.getJobFairId())
-                .eqIfPresent(FairAdmissionDO::getEnterpriseId, reqVO.getEnterpriseId())
-                .eqIfPresent(FairAdmissionDO::getUserId, reqVO.getUserId())
-                .betweenIfPresent(FairAdmissionDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(FairAdmissionDO::getId));
-    }
-
-
-    default FairAdmissionDO selectByEnterpriseIdAndJobFairId(Long enterpriseId,Long jobFairId) {
-        return selectOne(FairAdmissionDO::getEnterpriseId, enterpriseId,FairAdmissionDO::getJobFairId,jobFairId);
-    }
-
-
-    default PageResult<FairAdmissionDetailRespVO> selectPageRetResp(FairAdmissionPageReqVO reqVO) {
-        MPJLambdaWrapperX<FairAdmissionDO> wrapper = new MPJLambdaWrapperX<>();
-        wrapper.selectAll(FairAdmissionDO.class);
-        wrapper.selectAssociation(EnterpriseDO.class, FairAdmissionDetailRespVO::getEnterprise);
-        wrapper.selectAssociation(FairDO.class, FairAdmissionDetailRespVO::getJobFair);
-        wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, FairAdmissionDO::getEnterpriseId);
-        wrapper.innerJoin(FairDO.class, FairDO::getId, FairAdmissionDO::getJobFairId);
-        wrapper.eqIfPresent(FairAdmissionDO::getJobFairId, reqVO.getJobFairId());
-        wrapper.likeIfExists(EnterpriseDO::getName, reqVO.getName());
-        wrapper.eqIfPresent(FairAdmissionDO::getStatus, reqVO.getStatus());
-        return selectJoinPage(reqVO, FairAdmissionDetailRespVO.class, wrapper);
-    }
-
-    default int deduct(Long enterpriseId, Long jobFairId, Integer num) {
-        LambdaUpdateWrapper<FairAdmissionDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<FairAdmissionDO>()
-                .setSql("num = num - " + num)
-                .eq(FairAdmissionDO::getEnterpriseId, enterpriseId)
-                .eq(FairAdmissionDO::getJobFairId, jobFairId)
-                .ge(FairAdmissionDO::getNum, num); // cas 逻辑
-        return update(null, lambdaUpdateWrapper);
-    }
-
-    default int increase(Long enterpriseId, Long jobFairId, Integer num) {
-        LambdaUpdateWrapper<FairAdmissionDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<FairAdmissionDO>()
-                .setSql(" num = num + " + num)
-                .eq(FairAdmissionDO::getEnterpriseId, enterpriseId)
-                .eq(FairAdmissionDO::getJobFairId, jobFairId)
-                .ge(FairAdmissionDO::getNum, num);  // cas 逻辑
-        return update(null, lambdaUpdateWrapper);
-    }
-}

+ 28 - 8
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/fair/FairDetailMapper.java

@@ -15,11 +15,12 @@ import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.fair.FairDO;
 import com.citu.module.menduner.system.dal.dataobject.fair.FairDetailDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
-import com.citu.module.menduner.system.enums.fair.JobFairStatusEnum;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.util.StringUtils;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -35,11 +36,10 @@ public interface FairDetailMapper extends BaseMapperX<FairDetailDO> {
     IPage<AppFlameJobRespVO> search(Page<?> page, @Param("reqVO") AppFlameJobPageReqVO reqVO);
 
 
-    default List<FairDetailDO> selectByJobFairIdAndEnterpriseIdList(Long jobFairId, Long enterpriseId) {
+    default List<FairDetailDO> selectByEnterpriseIdAndJobFairIdList(Long jobFairId, Long enterpriseId) {
         return selectList(new LambdaQueryWrapperX<FairDetailDO>()
                 .eq(FairDetailDO::getJobFairId, jobFairId)
                 .eq(FairDetailDO::getEnterpriseId, enterpriseId)
-                .ne(FairDetailDO::getStatus, JobFairStatusEnum.REMOVE.getStatus())
         );
     }
 
@@ -50,7 +50,6 @@ public interface FairDetailMapper extends BaseMapperX<FairDetailDO> {
         query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, FairDetailDO::getEnterpriseId);
         query.eq(FairDetailDO::getJobFairId, jobFairId);
         query.eq(FairDetailDO::getEnterpriseId, enterpriseId);
-        query.eq(FairDetailDO::getStatus, JobFairStatusEnum.NORMAL.getStatus());
         return selectCount(query);
     }
 
@@ -87,7 +86,6 @@ public interface FairDetailMapper extends BaseMapperX<FairDetailDO> {
         query.eqIfExists(JobAdvertisedDO::getName, reqVO.getJobName());
 
         query.betweenIfPresent(FairDetailDO::getCreateTime, reqVO.getCreateTime());
-        query.eq(FairDetailDO::getStatus, JobFairStatusEnum.NORMAL.getStatus());
 
         query.orderByDesc(FairDetailDO::getCreateTime);
         return selectJoinPage(reqVO, JobFairDetailRespVO.class, query);
@@ -109,10 +107,12 @@ public interface FairDetailMapper extends BaseMapperX<FairDetailDO> {
                     .or()
                     .likeIfExists(EnterpriseDO::getAnotherName, reqVO.getKeyword()));
         }
-        query.eq(FairDetailDO::getStatus, JobFairStatusEnum.NORMAL.getStatus());
         if (null != reqVO.getIndustryId()) {
             query.in(EnterpriseDO::getIndustryId, reqVO.getIndustryId());
         }
+        if (null != reqVO.getEnterpriseId()) {
+            query.in(EnterpriseDO::getId, reqVO.getEnterpriseId());
+        }
         query.groupBy(FairDetailDO::getEnterpriseId);
         query.orderByDesc(EnterpriseDO::getVipFlag);
         return selectJoinPage(reqVO, JobFairEnterpriseRespVO.class, query);
@@ -123,7 +123,7 @@ public interface FairDetailMapper extends BaseMapperX<FairDetailDO> {
         MPJLambdaWrapperX<FairDetailDO> query = new MPJLambdaWrapperX<>();
         query.selectAs(FairDetailDO::getJobFairId, JobFairJobInfoRespVO::getJobFairId);
         query.selectAll(JobAdvertisedDO.class);
-        query.selectAssociation(EnterpriseDO.class,JobFairJobInfoRespVO::getEnterprise);
+        query.selectAssociation(EnterpriseDO.class, JobFairJobInfoRespVO::getEnterprise);
         query.innerJoin(FairDO.class, FairDO::getId, FairDetailDO::getJobFairId);
         query.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, FairDetailDO::getJobId);
         query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, FairDetailDO::getEnterpriseId);
@@ -135,7 +135,6 @@ public interface FairDetailMapper extends BaseMapperX<FairDetailDO> {
                     .or()
                     .likeIfExists(EnterpriseDO::getName, reqVO.getKeyword()));
         }
-        query.eq(FairDetailDO::getStatus, JobFairStatusEnum.NORMAL.getStatus());
         if (null != reqVO.getPositionId()) {
             query.in(JobAdvertisedDO::getPositionId, reqVO.getPositionId());
         }
@@ -145,4 +144,25 @@ public interface FairDetailMapper extends BaseMapperX<FairDetailDO> {
         return selectJoinPage(reqVO, JobFairJobInfoRespVO.class, query);
     }
 
+    /** 根据职位id查询职位加入了哪些招聘会id **/
+    default List<Long> selectJobFairIdsByJobId(Long jobId) {
+        MPJLambdaWrapperX<FairDetailDO> query = new MPJLambdaWrapperX<>();
+        query.select(FairDetailDO::getJobFairId);
+        // 关联招聘会表,过滤不在开始时间和结束时间内的
+        query.innerJoin(FairDO.class, FairDO::getId, FairDetailDO::getJobFairId);
+        query.ge(FairDO::getEndTime, LocalDateTime.now());
+        query.eq(FairDetailDO::getJobId, jobId);
+        query.eq(FairDO::getStatus, MendunerStatusEnum.ENABLE.getStatus());
+        return selectJoinList(Long.class,query);
+    }
+
+    default List<Long> selectJobIdsByEnterpriseIdAndJobFairId(Long enterpriseId, Long jobFairId) {
+        MPJLambdaWrapperX<FairDetailDO> query = new MPJLambdaWrapperX<>();
+        query.select(FairDetailDO::getJobId);
+        query.innerJoin(JobAdvertisedDO.class, JobAdvertisedDO::getId, FairDetailDO::getJobId);
+        query.eq(FairDetailDO::getEnterpriseId, enterpriseId);
+        query.eq(FairDetailDO::getJobFairId, jobFairId);
+        return selectJoinList(Long.class,query);
+
+    }
 }

+ 22 - 18
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/fair/FairWhiteMapper.java

@@ -1,19 +1,16 @@
 package com.citu.module.menduner.system.dal.mysql.fair;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
-import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
-import com.citu.module.menduner.system.controller.base.fair.FairWhiteDetailRespVO;
-import com.citu.module.menduner.system.controller.base.fair.FairWhitePageReqVO;
-import com.citu.module.menduner.system.controller.base.userperson.UserPersonRespVO;
+import com.citu.module.menduner.system.controller.base.fair.white.FairWhiteDetailRespVO;
+import com.citu.module.menduner.system.controller.base.fair.white.FairWhitePageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.fair.FairDO;
 import com.citu.module.menduner.system.dal.dataobject.fair.FairWhiteDO;
 import org.apache.ibatis.annotations.Mapper;
 
-import java.util.List;
-
 /**
  * 招聘会企业白名单 Mapper
  *
@@ -22,20 +19,10 @@ import java.util.List;
 @Mapper
 public interface FairWhiteMapper extends BaseMapperX<FairWhiteDO> {
 
-    default FairWhiteDO selectByJobFairIdAndEnterpriseId(Long jobFairId, Long enterpriseId) {
-        return selectOne(FairWhiteDO::getJobFairId, jobFairId, FairWhiteDO::getEnterpriseId, enterpriseId);
+    default FairWhiteDO selectByEnterpriseIdAndJobFairId(Long enterpriseId, Long jobFairId) {
+        return selectOne(FairWhiteDO::getEnterpriseId, enterpriseId, FairWhiteDO::getJobFairId, jobFairId);
     }
 
-    default List<FairWhiteDO> selectByJobFairIdAndEnterpriseNameList(Long jobFairId, String name) {
-        return selectList(new LambdaQueryWrapperX<FairWhiteDO>()
-                .eq(FairWhiteDO::getJobFairId, jobFairId)
-                .eq(FairWhiteDO::getName, name)
-        );
-    }
-
-    default List<FairWhiteDO> selectByJobFairIdList(Long jobFairId) {
-        return selectList(FairWhiteDO::getJobFairId, jobFairId);
-    }
 
     default PageResult<FairWhiteDetailRespVO> selectPage(FairWhitePageReqVO reqVO) {
         MPJLambdaWrapperX<FairWhiteDO> wrapper = new MPJLambdaWrapperX<>();
@@ -48,4 +35,21 @@ public interface FairWhiteMapper extends BaseMapperX<FairWhiteDO> {
         wrapper.likeIfExists(EnterpriseDO::getName, reqVO.getName());
         return selectJoinPage(reqVO, FairWhiteDetailRespVO.class, wrapper);
     }
+
+    default int deduct(Long enterpriseId, Long jobFairId, Integer num) {
+        LambdaUpdateWrapper<FairWhiteDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<FairWhiteDO>()
+                .setSql("num = num - " + num)
+                .eq(FairWhiteDO::getEnterpriseId, enterpriseId)
+                .eq(FairWhiteDO::getJobFairId, jobFairId)
+                .ge(FairWhiteDO::getNum, num); // cas 逻辑
+        return update(null, lambdaUpdateWrapper);
+    }
+
+    default int increase(Long enterpriseId, Long jobFairId, Integer num) {
+        LambdaUpdateWrapper<FairWhiteDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<FairWhiteDO>()
+                .setSql(" num = num + " + num)
+                .eq(FairWhiteDO::getEnterpriseId, enterpriseId)
+                .eq(FairWhiteDO::getJobFairId, jobFairId);
+        return update(null, lambdaUpdateWrapper);
+    }
 }

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

@@ -297,10 +297,11 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
                 .eqIfPresent(JobAdvertisedDO::getHire, reqVO.getHire())
                 .betweenIfPresent(JobAdvertisedDO::getCreateTime, reqVO.getCreateTime());
 
-
+        query.notIn(CollUtil.isNotEmpty(reqVO.getFilterNotJobIds()),JobAdvertisedDO::getId, reqVO.getFilterNotJobIds());
         query.eq(JobAdvertisedDO::getEnterpriseId, enterpriseId);
         query.eq(JobAdvertisedDO::getUserId, userId);
 
+
         if (reqVO.isHasExpiredData()) {
             // 获取过期的数据 当前时间小于过期时间
             query.le(JobAdvertisedDO::getExpireTime, LocalDateTime.now());
@@ -478,6 +479,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
                 .betweenIfPresent(JobAdvertisedDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(JobAdvertisedDO::getTop, JobAdvertisedDO::getUpdateTime);
 
+        query.notIn(CollUtil.isNotEmpty(reqVO.getFilterNotJobIds()),JobAdvertisedDO::getId, reqVO.getFilterNotJobIds());
         query.eq(JobAdvertisedDO::getEnterpriseId, enterpriseId);
         query.eq(JobAdvertisedDO::getUserId, userId);
 

+ 16 - 12
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/FairAdmissionConsumer.java

@@ -1,11 +1,12 @@
 package com.citu.module.menduner.system.mq.consumer;
 
-import com.citu.module.menduner.system.dal.dataobject.fair.FairAdmissionDO;
 import com.citu.module.menduner.system.dal.dataobject.fair.FairDO;
+import com.citu.module.menduner.system.dal.dataobject.fair.FairWhiteDO;
 import com.citu.module.menduner.system.dal.dataobject.order.TradeOrderDO;
-import com.citu.module.menduner.system.dal.mysql.fair.FairAdmissionMapper;
-import com.citu.module.menduner.system.dal.mysql.fair.FairMapper;
+import com.citu.module.menduner.system.dal.mysql.fair.FairWhiteMapper;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.enums.TradeOrderTypeMq;
+import com.citu.module.menduner.system.enums.fair.JobFairWhiteSourceEnum;
 import com.citu.module.menduner.system.service.fair.FairService;
 import com.citu.module.menduner.system.service.order.TradeOrderService;
 import lombok.extern.slf4j.Slf4j;
@@ -34,7 +35,7 @@ public class FairAdmissionConsumer implements RocketMQListener<Long> {
     private FairService fairService;
 
     @Resource
-    private FairAdmissionMapper fairAdmissionMapper;
+    private FairWhiteMapper fairWhiteMapper;
 
     @Override
     public void onMessage(Long orderId) {
@@ -50,22 +51,25 @@ public class FairAdmissionConsumer implements RocketMQListener<Long> {
             log.error("找不到招聘会信息[{}]", order.getSpuId());
             return;
         }
-        FairAdmissionDO fairAdmission =
-                fairAdmissionMapper.selectByEnterpriseIdAndJobFairId(order.getEnterpriseId(), fair.getId());
-        if(null == fairAdmission) {
+        FairWhiteDO fairWhite =
+                fairWhiteMapper.selectByEnterpriseIdAndJobFairId(order.getEnterpriseId(), fair.getId());
+        if (null == fairWhite) {
             // 保存
-            fairAdmissionMapper.insert(FairAdmissionDO.builder()
+            fairWhiteMapper.insert(FairWhiteDO.builder()
+                    .source(JobFairWhiteSourceEnum.TICKET.getSource())
+                    .first(false)
                     .userId(order.getUserId())
                     .enterpriseId(order.getEnterpriseId())
                     .jobFairId(fair.getId())
                     .originNum(fair.getAllowedJobNum())
                     .num(fair.getAllowedJobNum())
+                    .admissionStatus(MendunerStatusEnum.ENABLE.getStatus())
                     .build()
             );
-        }else {
-            fairAdmission.setOriginNum(fairAdmission.getOriginNum() + fair.getAllowedJobNum());
-            fairAdmission.setNum(fairAdmission.getNum() + fair.getAllowedJobNum());
-            fairAdmissionMapper.updateById(fairAdmission);
+        } else {
+            fairWhite.setOriginNum(fairWhite.getOriginNum() + fair.getAllowedJobNum());
+            fairWhite.setNum(fairWhite.getNum() + fair.getAllowedJobNum());
+            fairWhiteMapper.updateById(fairWhite);
         }
         log.info(stopWatch.prettyPrint());
     }

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprisejob/EnterpriseJobServiceImpl.java

@@ -14,6 +14,7 @@ import com.citu.module.menduner.system.convert.EnterpriseConvert;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
+import com.citu.module.menduner.system.dal.mysql.fair.FairDetailMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.enums.DictTypeConstants;
 import com.citu.module.menduner.system.service.area.AreaService;
@@ -49,6 +50,8 @@ public class EnterpriseJobServiceImpl implements EnterpriseJobService {
     @Resource
     private AreaService areaService;
 
+    @Resource
+    private FairDetailMapper fairDetailMapper;
 
     @Resource
     private IndustryService industryService;
@@ -98,6 +101,9 @@ public class EnterpriseJobServiceImpl implements EnterpriseJobService {
             respVO.setArea(areaService.getById(job.getAreaId()));
         }
 
+        // 查询当前职位加入哪些招聘会
+        respVO.setJobFairIds(fairDetailMapper.selectJobFairIdsByJobId(respVO.getId()));
+
         // 查询联系人信息
         EnterpriseUserContactRespVO contactRespVO = userBindService.
                 getContact(enterprise.getId(), respVO.getUserId());

+ 0 - 78
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairAdmissionService.java

@@ -1,78 +0,0 @@
-package com.citu.module.menduner.system.service.fair;
-
-
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionDetailRespVO;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionPageReqVO;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.fair.FairAdmissionDO;
-
-import javax.validation.Valid;
-
-/**
- * 招聘会门票权益 Service 接口
- *
- * @author Rayson
- */
-public interface FairAdmissionService {
-
-    /**
-     * 创建招聘会门票权益
-     *
-     * @param createReqVO 创建信息
-     * @return 编号
-     */
-    Long createFairAdmission(@Valid FairAdmissionSaveReqVO createReqVO);
-
-    /**
-     * 更新招聘会门票权益
-     *
-     * @param updateReqVO 更新信息
-     */
-    void updateFairAdmission(@Valid FairAdmissionSaveReqVO updateReqVO);
-
-    /**
-     * 删除招聘会门票权益
-     *
-     * @param id 编号
-     */
-    void deleteFairAdmission(Long id);
-
-    /**
-     * 获得招聘会门票权益
-     *
-     * @param id 编号
-     * @return 招聘会门票权益
-     */
-    FairAdmissionDO getFairAdmission(Long id);
-
-    /**
-     * 招聘会门票查询
-     **/
-    FairAdmissionDO get(Long enterpriseId,Long jobFairId);
-
-    /**
-     * 招聘会门票分页查询
-     **/
-    PageResult<FairAdmissionDetailRespVO> getFairAdmissionPage(FairAdmissionPageReqVO reqVO);
-
-    /**
-     * 更改招聘会门票状态
-     **/
-    void updateAdmissionStatus(String id,String status);
-
-    /**
-     * 校验招聘会门票权益
-     **/
-    void checkAdmission(FairAdmissionDO fairAdmission);
-
-    /**
-     * 扣除: 招聘会门票权益的可发布职位的数量
-     **/
-    void deductAdmissionNum(Long enterpriseId, Long jobFairId);
-
-    /**
-     * 增加: 招聘会门票权益的可发布职位的数量
-     **/
-    void increaseAdmissionNum(Long enterpriseId, Long jobFairId);
-}

+ 0 - 116
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairAdmissionServiceImpl.java

@@ -1,116 +0,0 @@
-package com.citu.module.menduner.system.service.fair;
-
-
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.util.object.BeanUtils;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionDetailRespVO;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionPageReqVO;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.fair.FairAdmissionDO;
-import com.citu.module.menduner.system.dal.mysql.fair.FairAdmissionMapper;
-import com.citu.module.menduner.system.enums.MendunerStatusEnum;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import javax.annotation.Resource;
-
-import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
-
-/**
- * 招聘会门票权益 Service 实现类
- *
- * @author Rayson
- */
-@Service
-@Validated
-public class FairAdmissionServiceImpl implements FairAdmissionService {
-
-    @Resource
-    private FairAdmissionMapper fairAdmissionMapper;
-
-    @Override
-    public Long createFairAdmission(FairAdmissionSaveReqVO createReqVO) {
-        // 插入
-        FairAdmissionDO fairAdmission = BeanUtils.toBean(createReqVO, FairAdmissionDO.class);
-        fairAdmissionMapper.insert(fairAdmission);
-        // 返回
-        return fairAdmission.getId();
-    }
-
-    @Override
-    public void updateFairAdmission(FairAdmissionSaveReqVO updateReqVO) {
-        // 校验存在
-        validateFairAdmissionExists(updateReqVO.getId());
-        // 更新
-        FairAdmissionDO updateObj = BeanUtils.toBean(updateReqVO, FairAdmissionDO.class);
-        fairAdmissionMapper.updateById(updateObj);
-    }
-
-    @Override
-    public void deleteFairAdmission(Long id) {
-        // 校验存在
-        validateFairAdmissionExists(id);
-        // 删除
-        fairAdmissionMapper.deleteById(id);
-    }
-
-    private void validateFairAdmissionExists(Long id) {
-        if (fairAdmissionMapper.selectById(id) == null) {
-            throw exception(JOB_FAIR_ADMISSION_NOT_EXISTS);
-        }
-    }
-
-    @Override
-    public FairAdmissionDO getFairAdmission(Long id) {
-        return fairAdmissionMapper.selectById(id);
-    }
-
-    @Override
-    public FairAdmissionDO get(Long enterpriseId, Long jobFairId) {
-        return fairAdmissionMapper.selectByEnterpriseIdAndJobFairId(enterpriseId, jobFairId);
-    }
-
-    @Override
-    public PageResult<FairAdmissionDetailRespVO> getFairAdmissionPage(FairAdmissionPageReqVO reqVO) {
-        return fairAdmissionMapper.selectPageRetResp(reqVO);
-    }
-
-    @Override
-    public void updateAdmissionStatus(String id, String status) {
-        FairAdmissionDO admission = fairAdmissionMapper.selectById(id);
-        if (null == admission) {
-            return;
-        }
-        fairAdmissionMapper.update(admission, new LambdaUpdateWrapper<FairAdmissionDO>()
-                .eq(FairAdmissionDO::getId, id)
-                .set(FairAdmissionDO::getStatus, status)
-        );
-    }
-
-    @Override
-    public void checkAdmission(FairAdmissionDO fairAdmission) {
-        if (null == fairAdmission) {
-            return;
-        }
-        if (fairAdmission.getNum() - 1 < 0) {
-            throw exception(JOB_FAIR_NO_PERMISSION);
-        }
-        if ((MendunerStatusEnum.DISABLE.getStatus().equals(fairAdmission.getStatus()))) {
-            throw exception(JOB_FAIR_ADMISSION_STATUS_DISABLE);
-        }
-    }
-
-    @Override
-    public void deductAdmissionNum(Long enterpriseId, Long jobFairId) {
-        FairAdmissionDO fairAdmission = get(enterpriseId, jobFairId);
-        checkAdmission(fairAdmission);
-        fairAdmissionMapper.deduct(enterpriseId, jobFairId, 1);
-    }
-
-    @Override
-    public void increaseAdmissionNum(Long enterpriseId, Long jobFairId) {
-        fairAdmissionMapper.increase(enterpriseId, jobFairId, 1);
-    }
-}

+ 7 - 27
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairService.java

@@ -6,11 +6,7 @@ import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobP
 import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.joinJobFairReqVO;
 import com.citu.module.menduner.system.controller.base.fair.*;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionDetailRespVO;
-import com.citu.module.menduner.system.controller.base.fair.admission.FairAdmissionPageReqVO;
-import com.citu.module.menduner.system.dal.dataobject.fair.FairAdmissionDO;
 import com.citu.module.menduner.system.dal.dataobject.fair.FairDO;
-import com.citu.module.menduner.system.dal.dataobject.fair.FairWhiteDO;
 
 import javax.validation.Valid;
 import java.util.List;
@@ -100,35 +96,14 @@ public interface FairService {
      **/
     List<Long> getJobIdListByJobFairIdAndEnterpriseId(Long jobFairId, Long enterpriseId);
 
-    /**
-     * 添加白名单
-     **/
-    void addWhiteList(Long jobFairId, List<Long> enterpriseIds);
-
-    /**
-     * 移除白名单
-     **/
-    void removeWhiteList(Long jobFairId, List<Long> enterpriseIds);
-
-    /**
-     * 获取白名单企业,返回企业id
-     **/
-    PageResult<FairWhiteDetailRespVO> page(FairWhitePageReqVO reqVO);
-
-    /**
-     * 效验是否有招聘会权限
-     **/
-    void checkFairWhite(Long jobFairId);
-
     /**
      * 同步职位到招聘会
      **/
-    void syncJob(Long jobFairId);
+    void syncJob(Long enterpriseId, Long jobFairId);
 
 
     PageResult<JobFairDetailRespVO> getJobFairDetailPage(JobFairDetailPageReqVO reqVO);
 
-
     /**
      * 招聘会企业分页查询
      **/
@@ -140,9 +115,14 @@ public interface FairService {
      **/
     PageResult<JobFairJobInfoRespVO> getJobFairJobInfoPage(JobFairJobInfoPageReqVO reqVO);
 
-
     /**
      * 招聘会门票设置
      **/
     void updateAdmission(JobFairAdmissionReqVO reqVO);
+
+
+    /**
+     * 根据招聘会id和企业id获取参加招聘会的职位,返回id集合
+     **/
+    List<Long> getJobIdsByEnterpriseIdAndJobFairId(Long enterpriseId, Long jobFairId);
 }

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

@@ -17,9 +17,7 @@ import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobR
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.joinJobFairReqVO;
 import com.citu.module.menduner.system.controller.base.fair.*;
 import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
-import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseEntitlementDO;
-import com.citu.module.menduner.system.dal.dataobject.fair.FairAdmissionDO;
 import com.citu.module.menduner.system.dal.dataobject.fair.FairDO;
 import com.citu.module.menduner.system.dal.dataobject.fair.FairDetailDO;
 import com.citu.module.menduner.system.dal.dataobject.fair.FairWhiteDO;
@@ -27,16 +25,12 @@ import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.dataobject.major.MajorDO;
 import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseEntitlementMapper;
-import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
-import com.citu.module.menduner.system.dal.mysql.fair.FairAdmissionMapper;
 import com.citu.module.menduner.system.dal.mysql.fair.FairDetailMapper;
 import com.citu.module.menduner.system.dal.mysql.fair.FairMapper;
-import com.citu.module.menduner.system.dal.mysql.fair.FairWhiteMapper;
 import com.citu.module.menduner.system.dal.mysql.major.MajorMapper;
 import com.citu.module.menduner.system.dal.mysql.position.PositionMapper;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
-import com.citu.module.menduner.system.enums.fair.JobFairStatusEnum;
-import com.citu.module.menduner.system.enums.job.JobSourceEnum;
+import com.citu.module.menduner.system.enums.fair.JobFairWhiteSourceEnum;
 import com.citu.module.menduner.system.enums.job.JobTypeEnum;
 import com.citu.module.menduner.system.service.area.AreaService;
 import com.citu.module.menduner.system.service.industry.IndustryService;
@@ -48,6 +42,7 @@ import org.springframework.validation.annotation.Validated;
 import javax.annotation.Resource;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -73,10 +68,7 @@ public class FairServiceImpl implements FairService {
     private FairDetailMapper fairDetailMapper;
 
     @Resource
-    private FairWhiteMapper fairWhiteMapper;
-
-    @Resource
-    private FairAdmissionService fairAdmissionService;
+    private FairWhiteService fairWhiteService;
 
     @Resource
     private AreaService areaService;
@@ -90,9 +82,6 @@ public class FairServiceImpl implements FairService {
     @Resource
     private IndustryService industryService;
 
-    @Resource
-    private EnterpriseMapper enterpriseMapper;
-
     @Resource
     private JobAdvertisedService jobAdvertisedService;
 
@@ -112,7 +101,7 @@ public class FairServiceImpl implements FairService {
                 .map(EnterpriseEntitlementDO::getEnterpriseId).collect(Collectors.toList());
         if (CollUtil.isNotEmpty(enterpriseIdList)) {
             // 加入白名单
-            addWhiteList(jobFair.getId(), enterpriseIdList);
+            fairWhiteService.addWhiteList(jobFair.getId(), enterpriseIdList);
         }
 
         return jobFair.getId();
@@ -181,41 +170,6 @@ public class FairServiceImpl implements FairService {
         );
     }
 
-    @Override
-    public void checkFairWhite(Long jobFairId) {
-        EnterpriseDO enterpriseDO = enterpriseMapper.selectById(LoginUserContext.getEnterpriseId());
-//        FairWhiteDO fairWhiteDO = fairWhiteMapper
-//                .selectByJobFairIdAndEnterpriseId(jobFairId, LoginUserContext.getEnterpriseId());
-        FairWhiteDO white = fairWhiteMapper
-                .selectByJobFairIdAndEnterpriseId(jobFairId, enterpriseDO.getId());
-        if (null == white) {
-            FairAdmissionDO fairAdmission =
-                    fairAdmissionService.get(enterpriseDO.getId(), jobFairId);
-            if (null == fairAdmission) {
-                throw exception(JOB_FAIR_NO_PERMISSION);
-            }
-            fairAdmissionService.checkAdmission(fairAdmission);
-
-        }
-
-    }
-
-    @Override
-    @DSTransactional
-    public void quitJobFair(joinJobFairReqVO reqVO) {
-        checkFairWhite(reqVO.getJobFairId());
-        FairDetailDO detailDO = fairDetailMapper
-                .selectOne(
-                        FairDetailDO::getJobFairId, reqVO.getJobFairId(),
-                        FairDetailDO::getEnterpriseId, LoginUserContext.getEnterpriseId(),
-                        FairDetailDO::getJobId, reqVO.getJobId());
-        if (null == detailDO) {
-            // 不在招聘会里面
-            return;
-        }
-        detailDO.setStatus(JobFairStatusEnum.REMOVE.getStatus());
-        fairDetailMapper.updateById(detailDO);
-    }
 
     @Override
     @DSTransactional
@@ -228,8 +182,6 @@ public class FairServiceImpl implements FairService {
 //            }
             fairDO.setStatus(MendunerStatusEnum.ENABLE.getStatus());
             fairMapper.updateById(fairDO);
-            // 关闭由招聘会创建的职位
-            jobAdvertisedService.enableJobAdvertised(JobSourceEnum.FAIR.getType(), fairDO.getId());
         }
     }
 
@@ -244,45 +196,80 @@ public class FairServiceImpl implements FairService {
 //            }
             fairDO.setStatus(MendunerStatusEnum.DISABLE.getStatus());
             fairMapper.updateById(fairDO);
-            // 关闭由招聘会创建的职位
-            jobAdvertisedService.closeJobAdvertised(JobSourceEnum.FAIR.getType(), fairDO.getId());
-            //TODO 招聘会与职位的关联
         }
     }
 
     @Override
     @DSTransactional
-    public void syncJob(Long jobFairId) {
-        EnterpriseDO enterpriseDO = enterpriseMapper.selectById(LoginUserContext.getEnterpriseId());
+    public void syncJob(Long enterpriseId, Long jobFairId) {
         //  将职位都放到招聘会里面
         List<JobAdvertisedDO> jobAdvertisedList = jobAdvertisedService.getListByEnterpriseIdAndType
-                (enterpriseDO.getId(), List.of(JobTypeEnum.FULL_TIME.getType(), JobTypeEnum.INTERNSHIP.getType()));
-        jobAdvertisedList.forEach(job -> {
-            insertFairJob(jobFairId, job.getId(), true);
-        });
+                (enterpriseId, List.of(JobTypeEnum.FULL_TIME.getType(), JobTypeEnum.INTERNSHIP.getType()));
+        FairWhiteDO fairWhite =
+                fairWhiteService.get(enterpriseId, jobFairId);
+        if (null == fairWhite) {
+            return;
+        }
+        if (JobFairWhiteSourceEnum.ADMIN.getSource().equals(fairWhite.getSource())) {
+            if (null == fairWhite.getNum()) {
+                // 没有次数不同步
+                return;
+            }
+            // 购买门票
+            List<JobAdvertisedDO> latestNRecords = jobAdvertisedList.stream()
+                    .sorted(Comparator.comparing(JobAdvertisedDO::getUpdateTime).reversed())
+                    .limit(fairWhite.getNum())
+                    .collect(Collectors.toList());
+            latestNRecords.forEach(job -> {
+                insertFairJob(jobFairId, job.getId());
+            });
+        } else {
+            // 不是购买门票
+            jobAdvertisedList.forEach(job -> {
+                insertFairJob(jobFairId, job.getId());
+            });
+        }
+        fairWhiteService.markFirstEnterFair(enterpriseId, jobFairId);
     }
 
     @Override
     @DSTransactional
     public void joinJobFair(joinJobFairReqVO reqVO) {
-        checkFairWhite(reqVO.getJobFairId());
-        insertFairJob(reqVO.getJobFairId(), reqVO.getJobId(), false);
+        insertFairJob(reqVO.getJobFairId(), reqVO.getJobId());
+    }
+
+    @Override
+    @DSTransactional
+    public void quitJobFair(joinJobFairReqVO reqVO) {
+        FairDetailDO detailDO = fairDetailMapper
+                .selectOne(
+                        FairDetailDO::getJobFairId, reqVO.getJobFairId(),
+                        FairDetailDO::getEnterpriseId, LoginUserContext.getEnterpriseId(),
+                        FairDetailDO::getJobId, reqVO.getJobId());
+        if (null == detailDO) {
+            // 不在招聘会里面
+            return;
+        }
+        fairDetailMapper.deleteById(detailDO.getId());
+
+        // 购买门票的企业, 增加发布职位的数量
+        fairWhiteService.increaseAdmissionNum(LoginUserContext.getEnterpriseId(), reqVO.getJobFairId());
+
     }
 
     @DSTransactional
-    public void insertFairJob(Long jobFairId, Long jobId, boolean sync) {
+    public void insertFairJob(Long jobFairId, Long jobId) {
         FairDetailDO detailDO = fairDetailMapper
                 .selectOne(
                         FairDetailDO::getJobFairId, jobFairId,
                         FairDetailDO::getEnterpriseId, LoginUserContext.getEnterpriseId(),
                         FairDetailDO::getJobId, jobId);
-        if (sync) {
-            // 同步数据,存在数据则不同步,同步过不在同步
-            if (null != detailDO) {
-                // 已经加入
-                return;
-            }
+
+        if (null != detailDO) {
+            // 已经加入
+            return;
         }
+
         //  sync=true 新增数据会出现,移除后,然后重新新增,所以需要走下面逻辑
         FairDO fairDO = getJobFair(jobFairId);
         checkJobFairExpired(fairDO);
@@ -291,20 +278,17 @@ public class FairServiceImpl implements FairService {
             // 效验是否符合会员要求
             // 不符合抛出异常提示
         }
-        if (null == detailDO) {
-            // 新增数据
-            FairDetailDO detail = FairDetailDO.builder()
-                    .jobFairId(fairDO.getId())
-                    .enterpriseId(LoginUserContext.getEnterpriseId())
-                    .jobId(jobId)
-                    .status(JobFairStatusEnum.NORMAL.getStatus())
-                    .build();
-            fairDetailMapper.insert(detail);
-        } else {
-            // 修改为正常状态
-            detailDO.setStatus(JobFairStatusEnum.NORMAL.getStatus());
-            fairDetailMapper.updateById(detailDO);
-        }
+
+        // 新增数据
+        FairDetailDO detail = FairDetailDO.builder()
+                .jobFairId(fairDO.getId())
+                .enterpriseId(LoginUserContext.getEnterpriseId())
+                .jobId(jobId)
+                .build();
+        fairDetailMapper.insert(detail);
+
+        // 扣除额度
+        fairWhiteService.deductAdmissionNum(LoginUserContext.getEnterpriseId(), fairDO.getId());
     }
 
     @Override
@@ -354,51 +338,12 @@ public class FairServiceImpl implements FairService {
 
     @Override
     public List<Long> getJobIdListByJobFairIdAndEnterpriseId(Long jobFairId, Long enterpriseId) {
-        return fairDetailMapper.selectByJobFairIdAndEnterpriseIdList(jobFairId, enterpriseId)
+        return fairDetailMapper.selectByEnterpriseIdAndJobFairIdList(jobFairId, enterpriseId)
                 .stream()
                 .map(FairDetailDO::getJobId)
                 .collect(Collectors.toList());
     }
 
-    @Override
-    @DSTransactional
-    public void addWhiteList(Long jobFairId, List<Long> enterpriseIds) {
-        for (Long enterpriseId : enterpriseIds) {
-            FairWhiteDO fairWhiteDO = fairWhiteMapper.selectByJobFairIdAndEnterpriseId(jobFairId, enterpriseId);
-            if (null != fairWhiteDO) {
-                return;
-            }
-            fairWhiteMapper.insert(FairWhiteDO.builder()
-                    .jobFairId(jobFairId)
-                    .enterpriseId(enterpriseId)
-                    .build());
-        }
-    }
-
-    @Override
-    @DSTransactional
-    public void removeWhiteList(Long jobFairId, List<Long> enterpriseIds) {
-        for (Long enterpriseId : enterpriseIds) {
-            FairWhiteDO fairWhiteDO = fairWhiteMapper.selectByJobFairIdAndEnterpriseId(jobFairId, enterpriseId);
-            if (null == fairWhiteDO) {
-                return;
-            }
-            fairWhiteMapper.deleteById(fairWhiteDO.getId());
-
-            // 删除该企业招聘会发布的职位
-            fairDetailMapper.update(new LambdaUpdateWrapper<FairDetailDO>()
-                    .eq(FairDetailDO::getJobFairId, fairWhiteDO.getJobFairId())
-                    .eq(FairDetailDO::getEnterpriseId, enterpriseId)
-                    .set(FairDetailDO::getStatus, JobFairStatusEnum.REMOVE.getStatus())
-            );
-
-        }
-    }
-
-    @Override
-    public PageResult<FairWhiteDetailRespVO> page(FairWhitePageReqVO reqVO) {
-        return fairWhiteMapper.selectPage(reqVO);
-    }
 
     @Override
     public PageResult<JobFairDetailRespVO> getJobFairDetailPage(JobFairDetailPageReqVO reqVO) {
@@ -425,6 +370,7 @@ public class FairServiceImpl implements FairService {
             if (null != item.getAreaId()) {
                 item.setArea(areaService.getById(item.getAreaId()));
             }
+
         });
         return result;
     }
@@ -439,4 +385,8 @@ public class FairServiceImpl implements FairService {
         );
     }
 
+    @Override
+    public List<Long> getJobIdsByEnterpriseIdAndJobFairId(Long enterpriseId, Long jobFairId) {
+        return fairDetailMapper.selectJobIdsByEnterpriseIdAndJobFairId(enterpriseId, jobFairId);
+    }
 }

+ 69 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairWhiteService.java

@@ -0,0 +1,69 @@
+package com.citu.module.menduner.system.service.fair;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.base.fair.white.FairWhiteDetailRespVO;
+import com.citu.module.menduner.system.controller.base.fair.white.FairWhitePageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.fair.FairWhiteDO;
+
+import java.util.List;
+
+/**
+ * 招聘会白名单 Service 接口
+ *
+ * @author Rayson
+ */
+public interface FairWhiteService {
+
+    /**
+     * 招聘会白名单分页查询
+     **/
+    PageResult<FairWhiteDetailRespVO> selectPage(FairWhitePageReqVO reqVO);
+
+    /**
+     * 添加白名单
+     **/
+    void addWhiteList(Long jobFairId, List<Long> enterpriseIds);
+
+    /**
+     * 移除白名单
+     **/
+    void removeWhiteList(Long jobFairId, List<Long> enterpriseIds);
+
+    /**
+     * 效验是否有招聘会权限
+     **/
+    void checkFairWhite(Long enterpriseId,Long jobFairId);
+
+    /**
+     * 效验是否首次进入招聘会
+     **/
+    boolean checkFirstEnterFair(Long enterpriseId,Long jobFairId);
+
+    /**
+     * 招聘会门票查询
+     **/
+    FairWhiteDO get(Long enterpriseId, Long jobFairId);
+
+    /**
+     * 更改招聘会门票状态
+     **/
+    void updateAdmissionStatus(String id, String status);
+
+    /**
+     * 校验招聘会门票权益
+     **/
+    void checkAdmission(FairWhiteDO req);
+
+    /**
+     * 扣除: 招聘会门票权益的可发布职位的数量
+     **/
+    void deductAdmissionNum(Long enterpriseId, Long jobFairId);
+
+    /**
+     * 增加: 招聘会门票权益的可发布职位的数量
+     **/
+    void increaseAdmissionNum(Long enterpriseId, Long jobFairId);
+
+    /** 标记为不是首次进入 **/
+    void markFirstEnterFair(Long enterpriseId, Long jobFairId);
+}

+ 159 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairWhiteServiceImpl.java

@@ -0,0 +1,159 @@
+package com.citu.module.menduner.system.service.fair;
+
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.base.fair.white.FairWhiteDetailRespVO;
+import com.citu.module.menduner.system.controller.base.fair.white.FairWhitePageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.fair.FairDetailDO;
+import com.citu.module.menduner.system.dal.dataobject.fair.FairWhiteDO;
+import com.citu.module.menduner.system.dal.mysql.fair.FairDetailMapper;
+import com.citu.module.menduner.system.dal.mysql.fair.FairWhiteMapper;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import com.citu.module.menduner.system.enums.fair.JobFairWhiteSourceEnum;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
+
+/**
+ * 招聘会白名单 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class FairWhiteServiceImpl implements FairWhiteService {
+
+    @Resource
+    private FairWhiteMapper mapper;
+
+    @Resource
+    @Lazy
+    private FairDetailMapper fairDetailMapper;
+
+    @Override
+    public PageResult<FairWhiteDetailRespVO> selectPage(FairWhitePageReqVO reqVO) {
+        return mapper.selectPage(reqVO);
+    }
+
+    @Override
+    @DSTransactional
+    public void addWhiteList(Long jobFairId, List<Long> enterpriseIds) {
+        for (Long enterpriseId : enterpriseIds) {
+            FairWhiteDO fairWhiteDO = get(enterpriseId, jobFairId);
+            if (null != fairWhiteDO) {
+                return;
+            }
+            mapper.insert(FairWhiteDO.builder()
+                    .source(JobFairWhiteSourceEnum.ADMIN.getSource())
+                    .jobFairId(jobFairId)
+                    .enterpriseId(enterpriseId)
+                    .first(false)
+                    .build());
+        }
+    }
+
+    @Override
+    @DSTransactional
+    public void removeWhiteList(Long jobFairId, List<Long> enterpriseIds) {
+        for (Long enterpriseId : enterpriseIds) {
+            FairWhiteDO fairWhiteDO = get(enterpriseId, jobFairId);
+            if (null == fairWhiteDO) {
+                return;
+            }
+            mapper.deleteById(fairWhiteDO.getId());
+
+            // 删除该企业招聘会发布的职位
+            fairDetailMapper.delete(new LambdaQueryWrapper<FairDetailDO>()
+                    .eq(FairDetailDO::getJobFairId, fairWhiteDO.getJobFairId())
+                    .eq(FairDetailDO::getEnterpriseId, enterpriseId)
+            );
+        }
+    }
+
+    @Override
+    public void checkFairWhite(Long enterpriseId, Long jobFairId) {
+        FairWhiteDO fairAdmission = get(enterpriseId, jobFairId);
+        if (null == fairAdmission) {
+            throw exception(JOB_FAIR_NO_PERMISSION);
+        }
+        checkAdmission(fairAdmission);
+    }
+
+    @Override
+    public boolean checkFirstEnterFair(Long enterpriseId, Long jobFairId) {
+        FairWhiteDO white = get(enterpriseId, jobFairId);
+        if (null == white) {
+            return true;
+        }
+        return white.getFirst();
+    }
+
+    @Override
+    public FairWhiteDO get(Long enterpriseId, Long jobFairId) {
+        return mapper.selectByEnterpriseIdAndJobFairId(enterpriseId, jobFairId);
+    }
+
+    @Override
+    public void updateAdmissionStatus(String id, String status) {
+        FairWhiteDO fairWhite = mapper.selectById(id);
+        if (null == fairWhite) {
+            return;
+        }
+        mapper.update(fairWhite, new LambdaUpdateWrapper<FairWhiteDO>()
+                .eq(FairWhiteDO::getId, id)
+                .set(FairWhiteDO::getAdmissionStatus, status)
+        );
+    }
+
+    @Override
+    public void checkAdmission(FairWhiteDO req) {
+        if (null == req || null == req.getNum()) {
+            return;
+        }
+        if ((MendunerStatusEnum.DISABLE.getStatus().equals(req.getAdmissionStatus()))) {
+            throw exception(JOB_FAIR_ADMISSION_STATUS_DISABLE);
+        }
+    }
+
+    @Override
+    public void deductAdmissionNum(Long enterpriseId, Long jobFairId) {
+        FairWhiteDO fairWhite = get(enterpriseId, jobFairId);
+        if (JobFairWhiteSourceEnum.ADMIN.getSource().equals(fairWhite.getSource())) {
+            return;
+        }
+        // 效验
+        checkAdmission(fairWhite);
+        if (fairWhite.getNum() - 1 < 0) {
+            throw exception(JOB_FAIR_ADMISSION_STATUS_EXPIRED);
+        }
+        mapper.deduct(enterpriseId, jobFairId, 1);
+    }
+
+    @Override
+    public void increaseAdmissionNum(Long enterpriseId, Long jobFairId) {
+        FairWhiteDO fairWhite = get(enterpriseId, jobFairId);
+        if (JobFairWhiteSourceEnum.ADMIN.getSource().equals(fairWhite.getSource())) {
+            return;
+        }
+        mapper.increase(enterpriseId, jobFairId, 1);
+
+    }
+
+    @Override
+    public void markFirstEnterFair(Long enterpriseId, Long jobFairId) {
+        // 标记为已经第一次进入
+        mapper.update(new LambdaUpdateWrapper<FairWhiteDO>()
+                .eq(FairWhiteDO::getJobFairId, jobFairId)
+                .eq(FairWhiteDO::getEnterpriseId, enterpriseId)
+                .set(FairWhiteDO::getFirst, true)
+        );
+    }
+}

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

@@ -26,6 +26,7 @@ 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.person.StudentDO;
 import com.citu.module.menduner.system.dal.dataobject.person.StudentPracticeRecordDO;
+import com.citu.module.menduner.system.dal.mysql.fair.FairDetailMapper;
 import com.citu.module.menduner.system.dal.mysql.interview.InterviewInviteMapper;
 import com.citu.module.menduner.system.dal.mysql.person.StudentMapper;
 import com.citu.module.menduner.system.dal.mysql.person.StudentPracticeRecordMapper;
@@ -97,6 +98,8 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
     @Resource
     private PersonInfoService personInfoService;
     @Resource
+    private FairDetailMapper fairDetailMapper;
+    @Resource
     private StudentMapper studentMapper;
     @Resource
     private StudentPracticeRecordMapper studentPracticeRecordMapper;
@@ -271,6 +274,8 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
             if (null != resp.getJob() && null != resp.getJob().getAreaId()) {
                 resp.getJob().setArea(areaService.getById(resp.getJob().getAreaId()));
             }
+            // 查询当前职位加入哪些招聘会
+            resp.setJobFairIds(fairDetailMapper.selectJobFairIdsByJobId(resp.getId()));
         });
         redisUtils.setEnterpriseUserLookPersonPermission(result.getList().stream()
                 .map(AppRecruitInterviewInviteRespVO::getUserId)

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

@@ -86,21 +86,6 @@ public interface JobAdvertisedService {
      */
     List<JobAdvertisedDO> list(JobAdvertisedReqVO reqVO);
 
-    /**
-     * 根据职位来源和来源关联id关闭职位
-     *
-     * @param source 职位来源
-     * @param bizId  职位id
-     **/
-    void closeJobAdvertised(String source, Long bizId);
-
-    /**
-     * 根据职位来源和来源关联id启用职位
-     *
-     * @param source 职位来源
-     * @param bizId  职位id
-     **/
-    void enableJobAdvertised(String source, Long bizId);
 
     /**
      * 根据企业id和职位类型获取职位列表

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

@@ -163,28 +163,6 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         return mapper.list(reqVO);
     }
 
-    @Override
-    @DSTransactional
-    public void closeJobAdvertised(String source, Long bizId) {
-        List<JobAdvertisedDO> list = mapper.selectBySourceAndBizId(source, bizId);
-        for (JobAdvertisedDO job : list) {
-            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);
-            }
-        }
-    }
-
     @Override
     public List<JobAdvertisedDO> getListByEnterpriseIdAndType(Long enterpriseId, List<String> types) {
         return mapper.selectListByEnterpriseIdAndTypeAndNotHire(enterpriseId, types);
@@ -393,90 +371,6 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         return job.getId();
     }
 
-    /**
-     * 处理新增职位的逻辑。
-     *
-     * @param job          职位信息对象
-     * @param enterpriseId 企业ID
-     * @param userId       用户ID
-     */
-    private void processNewJob(JobAdvertisedDO job, Long enterpriseId, Long userId, boolean fair) {
-        // 招聘会不做权益和额度扣除
-        if (!fair) {
-            // 不是众聘职位 和 不是待开启的职位才需要权益
-            boolean triggerVip = !job.getHire() && !JobStatusEnum.WAIT_ENABLE.getStatus().equals(job.getStatus());
-            // 扣除额度
-            vipEntitlementCheckAspect.deductQuota(VipEntitlementCheck.OPERATE_PUBLISH_JOB, triggerVip);
-        }
-        // 职位从哪个模块新增
-        if (null == job.getSource()) {
-            job.setSource(JobSourceEnum.MANAGER.getType());
-        } else {
-            if (JobSourceEnum.FAIR.getType().equals(job.getSource())) {
-                if (null == job.getBizId()) {
-                    throw exception(MDE_JOB_ADVERTISED_SOURCE_ID_NOT_NULL);
-                }
-            }
-        }
-
-        if (job.getHire() || JobStatusEnum.WAIT_ENABLE.getStatus().equals(job.getStatus())) {
-            // 众聘职位||待开启,还需要给钱才能开启
-            job.setStatus(JobStatusEnum.WAIT_ENABLE.getStatus());
-            job.setSource(JobSourceEnum.HIRE.getType());
-        } else {
-            //默认开启
-            job.setStatus(JobStatusEnum.ENABLE.getStatus());
-        }
-
-        // 设置默认值
-        job.setUserId(userId);
-        job.setEnterpriseId(enterpriseId);
-        job.setTop(false);
-
-        // 后置处理
-        jobOperateAfter(job, SyncConstants.ADD);
-
-    }
-
-    /**
-     * 处理修改职位的逻辑。
-     *
-     * @param job          职位信息对象
-     * @param enterpriseId 企业ID
-     * @param userId       用户ID
-     */
-    private void processExistingJob(JobAdvertisedDO job, Long enterpriseId, Long userId, boolean fair) {
-        JobAdvertisedDO existingJob = get(job.getId());
-
-        // 验证修改
-        if (job.getHire()) {
-            if (existingJob.getHire()) {
-                if (job.getHirePrice() != null && !job.getHirePrice().equals(existingJob.getHirePrice())) {
-                    throw exception(MDE_JOB_ADVERTISED_BALANCE_UPDATE);
-                }
-            }
-        }
-        // 招聘会不做权益和额度扣除
-        if (!fair) {
-            // 如果发布职位的job.createTime超过了24小时则不可编辑,respVO.setEdit(false);
-            boolean isVip = enterpriseService.checkVip(existingJob.getEnterpriseId());
-            if (!isVip && JobStatusEnum.ENABLE.getStatus().equals(existingJob.getStatus())
-                    && ChronoUnit.HOURS.between(existingJob.getCreateTime(), LocalDateTime.now()) > 24) {
-                throw exception(MDE_JOB_ADVERTISED_TIME_ERROR_24);
-            }
-        }
-        // 如果普通职位切换成众聘职位
-        if (job.getHire() && !existingJob.getHire()) {
-            job.setStatus(JobStatusEnum.WAIT_ENABLE.getStatus());
-        }
-
-        // 更新现有职位
-        job.setId(existingJob.getId());
-
-        // 后置处理
-        jobOperateAfter(job, SyncConstants.UPDATE);
-    }
-
 
     public JobAdvertisedDO get(Long id) {
         JobAdvertisedDO job = mapper.selectById(id);
@@ -707,76 +601,6 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         }
     }
 
-    /**
-     * 职位操作最后的操作
-     *
-     * @param job     职位对象
-     * @param operate 操作类型
-     **/
-    public void jobOperateAfter(
-            JobAdvertisedDO job,
-            String operate) {
-
-
-        if (SyncConstants.ADD.equals(operate)) {
-            mapper.insert(job);
-        } else {
-            mapper.updateById(job);
-        }
-
-        // ========== 数据同步处理 ==========
-        jobDataSync(job, operate);
-
-    }
-
-    /**
-     * 职位数据同步
-     *
-     * @param job     职位对象
-     * @param operate 操作类型
-     **/
-    @Async
-    public void jobDataSync(JobAdvertisedDO job, String operate) {
-        if (SyncConstants.ADD.equals(operate)) {
-            // es
-            esProducer.send(SyncConstants.JOB, SyncConstants.ADD, job.getId());
-            // 图数据库
-            producer.send(
-                    new GraphSendDTO
-                            (
-                                    SyncConstants.ADD,
-                                    SyncConstants.JOB,
-                                    JobAdvertisedConvert.INSTANCE.convert(job)
-                            )
-            );
-        } else if (SyncConstants.UPDATE.equals(operate)) {
-            // es
-            esProducer.send(SyncConstants.JOB, SyncConstants.UPDATE, job.getId());
-            // 图数据库
-            producer.send(
-                    new GraphSendDTO
-                            (
-                                    SyncConstants.UPDATE,
-                                    SyncConstants.JOB,
-                                    JobAdvertisedConvert.INSTANCE.convert(job)
-                            )
-            );
-        } else {
-            // es
-            esProducer.send(SyncConstants.JOB, SyncConstants.DELETE, job.getId());
-            // 图数据库
-            producer.send(
-                    new GraphSendDTO
-                            (
-                                    SyncConstants.DELETE,
-                                    SyncConstants.JOB,
-                                    job.getId()
-                            )
-            );
-
-        }
-    }
-
     @Override
     public PageResult<RecruitJobAnalysisRespVO> getBrowseNum(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);

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

@@ -32,6 +32,7 @@ import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
 import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import com.citu.module.menduner.system.dal.mysql.area.AreaMapper;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
+import com.citu.module.menduner.system.dal.mysql.fair.FairDetailMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobCvRelMapper;
 import com.citu.module.menduner.system.dal.mysql.major.MajorMapper;
@@ -86,6 +87,9 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
     @Resource
     private EnterpriseMapper enterpriseMapper;
 
+    @Resource
+    private FairDetailMapper fairDetailMapper;
+
     @Resource
     private AreaService areaService;
 
@@ -95,14 +99,12 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
     @Resource
     private PositionMapper positionMapper;
 
-    @Resource
-    private MajorMapper majorMapper;
-
     @Resource
     private UnfitCandidateMapper unfitCandidateMapper;
 
     @Resource
     private ElasticsearchRestTemplate elasticsearchTemplate;
+
     @Resource
     private RedisUtils redisUtils;
 
@@ -344,6 +346,9 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
                 respVO.setArea(areaService.getById(job.getAreaId()));
             }
 
+            // 查询当前职位加入哪些招聘会
+            respVO.setJobFairIds(fairDetailMapper.selectJobFairIdsByJobId(job.getId()));
+
             list.add(respVO);
 
         });
@@ -361,6 +366,8 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
             if(null!=item.getJob() && null != item.getJob().getAreaId()) {
                 item.getJob().setArea(areaService.getById(item.getJob().getAreaId()));
             }
+            // 查询当前职位加入哪些招聘会
+            item.setJobFairIds(fairDetailMapper.selectJobFairIdsByJobId(item.getId()));
         });
         redisUtils.setEnterpriseUserLookPersonPermission(pageResult.getList().stream()
                 .map(AppRecruitJobCvRelRespVO::getUserId)
@@ -376,6 +383,13 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
         if (CollUtil.isEmpty(pageResult.getList())) {
             return PageResult.empty();
         }
+        pageResult.getList().forEach(item -> {
+            if(null!=item.getJob() && null != item.getJob().getAreaId()) {
+                item.getJob().setArea(areaService.getById(item.getJob().getAreaId()));
+            }
+            // 查询当前职位加入哪些招聘会
+            item.setJobFairIds(fairDetailMapper.selectJobFairIdsByJobId(item.getId()));
+        });
         redisUtils.setEnterpriseUserLookPersonPermission(pageResult.getList().stream()
                 .map(AppRecruitUnfitCandidateRespVO::getUserId)
                 .collect(Collectors.toSet()));

+ 8 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/handler/JobFairOperateHandler.java

@@ -28,19 +28,21 @@ public class JobFairOperateHandler implements JobOperateHandler {
     @Lazy
     private EnterpriseService enterpriseService;
 
+
     @Override
     public void beforeCreate(JobAdvertisedDO job) {
-        if (JobSourceEnum.FAIR.getType().equals(job.getSource())
-                && null != job.getBizId()) {
-            // 没有填写来源(招聘会id)
-            throw exception(MDE_JOB_ADVERTISED_SOURCE_ID_NOT_NULL);
-
+        if (JobSourceEnum.FAIR.getType().equals(job.getSource())) {
+            if (null == job.getBizId()) {
+                // 没有填写来源(招聘会id)
+                throw exception(MDE_JOB_ADVERTISED_SOURCE_ID_NOT_NULL);
+            }
         }
     }
 
+
     @Override
     public void beforeUpdate(JobAdvertisedDO job, JobAdvertisedDO oldJob) {
-        if (JobSourceEnum.FAIR.getType().equals(job.getSource())){
+        if (JobSourceEnum.FAIR.getType().equals(job.getSource())) {
             // 如果发布职位的job.createTime超过了24小时则不可编辑,respVO.setEdit(false);
             boolean isVip = enterpriseService.checkVip(oldJob.getEnterpriseId());
             if (!isVip && JobStatusEnum.ENABLE.getStatus().equals(oldJob.getStatus())