下级签到给上级励
达标奖励 可以无限获得
This commit is contained in:
@@ -183,6 +183,11 @@ public class UserEntity implements Serializable {
|
||||
*/
|
||||
private Long inviterUserId;
|
||||
|
||||
/**
|
||||
* 邀请下级打卡奖励金额
|
||||
*/
|
||||
private BigDecimal inviteAmount;
|
||||
|
||||
/**
|
||||
* 是否是新用户 1否
|
||||
*/
|
||||
|
||||
@@ -106,6 +106,12 @@ public class UserMoneyDetails implements Serializable {
|
||||
@ApiModelProperty("金额类型: 1 红包,2金币")
|
||||
private Integer moneyType;
|
||||
|
||||
/**
|
||||
* 循环邀请奖励次数
|
||||
*/
|
||||
@ApiModelProperty("循环邀请奖励次数")
|
||||
private Integer awardCount;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.sqx.modules.job.task;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.thread.ThreadUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -204,8 +205,6 @@ public class TempOrdersTask {
|
||||
logger.info("活动领取开始: 用户: {}, 邀请用户: {}", user.getUserName(), sourceUser.getUserName());
|
||||
InviteAchievement inviteAchievement = inviteAchievementService.getByUserId(user.getUserId());
|
||||
|
||||
BigDecimal incomeMoney = new BigDecimal(0);
|
||||
BigDecimal incomeCoin = new BigDecimal(0);
|
||||
// 首次达标
|
||||
int signCount = Integer.parseInt(commonRepository.findOne(913).getValue());
|
||||
logger.info("{}签到次数: {}", user.getUserName(), inviteAchievement.getCount());
|
||||
@@ -231,9 +230,8 @@ public class TempOrdersTask {
|
||||
inviteAchievementService.update(inviteAchievement, new LambdaQueryWrapper<InviteAchievement>()
|
||||
.eq(InviteAchievement::getUserId, inviteAchievement.getUserId())
|
||||
.eq(InviteAchievement::getId, inviteAchievement.getId()));
|
||||
incomeMoney = incomeMoney.add(new BigDecimal(amount));
|
||||
|
||||
//代理
|
||||
// 代理
|
||||
if (StringUtils.isNotBlank(user.getQdCode()) && !"666666".equals(user.getQdCode())) {
|
||||
SysUserEntity sysUser = sysUserService.selectSysUserByQdCode(user.getQdCode());
|
||||
if (sysUser != null) {
|
||||
@@ -256,37 +254,131 @@ public class TempOrdersTask {
|
||||
}
|
||||
}
|
||||
|
||||
// int count = inviteAchievementService.count(
|
||||
// new LambdaQueryWrapper<InviteAchievement>()
|
||||
// .eq(InviteAchievement::getUserId, sourceUser.getUserId())
|
||||
// .eq(InviteAchievement::getState, 1));
|
||||
Set<Long> byUserIdList = inviteAchievementService.list(new LambdaQueryWrapper<InviteAchievement>().eq(InviteAchievement::getUserId, sourceUser.getUserId())
|
||||
.eq(InviteAchievement::getState, 1).select(InviteAchievement::getTargetUserId)).stream().map(InviteAchievement::getTargetUserId).collect(Collectors.toSet());
|
||||
int count;
|
||||
if (!byUserIdList.isEmpty()) {
|
||||
List<UserInfo> list = userInfoService.list(new LambdaQueryWrapper<UserInfo>().in(UserInfo::getUserId, byUserIdList).isNotNull(UserInfo::getAccountNo).select(UserInfo::getCertNo));
|
||||
logger.info("邀请用户实名信息: {}", list.stream().map(UserInfo::getCertNo).collect(Collectors.toSet()));
|
||||
UserInfo userInfo = userInfoService.getOne(new LambdaQueryWrapper<UserInfo>().eq(UserInfo::getUserId, sourceUser.getUserId()).select(UserInfo::getCertNo));
|
||||
Set<String> collect = userInfoService.list(new LambdaQueryWrapper<UserInfo>().in(UserInfo::getUserId, byUserIdList).isNotNull(UserInfo::getAccountNo).select(UserInfo::getCertNo))
|
||||
.stream().map(UserInfo::getCertNo).collect(Collectors.toSet());
|
||||
// 去除与本人身份信息相同的用户
|
||||
if (!collect.isEmpty() && userInfo != null && StrUtil.isNotBlank(userInfo.getCertNo())) {
|
||||
collect.remove(userInfo.getCertNo());
|
||||
}
|
||||
count = collect.size();
|
||||
} else {
|
||||
calcUserInviteAmount(user, sourceUser, signCount);
|
||||
|
||||
calcInviteStandardAward(sourceUser);
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算用户邀请奖励金额
|
||||
* @param user 用户
|
||||
*/
|
||||
private void calcUserInviteAmount(UserEntity user, UserEntity sourceUser, Integer signCount) {
|
||||
// 检查用户是否实名认证
|
||||
UserInfo userInfo = userInfoService.getOne(new LambdaQueryWrapper<UserInfo>().eq(UserInfo::getUserId, sourceUser.getUserId()));
|
||||
if (userInfo == null || StrUtil.isBlank(userInfo.getCertNo())) {
|
||||
return;
|
||||
}
|
||||
logger.info("邀请达标人员: {}", count);
|
||||
//count 邀请的已达标人数
|
||||
for (CompletAward completAward : completAwardService.list(new QueryWrapper<CompletAward>().eq("invite_count", count).eq("status", 1))) {
|
||||
|
||||
DateTime beginOfDay = DateUtil.beginOfDay(new Date());
|
||||
// 查询用户支付完成订单数
|
||||
int orderCount = ordersDao.selectCount(new LambdaQueryWrapper<Orders>()
|
||||
.eq(Orders::getUserId, user.getUserId())
|
||||
.eq(Orders::getStatus, 1)
|
||||
.eq(Orders::getPayWay, 9)
|
||||
.ge(Orders::getCreateTime, beginOfDay));
|
||||
if (orderCount < signCount) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查用户当天是否已经给过奖励
|
||||
LambdaQueryWrapper<UserMoneyDetails> moneyDetailsQuery = new LambdaQueryWrapper<>();
|
||||
moneyDetailsQuery.eq(UserMoneyDetails::getClassify, 6);
|
||||
moneyDetailsQuery.eq(UserMoneyDetails::getUserId, sourceUser.getUserId());
|
||||
moneyDetailsQuery.eq(UserMoneyDetails::getByUserId, user.getUserId());
|
||||
moneyDetailsQuery.eq(UserMoneyDetails::getCreateTime, beginOfDay);
|
||||
int count = userMoneyDetailsService.count(moneyDetailsQuery);
|
||||
if (count > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 给用户邀请当日达标奖励
|
||||
if (sourceUser.getInviteAmount() == null || sourceUser.getInviteAmount().compareTo(BigDecimal.ZERO) <= 0) {
|
||||
sourceUser.setInviteAmount(new BigDecimal("0.1"));
|
||||
userService.updateById(sourceUser);
|
||||
}
|
||||
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
|
||||
userMoneyDetails.setClassify(6);
|
||||
userMoneyDetails.setMoney(sourceUser.getInviteAmount());
|
||||
userMoneyDetails.setUserId(sourceUser.getUserId());
|
||||
userMoneyDetails.setByUserId(user.getUserId());
|
||||
userMoneyDetails.setCreateTime(DateUtil.now());
|
||||
userMoneyDetails.setContent("下级签到奖励" + sourceUser.getInviteAmount() + "元");
|
||||
userMoneyDetails.setTitle("签到奖励");
|
||||
userMoneyDetails.setState(2);
|
||||
userMoneyDetails.setType(1);
|
||||
userMoneyDetails.setMoneyType(1);
|
||||
userMoneyDetailsService.save(userMoneyDetails);
|
||||
//上级 存入余额 钱
|
||||
userMoneyService.updateAmount(1, sourceUser.getUserId(), sourceUser.getInviteAmount().doubleValue());
|
||||
logger.info("用户: {} 邀请用户: {} 下级签到奖励: {}", sourceUser.getUserId(), user.getUserId(), sourceUser.getInviteAmount());
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算分享达标奖励
|
||||
*
|
||||
*/
|
||||
private void calcInviteStandardAward(UserEntity sourceUser) {
|
||||
Set<Long> byUserIdList = inviteAchievementService.list(new LambdaQueryWrapper<InviteAchievement>().eq(InviteAchievement::getUserId, sourceUser.getUserId())
|
||||
.eq(InviteAchievement::getState, 1).select(InviteAchievement::getTargetUserId)).stream().map(InviteAchievement::getTargetUserId).collect(Collectors.toSet());
|
||||
int inviteCount;
|
||||
if (byUserIdList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
List<UserInfo> list = userInfoService.list(new LambdaQueryWrapper<UserInfo>().in(UserInfo::getUserId, byUserIdList).isNotNull(UserInfo::getAccountNo).select(UserInfo::getCertNo));
|
||||
logger.info("邀请用户实名信息: {}", list.stream().map(UserInfo::getCertNo).collect(Collectors.toSet()));
|
||||
UserInfo userInfo = userInfoService.getOne(new LambdaQueryWrapper<UserInfo>().eq(UserInfo::getUserId, sourceUser.getUserId()).select(UserInfo::getCertNo));
|
||||
Set<String> collect = userInfoService.list(new LambdaQueryWrapper<UserInfo>().in(UserInfo::getUserId, byUserIdList).isNotNull(UserInfo::getAccountNo).select(UserInfo::getCertNo))
|
||||
.stream().map(UserInfo::getCertNo).collect(Collectors.toSet());
|
||||
// 去除与本人身份信息相同的用户
|
||||
if (!collect.isEmpty() && userInfo != null && StrUtil.isNotBlank(userInfo.getCertNo())) {
|
||||
collect.remove(userInfo.getCertNo());
|
||||
}
|
||||
inviteCount = collect.size();
|
||||
logger.info("邀请达标人员: {}", inviteCount);
|
||||
|
||||
// 查询所有已开启的奖励
|
||||
List<CompletAward> completAwardList = completAwardService.list(new QueryWrapper<CompletAward>().eq("status", 1));
|
||||
if (completAwardList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 遍历奖励,寻找最低达标人数
|
||||
int minInviteCount = completAwardList.get(0).getInviteCount();
|
||||
for (CompletAward completAward : completAwardList) {
|
||||
if (completAward.getInviteCount() < minInviteCount) {
|
||||
minInviteCount = completAward.getInviteCount();
|
||||
}
|
||||
}
|
||||
|
||||
// 如果邀请人数小于最低达标人数,则不发放奖励
|
||||
if (inviteCount < minInviteCount) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 查询是否开启分享循环奖励
|
||||
int isLoop = Integer.parseInt(commonRepository.findOne(932).getValue());
|
||||
|
||||
// 遍历奖励,发放奖励
|
||||
for (CompletAward completAward : completAwardList) {
|
||||
QueryWrapper<UserMoneyDetails> moneyDetailsQuery = new QueryWrapper<>();
|
||||
moneyDetailsQuery.eq("classify", 6);
|
||||
moneyDetailsQuery.eq("user_id", sourceUser.getUserId());
|
||||
moneyDetailsQuery.eq("source_id", completAward.getId());
|
||||
//达标人数
|
||||
// 奖励次数
|
||||
int awardCount = userMoneyDetailsService.count(moneyDetailsQuery);
|
||||
if (awardCount < 1) {
|
||||
|
||||
// 如果未开启循环奖励,并且已经发放过奖励,则跳过
|
||||
if (isLoop != 1 && awardCount > 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 计算获取奖励次数
|
||||
int awardNum = inviteCount / completAward.getInviteCount();
|
||||
if (isLoop != 1) {
|
||||
awardNum = 1;
|
||||
}
|
||||
for (int i = 0; i < awardNum - awardCount; i++) {
|
||||
switch (completAward.getType()) {
|
||||
case 1:
|
||||
UserMoneyDetails userMoneyDetails1 = new UserMoneyDetails(
|
||||
@@ -295,7 +387,6 @@ public class TempOrdersTask {
|
||||
|
||||
userMoneyService.updateMoney(1, sourceUser.getUserId(), completAward.getAwardNumber().doubleValue());
|
||||
userMoneyDetailsService.save(userMoneyDetails1);
|
||||
incomeCoin = completAward.getAwardNumber();
|
||||
break;
|
||||
case 2:
|
||||
UserMoneyDetails userMoneyDetails2 = new UserMoneyDetails(
|
||||
@@ -304,23 +395,9 @@ public class TempOrdersTask {
|
||||
|
||||
userMoneyService.updateAmount(1, sourceUser.getUserId(), completAward.getAwardNumber().doubleValue());
|
||||
userMoneyDetailsService.save(userMoneyDetails2);
|
||||
incomeMoney = incomeMoney.add(completAward.getAwardNumber());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (incomeMoney.compareTo(BigDecimal.ZERO) > 0 || incomeCoin.compareTo(BigDecimal.ZERO) > 0) {
|
||||
UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(sourceUser.getUserId());
|
||||
userMoney.setInviteIncomeCoin(userMoney.getInviteIncomeCoin() == null ? incomeCoin : userMoney.getInviteIncomeCoin().add(incomeCoin));
|
||||
userMoney.setInviteIncomeMoney(userMoney.getInviteIncomeMoney() == null ? incomeMoney : userMoney.getInviteIncomeMoney().add(incomeMoney));
|
||||
userMoneyService.update(null, new LambdaUpdateWrapper<UserMoney>()
|
||||
.eq(UserMoney::getUserId, userMoney.getUserId())
|
||||
.eq(UserMoney::getId, userMoney.getId())
|
||||
.set(UserMoney::getInviteIncomeCoin, userMoney.getInviteIncomeCoin())
|
||||
.set(UserMoney::getInviteIncomeMoney, userMoney.getInviteIncomeMoney()));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user