| | |
| | | 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; |
| | |
| | | //获得所有 活动 |
| | | 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()); |
| | | } |