wangqifan 3 lat temu
rodzic
commit
84a972c3c6

+ 3 - 0
src/main/java/com/izouma/nineth/repo/PhotoAssetRepo.java

@@ -9,6 +9,7 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
+import java.time.LocalDateTime;
 import java.util.List;
 
 public interface PhotoAssetRepo extends JpaRepository<PhotoAsset, Long>, JpaSpecificationExecutor<PhotoAsset> {
@@ -21,5 +22,7 @@ public interface PhotoAssetRepo extends JpaRepository<PhotoAsset, Long>, JpaSpec
 
     List<PhotoAsset> findAllByOrderStatus(OrderStatus orderStatus);
 
+    List<PhotoAsset> findByOrderStatusAndCreatedAtBeforeAndDelFalse(OrderStatus orderStatus, LocalDateTime localDateTime);
+
     PhotoAsset findFirstByCreateAssetId(Long id);
 }

+ 2 - 2
src/main/java/com/izouma/nineth/service/ContentAuditService.java

@@ -170,7 +170,7 @@ public class ContentAuditService {
                             String scene = ((JSONObject) sceneResult).getString("scene");
                             String suggestion = ((JSONObject) sceneResult).getString("suggestion");
                             if (StringUtils.equals(suggestion, "pass")) {
-                                return false;
+                                return true;
                             }
                             // 根据scene和suggestion做相关处理。
                             // 根据不同的suggestion结果做业务上的不同处理。例如,将违规数据删除等。
@@ -191,6 +191,6 @@ public class ContentAuditService {
                 throw new BusinessException("审核失败");
             }
         }
-        return true;
+        return false;
     }
 }

+ 18 - 0
src/main/java/com/izouma/nineth/service/OrderCancelService.java

@@ -40,6 +40,8 @@ public class OrderCancelService {
     private final RedisTemplate<String, Object> redisTemplate;
     private final AuctionOrderRepo              auctionOrderRepo;
     private final AuctionOrderService           auctionOrderService;
+    private final PhotoAssetService             photoAssetService;
+    private final PhotoAssetRepo                photoAssetRepo;
 
     private static int orderCancelInterval = 210;
 
@@ -103,6 +105,22 @@ public class OrderCancelService {
         });
     }
 
+    @Scheduled(fixedRate = 30000, initialDelay = 30000)
+    @RedisLock(value = "pic_order_batch_cancel", expire = 3, unit = TimeUnit.MINUTES)
+    public void batchCancelPicOrder() {
+        List<PhotoAsset> orders = photoAssetRepo.findByOrderStatusAndCreatedAtBeforeAndDelFalse(OrderStatus.NOT_PAID,
+                LocalDateTime.now().minusSeconds(orderCancelInterval));
+        orders.forEach(o -> {
+            try {
+                PhotoAsset order = photoAssetRepo.findById(o.getId()).orElseThrow(new BusinessException("订单不存在"));
+                if (order.getOrderStatus() == OrderStatus.NOT_PAID && canCancel(order.getId().toString())) {
+                    photoAssetService.cancel(order);
+                }
+            } catch (Exception ignored) {
+            }
+        });
+    }
+
     private boolean canCancel(String id) {
         String channel = null;
         Object payTmp = redisTemplate.opsForValue().get(RedisKeys.PAY_TMP + id);

+ 15 - 15
src/main/java/com/izouma/nineth/service/PhotoAssetService.java

@@ -133,21 +133,21 @@ public class PhotoAssetService {
         photoAssetRepo.save(photoAsset);
     }
 
-    @Scheduled(fixedRate = 30000)
-    public void batchCancelledPicOrder() {
-        List<PhotoAsset> orders = photoAssetRepo
-                .findAllByOrderStatus(OrderStatus.NOT_PAID);
-        orders.parallelStream().forEach(o -> {
-            try {
-                PhotoAsset order = photoAssetRepo.findById(o.getId()).orElseThrow(new BusinessException("订单不存在"));
-                if (order.getOrderStatus() == OrderStatus.NOT_PAID) {
-                    cancel(order);
-                }
-            } catch (Exception e) {
-                log.error("取消拍卖订单错误 " + o.getId(), e);
-            }
-        });
-    }
+//    @Scheduled(fixedRate = 30000)
+//    public void batchCancelPicOrder() {
+//        List<PhotoAsset> orders = photoAssetRepo
+//                .findAllByOrderStatus(OrderStatus.NOT_PAID);
+//        orders.parallelStream().forEach(o -> {
+//            try {
+//                PhotoAsset order = photoAssetRepo.findById(o.getId()).orElseThrow(new BusinessException("订单不存在"));
+//                if (order.getOrderStatus() == OrderStatus.NOT_PAID) {
+//                    cancel(order);
+//                }
+//            } catch (Exception e) {
+//                log.error("取消拍卖订单错误 " + o.getId(), e);
+//            }
+//        });
+//    }
 
     public void cancel(PhotoAsset photoAsset) {
         photoAsset.setOrderStatus(OrderStatus.CANCELLED);