| | |
| | | import java.math.RoundingMode; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author |
| | |
| | | return; |
| | | } |
| | | if(inviteNum > dappMemberEntities.size()){ |
| | | return; |
| | | } |
| | | List<Long> collect = dappMemberEntities.stream().map(DappMemberEntity::getId).collect(Collectors.toList()); |
| | | QueryWrapper<DbMemberNode> inviteNodeQuery = new QueryWrapper<>(); |
| | | inviteNodeQuery.select("member_id"); |
| | | inviteNodeQuery.eq("work_state", DbMemberNode.STATE_ONE); |
| | | inviteNodeQuery.in("member_id",collect); |
| | | inviteNodeQuery.groupBy("member_id"); |
| | | List<DbMemberNode> inviteNodes = dbMemberNodeMapper.selectList(inviteNodeQuery); |
| | | if(CollUtil.isEmpty(inviteNodes)){ |
| | | return; |
| | | } |
| | | if(inviteNum > inviteNodes.size()){ |
| | | return; |
| | | } |
| | | //任何星级的原来节点都要出局 |
| | |
| | | if(ObjectUtil.isEmpty(dappMemberEntityRef)){ |
| | | return; |
| | | } |
| | | |
| | | memberId = dappMemberEntityRef.getId(); |
| | | //如果为购买星级激活用户,则跳过 |
| | | Integer activeStatus = dappMemberEntityRef.getActiveStatus(); |
| | | if(1 != activeStatus){ |
| | | memberId = dappMemberEntityRef.getId(); |
| | | continue; |
| | | } |
| | | //获取上级全部的直推 |
| | |
| | | |
| | | //如果没有直推,则跳过 |
| | | if(CollUtil.isEmpty(memberInviteList)){ |
| | | memberId = dappMemberEntityRef.getId(); |
| | | continue; |
| | | } |
| | | |
| | |
| | | } |
| | | //如果直推不满足当前规则需要的人数,则跳过 |
| | | if(memberInviteList.size() < rule.getInviteNum()){ |
| | | memberId = dappMemberEntityRef.getId(); |
| | | continue; |
| | | } |
| | | BigDecimal perkPercent = new BigDecimal(rule.getPerkPercent()); |
| | | BigDecimal perkPercent = new BigDecimal(rule.getPerkPercent()).multiply(new BigDecimal("0.01")); |
| | | BigDecimal perkAmount = perkPercent.multiply(amount); |
| | | Long perkMemberId = dappMemberEntityRef.getId(); |
| | | //生成一条流水 |
| | |
| | | DataDictionaryEnum.PERK_NUM.getType(), |
| | | DataDictionaryEnum.PERK_NUM.getCode() |
| | | ); |
| | | BigDecimal perKNum = new BigDecimal(ObjectUtil.isEmpty(perkPercentDic) ? "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){ |
| | |
| | | return; |
| | | } |
| | | //奖励金额 |
| | | BigDecimal memberPerk = perkPercent.multiply(buyNode); |
| | | BigDecimal memberPerk = perkAmount.multiply(buyNode); |
| | | if(BigDecimal.ZERO.compareTo(memberPerk) >= 0){ |
| | | continue; |
| | | } |
| | | dappWalletService.updateWalletCoinWithLock(memberPerk, dappMemberEntity.getId(), 1); |
| | | |
| | | DappFundFlowEntity fundFlow = new DappFundFlowEntity( |