wangqifan 3 rokov pred
rodič
commit
71125a563b

+ 24 - 4
src/main/java/com/izouma/nineth/service/TradeAuctionOrderService.java

@@ -205,10 +205,7 @@ public class TradeAuctionOrderService {
             tradeAuction.setCurrentOwnerId(tradeAuctionOrder.getUserId());
             tradeAuction.setStatus(TradeAuctionStatus.FINISH);
             finishLastOrder(tradeAuction.getCurrentOrderId());
-            User owner = userRepo.findById(tradeAuctionOrder.getUserId()).orElseThrow(new BusinessException("暂无用户"));
-            assetService.createAsset(tradeAuction, owner, tradeAuctionOrder.getId(), tradeAuction
-                    .getCurrentPrice(), "空投", 1, false);
-            tradeAuctionOrder.setStatus(AuctionOrderStatus.FINISH);
+            tradeAuctionOrder.setStatus(AuctionOrderStatus.AIR_DROP);
         }
         tradeAuction.setLastCommission(tradeAuctionOrder.getServiceCharge());
         tradeAuctionOrder.setCurrentEndTime(tradeAuction.getCurrentEndTime());
@@ -263,6 +260,29 @@ public class TradeAuctionOrderService {
 //        releaseOrderLock(order.getId());
     }
 
+    @Scheduled(fixedRate = 30000)
+    public void batchAirdrop() {
+        List<TradeAuctionOrder> tradeAuctionOrders = tradeAuctionOrderRepo
+                .findByStatusAndCreatedAtBeforeAndDelFalse(AuctionOrderStatus.NOT_PAID,
+                        LocalDateTime.now().minusSeconds(orderCancelInterval));
+        tradeAuctionOrders.parallelStream().forEach(o -> {
+            try {
+                TradeAuctionOrder order = tradeAuctionOrderRepo.findById(o.getId())
+                        .orElseThrow(new BusinessException("订单不存在"));
+                TradeAuction tradeAuction = tradeAuctionRepo.findById(order.getTradeAuctionId())
+                        .orElseThrow(new BusinessException("未找到易拍活动"));
+                User owner = userRepo.findById(order.getUserId())
+                        .orElseThrow(new BusinessException("暂无用户"));
+                assetService.createAsset(tradeAuction, owner, order.getId(), tradeAuction
+                        .getCurrentPrice(), "空投", 1, false);
+                order.setStatus(AuctionOrderStatus.FINISH);
+                tradeAuctionOrderRepo.save(order);
+            } catch (Exception e) {
+                log.error("取消易拍订单错误 " + o.getId(), e);
+            }
+        });
+    }
+
     @Scheduled(fixedRate = 30000)
     public void batchPayEarning() {
         List<TradeAuctionOrder> tradeAuctionOrders = tradeAuctionOrderRepo.findByPaybackStatus(PaybackStatus.PASSED);