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 +++++++++++++++++++++++++++++ src/main/java/cc/mrbird/febs/common/utils/AppContants.java | 6 ++ src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 3 + src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java | 5 + src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 10 +++ src/main/resources/mapper/modules/MallMemberAmountMapper.xml | 8 ++ src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java | 3 + src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java | 1 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberAmountMapper.java | 2 src/main/java/cc/mrbird/febs/mall/service/IAgentService.java | 2 10 files changed, 128 insertions(+), 1 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java index 2e8fb3e..4a538bc 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java @@ -5,6 +5,9 @@ @Getter public enum DataDictionaryEnum { + //直推补贴 + BASIC_PERK_DIRECT_FROZEN("BASIC_PERK_DIRECT_FROZEN","BASIC_PERK_DIRECT_FROZEN"), + BASIC_PERK_DIRECT("BASIC_PERK_DIRECT","BASIC_PERK_DIRECT"), /** * 预约开始时间 * 预约结束时间 diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java index 831f5f4..e74ef83 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java @@ -10,6 +10,9 @@ **/ @Getter public enum MoneyFlowTypeNewEnum { + BASIC_PERK_DIRECT_DONE(18,"直推奖励"), + BASIC_PERK_DIRECT_WRONG(17,"账户冻结,遗憾错失直推奖励"), + BASIC_PERK_DIRECT(16,"即将获得直推奖励"), SYSTEM_PEY(15,"系统拨付"), NFT_OUT_FEE_FCM(14,"NFT提现GFA手续费"), TOKEN_BUY_FROZEN_RETURN(13,"预约门票"), diff --git a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java index e167981..114c610 100644 --- a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java +++ b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java @@ -76,4 +76,10 @@ public static final String MEMBER_WITHDRAW_VOUCHER = "凭证提现"; public static final String MEMBER_WITHDRAW_VOUCHER_AMOUNT = "凭证现金提现"; + + + public static final int MEMBER_FLOW_ING = 1; + + public static final int MEMBER_FLOW_DONE = 2; + } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberAmountMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberAmountMapper.java index ccf187e..097af8b 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberAmountMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberAmountMapper.java @@ -19,4 +19,6 @@ void updateTrendsNftById(@Param("record")MallMemberAmount mallMemberAmount); void updateFrozenNftById(@Param("record")MallMemberAmount mallMemberAmount); + + void updateTrendsNftAndFrozenNftById(@Param("record")MallMemberAmount mallMemberAmount); } diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java index 9260f64..1fd0fac 100644 --- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java +++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java @@ -143,6 +143,16 @@ agentService.timeGetOrderBuyCancel(); } + + /** + * 直推奖励 + * 从冻结到可用 + */ + @Scheduled(cron = "0 0 0/2 * * ? ") + public void basicMemberPerk() { + agentService.basicMemberPerk(); + } + // /** // * 卖单 // * 看是否是开始显示订单的时间段,超出结束时间的卖单,全部超时失败 diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java index 019f4bd..f0b1d75 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java @@ -47,4 +47,6 @@ void timeGetOrderSell(); void timeGetOrderBuyCancel(); + + void basicMemberPerk(); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java b/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java index 8cea027..e058ce6 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java @@ -16,5 +16,6 @@ void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType); void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType, String description); + void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType, String description,Integer isReturn); } 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"); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java index ee0c8e0..8c5ff2a 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java @@ -54,4 +54,9 @@ public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType, String description) { this.addMoneyFlow(memberId, amount, type, orderNo, description, null, rtMemberId, null, flowType, null); } + + @Override + public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType, String description, Integer isReturn) { + this.addMoneyFlow(memberId, amount, type, orderNo, description, null, rtMemberId, null, flowType, isReturn); + } } diff --git a/src/main/resources/mapper/modules/MallMemberAmountMapper.xml b/src/main/resources/mapper/modules/MallMemberAmountMapper.xml index 86f5f15..1173316 100644 --- a/src/main/resources/mapper/modules/MallMemberAmountMapper.xml +++ b/src/main/resources/mapper/modules/MallMemberAmountMapper.xml @@ -42,4 +42,12 @@ where id = #{record.id} and revision=#{record.revision} </update> + <update id="updateTrendsNftAndFrozenNftById"> + update mall_member_amount + set revision = revision + 1, + frozen_nft = #{record.frozenNft}, + trends_nft = #{record.trendsNft} + where id = #{record.id} and revision=#{record.revision} + </update> + </mapper> \ No newline at end of file -- Gitblit v1.9.1