记得上下班打卡 | 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
90f404b9
Commit
90f404b9
authored
Apr 25, 2025
by
wangyifan
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev_fudai_20250418' into container
parents
893dbc55
5c08c47d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
50 additions
and
14 deletions
+50
-14
KylinLuckyBagServiceImpl.java
.../service/kylin/service/impl/KylinLuckyBagServiceImpl.java
+50
-14
No files found.
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinLuckyBagServiceImpl.java
View file @
90f404b9
...
@@ -152,17 +152,14 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
...
@@ -152,17 +152,14 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
* @param vo
* @param vo
* @return
* @return
*/
*/
public
List
<
KylinRewardUser
>
getRandomRewardCode
(
OrderDetailsVo
vo
,
String
luckyBagId
)
{
/**
final
int
limitTotal
=
vo
.
getOrderTicketVo
().
getNumber
();
* 分配兑换码
final
KylinOrderTicketVo
orderTicketVo
=
vo
.
getOrderTicketVo
();
*
final
String
orderId
=
orderTicketVo
.
getOrderTicketsId
();
* @param vo
* @return
if
(
limitTotal
<=
0
)
{
*/
log
.
error
(
"[getRandomRewardCode] 用户订单购买数量错误, orderId: {}."
,
orderId
);
private
List
<
KylinRewardUser
>
getRandomRewardCode
(
OrderDetailsVo
vo
,
String
luckyBagId
)
{
return
Collections
.
emptyList
();
String
lockKey
=
KylinRedisConst
.
LUCKY_BAG_CODE_LOCK
+
luckyBagId
;
}
final
String
lockKey
=
KylinRedisConst
.
LUCKY_BAG_CODE_LOCK
+
luckyBagId
;
try
{
try
{
// 1. 获取分布式锁,防止并发问题
// 1. 获取分布式锁,防止并发问题
boolean
locked
=
redisUtil
.
lock
(
lockKey
,
1
,
30
);
boolean
locked
=
redisUtil
.
lock
(
lockKey
,
1
,
30
);
...
@@ -171,9 +168,21 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
...
@@ -171,9 +168,21 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
return
Collections
.
emptyList
();
return
Collections
.
emptyList
();
}
}
final
int
limitTotal
=
vo
.
getOrderTicketVo
().
getNumber
();
if
(
limitTotal
<=
0
)
{
log
.
error
(
"[getRandomRewardCode] 用户订单购买数量错误, orderId: {}."
,
vo
.
getOrderTicketVo
().
getOrderTicketsId
());
return
Collections
.
emptyList
();
}
LambdaQueryWrapper
<
KylinRewardCode
>
lambdaQueryWrapper
=
new
QueryWrapper
<
KylinRewardCode
>().
lambda
()
.
eq
(
KylinRewardCode:
:
getLuckyBagId
,
luckyBagId
)
.
eq
(
KylinRewardCode:
:
getState
,
1
)
.
last
(
true
,
"ORDER BY RAND() limit "
+
limitTotal
);
//2. 搜索兑换码
//2. 搜索兑换码
List
<
KylinRewardCode
>
rewardCodes
=
getAvailableRewardCodes
(
luckyBagId
,
limitTotal
);
List
<
KylinRewardCode
>
rewardCodes
=
kylinRewardCodeMapper
.
selectList
(
lambdaQueryWrapper
);
if
(
rewardCodes
.
size
()
<
limitTotal
)
{
if
(
rewardCodes
.
isEmpty
()
||
rewardCodes
.
size
()
<
limitTotal
)
{
log
.
error
(
"[getRandomRewardCode] 兑换码不足, luckyBagId: {}, need total: {}."
,
luckyBagId
,
limitTotal
);
log
.
error
(
"[getRandomRewardCode] 兑换码不足, luckyBagId: {}, need total: {}."
,
luckyBagId
,
limitTotal
);
// 报警
// 报警
String
msg
=
String
.
format
(
"福袋ID [%s] 兑换码不足,请及时补充."
,
luckyBagId
);
String
msg
=
String
.
format
(
"福袋ID [%s] 兑换码不足,请及时补充."
,
luckyBagId
);
...
@@ -181,7 +190,34 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
...
@@ -181,7 +190,34 @@ public class KylinLuckyBagServiceImpl implements IKylinLuckyBagService {
return
Collections
.
emptyList
();
return
Collections
.
emptyList
();
}
}
return
assignRewardCodesToUser
(
orderTicketVo
.
getUserId
(),
orderId
,
luckyBagId
,
rewardCodes
,
orderTicketVo
.
getEntitiesVoList
());
//3. 写入
List
<
KylinRewardUser
>
rewardUsers
=
new
ArrayList
<>(
limitTotal
);
for
(
int
i
=
0
;
i
<
rewardCodes
.
size
();
i
++)
{
KylinRewardCode
rewardCode
=
rewardCodes
.
get
(
i
);
rewardCode
.
setState
(
0
);
int
updateResult
=
kylinRewardCodeMapper
.
updateById
(
rewardCode
);
if
(
updateResult
>
0
)
{
KylinRewardUser
user
=
new
KylinRewardUser
();
user
.
setUid
(
vo
.
getOrderTicketVo
().
getUserId
());
user
.
setLuckyBagId
(
luckyBagId
);
user
.
setOrderId
(
vo
.
getOrderTicketVo
().
getOrderTicketsId
());
user
.
setOrderTicketEntitiesId
(
vo
.
getOrderTicketVo
().
getEntitiesVoList
().
get
(
i
).
getOrderTicketEntitiesId
());
user
.
setCode
(
rewardCode
.
getCode
());
user
.
setState
(
1
);
user
.
setCreatedAt
(
LocalDateTime
.
now
());
user
.
setUpdatedAt
(
LocalDateTime
.
now
());
kylinRewardUserMapper
.
insert
(
user
);
rewardUsers
.
add
(
user
);
log
.
info
(
"[getRandomRewardCode] 兑换码分配成功, luckyBagId: {}, orderId: {}, code: {}."
,
luckyBagId
,
vo
.
getOrderTicketVo
().
getOrderTicketsId
(),
rewardCode
.
getCode
());
}
else
{
log
.
error
(
"[getRandomRewardCode] 兑换码分配失败, luckyBagId: {}, orderId: {}."
,
luckyBagId
,
vo
.
getOrderTicketVo
().
getOrderTicketsId
());
// 报警
String
msg
=
String
.
format
(
"福袋ID [%s] 分配兑换码失败:用户ID [%s] 的订单ID [%s] 已分配了 [%s] 个,应分配 [%s] 个。"
,
luckyBagId
,
vo
.
getOrderTicketVo
().
getUserId
(),
vo
.
getOrderTicketVo
().
getOrderTicketsId
(),
rewardUsers
.
size
(),
limitTotal
);
iFeishuBotService
.
sendTextMessage
(
msg
);
}
}
return
rewardUsers
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"error"
,
e
);
log
.
error
(
"error"
,
e
);
// 报警
// 报警
...
...
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