记得上下班打卡 | 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
f3a5c96c
Commit
f3a5c96c
authored
May 18, 2022
by
胡佳晨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nft订单回滚逻辑复制到 order内
parent
3425e8ae
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
77 additions
and
9 deletions
+77
-9
AbstractOrderCloseReceiver.java
...e/consumer/order/receiver/AbstractOrderCloseReceiver.java
+10
-6
GoblinNftUtils.java
...iquidnet/service/consumer/order/utils/GoblinNftUtils.java
+67
-3
No files found.
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-order/src/main/java/com/liquidnet/service/consumer/order/receiver/AbstractOrderCloseReceiver.java
View file @
f3a5c96c
...
@@ -11,10 +11,7 @@ import com.liquidnet.service.base.constant.MQConst;
...
@@ -11,10 +11,7 @@ import com.liquidnet.service.base.constant.MQConst;
import
com.liquidnet.service.consumer.order.utils.GoblinNftUtils
;
import
com.liquidnet.service.consumer.order.utils.GoblinNftUtils
;
import
com.liquidnet.service.goblin.constant.GoblinRedisConst
;
import
com.liquidnet.service.goblin.constant.GoblinRedisConst
;
import
com.liquidnet.service.goblin.constant.GoblinStatusConst
;
import
com.liquidnet.service.goblin.constant.GoblinStatusConst
;
import
com.liquidnet.service.goblin.dto.vo.GoblinNftOrderVo
;
import
com.liquidnet.service.goblin.dto.vo.*
;
import
com.liquidnet.service.goblin.dto.vo.GoblinOrderSkuVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinStoreOrderVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinUserCouponVo
;
import
com.liquidnet.service.goblin.param.BackCouponParam
;
import
com.liquidnet.service.goblin.param.BackCouponParam
;
import
com.mongodb.BasicDBObject
;
import
com.mongodb.BasicDBObject
;
import
com.mongodb.client.result.UpdateResult
;
import
com.mongodb.client.result.UpdateResult
;
...
@@ -172,10 +169,17 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
...
@@ -172,10 +169,17 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
if
(
nftOrder
.
getStatus
().
equals
(
GoblinStatusConst
.
NftStatus
.
ORDER_STATUS_1
.
getValue
()))
{
if
(
nftOrder
.
getStatus
().
equals
(
GoblinStatusConst
.
NftStatus
.
ORDER_STATUS_1
.
getValue
()))
{
// 库存购买数量回滚
// 库存购买数量回滚
goblinNftUtils
.
decrSkuCountByUid
(
nftOrder
.
getUserId
(),
nftOrder
.
getSkuId
(),
nftOrder
.
getNum
());
goblinNftUtils
.
decrSkuCountByUid
(
nftOrder
.
getUserId
(),
nftOrder
.
getSkuId
(),
nftOrder
.
getNum
());
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
if
(
StringUtils
.
isEmpty
(
nftOrder
.
getBoxSkuId
()))
{
// 购买藏品
if
(
StringUtils
.
isEmpty
(
nftOrder
.
getBoxSkuId
()))
{
// 购买藏品
goblinNftUtils
.
incrSkuStock
(
nftOrder
.
getSkuId
(),
nftOrder
.
getNum
());
GoblinListCollectVo
goblinListCollectVo
=
goblinNftUtils
.
getCollectByNowNext
(
nowTime
,
nftOrder
.
getSkuId
());
String
listId
=
(
null
==
goblinListCollectVo
)
?
null
:
goblinListCollectVo
.
getListId
();
log
.
debug
(
"listId : {}"
,
listId
);
goblinNftUtils
.
incrSkuStock
(
listId
,
nftOrder
.
getSkuId
(),
nftOrder
.
getNum
());
}
else
{
// 购买盲盒
}
else
{
// 购买盲盒
goblinNftUtils
.
incrSkuStock
(
nftOrder
.
getBoxSkuId
(),
nftOrder
.
getNum
());
GoblinListCollectVo
goblinListCollectVo
=
goblinNftUtils
.
getCollectByNowNext
(
nowTime
,
nftOrder
.
getBoxSkuId
());
String
listId
=
(
null
==
goblinListCollectVo
)
?
null
:
goblinListCollectVo
.
getListId
();
log
.
debug
(
"listId : {}"
,
listId
);
goblinNftUtils
.
incrSkuStock
(
listId
,
nftOrder
.
getBoxSkuId
(),
nftOrder
.
getNum
());
}
}
// 订单状态
// 订单状态
...
...
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-order/src/main/java/com/liquidnet/service/consumer/order/utils/GoblinNftUtils.java
View file @
f3a5c96c
...
@@ -2,6 +2,7 @@ package com.liquidnet.service.consumer.order.utils;
...
@@ -2,6 +2,7 @@ package com.liquidnet.service.consumer.order.utils;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.service.goblin.constant.GoblinRedisConst
;
import
com.liquidnet.service.goblin.constant.GoblinRedisConst
;
import
com.liquidnet.service.goblin.dto.vo.GoblinListCollectVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinNftOrderVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinNftOrderVo
;
import
com.mongodb.BasicDBObject
;
import
com.mongodb.BasicDBObject
;
import
com.mongodb.client.result.UpdateResult
;
import
com.mongodb.client.result.UpdateResult
;
...
@@ -12,6 +13,12 @@ import org.springframework.data.mongodb.core.query.Criteria;
...
@@ -12,6 +13,12 @@ import org.springframework.data.mongodb.core.query.Criteria;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Component
@Component
public
class
GoblinNftUtils
{
public
class
GoblinNftUtils
{
...
@@ -30,9 +37,13 @@ public class GoblinNftUtils {
...
@@ -30,9 +37,13 @@ public class GoblinNftUtils {
return
(
int
)
redisUtil
.
decr
(
redisKey
,
stock
);
return
(
int
)
redisUtil
.
decr
(
redisKey
,
stock
);
}
}
public
int
incrSkuStock
(
String
skuId
,
Integer
stock
)
{
public
int
incrSkuStock
(
String
marketPre
,
String
skuId
,
Integer
stock
)
{
String
redisKey
=
GoblinRedisConst
.
REAL_STOCK_SKU
.
concat
(
skuId
);
String
rk
=
GoblinRedisConst
.
REAL_STOCK_SKU
;
return
(
int
)
redisUtil
.
incr
(
redisKey
,
stock
);
if
(
marketPre
!=
null
&&
!
marketPre
.
equals
(
"null"
))
{
rk
=
rk
.
concat
(
marketPre
+
":"
);
}
rk
=
rk
.
concat
(
skuId
);
return
(
int
)
redisUtil
.
incr
(
rk
,
stock
);
}
}
// 减少 用户sku购买个数
// 减少 用户sku购买个数
...
@@ -63,6 +74,59 @@ public class GoblinNftUtils {
...
@@ -63,6 +74,59 @@ public class GoblinNftUtils {
mongoTemplate
.
insert
(
vo
,
GoblinNftOrderVo
.
class
.
getSimpleName
());
mongoTemplate
.
insert
(
vo
,
GoblinNftOrderVo
.
class
.
getSimpleName
());
}
}
/**
* 根据时间获取当前分段购vo 如果当前没有返回下一个
*
* @param now
* @param skuId
* @return
*/
public
GoblinListCollectVo
getCollectByNowNext
(
LocalDateTime
now
,
String
skuId
)
{
GoblinListCollectVo
collectVo
=
null
;
GoblinListCollectVo
collectTemp
=
null
;
GoblinListCollectVo
collectNext
=
null
;
List
<
GoblinListCollectVo
>
collectVos
=
getGoblinListCollect
(
skuId
);
for
(
int
i
=
0
;
i
<
collectVos
.
size
();
i
++)
{
GoblinListCollectVo
collectVoItem
=
collectVos
.
get
(
i
);
if
(
now
.
isAfter
(
collectVoItem
.
getTimeStart
())
&&
collectVoItem
.
getTimeEnd
()
==
null
)
{
if
(
collectTemp
==
null
||
collectTemp
.
getTimeStart
().
isBefore
(
collectVoItem
.
getTimeStart
()))
{
collectTemp
=
collectVoItem
;
}
}
else
if
(
now
.
isAfter
(
collectVoItem
.
getTimeStart
())
&&
now
.
isBefore
(
collectVoItem
.
getTimeEnd
()))
{
collectVo
=
collectVoItem
;
}
else
if
(
now
.
isBefore
(
collectVoItem
.
getTimeStart
()))
{
if
(
collectNext
==
null
||
collectNext
.
getTimeStart
().
isAfter
(
collectNext
.
getTimeStart
()))
{
collectNext
=
collectVoItem
;
}
}
else
if
(
collectVoItem
.
getTimeEnd
()
!=
null
&&
now
.
isAfter
(
collectVoItem
.
getTimeEnd
())){
collectTemp
=
null
;
}
}
if
(
collectVo
==
null
&&
collectTemp
!=
null
)
{
collectVo
=
collectTemp
;
}
else
if
(
collectVo
==
null
)
{
collectVo
=
collectNext
;
}
return
collectVo
;
}
/**
* 分段购获取
*
* @param skuId
* @return
*/
public
List
<
GoblinListCollectVo
>
getGoblinListCollect
(
String
skuId
)
{
Object
obj
=
redisUtil
.
get
(
GoblinRedisConst
.
LIST_COLLECT
.
concat
(
skuId
));
if
(
obj
==
null
)
{
return
new
ArrayList
<>();
}
else
{
List
<
GoblinListCollectVo
>
list
=
(
List
<
GoblinListCollectVo
>)
obj
;
list
=
list
.
stream
().
sorted
(
Comparator
.
comparing
(
GoblinListCollectVo:
:
getTimeStart
)).
collect
(
Collectors
.
toList
());
return
list
;
}
}
public
UpdateResult
updateGoblinNftOrderVo
(
GoblinNftOrderVo
data
)
{
public
UpdateResult
updateGoblinNftOrderVo
(
GoblinNftOrderVo
data
)
{
BasicDBObject
object
=
cloneBasicDBObject
().
append
(
"$set"
,
mongoConverter
.
convertToMongoType
(
data
));
BasicDBObject
object
=
cloneBasicDBObject
().
append
(
"$set"
,
mongoConverter
.
convertToMongoType
(
data
));
return
mongoTemplate
.
getCollection
(
GoblinNftOrderVo
.
class
.
getSimpleName
()).
updateOne
(
return
mongoTemplate
.
getCollection
(
GoblinNftOrderVo
.
class
.
getSimpleName
()).
updateOne
(
...
...
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