From 6b7a98a866dc46bfddb5663b9a3a15ea2972996e Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 24 Jun 2024 10:28:39 +0800 Subject: [PATCH] 后台矩阵列表 --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 120 ++++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 85 insertions(+), 35 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java index 59ab027..6a484ee 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java @@ -10,6 +10,7 @@ import cc.mrbird.febs.dapp.mapper.*; import cc.mrbird.febs.dapp.service.DappSystemService; import cc.mrbird.febs.dapp.service.DappWalletService; +import cc.mrbird.febs.rabbit.producer.ChainProducer; import cc.mrbird.febs.tree.MatrixTree; import cc.mrbird.febs.tree.MemberNode; import cc.mrbird.febs.tree.TreeConstants; @@ -50,6 +51,7 @@ private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final DbMemberNodeMapper dbMemberNodeMapper; + private final ChainProducer chainProducer; @Override @@ -217,6 +219,15 @@ dbMemberNode.setWorkState(1); dbMemberNodeMapper.insert(dbMemberNode); + /** + * 判断你的上级是否满足复投条件 + */ + DappMemberEntity dappMemberEntityDirect = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId()); + if(ObjectUtil.isNotEmpty(dappMemberEntityDirect)){ + Long id = dappMemberEntityDirect.getId(); + chainProducer.sendNodeMsgLong(id); + } + //如果添加的为右节点,那么进入判断 if(DbMemberNode.STATE_TWO == dbMemberNode.getLeftRight()){ //更新父节点的右节点 @@ -239,7 +250,7 @@ return; } //有,则上级节点出局复投,轮数加1,复投逻辑 - memberNodeNext(dbMemberNodeRoot); + this.memberNodeNext(dbMemberNodeRoot); }else{//父节点为左节点,那么没人出局 return; } @@ -256,6 +267,7 @@ * 有,则上级节点出局复投,轮数加1,复投逻辑 * @param dbMemberNodeRoot */ + @Override public void memberNodeNext(DbMemberNode dbMemberNodeRoot) { log.info("进入复投"); @@ -303,43 +315,60 @@ perkSevenTeen(memberId,add,countFund); return; + }else if(10 < countFund){ + return; }else{ + //复投 Integer type = dbMemberNodeRoot.getType(); - //如果是13星局,则直接复投产生收益 - if(NodeType.NODE_13.getNodeType() == type){ - //复投 - futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1); - //产生收益 - perkSevenTeen(memberId,perkAmount,countFund); + Integer countFundNext = countFund + 1; + QueryWrapper<DbMemberNode> nodeQueryWrapper = new QueryWrapper<>(); + nodeQueryWrapper.eq("member_id",memberId); + nodeQueryWrapper.eq("type", type); + nodeQueryWrapper.eq("count_fund", countFundNext); + DbMemberNode dbMemberNode = dbMemberNodeMapper.selectOne(nodeQueryWrapper); + if(ObjectUtil.isNotEmpty(dbMemberNode)){ return; } - //如果是1到12星团 - if(type >=NodeType.NODE_1.getNodeType() && type <= NodeType.NODE_12.getNodeType()){ - //需要复投本轮, - //如果是第一轮,当下一个星团没有投入时,收益复投下一个新团 - //如果是第一轮,下一个新团有投入,则产生收益 - //复投或者收益的金额 - if(1 == countFund){//第一轮 - //复投本轮,轮数 +1 - futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1); - //收益复投(当前的下一个星团没有已投入),还是收益提出 - Integer nextType = type + 1; - QueryWrapper<DbMemberNode> nodeQueryWrapper = new QueryWrapper<>(); - nodeQueryWrapper.eq("member_id",memberId); - nodeQueryWrapper.eq("type", nextType); - nodeQueryWrapper.eq("work_state", DbMemberNode.STATE_ONE); - DbMemberNode dbMemberNode = dbMemberNodeMapper.selectOne(nodeQueryWrapper); - if(ObjectUtil.isEmpty(dbMemberNode)){ - futouSixTeen(memberId,perkAmount,nextType,1); - }else{ - perkSevenTeen(memberId,perkAmount,countFund); - } - }else{//2-9轮 - //复投本轮,轮数 +1 - futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1); - perkSevenTeen(memberId,perkAmount,countFund); - } - } + futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFundNext); + //产生收益 + perkSevenTeen(memberId,perkAmount,countFund); + return; +// Integer type = dbMemberNodeRoot.getType(); +// //如果是13星局,则直接复投产生收益 +// if(NodeType.NODE_13.getNodeType() == type){ +// //复投 +// futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1); +// //产生收益 +// perkSevenTeen(memberId,perkAmount,countFund); +// return; +// } +// //如果是1到12星团 +// if(type >=NodeType.NODE_1.getNodeType() && type <= NodeType.NODE_12.getNodeType()){ +// //需要复投本轮, +// //如果是第一轮,当下一个星团没有投入时,收益复投下一个新团 +// //如果是第一轮,下一个新团有投入,则产生收益 +// //复投或者收益的金额 +// if(1 == countFund){//第一轮 +// //收益复投(当前的下一个星团没有已投入),还是收益提出 +// Integer nextType = type + 1; +// QueryWrapper<DbMemberNode> nodeQueryWrapper = new QueryWrapper<>(); +// nodeQueryWrapper.eq("member_id",memberId); +// nodeQueryWrapper.eq("type", nextType); +// nodeQueryWrapper.eq("work_state", DbMemberNode.STATE_ONE); +// DbMemberNode dbMemberNode = dbMemberNodeMapper.selectOne(nodeQueryWrapper); +// if(ObjectUtil.isEmpty(dbMemberNode)){ +// futouSixTeen(memberId,perkAmount,nextType,1); +// }else{ +// perkSevenTeen(memberId,perkAmount,countFund); +// } +// //复投本轮,轮数 +1 +// futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1); +// }else{//2-9轮 +// //复投本轮,轮数 +1 +// futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1); +// perkSevenTeen(memberId,perkAmount,countFund); +// } +// } } } /** @@ -397,13 +426,34 @@ dbMemberNode.setWorkState(1); dbMemberNodeMapper.insert(dbMemberNode); + boolean flag = false;//下一级的再次复投 if(ObjectUtil.isNotEmpty(dbMemberNodeOld)){ if(dbMemberNode.getLeftRight() == 1){ dbMemberNodeOld.setLeftNode(dbMemberNode.getId()); }else{ dbMemberNodeOld.setRightNode(dbMemberNode.getId()); + flag = true; } dbMemberNodeMapper.updateById(dbMemberNodeOld); + } + if(flag){ + if(ObjectUtil.isEmpty(dbMemberNodeOld.getParentNode())){ + return; + } + Long parentNode = dbMemberNodeOld.getParentNode(); + DbMemberNode dbMemberNodeRoot = dbMemberNodeMapper.selectById(parentNode); + if(ObjectUtil.isEmpty(dbMemberNodeRoot)){ + return; + } + if(dbMemberNodeRoot.getLeftRight() == 1){ + return; + } + //每个星团,只复投10轮 + if(10 < dbMemberNodeRoot.getCountFund()){ + return; + } + + this.memberNodeNext(dbMemberNodeRoot); } } @@ -639,7 +689,7 @@ DataDictionaryEnum.PERK_NUM.getType(), DataDictionaryEnum.PERK_NUM.getCode() ); - BigDecimal perKNum = new BigDecimal(ObjectUtil.isEmpty(perKNumDic) ? "1000" : perKNumDic.getValue()); + BigDecimal perKNum = new BigDecimal(ObjectUtil.isEmpty(perKNumDic) ? "200" : perKNumDic.getValue()); BigDecimal perkAmount = amount.multiply(perkPercent).divide(perKNum, 8, BigDecimal.ROUND_DOWN); if(BigDecimal.ZERO.compareTo(perkAmount) >= 0){ -- Gitblit v1.9.1