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

Commit 00f4e974 authored by anjiabin's avatar anjiabin

实现百度链nft转让功能

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