记得上下班打卡 | 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
adad91dc
Commit
adad91dc
authored
Oct 26, 2021
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
draw
parent
8ad1ddf8
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
198 additions
and
15 deletions
+198
-15
ISweetIntegralActivityDrawService.java
...vice/sweet/service/ISweetIntegralActivityDrawService.java
+12
-1
SweetIntegralActivityServiceImpl.java
.../sweet/service/impl/SweetIntegralActivityServiceImpl.java
+3
-3
liquidnet-service-sweet.yml
...t-bus-config/liquidnet-config/liquidnet-service-sweet.yml
+3
-7
SweetIntegralActivityDrawController.java
...sweet/controller/SweetIntegralActivityDrawController.java
+62
-3
SweetIntegralActivityDrawServiceImpl.java
...et/service/impl/SweetIntegralActivityDrawServiceImpl.java
+118
-1
No files found.
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/service/ISweetIntegralActivityDrawService.java
View file @
adad91dc
package
com
.
liquidnet
.
service
.
sweet
.
service
;
package
com
.
liquidnet
.
service
.
sweet
.
service
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityPrizeVo
;
import
com.liquidnet.service.sweet.entity.SweetIntegralActivityDraw
;
import
com.liquidnet.service.sweet.entity.SweetIntegralActivityDraw
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
/**
/**
* <p>
* <p>
* 积分活动抽奖记录表 服务类
* 积分活动抽奖记录表 服务类
* </p>
* </p>
*
*
* @author jiangxiulong
* @author jiangxiulong
* @since 2021-10-2
5
* @since 2021-10-2
6
*/
*/
public
interface
ISweetIntegralActivityDrawService
extends
IService
<
SweetIntegralActivityDraw
>
{
public
interface
ISweetIntegralActivityDrawService
extends
IService
<
SweetIntegralActivityDraw
>
{
ResponseDto
<
SweetIntegralActivityPrizeVo
>
create
(
String
integralActivityId
);
ResponseDto
<
List
<
SweetIntegralActivityPrizeVo
>>
winPrize
(
Integer
type
);
ResponseDto
<
List
<
SweetIntegralActivityPrizeVo
>>
winPrizeUser
(
String
integralActivityId
);
ResponseDto
perfectAddress
(
String
drawId
,
String
receivingAddressesId
,
String
receivingName
,
String
receivingPhone
,
String
receivingAddress
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/sweet/service/impl/SweetIntegralActivityServiceImpl.java
View file @
adad91dc
...
@@ -70,7 +70,7 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
...
@@ -70,7 +70,7 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
sweetIntegralActivityPrizeMapper
.
insert
(
sweetIntegralActivityPrize
);
sweetIntegralActivityPrizeMapper
.
insert
(
sweetIntegralActivityPrize
);
}
}
}
}
//
TODO: 2021/10/20 增加
redis处理
// redis处理
this
.
integralActivityList
(
integralActivityId
);
this
.
integralActivityList
(
integralActivityId
);
return
insert
;
return
insert
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -101,7 +101,7 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
...
@@ -101,7 +101,7 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
);
);
}
}
}
}
//
TODO: 2021/10/20 增加
redis处理
// redis处理
this
.
integralActivityList
(
integralActivityId
);
this
.
integralActivityList
(
integralActivityId
);
return
update
;
return
update
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -119,7 +119,7 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
...
@@ -119,7 +119,7 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
sweetIntegralActivity
,
sweetIntegralActivity
,
Wrappers
.
lambdaUpdate
(
SweetIntegralActivity
.
class
).
eq
(
SweetIntegralActivity:
:
getIntegralActivityId
,
integralActivityId
)
Wrappers
.
lambdaUpdate
(
SweetIntegralActivity
.
class
).
eq
(
SweetIntegralActivity:
:
getIntegralActivityId
,
integralActivityId
)
);
);
//
TODO: 2021/10/20 更新缓存
//
redis处理
this
.
integralActivityList
(
integralActivityId
);
this
.
integralActivityList
(
integralActivityId
);
return
update
;
return
update
;
}
}
...
...
liquidnet-bus-config/liquidnet-config/liquidnet-service-sweet.yml
View file @
adad91dc
...
@@ -133,8 +133,8 @@ global-auth:
...
@@ -133,8 +133,8 @@ global-auth:
-
${liquidnet.info.context}/sync/**
-
${liquidnet.info.context}/sync/**
-
${liquidnet.info.context}/wechatSync/**
-
${liquidnet.info.context}/wechatSync/**
# h5活动
# h5活动
-
${liquidnet.info.context}/sweetAnswer/**
-
${liquidnet.info.context}/AntigenicQuestion/**
-
${liquidnet.info.context}/AntigenicQuestion/**
-
${liquidnet.info.context}/sweetAnswer/**
-
${liquidnet.info.context}/sweetCityVote/**
-
${liquidnet.info.context}/sweetCityVote/**
# 公众号 小程序公共接口
# 公众号 小程序公共接口
-
${liquidnet.info.context}/actionCallback/**
-
${liquidnet.info.context}/actionCallback/**
...
@@ -142,15 +142,11 @@ global-auth:
...
@@ -142,15 +142,11 @@ global-auth:
-
${liquidnet.info.context}/wechatShareSign/**
-
${liquidnet.info.context}/wechatShareSign/**
-
${liquidnet.info.context}/wechatTemplate/**
-
${liquidnet.info.context}/wechatTemplate/**
# 大美草莓手册
# 大美草莓手册
-
${liquidnet.info.context}/sweet-applet/**
-
${liquidnet.info.context}/mdsk/**
-
${liquidnet.info.context}/mdsk/**
-
${liquidnet.info.context}/sweet-manual**
-
${liquidnet.info.context}/sweet-applet/**
-
${liquidnet.info.context}/sweet-artists/**
-
${liquidnet.info.context}/sweet-artists/**
-
${liquidnet.info.context}/sweetData/**
-
${liquidnet.info.context}/sweetData/**
-
${liquidnet.info.context}/sweet-manual-artists/**
-
${liquidnet.info.context}/sweet-manual/**
-
${liquidnet.info.context}/sweet-manual-notify/**
-
${liquidnet.info.context}/sweet-manual-shop/**
-
${liquidnet.info.context}/sweet-manual-sort/**
-
${liquidnet.info.context}/sweet-richtext/**
-
${liquidnet.info.context}/sweet-richtext/**
-
${liquidnet.info.context}/sweet-stage/**
-
${liquidnet.info.context}/sweet-stage/**
# 积分抽奖活动
# 积分抽奖活动
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetIntegralActivityDrawController.java
View file @
adad91dc
package
com
.
liquidnet
.
service
.
sweet
.
controller
;
package
com
.
liquidnet
.
service
.
sweet
.
controller
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.dto.vo.IntegralActivityVo
;
import
com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityPrizeVo
;
import
com.liquidnet.service.sweet.service.ISweetIntegralActivityDrawService
;
import
com.liquidnet.service.sweet.service.ISweetIntegralActivityDrawService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.
RequestMapping
;
import
org.springframework.web.bind.annotation.
*
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
/**
/**
* <p>
* <p>
...
@@ -14,7 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -14,7 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
* </p>
* </p>
*
*
* @author jiangxiulong
* @author jiangxiulong
* @since 2021-10-2
5
* @since 2021-10-2
6
*/
*/
@Api
(
tags
=
"活动-积分抽奖"
)
@Api
(
tags
=
"活动-积分抽奖"
)
@RestController
@RestController
...
@@ -22,4 +28,57 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -22,4 +28,57 @@ import org.springframework.web.bind.annotation.RestController;
public
class
SweetIntegralActivityDrawController
{
public
class
SweetIntegralActivityDrawController
{
@Autowired
@Autowired
private
ISweetIntegralActivityDrawService
activityDrawService
;
private
ISweetIntegralActivityDrawService
activityDrawService
;
@PostMapping
(
"create"
)
@ApiOperation
(
"用户抽奖"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"integralActivityId"
,
value
=
"活动id"
,
required
=
true
)
})
public
ResponseDto
<
SweetIntegralActivityPrizeVo
>
create
(
@RequestParam
(
"integralActivityId"
)
String
integralActivityId
)
{
return
activityDrawService
.
create
(
integralActivityId
);
}
@GetMapping
(
"winPrize"
)
@ApiOperation
(
"用户(中奖、抽奖)记录列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"Integer"
,
name
=
"type"
,
value
=
"1中奖记录 2抽奖记录"
,
required
=
true
)
})
public
ResponseDto
<
List
<
SweetIntegralActivityPrizeVo
>>
winPrize
(
@RequestParam
(
"type"
)
Integer
type
)
{
return
activityDrawService
.
winPrize
(
type
);
}
@GetMapping
(
"winPrizeUser"
)
@ApiOperation
(
"活动中奖用户列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"integralActivityId"
,
value
=
"活动id"
,
required
=
true
)
})
public
ResponseDto
<
List
<
SweetIntegralActivityPrizeVo
>>
winPrizeUser
(
@RequestParam
(
"integralActivityId"
)
String
integralActivityId
)
{
return
activityDrawService
.
winPrizeUser
(
integralActivityId
);
}
@PostMapping
(
"perfectAddress"
)
@ApiOperation
(
"中奖完善收货地址"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"drawId"
,
value
=
"中奖ID"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"receivingAddressesId"
,
value
=
"adam收货地址addresses_id"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"receivingName"
,
value
=
"adam收货人姓名"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"receivingPhone"
,
value
=
"adam收货人手机号"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"receivingAddress"
,
value
=
"adam收货人完整地址 空格隔离省市区详细地址"
,
required
=
true
)
})
public
ResponseDto
perfectAddress
(
@RequestParam
(
"drawId"
)
String
drawId
,
@RequestParam
(
"receivingAddressesId"
)
String
receivingAddressesId
,
@RequestParam
(
"receivingName"
)
String
receivingName
,
@RequestParam
(
"receivingPhone"
)
String
receivingPhone
,
@RequestParam
(
"receivingAddress"
)
String
receivingAddress
)
{
return
activityDrawService
.
perfectAddress
(
drawId
,
receivingAddressesId
,
receivingName
,
receivingPhone
,
receivingAddress
);
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetIntegralActivityDrawServiceImpl.java
View file @
adad91dc
package
com
.
liquidnet
.
service
.
sweet
.
service
.
impl
;
package
com
.
liquidnet
.
service
.
sweet
.
service
.
impl
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.dto.vo.IntegralActivityVo
;
import
com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityPrizeVo
;
import
com.liquidnet.service.sweet.entity.SweetIntegralActivityDraw
;
import
com.liquidnet.service.sweet.entity.SweetIntegralActivityDraw
;
import
com.liquidnet.service.sweet.entity.SweetIntegralActivityPrize
;
import
com.liquidnet.service.sweet.mapper.SweetIntegralActivityDrawMapper
;
import
com.liquidnet.service.sweet.mapper.SweetIntegralActivityDrawMapper
;
import
com.liquidnet.service.sweet.service.ISweetIntegralActivityDrawService
;
import
com.liquidnet.service.sweet.service.ISweetIntegralActivityDrawService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.service.sweet.utils.RedisDataUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.util.*
;
/**
/**
* <p>
* <p>
* 积分活动抽奖记录表 服务实现类
* 积分活动抽奖记录表 服务实现类
* </p>
* </p>
*
*
* @author jiangxiulong
* @author jiangxiulong
* @since 2021-10-2
5
* @since 2021-10-2
6
*/
*/
@Service
@Service
public
class
SweetIntegralActivityDrawServiceImpl
extends
ServiceImpl
<
SweetIntegralActivityDrawMapper
,
SweetIntegralActivityDraw
>
implements
ISweetIntegralActivityDrawService
{
public
class
SweetIntegralActivityDrawServiceImpl
extends
ServiceImpl
<
SweetIntegralActivityDrawMapper
,
SweetIntegralActivityDraw
>
implements
ISweetIntegralActivityDrawService
{
@Autowired
private
RedisDataUtils
redisDataUtils
;
@Override
public
ResponseDto
<
SweetIntegralActivityPrizeVo
>
create
(
String
integralActivityId
)
{
Map
tokenClaims
=
CurrentUtil
.
getTokenClaims
();
String
userId
=
StringUtils
.
defaultString
((
String
.
valueOf
(
tokenClaims
.
get
(
"sub"
))),
""
);
String
nickname
=
StringUtils
.
defaultString
((
String
.
valueOf
(
tokenClaims
.
get
(
"nickname"
))),
""
);
IntegralActivityVo
integralActivity
=
redisDataUtils
.
getIntegralActivityInfo
(
integralActivityId
);
SweetIntegralActivityPrize
sweetIntegralActivityPrize
=
this
.
lotteryDraw
(
integralActivity
.
getPrizeList
());
// 活动是否上架 是否在有效期内 奖品库存是否够
SweetIntegralActivityPrizeVo
sweetIntegralActivityPrizeVo
=
SweetIntegralActivityPrizeVo
.
getNew
().
copy
(
sweetIntegralActivityPrize
);
return
ResponseDto
.
success
(
sweetIntegralActivityPrizeVo
);
}
@Override
public
ResponseDto
<
List
<
SweetIntegralActivityPrizeVo
>>
winPrize
(
Integer
type
)
{
return
null
;
}
@Override
public
ResponseDto
<
List
<
SweetIntegralActivityPrizeVo
>>
winPrizeUser
(
String
integralActivityId
)
{
return
null
;
}
@Override
public
ResponseDto
perfectAddress
(
String
drawId
,
String
receivingAddressesId
,
String
receivingName
,
String
receivingPhone
,
String
receivingAddress
)
{
return
null
;
}
/**
* 抽奖方法
*/
private
static
SweetIntegralActivityPrize
lotteryDraw
(
List
<
SweetIntegralActivityPrize
>
prizeList
)
{
if
(
prizeList
==
null
||
prizeList
.
isEmpty
())
{
return
null
;
}
int
size
=
prizeList
.
size
();
// 计算总概率,这样可以保证不一定总概率是1
BigDecimal
sumRate
=
BigDecimal
.
ZERO
;
for
(
SweetIntegralActivityPrize
prize
:
prizeList
)
{
sumRate
=
sumRate
.
add
(
prize
.
getWinningProbability
());
}
// 计算每个物品在总概率的基础下的概率情况
List
<
BigDecimal
>
sortOrignalRates
=
new
ArrayList
<>(
size
);
BigDecimal
tempSumRate
=
BigDecimal
.
ZERO
;
for
(
SweetIntegralActivityPrize
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
);
SweetIntegralActivityPrize
sweetIntegralActivityPrize
=
prizeList
.
get
(
index
);
return
sweetIntegralActivityPrize
;
}
/*public static void main(String[] args) {
List<SweetIntegralActivityPrizeVo> gifts = new ArrayList<>();
SweetIntegralActivityPrizeVo aNew = SweetIntegralActivityPrizeVo.getNew();
SweetIntegralActivityPrizeVo aNew2 = SweetIntegralActivityPrizeVo.getNew();
SweetIntegralActivityPrizeVo aNew3 = SweetIntegralActivityPrizeVo.getNew();
aNew.setWinningProbability(BigDecimal.valueOf(0.4));
aNew.setPrizeTitle("一等奖");
aNew.setPrizeId("111");
aNew2.setWinningProbability(BigDecimal.valueOf(0.5));
aNew2.setPrizeTitle("二等奖");
aNew2.setPrizeId("222");
aNew3.setWinningProbability(BigDecimal.valueOf(0.1));
aNew3.setPrizeTitle("三等奖");
aNew3.setPrizeId("333");
gifts.add(aNew);
gifts.add(aNew2);
gifts.add(aNew3);
// 统计
Map<Integer, Integer> count = new HashMap<>();
// 测试次数
double num = 1000000;
for (int i = 0; i < num; i++) {
SweetIntegralActivityPrizeVo orignalIndex = lottery(gifts);
Integer integer = count.get(Integer.valueOf(orignalIndex.getPrizeId()));
count.put(Integer.valueOf(orignalIndex.getPrizeId()), integer == null ? 1 : integer + 1);
}
for (Map.Entry<Integer, Integer> entry : count.entrySet()) {
System.out.println(entry.getKey() + ", 命中次数=" + entry.getValue() + ", 实际概率="
+ entry.getValue() / num);
}
}*/
}
}
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