Forráskód Böngészése

airDropCollection

wangqifan 2 éve
szülő
commit
469ea9f14c

+ 28 - 25
src/main/java/com/izouma/nineth/service/MintOrderService.java

@@ -874,31 +874,34 @@ public class MintOrderService {
         List<MintOrder> delayedOrders = mintOrderRepo
                 .findByStatusAndDelayAndAirDropTimeBefore(MintOrderStatus.AIR_DROP, true, LocalDateTime.now());
         delayedOrders.forEach(mintOrder -> {
-            getOrderLock(mintOrder.getId());
-            try {
-                MintActivity mintActivity = mintActivityRepo.findById(mintOrder.getMintActivityId())
-                                                            .orElseThrow(new BusinessException("未找到铸造活动"));
-                User user = userRepo.findById(mintOrder.getUserId()).orElseThrow(new BusinessException("无用户"));
-                airDropService.create(AirDrop.builder()
-                                             .name("铸造活动[" + mintActivity.getName() + "]空投")
-                                             .remark(mintOrder.getId().toString())
-                                             .type(AirDropType.asset)
-                                             .userIds(Collections.singletonList(mintOrder.getUserId()))
-                                             .collectionId(mintActivity.getAirDropCollectionId())
-                                             .targets(Collections
-                                                     .singletonList(new DropTarget(user.getId(), user
-                                                             .getPhone(), user.getNickname(), mintActivity
-                                                             .getAutoDropNum())))
-                                             .auto(true)
-                                             .companyId(mintActivity.getCompanyId())
-                                             .build());
-                mintOrder.setStatus(MintOrderStatus.FINISH);
-                mintOrderRepo.save(mintOrder);
-                releaseOrderLock(mintOrder.getId());
-                log.info("空投成功" + mintOrder.getId());
-            } catch (Exception e) {
-                releaseOrderLock(mintOrder.getId());
-                log.error("延迟空投出错:mintOrderId" + mintOrder.getId(), e);
+            if (!getOrderLock(mintOrder.getId())) {
+                log.error("空投失败 {}, redis锁了", mintOrder.getId());
+            } else {
+                try {
+                    MintActivity mintActivity = mintActivityRepo.findById(mintOrder.getMintActivityId())
+                                                                .orElseThrow(new BusinessException("未找到铸造活动"));
+                    User user = userRepo.findById(mintOrder.getUserId()).orElseThrow(new BusinessException("无用户"));
+                    airDropService.create(AirDrop.builder()
+                                                 .name("铸造活动[" + mintActivity.getName() + "]空投")
+                                                 .remark(mintOrder.getId().toString())
+                                                 .type(AirDropType.asset)
+                                                 .userIds(Collections.singletonList(mintOrder.getUserId()))
+                                                 .collectionId(mintActivity.getAirDropCollectionId())
+                                                 .targets(Collections
+                                                         .singletonList(new DropTarget(user.getId(), user
+                                                                 .getPhone(), user.getNickname(), mintActivity
+                                                                 .getAutoDropNum())))
+                                                 .auto(true)
+                                                 .companyId(mintActivity.getCompanyId())
+                                                 .build());
+                    mintOrder.setStatus(MintOrderStatus.FINISH);
+                    mintOrderRepo.save(mintOrder);
+                    releaseOrderLock(mintOrder.getId());
+                    log.info("空投成功" + mintOrder.getId());
+                } catch (Exception e) {
+                    releaseOrderLock(mintOrder.getId());
+                    log.error("延迟空投出错:mintOrderId" + mintOrder.getId(), e);
+                }
             }
         });
     }