From 165a67bdad4c4ca98c284dd831584d36209fa8ea Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 27 Dec 2023 15:28:57 +0800 Subject: [PATCH] 直推奖励,冻结的用户,则直推奖励销毁,用户未冻结才能领取成功 --- src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 89 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 88 insertions(+), 1 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java index 17c155f..39a22e8 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java @@ -871,8 +871,39 @@ MallMember mallMember = memberMapper.selectById(memberId); if(ObjectUtil.isNotEmpty(mallMember)){ //直推 - } + String referrerId = mallMember.getReferrerId(); + MallMember directMember = memberMapper.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 basicPerkDirect = profit.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN); + /** + * 先插入流水记录,然后定时器每小时,循环一次找寻对应的数据执行 + */ + String frozenDays = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.BASIC_PERK_DIRECT_FROZEN.getType(), + DataDictionaryEnum.BASIC_PERK_DIRECT_FROZEN.getCode() + ).getValue(); + String orderNo = MallUtils.getOrderNum("FNFT"); + mallMoneyFlowService.addMoneyFlow( + directMember.getId(), + basicPerkDirect, + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getValue(), + orderNo, + null, + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getDescrition(), + AppContants.MEMBER_FLOW_ING); + MallMemberAmount mallMemberAmountDirect = mallMemberAmountMapper.selectByMemberId(directMember.getId()); + mallMemberAmountDirect.setFrozenNft(mallMemberAmountDirect.getFrozenNft().add(basicPerkDirect)); + mallMemberAmountMapper.updateFrozenNftById(mallMemberAmountDirect); + } + + + } } } } @@ -1036,6 +1067,62 @@ } } + @Override + public void basicMemberPerk() { + QueryWrapper<MallMoneyFlow> queryMallMoneyFlow = new QueryWrapper<>(); + queryMallMoneyFlow.eq("type",MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getValue()); + queryMallMoneyFlow.eq("is_return",AppContants.MEMBER_FLOW_ING); + queryMallMoneyFlow.eq("flow_type",FlowTypeNewEnum.NFT.getValue()); + List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(queryMallMoneyFlow); + if(CollUtil.isNotEmpty(mallMoneyFlows)){ + return; + } + for(MallMoneyFlow mallMoneyFlow : mallMoneyFlows){ + mallMoneyFlow.setIsReturn(AppContants.MEMBER_FLOW_DONE); + mallMoneyFlowMapper.updateById(mallMoneyFlow); + /** + * 如果用户是冻结,则直接销毁 + */ + Long memberId = mallMoneyFlow.getMemberId(); + MallMember mallMember = memberMapper.selectById(memberId); + Integer isFrozen = mallMember.getIsFrozen(); + if(ProductEnum.MEMBER_UNFROZEN.getValue() == isFrozen){ + MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); + mallMemberAmount.setFrozenNft(mallMemberAmount.getFrozenNft().subtract(mallMoneyFlow.getAmount())); + mallMemberAmountMapper.updateFrozenNftById(mallMemberAmount); + //插入一条流水记录 + String orderNo = MallUtils.getOrderNum("FNFTW"); + mallMoneyFlowService.addMoneyFlow( + memberId, + mallMoneyFlow.getAmount().negate(), + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getValue(), + orderNo, + null, + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getDescrition(), + AppContants.MEMBER_FLOW_ING); + + }else { + MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); + mallMemberAmount.setFrozenNft(mallMemberAmount.getFrozenNft().subtract(mallMoneyFlow.getAmount())); + mallMemberAmount.setTrendsNft(mallMemberAmount.getTrendsNft().add(mallMoneyFlow.getAmount())); + mallMemberAmountMapper.updateTrendsNftAndFrozenNftById(mallMemberAmount); + + //插入一条流水记录 + String orderNo = MallUtils.getOrderNum("NFT"); + mallMoneyFlowService.addMoneyFlow( + memberId, + mallMoneyFlow.getAmount().negate(), + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_DONE.getValue(), + orderNo, + null, + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_DONE.getDescrition(), + AppContants.MEMBER_FLOW_DONE); + } + } + } + public void insertSell(Long memberId,BigDecimal nftCnt,BigDecimal nftCntAva, BigDecimal nftFee,BigDecimal fcmFeeCnt){ String orderNo = MallUtils.getOrderNum("NFT"); -- Gitblit v1.9.1