From ee64a79830f6bad4107301c31f1fed3d8ab190c4 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 01 Mar 2022 10:46:03 +0800
Subject: [PATCH] 20222223

---
 src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java |  217 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 188 insertions(+), 29 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java
index b6f8df9..06520d9 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java
@@ -9,24 +9,22 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xcong.excoin.common.LoginUserUtils;
+import com.xcong.excoin.common.enumerates.CoinTypeEnum;
 import com.xcong.excoin.common.enumerates.MemberWalletCoinEnum;
 import com.xcong.excoin.common.response.Result;
-import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao;
-import com.xcong.excoin.modules.coin.dao.ZhiYaDao;
-import com.xcong.excoin.modules.coin.dao.ZhiYaRecordDao;
-import com.xcong.excoin.modules.coin.dao.ZhiyaRewardDao;
-import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange;
-import com.xcong.excoin.modules.coin.entity.ZhiYaEntity;
-import com.xcong.excoin.modules.coin.entity.ZhiYaRecordEntity;
-import com.xcong.excoin.modules.coin.entity.ZhiyaRewardEntity;
+import com.xcong.excoin.modules.coin.dao.*;
+import com.xcong.excoin.modules.coin.entity.*;
 import com.xcong.excoin.modules.coin.parameter.dto.RecordsPageDto;
 import com.xcong.excoin.modules.coin.parameter.dto.ZhiyaRewardRecordsPageDto;
+import com.xcong.excoin.modules.coin.parameter.dto.ZhiyaRewardRecordsTypePageDto;
 import com.xcong.excoin.modules.coin.parameter.vo.MemberGusdInfoVo;
 import com.xcong.excoin.modules.coin.parameter.vo.UsdtToGusdVo;
 import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo;
 import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaRewardVo;
 import com.xcong.excoin.modules.coin.service.ZhiyaService;
+import com.xcong.excoin.modules.member.dao.MemberDao;
 import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao;
+import com.xcong.excoin.modules.member.entity.MemberEntity;
 import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
 import com.xcong.excoin.utils.MessageSourceUtils;
 import com.xcong.excoin.utils.RedisUtils;
@@ -36,10 +34,7 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
+import java.util.*;
 
 @Service
 public class ZhiyaServiceImpl extends ServiceImpl<ZhiYaDao, ZhiYaEntity> implements ZhiyaService {
@@ -54,6 +49,10 @@
     ZhiyaRewardDao zhiyaRewardDao;
     @Resource
     ZhiYaDao zhiYaDao;
+    @Resource
+    ZhiyaTeamDao zhiyaTeamDao;
+    @Resource
+    MemberDao memberdao;
     @Resource
     RedisUtils redisUtils;
     @Override
@@ -219,8 +218,47 @@
     //            zhiYaRecordDao.updateById(zhiYaRecord);
     //        }
             //更新团队算力表
-            //只计算直属团队的算力信息
-
+            MemberEntity memberEntity = memberdao.selectById(memberId);
+            String refererIds = memberEntity.getRefererIds();
+            if(StrUtil.isNotEmpty(refererIds)){
+                BigDecimal gricetoagent = new BigDecimal(redisUtils.getString("GRICETOAGENT"));
+                String[] split = refererIds.split(",");
+                List<String> strings = Arrays.asList(split);
+                if(CollUtil.isNotEmpty(Arrays.asList(split))){
+                    for(String str : strings){
+                        if(StrUtil.isNotEmpty(str)){
+                            BigDecimal isAgent = BigDecimal.ZERO;
+                            MemberEntity memberShangJi = memberdao.selectMemberInfoByInviteId(str);
+                            ZhiYaTeam zhiyaTeamByMemberId = zhiYaRecordDao.selectZhiyaTeamRecordByMemberId(memberShangJi.getId());
+                            if(ObjectUtil.isNotEmpty(zhiyaTeamByMemberId)){
+                                //更新数据
+                                zhiyaTeamByMemberId.setZhiyaCnt(zhiyaTeamByMemberId.getZhiyaCnt().add(balance));
+                                if(isAgent.compareTo(gricetoagent) >= 0){
+                                    zhiyaTeamByMemberId.setIsAgent(1);
+                                }
+                                zhiyaTeamDao.updateById(zhiyaTeamByMemberId);
+                            }else{
+                                //新增数据
+                                ZhiYaTeam zhiYaTeam = new ZhiYaTeam();
+                                zhiYaTeam.setRefererId(memberShangJi.getRefererId());
+                                zhiYaTeam.setRefererIds(memberShangJi.getRefererIds());
+                                zhiYaTeam.setMemberId(memberShangJi.getId());
+                                if(ObjectUtil.isNotEmpty(zhiyaTeamByMemberId)){
+                                    zhiYaTeam.setZhiyaCnt(zhiyaTeamByMemberId.getZhiyaCnt().add(balance));
+                                    isAgent = zhiyaTeamByMemberId.getZhiyaCnt().add(balance);
+                                }else{
+                                    zhiYaTeam.setZhiyaCnt(balance);
+                                    isAgent = balance;
+                                }
+                                if(isAgent.compareTo(gricetoagent) >= 0){
+                                    zhiYaTeam.setIsAgent(1);
+                                }
+                                zhiyaTeamDao.insert(zhiYaTeam);
+                            }
+                        }
+                    }
+                }
+            }
 
             return Result.ok(MessageSourceUtils.getString("member_service_0024"));
         }
@@ -268,6 +306,49 @@
             zhiya.setFrozenBalance(gusdfrozenBalance.subtract(balance));
             zhiya.setAvailableBalance(gusdAvailableBalance.add(balance));
             zhiYaDao.updateById(zhiya);
+            //更新团队算力表
+            MemberEntity memberEntity = memberdao.selectById(memberId);
+            String refererIds = memberEntity.getRefererIds();
+            if(StrUtil.isNotEmpty(refererIds)){
+                BigDecimal gricetoagent = new BigDecimal(redisUtils.getString("GRICETOAGENT"));
+                String[] split = refererIds.split(",");
+                List<String> strings = Arrays.asList(split);
+                if(CollUtil.isNotEmpty(Arrays.asList(split))){
+                    for(String str : strings){
+                        if(StrUtil.isNotEmpty(str)){
+                            BigDecimal isAgent = BigDecimal.ZERO;
+                            MemberEntity memberShangJi = memberdao.selectMemberInfoByInviteId(str);
+                            ZhiYaTeam zhiyaTeamByMemberId = zhiYaRecordDao.selectZhiyaTeamRecordByMemberId(memberShangJi.getId());
+                            if(ObjectUtil.isNotEmpty(zhiyaTeamByMemberId)){
+                                //更新数据
+                                zhiyaTeamByMemberId.setZhiyaCnt(zhiyaTeamByMemberId.getZhiyaCnt().subtract(balance));
+                                isAgent = zhiyaTeamByMemberId.getZhiyaCnt().subtract(balance);
+                                if(isAgent.compareTo(gricetoagent) >= 0){
+                                    zhiyaTeamByMemberId.setIsAgent(1);
+                                }
+                                zhiyaTeamDao.updateById(zhiyaTeamByMemberId);
+                            }else{
+                                //新增数据
+                                ZhiYaTeam zhiYaTeam = new ZhiYaTeam();
+                                zhiYaTeam.setRefererId(memberShangJi.getRefererId());
+                                zhiYaTeam.setRefererIds(memberShangJi.getRefererIds());
+                                zhiYaTeam.setMemberId(memberShangJi.getId());
+                                if(ObjectUtil.isNotEmpty(zhiyaTeamByMemberId)){
+                                    zhiYaTeam.setZhiyaCnt(zhiyaTeamByMemberId.getZhiyaCnt().subtract(balance));
+                                    isAgent = zhiyaTeamByMemberId.getZhiyaCnt().subtract(balance);
+                                }else{
+                                    zhiYaTeam.setZhiyaCnt(balance);
+                                    isAgent = balance;
+                                }
+                                if(isAgent.compareTo(gricetoagent) >= 0){
+                                    zhiYaTeam.setIsAgent(1);
+                                }
+                                zhiyaTeamDao.insert(zhiYaTeam);
+                            }
+                        }
+                    }
+                }
+            }
             return Result.ok(MessageSourceUtils.getString("member_service_0024"));
         }
 
@@ -311,14 +392,10 @@
         @Override
         @Transactional
         public void grantZhiyaAmount() {
-            //获取每日总产出
+            //获取GUSD质押比例
             BigDecimal gusdReward = new BigDecimal(redisUtils.getString("GUSDREWARD"));
-            //静态算力 = 每日总产出的80%
             BigDecimal fixedGusdReward = gusdReward.multiply(new BigDecimal(0.8));
-            //获取每日全网总算力
-            Long totalGusd = zhiYaRecordDao.selectTotalGusdByStatueAndTime(1,new Date());
-            BigDecimal totalGusdBigDecimal = new BigDecimal(totalGusd);
-            if(totalGusdBigDecimal.compareTo(BigDecimal.ZERO) > 0){
+            if(fixedGusdReward.compareTo(BigDecimal.ZERO) > 0){
                 //获取今天之前满足发放奖励的全部质押单
                 //生效时间小于当前时间
                 //状态为生效中
@@ -326,14 +403,83 @@
                 if(CollUtil.isNotEmpty(lists)){
                     for(ZhiYaRecordEntity zhiYaRecordEntity : lists){
                         ZhiyaRewardEntity zhiyaRewardEntity = new ZhiyaRewardEntity();
-                        zhiyaRewardEntity.setRecordId(zhiYaRecordEntity.getId());
-                        zhiyaRewardEntity.setRecordNo(zhiYaRecordEntity.getOrderNo());
-                        zhiyaRewardEntity.setMemberId(zhiYaRecordEntity.getMemberId());
-                        //(个人算力/每日全网总算力)*静态算力
-                        BigDecimal divide1 = zhiYaRecordEntity.getZhiyaCnt().divide(totalGusdBigDecimal, 2, BigDecimal.ROUND_HALF_UP);
-                        BigDecimal multiply = divide1.multiply(fixedGusdReward);
-                        zhiyaRewardEntity.setRewardAmout(multiply);
-                        zhiyaRewardDao.insert(zhiyaRewardEntity);
+                        //查询今天有没有发送过了
+                        String orderNo = zhiYaRecordEntity.getOrderNo();
+                        Long memberId = zhiYaRecordEntity.getMemberId();
+                        Date date = new Date();
+                        List<ZhiyaRewardEntity> zhiyaRewardEntityDone = zhiYaRecordDao.selectZhiyaTeamRecordByMemberIdAndOrderNo(orderNo,memberId,date);
+                        if(ObjectUtil.isEmpty(zhiyaRewardEntityDone)){
+                            zhiyaRewardEntity.setRecordId(zhiYaRecordEntity.getId());
+                            zhiyaRewardEntity.setRecordNo(zhiYaRecordEntity.getOrderNo());
+                            zhiyaRewardEntity.setMemberId(zhiYaRecordEntity.getMemberId());
+                            zhiyaRewardEntity.setType(1);
+                            MemberEntity member = memberdao.selectById(zhiYaRecordEntity.getMemberId());
+                            //获取当前人的上两级
+                            BigDecimal multiplyReward = BigDecimal.ZERO;
+                            MemberEntity memberEntity = memberdao.selectMemberInfoByInviteId(member.getRefererId());
+                            if(ObjectUtil.isNotEmpty(memberEntity)){
+                                //以及1代理的比例
+                                BigDecimal agetShangji = new BigDecimal(redisUtils.getString("GUSDREWARDAGENTONE"));
+                                BigDecimal multiply = zhiYaRecordEntity.getZhiyaCnt().multiply(gusdReward).multiply(agetShangji);
+                                multiplyReward = (zhiYaRecordEntity.getZhiyaCnt().multiply(gusdReward).subtract(multiply));
+                                ZhiyaRewardEntity zhiyaRewardEntitySJ = new ZhiyaRewardEntity();
+                                zhiyaRewardEntitySJ.setRecordId(zhiYaRecordEntity.getId());
+                                zhiyaRewardEntitySJ.setRecordNo(zhiYaRecordEntity.getOrderNo());
+                                zhiyaRewardEntitySJ.setMemberId(memberEntity.getId());
+                                zhiyaRewardEntitySJ.setType(2);
+                                zhiyaRewardEntitySJ.setRewardAmout(multiply);
+                                zhiyaRewardDao.insert(zhiyaRewardEntitySJ);
+
+                                MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberEntity.getId(), CoinTypeEnum.GRICE.toString());
+                                memberWalletCoinEntity.setAvailableBalance(memberWalletCoinEntity.getAvailableBalance().add(multiply));
+                                memberWalletCoinEntity.setTotalBalance(memberWalletCoinEntity.getAvailableBalance().add(multiply));
+                                memberWalletCoinDao.updateById(memberWalletCoinEntity);
+
+                                MemberEntity memberEntitySSJ = memberdao.selectMemberInfoByInviteId(memberEntity.getRefererId());
+                                if(ObjectUtil.isNotEmpty(memberEntitySSJ)){
+                                    BigDecimal agetSSJ = new BigDecimal(redisUtils.getString("GUSDREWARDAGENTTWO"));
+                                    BigDecimal multiplySSJ = zhiYaRecordEntity.getZhiyaCnt().multiply(gusdReward).multiply(agetSSJ);
+                                    multiplyReward = (zhiYaRecordEntity.getZhiyaCnt().multiply(gusdReward).subtract(multiply).subtract(multiplySSJ));
+
+                                    MemberWalletCoinEntity memberWalletCoinEntitySSJ = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberEntity.getId(), CoinTypeEnum.GRICE.toString());
+                                    memberWalletCoinEntitySSJ.setAvailableBalance(memberWalletCoinEntitySSJ.getAvailableBalance().add(multiply));
+                                    memberWalletCoinEntitySSJ.setTotalBalance(memberWalletCoinEntitySSJ.getAvailableBalance().add(multiply));
+                                    memberWalletCoinDao.updateById(memberWalletCoinEntitySSJ);
+
+                                    ZhiyaRewardEntity zhiyaRewardEntitySSJ = new ZhiyaRewardEntity();
+                                    zhiyaRewardEntitySSJ.setRecordId(zhiYaRecordEntity.getId());
+                                    zhiyaRewardEntitySSJ.setRecordNo(zhiYaRecordEntity.getOrderNo());
+                                    zhiyaRewardEntitySSJ.setMemberId(memberEntitySSJ.getId());
+                                    zhiyaRewardEntitySSJ.setType(2);
+                                    zhiyaRewardEntitySSJ.setRewardAmout(multiplySSJ);
+                                    zhiyaRewardDao.insert(zhiyaRewardEntitySSJ);
+                                }
+                            }else{
+                                multiplyReward = (zhiYaRecordEntity.getZhiyaCnt().multiply(gusdReward));
+                            }
+                            zhiyaRewardEntity.setRewardAmout(multiplyReward);
+                            zhiyaRewardDao.insert(zhiyaRewardEntity);
+
+                            String refererIds = member.getRefererIds();
+                            if(StrUtil.isNotEmpty(refererIds)){
+                                String[] split = refererIds.split(",");
+                                List<String> strings = Arrays.asList(split);
+                                if(CollUtil.isNotEmpty(strings)){
+                                    for(String str : strings){
+                                        if(StrUtil.isNotEmpty(str)){
+                                            MemberEntity memberShangJi = memberdao.selectMemberInfoByInviteId(str);
+                                            ZhiYaTeam zhiyaTeamByMemberId = zhiYaRecordDao.selectZhiyaTeamRecordByMemberId(memberShangJi.getId());
+                                            if(ObjectUtil.isNotEmpty(zhiyaTeamByMemberId)){
+                                                //更新数据
+                                                zhiyaTeamByMemberId.setRewardCnt(
+                                                        (zhiyaTeamByMemberId.getRewardCnt() == null ? BigDecimal.ZERO:zhiyaTeamByMemberId.getRewardCnt()).add(multiplyReward));
+                                                zhiyaTeamDao.updateById(zhiyaTeamByMemberId);
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
                     }
                 }
             }
@@ -353,7 +499,20 @@
             return Result.ok(lists);
         }
 
-        public String generateSimpleSerialno(String userId) {
+    @Override
+    public Result getZhiyaRewardTypeTo(ZhiyaRewardRecordsTypePageDto recordsPageDto) {
+
+        //获取用户ID
+        Long memberId = LoginUserUtils.getAppLoginUser().getId();
+
+        Page<ZhiyaRewardVo> page = new Page<>(recordsPageDto.getPageNum(), recordsPageDto.getPageSize());
+        ZhiyaRewardEntity zhiyaRewardEntity = new ZhiyaRewardEntity();
+        zhiyaRewardEntity.setMemberId(memberId);
+        IPage<ZhiyaRewardVo> lists = zhiYaRecordDao.selectZhiyaRewardTypeToByMemberIdInPage(page, zhiyaRewardEntity);
+        return Result.ok(lists);
+    }
+
+    public String generateSimpleSerialno(String userId) {
             StringBuilder sb = new StringBuilder();
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             SimpleDateFormat sd = new SimpleDateFormat("yyyyMMdd");

--
Gitblit v1.9.1