AutoCLosePayOrderTask.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package com.dataeasy.server.task;
  2. import java.util.List;
  3. import java.util.Set;
  4. import java.util.stream.Collectors;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.scheduling.annotation.Scheduled;
  7. import org.springframework.stereotype.Component;
  8. import org.springframework.util.CollectionUtils;
  9. import com.dataeasy.server.atomic.entity.SubscriptionOrder;
  10. import com.dataeasy.server.atomic.service.ISubscriptionOrderService;
  11. import com.dataeasy.server.common.annotation.ScheduleTask;
  12. import com.dataeasy.server.constant.PaymentStatusEnum;
  13. import com.dataeasy.server.constant.ScheduleTaskEnum;
  14. import lombok.extern.slf4j.Slf4j;
  15. /**
  16. * @author tyuio
  17. * @version 1.0.0
  18. * @date 2025/3/14 10:51
  19. * @description 支付订单自动关闭 定时任务,每15分钟执行一次
  20. */
  21. @Slf4j
  22. @Component
  23. @ScheduleTask(ScheduleTaskEnum.AUTO_CLOSE_PAY_ORDER)
  24. public class AutoCLosePayOrderTask {
  25. @Autowired
  26. private ISubscriptionOrderService subscriptionOrderService;
  27. @Scheduled(cron = "0 0,15,30,45 * * * *")
  28. public void execute() {
  29. List<SubscriptionOrder> pendingCLoseOrders = subscriptionOrderService.getPendingCLoseOrders();
  30. if (CollectionUtils.isEmpty(pendingCLoseOrders)) {
  31. log.info("没有需要关闭得支付订单");
  32. return;
  33. }
  34. Set<Long> ids = pendingCLoseOrders.stream().map(SubscriptionOrder::getId).collect(Collectors.toSet());
  35. SubscriptionOrder updateSubscriptionOrder = new SubscriptionOrder();
  36. updateSubscriptionOrder.setPaymentStatus(PaymentStatusEnum.CLOSED);
  37. subscriptionOrderService.batchUpdate(ids, updateSubscriptionOrder);
  38. }
  39. }