peng
6 天以前 134f5b1aedeb90b9f7a71dc41e8f08e96bcb3f85
lmk-job/src/main/java/cn/lili/job/ActivityJob.java
@@ -16,6 +16,7 @@
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -40,33 +41,43 @@
        //获得所有 活动
        List<Activity> activeActivities = new LambdaQueryChainWrapper<Activity>(activityMapper)
                .orderByAsc(Activity::getCreateTime)  // 按创建时间升序
                .eq(Activity::getDeleteFlag,Boolean.FALSE)
                .list();
        Date now = new Date(); // 获取当前时间
        List<Activity> newActivities = new ArrayList<>();
        for (Activity activity : activeActivities) {
            String status = activity.getStatus();
            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())) {
            } else if (now.before(activity.getReportStartTime())) { //在报名时间之前
                activity.setStatus(ActivityStatusEnum.NOT_STARTED.getType());
            } else {
            }else if(now.after(activity.getReportEndTime()) && now.before(activity.getStartTime())){ //可能出现 在报名结束时间后, 活动开始之前的情况
                activity.setStatus(ActivityStatusEnum.NOT_STARTED.getType());
            }
            else {
                activity.setStatus(ActivityStatusEnum.ENDED.getType());
            }
            if (status != null && !status.equals(activity.getStatus())) {
                newActivities.add(activity);
            }
        }
        activityMapper.batchUpdateActivities(activeActivities);
        if (!newActivities.isEmpty()) {
            activityMapper.batchUpdateActivities(newActivities);
        }
        // 修改
        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());
    }