记得上下班打卡 | 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
1dedc97c
Commit
1dedc97c
authored
Apr 06, 2022
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
回滚购买数量问题;没限购如果异常会多减、有限购抽盲盒出错或没库存没有减,而且如果抽成功后面异常减的抽中的skuid也不对
parent
a1dce53f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
11 additions
and
10 deletions
+11
-10
GoblinNftOrderServiceImpl.java
...service/order/service/impl/GoblinNftOrderServiceImpl.java
+8
-7
GoblinNftOrderUtils.java
...om/liquidnet/service/order/utils/GoblinNftOrderUtils.java
+3
-3
No files found.
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/GoblinNftOrderServiceImpl.java
View file @
1dedc97c
...
...
@@ -105,8 +105,8 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
// 判断数量限购 盲盒暂时没限购但是要记录购买数量 所以也放在这里 这样既能都记录限购数量又不至于判断处理麻烦
Integer
limitCount
=
skuVo
.
getBuyLimit
();
// 是否限购都记录一个购买数量 防止中间增加限购 开始没加后面判断库存减了也是有问题的 或者放在最后也行 因为对单用户限流了
i
f
(
null
!=
limitCount
&&
!
Objects
.
equals
(
0
,
limitCount
))
{
int
buyCount
=
goblinRedisUtils
.
incrSkuCountByUid
(
uid
,
skuId
,
number
);
i
nt
buyCount
=
goblinRedisUtils
.
incrSkuCountByUid
(
uid
,
skuId
,
number
);
if
(
null
!=
limitCount
&&
limitCount
>
0
)
{
if
(
buyCount
>
limitCount
)
{
goblinRedisUtils
.
decrSkuCountByUid
(
uid
,
skuId
,
number
);
return
ResponseDto
.
failure
(
"您已超出限购数量~"
);
...
...
@@ -127,7 +127,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
}*/
String
boxSkuId
=
""
;
// 购买盲盒回滚抽到的库存 购买藏品回滚购买的库存
String
ba
ckSkuId
=
skuId
;
String
sto
ckSkuId
=
skuId
;
if
(
skuVo
.
getUnbox
().
equals
(
"1"
))
{
// 盲盒逻辑
GoblinGoodsInfoVo
spuInfoVo
=
goblinRedisUtils
.
getGoodsInfoVo
(
spuId
);
List
<
String
>
skuIdList
=
spuInfoVo
.
getSkuIdList
();
...
...
@@ -136,16 +136,17 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
}
else
{
GoblinGoodsSkuInfoVo
skuInfoVo
=
lotteryDraw
(
skuIdList
,
number
);
if
(
null
==
skuInfoVo
)
{
goblinRedisUtils
.
decrSkuCountByUid
(
uid
,
skuId
,
number
);
return
ResponseDto
.
failure
(
"盲盒库存不足啦~"
);
}
boxSkuId
=
skuInfoVo
.
getSkuId
();
ba
ckSkuId
=
boxSkuId
;
sto
ckSkuId
=
boxSkuId
;
}
}
else
{
// 普通藏品逻辑
// 判断库存
int
surplusGeneral
=
nftOrderUtils
.
decrSkuStock
(
skuId
,
number
);
if
(
surplusGeneral
<
0
)
{
nftOrderUtils
.
backSkuCountAndStock
(
uid
,
backS
kuId
,
number
);
nftOrderUtils
.
backSkuCountAndStock
(
uid
,
stockSkuId
,
s
kuId
,
number
);
return
ResponseDto
.
failure
(
"库存不足啦~"
);
}
}
...
...
@@ -185,14 +186,14 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
// 下单数据
GoblinNftOrder
nftOrder
=
order
(
payParam
,
skuVo
.
getStoreId
(),
uid
,
spuId
,
number
,
orderId
,
orderCode
,
totalPrice
,
voucherPrice
,
storeVoucherPrice
,
boxSkuId
);
if
(
null
==
nftOrder
)
{
nftOrderUtils
.
backSkuCountAndStock
(
uid
,
backS
kuId
,
number
);
nftOrderUtils
.
backSkuCountAndStock
(
uid
,
stockSkuId
,
s
kuId
,
number
);
return
ResponseDto
.
failure
(
"下单失败~"
);
}
// 下单唤起支付
GoblinNftPayResultVo
nftPayResultVo
=
payOrder
(
nftOrder
,
uid
,
payParam
);
if
(
null
==
nftPayResultVo
)
{
nftOrderUtils
.
backSkuCountAndStock
(
uid
,
backS
kuId
,
number
);
nftOrderUtils
.
backSkuCountAndStock
(
uid
,
stockSkuId
,
s
kuId
,
number
);
return
ResponseDto
.
failure
(
"下单失败啦~"
);
}
return
ResponseDto
.
success
(
nftPayResultVo
);
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/utils/GoblinNftOrderUtils.java
View file @
1dedc97c
...
...
@@ -60,11 +60,11 @@ public class GoblinNftOrderUtils {
}
// 回滚用户sku购买个数和库存
public
void
backSkuCountAndStock
(
String
uid
,
String
skuId
,
int
number
)
{
public
void
backSkuCountAndStock
(
String
uid
,
String
s
tockSkuId
,
String
byS
kuId
,
int
number
)
{
// 减少用户购买个数
goblinRedisUtils
.
decrSkuCountByUid
(
uid
,
s
kuId
,
number
);
goblinRedisUtils
.
decrSkuCountByUid
(
uid
,
byS
kuId
,
number
);
// 增加库存
incrSkuStock
(
skuId
,
number
);
incrSkuStock
(
s
tockS
kuId
,
number
);
}
// 订单详情vo
...
...
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