|
@@ -0,0 +1,107 @@
|
|
|
|
|
+package com.xingxi.quartz.task.order;
|
|
|
|
|
+
|
|
|
|
|
+import com.xingxi.business.Order.domain.Order;
|
|
|
|
|
+import com.xingxi.business.Order.domain.OrderDetail;
|
|
|
|
|
+import com.xingxi.business.Order.mapper.OrderDetailMapper;
|
|
|
|
|
+import com.xingxi.business.Order.mapper.OrderMapper;
|
|
|
|
|
+import com.xingxi.business.PaymentInfo.domain.PaymentInfo;
|
|
|
|
|
+import com.xingxi.common.enums.EConfigKeys;
|
|
|
|
|
+import com.xingxi.common.enums.EOrderDetailStatus;
|
|
|
|
|
+import com.xingxi.common.enums.EOrderStatus;
|
|
|
|
|
+import com.xingxi.common.mq.bo.order.OrderFinishedBO;
|
|
|
|
|
+import com.xingxi.common.mq.publisher.order.OrderFinishedMqPublisher;
|
|
|
|
|
+import com.xingxi.common.utils.DateUtils;
|
|
|
|
|
+import com.xingxi.quartz.mapper.OrderDetailTaskMapper;
|
|
|
|
|
+import com.xingxi.quartz.task.BaseTask;
|
|
|
|
|
+import com.xingxi.system.service.ISysConfigService;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
|
+
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
|
+import java.util.Date;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * @program: 扁担
|
|
|
|
|
+ * @description: 已收货的订单商品,从收货日开始,超过无理由售后的的订单变成完成
|
|
|
|
|
+ * @author: baolei
|
|
|
|
|
+ * @create: 2022-03-22
|
|
|
|
|
+ */
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+@Component
|
|
|
|
|
+public class OrderFinishedTask extends BaseTask {
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private ISysConfigService configService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private OrderMapper orderMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private OrderDetailMapper orderDetailMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private OrderDetailTaskMapper orderDetailTaskMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private OrderFinishedMqPublisher orderFinishedMqPublisher;
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void run() {
|
|
|
|
|
+
|
|
|
|
|
+ log.info("订单确认完成处理开始===============>");
|
|
|
|
|
+
|
|
|
|
|
+ int period = Integer.parseInt(configService.selectConfigByKey(EConfigKeys.ORDER_FINISHED_PERIOD.getVal()));
|
|
|
|
|
+
|
|
|
|
|
+ Date nowDate = DateUtils.getNowDate();
|
|
|
|
|
+
|
|
|
|
|
+ // 查询收货超过7天的数据
|
|
|
|
|
+ List<OrderDetail> list = orderDetailTaskMapper.selectUnFinishedOrders();
|
|
|
|
|
+
|
|
|
|
|
+ // 按照订单分组
|
|
|
|
|
+ Map<Long, List<OrderDetail>> orderMap = list.stream().collect(Collectors.groupingBy(item -> item.getOrderId()));
|
|
|
|
|
+
|
|
|
|
|
+ // 按照订单分组
|
|
|
|
|
+ for (Map.Entry<Long, List<OrderDetail>> orderEntry : orderMap.entrySet()) {
|
|
|
|
|
+ Long orderId = orderEntry.getKey();
|
|
|
|
|
+ List<OrderDetail> details = orderEntry.getValue();
|
|
|
|
|
+
|
|
|
|
|
+ for (OrderDetail detail : details) {
|
|
|
|
|
+ Date confirmTime = detail.getConfirmTime();
|
|
|
|
|
+ confirmTime = DateUtils.addDays(confirmTime, period);
|
|
|
|
|
+
|
|
|
|
|
+ if(nowDate.after(confirmTime)) {
|
|
|
|
|
+ OrderDetail uod = new OrderDetail();
|
|
|
|
|
+ uod.setOrderDetailId(detail.getOrderDetailId());
|
|
|
|
|
+ // 更新完成时间
|
|
|
|
|
+ uod.setFinishTime(nowDate);
|
|
|
|
|
+ uod.setOrderDetailStatus(EOrderDetailStatus.FINISHED.getVal());
|
|
|
|
|
+ uod.setUpdateUser("OrderFinishedTask");
|
|
|
|
|
+ uod.setUpdateTime(nowDate);
|
|
|
|
|
+ orderDetailMapper.updateOrderDetail(uod);
|
|
|
|
|
+
|
|
|
|
|
+ OrderFinishedBO orderFinishedBO = new OrderFinishedBO();
|
|
|
|
|
+ orderFinishedBO.setOrderId(detail.getOrderId());
|
|
|
|
|
+ orderFinishedBO.setOrderDetailId(detail.getOrderDetailId());
|
|
|
|
|
+ orderFinishedBO.setProdId(detail.getProdId());
|
|
|
|
|
+ orderFinishedBO.setPprId(detail.getProdAttrId());
|
|
|
|
|
+ orderFinishedMqPublisher.sendMessage(orderFinishedBO);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 明细全完成的情况,主订单也更新完成状态
|
|
|
|
|
+ if(orderDetailTaskMapper.checkOrderFinished(orderId) <= 0) {
|
|
|
|
|
+ Order uco = new Order();
|
|
|
|
|
+ uco.setOrderId(orderId);
|
|
|
|
|
+ uco.setOrderStatus(EOrderStatus.FINISHED.getVal());
|
|
|
|
|
+ uco.setUpdateTime(nowDate);
|
|
|
|
|
+ uco.setUpdateUser("OrderFinishedTask");
|
|
|
|
|
+ orderMapper.updateOrder(uco);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ log.info("订单确认完成处理结束===============>");
|
|
|
|
|
+ }
|
|
|
|
|
+}
|