|
@@ -3,13 +3,16 @@ package com.izouma.nineth.service;
|
|
|
import com.izouma.nineth.domain.Asset;
|
|
import com.izouma.nineth.domain.Asset;
|
|
|
import com.izouma.nineth.domain.Order;
|
|
import com.izouma.nineth.domain.Order;
|
|
|
import com.izouma.nineth.domain.User;
|
|
import com.izouma.nineth.domain.User;
|
|
|
|
|
+import com.izouma.nineth.dto.NFT;
|
|
|
import com.izouma.nineth.dto.NFTAccount;
|
|
import com.izouma.nineth.dto.NFTAccount;
|
|
|
import com.izouma.nineth.dto.PageQuery;
|
|
import com.izouma.nineth.dto.PageQuery;
|
|
|
|
|
+import com.izouma.nineth.enums.AssetStatus;
|
|
|
import com.izouma.nineth.exception.BusinessException;
|
|
import com.izouma.nineth.exception.BusinessException;
|
|
|
import com.izouma.nineth.repo.AssetRepo;
|
|
import com.izouma.nineth.repo.AssetRepo;
|
|
|
import com.izouma.nineth.repo.UserRepo;
|
|
import com.izouma.nineth.repo.UserRepo;
|
|
|
import com.izouma.nineth.utils.JpaUtils;
|
|
import com.izouma.nineth.utils.JpaUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
@@ -17,6 +20,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
|
|
|
+@Slf4j
|
|
|
public class AssetService {
|
|
public class AssetService {
|
|
|
|
|
|
|
|
private AssetRepo assetRepo;
|
|
private AssetRepo assetRepo;
|
|
@@ -28,7 +32,7 @@ public class AssetService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Async
|
|
@Async
|
|
|
- public void createAsset(Order order) {
|
|
|
|
|
|
|
+ public Asset createAsset(Order order) {
|
|
|
User user = userRepo.findById(order.getUserId()).orElseThrow(new BusinessException("用户不存在"));
|
|
User user = userRepo.findById(order.getUserId()).orElseThrow(new BusinessException("用户不存在"));
|
|
|
if (StringUtils.isEmpty(user.getPublicKey())) {
|
|
if (StringUtils.isEmpty(user.getPublicKey())) {
|
|
|
NFTAccount account = nftService.createAccount(user.getUsername());
|
|
NFTAccount account = nftService.createAccount(user.getUsername());
|
|
@@ -38,5 +42,30 @@ public class AssetService {
|
|
|
userRepo.save(user);
|
|
userRepo.save(user);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ NFT nft = nftService.createToken(user.getNftAccount());
|
|
|
|
|
+ if (nft != null) {
|
|
|
|
|
+ Asset asset = Asset.builder()
|
|
|
|
|
+ .userId(user.getId())
|
|
|
|
|
+ .orderId(order.getId())
|
|
|
|
|
+ .minter(order.getMinter())
|
|
|
|
|
+ .minterId(order.getMinterId())
|
|
|
|
|
+ .minterAvatar(order.getMinterAvatar())
|
|
|
|
|
+ .pic(order.getPic())
|
|
|
|
|
+ .tokenId(nft.getTokenId())
|
|
|
|
|
+ .blockNumber(nft.getBlockNumber())
|
|
|
|
|
+ .txHash(nft.getTxHash())
|
|
|
|
|
+ .gasUsed(nft.getGasUsed())
|
|
|
|
|
+ .price(order.getPrice())
|
|
|
|
|
+ .status(AssetStatus.NORMAL)
|
|
|
|
|
+ .build();
|
|
|
|
|
+ assetRepo.save(asset);
|
|
|
|
|
+ return asset;
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ log.error("创建nft失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|