xiongzhu 4 ani în urmă
părinte
comite
582e083e69

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

@@ -72,4 +72,7 @@ public interface AssetRepo extends JpaRepository<Asset, Long>, JpaSpecificationE
     int updateCDN(Long id, String pic, String model3d, String minterAvatar,
                   String ownerAvatar, String detail);
 
+    List<Asset> findByStatusIn(Iterable<AssetStatus> statuses);
+
+    List<Asset> findByFromAssetId(Long id);
 }

+ 2 - 0
src/main/java/com/izouma/nineth/repo/GiftOrderRepo.java

@@ -20,4 +20,6 @@ public interface GiftOrderRepo extends JpaRepository<GiftOrder, Long>, JpaSpecif
     void softDelete(Long id);
 
     GiftOrder findByTransactionId(String txId);
+
+    List<GiftOrder> findByAssetIdAndStatusIn(Long assetId, Iterable<OrderStatus> statuses);
 }

+ 2 - 0
src/main/java/com/izouma/nineth/repo/OrderRepo.java

@@ -35,4 +35,6 @@ public interface OrderRepo extends JpaRepository<Order, Long>, JpaSpecificationE
     long countSales(Long userId);
 
     Order findByTransactionId(String txId);
+
+    List<Order> findByAssetIdAndStatusIn(Long assetId, Iterable<OrderStatus> statuses);
 }

+ 48 - 0
src/test/java/com/izouma/nineth/service/AssetServiceTest.java

@@ -2,12 +2,15 @@ package com.izouma.nineth.service;
 
 import com.izouma.nineth.ApplicationTests;
 import com.izouma.nineth.domain.*;
+import com.izouma.nineth.enums.AssetStatus;
+import com.izouma.nineth.enums.OrderStatus;
 import com.izouma.nineth.repo.*;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.time.LocalDateTime;
 import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 
 class AssetServiceTest extends ApplicationTests {
@@ -27,6 +30,8 @@ class AssetServiceTest extends ApplicationTests {
     private AssetMintService  assetMintService;
     @Autowired
     private AssetRepo         assetRepo;
+    @Autowired
+    private GiftOrderRepo     giftOrderRepo;
 
     @Test
     void createAsset() {
@@ -88,4 +93,47 @@ class AssetServiceTest extends ApplicationTests {
 
     }
 
+    @Test
+    public void fixstatus() {
+        List<Asset> assets = assetRepo.findByStatusIn(Arrays.asList(AssetStatus.GIFTING, AssetStatus.TRADING));
+        System.out.println(assets.size());
+        for (Asset asset : assets) {
+            if (asset.getCreatedAt().isAfter(LocalDateTime.of(2022, 3, 6, 0, 0, 0))) continue;
+            if (assetRepo.findByFromAssetId(asset.getId()).isEmpty()) {
+                if (asset.getStatus() == AssetStatus.GIFTING) {
+                    List<GiftOrder> list = giftOrderRepo.findByAssetIdAndStatusIn(asset.getId(), Arrays.asList(OrderStatus.PROCESSING, OrderStatus.FINISH));
+                    if (list.size() == 1) {
+                        System.out.println(asset.getId() + "," + list.get(0).getId());
+                        User user = userRepo.findById(list.get(0).getToUserId()).get();
+                        assetService.transfer(asset, asset.getPrice(), user, "转赠", null);
+                        try {
+                            Thread.sleep(500);
+                        } catch (InterruptedException e) {
+                            e.printStackTrace();
+                        }
+                    } else {
+                        System.out.println("@" + asset.getId());
+                    }
+                } else {
+                    List<Order> list = orderRepo.findByAssetIdAndStatusIn(asset.getId(), Arrays.asList(OrderStatus.PROCESSING, OrderStatus.FINISH));
+                    if (list.size() == 1) {
+                        System.out.println(asset.getId() + "," + list.get(0).getId());
+                        Order order = list.get(0);
+                        User user = userRepo.findById(list.get(0).getUserId()).get();
+                        assetService.transfer(asset, order.getPrice(), user, "转让", order.getId());
+                        try {
+                            Thread.sleep(500);
+                        } catch (InterruptedException e) {
+                            e.printStackTrace();
+                        }
+                    } else {
+                        System.out.println("#" + asset.getId());
+                    }
+                }
+            } else {
+                System.out.println("*" + asset.getId());
+            }
+        }
+    }
+
 }