package com.dataeasy.server.task; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import com.dataeasy.server.atomic.entity.SubscriptionOrder; import com.dataeasy.server.atomic.service.ISubscriptionOrderService; import com.dataeasy.server.common.annotation.ScheduleTask; import com.dataeasy.server.constant.PaymentStatusEnum; import com.dataeasy.server.constant.ScheduleTaskEnum; import lombok.extern.slf4j.Slf4j; /** * @author tyuio * @version 1.0.0 * @date 2025/3/14 10:51 * @description 支付订单自动关闭 定时任务,每15分钟执行一次 */ @Slf4j @Component @ScheduleTask(ScheduleTaskEnum.AUTO_CLOSE_PAY_ORDER) public class AutoCLosePayOrderTask { @Autowired private ISubscriptionOrderService subscriptionOrderService; @Scheduled(cron = "0 0,15,30,45 * * * *") public void execute() { List pendingCLoseOrders = subscriptionOrderService.getPendingCLoseOrders(); if (CollectionUtils.isEmpty(pendingCLoseOrders)) { log.info("没有需要关闭得支付订单"); return; } Set ids = pendingCLoseOrders.stream().map(SubscriptionOrder::getId).collect(Collectors.toSet()); SubscriptionOrder updateSubscriptionOrder = new SubscriptionOrder(); updateSubscriptionOrder.setPaymentStatus(PaymentStatusEnum.CLOSED); subscriptionOrderService.batchUpdate(ids, updateSubscriptionOrder); } }