Quellcode durchsuchen

1、优化招聘会类别操作逻辑

rayson vor 4 Monaten
Ursprung
Commit
1b544b8eaf
14 geänderte Dateien mit 113 neuen und 32 gelöschten Zeilen
  1. 3 3
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  2. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/fair/FairController.java
  3. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/fair/AppRecruitFairController.java
  4. 25 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/JobFairCategoryUpdateReqVO.java
  5. 0 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/JobFairSaveReqVO.java
  6. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/fair/FairTagContent.java
  7. 7 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java
  8. 8 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairService.java
  9. 51 8
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairServiceImpl.java
  10. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelService.java
  11. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelServiceImpl.java
  12. 1 1
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_GB.properties
  13. 1 1
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties
  14. 1 1
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

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

@@ -609,14 +609,14 @@ public interface ErrorCodeConstants {
     ErrorCode JOB_FAIR_JOB_NAME_NOT_NULL = new ErrorCode(1_100_056_003, "招聘会名称不能为空");
     ErrorCode JOB_FAIR_TIME_OVER = new ErrorCode(1_100_056_004, "招聘会时间已过,暂停招聘");
 
-    ErrorCode JOB_FAIR_NO_PERMISSION = new ErrorCode(1_100_056_005, "您没有权限参加该招聘会");
+    ErrorCode JOB_FAIR_NO_PERMISSION = new ErrorCode(1_100_056_005, "您暂时无法参加该招聘会,请联系门墩儿");
 
     ErrorCode JOB_FAIR_NOT_START = new ErrorCode(1_100_056_006, "招聘会时间还未开始");
     ErrorCode JOB_FAIR_ADMISSION_NOT_EXISTS = new ErrorCode(1_100_056_007, "招聘会门票权益不存在");
 
-    ErrorCode JOB_FAIR_ADMISSION_STATUS_DISABLE = new ErrorCode(1_100_056_008, "您的招聘会门票许可已被禁用,请联系工作人员");
+    ErrorCode JOB_FAIR_ADMISSION_STATUS_DISABLE = new ErrorCode(1_100_056_008, "您的招聘会门票许可已被禁用,请联系门墩儿");
 
-    ErrorCode JOB_FAIR_ADMISSION_STATUS_EXPIRED = new ErrorCode(1_100_056_009, "您在该招聘会发布职位的额度不足,请联系工作人员");
+    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不能为空");

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

@@ -175,5 +175,13 @@ public class FairController {
         return success(true);
     }
 
+    @PutMapping("/update-category")
+    @Operation(summary = "更新招聘会类别")
+    @PreAuthorize("@ss.hasPermission('menduner:system:job-fair:update')")
+    public CommonResult<Boolean> updateJobFairCategory(@Valid @RequestBody JobFairCategoryUpdateReqVO reqVO) {
+        fairService.updateJobFairCategory(reqVO);
+        return success(true);
+    }
+
 
 }

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

@@ -104,7 +104,7 @@ public class AppRecruitFairController {
             if (null != item.getAreaId()) {
                 item.setArea(areaService.getById(item.getAreaId()));
             }
-            long count = jobCvRelService.getCountByJobFairIdAndJobId(id, item.getId());
+            long count = jobCvRelService.getCountByJobFairIdAndJobIdAndFilterUnfit(id, item.getId());
             item.setCount(count);
             // 计算多少天后到期
             if (null != item.getExpireTime()) {

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

@@ -0,0 +1,25 @@
+package com.citu.module.menduner.system.controller.base.fair;
+
+import com.citu.module.menduner.system.dal.dataobject.fair.FairTagContent;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Schema(description = "管理后台 - 招聘会类别修改 Request VO")
+@Data
+public class JobFairCategoryUpdateReqVO {
+
+    public static final String ENTERPRISE = "0";
+    public static final String JOB = "1";
+    public static final String ENTERPRISE_JOB = "2";
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27706")
+    private Long id;
+
+    @Schema(description = "类别(0企业|1职位|2企业-职位)", example = "0")
+    private String category;
+
+    @Schema(description = "自定义标签", example = "0")
+    private List<FairTagContent> tag;
+}

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

@@ -1,7 +1,6 @@
 package com.citu.module.menduner.system.controller.base.fair;
 
 
-import com.citu.module.menduner.system.dal.dataobject.fair.FairTagContent;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -21,12 +20,6 @@ public class JobFairSaveReqVO {
     @NotEmpty(message = "类型不能为空")
     private String type;
 
-    @Schema(description = "类别(0企业|1职位|2企业-职位)", example = "0")
-    private String category;
-
-    @Schema(description = "自定义标签", example = "0")
-    private List<FairTagContent> tag;
-
     @Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotEmpty(message = "标题不能为空")
     private String title;

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

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.dal.dataobject.fair;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.util.List;
@@ -13,13 +14,16 @@ public class FairTagContent {
     /**
      * 标签标题
      */
+    @Schema(description = "标签标题")
     private String title;
     /**
      * 标签key(例如职位的某个属性,positionId)
      */
+    @Schema(description = "标签key(例如职位的某个属性,positionId)")
     private String key;
     /**
      * 标签值(职位的某个属性的匹配值)
      */
+    @Schema(description = "标签值(职位的某个属性的匹配值)")
     private List<String> value;
 }

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

@@ -202,15 +202,16 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
         );
     }
 
-    default long selectCountByJobFairIdAndJobId(Long jobFairId, Long jobId) {
-        return selectCount(new LambdaQueryWrapperX<JobCvRelDO>()
-                .eq(JobCvRelDO::getJobFairId, jobFairId)
-                .eq(JobCvRelDO::getJobId, jobId)
-        );
+    default long selectCountByJobFairIdAndJobIdAndFilterUnfit(Long jobFairId, Long jobId) {
+        MPJLambdaWrapperX<JobCvRelDO> wrapper = new MPJLambdaWrapperX<>();
+        wrapper.eq(JobCvRelDO::getJobId, jobId);
+        wrapper.eq(JobCvRelDO::getJobFairId, jobFairId);
+        // 过滤不合适
+        setUnfitCandidate(wrapper);
+        return selectCount(wrapper);
     }
 
     default List<JobCvRelDO> selectByJobIdListAndFilterUnfit(List<Long> jobIdList) {
-
         MPJLambdaWrapperX<JobCvRelDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAll(JobCvRelDO.class);
         wrapper.in(JobCvRelDO::getJobId, jobIdList);

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

@@ -56,6 +56,11 @@ public interface FairService {
      */
     PageResult<FairDO> getJobFairPage(JobFairPageReqVO pageReqVO);
 
+    /**
+     * 更新招聘会类别
+     **/
+    void updateJobFairCategory(JobFairCategoryUpdateReqVO reqVO);
+
     /**
      * 效验招聘会是否过期
      **/
@@ -101,7 +106,9 @@ public interface FairService {
      **/
     void syncJob(Long enterpriseId, Long jobFairId);
 
-
+    /**
+     * 招聘会详情分页查询
+     **/
     PageResult<JobFairDetailRespVO> getJobFairDetailPage(JobFairDetailPageReqVO reqVO);
 
     /**

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

@@ -148,6 +148,49 @@ public class FairServiceImpl implements FairService {
         return fairMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    @DSTransactional
+    public void updateJobFairCategory(JobFairCategoryUpdateReqVO reqVO) {
+        // 校验招聘会是否存在并获取实体
+        FairDO fairDO = validateJobFairExists(reqVO.getId());
+        fairDO.setCategory(reqVO.getCategory());
+        fairDO.setTag(reqVO.getTag());
+        fairMapper.updateById(fairDO);
+
+        // 如果是企业类别且有标签,则处理企业相关逻辑
+        if (isEnterpriseCategoryWithTags(reqVO)) {
+            processEnterpriseTags(reqVO, fairDO);
+        }
+    }
+
+    /**
+     * 判断是否为带标签的企业类别
+     */
+    private boolean isEnterpriseCategoryWithTags(JobFairCategoryUpdateReqVO reqVO) {
+        return JobFairCategoryUpdateReqVO.ENTERPRISE.equals(reqVO.getCategory())
+                && CollUtil.isNotEmpty(reqVO.getTag());
+    }
+
+    /**
+     * 处理企业标签逻辑
+     */
+    private void processEnterpriseTags(JobFairCategoryUpdateReqVO reqVO, FairDO fairDO) {
+        reqVO.getTag().stream()
+                .filter(tag -> "enterpriseId".equals(tag.getKey())) // 过滤出 enterpriseId 的标签
+                .forEach(tag -> {
+                    // 将 List<String> 转为 List<Long>
+                    List<Long> enterpriseIds = tag.getValue().stream()
+                            .map(Long::valueOf)
+                            .collect(Collectors.toList());
+
+                    // 加入白名单
+                    fairWhiteService.addWhiteList(fairDO.getId(), enterpriseIds);
+
+                    // 同步职位
+                    enterpriseIds.forEach(enterpriseId -> syncJob(enterpriseId, fairDO.getId()));
+                });
+    }
+
     @Override
     public void checkJobFairExpired(FairDO fairDO) {
         LocalDateTime now = LocalDateTime.now();
@@ -210,7 +253,7 @@ public class FairServiceImpl implements FairService {
         if (null == fairWhite) {
             return;
         }
-        if (JobFairWhiteSourceEnum.ADMIN.getSource().equals(fairWhite.getSource())) {
+        if (JobFairWhiteSourceEnum.TICKET.getSource().equals(fairWhite.getSource())) {
             if (null == fairWhite.getNum()) {
                 // 没有次数不同步
                 return;
@@ -221,12 +264,12 @@ public class FairServiceImpl implements FairService {
                     .limit(fairWhite.getNum())
                     .collect(Collectors.toList());
             latestNRecords.forEach(job -> {
-                insertFairJob(jobFairId, job.getId());
+                insertFairJob(jobFairId, enterpriseId, job.getId());
             });
         } else {
             // 不是购买门票
             jobAdvertisedList.forEach(job -> {
-                insertFairJob(jobFairId, job.getId());
+                insertFairJob(jobFairId, enterpriseId, job.getId());
             });
         }
         fairWhiteService.markFirstEnterFair(enterpriseId, jobFairId);
@@ -235,7 +278,7 @@ public class FairServiceImpl implements FairService {
     @Override
     @DSTransactional
     public void joinJobFair(joinJobFairReqVO reqVO) {
-        insertFairJob(reqVO.getJobFairId(), reqVO.getJobId());
+        insertFairJob(reqVO.getJobFairId(), LoginUserContext.getEnterpriseId(), reqVO.getJobId());
     }
 
     @Override
@@ -258,11 +301,11 @@ public class FairServiceImpl implements FairService {
     }
 
     @DSTransactional
-    public void insertFairJob(Long jobFairId, Long jobId) {
+    public void insertFairJob(Long jobFairId, Long enterpriseId, Long jobId) {
         FairDetailDO detailDO = fairDetailMapper
                 .selectOne(
                         FairDetailDO::getJobFairId, jobFairId,
-                        FairDetailDO::getEnterpriseId, LoginUserContext.getEnterpriseId(),
+                        FairDetailDO::getEnterpriseId, enterpriseId,
                         FairDetailDO::getJobId, jobId);
 
         if (null != detailDO) {
@@ -282,13 +325,13 @@ public class FairServiceImpl implements FairService {
         // 新增数据
         FairDetailDO detail = FairDetailDO.builder()
                 .jobFairId(fairDO.getId())
-                .enterpriseId(LoginUserContext.getEnterpriseId())
+                .enterpriseId(enterpriseId)
                 .jobId(jobId)
                 .build();
         fairDetailMapper.insert(detail);
 
         // 扣除额度
-        fairWhiteService.deductAdmissionNum(LoginUserContext.getEnterpriseId(), fairDO.getId());
+        fairWhiteService.deductAdmissionNum(enterpriseId, fairDO.getId());
     }
 
     @Override

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

@@ -80,7 +80,7 @@ public interface JobCvRelService {
      * @param jobId 职位id
      * @return 投递简历数量
      */
-    long getCountByJobFairIdAndJobId(Long jobFairId, Long jobId);
+    long getCountByJobFairIdAndJobIdAndFilterUnfit(Long jobFairId, Long jobId);
 
 
     // ========== 求职端 ==========

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

@@ -132,8 +132,8 @@ public class JobCvRelServiceImpl implements JobCvRelService {
     }
 
     @Override
-    public long getCountByJobFairIdAndJobId(Long jobFairId, Long jobId) {
-        return jobCvRelMapper.selectCountByJobFairIdAndJobId(jobFairId, jobId);
+    public long getCountByJobFairIdAndJobIdAndFilterUnfit(Long jobFairId, Long jobId) {
+        return jobCvRelMapper.selectCountByJobFairIdAndJobIdAndFilterUnfit(jobFairId, jobId);
     }
 
     @Override

+ 1 - 1
menduner/menduner-system-biz/src/main/resources/i18n/messages_en_GB.properties

@@ -415,7 +415,7 @@
 1_100_056_002=Recruitment position ID cannot be empty
 1_100_056_003=The name of the job fair cannot be empty
 1_100_056_004=The job fair time has passed, recruitment is temporarily suspended
-1_100_056_005=You do not have permission to attend this job fair
+1_100_056_005=You are temporarily unable to attend the job fair. Please contact Menduner
 1_100_056_006=The job fair has not started yet
 1_100_056_008=Your recruitment fair ticket permit has been disabled, please contact the staff
 # ========== 招聘职位扩展 1_100_057_000 ==========

+ 1 - 1
menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties

@@ -421,7 +421,7 @@
 1_100_056_002=Recruitment position ID cannot be empty
 1_100_056_003=The name of the job fair cannot be empty
 1_100_056_004=The job fair time has passed, recruitment is temporarily suspended
-1_100_056_005=You do not have permission to attend this job fair
+1_100_056_005=You are temporarily unable to attend the job fair. Please contact Menduner
 1_100_056_006=The job fair has not started yet
 1_100_056_008=Your recruitment fair ticket permit has been disabled, please contact the staff
 # ========== 招聘职位扩展 1_100_057_000 ==========

+ 1 - 1
menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -422,7 +422,7 @@
 1_100_056_002=招聘职位id不能为空
 1_100_056_003=招聘会名称不能为空
 1_100_056_004=招聘会时间已过,暂停招聘
-1_100_056_005=您没有权限参加该招聘会
+1_100_056_005=您暂时无法参加该招聘会,请联系门墩儿
 1_100_056_006=招聘会时间还未开始
 1_100_056_008=您的招聘会门票许可已被禁用,请联系工作人员
 # ========== 招聘职位扩展 1_100_057_000 ==========