记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
62b5ebc3
Commit
62b5ebc3
authored
Sep 07, 2022
by
anjiabin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
实现至信链转让相关逻辑
parent
ce2503cc
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
303 additions
and
2 deletions
+303
-2
GalaxyTransferNftInfoBo.java
...uidnet/service/galaxy/dto/bo/GalaxyTransferNftInfoBo.java
+10
-0
GalaxyBeanTransferBiz.java
...m/liquidnet/service/galaxy/biz/GalaxyBeanTransferBiz.java
+2
-0
ZxinTradeBiz.java
...iquidnet/service/galaxy/router/zxin/biz/ZxinTradeBiz.java
+289
-0
GalaxyRouterStrategyZxlTradeImpl.java
...router/zxin/service/GalaxyRouterStrategyZxlTradeImpl.java
+2
-2
No files found.
liquidnet-bus-api/liquidnet-service-galaxy-api/src/main/java/com/liquidnet/service/galaxy/dto/bo/GalaxyTransferNftInfoBo.java
View file @
62b5ebc3
package
com
.
liquidnet
.
service
.
galaxy
.
dto
.
bo
;
package
com
.
liquidnet
.
service
.
galaxy
.
dto
.
bo
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -15,6 +16,7 @@ import java.io.Serializable;
...
@@ -15,6 +16,7 @@ import java.io.Serializable;
* @date 2022/8/12 13:36
* @date 2022/8/12 13:36
*/
*/
@Data
@Data
@JsonIgnoreProperties
(
value
=
{
"nftOrderPayId"
,
"nftOrderPayId2"
},
ignoreUnknown
=
true
)
public
class
GalaxyTransferNftInfoBo
implements
Serializable
,
Cloneable
{
public
class
GalaxyTransferNftInfoBo
implements
Serializable
,
Cloneable
{
/**
/**
* 转让流水号(平台转让订单id)
* 转让流水号(平台转让订单id)
...
@@ -48,6 +50,14 @@ public class GalaxyTransferNftInfoBo implements Serializable,Cloneable{
...
@@ -48,6 +50,14 @@ public class GalaxyTransferNftInfoBo implements Serializable,Cloneable{
* nft当前拥有者addr(转让成功后更新)
* nft当前拥有者addr(转让成功后更新)
*/
*/
private
String
ownerAddress
;
private
String
ownerAddress
;
/**
* nft转让任务ID
*/
private
String
nftTransferTaskId
;
/**
* nft转让时间
*/
private
String
nftTransferChainTimestamp
;
/**
/**
* 转让hash
* 转让hash
*/
*/
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-common/src/main/java/com/liquidnet/service/galaxy/biz/GalaxyBeanTransferBiz.java
View file @
62b5ebc3
...
@@ -161,6 +161,8 @@ public class GalaxyBeanTransferBiz {
...
@@ -161,6 +161,8 @@ public class GalaxyBeanTransferBiz {
transferNftInfoBo
.
setSeriesId
(
null
);
transferNftInfoBo
.
setSeriesId
(
null
);
transferNftInfoBo
.
setRouterType
(
reqDto
.
getRouterType
());
transferNftInfoBo
.
setRouterType
(
reqDto
.
getRouterType
());
transferNftInfoBo
.
setTransferStatus
(
GalaxyEnum
.
NftTransferStatusEnum
.
INIT
.
getCode
());
transferNftInfoBo
.
setTransferStatus
(
GalaxyEnum
.
NftTransferStatusEnum
.
INIT
.
getCode
());
transferNftInfoBo
.
setNftTransferTaskId
(
null
);
transferNftInfoBo
.
setNftTransferChainTimestamp
(
null
);
transferNftInfoBo
.
setTransferHash
(
null
);
transferNftInfoBo
.
setTransferHash
(
null
);
transferNftInfoBo
.
setErrorCode
(
null
);
transferNftInfoBo
.
setErrorCode
(
null
);
transferNftInfoBo
.
setErrorMsg
(
null
);
transferNftInfoBo
.
setErrorMsg
(
null
);
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/galaxy/router/zxin/biz/ZxinTradeBiz.java
View file @
62b5ebc3
...
@@ -3,8 +3,10 @@ package com.liquidnet.service.galaxy.router.zxin.biz;
...
@@ -3,8 +3,10 @@ package com.liquidnet.service.galaxy.router.zxin.biz;
import
com.liquidnet.common.exception.LiquidnetServiceException
;
import
com.liquidnet.common.exception.LiquidnetServiceException
;
import
com.liquidnet.common.third.zxlnft.biz.ZxlnftBiz
;
import
com.liquidnet.common.third.zxlnft.biz.ZxlnftBiz
;
import
com.liquidnet.common.third.zxlnft.config.ZxlnftConfig
;
import
com.liquidnet.common.third.zxlnft.config.ZxlnftConfig
;
import
com.liquidnet.common.third.zxlnft.constant.ZxlErrorEnum
;
import
com.liquidnet.common.third.zxlnft.constant.ZxlnftEnum
;
import
com.liquidnet.common.third.zxlnft.constant.ZxlnftEnum
;
import
com.liquidnet.common.third.zxlnft.dto.*
;
import
com.liquidnet.common.third.zxlnft.dto.*
;
import
com.liquidnet.common.third.zxlnft.exception.ZxlNftException
;
import
com.liquidnet.common.third.zxlnft.util.ZxlnftSdkUtil
;
import
com.liquidnet.common.third.zxlnft.util.ZxlnftSdkUtil
;
import
com.liquidnet.commons.lang.util.*
;
import
com.liquidnet.commons.lang.util.*
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
...
@@ -14,8 +16,10 @@ import com.liquidnet.service.galaxy.constant.GalaxyEnum;
...
@@ -14,8 +16,10 @@ import com.liquidnet.service.galaxy.constant.GalaxyEnum;
import
com.liquidnet.service.galaxy.constant.GalaxyErrorEnum
;
import
com.liquidnet.service.galaxy.constant.GalaxyErrorEnum
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBo
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBo
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxySeriesNftInfoBo
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxySeriesNftInfoBo
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxyTransferNftInfoBo
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxyUserInfoBo
;
import
com.liquidnet.service.galaxy.dto.bo.GalaxyUserInfoBo
;
import
com.liquidnet.service.galaxy.dto.param.*
;
import
com.liquidnet.service.galaxy.dto.param.*
;
import
com.liquidnet.service.galaxy.exception.GalaxyNftPublishException
;
import
com.liquidnet.service.galaxy.utils.GalaxyDataUtils
;
import
com.liquidnet.service.galaxy.utils.GalaxyDataUtils
;
import
com.liquidnet.service.galaxy.utils.QueueUtil
;
import
com.liquidnet.service.galaxy.utils.QueueUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -329,4 +333,289 @@ public class ZxinTradeBiz {
...
@@ -329,4 +333,289 @@ public class ZxinTradeBiz {
public
ResponseDto
<
GalaxyNftPublishAndBuyRespDto
>
nftPublishAndBuy
(
GalaxyNftPublishAndBuyReqDto
reqDto
)
{
public
ResponseDto
<
GalaxyNftPublishAndBuyRespDto
>
nftPublishAndBuy
(
GalaxyNftPublishAndBuyReqDto
reqDto
)
{
return
zxinTradeCommonBiz
.
nftPublishAndBuy
(
reqDto
);
return
zxinTradeCommonBiz
.
nftPublishAndBuy
(
reqDto
);
}
}
/**
* nft转让
* @param reqDto
* @return
*/
public
ResponseDto
<
GalaxyNftTransferRespDto
>
nftTransfer
(
GalaxyNftTransferReqDto
reqDto
)
{
log
.
info
(
"nftTransfer request param:{}"
,
JsonUtils
.
toJson
(
reqDto
));
//获取用户信息
GalaxyUserInfoBo
userInfoBo
=
dataUtils
.
getGalaxyUserInfo
(
reqDto
.
getRouterType
(),
reqDto
.
getUserId
());
if
(
StringUtil
.
isNull
(
userInfoBo
)){
log
.
error
(
"开始执行 nftTransfer nft owner not exist error msg:{}"
,
GalaxyErrorEnum
.
NFT_TRANSFER_FAIL_OWNER_NOT_EXIST
.
getMessage
());
return
ResponseDto
.
failure
(
GalaxyErrorEnum
.
NFT_TRANSFER_FAIL_OWNER_NOT_EXIST
.
getCode
(),
GalaxyErrorEnum
.
NFT_TRANSFER_FAIL_OWNER_NOT_EXIST
.
getMessage
());
}
//获取用户信息
GalaxyUserInfoBo
receiveUserInfoBo
=
dataUtils
.
getGalaxyUserInfo
(
reqDto
.
getRouterType
(),
reqDto
.
getReceiveUserId
());
if
(
StringUtil
.
isNull
(
userInfoBo
)){
log
.
error
(
"开始执行 nftTransfer nft receiver not exist error msg:{}"
,
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
());
}
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_TRANSFER_OWNER_MATCH_ERROR
.
getCode
(),
GalaxyErrorEnum
.
NFT_TRANSFER_OWNER_MATCH_ERROR
.
getMessage
());
}
}
//nft信息核对
if
(
StringUtil
.
isNotEmpty
(
reqDto
.
getNftId
())){
boolean
checkNftOwnerFlag
=
this
.
checkNftOwner
(
userInfoBo
,
reqDto
.
getNftId
());
log
.
info
(
"nftTransfer checkNftOwnerFlag:{}"
,
checkNftOwnerFlag
);
//拥有者匹配 可以转让
if
(
checkNftOwnerFlag
){
//定义返回参数
String
nftTransferTaskId
=
null
;
Long
nftTransferChainTimestamp
=
null
;
Integer
nftTransferStatus
=
null
;
String
nftTransferTradeHash
=
null
;
try
{
//安家宾1 to 周焕2
String
pubKey
=
userInfoBo
.
getUserPubKey
();
String
priKey
=
userInfoBo
.
getUserPriKey
();
//nft接收者的地址
String
receiverAddr
=
receiveUserInfoBo
.
getBlockChainAddress
();
//要转移的nftId
String
nftId
=
"43c169ae33d2ca5390a49d2319c14223ed5e7447c4b40c0422ef81691ddfee89_1"
;
//请求ID,每个请求需要填唯一的ID,重复请求用相同的id
String
operateId
=
IDGenerator
.
get32UUID
();
/**
* 操作者的私钥签名,签名对象是(pubKey_receiverAddr_接口名_nftId_operateId)
* 接口名:nft_transfer
*/
String
signMetaData
=
pubKey
.
concat
(
"_"
).
concat
(
receiverAddr
)
.
concat
(
"_"
).
concat
(
"nft_transfer"
)
.
concat
(
"_"
).
concat
(
nftId
)
.
concat
(
"_"
).
concat
(
operateId
);
//操作者的私钥签名,签名对象是(pubKey_receiverAddr_接口名_nftId_operateId)
String
signature
=
zxlnftBiz
.
createSign
(
priKey
,
signMetaData
);
Nft046TransferReqDto
nft046TransferReqDto
=
Nft046TransferReqDto
.
getNew
();
nft046TransferReqDto
.
setPubKey
(
pubKey
);
nft046TransferReqDto
.
setReceiverAddr
(
receiverAddr
);
nft046TransferReqDto
.
setNftId
(
nftId
);
nft046TransferReqDto
.
setOperateId
(
operateId
);
nft046TransferReqDto
.
setSignature
(
signature
);
ZxlnftResponseDto
<
Nft046TransferRespDto
>
nft046TransferResp
=
zxlnftSdkUtil
.
nft046TransferV2
(
nft046TransferReqDto
);
Nft046TransferRespDto
nft046TransferRespDto
=
null
;
if
(
nft046TransferResp
.
isSuccess
()){
nft046TransferRespDto
=
nft046TransferResp
.
getParseData
(
Nft046TransferRespDto
.
class
);
if
(
StringUtil
.
isNotNull
(
nft046TransferRespDto
)&&
StringUtil
.
isNotEmpty
(
nft046TransferRespDto
.
getTaskId
())){
//获取任务id
nftTransferTaskId
=
nft046TransferRespDto
.
getTaskId
();
transferNftInfoBo
.
setNftTransferTaskId
(
nftTransferTaskId
);
}
}
if
(
StringUtil
.
isNotEmpty
(
nftTransferTaskId
)){
try
{
Nft049TransferResultReqDto
nft049TransferResultReqDto
=
Nft049TransferResultReqDto
.
getNew
();
nft049TransferResultReqDto
.
setOperatorPubKey
(
userInfoBo
.
getUserPubKey
());
nft049TransferResultReqDto
.
setTaskId
(
nftTransferTaskId
);
int
count
=
0
;
long
timeStart
=
System
.
currentTimeMillis
();
while
(
StringUtil
.
isEmpty
(
nftTransferTradeHash
))
{
Thread
.
sleep
(
500
l
);
count
++;
ZxlnftResponseDto
<
Nft049TransferResultRespDto
>
nft049ZxlnftRespDto
=
zxlnftSdkUtil
.
nft049TransferResult
(
nft049TransferResultReqDto
);
if
(!
nft049ZxlnftRespDto
.
isSuccess
()){
throw
new
ZxlNftException
(
ZxlErrorEnum
.
SYSTEM_ERROR
.
getCode
(),
ZxlErrorEnum
.
SYSTEM_ERROR
.
getMsg
());
}
log
.
info
(
"=======执行第{}次查询,taskId:{}"
,
count
,
nft049TransferResultReqDto
.
getTaskId
());
if
(
nft049ZxlnftRespDto
.
getData
().
getTaskStatus
().
toString
().
equals
(
ZxlnftEnum
.
TaskStatusEnum
.
TASK_SUCCESS
.
getCode
()))
{
nftTransferChainTimestamp
=
nft049ZxlnftRespDto
.
getData
().
getChainTimestamp
();
nftTransferStatus
=
nft049ZxlnftRespDto
.
getData
().
getTaskStatus
();
nftTransferTradeHash
=
nft049ZxlnftRespDto
.
getData
().
getTxHash
();
}
else
if
(
nft049ZxlnftRespDto
.
getData
().
getTaskStatus
().
toString
().
equals
(
ZxlnftEnum
.
TaskStatusEnum
.
TASK_FAIL
.
getCode
()))
{
log
.
info
(
"任务执行失败!taskId:{}"
,
nft049TransferResultReqDto
.
getTaskId
());
nftTransferStatus
=
nft049ZxlnftRespDto
.
getData
().
getTaskStatus
();
//转让失败
throw
new
GalaxyNftPublishException
(
GalaxyErrorEnum
.
NFT_TRANSFER_FAIL
.
getCode
(),
"nft049TransferResult_resp:"
+
GalaxyErrorEnum
.
NFT_TRANSFER_FAIL
.
getMessage
());
}
else
if
(
nft049ZxlnftRespDto
.
getData
().
getTaskStatus
().
toString
().
equals
(
ZxlnftEnum
.
TaskStatusEnum
.
PROCESSING
.
getCode
())){
log
.
info
(
"任务执行中!taskId:{}"
,
nft049TransferResultReqDto
.
getTaskId
());
nftTransferStatus
=
nft049ZxlnftRespDto
.
getData
().
getTaskStatus
();
}
if
(
count
==
20
)
{
log
.
info
(
"=======查询共20次,跳出循环!taskId:{}"
,
nft049TransferResultReqDto
.
getTaskId
());
break
;
}
}
log
.
info
(
"总共执行了{}次查询 总耗时:{} MS"
,
count
,
(
System
.
currentTimeMillis
()
-
timeStart
));
}
catch
(
GalaxyNftPublishException
e
){
throw
new
GalaxyNftPublishException
(
e
.
getCode
(),
e
.
getMessage
());
}
catch
(
Exception
e
){
log
.
error
(
e
.
getMessage
(),
e
);
throw
new
GalaxyNftPublishException
(
GalaxyErrorEnum
.
NFT_TRANSFER_ERROR
.
getCode
(),
"nft049TransferResult_exception:"
+
e
.
getMessage
());
}
//更新转让状态和拥有者信息(只有成功才更新拥有者信息)
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
);
}
else
{
throw
new
GalaxyNftPublishException
(
GalaxyErrorEnum
.
NFT_TRANSFER_ERROR
.
getCode
(),
"nft049TransferResult_resp:taskId : "
+
nftTransferTaskId
);
}
}
catch
(
ZxlNftException
e
)
{
log
.
error
(
"biz error msg "
+
e
.
getMessage
(),
e
);
}
catch
(
Exception
e
)
{
log
.
error
(
"sys error msg "
+
e
.
getMessage
(),
e
);
}
}
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
(
ZxlNftException
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
());
}
/**
* nft转让结果查询
* @param reqDto
* @return
*/
public
ResponseDto
<
GalaxyNftTransferQueryRespDto
>
nftTransferQuery
(
GalaxyNftTransferQueryReqDto
reqDto
)
{
GalaxyTransferNftInfoBo
transferNftInfoBo
=
dataUtils
.
getGalaxyTransferNftInfoBo
(
reqDto
.
getRouterType
(),
reqDto
.
getTransOrderId
());
//初始化转让信息
if
(
transferNftInfoBo
==
null
||
StringUtil
.
isNotEmpty
(
transferNftInfoBo
.
getNftTransferTaskId
())){
return
ResponseDto
.
failure
(
GalaxyErrorEnum
.
NFT_TRANSFER_QUERY_ERROR
.
getCode
(),
GalaxyErrorEnum
.
NFT_TRANSFER_QUERY_ERROR
.
getMessage
());
}
//获取用户信息
GalaxyUserInfoBo
userInfoBo
=
dataUtils
.
getGalaxyUserInfo
(
reqDto
.
getRouterType
(),
transferNftInfoBo
.
getUserId
());
if
(
StringUtil
.
isNull
(
userInfoBo
)){
log
.
error
(
"开始执行 nftTransfer nft owner not exist error msg:{}"
,
GalaxyErrorEnum
.
NFT_TRANSFER_FAIL_OWNER_NOT_EXIST
.
getMessage
());
return
ResponseDto
.
failure
(
GalaxyErrorEnum
.
NFT_TRANSFER_FAIL_OWNER_NOT_EXIST
.
getCode
(),
GalaxyErrorEnum
.
NFT_TRANSFER_FAIL_OWNER_NOT_EXIST
.
getMessage
());
}
if
(
transferNftInfoBo
.
getTransferStatus
().
equalsIgnoreCase
(
GalaxyEnum
.
NftTransferStatusEnum
.
SUCCESS
.
getCode
())){
GalaxyNftTransferQueryRespDto
nftTransferQueryRespDto
=
galaxyBeanTransferBiz
.
buildNftTransferQueryRespDto
(
transferNftInfoBo
);
nftTransferQueryRespDto
.
setTransferStatus
(
GalaxyEnum
.
NftTransferStatusEnum
.
SUCCESS
.
getCode
());
return
ResponseDto
.
success
(
nftTransferQueryRespDto
);
}
else
if
(
transferNftInfoBo
.
getTransferStatus
().
equalsIgnoreCase
(
GalaxyEnum
.
NftTransferStatusEnum
.
PROCESSING
.
getCode
())){
//获取用户信息
GalaxyUserInfoBo
receiveUserInfoBo
=
dataUtils
.
getGalaxyUserInfo
(
reqDto
.
getRouterType
(),
transferNftInfoBo
.
getReceiveUserId
());
if
(
StringUtil
.
isNull
(
receiveUserInfoBo
)){
log
.
error
(
"开始执行 nftTransfer nft receiver not exist error msg:{}"
,
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
());
}
//链上查询转让结果
Nft049TransferResultReqDto
nft049TransferResultReqDto
=
Nft049TransferResultReqDto
.
getNew
();
nft049TransferResultReqDto
.
setOperatorPubKey
(
userInfoBo
.
getUserPubKey
());
nft049TransferResultReqDto
.
setTaskId
(
transferNftInfoBo
.
getNftTransferTaskId
());
ZxlnftResponseDto
<
Nft049TransferResultRespDto
>
nft049ZxlnftRespDto
=
zxlnftSdkUtil
.
nft049TransferResult
(
nft049TransferResultReqDto
);
if
(!
nft049ZxlnftRespDto
.
isSuccess
()){
throw
new
ZxlNftException
(
ZxlErrorEnum
.
SYSTEM_ERROR
.
getCode
(),
ZxlErrorEnum
.
SYSTEM_ERROR
.
getMsg
());
}
Long
nftTransferChainTimestamp
=
null
;
Integer
nftTransferStatus
=
null
;
String
nftTransferTradeHash
=
null
;
GalaxyNftTransferQueryRespDto
nftTransferQueryRespDto
=
galaxyBeanTransferBiz
.
buildNftTransferQueryRespDto
(
transferNftInfoBo
);
if
(
nft049ZxlnftRespDto
.
getData
().
getTaskStatus
().
toString
().
equals
(
ZxlnftEnum
.
TaskStatusEnum
.
TASK_SUCCESS
.
getCode
()))
{
nftTransferChainTimestamp
=
nft049ZxlnftRespDto
.
getData
().
getChainTimestamp
();
nftTransferStatus
=
nft049ZxlnftRespDto
.
getData
().
getTaskStatus
();
nftTransferTradeHash
=
nft049ZxlnftRespDto
.
getData
().
getTxHash
();
if
(
StringUtil
.
isNotEmpty
(
nft049ZxlnftRespDto
.
getData
().
getTxHash
())){
//更新转让成功信息
transferNftInfoBo
.
setOwnerUserId
(
transferNftInfoBo
.
getReceiveUserId
());
transferNftInfoBo
.
setOwnerAddress
(
transferNftInfoBo
.
getReceiveAddress
());
transferNftInfoBo
.
setTransferStatus
(
GalaxyEnum
.
NftTransferStatusEnum
.
SUCCESS
.
getCode
());
transferNftInfoBo
.
setTransferHash
(
nftTransferTradeHash
);
transferNftInfoBo
.
setUpdatedAt
(
DateUtil
.
getNowTime
());
dataUtils
.
updateTransferNftInfoBo
(
reqDto
.
getRouterType
(),
reqDto
.
getTransOrderId
(),
transferNftInfoBo
);
nftTransferQueryRespDto
.
setOwnerUserId
(
transferNftInfoBo
.
getReceiveUserId
());
nftTransferQueryRespDto
.
setOwnerAddress
(
transferNftInfoBo
.
getReceiveAddress
());
nftTransferQueryRespDto
.
setTransferStatus
(
GalaxyEnum
.
NftTransferStatusEnum
.
SUCCESS
.
getCode
());
nftTransferQueryRespDto
.
setTransferHash
(
nftTransferTradeHash
);
}
else
{
nftTransferQueryRespDto
.
setTransferStatus
(
GalaxyEnum
.
NftTransferStatusEnum
.
PROCESSING
.
getCode
());
}
}
return
ResponseDto
.
success
(
nftTransferQueryRespDto
);
}
else
{
return
ResponseDto
.
failure
(
GalaxyErrorEnum
.
NFT_TRANSFER_QUERY_ERROR
.
getCode
(),
GalaxyErrorEnum
.
NFT_TRANSFER_QUERY_ERROR
.
getMessage
());
}
}
/**
* 核对nft当前拥有者是否匹配
* @param userInfoBo
* @param nftId
* @return
*/
private
Boolean
checkNftOwner
(
GalaxyUserInfoBo
userInfoBo
,
String
nftId
){
Boolean
checkNftOwner
=
false
;
Nft036InfoReqDto
reqDto
=
Nft036InfoReqDto
.
getNew
();
reqDto
.
setNftId
(
nftId
);
ZxlnftResponseDto
<
Nft036InfoRespDto
>
resp
=
zxlnftSdkUtil
.
nft036Info
(
reqDto
);
Nft036InfoRespDto
nft036InfoRespDto
=
null
;
if
(
resp
.
isSuccess
()){
nft036InfoRespDto
=
resp
.
getParseData
(
Nft036InfoRespDto
.
class
);
String
ownerAddress
=
nft036InfoRespDto
.
getNftInfo
().
getOwnerAddr
();
//已上链
if
(
ownerAddress
.
equalsIgnoreCase
(
userInfoBo
.
getBlockChainAddress
())){
checkNftOwner
=
true
;
}
}
else
{
log
.
error
(
"nftTransfer error : nftId:{} not exits on xuper blockchain :{} "
,
nftId
,
JsonUtils
.
toJson
(
nft036InfoRespDto
));
}
return
checkNftOwner
;
}
}
}
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/galaxy/router/zxin/service/GalaxyRouterStrategyZxlTradeImpl.java
View file @
62b5ebc3
...
@@ -62,11 +62,11 @@ public class GalaxyRouterStrategyZxlTradeImpl implements IGalaxyRouterStrategyTr
...
@@ -62,11 +62,11 @@ public class GalaxyRouterStrategyZxlTradeImpl implements IGalaxyRouterStrategyTr
@Override
@Override
public
ResponseDto
<
GalaxyNftTransferRespDto
>
nftTransfer
(
GalaxyNftTransferReqDto
reqDto
)
{
public
ResponseDto
<
GalaxyNftTransferRespDto
>
nftTransfer
(
GalaxyNftTransferReqDto
reqDto
)
{
return
null
;
return
zxinTradeBiz
.
nftTransfer
(
reqDto
)
;
}
}
@Override
@Override
public
ResponseDto
<
GalaxyNftTransferQueryRespDto
>
nftTransferQuery
(
GalaxyNftTransferQueryReqDto
reqDto
)
{
public
ResponseDto
<
GalaxyNftTransferQueryRespDto
>
nftTransferQuery
(
GalaxyNftTransferQueryReqDto
reqDto
)
{
return
null
;
return
zxinTradeBiz
.
nftTransferQuery
(
reqDto
)
;
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment