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
goodsSpu.initTokenId();
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
if (isSalesNFTCopy){
serialNoList.forEach(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{
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
}
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.setFromAddr(fromAddr);
tranDto.setToAddr(toAddr);
......@@ -241,24 +241,24 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements
tranDto.setTableId(tableId);
tranDto.setTableType(tableType);
String hash;
boolean doEvmTransfer = true;
boolean doEvmExec = true;
/**
* 商品为外部导入或者NFT销售类型为“原商品销售”,用外部NFT转账合约
*/
if (commodityPassOut || !isSalesNFTCopy) {
doEvmTransfer = false;
if (commodityPassAuto || isSalesNFTCopy) {
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操作
*/
hash = chainUtil.evmTransfer(tranDto.getToAddr(), tranDto.getFromAddr(), tokenId, tranDto.getAmount().longValue());
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);
producer.sendTTL(JSON.toJSONString(tranDto), QueueTTLTypeEnum.ORDER_REFUND_COINS_TTL, 5 * 1000);
......
......@@ -95,23 +95,23 @@ public class UserAssetTransferRecordServiceImpl extends ServiceImpl<UserAssetTra
}
boolean isSalesNFTCopy = goodSpu.getNftSalesType().equals(GoodSpu.NFT_SALES_TYPE_COPY);
boolean commodityPassOut = goodSpu.getCommodityPass().equals(GoodSpu.COMMODITY_PASS_OUT);
boolean doEvmTransfer = true;
boolean commodityPassAuto = goodSpu.getCommodityPass().equals(Spu.COMMODITY_PASS_AUTO);
boolean doEvmExec = true;
/**
* 商品为外部导入或者NFT销售类型为“原商品销售”,用外部NFT转账合约
*/
if (commodityPassOut || !isSalesNFTCopy) {
doEvmTransfer = false;
if (commodityPassAuto || isSalesNFTCopy) {
doEvmExec = false;
}
String hash;
if (doEvmTransfer) {
hash = chainUtil.evmTransfer(userRecive.getAddress(), user.getAddress(), goodSpu.getTokenId(), amount.longValue());
goodSpu.setCoinType(TranDto.COIN_TYPE_NFT_IN);
} else {
if (doEvmExec) {
long[] tokenIds = new long[]{goodSpu.getTokenId()};
long[] amounts = new long[]{amount.longValue()};
hash = chainUtil.evmExec(tokenIds, amounts, user.getAddress(), userRecive.getAddress());
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;
}
......
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