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 56855414
authored
Jan 29, 2021
by
lvyp
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
签到和红包拆分
1 parent
95b863fa
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
96 additions
and
98 deletions
activity-admin/src/main/java/com/polysoft/activity/controller/UserController.java
activity-admin/src/main/java/com/polysoft/activity/mapper/CattleBrandMapper.java
activity-admin/src/main/java/com/polysoft/activity/mapper/UserInfoMapper.java
activity-admin/src/main/java/com/polysoft/activity/model/vo/CattleBrandConfVO.java
activity-admin/src/main/java/com/polysoft/activity/service/CattleBrandService.java
activity-admin/src/main/java/com/polysoft/activity/service/impl/CattleBrandServiceImpl.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/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/utils/MathRandom.java → activity-common/src/main/java/com/polysoft/activity/utils/MathRandom.java
activity-admin/src/main/java/com/polysoft/activity/constant/RedPacketUtil.java → activity-common/src/main/java/com/polysoft/activity/utils/RedPacketUtil.java
activity-admin/src/main/java/com/polysoft/activity/controller/UserController.java
View file @
5685541
...
@@ -38,7 +38,7 @@ public class UserController {
...
@@ -38,7 +38,7 @@ public class UserController {
}
}
@PostMapping
(
"/saveUserSign"
)
@PostMapping
(
"/saveUserSign"
)
@ResponseBody
@ResponseBody
public
ApiResult
saveUserSign
(
@RequestBody
@Validated
UserInfoParam
param
)
{
public
ApiResult
saveUserSign
(
@RequestBody
UserInfoParam
param
)
{
return
userInfoService
.
saveUserSign
(
param
);
return
userInfoService
.
saveUserSign
(
param
);
}
}
}
}
activity-admin/src/main/java/com/polysoft/activity/mapper/CattleBrandMapper.java
View file @
5685541
...
@@ -2,6 +2,7 @@ package com.polysoft.activity.mapper;
...
@@ -2,6 +2,7 @@ package com.polysoft.activity.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.polysoft.activity.model.dto.CattleBrandDto
;
import
com.polysoft.activity.model.dto.CattleBrandDto
;
import
com.polysoft.activity.model.vo.CattleBrandConfVO
;
import
com.polysoft.activity.model.vo.CattleBrandFroUserVO
;
import
com.polysoft.activity.model.vo.CattleBrandFroUserVO
;
import
com.polysoft.activity.model.vo.CattleBrandVO
;
import
com.polysoft.activity.model.vo.CattleBrandVO
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
...
@@ -11,6 +12,7 @@ import java.util.List;
...
@@ -11,6 +12,7 @@ import java.util.List;
@Mapper
@Mapper
public
interface
CattleBrandMapper
extends
BaseMapper
<
CattleBrandDto
>
{
public
interface
CattleBrandMapper
extends
BaseMapper
<
CattleBrandDto
>
{
List
<
CattleBrandVO
>
queryCattleBrandList
();
List
<
CattleBrandVO
>
queryCattleBrandList
(
@Param
(
"brandType"
)
String
brandType
);
CattleBrandFroUserVO
queryCattleBrandByUserId
(
@Param
(
"userId"
)
Long
userId
);
CattleBrandFroUserVO
queryCattleBrandByUserId
(
@Param
(
"userId"
)
Long
userId
);
CattleBrandConfVO
queryCattleBrandConf
(
@Param
(
"signDate"
)
String
signDate
);
}
}
activity-admin/src/main/java/com/polysoft/activity/mapper/UserInfoMapper.java
View file @
5685541
...
@@ -22,4 +22,5 @@ public interface UserInfoMapper {
...
@@ -22,4 +22,5 @@ public interface UserInfoMapper {
int
saveUserSign
(
UserSignDto
dto
);
int
saveUserSign
(
UserSignDto
dto
);
int
updateUserSign
(
UserSignDto
dto
);
int
updateUserSign
(
UserSignDto
dto
);
List
<
FirstLoginRedVO
>
queryFirstLoginRed
();
List
<
FirstLoginRedVO
>
queryFirstLoginRed
();
int
updateFirstLoginRed
(
@Param
(
"id"
)
Long
id
);
}
}
activity-admin/src/main/java/com/polysoft/activity/model/vo/CattleBrandConfVO.java
0 → 100644
View file @
5685541
package
com
.
polysoft
.
activity
.
model
.
vo
;
import
lombok.Data
;
@Data
public
class
CattleBrandConfVO
{
private
Long
id
;
private
String
signDate
;
private
double
rate1
;
private
double
rate2
;
private
double
rate3
;
private
double
rate4
;
private
double
rate5
;
}
activity-admin/src/main/java/com/polysoft/activity/service/CattleBrandService.java
View file @
5685541
...
@@ -4,6 +4,6 @@ import com.polysoft.activity.utils.ApiResult;
...
@@ -4,6 +4,6 @@ import com.polysoft.activity.utils.ApiResult;
public
interface
CattleBrandService
{
public
interface
CattleBrandService
{
ApiResult
queryCattleBrandList
();
ApiResult
queryCattleBrandList
(
String
brandType
);
ApiResult
queryCattleBrandByUserId
(
Long
userId
);
ApiResult
queryCattleBrandByUserId
(
Long
userId
);
}
}
activity-admin/src/main/java/com/polysoft/activity/service/impl/CattleBrandServiceImpl.java
View file @
5685541
...
@@ -13,8 +13,8 @@ public class CattleBrandServiceImpl implements CattleBrandService {
...
@@ -13,8 +13,8 @@ public class CattleBrandServiceImpl implements CattleBrandService {
private
CattleBrandMapper
cattleBrandMapper
;
private
CattleBrandMapper
cattleBrandMapper
;
@Override
@Override
public
ApiResult
queryCattleBrandList
()
{
public
ApiResult
queryCattleBrandList
(
String
brandType
)
{
return
ApiResult
.
ok
(
cattleBrandMapper
.
queryCattleBrandList
());
return
ApiResult
.
ok
(
cattleBrandMapper
.
queryCattleBrandList
(
brandType
));
}
}
@Override
@Override
...
...
activity-admin/src/main/java/com/polysoft/activity/service/impl/UserInfoServiceImpl.java
View file @
5685541
...
@@ -13,29 +13,20 @@ import com.polysoft.activity.model.dto.UserSignDto;
...
@@ -13,29 +13,20 @@ import com.polysoft.activity.model.dto.UserSignDto;
import
com.polysoft.activity.model.dto.WechatTokenDto
;
import
com.polysoft.activity.model.dto.WechatTokenDto
;
import
com.polysoft.activity.model.param.ShareLinkParam
;
import
com.polysoft.activity.model.param.ShareLinkParam
;
import
com.polysoft.activity.model.param.UserInfoParam
;
import
com.polysoft.activity.model.param.UserInfoParam
;
import
com.polysoft.activity.model.vo.CattleBrandVO
;
import
com.polysoft.activity.model.vo.*
;
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.service.UserInfoService
;
import
com.polysoft.activity.utils.ApiResult
;
import
com.polysoft.activity.utils.ApiResult
;
import
com.polysoft.activity.utils.MathRandom
;
import
com.polysoft.activity.utils.SHA1
;
import
com.polysoft.activity.utils.SHA1
;
import
com.polysoft.activity.utils.SnowFlakeUtil
;
import
com.polysoft.activity.utils.SnowFlakeUtil
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.unit.DataUnit
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.client.RestTemplate
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.text.ParseException
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Random
;
import
java.util.UUID
;
import
java.util.UUID
;
...
@@ -105,13 +96,15 @@ public class UserInfoServiceImpl implements UserInfoService {
...
@@ -105,13 +96,15 @@ public class UserInfoServiceImpl implements UserInfoService {
@Override
@Override
public
ApiResult
saveUserSign
(
UserInfoParam
param
)
{
public
ApiResult
saveUserSign
(
UserInfoParam
param
)
{
UserSignDto
userSignDto
=
new
UserSignDto
();
UserSignDto
userSignDto
=
new
UserSignDto
();
// CattleBrandConfVO confVO = cattleBrandMapper.queryCattleBrandConf(DateUtil.format(new Date(),"yyyy-MM-dd"));
CattleBrandConfVO
confVO
=
cattleBrandMapper
.
queryCattleBrandConf
(
"2021-02-11"
);
if
(
param
.
getSignId
()
!=
null
){
if
(
param
.
getSignId
()
!=
null
){
userSignDto
.
setId
(
param
.
getSignId
());
userSignDto
.
setId
(
param
.
getSignId
());
userSignDto
.
setCreateTime
(
new
Date
());
userSignDto
.
setCreateTime
(
new
Date
());
userSignDto
.
setSignStatus
(
"2"
);
userSignDto
.
setSignStatus
(
"2"
);
mapper
.
updateUserSign
(
userSignDto
);
mapper
.
updateUserSign
(
userSignDto
);
}
else
{
}
else
{
List
<
CattleBrandVO
>
cattleList
=
cattleBrandMapper
.
queryCattleBrandList
(
);
MathRandom
a
=
new
MathRandom
(
confVO
.
getRate1
(),
confVO
.
getRate2
(),
confVO
.
getRate3
(),
confVO
.
getRate4
(),
confVO
.
getRate5
()
);
userSignDto
.
setId
(
SnowFlakeUtil
.
nextId
());
userSignDto
.
setId
(
SnowFlakeUtil
.
nextId
());
userSignDto
.
setUserId
(
param
.
getUserId
());
userSignDto
.
setUserId
(
param
.
getUserId
());
userSignDto
.
setSignStatus
(
"1"
);
userSignDto
.
setSignStatus
(
"1"
);
...
@@ -122,7 +115,7 @@ public class UserInfoServiceImpl implements UserInfoService {
...
@@ -122,7 +115,7 @@ public class UserInfoServiceImpl implements UserInfoService {
SaveUserCattleDto
dto
=
new
SaveUserCattleDto
();
SaveUserCattleDto
dto
=
new
SaveUserCattleDto
();
dto
.
setId
(
SnowFlakeUtil
.
nextId
());
dto
.
setId
(
SnowFlakeUtil
.
nextId
());
dto
.
setUserId
(
param
.
getUserId
());
dto
.
setUserId
(
param
.
getUserId
());
dto
.
setCattleBrandId
(
cattle
List
.
get
(
new
Random
().
nextInt
(
5
)
).
getCattleId
());
dto
.
setCattleBrandId
(
cattle
BrandMapper
.
queryCattleBrandList
((
a
.
PercentageRandom
()+
""
)).
get
(
0
).
getCattleId
());
mapper
.
saveCattleBrand
(
list
);
mapper
.
saveCattleBrand
(
list
);
}
}
return
ApiResult
.
ok
();
return
ApiResult
.
ok
();
...
@@ -135,7 +128,7 @@ public class UserInfoServiceImpl implements UserInfoService {
...
@@ -135,7 +128,7 @@ public class UserInfoServiceImpl implements UserInfoService {
List
<
FirstLoginRedVO
>
firstLoginRedVOList
=
mapper
.
queryFirstLoginRed
();
List
<
FirstLoginRedVO
>
firstLoginRedVOList
=
mapper
.
queryFirstLoginRed
();
if
(
firstLoginRedVOList
!=
null
&&
firstLoginRedVOList
.
size
()
>
0
){
if
(
firstLoginRedVOList
!=
null
&&
firstLoginRedVOList
.
size
()
>
0
){
//新增到红包雨表 作为红包基础数据
//新增到红包雨表 作为红包基础数据
FirstLoginRedVO
redVO
=
firstLoginRedVOList
.
get
(
new
Random
().
nextInt
(
firstLoginRedVOList
.
size
())
);
FirstLoginRedVO
redVO
=
firstLoginRedVOList
.
get
(
0
);
AddRedRainDto
dto
=
new
AddRedRainDto
();
AddRedRainDto
dto
=
new
AddRedRainDto
();
dto
.
setRedId
(
SnowFlakeUtil
.
nextId
());
dto
.
setRedId
(
SnowFlakeUtil
.
nextId
());
dto
.
setUserId
(
userId
);
dto
.
setUserId
(
userId
);
...
@@ -145,6 +138,7 @@ public class UserInfoServiceImpl implements UserInfoService {
...
@@ -145,6 +138,7 @@ public class UserInfoServiceImpl implements UserInfoService {
dto
.
setBatchNum
(
4
);
dto
.
setBatchNum
(
4
);
dto
.
setCreateTime
(
new
Date
());
dto
.
setCreateTime
(
new
Date
());
activityMapper
.
saveRedRainForOne
(
dto
);
activityMapper
.
saveRedRainForOne
(
dto
);
mapper
.
updateFirstLoginRed
(
redVO
.
getId
());
//更新聚宝盆余额
//更新聚宝盆余额
List
<
UserInfoDto
>
userInfoDtoList
=
new
ArrayList
<>();
List
<
UserInfoDto
>
userInfoDtoList
=
new
ArrayList
<>();
UserInfoDto
userInfoDto
=
new
UserInfoDto
();
UserInfoDto
userInfoDto
=
new
UserInfoDto
();
...
...
activity-admin/src/main/java/com/polysoft/activity/task/InitRedPackageTask.java
View file @
5685541
...
@@ -10,6 +10,7 @@ import com.polysoft.activity.model.vo.CattleBrandVO;
...
@@ -10,6 +10,7 @@ import com.polysoft.activity.model.vo.CattleBrandVO;
import
com.polysoft.activity.model.vo.RedAmountTotalVO
;
import
com.polysoft.activity.model.vo.RedAmountTotalVO
;
import
com.polysoft.activity.model.vo.RedRainVO
;
import
com.polysoft.activity.model.vo.RedRainVO
;
import
com.polysoft.activity.service.CattleBrandService
;
import
com.polysoft.activity.service.CattleBrandService
;
import
com.polysoft.activity.utils.RedPacketUtil
;
import
com.polysoft.activity.utils.SnowFlakeUtil
;
import
com.polysoft.activity.utils.SnowFlakeUtil
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
...
@@ -42,7 +43,7 @@ public class InitRedPackageTask {
...
@@ -42,7 +43,7 @@ public class InitRedPackageTask {
private
UserInfoMapper
userInfoMapper
;
private
UserInfoMapper
userInfoMapper
;
// @Scheduled(initialDelay = 10000, fixedRate = 1*15*60*1000)
// @Scheduled(initialDelay = 10000, fixedRate = 1*15*60*1000)
@Scheduled
(
cron
=
"20
42 23
* * ? "
)
@Scheduled
(
cron
=
"20
17 21
* * ? "
)
public
void
execute
()
{
public
void
execute
()
{
sendWechat
();
sendWechat
();
}
}
...
@@ -69,8 +70,8 @@ public class InitRedPackageTask {
...
@@ -69,8 +70,8 @@ public class InitRedPackageTask {
// }
// }
LoggerHelper
.
debug
(
this
.
getClass
(),
"任务开始"
);
LoggerHelper
.
debug
(
this
.
getClass
(),
"任务开始"
);
//查询出没有初始化的红包
//查询出没有初始化的红包
int
batchNum
=
1
;
final
int
batchNum
=
1
;
double
totalMoney
=
5000.00
;
final
double
totalMoney
=
5000.00
;
if
(
1
==
1
){
if
(
1
==
1
){
QueryRedRainDto
dto1
=
new
QueryRedRainDto
();
QueryRedRainDto
dto1
=
new
QueryRedRainDto
();
List
<
AddRedRainDto
>
batchList
=
new
ArrayList
<>();
List
<
AddRedRainDto
>
batchList
=
new
ArrayList
<>();
...
@@ -79,12 +80,13 @@ public class InitRedPackageTask {
...
@@ -79,12 +80,13 @@ public class InitRedPackageTask {
List
<
RedRainVO
>
list
=
activityMapper
.
queryRedRainList
(
dto1
);
List
<
RedRainVO
>
list
=
activityMapper
.
queryRedRainList
(
dto1
);
//前10%红包
//前10%红包
int
redNum
=
(
int
)(
list
.
size
()*
0.1
);
int
redNum
=
(
int
)(
list
.
size
()*
0.1
);
double
[]
redAmount
=
getMoney
(
5000.00
*
0.25
,
redNum
);
RedPacketUtil
redpack
=
new
RedPacketUtil
();
List
<
Double
>
redAmount
=
redpack
.
getMoney
(
totalMoney
*
0.25
,
redNum
,
0.01
,
100
,
2.1
);
HashSet
<
Integer
>
set
=
getLuckUser
(
redNum
,
list
.
size
());
HashSet
<
Integer
>
set
=
getLuckUser
(
redNum
,
list
.
size
());
int
i
=
0
;
int
i
=
0
;
for
(
Integer
s
:
set
)
{
for
(
Integer
s
:
set
)
{
AddRedRainDto
addRedRainDto
=
BeanTransferUtils
.
transfer
(
list
.
get
(
s
),
AddRedRainDto
.
class
);
AddRedRainDto
addRedRainDto
=
BeanTransferUtils
.
transfer
(
list
.
get
(
s
),
AddRedRainDto
.
class
);
addRedRainDto
.
setRedAmount
(
BigDecimal
.
valueOf
(
redAmount
[
i
]
));
addRedRainDto
.
setRedAmount
(
BigDecimal
.
valueOf
(
redAmount
.
get
(
i
)
));
addRedRainDto
.
setRedType
(
"1"
);
addRedRainDto
.
setRedType
(
"1"
);
addRedRainDto
.
setIsEnble
(
"1"
);
addRedRainDto
.
setIsEnble
(
"1"
);
batchList
.
add
(
addRedRainDto
);
batchList
.
add
(
addRedRainDto
);
...
@@ -107,12 +109,13 @@ public class InitRedPackageTask {
...
@@ -107,12 +109,13 @@ public class InitRedPackageTask {
//前20%红包
//前20%红包
int
redNum
=
(
int
)(
list
.
size
()*
0.2
);
int
redNum
=
(
int
)(
list
.
size
()*
0.2
);
double
[]
redAmount
=
getMoney
(
5000.00
*
0.25
,
redNum
);
RedPacketUtil
redpack
=
new
RedPacketUtil
();
List
<
Double
>
redAmount
=
redpack
.
getMoney
(
totalMoney
*
0.25
,
redNum
,
0.01
,
100
,
2.1
);
HashSet
<
Integer
>
set
=
getLuckUser
(
redNum
,
list2
.
size
());
HashSet
<
Integer
>
set
=
getLuckUser
(
redNum
,
list2
.
size
());
int
i
=
0
;
int
i
=
0
;
for
(
Integer
s
:
set
)
{
for
(
Integer
s
:
set
)
{
AddRedRainDto
addRedRainDto
=
BeanTransferUtils
.
transfer
(
list2
.
get
(
s
),
AddRedRainDto
.
class
);
AddRedRainDto
addRedRainDto
=
BeanTransferUtils
.
transfer
(
list2
.
get
(
s
),
AddRedRainDto
.
class
);
addRedRainDto
.
setRedAmount
(
BigDecimal
.
valueOf
(
redAmount
[
i
]
));
addRedRainDto
.
setRedAmount
(
BigDecimal
.
valueOf
(
redAmount
.
get
(
i
)
));
addRedRainDto
.
setRedType
(
"1"
);
addRedRainDto
.
setRedType
(
"1"
);
addRedRainDto
.
setIsEnble
(
"1"
);
addRedRainDto
.
setIsEnble
(
"1"
);
batchList2
.
add
(
addRedRainDto
);
batchList2
.
add
(
addRedRainDto
);
...
@@ -133,12 +136,13 @@ public class InitRedPackageTask {
...
@@ -133,12 +136,13 @@ public class InitRedPackageTask {
List
<
RedRainVO
>
list2
=
activityMapper
.
queryRedRainList
(
dto3_1
);
List
<
RedRainVO
>
list2
=
activityMapper
.
queryRedRainList
(
dto3_1
);
//前65%红包
//前65%红包
int
redNum
=
(
int
)(
list
.
size
()*
0.65
);
int
redNum
=
(
int
)(
list
.
size
()*
0.65
);
double
[]
redAmount
=
getMoney
(
5000.00
*
0.5
,
redNum
);
RedPacketUtil
redpack
=
new
RedPacketUtil
();
List
<
Double
>
redAmount
=
redpack
.
getMoney
(
totalMoney
*
0.5
,
redNum
,
0.01
,
100
,
2.1
);
HashSet
<
Integer
>
set
=
getLuckUser
(
redNum
,
list2
.
size
());
HashSet
<
Integer
>
set
=
getLuckUser
(
redNum
,
list2
.
size
());
int
i
=
0
;
int
i
=
0
;
for
(
Integer
s
:
set
)
{
for
(
Integer
s
:
set
)
{
AddRedRainDto
addRedRainDto
=
BeanTransferUtils
.
transfer
(
list2
.
get
(
s
),
AddRedRainDto
.
class
);
AddRedRainDto
addRedRainDto
=
BeanTransferUtils
.
transfer
(
list2
.
get
(
s
),
AddRedRainDto
.
class
);
addRedRainDto
.
setRedAmount
(
BigDecimal
.
valueOf
(
redAmount
[
i
]
));
addRedRainDto
.
setRedAmount
(
BigDecimal
.
valueOf
(
redAmount
.
get
(
i
)
));
addRedRainDto
.
setRedType
(
"1"
);
addRedRainDto
.
setRedType
(
"1"
);
addRedRainDto
.
setIsEnble
(
"1"
);
addRedRainDto
.
setIsEnble
(
"1"
);
batchList2
.
add
(
addRedRainDto
);
batchList2
.
add
(
addRedRainDto
);
...
@@ -160,7 +164,7 @@ public class InitRedPackageTask {
...
@@ -160,7 +164,7 @@ public class InitRedPackageTask {
//前5%红包牛牌
//前5%红包牛牌
int
redNum
=
list2
.
size
();
int
redNum
=
list2
.
size
();
HashSet
<
Integer
>
set
=
getLuckUser
(
redNum
,
list2
.
size
());
HashSet
<
Integer
>
set
=
getLuckUser
(
redNum
,
list2
.
size
());
List
<
CattleBrandVO
>
cattleList
=
(
List
<
CattleBrandVO
>)
cattleBrandService
.
queryCattleBrandList
().
get
(
"data"
);
List
<
CattleBrandVO
>
cattleList
=
(
List
<
CattleBrandVO
>)
cattleBrandService
.
queryCattleBrandList
(
null
).
get
(
"data"
);
int
i
=
0
;
int
i
=
0
;
for
(
Integer
s
:
set
)
{
for
(
Integer
s
:
set
)
{
AddRedRainDto
addRedRainDto
=
BeanTransferUtils
.
transfer
(
list2
.
get
(
s
),
AddRedRainDto
.
class
);
AddRedRainDto
addRedRainDto
=
BeanTransferUtils
.
transfer
(
list2
.
get
(
s
),
AddRedRainDto
.
class
);
...
@@ -216,40 +220,10 @@ public class InitRedPackageTask {
...
@@ -216,40 +220,10 @@ public class InitRedPackageTask {
}
}
return
has
;
return
has
;
}
}
private
double
[]
getMoney
(
double
money
,
int
num
){
Random
r
=
new
Random
();
DecimalFormat
format
=
new
DecimalFormat
(
".##"
);
double
middle
=
Double
.
parseDouble
(
format
.
format
(
money
/
num
));
double
[]
dou
=
new
double
[
num
];
double
redMoney
=
0
;
double
nextMoney
=
money
;
double
sum
=
0
;
int
index
=
0
;
for
(
int
i
=
num
;
i
>
0
;
i
--){
if
(
i
==
1
){
dou
[
index
]
=
nextMoney
;
}
else
{
while
(
true
){
String
str
=
format
.
format
(
r
.
nextDouble
()*
nextMoney
);
redMoney
=
Double
.
parseDouble
(
str
);
if
(
redMoney
>
0.01
&&
redMoney
<
middle
){
break
;
}
}
nextMoney
=
Double
.
parseDouble
(
format
.
format
(
nextMoney
-
redMoney
));
sum
=
sum
+
redMoney
;
dou
[
index
]
=
redMoney
;
middle
=
Double
.
parseDouble
(
format
.
format
(
nextMoney
/(
i
-
1
)));
index
++;
}
}
return
dou
;
}
public
static
void
main
(
String
[]
args
)
{
double
[]
ss
=
new
InitRedPackageTask
().
getMoney
(
1000
,
15
);
for
(
double
s
:
ss
)
{
System
.
out
.
println
(
s
);
}
public
static
void
main
(
String
[]
args
)
{
RedPacketUtil
redpack
=
new
RedPacketUtil
();
List
<
Double
>
redAmount
=
redpack
.
getMoney
(
4000
,
227
,
5
,
100
,
2.1
);
redAmount
.
forEach
(
item
->
System
.
out
.
println
(
item
));
}
}
}
}
activity-admin/src/main/resources/mapper/ActivityMapper.xml
View file @
5685541
...
@@ -132,7 +132,7 @@
...
@@ -132,7 +132,7 @@
parameterType=
"com.polysoft.activity.model.dto.CalculateAmoutDto"
>
parameterType=
"com.polysoft.activity.model.dto.CalculateAmoutDto"
>
SELECT
SELECT
t.user_id,
t.user_id,
max
( t.red_amount ) AS redAmountTatol
sum
( t.red_amount ) AS redAmountTatol
FROM
FROM
t_red_rain t where t.red_type=#{redType} and t.batch_num=#{batchNum}
t_red_rain t where t.red_type=#{redType} and t.batch_num=#{batchNum}
...
...
activity-admin/src/main/resources/mapper/CattleBrandMapper.xml
View file @
5685541
...
@@ -6,7 +6,11 @@
...
@@ -6,7 +6,11 @@
cattle_id,
cattle_id,
brand_type,
brand_type,
brand_name
brand_name
from t_cattle_brand
from t_cattle_brand where
1=1
<if
test=
"brandType != null and brandType != '' "
>
and brand_name#{brandType}
</if>
</select>
</select>
<select
id=
"queryCattleBrandByUserId"
resultType=
"com.polysoft.activity.model.vo.CattleBrandFroUserVO"
>
<select
id=
"queryCattleBrandByUserId"
resultType=
"com.polysoft.activity.model.vo.CattleBrandFroUserVO"
>
SELECT
SELECT
...
@@ -19,6 +23,19 @@
...
@@ -19,6 +23,19 @@
FROM
FROM
t_user_cattle t
t_user_cattle t
WHERE
WHERE
t.user_id =#{userId} GROUP BY t.user_id
t.user_id =#{userId}
</select>
<select
id=
"queryCattleBrandConf"
resultType=
"com.polysoft.activity.model.vo.CattleBrandConfVO"
>
SELECT
cattle_id,
sign_date,
rate1,
rate2,
rate3,
rate4,
rate5
FROM
t_cattle_brand_conf where sign_date=#{signDate}
</select>
</select>
</mapper>
</mapper>
activity-admin/src/main/resources/mapper/UserInfoMapper.xml
View file @
5685541
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
SELECT
SELECT
id,
id,
amount
amount
from t_first_login_red where is_flag = '0'
from t_first_login_red where is_flag = '0'
order by id asc limit 1
</select>
</select>
<update
id=
"updateWechatToken"
parameterType=
"com.polysoft.activity.model.dto.WechatTokenDto"
>
<update
id=
"updateWechatToken"
parameterType=
"com.polysoft.activity.model.dto.WechatTokenDto"
>
update wechat_token set access_token=#{accessToken},update_time=#{updateTime} where id =1
update wechat_token set access_token=#{accessToken},update_time=#{updateTime} where id =1
...
@@ -39,6 +39,9 @@
...
@@ -39,6 +39,9 @@
</foreach>
</foreach>
</where>
</where>
</update>
</update>
<update
id=
"updateFirstLoginRed"
>
update t_first_login_red set is_flag = 1 where id =#{id}
</update>
<insert
id=
"saveCattleBrand"
parameterType=
"com.polysoft.activity.model.dto.SaveUserCattleDto"
>
<insert
id=
"saveCattleBrand"
parameterType=
"com.polysoft.activity.model.dto.SaveUserCattleDto"
>
INSERT into t_user_cattle (
INSERT into t_user_cattle (
id,
id,
...
...
activity-
admi
n/src/main/java/com/polysoft/activity/utils/MathRandom.java
→
activity-
commo
n/src/main/java/com/polysoft/activity/utils/MathRandom.java
View file @
5685541
...
@@ -41,38 +41,38 @@ public class MathRandom {
...
@@ -41,38 +41,38 @@ public class MathRandom {
* @return int
* @return int
*
*
*/
*/
p
rivate
int
PercentageRandom
()
p
ublic
int
PercentageRandom
()
{
{
double
randomNumber
;
double
randomNumber
;
randomNumber
=
Math
.
random
();
randomNumber
=
Math
.
random
();
if
(
randomNumber
>=
0
&&
randomNumber
<=
rate0
)
if
(
randomNumber
>=
0
&&
randomNumber
<=
rate0
)
{
{
return
0
;
return
1
;
}
}
else
if
(
randomNumber
>=
rate0
/
100
&&
randomNumber
<=
rate0
+
rate1
)
else
if
(
randomNumber
>=
rate0
/
100
&&
randomNumber
<=
rate0
+
rate1
)
{
{
return
1
;
return
2
;
}
}
else
if
(
randomNumber
>=
rate0
+
rate1
else
if
(
randomNumber
>=
rate0
+
rate1
&&
randomNumber
<=
rate0
+
rate1
+
rate2
)
&&
randomNumber
<=
rate0
+
rate1
+
rate2
)
{
{
return
2
;
return
3
;
}
}
else
if
(
randomNumber
>=
rate0
+
rate1
+
rate2
else
if
(
randomNumber
>=
rate0
+
rate1
+
rate2
&&
randomNumber
<=
rate0
+
rate1
+
rate2
+
rate3
)
&&
randomNumber
<=
rate0
+
rate1
+
rate2
+
rate3
)
{
{
return
3
;
return
4
;
}
}
else
if
(
randomNumber
>=
rate0
+
rate1
+
rate2
+
rate3
else
if
(
randomNumber
>=
rate0
+
rate1
+
rate2
+
rate3
&&
randomNumber
<=
rate0
+
rate1
+
rate2
+
rate3
+
rate4
)
&&
randomNumber
<=
rate0
+
rate1
+
rate2
+
rate3
+
rate4
)
{
{
return
4
;
return
5
;
}
}
else
if
(
randomNumber
>=
rate0
+
rate1
+
rate2
+
rate3
+
rate4
else
if
(
randomNumber
>=
rate0
+
rate1
+
rate2
+
rate3
+
rate4
&&
randomNumber
<=
rate0
+
rate1
+
rate2
+
rate3
+
rate4
&&
randomNumber
<=
rate0
+
rate1
+
rate2
+
rate3
+
rate4
)
)
{
{
return
5
;
return
6
;
}
}
return
-
1
;
return
-
1
;
}
}
...
@@ -84,10 +84,10 @@ public class MathRandom {
...
@@ -84,10 +84,10 @@ public class MathRandom {
public
static
void
main
(
String
[]
agrs
)
public
static
void
main
(
String
[]
agrs
)
{
{
int
i
=
0
;
int
i
=
0
;
MathRandom
a
=
new
MathRandom
(
0.
50
,
0.30
,
0.15
,
0.04
,
0.01
);
MathRandom
a
=
new
MathRandom
(
0.
01
,
0.3
,
0.15
,
0.04
,
0.5
);
for
(
i
=
0
;
i
<
1
;
i
++)
//打印100个测试概率的准确性
for
(
i
=
0
;
i
<
1
00
;
i
++)
//打印100个测试概率的准确性
{
{
System
.
out
.
println
(
a
.
PercentageRandom
()
+
1
);
System
.
out
.
println
(
a
.
PercentageRandom
());
}
}
}
}
...
...
activity-
admin/src/main/java/com/polysoft/activity/constant
/RedPacketUtil.java
→
activity-
common/src/main/java/com/polysoft/activity/utils
/RedPacketUtil.java
View file @
5685541
package
com
.
polysoft
.
activity
.
constant
;
package
com
.
polysoft
.
activity
.
utils
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
...
@@ -11,15 +11,15 @@ import java.util.List;
...
@@ -11,15 +11,15 @@ import java.util.List;
*/
*/
public
class
RedPacketUtil
{
public
class
RedPacketUtil
{
//1.设置金额的上下限 最少0.01,最多200
//1.设置金额的上下限 最少0.01,最多200
private
double
MINMONEY
;
//
private double MINMONEY ;
private
double
MAXMONEY
;
//
private double MAXMONEY ;
private
double
TIMES
;
//
private double TIMES ;
/**
/**
* 4.实现红包分配,为了避免一个红包占用大量的金额,设定非最后一个红包的 最大金额,可以设置平均值的N陪,
* 4.实现红包分配,为了避免一个红包占用大量的金额,设定非最后一个红包的 最大金额,可以设置平均值的N陪,
*
*
* */
* */
public
List
<
Double
>
splitRedPackets
(
double
money
,
int
count
)
{
public
List
<
Double
>
splitRedPackets
(
double
money
,
int
count
,
double
MINMONEY
,
double
MAXMONEY
,
double
TIMES
)
{
if
(!
isRight
(
money
,
count
))
{
if
(!
isRight
(
money
,
count
,
MINMONEY
,
MAXMONEY
))
{
return
null
;
return
null
;
}
}
List
<
Double
>
list
=
new
ArrayList
<
Double
>();
List
<
Double
>
list
=
new
ArrayList
<
Double
>();
...
@@ -27,7 +27,7 @@ public class RedPacketUtil {
...
@@ -27,7 +27,7 @@ public class RedPacketUtil {
max
=
max
>
MAXMONEY
?
MAXMONEY
:
max
;
max
=
max
>
MAXMONEY
?
MAXMONEY
:
max
;
for
(
int
i
=
0
;
i
<
count
;
i
++)
{
for
(
int
i
=
0
;
i
<
count
;
i
++)
{
double
one
=
randomRedPacket
(
money
,
MINMONEY
,
max
,
count
-
i
);
double
one
=
randomRedPacket
(
money
,
MINMONEY
,
max
,
count
-
i
,
MINMONEY
,
MAXMONEY
);
list
.
add
(
one
);
list
.
add
(
one
);
money
-=
one
;
money
-=
one
;
}
}
...
@@ -37,7 +37,7 @@ public class RedPacketUtil {
...
@@ -37,7 +37,7 @@ public class RedPacketUtil {
* 3.随机产生红包
* 3.随机产生红包
*
*
* */
* */
private
double
randomRedPacket
(
double
money
,
double
mins
,
double
maxs
,
int
count
)
{
private
double
randomRedPacket
(
double
money
,
double
mins
,
double
maxs
,
int
count
,
double
MINMONEY
,
double
MAXMONEY
)
{
if
(
count
==
1
)
{
if
(
count
==
1
)
{
return
(
double
)
(
Math
.
round
(
money
*
100
))
/
100
;
return
(
double
)
(
Math
.
round
(
money
*
100
))
/
100
;
}
}
...
@@ -48,28 +48,23 @@ public class RedPacketUtil {
...
@@ -48,28 +48,23 @@ public class RedPacketUtil {
double
one
=
((
double
)
Math
.
random
()
*
(
max
-
mins
)
+
mins
);
double
one
=
((
double
)
Math
.
random
()
*
(
max
-
mins
)
+
mins
);
one
=
(
double
)
(
Math
.
round
(
one
*
100
))
/
100
;
one
=
(
double
)
(
Math
.
round
(
one
*
100
))
/
100
;
double
moneyOther
=
money
-
one
;
double
moneyOther
=
money
-
one
;
if
(
isRight
(
moneyOther
,
count
-
1
))
{
if
(
isRight
(
moneyOther
,
count
-
1
,
MINMONEY
,
MAXMONEY
))
{
return
one
;
return
one
;
}
else
{
}
else
{
double
avg
=
moneyOther
/
(
count
-
1
);
double
avg
=
moneyOther
/
(
count
-
1
);
if
(
avg
<
MINMONEY
)
{
if
(
avg
<
MINMONEY
)
{
return
randomRedPacket
(
money
,
mins
,
one
,
count
);
return
randomRedPacket
(
money
,
mins
,
one
,
count
,
MINMONEY
,
MAXMONEY
);
}
else
if
(
avg
>
MAXMONEY
)
{
}
else
if
(
avg
>
MAXMONEY
)
{
return
randomRedPacket
(
money
,
one
,
maxs
,
count
);
return
randomRedPacket
(
money
,
one
,
maxs
,
count
,
MINMONEY
,
MAXMONEY
);
}
}
}
}
return
one
;
return
one
;
}
}
public
RedPacketUtil
(
double
MINMONEY
,
double
MAXMONEY
,
double
TIMES
)
{
this
.
MINMONEY
=
MINMONEY
;
this
.
MAXMONEY
=
MAXMONEY
;
this
.
TIMES
=
TIMES
;
}
//2.判断金额是否合法 如果超过了最大值与最小值,错误
//2.判断金额是否合法 如果超过了最大值与最小值,错误
private
boolean
isRight
(
double
money
,
int
count
)
{
private
boolean
isRight
(
double
money
,
int
count
,
double
MINMONEY
,
double
MAXMONEY
)
{
double
avg
=
money
/
count
;
double
avg
=
money
/
count
;
if
(
avg
<
MINMONEY
)
{
if
(
avg
<
MINMONEY
)
{
return
false
;
return
false
;
...
@@ -79,10 +74,8 @@ public class RedPacketUtil {
...
@@ -79,10 +74,8 @@ public class RedPacketUtil {
return
true
;
return
true
;
}
}
public
static
void
main
(
String
[]
args
)
{
public
List
<
Double
>
getMoney
(
double
money
,
int
count
,
double
MINMONEY
,
double
MAXMONEY
,
double
TIMES
)
{
RedPacketUtil
util
=
new
RedPacketUtil
(
5
,
100
,
2
);
return
splitRedPackets
(
money
,
count
,
MINMONEY
,
MAXMONEY
,
TIMES
);
List
<
Double
>
doubles
=
util
.
splitRedPackets
(
1250
,
100
);
doubles
.
forEach
(
item
->
System
.
out
.
println
(
item
));
}
}
}
}
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