记得上下班打卡 | git大法好,push需谨慎

Commit 00f4e974 authored by anjiabin's avatar anjiabin

实现百度链nft转让功能

parent 271945c4
...@@ -195,97 +195,103 @@ public class XuperTradeBiz { ...@@ -195,97 +195,103 @@ public class XuperTradeBiz {
return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_FAIL_RECEIVER_NOT_EXIST.getCode(), GalaxyErrorEnum.NFT_TRANSFER_FAIL_RECEIVER_NOT_EXIST.getMessage()); return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_FAIL_RECEIVER_NOT_EXIST.getCode(), GalaxyErrorEnum.NFT_TRANSFER_FAIL_RECEIVER_NOT_EXIST.getMessage());
} }
GalaxyTransferNftInfoBo transferNftInfoBo = dataUtils.getGalaxyTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId()); try{
//初始化转让信息 GalaxyTransferNftInfoBo transferNftInfoBo = dataUtils.getGalaxyTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId());
if(transferNftInfoBo==null){ //初始化转让信息
transferNftInfoBo = galaxyBeanTransferBiz.buildTransferNftInfoBo(reqDto,userInfoBo,receiveUserInfoBo); if(transferNftInfoBo==null){
dataUtils.setGalaxyTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId(),transferNftInfoBo); transferNftInfoBo = galaxyBeanTransferBiz.buildTransferNftInfoBo(reqDto,userInfoBo,receiveUserInfoBo);
}else{ dataUtils.setGalaxyTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId(),transferNftInfoBo);
//判断藏品当前拥有者是否匹配 }else{
if(transferNftInfoBo.getUserId().equalsIgnoreCase(reqDto.getUserId())){ //判断藏品当前拥有者是否匹配
if(transferNftInfoBo.getTransferStatus().equalsIgnoreCase(GalaxyEnum.NftTransferStatusEnum.PROCESSING.getCode())){ if(transferNftInfoBo.getUserId().equalsIgnoreCase(reqDto.getUserId())){
transferNftInfoBo.setErrorCode(GalaxyErrorEnum.NFT_TRANSFERING_ERROR.getCode()); if(transferNftInfoBo.getTransferStatus().equalsIgnoreCase(GalaxyEnum.NftTransferStatusEnum.PROCESSING.getCode())){
transferNftInfoBo.setErrorMsg(GalaxyErrorEnum.NFT_TRANSFERING_ERROR.getMessage()); transferNftInfoBo.setErrorCode(GalaxyErrorEnum.NFT_TRANSFERING_ERROR.getCode());
transferNftInfoBo.setErrorMsg(GalaxyErrorEnum.NFT_TRANSFERING_ERROR.getMessage());
transferNftInfoBo.setUpdatedAt(DateUtil.getNowTime());
dataUtils.updateTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId(),transferNftInfoBo);
return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFERING_ERROR.getCode(), GalaxyErrorEnum.NFT_TRANSFERING_ERROR.getMessage());
}else if(transferNftInfoBo.getTransferStatus().equalsIgnoreCase(GalaxyEnum.NftTransferStatusEnum.SUCCESS.getCode())){
GalaxyNftTransferRespDto galaxyNftTransferRespDto = galaxyBeanTransferBiz.buildNftTransferRespDto(reqDto,userInfoBo,receiveUserInfoBo,transferNftInfoBo);
return ResponseDto.success(galaxyNftTransferRespDto);
}else if(transferNftInfoBo.getTransferStatus().equalsIgnoreCase(GalaxyEnum.NftTransferStatusEnum.FAIL.getCode())){
return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_FAIL.getCode(), GalaxyErrorEnum.NFT_TRANSFER_FAIL.getMessage());
}
}else{
transferNftInfoBo.setErrorCode(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getCode());
transferNftInfoBo.setErrorMsg(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getMessage());
transferNftInfoBo.setUpdatedAt(DateUtil.getNowTime()); transferNftInfoBo.setUpdatedAt(DateUtil.getNowTime());
dataUtils.updateTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId(),transferNftInfoBo); dataUtils.updateTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId(),transferNftInfoBo);
return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getCode(), GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getMessage());
return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFERING_ERROR.getCode(), GalaxyErrorEnum.NFT_TRANSFERING_ERROR.getMessage());
}else if(transferNftInfoBo.getTransferStatus().equalsIgnoreCase(GalaxyEnum.NftTransferStatusEnum.SUCCESS.getCode())){
GalaxyNftTransferRespDto galaxyNftTransferRespDto = galaxyBeanTransferBiz.buildNftTransferRespDto(reqDto,userInfoBo,receiveUserInfoBo,transferNftInfoBo);
return ResponseDto.success(galaxyNftTransferRespDto);
}else if(transferNftInfoBo.getTransferStatus().equalsIgnoreCase(GalaxyEnum.NftTransferStatusEnum.FAIL.getCode())){
return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_FAIL.getCode(), GalaxyErrorEnum.NFT_TRANSFER_FAIL.getMessage());
} }
}else{
transferNftInfoBo.setErrorCode(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getCode());
transferNftInfoBo.setErrorMsg(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getMessage());
transferNftInfoBo.setUpdatedAt(DateUtil.getNowTime());
dataUtils.updateTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId(),transferNftInfoBo);
return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getCode(), GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getMessage());
} }
}
//资产id //资产id
Long assetId = null; Long assetId = null;
//碎片id //碎片id
Long shardId = null; Long shardId = null;
//拆分nftId 格式 {assetId_shardId} //拆分nftId 格式 {assetId_shardId}
if(StringUtil.isNotEmpty(transferNftInfoBo.getNftId())){ if(StringUtil.isNotEmpty(transferNftInfoBo.getNftId())){
assetId = Long.parseLong(transferNftInfoBo.getNftId().substring(0,reqDto.getNftId().lastIndexOf("_"))); assetId = Long.parseLong(transferNftInfoBo.getNftId().substring(0,reqDto.getNftId().lastIndexOf("_")));
shardId = Long.parseLong(transferNftInfoBo.getNftId().substring(reqDto.getNftId().lastIndexOf("_")+1,reqDto.getNftId().length())); shardId = Long.parseLong(transferNftInfoBo.getNftId().substring(reqDto.getNftId().lastIndexOf("_")+1,reqDto.getNftId().length()));
}else{ }else{
return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_NFTID_FORMAT_ERROR.getCode(), GalaxyErrorEnum.NFT_TRANSFER_NFTID_FORMAT_ERROR.getMessage()); return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_NFTID_FORMAT_ERROR.getCode(), GalaxyErrorEnum.NFT_TRANSFER_NFTID_FORMAT_ERROR.getMessage());
} }
//nft信息核对 //nft信息核对
if(StringUtil.isNotNull(assetId)&&StringUtil.isNotNull(shardId)){ if(StringUtil.isNotNull(assetId)&&StringUtil.isNotNull(shardId)){
boolean checkNftOwnerFlag = this.checkNftOwner(userInfoBo,reqDto.getNftId(),assetId,shardId); boolean checkNftOwnerFlag = this.checkNftOwner(userInfoBo,reqDto.getNftId(),assetId,shardId);
log.info("nftTransfer checkNftOwnerFlag:{}",checkNftOwnerFlag); log.info("nftTransfer checkNftOwnerFlag:{}",checkNftOwnerFlag);
//拥有者匹配 可以转让 //拥有者匹配 可以转让
if(checkNftOwnerFlag){ if(checkNftOwnerFlag){
Xuper008TransferShardReqDto xuper008TransferShardReqDto = Xuper008TransferShardReqDto.getNew(); Xuper008TransferShardReqDto xuper008TransferShardReqDto = Xuper008TransferShardReqDto.getNew();
// 定义返回结果对象 // 定义返回结果对象
Xuper008TransferShardRespDto xuper008TransferShardRespDto = null; Xuper008TransferShardRespDto xuper008TransferShardRespDto = null;
try { try {
xuper008TransferShardReqDto.setMnemonic(userInfoBo.getMnemonic()); xuper008TransferShardReqDto.setMnemonic(userInfoBo.getMnemonic());
xuper008TransferShardReqDto.setAssetId(assetId); xuper008TransferShardReqDto.setAssetId(assetId);
xuper008TransferShardReqDto.setShardId(shardId); xuper008TransferShardReqDto.setShardId(shardId);
xuper008TransferShardReqDto.setToAddr(xuperSdkUtil.getAccount(receiveUserInfoBo.getMnemonic()).getAddress()); xuper008TransferShardReqDto.setToAddr(xuperSdkUtil.getAccount(receiveUserInfoBo.getMnemonic()).getAddress());
xuper008TransferShardReqDto.setToUserId(Long.parseLong(String.valueOf(receiveUserInfoBo.getUserId().hashCode()))); xuper008TransferShardReqDto.setToUserId(Long.parseLong(String.valueOf(receiveUserInfoBo.getUserId().hashCode())));
xuper008TransferShardReqDto.setPrice(0l); xuper008TransferShardReqDto.setPrice(0l);
XuperResponseDto<Xuper008TransferShardRespDto> transferResponseDto = xuperSdkUtil.xuper008TransferShard(xuper008TransferShardReqDto); XuperResponseDto<Xuper008TransferShardRespDto> transferResponseDto = xuperSdkUtil.xuper008TransferShard(xuper008TransferShardReqDto);
if(transferResponseDto.isSuccess()){ if(transferResponseDto.isSuccess()){
xuper008TransferShardRespDto = transferResponseDto.getParseData(Xuper008TransferShardRespDto.class); xuper008TransferShardRespDto = transferResponseDto.getParseData(Xuper008TransferShardRespDto.class);
if(String.valueOf(xuper008TransferShardRespDto.getErrNo()).equalsIgnoreCase(ErrorCode.SUCCESS.getCode())){ if(String.valueOf(xuper008TransferShardRespDto.getErrNo()).equalsIgnoreCase(ErrorCode.SUCCESS.getCode())){
//更新转让状态和拥有者信息(只有成功才更新拥有者信息) //更新转让状态和拥有者信息(只有成功才更新拥有者信息)
transferNftInfoBo.setTransferStatus(GalaxyEnum.NftTransferStatusEnum.PROCESSING.getCode()); transferNftInfoBo.setTransferStatus(GalaxyEnum.NftTransferStatusEnum.PROCESSING.getCode());
transferNftInfoBo.setUpdatedAt(DateUtil.getNowTime()); transferNftInfoBo.setUpdatedAt(DateUtil.getNowTime());
dataUtils.updateTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId(),transferNftInfoBo); dataUtils.updateTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId(),transferNftInfoBo);
//构造返回结果 //构造返回结果
GalaxyNftTransferRespDto galaxyNftTransferRespDto = galaxyBeanTransferBiz.buildNftTransferRespDto(reqDto,userInfoBo,receiveUserInfoBo,transferNftInfoBo); GalaxyNftTransferRespDto galaxyNftTransferRespDto = galaxyBeanTransferBiz.buildNftTransferRespDto(reqDto,userInfoBo,receiveUserInfoBo,transferNftInfoBo);
return ResponseDto.success(galaxyNftTransferRespDto); return ResponseDto.success(galaxyNftTransferRespDto);
}
} }
}catch (XupterException e) {
log.error("biz error msg "+e.getMessage(),e);
}catch (Exception e) {
log.error("sys error msg "+e.getMessage(),e);
} }
}catch (XupterException e) { log.info("testXuper008TransferShard resp : "+ JsonUtils.toJson(xuper008TransferShardRespDto));
log.error("biz error msg "+e.getMessage(),e); }else{
}catch (Exception e) { //更新转让状态和拥有者信息(只有成功才更新拥有者信息)
log.error("sys error msg "+e.getMessage(),e); transferNftInfoBo.setTransferStatus(GalaxyEnum.NftTransferStatusEnum.FAIL.getCode());
transferNftInfoBo.setErrorCode(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getCode());
transferNftInfoBo.setErrorMsg(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getMessage());
transferNftInfoBo.setUpdatedAt(DateUtil.getNowTime());
dataUtils.updateTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId(),transferNftInfoBo);
return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getCode(), GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getMessage());
} }
log.info("testXuper008TransferShard resp : "+ JsonUtils.toJson(xuper008TransferShardRespDto));
}else{
//更新转让状态和拥有者信息(只有成功才更新拥有者信息)
transferNftInfoBo.setTransferStatus(GalaxyEnum.NftTransferStatusEnum.FAIL.getCode());
transferNftInfoBo.setErrorCode(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getCode());
transferNftInfoBo.setErrorMsg(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getMessage());
transferNftInfoBo.setUpdatedAt(DateUtil.getNowTime());
dataUtils.updateTransferNftInfoBo(reqDto.getRouterType(),reqDto.getTransOrderId(),transferNftInfoBo);
return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getCode(), GalaxyErrorEnum.NFT_TRANSFER_OWNER_MATCH_ERROR.getMessage());
} }
}catch (XupterException e) {
log.error("biz error msg "+e.getMessage(),e);
}catch (Exception e) {
log.error("sys error msg "+e.getMessage(),e);
} }
return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_FAIL.getCode(), GalaxyErrorEnum.NFT_TRANSFER_FAIL.getMessage()); return ResponseDto.failure(GalaxyErrorEnum.NFT_TRANSFER_FAIL.getCode(), GalaxyErrorEnum.NFT_TRANSFER_FAIL.getMessage());
} }
......
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