记得上下班打卡 | 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
ba9f16cb
Commit
ba9f16cb
authored
Oct 25, 2022
by
张国柄
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/pre' into pre
parents
ad649625
a3187d8d
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
402 additions
and
55 deletions
+402
-55
GalaxyTransferNftInfoBo.java
...uidnet/service/galaxy/dto/bo/GalaxyTransferNftInfoBo.java
+10
-0
GalaxyBeanTransferBiz.java
...m/liquidnet/service/galaxy/biz/GalaxyBeanTransferBiz.java
+3
-0
XuperTradeCommonBiz.java
.../service/galaxy/router/xuper/biz/XuperTradeCommonBiz.java
+63
-47
AbstractDataUtils.java
...com/liquidnet/service/galaxy/utils/AbstractDataUtils.java
+9
-4
sqlmap-galaxy.properties
...goblin-common/src/main/resources/sqlmap-galaxy.properties
+2
-2
db_galaxy_20220907.sql
...liquidnet-service-goblin-impl/docu/db_galaxy_20220907.sql
+5
-0
ZxinTradeBiz.java
...iquidnet/service/galaxy/router/zxin/biz/ZxinTradeBiz.java
+308
-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 @
ba9f16cb
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 @
ba9f16cb
...
@@ -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
);
...
@@ -184,6 +186,7 @@ public class GalaxyBeanTransferBiz {
...
@@ -184,6 +186,7 @@ public class GalaxyBeanTransferBiz {
respDto
.
setFromUserId
(
userInfoBo
.
getUserId
());
respDto
.
setFromUserId
(
userInfoBo
.
getUserId
());
respDto
.
setFromAddress
(
userInfoBo
.
getBlockChainAddress
());
respDto
.
setFromAddress
(
userInfoBo
.
getBlockChainAddress
());
respDto
.
setTransferTime
(
DateUtil
.
getNowTime
());
respDto
.
setTransferTime
(
DateUtil
.
getNowTime
());
respDto
.
setRouterType
(
transferNftInfoBo
.
getRouterType
());
respDto
.
setTransferHash
(
transferNftInfoBo
.
getTransferHash
());
respDto
.
setTransferHash
(
transferNftInfoBo
.
getTransferHash
());
return
respDto
;
return
respDto
;
}
}
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-common/src/main/java/com/liquidnet/service/galaxy/router/xuper/biz/XuperTradeCommonBiz.java
View file @
ba9f16cb
...
@@ -84,6 +84,9 @@ public class XuperTradeCommonBiz {
...
@@ -84,6 +84,9 @@ public class XuperTradeCommonBiz {
return
ResponseDto
.
failure
(
GalaxyErrorEnum
.
SERIES_NFT_INFO_NOT_EXIST
.
getCode
(),
GalaxyErrorEnum
.
SERIES_NFT_INFO_NOT_EXIST
.
getMessage
());
return
ResponseDto
.
failure
(
GalaxyErrorEnum
.
SERIES_NFT_INFO_NOT_EXIST
.
getCode
(),
GalaxyErrorEnum
.
SERIES_NFT_INFO_NOT_EXIST
.
getMessage
());
}
}
//生成nftId
String
nftId
=
this
.
createNftId
(
reqDto
,
seriesNftInfoBo
);
//获取订单信息
//获取订单信息
GalaxyNftOrderBo
nftOrderBo
=
dataUtils
.
getNftOrderBo
(
reqDto
.
getRouterType
(),
reqDto
.
getNftOrderPayId
());
GalaxyNftOrderBo
nftOrderBo
=
dataUtils
.
getNftOrderBo
(
reqDto
.
getRouterType
(),
reqDto
.
getNftOrderPayId
());
//初始化订单数据
//初始化订单数据
...
@@ -92,6 +95,11 @@ public class XuperTradeCommonBiz {
...
@@ -92,6 +95,11 @@ public class XuperTradeCommonBiz {
nftOrderBo
.
setNftPublishTaskId
(
seriesNftInfoBo
.
getSeriesId
());
nftOrderBo
.
setNftPublishTaskId
(
seriesNftInfoBo
.
getSeriesId
());
nftOrderBo
.
setNftPublishFromAddress
(
xuperConfig
.
getNftPlatformAddress
());
nftOrderBo
.
setNftPublishFromAddress
(
xuperConfig
.
getNftPlatformAddress
());
nftOrderBo
.
setNftBuyFromAddress
(
xuperConfig
.
getNftPlatformAddress
());
nftOrderBo
.
setNftBuyFromAddress
(
xuperConfig
.
getNftPlatformAddress
());
//设置购买标志
nftOrderBo
.
setNftId
(
nftId
);
nftOrderBo
.
setNftPublishChainTimestamp
(
seriesNftInfoBo
.
getUpdatedAt
().
toString
());
nftOrderBo
.
setNftPublishTradeHash
(
seriesNftInfoBo
.
getNftPublishTradeHash
());
nftOrderBo
.
setNftPublishStatus
(
seriesNftInfoBo
.
getNftPublishStatus
());
dataUtils
.
setNftOrderBo
(
reqDto
.
getRouterType
(),
reqDto
.
getNftOrderPayId
(),
nftOrderBo
);
dataUtils
.
setNftOrderBo
(
reqDto
.
getRouterType
(),
reqDto
.
getNftOrderPayId
(),
nftOrderBo
);
}
else
if
(
StringUtil
.
isNotNull
(
nftOrderBo
)){
}
else
if
(
StringUtil
.
isNotNull
(
nftOrderBo
)){
if
(
nftOrderBo
.
getNftPublishStatus
().
equalsIgnoreCase
(
GalaxyEnum
.
TaskStatusEnum
.
TASK_SUCCESS
.
getCode
())
if
(
nftOrderBo
.
getNftPublishStatus
().
equalsIgnoreCase
(
GalaxyEnum
.
TaskStatusEnum
.
TASK_SUCCESS
.
getCode
())
...
@@ -116,14 +124,7 @@ public class XuperTradeCommonBiz {
...
@@ -116,14 +124,7 @@ public class XuperTradeCommonBiz {
}
}
}
}
//开始索引
Integer
seriesBeginIndex
=
null
;
/**
* 根据sku获取系列Id
*/
String
seriesId
=
seriesNftInfoBo
.
getSeriesId
();
//返回参数nftId
//返回参数nftId
String
nftId
=
null
;
String
publishTaskId
=
null
;
String
publishTaskId
=
null
;
Long
nftPublishChainTimestamp
=
null
;
Long
nftPublishChainTimestamp
=
null
;
Integer
nftPublishStatus
=
null
;
Integer
nftPublishStatus
=
null
;
...
@@ -135,46 +136,6 @@ public class XuperTradeCommonBiz {
...
@@ -135,46 +136,6 @@ public class XuperTradeCommonBiz {
boolean
isPublishSuccess
=
false
;
boolean
isPublishSuccess
=
false
;
try
{
try
{
/**
* 获取订单和nft绑定信息
*/
GalaxyNftOrderBindBo
nftOrderBindBo
=
dataUtils
.
getGalaxyNftOrderBindBo
(
reqDto
.
getRouterType
(),
reqDto
.
getNftOrderPayId
());
if
(
StringUtil
.
isNull
(
nftOrderBindBo
)){
//获取发行索引
long
nftIdNo
=
dataUtils
.
incrNftIdNo
(
reqDto
.
getRouterType
(),
reqDto
.
getSkuId
());
//如果发行数大于最大发行数量
if
(
nftIdNo
>
seriesNftInfoBo
.
getNftTotalCount
()){
//发行失败
throw
new
GalaxyNftPublishException
(
GalaxyErrorEnum
.
NFT_PUBLISH_ERROR
.
getCode
(),
"该sku:"
+
reqDto
.
getSkuId
()+
" 总共"
+
seriesNftInfoBo
.
getNftTotalCount
()+
"个NFT已经发行完毕,没有剩余库存!"
);
}
//判断是否切换订单
while
(
galaxyTradeBiz
.
isNeedSwitch
(
reqDto
.
getSkuId
(),
String
.
valueOf
(
nftIdNo
))){
long
finalNftIdNo
=
nftIdNo
;
//开启新线程去执行购买
executorService
.
submit
(()
->
{
galaxyTradeBiz
.
switchBuyRouterBySkuId
(
reqDto
.
getSkuId
(),
String
.
valueOf
(
finalNftIdNo
),
seriesNftInfoBo
);
});
nftIdNo
=
dataUtils
.
incrNftIdNo
(
reqDto
.
getRouterType
(),
reqDto
.
getSkuId
());
}
nftOrderBindBo
=
GalaxyNftOrderBindBo
.
getNew
();
nftOrderBindBo
.
setNftOrderPayId
(
reqDto
.
getNftOrderPayId
());
nftOrderBindBo
.
setSeriesId
(
seriesNftInfoBo
.
getSeriesId
());
nftOrderBindBo
.
setSeriesCode
(
seriesNftInfoBo
.
getSeriesCode
());
nftOrderBindBo
.
setNftIdIndex
(
Integer
.
valueOf
(
String
.
valueOf
(
nftIdNo
)));
nftOrderBindBo
.
setRouterType
(
reqDto
.
getRouterType
());
String
nowTimeStr
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
LocalDateTime
.
now
());
nftOrderBindBo
.
setCreatedAt
(
nowTimeStr
);
dataUtils
.
setGalaxyNftOrderBindBo
(
reqDto
.
getRouterType
(),
reqDto
.
getNftOrderPayId
(),
nftOrderBindBo
);
}
seriesBeginIndex
=
nftOrderBindBo
.
getNftIdIndex
();
//设置nftId
nftId
=
seriesId
.
concat
(
"_"
).
concat
(
seriesBeginIndex
.
toString
());
//设置购买标志
nftOrderBo
.
setNftId
(
nftId
);
/**
/**
* 如果已经发行成功
* 如果已经发行成功
*/
*/
...
@@ -367,6 +328,61 @@ public class XuperTradeCommonBiz {
...
@@ -367,6 +328,61 @@ public class XuperTradeCommonBiz {
return
nftPublishAndBuyRespDto
;
return
nftPublishAndBuyRespDto
;
}
}
/**
* 生成nftId
* @param reqDto
* @param seriesNftInfoBo
* @return
*/
private
String
createNftId
(
GalaxyNftPublishAndBuyReqDto
reqDto
,
GalaxySeriesNftInfoBo
seriesNftInfoBo
){
//开始索引
Integer
seriesBeginIndex
=
null
;
/**
* 根据sku获取系列Id
*/
String
seriesId
=
seriesNftInfoBo
.
getSeriesId
();
//返回参数nftId
String
nftId
=
null
;
/**
* 获取订单和nft绑定信息
*/
GalaxyNftOrderBindBo
nftOrderBindBo
=
dataUtils
.
getGalaxyNftOrderBindBo
(
reqDto
.
getRouterType
(),
reqDto
.
getNftOrderPayId
());
if
(
StringUtil
.
isNull
(
nftOrderBindBo
)){
//获取发行索引
long
nftIdNo
=
dataUtils
.
incrNftIdNo
(
reqDto
.
getRouterType
(),
reqDto
.
getSkuId
());
//如果发行数大于最大发行数量
if
(
nftIdNo
>
seriesNftInfoBo
.
getNftTotalCount
()){
//发行失败
throw
new
GalaxyNftPublishException
(
GalaxyErrorEnum
.
NFT_PUBLISH_ERROR
.
getCode
(),
"该sku:"
+
reqDto
.
getSkuId
()+
" 总共"
+
seriesNftInfoBo
.
getNftTotalCount
()+
"个NFT已经发行完毕,没有剩余库存!"
);
}
//判断是否切换订单
while
(
galaxyTradeBiz
.
isNeedSwitch
(
reqDto
.
getSkuId
(),
String
.
valueOf
(
nftIdNo
))){
long
finalNftIdNo
=
nftIdNo
;
//开启新线程去执行购买
executorService
.
submit
(()
->
{
galaxyTradeBiz
.
switchBuyRouterBySkuId
(
reqDto
.
getSkuId
(),
String
.
valueOf
(
finalNftIdNo
),
seriesNftInfoBo
);
});
nftIdNo
=
dataUtils
.
incrNftIdNo
(
reqDto
.
getRouterType
(),
reqDto
.
getSkuId
());
}
nftOrderBindBo
=
GalaxyNftOrderBindBo
.
getNew
();
nftOrderBindBo
.
setNftOrderPayId
(
reqDto
.
getNftOrderPayId
());
nftOrderBindBo
.
setSeriesId
(
seriesNftInfoBo
.
getSeriesId
());
nftOrderBindBo
.
setSeriesCode
(
seriesNftInfoBo
.
getSeriesCode
());
nftOrderBindBo
.
setNftIdIndex
(
Integer
.
valueOf
(
String
.
valueOf
(
nftIdNo
)));
nftOrderBindBo
.
setRouterType
(
reqDto
.
getRouterType
());
String
nowTimeStr
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
LocalDateTime
.
now
());
nftOrderBindBo
.
setCreatedAt
(
nowTimeStr
);
dataUtils
.
setGalaxyNftOrderBindBo
(
reqDto
.
getRouterType
(),
reqDto
.
getNftOrderPayId
(),
nftOrderBindBo
);
}
seriesBeginIndex
=
nftOrderBindBo
.
getNftIdIndex
();
//设置nftId
nftId
=
seriesId
.
concat
(
"_"
).
concat
(
seriesBeginIndex
.
toString
());
return
nftId
;
}
/**
/**
* 保持线程循环查询
* 保持线程循环查询
* @param nftId
* @param nftId
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-common/src/main/java/com/liquidnet/service/galaxy/utils/AbstractDataUtils.java
View file @
ba9f16cb
...
@@ -545,8 +545,11 @@ public abstract class AbstractDataUtils {
...
@@ -545,8 +545,11 @@ public abstract class AbstractDataUtils {
try
{
try
{
this
.
getQueueUtil
().
sendMySqlRedis
(
this
.
getQueueUtil
().
sendMySqlRedis
(
SqlMapping
.
get
(
"galaxy_nft_transfer_info.insert"
),
SqlMapping
.
get
(
"galaxy_nft_transfer_info.insert"
),
new
Object
[]{
transferNftInfoBo
.
getTransOrderId
(),
transferNftInfoBo
.
getNftId
(),
transferNftInfoBo
.
getUserId
(),
transferNftInfoBo
.
getAddress
(),
transferNftInfoBo
.
getReceiveUserId
(),
transferNftInfoBo
.
getReceiveAddress
(),
new
Object
[]{
transferNftInfoBo
.
getTransOrderId
(),
transferNftInfoBo
.
getNftId
(),
transferNftInfoBo
.
getUserId
(),
transferNftInfoBo
.
getAddress
()
transferNftInfoBo
.
getOwnerUserId
(),
transferNftInfoBo
.
getOwnerAddress
(),
transferNftInfoBo
.
getTransferHash
(),
transferNftInfoBo
.
getSeriesId
(),
transferNftInfoBo
.
getRouterType
(),
,
transferNftInfoBo
.
getReceiveUserId
(),
transferNftInfoBo
.
getReceiveAddress
()
,
transferNftInfoBo
.
getOwnerUserId
(),
transferNftInfoBo
.
getOwnerAddress
()
,
transferNftInfoBo
.
getNftTransferTaskId
(),
transferNftInfoBo
.
getNftTransferChainTimestamp
()
,
transferNftInfoBo
.
getTransferHash
(),
transferNftInfoBo
.
getSeriesId
(),
transferNftInfoBo
.
getRouterType
(),
transferNftInfoBo
.
getTransferStatus
(),
transferNftInfoBo
.
getErrorCode
(),
transferNftInfoBo
.
getErrorMsg
(),
transferNftInfoBo
.
getCreatedAt
(),
transferNftInfoBo
.
getUpdatedAt
()}
transferNftInfoBo
.
getTransferStatus
(),
transferNftInfoBo
.
getErrorCode
(),
transferNftInfoBo
.
getErrorMsg
(),
transferNftInfoBo
.
getCreatedAt
(),
transferNftInfoBo
.
getUpdatedAt
()}
,
MQConst
.
GalaxyQueue
.
SQL_NFT_TRADE_INFO
.
getKey
()
,
MQConst
.
GalaxyQueue
.
SQL_NFT_TRADE_INFO
.
getKey
()
);
);
...
@@ -583,8 +586,10 @@ public abstract class AbstractDataUtils {
...
@@ -583,8 +586,10 @@ public abstract class AbstractDataUtils {
try
{
try
{
this
.
getQueueUtil
().
sendMySqlRedis
(
this
.
getQueueUtil
().
sendMySqlRedis
(
SqlMapping
.
get
(
"galaxy_nft_transfer_info.updateNftTransferInfo"
),
SqlMapping
.
get
(
"galaxy_nft_transfer_info.updateNftTransferInfo"
),
new
Object
[]{
transferNftInfoBo
.
getOwnerUserId
(),
transferNftInfoBo
.
getOwnerAddress
(),
transferNftInfoBo
.
getTransferHash
(),
new
Object
[]{
transferNftInfoBo
.
getOwnerUserId
(),
transferNftInfoBo
.
getOwnerAddress
()
transferNftInfoBo
.
getTransferStatus
(),
transferNftInfoBo
.
getErrorCode
(),
transferNftInfoBo
.
getErrorMsg
()
,
transferNftInfoBo
.
getNftTransferTaskId
(),
transferNftInfoBo
.
getNftTransferChainTimestamp
()
,
transferNftInfoBo
.
getTransferHash
()
,
transferNftInfoBo
.
getTransferStatus
(),
transferNftInfoBo
.
getErrorCode
(),
transferNftInfoBo
.
getErrorMsg
()
,
transferNftInfoBo
.
getUpdatedAt
(),
transferNftInfoBo
.
getTransOrderId
()}
,
transferNftInfoBo
.
getUpdatedAt
(),
transferNftInfoBo
.
getTransOrderId
()}
,
MQConst
.
GalaxyQueue
.
SQL_NFT_TRADE_INFO
.
getKey
()
,
MQConst
.
GalaxyQueue
.
SQL_NFT_TRADE_INFO
.
getKey
()
);
);
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-common/src/main/resources/sqlmap-galaxy.properties
View file @
ba9f16cb
...
@@ -11,7 +11,7 @@ galaxy_nft_trade_info.insert=insert into galaxy_nft_trade_info (user_id, nft_id,
...
@@ -11,7 +11,7 @@ galaxy_nft_trade_info.insert=insert into galaxy_nft_trade_info (user_id, nft_id,
# ------------------------数字藏品发行购买失败记录----------------------------
# ------------------------数字藏品发行购买失败记录----------------------------
galaxy_nft_order_fail_log.insert
=
insert into galaxy_nft_order_fail_log (nft_order_pay_id, user_id, nft_id, nft_name, series_name, series_id,series_code, taskId, fail_reason_desc, fail_reason_desc_second, deal_with_status, trade_type,router_type, created_at, updated_at)values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
galaxy_nft_order_fail_log.insert
=
insert into galaxy_nft_order_fail_log (nft_order_pay_id, user_id, nft_id, nft_name, series_name, series_id,series_code, taskId, fail_reason_desc, fail_reason_desc_second, deal_with_status, trade_type,router_type, created_at, updated_at)values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
# ------------------------数字藏品转让记录----------------------------
# ------------------------数字藏品转让记录----------------------------
galaxy_nft_transfer_info.insert
=
insert into galaxy_nft_transfer_info (trans_order_id,nft_id,user_id, address, receive_user_id, receive_address, owner_user_id,owner_address,
transfer_hash, series_id, router_type, transfer_status, error_code,error_msg, created_at, updated_at) values (
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
galaxy_nft_transfer_info.insert
=
insert into galaxy_nft_transfer_info (trans_order_id,nft_id,user_id, address, receive_user_id, receive_address, owner_user_id,owner_address,
nft_transfer_task_id,nft_transfer_chain_timestamp,transfer_hash, series_id, router_type, transfer_status, error_code,error_msg, created_at, updated_at) values (?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
# ------------------------更新用户注册信息----------------------------
# ------------------------更新用户注册信息----------------------------
galaxy_user_info.update
=
update galaxy_user_info set user_name = ?,id_card_type = ?,id_card = ?,mobile = ?,block_chain_address = ?,user_identification = ?,updated_at =? where router_type = ? and user_id = ?
galaxy_user_info.update
=
update galaxy_user_info set user_name = ?,id_card_type = ?,id_card = ?,mobile = ?,block_chain_address = ?,user_identification = ?,updated_at =? where router_type = ? and user_id = ?
...
@@ -34,4 +34,4 @@ galaxy_series_nft_info.updateSeriesNftPublishStatus=update galaxy_series_nft_inf
...
@@ -34,4 +34,4 @@ galaxy_series_nft_info.updateSeriesNftPublishStatus=update galaxy_series_nft_inf
# ------------------------同步用户数字账户信息到adam---------------------------
# ------------------------同步用户数字账户信息到adam---------------------------
adam_user_busi_acct.add
=
INSERT INTO adam_user_busi_acct (`uid`, busi, uuid, `work`, ppwd, `state`, created_at) VALUES (?,?,?,?,?,?,?)
adam_user_busi_acct.add
=
INSERT INTO adam_user_busi_acct (`uid`, busi, uuid, `work`, ppwd, `state`, created_at) VALUES (?,?,?,?,?,?,?)
# ------------------------更新nft转让信息----------------------------
# ------------------------更新nft转让信息----------------------------
galaxy_nft_transfer_info.updateNftTransferInfo
=
update galaxy_nft_transfer_info t set t.owner_user_id = ?,t.owner_address = ?,t.transfer_hash =?,t.transfer_status =?,t.error_code =?,t.error_msg =? ,t.updated_at =? where t.trans_order_id = ?
galaxy_nft_transfer_info.updateNftTransferInfo
=
update galaxy_nft_transfer_info t set t.owner_user_id = ?,t.owner_address = ?,t.
nft_transfer_task_id =?,t.nft_transfer_chain_timestamp =?,t.
transfer_hash =?,t.transfer_status =?,t.error_code =?,t.error_msg =? ,t.updated_at =? where t.trans_order_id = ?
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/docu/db_galaxy_20220907.sql
0 → 100644
View file @
ba9f16cb
alter
table
galaxy_nft_transfer_info
add
nft_transfer_task_id
varchar
(
100
)
null
comment
'nft转让任务id'
after
owner_address
;
alter
table
galaxy_nft_transfer_info
add
nft_transfer_chain_timestamp
varchar
(
30
)
null
comment
'nft转让时间'
after
nft_transfer_task_id
;
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/galaxy/router/zxin/biz/ZxinTradeBiz.java
View file @
ba9f16cb
...
@@ -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,308 @@ public class ZxinTradeBiz {
...
@@ -329,4 +333,308 @@ 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
{
//操作者的公钥和私钥
String
pubKey
=
BASE64Util
.
decode
(
userInfoBo
.
getUserPubKey
());
String
priKey
=
BASE64Util
.
decode
(
userInfoBo
.
getUserPriKey
());
//nft接收者的地址
String
receiverAddr
=
receiveUserInfoBo
.
getBlockChainAddress
();
//要转移的nftId
String
nftId
=
reqDto
.
getNftId
();
//请求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
);
}
}
else
{
//更新转让状态和拥有者信息(只有成功才更新拥有者信息)
transferNftInfoBo
.
setTransferStatus
(
GalaxyEnum
.
NftTransferStatusEnum
.
FAIL
.
getCode
());
transferNftInfoBo
.
setErrorCode
(
nft046TransferResp
.
getCode
());
transferNftInfoBo
.
setErrorMsg
(
nft046TransferResp
.
getMessage
());
transferNftInfoBo
.
setUpdatedAt
(
DateUtil
.
getNowTime
());
dataUtils
.
updateTransferNftInfoBo
(
reqDto
.
getRouterType
(),
reqDto
.
getTransOrderId
(),
transferNftInfoBo
);
}
if
(
StringUtil
.
isNotEmpty
(
nftTransferTaskId
)){
try
{
Nft049TransferResultReqDto
nft049TransferResultReqDto
=
Nft049TransferResultReqDto
.
getNew
();
nft049TransferResultReqDto
.
setOperatorPubKey
(
BASE64Util
.
decode
(
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
());
}
//更新转让状态和拥有者信息(只有成功才更新拥有者信息)
if
(
StringUtil
.
isNotNull
(
nftTransferChainTimestamp
)){
//设置时间
String
nftTransferChainTimestampStr
=
DateUtil
.
format
(
new
Date
(
nftTransferChainTimestamp
*
1000
),
DateUtil
.
Formatter
.
yyyyMMddHHmmss
);
transferNftInfoBo
.
setNftTransferChainTimestamp
(
nftTransferChainTimestampStr
);
}
if
(
StringUtil
.
isNotNull
(
nftTransferStatus
)){
//转换任务状态
String
nftTransferStatusStr
=
GalaxyEnumBiz
.
getTransStatusEnum
(
reqDto
.
getRouterType
(),
nftTransferStatus
.
toString
()).
getCode
();
transferNftInfoBo
.
setTransferStatus
(
nftTransferStatusStr
);
}
transferNftInfoBo
.
setTransferHash
(
nftTransferTradeHash
);
transferNftInfoBo
.
setOwnerUserId
(
transferNftInfoBo
.
getReceiveUserId
());
transferNftInfoBo
.
setOwnerAddress
(
transferNftInfoBo
.
getReceiveAddress
());
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
.
isEmpty
(
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 @
ba9f16cb
...
@@ -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