From 0a6e3fcaa4850d319c4cfeb60b96c255eb476075 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 31 Jan 2024 11:04:40 +0800 Subject: [PATCH] 会员列表增加波卷功能 --- src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 61 ++++++++++++++++++++++++++++-- 1 files changed, 57 insertions(+), 4 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 1129921..361081e 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 @@ -351,7 +351,25 @@ } Long memberId = mallOrderInfo.getMemberId(); MallMember mallMember = memberMapper.selectById(memberId); - + /** + * 用户是否满足最低消费,满足则升级成为会员,可以邀请用户,并且查看会员商城 + */ + Integer isMember = mallMember.getIsMember(); + if(AppContants.MEMBER_STATE_NO == isMember){ + List<MallOrderInfo> mallOrderInfos = mallOrderInfoMapper.selectOrderInfoByStatus(OrderStatusEnum.FINISH.getValue()); + if(CollUtil.isNotEmpty(mallOrderInfos)){ + DataDictionaryCustom minAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.MIN_AMOUNT_IS_MEMBER.getType(), + DataDictionaryEnum.MIN_AMOUNT_IS_MEMBER.getCode() + ); + BigDecimal minAmount = new BigDecimal(minAmountDic.getValue());//系统设置的累计消费金额 + BigDecimal accumulateAmount = mallOrderInfos.stream().map(MallOrderInfo::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);//累计消费金额 + if(minAmount.compareTo(accumulateAmount) <= 0){//用户累计消费大于系统设置的累计消费 + mallMember.setIsMember(AppContants.MEMBER_STATE_YES); + memberMapper.updateById(mallMember); + } + } + } List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(mallOrderInfo.getId()); if(CollUtil.isEmpty(mallOrderItemList)){ @@ -366,6 +384,7 @@ */ //是否返利 BigDecimal amountBigDecimal = new BigDecimal(StrUtil.isEmpty(amount) ? "0" : amount); + BigDecimal parentUpAmount = BigDecimal.ZERO; if(BigDecimal.ZERO.compareTo(amountBigDecimal) < 0){ if(ObjectUtil.isNotEmpty(mallMember.getReferrerId())){ String referrerId = mallMember.getReferrerId(); @@ -378,21 +397,55 @@ DataDictionaryEnum.MEMBER_RETURN_PERCENT.getType(), DataDictionaryEnum.MEMBER_RETURN_PERCENT.getCode() ); - String returnPercentStr = StrUtil.isNotEmpty(returnPercentDic.getValue()) ? "1" : returnPercentDic.getValue(); + String returnPercentStr = StrUtil.isEmpty(returnPercentDic.getValue()) ? "10" : returnPercentDic.getValue(); BigDecimal returnPercent = new BigDecimal(returnPercentStr).divide(new BigDecimal(100), 2, BigDecimal.ROUND_DOWN); BigDecimal amountActual = amountBigDecimal.multiply(returnPercent).setScale(2, BigDecimal.ROUND_DOWN); mallMoneyFlowService.addMoneyFlow( - mallMember.getId(), + id, amountActual, MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(), mallOrderInfo.getOrderNo(), "直推奖", "直推奖", - id, + mallMember.getId(), 1, FlowTypeEnum.BALANCE.getValue(), 2); + parentUpAmount = amountActual; + } + + /** + * 拿下一级(直推的)收入的百分之五十 + */ + if(ObjectUtil.isNotEmpty(mallMemberParent.getReferrerId())){ + String referrerIdParentUp = mallMemberParent.getReferrerId(); + MallMember mallMemberParentUp = memberMapper.selectInfoByInviteId(referrerIdParentUp); + Long idParentUp = mallMemberParentUp.getId(); + MallMoneyFlow mallMoneyFlowParentUp = mallMoneyFlowMapper.selectOneByOrderNoAndMemberIdAndRtMemberId(mallOrderInfo.getOrderNo() + , idParentUp + , id); + if(ObjectUtil.isEmpty(mallMoneyFlowParentUp)){ + DataDictionaryCustom returnPercentUpDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.MEMBER_RETURN_PERCENT_UP.getType(), + DataDictionaryEnum.MEMBER_RETURN_PERCENT_UP.getCode() + ); + String returnPercentUpStr = StrUtil.isEmpty(returnPercentUpDic.getValue()) ? "50" : returnPercentUpDic.getValue(); + BigDecimal returnPercentUp = new BigDecimal(returnPercentUpStr).divide(new BigDecimal(100), 2, BigDecimal.ROUND_DOWN); + BigDecimal amountActualUp = parentUpAmount.multiply(returnPercentUp).setScale(2, BigDecimal.ROUND_DOWN); + + mallMoneyFlowService.addMoneyFlow( + idParentUp, + amountActualUp, + MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(), + mallOrderInfo.getOrderNo(), + "直推奖", + "直推奖", + id, + 1, + FlowTypeEnum.BALANCE.getValue(), + 2); + } } } } -- Gitblit v1.9.1