Explorar el Código

1、优化招聘会职位逻辑

rayson hace 8 meses
padre
commit
043361bf54

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

@@ -0,0 +1,20 @@
+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;
+
+}

+ 13 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/common/test/TestController.java

@@ -59,6 +59,13 @@ public class TestController {
         return "我是POST:"+test;
     }
 
+    @Operation(summary = "防篡改签名测试POST")
+    @PostMapping("/post/signature2")
+    @ApiSignature(timeout = 30)
+    public String signatureTest(@RequestParam("name") String name) {
+        return "我是POST2:"+name;
+    }
+
     @Operation(summary = "防篡改签名测试GET")
     @GetMapping("/get/signature")
     @ApiSignature(timeout = 30)
@@ -66,6 +73,11 @@ public class TestController {
         return "我是GET:"+name;
     }
 
-
+    @Operation(summary = "防篡改签名测试GET2")
+    @GetMapping("/get/signature2")
+    @ApiSignature(timeout = 30)
+    public String signatureTest3(@Valid TestReqVO reqVO) {
+        return "我是GET2:"+reqVO;
+    }
 
 }

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

@@ -81,6 +81,7 @@ public class AppRecruitFairController {
     @Operation(summary = "效验是否有权限参加招聘会")
     public CommonResult<Boolean> checkPermission(@RequestParam("jobFairId") Long jobFairId) {
         fairService.checkFairWhite(jobFairId);
+        fairService.syncJob(jobFairId);
         return success(true);
     }
 

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

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

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

@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobPageReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.flame.AppFlameJobRespVO;
 import com.citu.module.menduner.system.dal.dataobject.fair.FairDetailDO;
+import com.citu.module.menduner.system.enums.fair.JobFairStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -28,7 +30,11 @@ public interface FairDetailMapper extends BaseMapperX<FairDetailDO> {
 
 
     default List<FairDetailDO> selectByJobFairIdAndEnterpriseIdList(Long jobFairId, Long enterpriseId) {
-        return selectList(FairDetailDO::getJobFairId, jobFairId, FairDetailDO::getEnterpriseId, enterpriseId);
+        return selectList(new LambdaQueryWrapperX<FairDetailDO>()
+                .eq(FairDetailDO::getJobFairId, jobFairId)
+                .eq(FairDetailDO::getEnterpriseId, enterpriseId)
+                .ne(FairDetailDO::getStatus, JobFairStatusEnum.REMOVE.getStatus())
+        );
     }
 
 }

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

@@ -470,4 +470,17 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
                 .eq(JobAdvertisedDO::getName, name)
         ) > 0;
     }
+
+
+    /** 根据企业id和招聘类型查询职位 **/
+    default List<JobAdvertisedDO> selectListByEnterpriseIdAndType(Long enterpriseId, List<String> types) {
+
+        LambdaQueryWrapperX<JobAdvertisedDO> query =   new LambdaQueryWrapperX<JobAdvertisedDO>()
+                .eq(JobAdvertisedDO::getEnterpriseId, enterpriseId)
+                .inIfPresent(JobAdvertisedDO::getType, types)
+                .eq(JobAdvertisedDO::getStatus, JobStatusEnum.ENABLE.getStatus());
+        notExpireTime(query);
+        return selectList(query);
+
+    }
 }

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

@@ -104,4 +104,7 @@ public interface FairService {
 
     /** 效验是否有招聘会权限 **/
     void checkFairWhite(Long jobFairId);
+
+    /** 同步职位到招聘会 **/
+    void syncJob(Long jobFairId);
 }

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

@@ -21,14 +21,18 @@ 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.fair.FairWhiteDO;
+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.EnterpriseMapper;
 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.job.JobAdvertisedMapper;
 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.fair.JobFairStatusEnum;
+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;
 import org.springframework.stereotype.Service;
@@ -80,6 +84,9 @@ public class FairServiceImpl implements FairService {
     @Resource
     private EnterpriseMapper enterpriseMapper;
 
+    @Resource
+    private JobAdvertisedMapper jobAdvertisedMapper;
+
 
     @Override
     public Long createJobFair(JobFairSaveReqVO createReqVO) {
@@ -144,42 +151,72 @@ public class FairServiceImpl implements FairService {
 
     @Override
     public void checkFairWhite(Long jobFairId) {
-       EnterpriseDO enterpriseDO = enterpriseMapper.selectById(LoginUserContext.getEnterpriseId());
+        EnterpriseDO enterpriseDO = enterpriseMapper.selectById(LoginUserContext.getEnterpriseId());
 //        FairWhiteDO fairWhiteDO = fairWhiteMapper
 //                .selectByJobFairIdAndEnterpriseId(jobFairId, LoginUserContext.getEnterpriseId());
         FairWhiteDO fairWhiteDO = fairWhiteMapper
-                .selectByJobFairIdAndEnterpriseName(jobFairId,enterpriseDO.getName(),enterpriseDO.getAnotherName());
+                .selectByJobFairIdAndEnterpriseName(jobFairId, enterpriseDO.getName(), enterpriseDO.getAnotherName());
         if (null == fairWhiteDO) {
             throw exception(JOB_FAIR_NO_PERMISSION);
         }
+
+    }
+
+    @Override
+    @DSTransactional
+    public void syncJob(Long jobFairId) {
+        EnterpriseDO enterpriseDO = enterpriseMapper.selectById(LoginUserContext.getEnterpriseId());
+        //  将职位都放到招聘会里面
+        List<JobAdvertisedDO> jobAdvertisedList = jobAdvertisedMapper.selectListByEnterpriseIdAndType
+                (enterpriseDO.getId(), List.of(JobTypeEnum.FULL_TIME.getType(), JobTypeEnum.INTERNSHIP.getType()));
+        jobAdvertisedList.forEach(job -> {
+            insertFairJob(jobFairId, job.getId(),true);
+        });
     }
 
     @Override
     public void joinJobFair(joinJobFairReqVO reqVO) {
         checkFairWhite(reqVO.getJobFairId());
+        insertFairJob(reqVO.getJobFairId(), reqVO.getJobId(),false);
+    }
+
+    public void insertFairJob(Long jobFairId, Long jobId, boolean sync) {
         FairDetailDO detailDO = fairDetailMapper
                 .selectOne(FairDetailDO::getEnterpriseId, LoginUserContext.getEnterpriseId(),
-                        FairDetailDO::getJobId, reqVO.getJobId());
-        if (null != detailDO) {
-            // 已经加入
-            return;
+                        FairDetailDO::getJobId, jobId);
+        if (sync) {
+            // 同步数据,存在数据则不同步,同步过不在同步
+            if (null != detailDO) {
+                // 已经加入
+                return;
+            }
         }
-        FairDO fairDO = getJobFair(reqVO.getJobFairId());
+        //  sync=true 新增数据会出现,移除后,然后重新新增,所以需要走下面逻辑
+        FairDO fairDO = getJobFair(jobFairId);
         checkJobFairExpired(fairDO);
 
         if (ObjectUtil.isNotEmpty(fairDO.getVipRequire())) {
             // 效验是否符合会员要求
             // 不符合抛出异常提示
         }
-        FairDetailDO detail = FairDetailDO.builder()
-                .jobFairId(fairDO.getId())
-                .enterpriseId(LoginUserContext.getEnterpriseId())
-                .jobId(reqVO.getJobId())
-                .build();
-        fairDetailMapper.insert(detail);
+        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);
+        }
     }
 
     @Override
+    @DSTransactional
     public void quitJobFair(joinJobFairReqVO reqVO) {
         checkFairWhite(reqVO.getJobFairId());
         FairDetailDO detailDO = fairDetailMapper
@@ -189,7 +226,8 @@ public class FairServiceImpl implements FairService {
             // 不在招聘会里面
             return;
         }
-        fairDetailMapper.deleteById(detailDO.getId());
+        detailDO.setStatus(JobFairStatusEnum.REMOVE.getStatus());
+        fairDetailMapper.updateById(detailDO);
     }
 
     @Override
@@ -301,7 +339,7 @@ public class FairServiceImpl implements FairService {
     }
 
     @Override
-    public  PageResult<FairWhiteDO> page(FairWhitePageReqVO reqVO) {
+    public PageResult<FairWhiteDO> page(FairWhitePageReqVO reqVO) {
         return fairWhiteMapper.selectPage(reqVO);
     }
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/resources/mapper/fair/FairDetailMapper.xml

@@ -100,7 +100,7 @@
         inner join mde_enterprise as e on a.enterprise_id = e.id
         left join mde_enterprise_business as b on e.id = b.enterprise_id
         <where>
-            (f.deleted=0 and f.end_time > now()) and d.deleted = 0 and a.deleted = 0 and e.deleted = 0
+            (f.deleted=0 and f.end_time > now() and d.deleted = 0 and d.status !=2) and a.deleted = 0 and e.deleted = 0
             and a.status = 0
             and (a.expire_time > now() or a.expire_time is null)