| | |
| | | chergeRecordId); |
| | | dappFundFlowDao.insert(poolAllMemberAFundFlow); |
| | | |
| | | BigDecimal poolAllMemberAPercentCntAva = nodePoolPerk(poolAllMemberAPercentCnt, MemberLevelEnum.MEMBER.getType(), FundFlowEnum.POOL_MEMBER_A_CNT.getCode()); |
| | | // BigDecimal poolAllMemberAPercentCntAva = nodePoolPerk(poolAllMemberAPercentCnt, MemberLevelEnum.MEMBER.getType(), FundFlowEnum.POOL_MEMBER_A_CNT.getCode()); |
| | | /** |
| | | * 20%全网加权平分,按照个人投资占比全网的比例去平分 |
| | | */ |
| | | BigDecimal poolAllMemberAPercentCntAva = allMemberPerk(poolAllMemberAPercentCnt, FundFlowEnum.POOL_MEMBER_A_CNT.getCode()); |
| | | DappFundFlowEntity poolAllMemberAFundFlowAva = new DappFundFlowEntity( |
| | | 1L, |
| | | poolAllMemberAPercentCnt.subtract(poolAllMemberAPercentCntAva), |
| | |
| | | |
| | | } |
| | | |
| | | private BigDecimal allMemberPerk(BigDecimal poolAllMemberAPercentCnt, int code) { |
| | | |
| | | BigDecimal realPerkAmount = BigDecimal.ZERO; |
| | | /** |
| | | * 查询总业绩 |
| | | */ |
| | | List<DappChargeUsdtEntity> dappChargeUsdtEntities = dappChargeUsdtMapper.selectList(null); |
| | | if(CollUtil.isEmpty(dappChargeUsdtEntities)){ |
| | | return realPerkAmount; |
| | | } |
| | | //总入金 |
| | | BigDecimal amountAll = dappChargeUsdtEntities.stream().map(DappChargeUsdtEntity::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | if(BigDecimal.ZERO.compareTo(amountAll) >= 0){ |
| | | return realPerkAmount; |
| | | } |
| | | /** |
| | | * 每个人入金的总额 |
| | | */ |
| | | Map<Long, BigDecimal> amountMap = dappChargeUsdtEntities.stream().collect( |
| | | Collectors.groupingBy(DappChargeUsdtEntity::getMemberId, |
| | | Collectors.reducing(BigDecimal.ZERO, DappChargeUsdtEntity::getAmount, BigDecimal::add))); |
| | | /** |
| | | * 入金1U分的代币个数 |
| | | */ |
| | | BigDecimal usdtOfCnt = poolAllMemberAPercentCnt.divide(amountAll, 8, BigDecimal.ROUND_DOWN); |
| | | |
| | | for (Map.Entry<Long, BigDecimal> entry : amountMap.entrySet()) { |
| | | Long memberId = entry.getKey(); |
| | | //当前会员的入金总和 |
| | | BigDecimal amount = entry.getValue(); |
| | | if(BigDecimal.ZERO.compareTo(amount) >= 0){ |
| | | continue; |
| | | } |
| | | //应该平分到的数量 |
| | | BigDecimal memberCnt = amount.multiply(usdtOfCnt).setScale(8,BigDecimal.ROUND_DOWN); |
| | | BigDecimal fundFlowToMemberFlag = this.getAndUpdateMemberPerk(memberId, memberCnt); |
| | | if(fundFlowToMemberFlag.compareTo(BigDecimal.ZERO) > 0){ |
| | | //生成一条50%客户秒到的资金流水记录 |
| | | DappFundFlowEntity fundFlowToMember = new DappFundFlowEntity( |
| | | memberId, |
| | | fundFlowToMemberFlag, |
| | | code, |
| | | 2, |
| | | BigDecimal.ZERO); |
| | | dappFundFlowDao.insert(fundFlowToMember); |
| | | //用户的A币账户增加memberGetACnt数量 |
| | | dappWalletService.updateWalletMineWithLock(fundFlowToMemberFlag,memberId,1); |
| | | |
| | | realPerkAmount = realPerkAmount.add(fundFlowToMemberFlag); |
| | | } |
| | | } |
| | | return realPerkAmount; |
| | | } |
| | | |
| | | @Override |
| | | public void AntACoinAPollInMsg(Long id) { |
| | | log.info("{}",id); |