|
|
@@ -7,7 +7,9 @@ import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import shop.alien.entity.storePlatform.StoreOperationalActivity;
|
|
|
+import shop.alien.entity.storePlatform.StoreOperationalActivitySignup;
|
|
|
import shop.alien.mapper.storePlantform.StoreOperationalActivityMapper;
|
|
|
+import shop.alien.mapper.storePlantform.StoreOperationalActivitySignupMapper;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Calendar;
|
|
|
@@ -27,6 +29,7 @@ import java.util.List;
|
|
|
public class StoreOperationalActivityJob {
|
|
|
|
|
|
private final StoreOperationalActivityMapper activityMapper;
|
|
|
+ private final StoreOperationalActivitySignupMapper signupMapper;
|
|
|
|
|
|
/**
|
|
|
* 营销活动状态更新任务
|
|
|
@@ -136,10 +139,81 @@ public class StoreOperationalActivityJob {
|
|
|
log.info("【定时任务】未开始活动更新完成,活动ID列表: {},更新数量: {}", notStartActivityIds, updateCount);
|
|
|
}
|
|
|
|
|
|
+ // 处理报名时间已过但未审核通过的报名记录
|
|
|
+ // 使用当前实际时间(包含时分秒)进行比较
|
|
|
+ processExpiredSignups(new Date());
|
|
|
+
|
|
|
log.info("【定时任务】营销活动状态更新任务执行完成");
|
|
|
} catch (Exception e) {
|
|
|
log.error("【定时任务】营销活动状态更新任务执行异常", e);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理报名时间已过但未审核通过的报名记录
|
|
|
+ * 如果报名人员没有在报名时间内审核通过,一律改为审核拒绝
|
|
|
+ *
|
|
|
+ * @param now 当前时间
|
|
|
+ */
|
|
|
+ private void processExpiredSignups(Date now) {
|
|
|
+ log.info("【定时任务】开始处理报名时间已过的待审核报名记录...");
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 查询所有有报名结束时间的活动
|
|
|
+ LambdaQueryWrapper<StoreOperationalActivity> activityWrapper = new LambdaQueryWrapper<>();
|
|
|
+ activityWrapper.isNotNull(StoreOperationalActivity::getSignupEndTime)
|
|
|
+ .eq(StoreOperationalActivity::getDeleteFlag, 0);
|
|
|
+
|
|
|
+ List<StoreOperationalActivity> activities = activityMapper.selectList(activityWrapper);
|
|
|
+ log.info("【定时任务】查询到有报名结束时间的活动数量: {}", activities.size());
|
|
|
+
|
|
|
+ int totalRejectedCount = 0;
|
|
|
+
|
|
|
+ for (StoreOperationalActivity activity : activities) {
|
|
|
+ Date signupEndTime = activity.getSignupEndTime();
|
|
|
+ if (signupEndTime == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果当前时间 > 报名结束时间,说明报名时间已过
|
|
|
+ if (now.compareTo(signupEndTime) > 0) {
|
|
|
+ // 查询该活动下所有待审核(status=0)的报名记录
|
|
|
+ LambdaQueryWrapper<StoreOperationalActivitySignup> signupWrapper = new LambdaQueryWrapper<>();
|
|
|
+ signupWrapper.eq(StoreOperationalActivitySignup::getActivityId, activity.getId())
|
|
|
+ .eq(StoreOperationalActivitySignup::getStatus, 0) // 0-待审核
|
|
|
+ .eq(StoreOperationalActivitySignup::getDeleteFlag, 0);
|
|
|
+
|
|
|
+ List<StoreOperationalActivitySignup> pendingSignups = signupMapper.selectList(signupWrapper);
|
|
|
+
|
|
|
+ if (!pendingSignups.isEmpty()) {
|
|
|
+ // 批量更新为拒绝状态
|
|
|
+ List<Integer> signupIds = new ArrayList<>();
|
|
|
+ for (StoreOperationalActivitySignup signup : pendingSignups) {
|
|
|
+ signupIds.add(signup.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaUpdateWrapper<StoreOperationalActivitySignup> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
+ updateWrapper.in(StoreOperationalActivitySignup::getId, signupIds)
|
|
|
+ .set(StoreOperationalActivitySignup::getStatus, 1) // 1-拒绝
|
|
|
+ .set(StoreOperationalActivitySignup::getRejectReason, "报名时间已过,未在规定时间内审核通过")
|
|
|
+ .set(StoreOperationalActivitySignup::getAuditTime, now);
|
|
|
+
|
|
|
+ int updateCount = signupMapper.update(null, updateWrapper);
|
|
|
+ totalRejectedCount += updateCount;
|
|
|
+ log.info("【定时任务】活动ID: {} 报名时间已过,将 {} 条待审核报名记录改为拒绝",
|
|
|
+ activity.getId(), updateCount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (totalRejectedCount > 0) {
|
|
|
+ log.info("【定时任务】报名时间已过的待审核报名记录处理完成,共拒绝 {} 条", totalRejectedCount);
|
|
|
+ } else {
|
|
|
+ log.info("【定时任务】没有需要处理的报名时间已过的待审核报名记录");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("【定时任务】处理报名时间已过的待审核报名记录异常", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|