|
|
@@ -0,0 +1,62 @@
|
|
|
+package org.linlinjava.litemall.wx.task;
|
|
|
+
|
|
|
+import org.apache.commons.logging.Log;
|
|
|
+import org.apache.commons.logging.LogFactory;
|
|
|
+import org.linlinjava.litemall.core.system.SystemConfig;
|
|
|
+import org.linlinjava.litemall.core.task.Task;
|
|
|
+import org.linlinjava.litemall.core.util.BeanUtil;
|
|
|
+import org.linlinjava.litemall.db.domain.LitemallOrder;
|
|
|
+import org.linlinjava.litemall.db.domain.LitemallOrderGoods;
|
|
|
+import org.linlinjava.litemall.db.service.LitemallGoodsProductService;
|
|
|
+import org.linlinjava.litemall.db.service.LitemallOrderGoodsService;
|
|
|
+import org.linlinjava.litemall.db.service.LitemallOrderService;
|
|
|
+import org.linlinjava.litemall.db.util.OrderUtil;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+public class OrderUnpaidTask extends Task {
|
|
|
+ private final Log logger = LogFactory.getLog(OrderUnpaidTask.class);
|
|
|
+ private int orderId = -1;
|
|
|
+
|
|
|
+ public OrderUnpaidTask(Integer orderId){
|
|
|
+ super("OrderUnpaidTask-" + orderId, SystemConfig.getOrderUnpaid() * 60 * 1000);
|
|
|
+ this.orderId = orderId;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ logger.info("系统开始处理订单超时未付款订单 " + this.orderId);
|
|
|
+
|
|
|
+ LitemallOrderService orderService = BeanUtil.getBean(LitemallOrderService.class);
|
|
|
+ LitemallOrderGoodsService orderGoodsService = BeanUtil.getBean(LitemallOrderGoodsService.class);
|
|
|
+ LitemallGoodsProductService productService = BeanUtil.getBean(LitemallGoodsProductService.class);
|
|
|
+
|
|
|
+ LitemallOrder order = orderService.findById(this.orderId);
|
|
|
+ if(order == null){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(!OrderUtil.isCreateStatus(order)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置订单已取消状态
|
|
|
+ order.setOrderStatus(OrderUtil.STATUS_AUTO_CANCEL);
|
|
|
+ order.setEndTime(LocalDateTime.now());
|
|
|
+ if (orderService.updateWithOptimisticLocker(order) == 0) {
|
|
|
+ throw new RuntimeException("更新数据已失效");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 商品货品数量增加
|
|
|
+ Integer orderId = order.getId();
|
|
|
+ List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(orderId);
|
|
|
+ for (LitemallOrderGoods orderGoods : orderGoodsList) {
|
|
|
+ Integer productId = orderGoods.getProductId();
|
|
|
+ Short number = orderGoods.getNumber();
|
|
|
+ if (productService.addStock(productId, number) == 0) {
|
|
|
+ throw new RuntimeException("商品货品库存增加失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ logger.info("系统成功处理订单超时未付款订单 " + this.orderId);
|
|
|
+ }
|
|
|
+}
|