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 | 129 +++++++++++++++++++++++++++++++++--------- 1 files changed, 100 insertions(+), 29 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 06517b4..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 @@ -57,6 +57,7 @@ private final IMallMoneyFlowService mallMoneyFlowService; private final MallMemberClassMapper mallMemberClassMapper; private final MallMemberHouseMapper mallMemberHouseMapper; + private final MallMoneyFlowMapper mallMoneyFlowMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -241,7 +242,7 @@ @Override public void addMemberScan(String str) { - String[] split = StrUtil.split(str, "-"); + String[] split = StrUtil.split(str, "@"); String referrerId = split[0]; String openId = split[1]; MallMember mallMember = memberMapper.selectMemberByOpenId(openId); @@ -350,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)){ @@ -365,21 +384,69 @@ */ //是否返利 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(); MallMember mallMemberParent = memberMapper.selectInfoByInviteId(referrerId); Long id = mallMemberParent.getId(); - DataDictionaryCustom returnPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.MEMBER_RETURN_PERCENT.getType(), - DataDictionaryEnum.MEMBER_RETURN_PERCENT.getCode() - ); - String returnPercentStr = StrUtil.isNotEmpty(returnPercentDic.getValue()) ? "1" : 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); - memberWalletService.add(amountActual, id, "balance"); - mallMoneyFlowService.addMoneyFlow(id, amountActual, MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(), - mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); + + MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOneByOrderNoAndMemberIdAndRtMemberId(mallOrderInfo.getOrderNo(), memberId, id); + if(ObjectUtil.isEmpty(mallMoneyFlow)){ + DataDictionaryCustom returnPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.MEMBER_RETURN_PERCENT.getType(), + DataDictionaryEnum.MEMBER_RETURN_PERCENT.getCode() + ); + 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( + id, + amountActual, + MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(), + mallOrderInfo.getOrderNo(), + "直推奖", + "直推奖", + 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); + } + } } } for(MallOrderItem mallOrderItem : mallOrderItemList){ @@ -388,26 +455,26 @@ if(ObjectUtil.isEmpty(mallGoods)){ break; } - if(1 == mallGoods.getIsUnreal()){ + if(ObjectUtil.isNotEmpty(mallGoods.getIsUnreal()) && 1 == mallGoods.getIsUnreal()){ mallOrderInfo.setStatus(OrderStatusEnum.FINISH.getValue()); mallOrderInfoMapper.updateById(mallOrderInfo); - } - //是否送券 1:是 2:否 - BigDecimal levelTwoPrice = mallGoods.getLevelTwoPrice(); - if(BigDecimal.ONE.compareTo(levelTwoPrice) == 0){ - MallRollPerk mallRollPerk = new MallRollPerk(); - mallRollPerk.setMemberId(memberId); - mallRollPerk.setState(1); - mallRollPerk.setRollId(mallGoods.getLevelThreePrice().longValue()); - mallRollPerkMapper.insert(mallRollPerk); - } - //赠送积分 - BigDecimal levelOnePrice = mallGoods.getLevelOnePrice(); - if(BigDecimal.ZERO.compareTo(levelOnePrice) <= 0){ - memberWalletService.add(levelOnePrice, memberId, "score"); + //是否送券 1:是 2:否 + BigDecimal levelTwoPrice = mallGoods.getLevelTwoPrice(); + if(BigDecimal.ONE.compareTo(levelTwoPrice) == 0){ + MallRollPerk mallRollPerk = new MallRollPerk(); + mallRollPerk.setMemberId(memberId); + mallRollPerk.setState(1); + mallRollPerk.setRollId(mallGoods.getLevelThreePrice().longValue()); + mallRollPerkMapper.insert(mallRollPerk); + } + //赠送积分 + BigDecimal levelOnePrice = mallGoods.getLevelOnePrice(); + if(BigDecimal.ZERO.compareTo(levelOnePrice) <= 0){ + memberWalletService.add(levelOnePrice, memberId, "score"); - mallMoneyFlowService.addMoneyFlow(memberId, levelOnePrice, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), - mallOrderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); + mallMoneyFlowService.addMoneyFlow(memberId, levelOnePrice, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), + mallOrderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue(),"赠送积分",2); + } } } } @@ -444,13 +511,16 @@ mallMemberClass.setOrderId(orderId); mallMemberClass.setClassName(goodsName); mallMemberClass.setClassPic(skuImage); + mallMemberClass.setClassDec(mallGoods.getGoodsIntrodution()); mallMemberClass.setClassUrl(mallGoods.getVideoUrl()); + mallMemberClass.setCreateTime(DateUtil.date()); mallMemberClassMapper.insert(mallMemberClass); return; }else if(5 == isNormal){ //民宿卷 MallMemberHouse mallMemberHouse = new MallMemberHouse(); mallMemberHouse.setOrderId(orderId); + mallMemberHouse.setOrderNo(mallOrderInfo.getOrderNo()); mallMemberHouse.setMemberId(memberId); mallMemberHouse.setState(1); mallMemberHouse.setCreateTime(DateUtil.date()); @@ -458,6 +528,7 @@ mallMemberHouse.setUnuseTime(DateUtil.date().offset(DateField.HOUR_OF_DAY,48)); mallMemberHouse.setHouseName(mallGoods.getHouseName()); mallMemberHouse.setHouseAddress(mallGoods.getHouseAddress()); + mallMemberHouse.setHousePic(mallGoods.getThumb()); mallMemberHouseMapper.insert(mallMemberHouse); return; }else{ -- Gitblit v1.9.1