From e92b00089d8d57899df380135d79864dade09837 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 09 Feb 2023 16:18:59 +0800
Subject: [PATCH] 修改波场JAR 手续费修改成15trx

---
 src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java |  148 +++++++++++++++++++++++++++++-------------------
 1 files changed, 89 insertions(+), 59 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java b/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java
index 4c1ade5..065731f 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;
 
     /**
      * 五分钟更新一次数据
@@ -226,7 +231,7 @@
 //                        igtOnHookPlanOrder.setState(3);
 //                        igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
 //                    }else{
-//                        //获取收益率
+                        //获取收益率
 //                        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(igtOnHookPlanOrder.getMemberId());
 //                        DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity());
 //                        String identityDicValue = identityDic.getValue();
@@ -274,57 +279,37 @@
     }
 
 
+    @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());
+
+        //系统开关
+        DataDictionaryCustom onOff = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.ON_OFF.getType(), DataDictionaryEnum.ON_OFF.getCode());
+        String onOffStr = onOff.getValue() == null ? "OFF":onOff.getValue();
+        if(DateUtil.compare(date,endTime)>=0 || "ON".equals(onOffStr)){
+            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)){
             for(IgtOnHookPlanOrder igtOnHookPlanOrder : igtOnHookPlanOrders){
-                Long orderId = igtOnHookPlanOrder.getId();
-                Long memberId = igtOnHookPlanOrder.getMemberId();
-                BigDecimal planAmount = igtOnHookPlanOrder.getPlanAmount();
-                BigDecimal avaAmount = igtOnHookPlanOrder.getAvaAmount();
-                //总盈利
-//            BigDecimal totalProfit = igtOnHookPlanOrderItemDao.selectTotalProfitByByOrderIdAndMemberIdAndState(orderId,memberId,1,2);
-                BigDecimal totalProfit = igtOnHookPlanOrder.getProfit();
-
-                DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
-                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);
-
-
-                //获取用户信息的是否盈利字段
-                DappMemberEntity dappMember = dappMemberDao.selectById(memberId);
-                Integer isProfit = dappMember.getIsProfit() == null ? 1 : dappMember.getIsProfit();
-
-                igtOnHookPlanOrder.setState(2);
-                //一次挂机剩余的全部金额
-                BigDecimal totalMoney = totalProfit.add(avaAmount);
-                if(totalMoney.compareTo(planAmount)<=0){
-                    igtOnHookPlanOrder.setProfitState(2);
-                }else{
-                    igtOnHookPlanOrder.setProfitState(1);
-                }
-                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());
             }
         }
 
@@ -440,37 +425,82 @@
         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());
+
+            //会员升级-只要下级存在某个等级,在这条线都直接升级为该等级
+            updateMemberLevelUp(DataDictionaryEnum.LEVEL_IB.getCode(),LEVEL_IB);
+            updateMemberLevelUp(DataDictionaryEnum.LEVEL_FIB.getCode(),LEVEL_FIB);
+            updateMemberLevelUp(DataDictionaryEnum.LEVEL_CIB.getCode(),LEVEL_CIB);
+            updateMemberLevelUp(DataDictionaryEnum.LEVEL_AIB.getCode(),LEVEL_AIB);
+            updateMemberLevelUp(DataDictionaryEnum.LEVEL_GIB.getCode(),LEVEL_GIB);
+            updateMemberLevelUp(DataDictionaryEnum.LEVEL_BP.getCode(),LEVEL_BP);
+            updateMemberLevelUp(DataDictionaryEnum.LEVEL_SP.getCode(),LEVEL_SP);
+            updateMemberLevelUp(DataDictionaryEnum.LEVEL_GP.getCode(),LEVEL_GP);
         }
+    }
+
+    private void updateMemberLevelUp(String code,List<DappMemberEntity> dappMemberEntities){
+        if(CollUtil.isNotEmpty(dappMemberEntities)){
+            for(DappMemberEntity dappMemberEntity : dappMemberEntities){
+                String refererIds = dappMemberEntity.getRefererIds();
+                if(StrUtil.isNotEmpty(refererIds)){
+                    List<String> strings = StrUtil.splitTrim(refererIds, ",");
+                    for(String inviteId : strings){
+                        DappMemberEntity memberEntity = dappMemberDao.selectMemberInfoByInviteId(inviteId);
+                        if(ObjectUtil.isNotEmpty(memberEntity)){
+                            memberEntity.setIdentity(code);
+                            dappMemberDao.updateById(memberEntity);
+                        }
+                    }
+                }
+            }
+        }
+
     }
 
     private List<DappMemberEntity> getMemberLevelList(List<DappMemberEntity> dappMemberEntities,String identity,String identityNext){
         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