记得上下班打卡 | 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
4f4595a6
Commit
4f4595a6
authored
Dec 07, 2021
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
是否会员概率*2 抽奖实物减总库存
parent
4649bae8
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
40 additions
and
27 deletions
+40
-27
FeignAdamBaseClient.java
...liquidnet/service/feign/adam/api/FeignAdamBaseClient.java
+3
-0
SweetIntegralActivityDrawServiceImpl.java
...et/service/impl/SweetIntegralActivityDrawServiceImpl.java
+20
-27
RedisDataUtils.java
...ava/com/liquidnet/service/sweet/utils/RedisDataUtils.java
+17
-0
No files found.
liquidnet-bus-feign/liquidnet-api-feign-adam/src/main/java/com/liquidnet/service/feign/adam/api/FeignAdamBaseClient.java
View file @
4f4595a6
...
@@ -49,4 +49,7 @@ public interface FeignAdamBaseClient {
...
@@ -49,4 +49,7 @@ public interface FeignAdamBaseClient {
@RequestParam
(
value
=
"mobile"
)
String
mobile
,
@RequestParam
(
value
=
"mobile"
)
String
mobile
,
@NotBlank
(
message
=
"临时票据不能为空"
)
@NotBlank
(
message
=
"临时票据不能为空"
)
@RequestParam
(
value
=
"otp"
)
String
otp
);
@RequestParam
(
value
=
"otp"
)
String
otp
);
@GetMapping
(
"check/depth"
)
ResponseDto
<
Boolean
>
isMember
(
@NotBlank
(
message
=
"用户ID不能为空"
)
@RequestParam
String
uid
);
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetIntegralActivityDrawServiceImpl.java
View file @
4f4595a6
...
@@ -72,7 +72,6 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
...
@@ -72,7 +72,6 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
public
ResponseDto
<
IntegralActivityPrizeVo
>
create
(
String
integralActivityId
)
{
public
ResponseDto
<
IntegralActivityPrizeVo
>
create
(
String
integralActivityId
)
{
Map
tokenClaims
=
CurrentUtil
.
getTokenClaims
();
Map
tokenClaims
=
CurrentUtil
.
getTokenClaims
();
String
userId
=
StringUtils
.
defaultString
((
String
.
valueOf
(
tokenClaims
.
get
(
CurrentUtil
.
TOKEN_SUB
))),
""
);
String
userId
=
StringUtils
.
defaultString
((
String
.
valueOf
(
tokenClaims
.
get
(
CurrentUtil
.
TOKEN_SUB
))),
""
);
String
mobile
=
StringUtils
.
defaultString
((
String
.
valueOf
(
tokenClaims
.
get
(
CurrentUtil
.
TOKEN_MOBILE
))),
""
);
// 加锁
// 加锁
boolean
isLock
=
redisDataUtils
.
setIntegralDrawLock
(
userId
);
boolean
isLock
=
redisDataUtils
.
setIntegralDrawLock
(
userId
);
if
(!
isLock
)
{
if
(!
isLock
)
{
...
@@ -118,8 +117,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
...
@@ -118,8 +117,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
ArrayList
<
IntegralActivityPrizeVo
>
activityPrizeVoArrayList
=
SweetNewObjectUtil
.
getIntegralActivityPrizeVoArrayList
();
ArrayList
<
IntegralActivityPrizeVo
>
activityPrizeVoArrayList
=
SweetNewObjectUtil
.
getIntegralActivityPrizeVoArrayList
();
// 概率计算
// 概率计算
// TODO: 2021/12/6 黑名单只中券 不记录次数
// TODO: 2021/12/6 黑名单只中券 不记录次数
// TODO: 2021/12/6 白名单概率*2
boolean
lotteryDraw
=
this
.
lotteryDraw
(
integralActivity
.
getEstimatedNum
(),
integralActivity
.
getIntegralActivityId
(),
userId
);
boolean
lotteryDraw
=
this
.
lotteryDraw
(
integralActivity
.
getPrizeList2
(),
integralActivity
.
getEstimatedNum
(),
integralActivity
.
getIntegralActivityId
());
if
(
lotteryDraw
)
{
// 实物
if
(
lotteryDraw
)
{
// 实物
List
<
IntegralActivityPrizeVo
>
prizeList
=
integralActivity
.
getPrizeList2
();
List
<
IntegralActivityPrizeVo
>
prizeList
=
integralActivity
.
getPrizeList2
();
for
(
IntegralActivityPrizeVo
info
:
prizeList
)
{
for
(
IntegralActivityPrizeVo
info
:
prizeList
)
{
...
@@ -133,7 +131,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
...
@@ -133,7 +131,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
}*/
}*/
}
}
if
(!
lotteryDraw
||
CollectionUtils
.
isEmpty
(
activityPrizeVoArrayList
))
{
if
(!
lotteryDraw
||
CollectionUtils
.
isEmpty
(
activityPrizeVoArrayList
))
{
// 没中实物 或者 实物库存没了中券
List
<
IntegralActivityPrizeVo
>
prizeList
=
integralActivity
.
getPrizeList1
();
List
<
IntegralActivityPrizeVo
>
prizeList
=
integralActivity
.
getPrizeList1
();
for
(
IntegralActivityPrizeVo
info
:
prizeList
)
{
for
(
IntegralActivityPrizeVo
info
:
prizeList
)
{
int
integralActivityPrizeNum
=
redisDataUtils
.
getIntegralActivityPrizeNum
(
integralActivityId
,
info
.
getPrizeId
());
int
integralActivityPrizeNum
=
redisDataUtils
.
getIntegralActivityPrizeNum
(
integralActivityId
,
info
.
getPrizeId
());
...
@@ -187,27 +185,15 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
...
@@ -187,27 +185,15 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
// 发放状态
// 发放状态
receivingStatus
=
2
;
receivingStatus
=
2
;
}
}
// TODO: 2021/12/6 判断一张券直接发
/*if (prizeType == 3 || prizeType == 4 || prizeType == 5) {// 优惠券
// 发放优惠券
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("stone_candy_mgt_coupon.add_for_member"));
sqlsDataA.add(new Object[]{
IDGenerator.nextTimeId2(), sweetIntegralActivityPrize.getRelationId(),
sweetIntegralActivityPrize.getPrizeTypeNum(), mobile, nowTime, "INTEGRAL_ACTIVITY_DRAW_COUPON", nowTime
});
queueUtils.sendMsgByRedis(MQConst.StoneQueue.STONE_ORDER_COUPON.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
// 发放状态
receivingStatus = 2;
}*/
if
(
prizeType
==
1
)
{
// 谢谢惠顾
if
(
prizeType
==
1
)
{
// 谢谢惠顾
receivingStatus
=
3
;
receivingStatus
=
3
;
}
}
integralActivityDrawVo
.
setReceivingStatus
(
receivingStatus
);
integralActivityDrawVo
.
setReceivingStatus
(
receivingStatus
);
// redis
// redis
redisDataUtils
.
setIntegralActivityDraw
(
integralActivityDrawVo
);
redisDataUtils
.
setIntegralActivityDraw
(
integralActivityDrawVo
);
if
(
prizeType
==
3
||
prizeType
==
4
)
{
// 中实物减总库存
redisDataUtils
.
decrIntegralActivityTotalPrizeNum
(
integralActivityId
);
}
// mongo
// mongo
mongoTemplate
.
insert
(
integralActivityDrawVo
,
IntegralActivityDrawVo
.
class
.
getSimpleName
());
mongoTemplate
.
insert
(
integralActivityDrawVo
,
IntegralActivityDrawVo
.
class
.
getSimpleName
());
...
@@ -429,20 +415,27 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
...
@@ -429,20 +415,27 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
/**
/**
* 抽奖方法 计算中哪个奖池的奖品
* 抽奖方法 计算中哪个奖池的奖品
*/
*/
private
boolean
lotteryDraw
(
List
<
IntegralActivityPrizeVo
>
prizeList
,
Integer
estimatedNum
,
String
integralActivityI
d
)
{
private
boolean
lotteryDraw
(
Integer
estimatedNum
,
String
integralActivityId
,
String
ui
d
)
{
// 随机数
// 随机数
double
random
=
Math
.
random
()
*
100
;
double
random
=
Math
.
random
()
*
100
;
BigDecimal
randomBig
=
BigDecimal
.
valueOf
(
random
);
BigDecimal
randomBig
=
BigDecimal
.
valueOf
(
random
);
// 剩余总库存 todo 添加编辑的时候设置个总库存省区计算
// 剩余总库存 添加编辑的时候冗余的总库存省去计算
int
prizeNum
=
0
;
int
prizeNum
=
redisDataUtils
.
getIntegralActivityTotalPrizeNum
(
integralActivityId
);
for
(
IntegralActivityPrizeVo
prize
:
prizeList
)
{
int
integralActivityPrizeNum
=
redisDataUtils
.
getIntegralActivityPrizeNum
(
integralActivityId
,
prize
.
getPrizeId
());
prizeNum
+=
integralActivityPrizeNum
;
}
BigDecimal
prizeNumBig
=
BigDecimal
.
valueOf
(
prizeNum
);
BigDecimal
prizeNumBig
=
BigDecimal
.
valueOf
(
prizeNum
);
// 概率
// 概率
int
luckyDrawNum
=
redisDataUtils
.
getLuckyDrawNum
(
integralActivityId
);
int
luckyDrawNum
=
redisDataUtils
.
getLuckyDrawNum
(
integralActivityId
);
BigDecimal
multiply
=
prizeNumBig
.
divide
(
BigDecimal
.
valueOf
(
estimatedNum
-
luckyDrawNum
),
2
,
BigDecimal
.
ROUND_HALF_UP
).
multiply
(
BigDecimal
.
valueOf
(
100
));
BigDecimal
diffEstimatedNum
=
BigDecimal
.
valueOf
(
estimatedNum
-
luckyDrawNum
);
// 会员概率*2
try
{
ResponseDto
<
Boolean
>
isMemberDto
=
feignAdamBaseClient
.
isMember
(
uid
);
Boolean
isMember
=
isMemberDto
.
getData
();
if
(
isMember
)
{
diffEstimatedNum
=
diffEstimatedNum
.
divide
(
BigDecimal
.
valueOf
(
2
),
2
,
BigDecimal
.
ROUND_HALF_UP
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"获取用户是否是会员失败 [uid:{], e:{}]"
,
uid
,
e
);
}
BigDecimal
multiply
=
prizeNumBig
.
divide
(
diffEstimatedNum
,
2
,
BigDecimal
.
ROUND_HALF_UP
).
multiply
(
BigDecimal
.
valueOf
(
100
));
// 对比大小
// 对比大小
if
(
multiply
.
compareTo
(
randomBig
)
>=
0
)
{
if
(
multiply
.
compareTo
(
randomBig
)
>=
0
)
{
return
true
;
// 大于等于随机数中实物
return
true
;
// 大于等于随机数中实物
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/utils/RedisDataUtils.java
View file @
4f4595a6
...
@@ -665,6 +665,23 @@ public class RedisDataUtils {
...
@@ -665,6 +665,23 @@ public class RedisDataUtils {
return
redisUtil
.
incr
(
redisKey
,
num
);
return
redisUtil
.
incr
(
redisKey
,
num
);
}
}
public
int
getIntegralActivityTotalPrizeNum
(
String
integralActivityId
)
{
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_TOTAL_PRIZE_NUM
.
concat
(
integralActivityId
);
Object
obj
=
redisUtil
.
get
(
redisKey
);
if
(
null
==
obj
)
{
return
0
;
}
else
{
return
(
int
)
obj
;
}
}
public
long
decrIntegralActivityTotalPrizeNum
(
String
integralActivityId
)
{
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_TOTAL_PRIZE_NUM
.
concat
(
integralActivityId
);
long
decr
=
redisUtil
.
decr
(
redisKey
,
1
);
return
decr
;
}
public
IntegralActivityDrawVo
getIntegralActivityDrawInfo
(
String
drawId
)
{
public
IntegralActivityDrawVo
getIntegralActivityDrawInfo
(
String
drawId
)
{
String
redisKeyDraw
=
SweetConstant
.
REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_INFO
String
redisKeyDraw
=
SweetConstant
.
REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_INFO
.
concat
(
drawId
);
.
concat
(
drawId
);
...
...
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