记得上下班打卡 | 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
50e849e1
Commit
50e849e1
authored
Oct 28, 2022
by
Administrator
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'pre' into 'master'
Pre See merge request
!321
parents
2c0c89db
ba9f16cb
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
403 additions
and
56 deletions
+403
-56
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
db_ln_goblin_initialdata.sql
...net-service-goblin-impl/docu/db_ln_goblin_initialdata.sql
+1
-1
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 @
50e849e1
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 @
50e849e1
...
@@ -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 @
50e849e1
...
@@ -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 @
50e849e1
...
@@ -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 @
50e849e1
...
@@ -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 @
50e849e1
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/docu/db_ln_goblin_initialdata.sql
View file @
50e849e1
...
@@ -1157,7 +1157,7 @@ alter table goblin_user_digital_artwork
...
@@ -1157,7 +1157,7 @@ alter table goblin_user_digital_artwork
alter
table
goblin_user_digital_artwork
alter
table
goblin_user_digital_artwork
add
transfer_order_id
varchar
(
64
)
null
comment
'转赠订单号'
after
receiver_uid
;
add
transfer_order_id
varchar
(
64
)
null
comment
'转赠订单号'
after
receiver_uid
;
alter
table
goblin_user_digital_artwork
alter
table
goblin_user_digital_artwork
add
transfer_state
varchar
(
20
)
null
comment
'转赠状态[PENDING|SUCCESS]'
after
transfer_order_id
;
add
transfer_state
varchar
(
20
)
null
comment
'转赠状态[
WAITING|
PENDING|SUCCESS]'
after
transfer_order_id
;
alter
table
goblin_user_digital_artwork
alter
table
goblin_user_digital_artwork
modify
source
tinyint
null
comment
'获得方式[1-购买|2-兑换|3-赠送|5-大美|6-转赠|31-空投赠送]'
;
modify
source
tinyint
null
comment
'获得方式[1-购买|2-兑换|3-赠送|5-大美|6-转赠|31-空投赠送]'
;
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/galaxy/router/zxin/biz/ZxinTradeBiz.java
View file @
50e849e1
...
@@ -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 @
50e849e1
...
@@ -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