|
@@ -0,0 +1,61 @@
|
|
|
|
|
+package com.sqx.modules.order.task;
|
|
|
|
|
+
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
+import com.sqx.modules.order.entity.TbOrder;
|
|
|
|
|
+import com.sqx.modules.order.service.AppOrderService;
|
|
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 订单定时任务
|
|
|
|
|
+ *
|
|
|
|
|
+ * @author : codingliang
|
|
|
|
|
+ * @date : 2024-08-19 20:42
|
|
|
|
|
+ */
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+@Async
|
|
|
|
|
+@Component
|
|
|
|
|
+@RequiredArgsConstructor
|
|
|
|
|
+public class OrderTask {
|
|
|
|
|
+
|
|
|
|
|
+ private final AppOrderService orderService;
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 预约订单自动接单
|
|
|
|
|
+ * 5分钟运行一次
|
|
|
|
|
+ */
|
|
|
|
|
+ @Scheduled(cron = "0 */5 * * * ?")
|
|
|
|
|
+ public void reservationAutoReceivingOrder() {
|
|
|
|
|
+ log.info("预约订单自动接单任务运行....");
|
|
|
|
|
+ List<Long> orderIds = orderService.getCurWaitReceivingOrderIds();
|
|
|
|
|
+ if (CollUtil.isEmpty(orderIds)) {
|
|
|
|
|
+ log.info("没有符合条件的预约订单,预约订单自动接单任务运行....");
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ List<TbOrder> waitOrders = orderIds.stream().map(orderId -> {
|
|
|
|
|
+ TbOrder waitOrder = new TbOrder();
|
|
|
|
|
+ waitOrder.setOrderId(orderId);
|
|
|
|
|
+ waitOrder.setStatus(6);
|
|
|
|
|
+
|
|
|
|
|
+ return waitOrder;
|
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ for (TbOrder waitOrder : waitOrders) {
|
|
|
|
|
+ log.info("预约订单id:{},正在自动接单", waitOrder.getOrderId());
|
|
|
|
|
+ try {
|
|
|
|
|
+ orderService.updateOrder(waitOrder);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ log.error("预约单id:{},自动接单失败,失败原因:{}", waitOrder.getOrderId(), e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|