From b60666a3fe9822277efd717380e619f08ac3ad9f Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Thu, 13 Jun 2024 11:42:23 +0800 Subject: [PATCH] 星级矩阵 --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 89 ++++++++++++++++++++++++-------------------- 1 files changed, 48 insertions(+), 41 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 a63588c..f97d719 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 @@ -250,10 +250,12 @@ */ public void memberNodeNext(DbMemberNode dbMemberNodeRoot) { log.info("进入复投"); + DataDictionaryCustom inviteNumDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.INVITE_NUM.getType(), DataDictionaryEnum.INVITE_NUM.getCode() ); + int inviteNum = Integer.parseInt(inviteNumDic.getValue()); Long memberId = dbMemberNodeRoot.getMemberId(); @@ -268,49 +270,54 @@ if(inviteNum > dappMemberEntities.size()){ return; } + //任何星级的原来节点都要出局 + dbMemberNodeRoot.setWorkState(DbMemberNode.STATE_TWO); + dbMemberNodeMapper.updateById(dbMemberNodeRoot); + //任何星级,10轮,收益本金都返回 Integer countFund = dbMemberNodeRoot.getCountFund(); - Integer type = dbMemberNodeRoot.getType(); - //如果是13星局,则直接复投产生收益 - if(NodeType.NODE_13.getNodeType() == type){ - //复投 - futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1); - //产生收益 - BigDecimal perkAmount = dbMemberNodeRoot.getAmount().multiply(new BigDecimal("1.4")); - perkSevenTeen(memberId,perkAmount,countFund); - return; - } - //如果是1到12星团 - if(type >=NodeType.NODE_1.getNodeType() && type <= NodeType.NODE_12.getNodeType()){ - //需要复投本轮, - //如果是第一轮,当下一个星团没有投入时,收益复投下一个新团 - //如果是第一轮,下一个新团有投入,则产生收益 - //复投或者收益的金额 - BigDecimal nodeAmount = dbMemberNodeRoot.getAmount().multiply(new BigDecimal("1.4")); - 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,nodeAmount,nextType,1); - }else{ - perkSevenTeen(memberId,nodeAmount,countFund); - } - }else if(countFund <= 9 && countFund >= 2){//2-9轮 - //复投本轮,轮数 +1 - futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1); - perkSevenTeen(memberId,nodeAmount,countFund); - }else{//10轮,收益本金都返回 - BigDecimal add = dbMemberNodeRoot.getAmount().add(nodeAmount); - perkSevenTeen(memberId,add,countFund); + //收益 + BigDecimal perkAmount = dbMemberNodeRoot.getAmount().multiply(new BigDecimal("1.4")); + if(10 == countFund){//任何星级,10轮,收益本金都返回 + BigDecimal add = dbMemberNodeRoot.getAmount().add(perkAmount); + perkSevenTeen(memberId,add,countFund); - dbMemberNodeRoot.setWorkState(DbMemberNode.STATE_TWO); - dbMemberNodeMapper.updateById(dbMemberNodeRoot); + return; + }else{ + 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){//第一轮 + //复投本轮,轮数 +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); + } } } } -- Gitblit v1.9.1