Commit b86f34f0 authored by wlx@33.cn's avatar wlx@33.cn

修正逻辑

parent e4d36177
...@@ -111,7 +111,7 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements ...@@ -111,7 +111,7 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements
goodsSpu.initTokenId(); goodsSpu.initTokenId();
boolean isSalesNFTCopy = goodsSpu.getNftSalesType().equals(Spu.NFT_SALES_TYPE_COPY); boolean isSalesNFTCopy = goodsSpu.getNftSalesType().equals(Spu.NFT_SALES_TYPE_COPY);
boolean commodityPassOut = goodsSpu.getCommodityPass().equals(Spu.COMMODITY_PASS_OUT); boolean commodityPassAuto = goodsSpu.getCommodityPass().equals(Spu.COMMODITY_PASS_AUTO);
/** /**
* 只有订单退款时,买家将商品币退还商家,商家刷一下退回的币的编号为可用 * 只有订单退款时,买家将商品币退还商家,商家刷一下退回的币的编号为可用
*/ */
...@@ -131,10 +131,10 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements ...@@ -131,10 +131,10 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements
if (isSalesNFTCopy){ if (isSalesNFTCopy){
serialNoList.forEach(index -> { serialNoList.forEach(index -> {
Long tokenId = Long.valueOf(goodsSpu.getTokenIdStr() + index); Long tokenId = Long.valueOf(goodsSpu.getTokenIdStr() + index);
payInChain(tableType, tableId, fromAddr, toAddr, coin, 1, tokenId, commodityPassOut, isSalesNFTCopy); payInChain(tableType, tableId, fromAddr, toAddr, coin, 1, tokenId, commodityPassAuto, isSalesNFTCopy);
}); });
}else{ }else{
payInChain(tableType, tableId, fromAddr, toAddr, coin, number, goodsSpu.getTokenId(), commodityPassOut, isSalesNFTCopy); payInChain(tableType, tableId, fromAddr, toAddr, coin, number, goodsSpu.getTokenId(), commodityPassAuto, isSalesNFTCopy);
} }
} }
} }
...@@ -231,7 +231,7 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements ...@@ -231,7 +231,7 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements
} }
private void payInChain(int tableType, String tableId, String fromAddr, String toAddr, String coin, int number, private void payInChain(int tableType, String tableId, String fromAddr, String toAddr, String coin, int number,
Long tokenId, boolean commodityPassOut, boolean isSalesNFTCopy){ Long tokenId, boolean commodityPassAuto, boolean isSalesNFTCopy){
TranDto tranDto = new TranDto(); TranDto tranDto = new TranDto();
tranDto.setFromAddr(fromAddr); tranDto.setFromAddr(fromAddr);
tranDto.setToAddr(toAddr); tranDto.setToAddr(toAddr);
...@@ -241,24 +241,24 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements ...@@ -241,24 +241,24 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements
tranDto.setTableId(tableId); tranDto.setTableId(tableId);
tranDto.setTableType(tableType); tranDto.setTableType(tableType);
String hash; String hash;
boolean doEvmTransfer = true; boolean doEvmExec = true;
/** /**
* 商品为外部导入或者NFT销售类型为“原商品销售”,用外部NFT转账合约 * 商品为外部导入或者NFT销售类型为“原商品销售”,用外部NFT转账合约
*/ */
if (commodityPassOut || !isSalesNFTCopy) { if (commodityPassAuto || isSalesNFTCopy) {
doEvmTransfer = false; doEvmExec = false;
} }
if (doEvmTransfer) { if (doEvmExec) {
long[] tokenIds = new long[]{tokenId};
long[] amounts = new long[]{tranDto.getAmount().longValue()};
hash = chainUtil.evmExec(tokenIds, amounts, tranDto.getFromAddr(), tranDto.getToAddr());
tranDto.setCoinType(TranDto.COIN_TYPE_NFT_OUT);
} else {
/** /**
* 内部nft操作 * 内部nft操作
*/ */
hash = chainUtil.evmTransfer(tranDto.getToAddr(), tranDto.getFromAddr(), tokenId, tranDto.getAmount().longValue()); hash = chainUtil.evmTransfer(tranDto.getToAddr(), tranDto.getFromAddr(), tokenId, tranDto.getAmount().longValue());
tranDto.setCoinType(TranDto.COIN_TYPE_NFT_IN); tranDto.setCoinType(TranDto.COIN_TYPE_NFT_IN);
} else {
long[] tokenIds = new long[]{tokenId};
long[] amounts = new long[]{tranDto.getAmount().longValue()};
hash = chainUtil.evmExec(tokenIds, amounts, tranDto.getFromAddr(), tranDto.getToAddr());
tranDto.setCoinType(TranDto.COIN_TYPE_NFT_OUT);
} }
tranDto.setHash(hash); tranDto.setHash(hash);
producer.sendTTL(JSON.toJSONString(tranDto), QueueTTLTypeEnum.ORDER_REFUND_COINS_TTL, 5 * 1000); producer.sendTTL(JSON.toJSONString(tranDto), QueueTTLTypeEnum.ORDER_REFUND_COINS_TTL, 5 * 1000);
......
...@@ -95,23 +95,23 @@ public class UserAssetTransferRecordServiceImpl extends ServiceImpl<UserAssetTra ...@@ -95,23 +95,23 @@ public class UserAssetTransferRecordServiceImpl extends ServiceImpl<UserAssetTra
} }
boolean isSalesNFTCopy = goodSpu.getNftSalesType().equals(GoodSpu.NFT_SALES_TYPE_COPY); boolean isSalesNFTCopy = goodSpu.getNftSalesType().equals(GoodSpu.NFT_SALES_TYPE_COPY);
boolean commodityPassOut = goodSpu.getCommodityPass().equals(GoodSpu.COMMODITY_PASS_OUT); boolean commodityPassAuto = goodSpu.getCommodityPass().equals(Spu.COMMODITY_PASS_AUTO);
boolean doEvmTransfer = true; boolean doEvmExec = true;
/** /**
* 商品为外部导入或者NFT销售类型为“原商品销售”,用外部NFT转账合约 * 商品为外部导入或者NFT销售类型为“原商品销售”,用外部NFT转账合约
*/ */
if (commodityPassOut || !isSalesNFTCopy) { if (commodityPassAuto || isSalesNFTCopy) {
doEvmTransfer = false; doEvmExec = false;
} }
String hash; String hash;
if (doEvmTransfer) { if (doEvmExec) {
hash = chainUtil.evmTransfer(userRecive.getAddress(), user.getAddress(), goodSpu.getTokenId(), amount.longValue());
goodSpu.setCoinType(TranDto.COIN_TYPE_NFT_IN);
} else {
long[] tokenIds = new long[]{goodSpu.getTokenId()}; long[] tokenIds = new long[]{goodSpu.getTokenId()};
long[] amounts = new long[]{amount.longValue()}; long[] amounts = new long[]{amount.longValue()};
hash = chainUtil.evmExec(tokenIds, amounts, user.getAddress(), userRecive.getAddress()); hash = chainUtil.evmExec(tokenIds, amounts, user.getAddress(), userRecive.getAddress());
goodSpu.setCoinType(TranDto.COIN_TYPE_NFT_OUT); goodSpu.setCoinType(TranDto.COIN_TYPE_NFT_OUT);
} else {
hash = chainUtil.evmTransfer(userRecive.getAddress(), user.getAddress(), goodSpu.getTokenId(), amount.longValue());
goodSpu.setCoinType(TranDto.COIN_TYPE_NFT_IN);
} }
return hash; return hash;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment