记得上下班打卡 | 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
3d0d7f5a
Commit
3d0d7f5a
authored
Jul 05, 2022
by
胡佳晨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交接口
parent
a402d6c1
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
357 additions
and
6 deletions
+357
-6
GoblinOrderServiceImpl.java
...et/service/order/service/impl/GoblinOrderServiceImpl.java
+7
-4
MixOrderServiceImpl.java
...idnet/service/order/service/impl/MixOrderServiceImpl.java
+269
-2
GoblinNftOrderUtils.java
...om/liquidnet/service/order/utils/GoblinNftOrderUtils.java
+59
-0
GoblinRedisUtils.java
...a/com/liquidnet/service/order/utils/GoblinRedisUtils.java
+16
-0
ObjectUtil.java
...in/java/com/liquidnet/service/order/utils/ObjectUtil.java
+6
-0
No files found.
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/GoblinOrderServiceImpl.java
View file @
3d0d7f5a
...
...
@@ -573,7 +573,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
sqlDataOrder
.
add
(
new
Object
[]{
storeOrder
.
getMasterOrderCode
(),
storeOrder
.
getOrderId
(),
storeOrder
.
getStoreId
(),
storeOrder
.
getStoreName
(),
storeOrder
.
getOrderCode
(),
storeOrder
.
getUserId
(),
storeOrder
.
getUserName
(),
storeOrder
.
getUserMobile
(),
storeOrder
.
getPriceTotal
(),
storeOrder
.
getPayCode
(),
storeOrder
.
getPriceActual
(),
storeOrder
.
getPriceRefund
(),
storeOrder
.
getPriceExpress
(),
storeOrder
.
getPriceCoupon
(),
storeOrder
.
getStorePriceCoupon
(),
storeOrder
.
getPriceVoucher
(),
storeOrder
.
getStatus
(),
storeOrder
.
getUcouponId
(),
storeOrder
.
getStoreCouponId
(),
storeOrder
.
getPayType
(),
storeOrder
.
getDeviceFrom
(),
storeOrder
.
getSource
(),
storeOrder
.
getVersion
(),
storeOrder
.
getIsMember
(),
storeOrder
.
getOrderType
(),
storeOrder
.
getWriteOffCode
(),
storeOrder
.
getPayCountdownMinute
(),
storeOrder
.
getIpAddress
(),
storeOrder
.
getMarketId
(),
storeOrder
.
getMarketType
(),
storeOrder
.
getCreatedAt
(),
""
storeOrder
.
getSource
(),
storeOrder
.
getVersion
(),
storeOrder
.
getIsMember
(),
storeOrder
.
getOrderType
(),
storeOrder
.
getWriteOffCode
(),
storeOrder
.
getPayCountdownMinute
(),
storeOrder
.
getIpAddress
(),
storeOrder
.
getMarketId
(),
storeOrder
.
getMarketType
(),
storeOrder
.
getCreatedAt
(),
""
});
GoblinOrderAttr
orderAttr
=
item
.
getOrderAttr
();
sqlDataAttr
.
add
(
new
Object
[]{
...
...
@@ -585,7 +585,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
GoblinOrderAttrVo
orderAttrVo
=
GoblinOrderAttrVo
.
getNew
().
copy
(
orderAttr
);
//待支付发送队列
queueUtils
.
sendMsgByRedisGoblinStock
(
orderVo
.
getMasterOrderCode
(),
storeOrder
.
getCreatedAt
(),
"GOBLIN"
,
5
);
queueUtils
.
sendMsgByRedisGoblinStock
(
orderVo
.
getMasterOrderCode
(),
storeOrder
.
getCreatedAt
(),
"GOBLIN"
,
5
);
//redis 赋值
orderVo
.
setOrderAttrVo
(
orderAttrVo
);
orderVo
.
setOrderSkuVoIds
(
goblinOrderSkuIdList
);
...
...
@@ -983,9 +983,12 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
String
pre
=
GoblinStatusConst
.
MarketPreStatus
.
getPre
(
orderSkuVo
.
getSkuId
());
String
skuId
=
orderSkuVo
.
getSkuId
();
//需要判断是否超时支付
if
(!
"超时支付自动退款"
.
equals
(
backOrderVo
.
getDescribes
()))
{
redisUtils
.
incrSkuStock
(
pre
,
skuId
,
orderSkuVo
.
getNum
());
redisUtils
.
decrSkuCountByUid
(
orderVo
.
getUserId
(),
skuId
,
orderSkuVo
.
getNum
());
}
}
redisUtils
.
setGoblinOrderSku
(
backOrderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
mongoUtils
.
updateGoblinOrderSkuVo
(
backOrderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
sqlsOrderSku
.
add
(
new
Object
[]{
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/MixOrderServiceImpl.java
View file @
3d0d7f5a
...
...
@@ -20,6 +20,7 @@ import com.liquidnet.service.goblin.entity.GoblinNftOrder;
import
com.liquidnet.service.goblin.entity.GoblinOrderAttr
;
import
com.liquidnet.service.goblin.entity.GoblinOrderSku
;
import
com.liquidnet.service.goblin.entity.GoblinStoreOrder
;
import
com.liquidnet.service.goblin.param.GoblinNftOrderPayCallbackParam
;
import
com.liquidnet.service.goblin.param.GoblinOrderPreParam
;
import
com.liquidnet.service.goblin.param.SyncOrderParam
;
import
com.liquidnet.service.goblin.service.IMixOrderService
;
...
...
@@ -38,6 +39,7 @@ import java.time.format.DateTimeFormatter;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Objects
;
import
static
com
.
liquidnet
.
commons
.
lang
.
util
.
DateUtil
.
DTF_YMD_HMS
;
import
static
com
.
liquidnet
.
commons
.
lang
.
util
.
DateUtil
.
getNowTime
;
...
...
@@ -524,12 +526,277 @@ public class MixOrderServiceImpl implements IMixOrderService {
@Override
public
String
syncOrder
(
SyncOrderParam
syncOrderParam
)
{
return
null
;
log
.
info
(
"NFT支付回调 参数: "
+
syncOrderParam
.
toString
());
String
orderCode
=
syncOrderParam
.
getOrderCode
();
HashMap
<
String
,
String
[]>
map
=
redisUtils
.
getMixMasterCode
(
orderCode
);
String
[]
nft
=
map
.
get
(
"nft"
);
String
[]
goblin
=
map
.
get
(
"goblin"
);
String
code
=
syncOrderParam
.
getCode
(),
paymentType
=
syncOrderParam
.
getPaymentType
(),
paymentId
=
syncOrderParam
.
getPaymentId
(),
paymentAt
=
syncOrderParam
.
getPaymentAt
();
int
status
=
syncOrderParam
.
getStatus
();
boolean
isSuccess
=
true
;
for
(
String
orderId
:
nft
)
{
String
nftR
=
syncNft
(
orderId
,
code
,
status
,
paymentType
,
paymentId
,
paymentAt
);
if
(
"fail"
.
equals
(
nftR
))
{
isSuccess
=
false
;
}
}
for
(
String
orderId
:
goblin
)
{
String
goblinR
=
syncGoblin
(
orderId
,
code
,
status
,
paymentType
,
paymentId
,
paymentAt
);
if
(
"fail"
.
equals
(
goblinR
))
{
isSuccess
=
false
;
}
}
if
(
isSuccess
)
{
return
"success"
;
}
else
{
return
"fail"
;
}
}
public
String
syncGoblin
(
String
orderId
,
String
code
,
int
status
,
String
paymentType
,
String
paymentId
,
String
paymentAt
)
{
//支付时间
LocalDateTime
now
=
LocalDateTime
.
now
();
BigDecimal
priceActual
=
BigDecimal
.
ZERO
;
GoblinStoreOrderVo
orderVo
=
redisUtils
.
getGoblinOrder
(
orderId
);
if
(
orderVo
==
null
)
{
log
.
error
(
"mix订单Id:"
+
orderId
+
" 订单不存在"
);
return
"fail"
;
//订单不存在
}
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
())
{
if
(
orderVo
.
getPayCode
().
equals
(
code
))
{
log
.
error
(
"Mix订单Id:"
+
orderId
+
" 重复支付"
);
return
"success"
;
//重复支付
}
}
priceActual
=
priceActual
.
add
(
orderVo
.
getPriceActual
());
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlDataOrder
=
CollectionUtil
.
linkedListObjectArr
();
LinkedList
<
Object
[]>
sqlDataSku
=
CollectionUtil
.
linkedListObjectArr
();
GoblinStoreOrder
storeOrder
=
GoblinStoreOrder
.
getNew
();
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_5
.
getValue
()
&&
status
==
1
)
{
log
.
error
(
"Mix订单Id {} 的订单超时支付"
,
orderId
);
// 商铺退款逻辑
orderUtils
.
refundOrderSku
(
orderId
,
paymentId
,
paymentType
);
}
else
if
((
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_6
.
getValue
()
||
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_7
.
getValue
())
&&
status
==
1
)
{
log
.
error
(
"Mix订单Id为 {} 的订单正在退款 或者已退款"
,
orderId
);
}
else
if
(
status
==
1
)
{
log
.
error
(
"Mix订单Id {} 的订单正常流程"
,
orderId
);
storeOrder
.
setPaymentType
(
paymentType
);
storeOrder
.
setPaymentId
(
paymentId
);
storeOrder
.
setPayCode
(
code
);
LocalDateTime
payTime
=
LocalDateTime
.
parse
(
paymentAt
,
DTF_YMD_HMS
);
storeOrder
.
setPayTime
(
payTime
);
storeOrder
.
setWriteOffCode
(
""
);
storeOrder
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
());
storeOrder
.
setUpdatedAt
(
now
);
sqls
.
add
(
SqlMapping
.
get
(
"goblin_order.pay.order"
));
sqlDataOrder
.
add
(
new
Object
[]{
storeOrder
.
getPaymentType
(),
storeOrder
.
getPaymentId
(),
storeOrder
.
getPayCode
(),
storeOrder
.
getPayTime
(),
storeOrder
.
getWriteOffCode
(),
storeOrder
.
getStatus
(),
storeOrder
.
getUpdatedAt
(),
orderId
,
now
,
now
});
sqls
.
add
(
SqlMapping
.
get
(
"goblin_order.pay.sku"
));
List
<
String
>
skuList
=
orderVo
.
getOrderSkuVoIds
();
for
(
String
orderSkuVoIds
:
skuList
)
{
GoblinOrderSkuVo
orderSkuVo
=
redisUtils
.
getGoblinOrderSkuVo
(
orderSkuVoIds
);
//增加销量
log
.
debug
(
"增加销量 spuId="
+
orderSkuVo
.
getSpuId
()
+
",skuId="
+
orderSkuVo
.
getSkuId
());
redisUtils
.
incrSkuSaleCount
(
orderSkuVo
.
getSpuId
(),
orderSkuVo
.
getSkuId
(),
orderSkuVo
.
getNum
());
orderSkuVo
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
());
//redis
redisUtils
.
setGoblinOrderSku
(
orderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
//mongo
mongoUtils
.
updateGoblinOrderSkuVo
(
orderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
//mongo 添加操作日志
GoblinOrderLogVo
logVo
=
GoblinOrderLogVo
.
getNew
();
logVo
.
setOrderId
(
orderVo
.
getOrderId
());
logVo
.
setOrderCode
(
orderVo
.
getOrderCode
());
logVo
.
setPayCode
(
orderVo
.
getPayCode
());
logVo
.
setStoreId
(
orderVo
.
getStoreId
());
logVo
.
setOrderType
(
"order"
);
logVo
.
setSpuId
(
orderSkuVo
.
getSpuId
());
logVo
.
setSkuId
(
orderSkuVo
.
getSkuId
());
logVo
.
setSkuPriceActual
(
orderSkuVo
.
getSkuPriceActual
().
multiply
(
new
BigDecimal
(
100
)).
longValue
());
logVo
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_LOG_STATUS_11
.
getValue
());
logVo
.
setRemark
(
GoblinStatusConst
.
Status
.
ORDER_LOG_STATUS_11
.
getDesc
());
logVo
.
setOperationId
(
orderVo
.
getUserId
());
logVo
.
setOperationName
(
orderVo
.
getUserName
());
logVo
.
setOperationType
(
GoblinStatusConst
.
Type
.
OPERATION_TYPE_1
.
getValue
());
logVo
.
setCreatedAt
(
LocalDateTime
.
now
());
mongoUtils
.
insertGoblinOrderLogVo
(
logVo
);
//mysql
sqlDataSku
.
add
(
new
Object
[]{
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
(),
now
,
orderSkuVo
.
getOrderSkuId
(),
now
,
now
});
}
//redis
orderVo
.
setPayCode
(
storeOrder
.
getPayCode
());
orderVo
.
setPayTime
(
paymentAt
);
orderVo
.
setWriteOffCode
(
storeOrder
.
getWriteOffCode
());
orderVo
.
setStatus
(
storeOrder
.
getStatus
());
orderVo
.
setPaymentId
(
paymentId
);
orderVo
.
setPaymentType
(
paymentType
);
orderVo
.
setOrderSkuVoIds
(
skuList
);
redisUtils
.
setGoblinOrder
(
orderId
,
orderVo
);
redisUtils
.
setOffCode
(
orderVo
.
getWriteOffCode
(),
orderVo
.
getMasterOrderCode
());
//mongo
mongoUtils
.
updateGoblinStoreOrderVo
(
orderId
,
orderVo
);
//mysql
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_ORDER_CREATE_PAY
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlDataOrder
,
sqlDataSku
));
}
//添加列表
redisUtils
.
addOrderList
(
orderVo
.
getUserId
(),
orderVo
.
getOrderId
());
//加分
orderUtils
.
integral
(
orderVo
.
getUserId
(),
priceActual
,
"购买商品"
,
1
);
return
"success"
;
}
public
String
syncNft
(
String
orderId
,
String
code
,
int
status
,
String
paymentType
,
String
paymentId
,
String
paymentAt
)
{
if
(
orderId
.
isEmpty
())
{
log
.
error
(
"MIX Nft订单不存在1 param:[orderId:{}]"
,
orderId
);
return
"fail"
;
}
GoblinNftOrderVo
orderVo
=
nftOrderUtils
.
getNftOrder
(
orderId
);
if
(
null
==
orderVo
)
{
log
.
error
(
"MIX Nft订单不存在2 param:[orderId:{}]"
,
orderId
);
return
"fail"
;
}
// 苹果支付下单时候没有PayCode
if
(!
orderVo
.
getPayType
().
equals
(
"applepay"
)
&&
!
orderVo
.
getPayCode
().
equals
(
code
))
{
log
.
error
(
"MIX Nft订单payCode不匹配 param:[orderId:{}, payCode:{}, code:{}]"
,
orderId
,
orderVo
.
getPayCode
(),
code
);
return
"fail"
;
}
if
(!
Objects
.
equals
(
orderVo
.
getStatus
(),
GoblinStatusConst
.
NftStatus
.
ORDER_STATUS_1
.
getValue
())
&&
!
Objects
.
equals
(
orderVo
.
getStatus
(),
GoblinStatusConst
.
NftStatus
.
ORDER_STATUS_3
.
getValue
()))
{
log
.
error
(
"MIX Nft订单当前状态不能支付回调 param:[orderId:{}, status:{}]"
,
orderId
,
orderVo
.
getStatus
());
return
"success"
;
}
if
(
Objects
.
equals
(
1
,
status
))
{
String
uid
=
orderVo
.
getUserId
();
Integer
orderStatusOld
=
orderVo
.
getStatus
();
LocalDateTime
now
=
LocalDateTime
.
now
();
// 更新订单信息
if
(
StringUtil
.
isEmpty
(
paymentType
))
{
orderVo
.
setPaymentType
(
""
);
}
else
{
orderVo
.
setPaymentType
(
paymentType
);
}
if
(
StringUtil
.
isEmpty
(
paymentId
))
{
orderVo
.
setPaymentId
(
""
);
}
else
{
orderVo
.
setPaymentId
(
paymentId
);
}
if
(
StringUtil
.
isEmpty
(
code
))
{
orderVo
.
setPayCode
(
""
);
}
else
{
orderVo
.
setPayCode
(
code
);
}
if
(
StringUtil
.
isEmpty
(
paymentAt
))
{
orderVo
.
setPayTime
(
now
);
}
else
{
LocalDateTime
payTime
=
LocalDateTime
.
parse
(
paymentAt
,
DTF_YMD_HMS
);
orderVo
.
setPayTime
(
payTime
);
}
orderVo
.
setUpdatedAt
(
now
);
if
(
Objects
.
equals
(
orderStatusOld
,
GoblinStatusConst
.
NftStatus
.
ORDER_STATUS_3
.
getValue
()))
{
// 超时支付 退款中状态
orderVo
.
setStatus
(
GoblinStatusConst
.
NftStatus
.
ORDER_STATUS_4
.
getValue
());
}
else
{
// 正常流程 已付款状态
orderVo
.
setStatus
(
GoblinStatusConst
.
NftStatus
.
ORDER_STATUS_2
.
getValue
());
}
// redis
nftOrderUtils
.
setNftOrder
(
orderVo
);
// mongo
queueUtils
.
setMongoList
(
GoblinNftOrderVo
.
class
.
getSimpleName
(),
"orderId"
,
orderVo
.
getOrderId
(),
GoblinRedisConst
.
REDIS_GOBLIN_NFT_ORDER_INFO
,
2
);
// mysql
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlDataOrder
=
CollectionUtil
.
linkedListObjectArr
();
sqls
.
add
(
SqlMapping
.
get
(
"goblin_nft_order.update.pay"
));
sqlDataOrder
.
add
(
new
Object
[]{
orderVo
.
getPaymentType
(),
orderVo
.
getPaymentId
(),
orderVo
.
getPayCode
(),
orderVo
.
getPayTime
(),
orderVo
.
getStatus
(),
orderVo
.
getUpdatedAt
(),
orderId
,
now
,
now
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_NFT_ORDER
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlDataOrder
));
// 加积分
orderUtils
.
integral
(
uid
,
orderVo
.
getPriceActual
(),
"购买数字藏品"
,
1
);
// 处理订单退款和其他流程
if
(
Objects
.
equals
(
orderStatusOld
,
GoblinStatusConst
.
NftStatus
.
ORDER_STATUS_3
.
getValue
()))
{
// 超时支付 退款
log
.
info
(
"Nft订单超时支付 param:[orderId:{}]"
,
orderId
);
nftOrderUtils
.
refundOrderSku
(
orderId
,
paymentId
,
paymentType
,
orderVo
.
getPayType
());
}
else
{
// 正常流程
nftOrderUtils
.
generateUserArtwork
(
orderVo
,
1
);
// 增加销量
redisUtils
.
incrSkuSaleCount
(
orderVo
.
getSpuId
(),
orderVo
.
getSkuId
(),
orderVo
.
getNum
());
}
// 写入用户订单列表 因取消的订单不展示 所以放在这里
nftOrderUtils
.
addNftOrderList
(
uid
,
orderVo
.
getOrderId
());
}
return
"success"
;
}
@Override
public
ResponseDto
<
Integer
>
checkOrderResultMaterCode
(
String
materCode
)
{
return
null
;
String
uid
=
CurrentUtil
.
getCurrentUid
();
HashMap
<
String
,
String
[]>
map
=
redisUtils
.
getMixMasterCode
(
materCode
);
String
[]
nft
=
map
.
get
(
"nft"
);
String
[]
goblin
=
map
.
get
(
"goblin"
);
for
(
String
orderId
:
nft
)
{
String
nftR
=
nftCheck
(
uid
,
orderId
);
if
(
"订单不存在"
.
equals
(
nftR
))
{
return
ResponseDto
.
failure
(
"订单不存在"
);
}
else
if
(
"0"
.
equals
(
nftR
))
{
return
ResponseDto
.
success
(
0
);
}
}
for
(
String
orderId
:
goblin
)
{
String
goblinR
=
goblinCheck
(
uid
,
orderId
);
if
(
"订单不存在"
.
equals
(
goblinR
))
{
return
ResponseDto
.
failure
(
"订单不存在"
);
}
else
if
(
"0"
.
equals
(
goblinR
))
{
return
ResponseDto
.
success
(
0
);
}
}
return
ResponseDto
.
success
(
1
);
}
private
String
nftCheck
(
String
uid
,
String
orderId
)
{
GoblinNftOrderVo
nftOrder
=
nftOrderUtils
.
getNftOrder
(
orderId
);
if
(
null
==
nftOrder
||
!
nftOrder
.
getUserId
().
equals
(
uid
))
{
return
"订单不存在"
;
}
else
{
String
returnCheckData
=
HttpUtil
.
get
(
checkUrl
+
"?code="
+
nftOrder
.
getPayCode
(),
null
);
ResponseDto
<
SyncOrderParam
>
syncOrderDtoParam
=
JsonUtils
.
fromJson
(
returnCheckData
,
new
TypeReference
<
ResponseDto
<
SyncOrderParam
>>()
{
});
if
(
syncOrderDtoParam
.
getData
().
getStatus
()
==
1
)
{
//处理订单
syncOrder
(
syncOrderDtoParam
.
getData
());
return
"1"
;
}
else
{
return
"0"
;
}
}
}
private
String
goblinCheck
(
String
uid
,
String
orderId
)
{
GoblinStoreOrderVo
storeOrderVo
=
redisUtils
.
getGoblinOrder
(
orderId
);
if
(
null
==
storeOrderVo
||
!
storeOrderVo
.
getUserId
().
equals
(
uid
))
{
return
"订单不存在"
;
}
String
returnCheckData
=
HttpUtil
.
get
(
checkUrl
+
"?code="
+
storeOrderVo
.
getPayCode
(),
null
);
ResponseDto
<
SyncOrderParam
>
syncOrderDtoParam
=
JsonUtils
.
fromJson
(
returnCheckData
,
new
TypeReference
<
ResponseDto
<
SyncOrderParam
>>()
{
});
if
(
syncOrderDtoParam
.
getData
().
getStatus
()
==
1
)
{
//处理订单
syncOrder
(
syncOrderDtoParam
.
getData
());
return
"1"
;
}
else
{
return
"0"
;
}
}
}
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/utils/GoblinNftOrderUtils.java
View file @
3d0d7f5a
package
com
.
liquidnet
.
service
.
order
.
utils
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.node.ObjectNode
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.*
;
import
com.liquidnet.service.base.ResponseDto
;
...
...
@@ -569,4 +570,62 @@ public class GoblinNftOrderUtils {
return
null
;
}
}
/**
* 生成我的藏品
*
* @param orderVo
*/
public
void
generateUserArtwork
(
GoblinNftOrderVo
orderVo
,
Integer
source
)
{
String
uid
=
orderVo
.
getUserId
(),
skuId
=
orderVo
.
getSkuId
(),
orderId
=
orderVo
.
getOrderId
(),
spuId
=
orderVo
.
getSpuId
();
if
(
goblinRedisUtils
.
hasGenUserDigitalArtwork
(
uid
,
skuId
,
orderId
))
{
// 已生成
log
.
warn
(
"#GEN_ARTWORK EXIST_ART[uid={},skuId={},orderId={},source={}]"
,
uid
,
skuId
,
orderId
,
source
);
return
;
}
GoblinGoodsInfoVo
goodsInfoVo
=
goblinRedisUtils
.
getGoodsInfoVo
(
spuId
);
LocalDateTime
now
=
LocalDateTime
.
now
();
GoblinUserDigitalArtworkVo
digitalArtworkVo
=
GoblinUserDigitalArtworkVo
.
getNew
();
// String artworkId = IDGenerator.nextMilliId2();
String
artworkId
=
IDGenerator
.
nextSnowId
();
digitalArtworkVo
.
setArtworkId
(
artworkId
);
digitalArtworkVo
.
setSkuId
(
skuId
);
digitalArtworkVo
.
setUid
(
uid
);
digitalArtworkVo
.
setOrderId
(
orderId
);
digitalArtworkVo
.
setSource
(
source
);
digitalArtworkVo
.
setState
(
source
==
31
?
5
:
0
);
digitalArtworkVo
.
setDelFlg
(
"0"
);
digitalArtworkVo
.
setCreatedAt
(
now
);
digitalArtworkVo
.
setAuthor
(
goodsInfoVo
.
getAuthor
());
digitalArtworkVo
.
setPublisher
(
goodsInfoVo
.
getPublisher
());
// Redis记录VO
goblinRedisUtils
.
setGoblinUserDigitalArtworkVo
(
digitalArtworkVo
);
// Redis更新藏品ID列表
goblinRedisUtils
.
addGoblinUserDigitalArtworkIds
(
uid
,
artworkId
);
// 缓存用户藏品数
goblinRedisUtils
.
incrGoblinUserDigitalArtworks
(
uid
);
// Redis生成标记(缓存三天),用于上面的生成检查
goblinRedisUtils
.
markGenUserDigitalArtwork
(
uid
,
skuId
,
orderId
);
// Mongo记录VO
goblinOrderUtils
.
setMongoList
(
GoblinUserDigitalArtworkVo
.
class
.
getSimpleName
(),
"artworkId"
,
digitalArtworkVo
.
getArtworkId
(),
GoblinRedisConst
.
USER_DIGITAL_ARTWORK
,
1
);
// goblinMongoUtils.insertGoblinUserDigitalArtworkVo(digitalArtworkVo);
if
(
source
!=
31
)
{
// 空投需要领取再发行
GoblinGoodsSkuInfoVo
goodsSkuInfoVo
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
skuId
);
if
(
"0"
.
equals
(
goodsSkuInfoVo
.
getUnbox
()))
{
// 非盲盒,NFT发行购买
ObjectNode
bizNftBuyNode
=
JsonUtils
.
OM
().
createObjectNode
().
put
(
"nftOrderPayId"
,
orderId
).
put
(
"routerType"
,
goodsSkuInfoVo
.
getRouteType
())
.
put
(
"skuId"
,
skuId
).
put
(
"userId"
,
uid
).
put
(
"buyTimestamp"
,
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
now
));
queueUtils
.
sendMsgByRedis
(
MQConst
.
GalaxyQueue
.
JSON_NFT_PUBLISH_AND_BUY
.
getKey
(),
bizNftBuyNode
.
toString
());
}
}
// Mysql持久化
LinkedList
<
String
>
toMqSqls
=
CollectionUtil
.
linkedListString
();
toMqSqls
.
add
(
SqlMapping
.
get
(
"goblin_user_digital_artwork.insert"
));
LinkedList
<
Object
[]>
initUserDigitalArtworkObjs
=
CollectionUtil
.
linkedListObjectArr
();
initUserDigitalArtworkObjs
.
add
(
new
Object
[]{
digitalArtworkVo
.
getArtworkId
(),
skuId
,
uid
,
orderId
,
source
,
digitalArtworkVo
.
getState
(),
now
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
SQL_ARTWORK_GEN
.
getKey
(),
SqlMapping
.
gets
(
toMqSqls
,
initUserDigitalArtworkObjs
));
}
}
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/utils/GoblinRedisUtils.java
View file @
3d0d7f5a
...
...
@@ -461,6 +461,22 @@ public class GoblinRedisUtils {
}
}
public
HashMap
<
String
,
String
[]>
getMixMasterCode
(
String
masterCode
)
{
String
redisKey
=
GoblinRedisConst
.
REDIS_GOBLIN_ORDER_MASTER
.
concat
(
masterCode
);
Object
obj
=
redisUtil
.
get
(
redisKey
);
if
(
obj
==
null
)
{
return
null
;
}
else
{
String
[]
a
=
((
String
)
obj
).
split
(
"&&"
);
String
[]
nftA
=
a
[
0
].
split
(
","
);
String
[]
goblinA
=
a
[
1
].
split
(
","
);
HashMap
<
String
,
String
[]>
map
=
ObjectUtil
.
mixIdMap
();
map
.
put
(
"nft"
,
nftA
);
map
.
put
(
"goblin"
,
goblinA
);
return
map
;
}
}
//主订单对应的出货吗
public
void
setOffCode
(
String
writeOffCode
,
String
masterCode
)
{
String
redisKey
=
GoblinRedisConst
.
REDIS_GOBLIN_ORDER_OFFCODE
.
concat
(
writeOffCode
);
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/utils/ObjectUtil.java
View file @
3d0d7f5a
...
...
@@ -57,10 +57,16 @@ public class ObjectUtil {
private
static
final
ArrayList
<
GoblinGoodsSkuInfoVo
>
goblinGoodsSkuInfoVos
=
new
ArrayList
<>();
private
static
final
HashMap
<
String
,
List
<
GoblinStoreOrder
>>
hashMapSp
=
new
HashMap
();
private
static
final
HashMap
<
String
,
List
<
GoblinGoodsSkuInfoVo
>>
goblinGoodsSkuInfoVoMap
=
new
HashMap
();
private
static
final
HashMap
<
String
,
String
[]>
mixIdMap
=
new
HashMap
();
public
static
Object
[]
objectsArray
;
public
static
final
Integer
[]
integerArray2
=
new
Integer
[
2
];
public
static
HashMap
<
String
,
String
[]>
mixIdMap
()
{
return
(
HashMap
<
String
,
String
[]>)
mixIdMap
.
clone
();
}
public
static
ArrayList
<
GoblinGoodsSkuInfoVo
>
goblinGoodsSkuInfoVos
()
{
return
(
ArrayList
<
GoblinGoodsSkuInfoVo
>)
goblinGoodsSkuInfoVos
.
clone
();
}
...
...
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