xiongzhu 4 лет назад
Родитель
Сommit
8481bafe92

+ 10 - 5
src/main/java/com/izouma/nineth/service/AssetService.java

@@ -81,7 +81,7 @@ public class AssetService {
         asset.setIpfsUrl(ipfsUpload(collection.getPic().get(0).getUrl()));
         assetRepo.save(asset);
 
-        tokenHistoryRepo.save(TokenHistory.builder()
+        TokenHistory tokenHistory = tokenHistoryRepo.save(TokenHistory.builder()
                 .tokenId(asset.getTokenId())
                 .fromUser(collection.getMinter())
                 .fromUserId(collection.getMinterId())
@@ -90,7 +90,7 @@ public class AssetService {
                 .operation(type)
                 .price(price)
                 .build());
-
+        mint(asset, tokenHistory.getId());
         return asset;
     }
 
@@ -100,7 +100,7 @@ public class AssetService {
         asset.setPrice(price);
         asset.setIpfsUrl(ipfsUpload(winItem.getPic().get(0).getUrl()));
         assetRepo.save(asset);
-        tokenHistoryRepo.save(TokenHistory.builder()
+        TokenHistory tokenHistory = tokenHistoryRepo.save(TokenHistory.builder()
                 .tokenId(asset.getTokenId())
                 .fromUser(winItem.getMinter())
                 .fromUserId(winItem.getMinterId())
@@ -109,11 +109,11 @@ public class AssetService {
                 .operation(type)
                 .price(price)
                 .build());
-
+        mint(asset, tokenHistory.getId());
         return asset;
     }
 
-    public void mint(Asset asset) {
+    public void mint(Asset asset, Long historyId) {
         User user = userRepo.findById(asset.getUserId()).orElseThrow(new BusinessException("用户不存在"));
         if (StringUtils.isEmpty(user.getPublicKey())) {
             NFTAccount account = nftService.createAccount(user.getUsername());
@@ -131,6 +131,11 @@ public class AssetService {
                 asset.setGasUsed(nft.getGasUsed());
                 asset.setIpfsUrl(ipfsUpload(asset.getPic().get(0).getUrl()));
                 assetRepo.save(asset);
+
+                tokenHistoryRepo.findById(historyId).ifPresent(tokenHistory -> {
+                    tokenHistory.setTokenId(nft.getTokenId());
+                    tokenHistoryRepo.save(tokenHistory);
+                });
             }
         } catch (Exception e) {
             e.printStackTrace();

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

@@ -295,7 +295,6 @@ public class OrderService {
                 order.setPayMethod(payMethod);
                 orderRepo.save(order);
                 Asset asset = assetService.createAsset(winItem, user, order.getId(), order.getPrice(), "出售");
-                assetService.mint(asset);
             } else {
                 if (collection.getSource() == CollectionSource.TRANSFER) {
                     Asset asset = assetRepo.findById(collection.getAssetId()).orElse(null);
@@ -308,7 +307,6 @@ public class OrderService {
                     order.setPayMethod(payMethod);
                     orderRepo.save(order);
                     Asset asset = assetService.createAsset(collection, user, order.getId(), order.getPrice(), "出售");
-                    assetService.mint(asset);
                 }
             }
         } else if (order.getStatus() == OrderStatus.CANCELLED) {