|  |  |  | 
|---|
|  |  |  | MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(mallProductBuy.getMemberId()); | 
|---|
|  |  |  | mallMemberAmount.setTotalPerk(mallMemberAmount.getTotalPerk().add(totalPerk)); | 
|---|
|  |  |  | mallMemberAmountMapper.updateTotalPerkById(mallMemberAmount); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 更新用户上级收益,冻结7天,7天时间到期自动释放到动态钱包 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | Long memberId = mallProductBuy.getMemberId(); | 
|---|
|  |  |  | MallMember mallMember = mallMemberMapper.selectById(memberId); | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(mallMember)){ | 
|---|
|  |  |  | //直推 | 
|---|
|  |  |  | String referrerId = mallMember.getReferrerId(); | 
|---|
|  |  |  | MallMember directMember = mallMemberMapper.selectInfoByInviteId(referrerId); | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(directMember)){ | 
|---|
|  |  |  | BigDecimal basicPerkDirectPercent = new BigDecimal(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
|---|
|  |  |  | DataDictionaryEnum.BASIC_PERK_DIRECT.getType(), | 
|---|
|  |  |  | DataDictionaryEnum.BASIC_PERK_DIRECT.getCode() | 
|---|
|  |  |  | ).getValue()).multiply(new BigDecimal("0.01")); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BigDecimal nftTotal = mallProductBuy.getNftTotal(); | 
|---|
|  |  |  | BigDecimal basicPerkDirect = nftTotal.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN); | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 如果用户是冻结,则直接销毁 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | Integer isFrozen = directMember.getIsFrozen(); | 
|---|
|  |  |  | if(ProductEnum.MEMBER_FROZEN.getValue() == isFrozen){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallMemberAmount mallMemberAmountMine = mallMemberAmountMapper.selectByMemberId(directMember.getId()); | 
|---|
|  |  |  | if(BigDecimal.ZERO.compareTo(mallMemberAmountMine.getTotalPerk().subtract(basicPerkDirect)) >= 0){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | mallMemberAmountMine.setTotalPerk(mallMemberAmountMine.getTotalPerk().subtract(basicPerkDirect)); | 
|---|
|  |  |  | mallMemberAmountMapper.updateTrendsNftAndFrozenNftById(mallMemberAmountMine); | 
|---|
|  |  |  | //插入一条流水记录 | 
|---|
|  |  |  | String orderNo = MallUtils.getOrderNum("FNFTW"); | 
|---|
|  |  |  | mallMoneyFlowService.addMoneyFlow( | 
|---|
|  |  |  | memberId, | 
|---|
|  |  |  | basicPerkDirect.negate(), | 
|---|
|  |  |  | MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getValue(), | 
|---|
|  |  |  | orderNo, | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | FlowTypeNewEnum.NFT.getValue(), | 
|---|
|  |  |  | MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getDescrition(), | 
|---|
|  |  |  | AppContants.MEMBER_FLOW_ING); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallMemberAmount mallMemberAmountMine = mallMemberAmountMapper.selectByMemberId(directMember.getId()); | 
|---|
|  |  |  | if(BigDecimal.ZERO.compareTo(mallMemberAmountMine.getTotalPerk().subtract(basicPerkDirect)) >= 0){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | mallMemberAmountMine.setTotalPerk(mallMemberAmountMine.getTotalPerk().subtract(basicPerkDirect)); | 
|---|
|  |  |  | mallMemberAmountMapper.updateTrendsNftAndFrozenNftById(mallMemberAmountMine); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallMemberAmount mallMemberAmountNft = mallMemberAmountMapper.selectByMemberId(directMember.getId()); | 
|---|
|  |  |  | mallMemberAmountNft.setTrendsNft(mallMemberAmountNft.getTrendsNft().add(basicPerkDirect)); | 
|---|
|  |  |  | mallMemberAmountMapper.updateTrendsNftById(mallMemberAmountNft); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //插入一条流水记录 | 
|---|
|  |  |  | String orderNo = MallUtils.getOrderNum("NFT"); | 
|---|
|  |  |  | mallMoneyFlowService.addMoneyFlow( | 
|---|
|  |  |  | memberId, | 
|---|
|  |  |  | basicPerkDirect, | 
|---|
|  |  |  | MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_DONE.getValue(), | 
|---|
|  |  |  | orderNo, | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | FlowTypeNewEnum.NFT.getValue(), | 
|---|
|  |  |  | MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_DONE.getDescrition(), | 
|---|
|  |  |  | AppContants.MEMBER_FLOW_DONE); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|