记得上下班打卡 | 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
e53cffa6
Commit
e53cffa6
authored
Dec 06, 2021
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
抽奖完善
parent
f93414ec
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
3 deletions
+39
-3
SweetIntegralActivityDrawServiceImpl.java
...et/service/impl/SweetIntegralActivityDrawServiceImpl.java
+39
-3
No files found.
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetIntegralActivityDrawServiceImpl.java
View file @
e53cffa6
...
...
@@ -122,7 +122,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
if
(
CollectionUtils
.
isEmpty
(
activityPrizeVoArrayList
))
{
return
ResponseDto
.
failure
(
"活动太火爆了,奖品已经没有库存啦~"
);
}
IntegralActivityPrizeVo
integralActivityPrizeVo
=
this
.
lotteryDraw
(
activityPrizeVoArrayList
);
IntegralActivityPrizeVo
integralActivityPrizeVo
=
this
.
lotteryDraw
1
(
activityPrizeVoArrayList
);
// 减库存 顺便判断库存是否够 -1的时候回滚回去
long
activityPrizeNum
=
redisDataUtils
.
decrIntegralActivityPrizeNum
(
integralActivityId
,
integralActivityPrizeVo
.
getPrizeId
(),
1
);
...
...
@@ -323,9 +323,45 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
}
/**
* 抽奖方法
* 抽奖方法
积分、券
*/
private
static
IntegralActivityPrizeVo
lotteryDraw
(
List
<
IntegralActivityPrizeVo
>
prizeList
)
{
private
static
IntegralActivityPrizeVo
lotteryDraw1
(
List
<
IntegralActivityPrizeVo
>
prizeList
)
{
if
(
prizeList
==
null
||
prizeList
.
isEmpty
())
{
return
null
;
}
int
size
=
prizeList
.
size
();
// 计算总概率,这样可以保证不一定总概率是1
BigDecimal
sumRate
=
BigDecimal
.
ZERO
;
for
(
IntegralActivityPrizeVo
prize
:
prizeList
)
{
sumRate
=
sumRate
.
add
(
prize
.
getWinningProbability
());
}
// 计算每个物品在总概率的基础下的概率情况
List
<
BigDecimal
>
sortOrignalRates
=
new
ArrayList
<>(
size
);
BigDecimal
tempSumRate
=
BigDecimal
.
ZERO
;
for
(
IntegralActivityPrizeVo
prize
:
prizeList
)
{
tempSumRate
=
tempSumRate
.
add
(
prize
.
getWinningProbability
());
sortOrignalRates
.
add
(
tempSumRate
.
divide
(
sumRate
,
4
,
BigDecimal
.
ROUND_HALF_UP
));
}
// 根据区块值来获取抽取到的物品索引
double
nextDouble
=
Math
.
random
();
BigDecimal
nextDoubleNew
=
BigDecimal
.
valueOf
(
nextDouble
);
sortOrignalRates
.
add
(
nextDoubleNew
);
Collections
.
sort
(
sortOrignalRates
);
int
index
=
sortOrignalRates
.
indexOf
(
nextDoubleNew
);
IntegralActivityPrizeVo
integralActivityPrizeVo
=
prizeList
.
get
(
index
);
return
integralActivityPrizeVo
;
}
/**
* 抽奖方法 实物、会员
*/
private
static
IntegralActivityPrizeVo
lotteryDraw2
(
List
<
IntegralActivityPrizeVo
>
prizeList
)
{
if
(
prizeList
==
null
||
prizeList
.
isEmpty
())
{
return
null
;
}
...
...
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