Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
xunj
/
festival-activites
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 6b005320
authored
Jan 29, 2021
by
xunj
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
概率随机、用户牛牌数量查询
1 parent
a249f4c4
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
267 additions
and
12 deletions
activity-admin/src/main/java/com/polysoft/activity/constant/Test.java
activity-admin/src/main/java/com/polysoft/activity/controller/UserController.java
activity-admin/src/main/java/com/polysoft/activity/mapper/ActivityMapper.java
activity-admin/src/main/java/com/polysoft/activity/mapper/UserInfoMapper.java
activity-admin/src/main/java/com/polysoft/activity/model/dto/UserSignDto.java
activity-admin/src/main/java/com/polysoft/activity/model/param/UserInfoParam.java
activity-admin/src/main/java/com/polysoft/activity/model/vo/ActItemVO.java
activity-admin/src/main/java/com/polysoft/activity/model/vo/FirstLoginRedVO.java
activity-admin/src/main/java/com/polysoft/activity/model/vo/UserInfoVO.java
activity-admin/src/main/java/com/polysoft/activity/service/UserInfoService.java
activity-admin/src/main/java/com/polysoft/activity/service/impl/ActItemServiceImpl.java
activity-admin/src/main/java/com/polysoft/activity/service/impl/UserInfoServiceImpl.java
activity-admin/src/main/java/com/polysoft/activity/task/InitRedPackageTask.java
activity-admin/src/main/java/com/polysoft/activity/utils/MathRandom.java
activity-admin/src/main/resources/mapper/ActivityMapper.xml
activity-admin/src/main/resources/mapper/CattleBrandMapper.xml
activity-admin/src/main/resources/mapper/UserInfoMapper.xml
activity-admin/src/main/java/com/polysoft/activity/constant/Test.java
0 → 100644
View file @
6b00532
package
com
.
polysoft
.
activity
.
constant
;
import
java.text.DecimalFormat
;
import
java.text.NumberFormat
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Random
;
import
java.util.Scanner
;
/**
* @author lvyp
* @date 2021/1/29
*/
public
class
Test
{
public
static
void
main
(
String
[]
args
)
{
//红包数
int
number
=
10
;
//红包总额
float
total
=
100
;
float
money
;
//最小红包
double
min
=
1
;
double
max
;
int
i
=
1
;
List
math
=
new
ArrayList
();
DecimalFormat
df
=
new
DecimalFormat
(
"###.##"
);
while
(
i
<
number
)
{
//保证即使一个红包是最大的了,后面剩下的红包,每个红包也不会小于最小值
max
=
total
-
min
*
(
number
-
i
);
int
k
=
(
int
)(
number
-
i
)
/
2
;
//保证最后两个人拿的红包不超出剩余红包
if
(
number
-
i
<=
2
)
{
k
=
number
-
i
;
}
//最大的红包限定的平均线上下
max
=
max
/
k
;
//保证每个红包大于最小值,又不会大于最大值
money
=
(
int
)
(
min
*
100
+
Math
.
random
()
*
(
max
*
100
-
min
*
100
+
1
));
money
=
(
float
)
money
/
100
;
//保留两位小数
money
=
Float
.
parseFloat
(
df
.
format
(
money
));
total
=(
int
)(
total
*
100
-
money
*
100
);
total
=
total
/
100
;
math
.
add
(
money
);
System
.
out
.
println
(
"第"
+
i
+
"个人拿到"
+
money
+
"剩下"
+
total
);
i
++;
//最后一个人拿走剩下的红包
if
(
i
==
number
)
{
math
.
add
(
total
);
System
.
out
.
println
(
"第"
+
i
+
"个人拿到"
+
total
+
"剩下0"
);
}
}
//取数组中最大的一个值的索引
System
.
out
.
println
(
"本轮发红包中第"
+
(
math
.
indexOf
(
Collections
.
max
(
math
))
+
1
)
+
"个人手气最佳"
);
}
}
activity-admin/src/main/java/com/polysoft/activity/controller/UserController.java
View file @
6b00532
...
...
@@ -24,11 +24,21 @@ public class UserController {
return
userInfoService
.
queryAuthUser
(
param
.
getPhone
());
}
@PostMapping
(
"/getFirsetLgoinRed"
)
@ResponseBody
public
ApiResult
getFirsetLgoinRed
(
@RequestBody
@Validated
UserInfoParam
param
)
{
return
userInfoService
.
getFirsetLgoinRed
(
param
.
getUserId
());
}
@PostMapping
(
"/getShareLink"
)
@ResponseBody
public
ApiResult
getShareLink
(
@RequestBody
@Validated
ShareLinkParam
param
)
{
return
userInfoService
.
getShareLink
(
param
);
}
@PostMapping
(
"/saveUserSign"
)
@ResponseBody
public
ApiResult
saveUserSign
(
@RequestBody
@Validated
UserInfoParam
param
)
{
return
userInfoService
.
saveUserSign
(
param
);
}
}
activity-admin/src/main/java/com/polysoft/activity/mapper/ActivityMapper.java
View file @
6b00532
...
...
@@ -23,6 +23,7 @@ public interface ActivityMapper extends BaseMapper<ActItemDto> {
List
<
ActItemVO
>
queryActivityInfo
();
int
updateActStatus
(
@Param
(
"id"
)
Long
id
,
@Param
(
"status"
)
String
status
);
int
saveRedRain
(
@Param
(
"list"
)
List
<
AddRedRainDto
>
list
);
int
saveRedRainForOne
(
AddRedRainDto
dto
);
List
<
RedRainVO
>
queryRedRainList
(
QueryRedRainDto
dto
);
int
updateRedPackage
(
List
<
AddRedRainDto
>
dto
);
int
updateRedPackageForCattle
(
List
<
AddRedRainDto
>
dto
);
...
...
activity-admin/src/main/java/com/polysoft/activity/mapper/UserInfoMapper.java
View file @
6b00532
...
...
@@ -2,7 +2,9 @@ package com.polysoft.activity.mapper;
import
com.polysoft.activity.model.dto.SaveUserCattleDto
;
import
com.polysoft.activity.model.dto.UserInfoDto
;
import
com.polysoft.activity.model.dto.UserSignDto
;
import
com.polysoft.activity.model.dto.WechatTokenDto
;
import
com.polysoft.activity.model.vo.FirstLoginRedVO
;
import
com.polysoft.activity.model.vo.UserInfoVO
;
import
com.polysoft.activity.model.vo.WechatToken
;
import
org.mapstruct.Mapper
;
...
...
@@ -17,4 +19,7 @@ public interface UserInfoMapper {
int
updateWechatToken
(
WechatTokenDto
dto
);
int
updateRedBalace
(
@Param
(
"list"
)
List
<
UserInfoDto
>
list
);
int
saveCattleBrand
(
@Param
(
"list"
)
List
<
SaveUserCattleDto
>
list
);
int
saveUserSign
(
UserSignDto
dto
);
int
updateUserSign
(
UserSignDto
dto
);
List
<
FirstLoginRedVO
>
queryFirstLoginRed
();
}
activity-admin/src/main/java/com/polysoft/activity/model/dto/UserSignDto.java
0 → 100644
View file @
6b00532
package
com
.
polysoft
.
activity
.
model
.
dto
;
import
cn.hutool.core.date.DateUtil
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author lvyp
* @date 2021/1/29
*/
@Data
public
class
UserSignDto
{
private
Long
id
;
private
Long
userId
;
private
String
signDate
;
private
String
signStatus
;
private
String
createTime
;
public
void
setSignDate
(
Date
signDate
)
{
this
.
signDate
=
DateUtil
.
format
(
signDate
,
"yyyy-MM-dd"
);
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
DateUtil
.
format
(
createTime
,
"yyyy-MM-dd HH:mm:ss"
);
}
}
activity-admin/src/main/java/com/polysoft/activity/model/param/UserInfoParam.java
View file @
6b00532
...
...
@@ -15,4 +15,6 @@ public class UserInfoParam extends PageQuery {
@ApiModelProperty
(
"手机号"
)
@NotBlank
(
message
=
"手机号不能为空"
)
private
String
phone
;
private
Long
userId
;
private
Long
signId
;
}
activity-admin/src/main/java/com/polysoft/activity/model/vo/ActItemVO.java
View file @
6b00532
package
com
.
polysoft
.
activity
.
model
.
vo
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
/**
...
...
@@ -14,4 +13,6 @@ public class ActItemVO {
private
String
startTime
;
private
String
emdTime
;
private
String
activityStatus
;
//活动剩余时间 单位秒
private
Long
surplusSecond
=
30L
;
}
activity-admin/src/main/java/com/polysoft/activity/model/vo/FirstLoginRedVO.java
0 → 100644
View file @
6b00532
package
com
.
polysoft
.
activity
.
model
.
vo
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* @author lvyp
* @date 2021/1/29
*/
@Data
public
class
FirstLoginRedVO
{
private
Long
id
;
private
BigDecimal
amount
;
}
activity-admin/src/main/java/com/polysoft/activity/model/vo/UserInfoVO.java
View file @
6b00532
...
...
@@ -21,4 +21,6 @@ public class UserInfoVO implements Serializable {
private
BigDecimal
redBalance
;
@ApiModelProperty
(
"部门名称"
)
private
String
dept_name
;
@ApiModelProperty
(
"是否首次进入 0 是 1 不是"
)
private
String
isFirst
;
}
activity-admin/src/main/java/com/polysoft/activity/service/UserInfoService.java
View file @
6b00532
...
...
@@ -2,9 +2,12 @@ package com.polysoft.activity.service;
import
com.polysoft.activity.model.param.ShareLinkParam
;
import
com.polysoft.activity.model.param.UserInfoParam
;
import
com.polysoft.activity.utils.ApiResult
;
public
interface
UserInfoService
{
ApiResult
queryAuthUser
(
String
phone
);
ApiResult
getShareLink
(
ShareLinkParam
param
);
ApiResult
saveUserSign
(
UserInfoParam
param
);
ApiResult
getFirsetLgoinRed
(
Long
userId
);
}
activity-admin/src/main/java/com/polysoft/activity/service/impl/ActItemServiceImpl.java
View file @
6b00532
...
...
@@ -13,7 +13,9 @@ import org.springframework.stereotype.Service;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author lvyp
...
...
@@ -35,20 +37,26 @@ public class ActItemServiceImpl implements ActItemService{
//正在进行
activityMapper
.
updateActStatus
(
item
.
getId
(),
"1"
);
item
.
setActivityStatus
(
"1"
);
item
.
setSurplusSecond
(
endTime
-
cuttentTime
);
}
if
(
cuttentTime
<
startTime
&&
(
startTime
-
cuttentTime
)
<
30
){
//即将开始
activityMapper
.
updateActStatus
(
item
.
getId
(),
"2"
);
item
.
setActivityStatus
(
"2"
);
item
.
setSurplusSecond
(
endTime
-
endTime
);
}
if
(
cuttentTime
>
endTime
)
{
//已结束
activityMapper
.
updateActStatus
(
item
.
getId
(),
"3"
);
item
.
setActivityStatus
(
"3"
);
item
.
setSurplusSecond
(
endTime
-
endTime
);
}
}
}
return
ApiResult
.
ok
(
list
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"list"
,
list
);
map
.
put
(
"currentTime"
,
DateUtil
.
format
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
return
ApiResult
.
ok
(
map
);
}
@Override
...
...
activity-admin/src/main/java/com/polysoft/activity/service/impl/UserInfoServiceImpl.java
View file @
6b00532
...
...
@@ -3,23 +3,39 @@ package com.polysoft.activity.service.impl;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.polysoft.activity.common.log.LoggerHelper
;
import
com.polysoft.activity.mapper.ActivityMapper
;
import
com.polysoft.activity.mapper.CattleBrandMapper
;
import
com.polysoft.activity.mapper.UserInfoMapper
;
import
com.polysoft.activity.model.dto.AddRedRainDto
;
import
com.polysoft.activity.model.dto.SaveUserCattleDto
;
import
com.polysoft.activity.model.dto.UserInfoDto
;
import
com.polysoft.activity.model.dto.UserSignDto
;
import
com.polysoft.activity.model.dto.WechatTokenDto
;
import
com.polysoft.activity.model.param.ShareLinkParam
;
import
com.polysoft.activity.model.param.UserInfoParam
;
import
com.polysoft.activity.model.vo.CattleBrandVO
;
import
com.polysoft.activity.model.vo.FirstLoginRedVO
;
import
com.polysoft.activity.model.vo.ShareLinkVO
;
import
com.polysoft.activity.model.vo.UserInfoVO
;
import
com.polysoft.activity.model.vo.WechatToken
;
import
com.polysoft.activity.service.UserInfoService
;
import
com.polysoft.activity.utils.ApiResult
;
import
com.polysoft.activity.utils.SHA1
;
import
com.polysoft.activity.utils.SnowFlakeUtil
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.unit.DataUnit
;
import
org.springframework.web.client.RestTemplate
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.text.ParseException
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Random
;
import
java.util.UUID
;
...
...
@@ -29,6 +45,10 @@ public class UserInfoServiceImpl implements UserInfoService {
@Resource
private
UserInfoMapper
mapper
;
@Resource
private
CattleBrandMapper
cattleBrandMapper
;
@Resource
private
ActivityMapper
activityMapper
;
@Resource
private
RestTemplate
restTemplate
;
@Value
(
"${wechat.appId}"
)
private
String
appId
;
...
...
@@ -81,4 +101,63 @@ public class UserInfoServiceImpl implements UserInfoService {
shareLinkVO
.
setSignature
(
SHA1
.
encode
(
signStr
));
return
ApiResult
.
ok
(
shareLinkVO
);
}
@Override
public
ApiResult
saveUserSign
(
UserInfoParam
param
)
{
UserSignDto
userSignDto
=
new
UserSignDto
();
if
(
param
.
getSignId
()
!=
null
){
userSignDto
.
setId
(
param
.
getSignId
());
userSignDto
.
setCreateTime
(
new
Date
());
userSignDto
.
setSignStatus
(
"2"
);
mapper
.
updateUserSign
(
userSignDto
);
}
else
{
List
<
CattleBrandVO
>
cattleList
=
cattleBrandMapper
.
queryCattleBrandList
();
userSignDto
.
setId
(
SnowFlakeUtil
.
nextId
());
userSignDto
.
setUserId
(
param
.
getUserId
());
userSignDto
.
setSignStatus
(
"1"
);
userSignDto
.
setSignDate
(
new
Date
());
userSignDto
.
setCreateTime
(
new
Date
());
mapper
.
saveUserSign
(
userSignDto
);
List
<
SaveUserCattleDto
>
list
=
new
ArrayList
<>();
SaveUserCattleDto
dto
=
new
SaveUserCattleDto
();
dto
.
setId
(
SnowFlakeUtil
.
nextId
());
dto
.
setUserId
(
param
.
getUserId
());
dto
.
setCattleBrandId
(
cattleList
.
get
(
new
Random
().
nextInt
(
5
)).
getCattleId
());
mapper
.
saveCattleBrand
(
list
);
}
return
ApiResult
.
ok
();
}
@Override
public
ApiResult
getFirsetLgoinRed
(
Long
userId
)
{
//首次登录未领取的红包
try
{
List
<
FirstLoginRedVO
>
firstLoginRedVOList
=
mapper
.
queryFirstLoginRed
();
if
(
firstLoginRedVOList
!=
null
&&
firstLoginRedVOList
.
size
()
>
0
){
//新增到红包雨表 作为红包基础数据
FirstLoginRedVO
redVO
=
firstLoginRedVOList
.
get
(
new
Random
().
nextInt
(
firstLoginRedVOList
.
size
()));
AddRedRainDto
dto
=
new
AddRedRainDto
();
dto
.
setRedId
(
SnowFlakeUtil
.
nextId
());
dto
.
setUserId
(
userId
);
dto
.
setRedAmount
(
redVO
.
getAmount
());
dto
.
setRedType
(
"0"
);
dto
.
setIsEnble
(
"1"
);
dto
.
setBatchNum
(
4
);
dto
.
setCreateTime
(
new
Date
());
activityMapper
.
saveRedRainForOne
(
dto
);
//更新聚宝盆余额
List
<
UserInfoDto
>
userInfoDtoList
=
new
ArrayList
<>();
UserInfoDto
userInfoDto
=
new
UserInfoDto
();
userInfoDto
.
setUserId
(
userId
);
userInfoDto
.
setRedBalance
(
redVO
.
getAmount
());
userInfoDtoList
.
add
(
userInfoDto
);
mapper
.
updateRedBalace
(
userInfoDtoList
);
return
ApiResult
.
ok
(
redVO
.
getAmount
());
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ApiResult
.
error
();
}
return
ApiResult
.
ok
();
}
}
activity-admin/src/main/java/com/polysoft/activity/task/InitRedPackageTask.java
View file @
6b00532
...
...
@@ -186,7 +186,7 @@ public class InitRedPackageTask {
userInfoDtoList
.
add
(
dto
);
});
userInfoMapper
.
updateRedBalace
(
userInfoDtoList
);
//更
用
户牛牌
//更
新
户牛牌
CalculateAmoutDto
calculateAmoutDto2
=
new
CalculateAmoutDto
();
calculateAmoutDto2
.
setRedType
(
"2"
);
calculateAmoutDto2
.
setBatchNum
(
batchNum
);
...
...
@@ -232,7 +232,7 @@ public class InitRedPackageTask {
while
(
true
){
String
str
=
format
.
format
(
r
.
nextDouble
()*
nextMoney
);
redMoney
=
Double
.
parseDouble
(
str
);
if
(
redMoney
>
0
&&
redMoney
<
middle
){
if
(
redMoney
>
0
.01
&&
redMoney
<
middle
){
break
;
}
}
...
...
@@ -246,14 +246,10 @@ public class InitRedPackageTask {
return
dou
;
}
public
static
void
main
(
String
[]
args
)
{
/*double [] ss = new InitRedPackageTask().getMoney(5000.00*0.25,100
);
double
[]
ss
=
new
InitRedPackageTask
().
getMoney
(
1000
,
15
);
for
(
double
s
:
ss
)
{
System
.
out
.
println
(
s
);
}*/
for
(
int
i
=
0
;
i
<
20
;
i
++){
int
k
=
new
Random
().
nextInt
(
5
);
System
.
out
.
println
(
k
);
}
}
}
activity-admin/src/main/java/com/polysoft/activity/utils/MathRandom.java
View file @
6b00532
...
...
@@ -85,7 +85,7 @@ public class MathRandom {
{
int
i
=
0
;
MathRandom
a
=
new
MathRandom
(
0.50
,
0.30
,
0.15
,
0.04
,
0.01
);
for
(
i
=
0
;
i
<
=
100
;
i
++)
//打印100个测试概率的准确性
for
(
i
=
0
;
i
<
1
;
i
++)
//打印100个测试概率的准确性
{
System
.
out
.
println
(
a
.
PercentageRandom
()+
1
);
}
...
...
activity-admin/src/main/resources/mapper/ActivityMapper.xml
View file @
6b00532
...
...
@@ -17,6 +17,27 @@
)
</foreach>
</insert>
<insert
id=
"saveRedRainForOne"
parameterType=
"com.polysoft.activity.model.dto.AddRedRainDto"
>
INSERT into t_red_rain (
red_id,
user_id,
red_amount,
red_type,
is_enble,
batch_num,
create_time
)VALUES
(
#{redId},
#{userId},
#{redAmount},
#{redType},
#{isEnble},
#{batchNum},
#{createTime}
)
</insert>
<update
id=
"updateActStatus"
>
update act_item
set activity_status=#{status}
...
...
activity-admin/src/main/resources/mapper/CattleBrandMapper.xml
View file @
6b00532
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.polysoft.activity.mapper.CattleBrandMapper"
>
<select
id=
"queryCattleBrandList"
resultType=
"com.polysoft.activity.model.vo.CattleBrandVO"
>
select
cattle_id,
...
...
activity-admin/src/main/resources/mapper/UserInfoMapper.xml
View file @
6b00532
...
...
@@ -7,13 +7,20 @@
user_name,
red_balance,
phone,
dept_name
dept_name,
is_first
from
t_user where phone=#{phone}
</select>
<select
id=
"getWechatToken"
resultType=
"com.polysoft.activity.model.vo.WechatToken"
>
select access_token,update_time from wechat_token where id =1
</select>
<select
id=
"queryFirstLoginRed"
resultType=
"com.polysoft.activity.model.vo.FirstLoginRedVO"
>
SELECT
id,
amount
from t_first_login_red where is_flag = '0'
</select>
<update
id=
"updateWechatToken"
parameterType=
"com.polysoft.activity.model.dto.WechatTokenDto"
>
update wechat_token set access_token=#{accessToken},update_time=#{updateTime} where id =1
</update>
...
...
@@ -46,4 +53,26 @@
)
</foreach>
</insert>
<insert
id=
"saveUserSign"
parameterType=
"com.polysoft.activity.model.dto.UserSignDto"
>
INSERT INTO t_user_sign(
id,
user_id,
sign_date,
sign_status,
create_time
)VALUES (
#{id},
#{userId},
#{signDate},
#{signStatus},
#{createTime}
)
</insert>
<insert
id=
"updateUserSign"
parameterType=
"com.polysoft.activity.model.dto.UserSignDto"
>
UPDATE t_user_sign
SET
sign_status =#{signStatus},
create_time =#{#{createTime}
where id = #{id}
</insert>
</mapper>
Write
Preview
Markdown
is supported
Attach a file
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 post a comment