From 12e933d42d1a3ba5d2a69f7dc923da2d312457a0 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Sat, 06 Jul 2024 10:39:00 +0800 Subject: [PATCH] 逻辑 --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 105 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 91 insertions(+), 14 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 ca085fa..e30e0e6 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 @@ -635,10 +635,11 @@ if(1 != activeStatus){ continue; } - //获取上级全部的直推 + //获取上级全部的激活直推 String inviteId = dappMemberEntityRef.getInviteId(); QueryWrapper<DappMemberEntity> memberInviteQuery = new QueryWrapper<>(); memberInviteQuery.eq("referer_id",inviteId); + memberInviteQuery.eq("active_status",1); List<DappMemberEntity> memberInviteList = dappMemberDao.selectList(memberInviteQuery); //如果没有直推,则跳过 @@ -663,7 +664,6 @@ perkMemberId, MoneyFlowEnum.DYNAMIC_PERK.getValue(), StrUtil.format(MoneyFlowEnum.DYNAMIC_PERK.getDescrition(),amount,memberInviteList.size(),perkAmount)); - } } @@ -706,22 +706,78 @@ dataDictionaryCustomMapper.updateById(buchangChiDic); /** + * 团队 5 %加权分红(people数量) + */ +// BigDecimal tuanDuiAmount = amount.multiply(new BigDecimal(AppContants.DAO_TEAM_PERK_PERCENT)); +// DataDictionaryCustom tuanDuiChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( +// DataDictionaryEnum.TUAN_DUI_CHI.getType(), +// DataDictionaryEnum.TUAN_DUI_CHI.getCode() +// ); +// BigDecimal tuanDuiChi = new BigDecimal(tuanDuiChiDic.getValue()).add(tuanDuiAmount).setScale(2,BigDecimal.ROUND_DOWN); +// tuanDuiChiDic.setValue(tuanDuiChi.toString()); +// dataDictionaryCustomMapper.updateById(tuanDuiChiDic); + + /** + * 技术 2 %加权分红(people数量) + */ + BigDecimal jiShuAmount = amount.multiply(new BigDecimal(AppContants.DAO_JI_SHU_PERCENT)); + DataDictionaryCustom jiShuChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.JI_SHU_CHI.getType(), + DataDictionaryEnum.JI_SHU_CHI.getCode() + ); + BigDecimal jiShuChi = new BigDecimal(jiShuChiDic.getValue()).add(jiShuAmount).setScale(2,BigDecimal.ROUND_DOWN); + jiShuChiDic.setValue(jiShuChi.toString()); + dataDictionaryCustomMapper.updateById(jiShuChiDic); + + /** + * 基金会 3 %加权分红(people数量) + */ + BigDecimal jiJingHuiAmount = amount.multiply(new BigDecimal(AppContants.DAO_JI_JING_HUI_PERCENT)); + DataDictionaryCustom jiJingHuiChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.JI_JING_HUI_CHI.getType(), + DataDictionaryEnum.JI_JING_HUI_CHI.getCode() + ); + BigDecimal jiJingHuiChi = new BigDecimal(jiJingHuiChiDic.getValue()).add(jiJingHuiAmount).setScale(2,BigDecimal.ROUND_DOWN); + jiJingHuiChiDic.setValue(jiJingHuiChi.toString()); + dataDictionaryCustomMapper.updateById(jiJingHuiChiDic); + + /** * DAO联盟委员会 : 5% */ BigDecimal daoNodeAmountTotal = new BigDecimal(AppContants.DAO_NODE_PERCENT).multiply(amount); + //沉淀剩余 + BigDecimal daoNodeAmountAva = BigDecimal.ZERO; + QueryWrapper<DappMemberEntity> objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("node_type",1); List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectList(objectQueryWrapper); - if(CollUtil.isEmpty(dappMemberEntities)){ - return; + if(CollUtil.isNotEmpty(dappMemberEntities)){ + BigDecimal daoNodeAmount = daoNodeAmountTotal.divide(new BigDecimal(dappMemberEntities.size()),2,BigDecimal.ROUND_DOWN); + for(DappMemberEntity nodeMember : dappMemberEntities){ + //生成一条流水 + DappFundFlowEntity rePutInFlow = new DappFundFlowEntity( + nodeMember.getId(), + daoNodeAmount, + MoneyFlowEnum.NODE_PERK.getValue(), + 2, + null, + StrUtil.format(MoneyFlowEnum.NODE_PERK.getDescrition(),amount,dappMemberEntities.size(),daoNodeAmount)); + dappFundFlowDao.insert(rePutInFlow); + //更新用户的金额 + dappWalletService.updateWalletCoinWithLock(daoNodeAmount, nodeMember.getId(), 1); + } + }else{ + daoNodeAmountAva = daoNodeAmountTotal; } - BigDecimal daoNodeAmount = daoNodeAmountTotal.divide(new BigDecimal(dappMemberEntities.size()),2,BigDecimal.ROUND_DOWN); - for(DappMemberEntity nodeMember : dappMemberEntities){ - this.updateBalanceInsertFlow( - daoNodeAmount, - nodeMember.getId(), - MoneyFlowEnum.NODE_PERK.getValue(), - StrUtil.format(MoneyFlowEnum.NODE_PERK.getDescrition(),amount,dappMemberEntities.size(),daoNodeAmount)); + + if(BigDecimal.ZERO.compareTo(daoNodeAmountAva) < 0){ + DataDictionaryCustom jieDianChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.JIE_DIAN_CHI.getType(), + DataDictionaryEnum.JIE_DIAN_CHI.getCode() + ); + BigDecimal jieDianChi = new BigDecimal(jieDianChiDic.getValue()).add(daoNodeAmountAva).setScale(2,BigDecimal.ROUND_DOWN); + jieDianChiDic.setValue(jieDianChi.toString()); + dataDictionaryCustomMapper.updateById(jieDianChiDic); } } @@ -830,6 +886,9 @@ @Override public void teamPerk(Long id) { DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectById(id); + if(ObjectUtil.isEmpty(dappFundFlowEntity)){ + return; + } if(MoneyFlowEnum.CUN_CHU.getValue() != dappFundFlowEntity.getType()){ return; @@ -841,11 +900,16 @@ //5%加权分红(people数量) BigDecimal totalAmount = amount.multiply(new BigDecimal(AppContants.DAO_TEAM_PERK_PERCENT)).setScale(2, BigDecimal.ROUND_DOWN); + + //沉淀数量 + BigDecimal tuanDuiAva = BigDecimal.ZERO; + QueryWrapper<DappMemberEntity> daoOneQuery = new QueryWrapper<>(); daoOneQuery.eq("level", MemberLevelEnum.DAO_1.getCode()); List<DappMemberEntity> daoOnes = dappMemberDao.selectList(daoOneQuery); if(CollUtil.isNotEmpty(daoOnes)){ BigDecimal bigDecimal = totalAmount.multiply(new BigDecimal("0.5")).setScale(2, BigDecimal.ROUND_DOWN); + tuanDuiAva = tuanDuiAva.add(bigDecimal); //每人平分数量 BigDecimal divide = bigDecimal.divide(new BigDecimal(daoOnes.size()), 2, BigDecimal.ROUND_DOWN); for(DappMemberEntity memberEntity : daoOnes){ @@ -862,6 +926,7 @@ List<DappMemberEntity> daoTwos = dappMemberDao.selectList(daoTwoQuery); if(CollUtil.isNotEmpty(daoTwos)){ BigDecimal bigDecimal = totalAmount.multiply(new BigDecimal("0.3")).setScale(2, BigDecimal.ROUND_DOWN); + tuanDuiAva = tuanDuiAva.add(bigDecimal); //每人平分数量 BigDecimal divide = bigDecimal.divide(new BigDecimal(daoTwos.size()), 2, BigDecimal.ROUND_DOWN); for(DappMemberEntity memberEntity : daoTwos){ @@ -874,10 +939,11 @@ } QueryWrapper<DappMemberEntity> daoThreeQuery = new QueryWrapper<>(); - daoThreeQuery.eq("level", MemberLevelEnum.DAO_2.getCode()); + daoThreeQuery.eq("level", MemberLevelEnum.DAO_3.getCode()); List<DappMemberEntity> daoThrees = dappMemberDao.selectList(daoThreeQuery); if(CollUtil.isNotEmpty(daoThrees)){ BigDecimal bigDecimal = totalAmount.multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN); + tuanDuiAva = tuanDuiAva.add(bigDecimal); //每人平分数量 BigDecimal divide = bigDecimal.divide(new BigDecimal(daoThrees.size()), 2, BigDecimal.ROUND_DOWN); for(DappMemberEntity memberEntity : daoThrees){ @@ -887,6 +953,17 @@ MoneyFlowEnum.TEAM_THREE_PERK.getValue(), StrUtil.format(MoneyFlowEnum.TEAM_THREE_PERK.getDescrition(),divide)); } + } + + DataDictionaryCustom tuanDuiChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.TUAN_DUI_CHI.getType(), + DataDictionaryEnum.TUAN_DUI_CHI.getCode() + ); + BigDecimal tuanDuiAvaTotal = totalAmount.subtract(tuanDuiAva).setScale(2, BigDecimal.ROUND_DOWN); + if(BigDecimal.ZERO.compareTo(tuanDuiAvaTotal) < 0){ + BigDecimal tuanDuiChi = new BigDecimal(tuanDuiChiDic.getValue()).add(tuanDuiAvaTotal).setScale(2,BigDecimal.ROUND_DOWN); + tuanDuiChiDic.setValue(tuanDuiChi.toString()); + dataDictionaryCustomMapper.updateById(tuanDuiChiDic); } } @@ -900,7 +977,7 @@ } //获取全部上级 ArrayList<DappMemberEntity> activeMembers = new ArrayList<>(); - List<String> refererIds = Arrays.asList(StrUtil.split(",", dappMemberEntity.getRefererIds())); + List<String> refererIds = Arrays.asList(StrUtil.split(dappMemberEntity.getRefererIds(),",")); for(String inviteId : refererIds){ DappMemberEntity memberEntity = dappMemberDao.selectMemberInfoByInviteId(inviteId); if(ObjectUtil.isNotEmpty(memberEntity)){ @@ -932,7 +1009,7 @@ List<Long> collect = direct.stream().map(DappMemberEntity::getId).collect(Collectors.toList()); QueryWrapper<DappStorage> storageQueryWrapper = new QueryWrapper<>(); storageQueryWrapper.in("member_id",collect); - storageQueryWrapper.eq("state",1); +// storageQueryWrapper.eq("state",1); List<DappStorage> dappStorages = dappStorageMapper.selectList(storageQueryWrapper); if(CollUtil.isEmpty(dappStorages)){ continue; -- Gitblit v1.9.1