From bfbb03c514b9e60485ea13d5679e6af2e8aeb354 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 23 Nov 2022 09:44:23 +0800
Subject: [PATCH] 20221117

---
 src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java |  123 ++++++++++++++++++----------------------
 1 files changed, 56 insertions(+), 67 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java b/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java
index 1e681d1..b84d495 100644
--- a/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java
+++ b/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java
@@ -6,6 +6,7 @@
 import cc.mrbird.febs.dapp.mapper.*;
 import cc.mrbird.febs.dapp.service.ApiIgtOnHookPlanService;
 import cc.mrbird.febs.dapp.service.DappWalletService;
+import cc.mrbird.febs.rabbit.producer.UsdtUpdateProducer;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
@@ -23,6 +24,7 @@
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.text.Format;
@@ -62,6 +64,9 @@
 
     @Autowired
     private ApiIgtOnHookPlanService apiIgtOnHookPlanService;
+
+    @Autowired
+    private DappOnHookDoneDao dappOnHookDoneDao;
 
     /**
      * 五分钟更新一次数据
@@ -274,68 +279,36 @@
     }
 
 
+    @Resource
+    private UsdtUpdateProducer usdtUpdateProducer;
+
+    /**
+     * 挂机结束时间一到,所有挂机停止开始计算收益
+     * 根据设置的会员等级对应的(收益率*挂机本金)/(挂机时长*60分钟)=每分钟的收益
+     * 计算每个挂机的挂机时长*每分钟的收益
+     */
+    @Scheduled(cron = "0 0/1 * * * ? ")
+    public void endOnHookPlan(){
+        Log.info("挂机结束时间到了");
+        DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.END_TIME.getType(), DataDictionaryEnum.END_TIME.getCode());
+        DateTime date = DateUtil.date();
+        DateTime endTime = DateUtil.parseTimeToday(endTimeDic.getValue());
+        if(DateUtil.compare(date,endTime)>=0){
+            igtOnHookPlanOrderDao.updatePlanOrder();
+        }
+    }
+
 //    @Scheduled(cron = "0/5 * * * * ? ")
     @Scheduled(cron = "0 0/1 * * * ? ")
     public void updatePlanOrder(){
         Log.info("开始更新挂机主表状态");
         List<IgtOnHookPlanOrder> igtOnHookPlanOrders = igtOnHookPlanOrderDao.selectByState(3);
         if(CollUtil.isNotEmpty(igtOnHookPlanOrders)){
-            List<Long> ids = igtOnHookPlanOrderDao.selectIdsByState(3);
-            //更新状态避免重复查询
-            igtOnHookPlanOrderDao.updateByIds(ids);
             for(IgtOnHookPlanOrder igtOnHookPlanOrder : igtOnHookPlanOrders){
-                Long memberId = igtOnHookPlanOrder.getMemberId();
-                BigDecimal planAmount = igtOnHookPlanOrder.getPlanAmount();
-
-                DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
-                //是否设置了亏损
-                Integer isProfit = dappMemberEntity.getIsProfit() == null ? 1 : dappMemberEntity.getIsProfit();
-                if(2 == isProfit){
-                    BigDecimal bigDecimal = planAmount.divide(new BigDecimal(2)).setScale(4, BigDecimal.ROUND_DOWN);
-                    DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
-                    BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
-                    dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),planAmount.negate());
-                    BigDecimal add = availableAmount.add(bigDecimal).setScale(4, BigDecimal.ROUND_DOWN);
-                    DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, availableAmount, bigDecimal, add, "系统", 9);
-                    dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity);
-                }else{
-                    //获取收益率
-                    DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity());
-                    String identityDicValue = identityDic.getValue();
-                    JSONObject identityDicValueParse = JSONUtil.parseObj(identityDicValue);
-                    BigDecimal hangingRevenueLevel = new BigDecimal(identityDicValueParse.get("hangingRevenue").toString())
-                            .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN);
-                    //获取收益
-                    BigDecimal totalProfit = planAmount.multiply(hangingRevenueLevel).setScale(4,BigDecimal.ROUND_DOWN);
-
-                    String refererIds = dappMemberEntity.getRefererIds();
-                    List<String> refererIdList = StrUtil.split(refererIds, ",", -1, true, true);
-                    //生成流水佣金和盈利分成和流水记录,返回剩余盈利
-                    BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit);
-                    //平台分成,返回剩余盈利
-                    BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,totalProfit);
-                    totalProfit = totalProfit.subtract(profitSharingTotal).subtract(systemTotal);
-
-                    igtOnHookPlanOrder.setState(2);
-                    //一次挂机剩余的全部金额
-                    BigDecimal totalMoney = totalProfit.add(planAmount);
-
-                    igtOnHookPlanOrder.setProfit(totalProfit);
-                    igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
-                    dappMemberEntity.setIsOnHook(3);
-                    dappMemberDao.updateById(dappMemberEntity);
-
-                    DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
-                    BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
-                    dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),totalMoney);
-
-                    BigDecimal add = availableAmount.add(totalMoney);
-                    BigDecimal subtract = add.subtract(totalProfit);
-                    DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, subtract, totalProfit, add, "投注盈利", 5);
-                    dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity);
-                }
+                usdtUpdateProducer.sendOnHookEnd(igtOnHookPlanOrder.getId());
             }
         }
+
     }
 
 
@@ -448,19 +421,20 @@
         Log.info("更新用户代理等级");
         DateTime date = DateUtil.date();
         //查询账户总金额大于51的有效用户
-        List<DappMemberEntity> dappMemberEntities = dappWalletCoinDao.selectTotalAmount();
+        List<DappMemberEntity> dappMemberEntities = dappWalletCoinDao.selectByIdentity();
+//        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());
+            List<DappMemberEntity> LEVEL_FIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_IB.getCode(), DataDictionaryEnum.LEVEL_FIB.getCode());
+            List<DappMemberEntity> LEVEL_CIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_FIB.getCode(), DataDictionaryEnum.LEVEL_CIB.getCode());
+            List<DappMemberEntity> LEVEL_AIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_CIB.getCode(), DataDictionaryEnum.LEVEL_AIB.getCode());
+            List<DappMemberEntity> LEVEL_GIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_AIB.getCode(), DataDictionaryEnum.LEVEL_GIB.getCode());
+            List<DappMemberEntity> LEVEL_BP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_GIB.getCode(), DataDictionaryEnum.LEVEL_BP.getCode());
+            List<DappMemberEntity> LEVEL_SP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_BP.getCode(), DataDictionaryEnum.LEVEL_SP.getCode());
+            List<DappMemberEntity> LEVEL_GP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_SP.getCode(), DataDictionaryEnum.LEVEL_GP.getCode());
         }
     }
 
@@ -468,17 +442,32 @@
         List<DappMemberEntity> dappMemberEntitiesNext = new ArrayList<>();
         if(CollUtil.isNotEmpty(dappMemberEntities)){
             for(DappMemberEntity dappMemberEntity : dappMemberEntities){
+                if(ObjectUtil.isEmpty(dappMemberEntity)){
+                    continue;
+                }
                 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()){
+                //是否存在三条以上的推广线路,存在才能升级,不满足则
+                List<DappMemberEntity> levelMbMembers = dappMemberDao.selectTotalMemberByRefererIdAndIdentity(inviteId);
+                if(3 > levelMbMembers.size()){
+//                    dappMemberEntity.setIdentity(DataDictionaryEnum.LEVEL_MB.getCode());
+//                    dappMemberDao.updateById(dappMemberEntity);
+                    dappMemberDao.updateIdentityByMemberId(DataDictionaryEnum.LEVEL_MB.getCode(),memberEntityId);
+                    continue;
+                }
+                int identityDown = 0;
+                for(DappMemberEntity dappMemberDown : levelMbMembers){
+                    //下级是否存在账户总金额大于51的会员,并且代理等级为identity
+                    List<DappMemberEntity> levelMbMembersDown = dappMemberDao.selectTotalAmountByRefererIdAndIdentity(dappMemberDown.getInviteId(),identity);
+                    if(CollUtil.isNotEmpty(levelMbMembersDown)){
+                        identityDown = identityDown + 1;
+                    }
+
+                }
+                if(identityDown >= 3){
                     //设置identityNext级别
                     dappMemberDao.updateIdentityByMemberId(identityNext,memberEntityId);
-                    //获取他的上级会员信息
-                    DappMemberEntity dappMemberEntityNext = dappMemberDao.selectMemberInfoByInviteId(refererId);
-                    dappMemberEntitiesNext.add(dappMemberEntityNext);
                 }
             }
         }

--
Gitblit v1.9.1