zxl
2025-05-26 92721cc9f54cbf148ad10ce026572c7eaf24cca4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package cn.lili.job;
 
import cn.lili.common.enums.ActivityStatusEnum;
import cn.lili.modules.lmk.domain.entity.Activity;
import cn.lili.modules.lmk.domain.entity.CustomerBlack;
import cn.lili.modules.lmk.domain.vo.ActivityVO;
import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO;
import cn.lili.modules.lmk.enums.general.CollectTypeEnum;
import cn.lili.modules.lmk.mapper.ActivityMapper;
import cn.lili.modules.lmk.service.ActivityService;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
 
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
 
/**
 * 活动相关任务
 * */
@Component
@RequiredArgsConstructor
public class ActivityJob {
 
    private final ActivityMapper activityMapper;
 
    /**
     * 更具报名时间段与活冻时间段,改变活动状态
     *
     * */
    @XxlJob("activityStatusJob")
    public void activityStatusJob() throws Exception {
        XxlJobHelper.log("开始执行:活动状态改变");
        //获得所有 活动
        List<Activity> activeActivities = new LambdaQueryChainWrapper<Activity>(activityMapper)
                .orderByAsc(Activity::getCreateTime)  // 按创建时间升序
                .list();
        Date now = new Date(); // 获取当前时间
 
 
 
        for (Activity activity : activeActivities) {
            if (isInProgress(now, activity)) {
                activity.setStatus(ActivityStatusEnum.IN_PROGRESS.getType());
            } else if (isRecruiting(now, activity)) {
                activity.setStatus(ActivityStatusEnum.REPORT.getType());
            } else if (now.before(activity.getReportStartTime())) {
                activity.setStatus(ActivityStatusEnum.NOT_STARTED.getType());
            } else {
                activity.setStatus(ActivityStatusEnum.ENDED.getType());
            }
        }
        activityMapper.batchUpdateActivities(activeActivities);
 
        // 修改
        XxlJobHelper.log("执行完成:活动状态改变");
 
    }
 
    private boolean isInProgress(Date now, Activity activity) {
        return  !now.before(activity.getStartTime()) && !now.after(activity.getEndTime());
    }
 
    private boolean isRecruiting(Date now, Activity activity) {
        return !now.before(activity.getReportStartTime()) && !now.after(activity.getReportEndTime());
    }
 
}