Browse Source

1、修改过期职位逻辑
2、过期职位更改为关闭

rayson 9 months ago
parent
commit
e310be2f49

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

@@ -32,12 +32,10 @@ import com.citu.module.menduner.system.enums.job.JobStatusEnum;
 import com.citu.module.menduner.system.enums.visits.MdeVisitsEnum;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
-import org.springframework.jdbc.object.SqlFunction;
 
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * 招聘职位 Mapper
@@ -445,4 +443,13 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
      */
     @Select("SELECT position_id FROM mde_job_advertised GROUP BY position_id ORDER BY COUNT(*) DESC LIMIT #{topN}")
     List<Long> selectTopPositionIdsByFrequency(int topN);
+
+    /**
+     * 查询过期的职位列表
+     **/
+    default List<JobAdvertisedDO> selectExpiredJobList() {
+        return selectList(new LambdaQueryWrapperX<JobAdvertisedDO>()
+                .lt(JobAdvertisedDO::getExpireTime, LocalDateTime.now())
+        );
+    }
 }

+ 27 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/MdeOldSyncService.java

@@ -142,12 +142,14 @@ public class MdeOldSyncService {
     public void run() {
 //        // 同步区域
 //        syncArea();
-        // 同步感兴趣城市 or 订阅的职位类型
-        syncInterested();
+//        // 同步感兴趣城市 or 订阅的职位类型
+//        syncInterested();
 //        // 同步职位信息
 //        syncPosition();
 //        // 同步用户信息
 //        syncUser();
+        // 同步vip企业信息
+        syncVipEnterprise();
 //        // 同步发布职位
 //        syncJob();
 //        // 同步人才工作经历、教育经历
@@ -225,12 +227,12 @@ public class MdeOldSyncService {
 
 
             JobInterestedDO insert = JobInterestedDO.builder()
-                    .id(null == jobInterested ? oldSubscribedPositions.getUserCode()+oldSubscribedPositions.getPositionId()
+                    .id(null == jobInterested ? oldSubscribedPositions.getUserCode() + oldSubscribedPositions.getPositionId()
                             : jobInterested.getId())
-                    .userId( oldSubscribedPositions.getUserCode())
+                    .userId(oldSubscribedPositions.getUserCode())
                     .positionId(oldSubscribedPositions.getPositionId())
                     .jobType(JobTypeEnum.FULL_TIME.getType())
-                    .interestedAreaIdList(interestedAreaIdList.size()>0?new ArrayList<>(interestedAreaIdList):null)
+                    .interestedAreaIdList(interestedAreaIdList.size() > 0 ? new ArrayList<>(interestedAreaIdList) : null)
                     .build();
 
             setCommon(insert);
@@ -270,6 +272,25 @@ public class MdeOldSyncService {
 //        });
     }
 
+    public void syncVipEnterprise() {
+        // 企业vip用户
+        List<OldMdeUser> userList = oldUserMapper.selectList(new LambdaQueryWrapperX<OldMdeUser>()
+                .eq(OldMdeUser::getDelFlag, 0)
+                .eq(OldMdeUser::getIdentityFlag,"1")
+                .gt(OldMdeUser::getVipFlag,"0")
+        );
+
+        userList.forEach(oldMdeUser -> {
+            EnterpriseDO enterpriseDO = enterpriseMapper.selectOne(EnterpriseDO::getId, oldMdeUser.getUserCode());
+            if (null != enterpriseDO) {
+              enterpriseDO.setVipFlag(oldMdeUser.getVipFlag());
+              enterpriseDO.setVipExpireDate(oldMdeUser.getDueDate().atStartOfDay());
+              enterpriseMapper.updateById(enterpriseDO);
+            }
+        });
+
+    }
+
     @Async
     public void syncPosition() {
 
@@ -355,7 +376,7 @@ public class MdeOldSyncService {
 
     public void syncUser() {
 
-        // 个人用户
+        // 所有用户
         List<OldMdeUser> userList = oldUserMapper.selectList(new LambdaQueryWrapperX<OldMdeUser>()
                 .eq(OldMdeUser::getDelFlag, 0)
         );

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

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

+ 59 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/scheduled/JobAdvertisedScheduled.java

@@ -0,0 +1,59 @@
+package com.citu.module.menduner.system.scheduled;
+
+import cn.hutool.core.collection.CollUtil;
+import com.citu.framework.tenant.core.aop.TenantIgnore;
+import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteDO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
+import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
+import com.citu.module.menduner.system.enums.interview.InterviewInviteStatusEnum;
+import com.citu.module.menduner.system.enums.job.JobStatusEnum;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.util.StopWatch;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @author rayson
+ * 过期职位定时任务
+ * TODO 先暂时这么干
+ **/
+@Slf4j
+@Configuration
+@RequiredArgsConstructor
+public class JobAdvertisedScheduled {
+
+    @Resource
+    private JobAdvertisedMapper mapper;
+
+    /**
+     * 即将到达的面试提醒
+     * 每隔10分钟扫描一遍
+     **/
+    @Async
+    @TenantIgnore
+    @Scheduled(cron = "* */10 * * * *")
+    public void run() {
+        List<JobAdvertisedDO> list = mapper.selectExpiredJobList();
+
+        if (CollUtil.isEmpty(list)) {
+            return;
+        }
+
+        StopWatch stopWatch = new StopWatch();
+        stopWatch.start("过期职位修改状态");
+
+        for (JobAdvertisedDO job : list) {
+            job.setStatus(JobStatusEnum.DISABLE.getStatus());
+            mapper.updateById(job);
+            // TODO 发送消息提醒
+
+        }
+        stopWatch.stop();
+        stopWatch.prettyPrint();
+    }
+}