From d3f2b1d3f3ad2717a7669769aa965127f170ff99 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 24 Oct 2022 18:15:49 +0800
Subject: [PATCH] 20221021
---
src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java | 132 +++++++++++++++++++++++++++++++++++--------
1 files changed, 106 insertions(+), 26 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java b/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java
index 5d64ce8..a5aa65a 100644
--- a/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java
+++ b/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java
@@ -2,15 +2,20 @@
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.entity.*;
+import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
import cc.mrbird.febs.dapp.mapper.*;
+import cc.mrbird.febs.dapp.service.DappWalletService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.jline.utils.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -19,7 +24,8 @@
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.Format;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
@Slf4j
@Component
@@ -46,6 +52,12 @@
@Autowired
private RedisUtils redisUtils;
+ @Autowired
+ private DataDictionaryCustomMapper dataDictionaryCustomMapper;
+
+ @Autowired
+ private DappWalletService dappWalletService;
+
/**
* 五分钟更新一次数据
* 让挂机字表的状态为1:已生效
@@ -69,15 +81,13 @@
if(ObjectUtil.isNotEmpty(igtOnHookPlanOrderItem)){
igtOnHookPlanOrderItem.setState(1);
igtOnHookPlanOrderItemDao.updateById(igtOnHookPlanOrderItem);
- if(BigDecimal.ZERO.compareTo(igtOnHookPlanOrderItem.getProfit()) < 0){
- //增加挂机主表的挂机总收益和增加挂机剩余金额
- Integer updateCount = igtOnHookPlanOrderDao.addAvaAmountAddProfitById(igtOnHookPlanOrder.getId()
- ,igtOnHookPlanOrderItem.getProfit()
- ,igtOnHookPlanOrderItem.getAmount());
+ if(2 == igtOnHookPlanOrderItem.getIsGoal()){
+ //如果中奖,增加挂机主表的挂机总收益
+ Integer updateCount = igtOnHookPlanOrderDao.AddProfitById(igtOnHookPlanOrder.getId()
+ ,igtOnHookPlanOrderItem.getProfit());
}else{
- //增加挂机主表的挂机总收益和减少挂机剩余金额
+ //如果不中奖,减少挂机剩余金额即减少本金
Integer updateCount = igtOnHookPlanOrderDao.updateAvaAmountById(igtOnHookPlanOrder.getId()
- ,igtOnHookPlanOrderItem.getProfit()
,igtOnHookPlanOrderItem.getAmount());
}
}
@@ -116,7 +126,16 @@
IgtOnHookPlanOrderItem igtOnHookPlanOrderItem = igtOnHookPlanOrderItemDao.selectByOrderIdAndMemberIdAndState(orderId,memberId,2);
if(ObjectUtil.isEmpty(igtOnHookPlanOrderItem)){
BigDecimal totalProfit = igtOnHookPlanOrderItemDao.selectTotalProfitByByOrderIdAndMemberIdAndState(orderId,memberId,1,2);
- BigDecimal totalAmount = igtOnHookPlanOrderItemDao.selectTotalAmountByByOrderIdAndMemberIdAndState(orderId,memberId,1,2);
+
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ String refererIds = dappMemberEntity.getRefererIds();
+ List<String> refererIdList = StrUtil.split(refererIds, ",", -1, true, true);
+ //生成流水佣金和盈利分成和流水记录,返回剩余盈利
+ totalProfit = dappWalletService.updateLSYJYLFC(refererIdList,totalProfit);
+ //平台分成,返回剩余盈利
+ totalProfit = dappWalletService.updatePTFC(memberId,totalProfit);
+
+ BigDecimal totalAmount = igtOnHookPlanOrderItemDao.selectTotalAmountByByOrderIdAndMemberIdAndState(orderId,memberId,1,1);
igtOnHookPlanOrder.setState(2);
//一次挂机剩余的全部金额
BigDecimal totalMoney = totalAmount.add(totalProfit).add(avaAmount);
@@ -126,25 +145,26 @@
igtOnHookPlanOrder.setProfitState(1);
}
igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
-
- DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
dappMemberEntity.setIsOnHook(3);
dappMemberDao.updateById(dappMemberEntity);
DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
- //如果中奖,返回本金加收益加剩余投注金额
- BigDecimal total = totalProfit.add(totalAmount).add(igtOnHookPlanOrder.getAvaAmount()).setScale(2, BigDecimal.ROUND_DOWN);
- dappWalletCoinDao.addTotalAndaddAvailableById(memberId,total);
+
+ //如果中奖,返回收益,如果没中奖,则返回本金,最后加上剩余总挂机金额
+ BigDecimal total = totalProfit.add(totalAmount).add(igtOnHookPlanOrder.getAvaAmount()).setScale(4, BigDecimal.ROUND_DOWN);
+ dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),total);
BigDecimal add = availableAmount.add(total);
-
- DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, availableAmount, total, add, "投注盈利", 5);
+ BigDecimal subtract = add.subtract(totalAmount);
+ DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, subtract, totalProfit, add, "投注盈利", 5);
dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity);
}
}
}
+
+
@Scheduled(cron = "0 0/1 * * * ? ")
public void updateMemberIsOnHook(){
@@ -167,7 +187,9 @@
DateTime aWardTimeStart = DateUtil.parseDateTime(aWardTime + " 00:00:00");
// DateTime dateTime = DateUtil.offsetMinute(aWardTimeStart, 5);
- String yyyyMMdd = DateUtil.format(date, "yyyyMMdd");
+
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+ String yyyyMMdd = sdf.format(date);
QueryWrapper<DappOnHookAward> dappOnHookAwardQueryWrapper = new QueryWrapper();
dappOnHookAwardQueryWrapper.like("record_num",yyyyMMdd);
Integer selectCount = dappOnHookAwardDao.selectCount(dappOnHookAwardQueryWrapper);
@@ -177,7 +199,7 @@
Format formatCount = new DecimalFormat("000");
//一般都是将累加的数字当做一些单号的一部分,format要求string
int dayMillise = (24 * 60) / 5;
- for(int i= 0;i < dayMillise;i++){
+ for(int i= 1;i <= dayMillise;i++){
DappOnHookAward dappOnHookAward = new DappOnHookAward();
int randomInt = RandomUtil.randomInt(10000, 99999);
dappOnHookAward.setAwardNum(Integer.toString(randomInt));
@@ -194,7 +216,9 @@
public void updateAwardInfo(){
Log.info("更新挂架开奖记录");
DateTime date = DateUtil.date();
- String yyyyMMddHHMM = DateUtil.format(date, "yyyy-MM-dd hh:mm");
+
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ String yyyyMMddHHMM = sdf.format(date);
DappOnHookAward dappOnHookAward = dappOnHookAwardDao.selectByByAwardTime(yyyyMMddHHMM);
dappOnHookAward.setState(1);
dappOnHookAwardDao.updateById(dappOnHookAward);
@@ -207,15 +231,71 @@
}
- public static void main(String[] args) {
+ /**
+ * 更新用户等级的条件
+ * 一天跑一次,跑完之后进行分佣,和盈利分成
+ * 1、三个有效的用户等级用户
+ * 2、账户余额大于51
+ */
+ @Scheduled(cron = "0 0 1 * * ? ")
+ public void updateMemberLevel(){
+ Log.info("更新用户代理等级");
DateTime date = DateUtil.date();
- String aWardTime = DateUtil.format(date, "yyyy-MM-dd");
- DateTime aWardTimeStart = DateUtil.parseDateTime(aWardTime + " 00:00:00");
- int dayMillise = (24 * 60) / 5;
- for(int i= 0;i < dayMillise;i++){
- System.out.println(aWardTimeStart);
- aWardTimeStart = DateUtil.offsetMinute(aWardTimeStart, 5);
+ //查询账户总金额大于51的有效用户
+ List<DappMemberEntity> dappMemberEntities = dappWalletCoinDao.selectTotalAmount();
+ if(CollUtil.isEmpty(dappMemberEntities)){
+ //没有账户金额大于51,则全部为会员
+ dappMemberDao.updateIdentity();
+ }else{
+ List<DappMemberEntity> LEVEL_IB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_MB.getCode(), DataDictionaryEnum.LEVEL_IB.getCode());
+ List<DappMemberEntity> LEVEL_FIB = getMemberLevelList(LEVEL_IB, DataDictionaryEnum.LEVEL_IB.getCode(), DataDictionaryEnum.LEVEL_FIB.getCode());
+ List<DappMemberEntity> LEVEL_CIB = getMemberLevelList(LEVEL_FIB, DataDictionaryEnum.LEVEL_FIB.getCode(), DataDictionaryEnum.LEVEL_CIB.getCode());
+ List<DappMemberEntity> LEVEL_AIB = getMemberLevelList(LEVEL_CIB, DataDictionaryEnum.LEVEL_CIB.getCode(), DataDictionaryEnum.LEVEL_AIB.getCode());
+ List<DappMemberEntity> LEVEL_GIB = getMemberLevelList(LEVEL_AIB, DataDictionaryEnum.LEVEL_AIB.getCode(), DataDictionaryEnum.LEVEL_GIB.getCode());
+ List<DappMemberEntity> LEVEL_BP = getMemberLevelList(LEVEL_GIB, DataDictionaryEnum.LEVEL_GIB.getCode(), DataDictionaryEnum.LEVEL_BP.getCode());
+ List<DappMemberEntity> LEVEL_SP = getMemberLevelList(LEVEL_BP, DataDictionaryEnum.LEVEL_BP.getCode(), DataDictionaryEnum.LEVEL_SP.getCode());
+ List<DappMemberEntity> LEVEL_GP = getMemberLevelList(LEVEL_SP, DataDictionaryEnum.LEVEL_SP.getCode(), DataDictionaryEnum.LEVEL_GP.getCode());
}
}
+ private List<DappMemberEntity> getMemberLevelList(List<DappMemberEntity> dappMemberEntities,String identity,String identityNext){
+ List<DappMemberEntity> dappMemberEntitiesNext = new ArrayList<>();
+ if(CollUtil.isNotEmpty(dappMemberEntities)){
+ for(DappMemberEntity dappMemberEntity : dappMemberEntities){
+ Long memberEntityId = dappMemberEntity.getId();
+ String refererId = dappMemberEntity.getRefererId();
+ String inviteId = dappMemberEntity.getInviteId();
+ //下级是否存在三个账户总金额大于51的会员,并且代理等级为identity
+ List<DappMemberEntity> levelMbMembers = dappMemberDao.selectTotalAmountByRefererIdAndIdentity(inviteId,identity);
+ if(CollUtil.isNotEmpty(levelMbMembers) && 3 <= levelMbMembers.size()){
+ //设置identityNext级别
+ dappMemberDao.updateIdentityByMemberId(identityNext,memberEntityId);
+ //获取他的上级会员信息
+ DappMemberEntity dappMemberEntityNext = dappMemberDao.selectMemberInfoByInviteId(refererId);
+ dappMemberEntitiesNext.add(dappMemberEntityNext);
+ }
+ }
+ }
+ return dappMemberEntitiesNext;
+ }
+
+
+
+ public static void main(String[] args) {
+
+ DateTime date = DateUtil.date();
+
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ String yyyyMMddHHMM = sdf.format(date);
+
+ System.out.println(yyyyMMddHHMM);
+
+ DateTime date1 = DateUtil.date();
+
+ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ String yyyyMMddHHMM1 = sdf1.format(date1);
+
+ System.out.println(yyyyMMddHHMM1);
+ }
+
}
--
Gitblit v1.9.1