| | |
| | | package cc.mrbird.febs.mall.service.impl; |
| | | |
| | | import cc.mrbird.febs.common.enumerates.AgentLevelEnum; |
| | | import cc.mrbird.febs.common.enumerates.FlowTypeEnum; |
| | | import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; |
| | | import cc.mrbird.febs.common.enumerates.PerkEnum; |
| | | import cc.mrbird.febs.common.utils.AppContants; |
| | | import cc.mrbird.febs.mall.entity.AgentInfo; |
| | | import cc.mrbird.febs.mall.entity.DataDictionaryCustom; |
| | | import cc.mrbird.febs.mall.entity.MallMember; |
| | | import cc.mrbird.febs.mall.entity.MallOrderInfo; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.IAgentService; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberService; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; |
| | | import cc.mrbird.febs.mall.service.IMallAchieveService; |
| | | import cc.mrbird.febs.mall.service.*; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import jdk.nashorn.internal.ir.IfNode; |
| | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author wzy |
| | |
| | | |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | private final MallMemberMapper memberMapper; |
| | | private final MallOrderInfoMapper mallOrderInfoMapper; |
| | | private final MallOrderItemMapper mallOrderItemMapper; |
| | | private final IApiMallMemberWalletService iApiMallMemberWalletService; |
| | | private final IMallMoneyFlowService mallMoneyFlowService; |
| | | private final MallMemberMapper mallMemberMapper; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | /** |
| | | * 团队业绩是否达标 |
| | | * |
| | | * @param mallMember |
| | | * @param |
| | | * @param agentInfo |
| | | * @return |
| | | */ |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void returnMoneyToAgent(Long orderId) { |
| | | /** |
| | | * 1、购买人获得固定比例的积分 |
| | | * 2、直推获取8%的现金->余额,4%的积分->积分 |
| | | * 3、不同代理级别获取不用的比例的现金和积分 |
| | | * 4、董事享受全公司入单分红2%加权(现金) |
| | | * 5、合伙人享全公司入单分红5%加权(现金) |
| | | */ |
| | | //获取当前订单子表信息 |
| | | List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectbyOrderId(orderId); |
| | | if(CollUtil.isEmpty(mallOrderItemList)){ |
| | | return; |
| | | } |
| | | //获取订单中套餐的信息 |
| | | List<MallOrderItem> mallOrderItemIsTCs = mallOrderItemList.stream().filter(mallOrderItem -> mallOrderItem.getIsNormal() == 2).collect(Collectors.toList()); |
| | | if(CollUtil.isEmpty(mallOrderItemIsTCs)){ |
| | | return; |
| | | } |
| | | //获取订单中套餐总数金额 |
| | | BigDecimal amountTC = mallOrderItemIsTCs.stream().map(MallOrderItem::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | if(BigDecimal.ZERO.compareTo(amountTC) >= 0){ |
| | | return; |
| | | } |
| | | MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId); |
| | | String orderNo = mallOrderInfo.getOrderNo(); |
| | | //购买人 |
| | | Long memberId = mallOrderInfo.getMemberId(); |
| | | MallMember mallMember = mallMemberMapper.selectById(memberId); |
| | | |
| | | /** |
| | | * 1、购买人获得固定比例的积分 |
| | | * = amountTC * 固定比例 |
| | | */ |
| | | DataDictionaryCustom buySetMealPerkPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | PerkEnum.BUY_SET_MEAL_PERK_PERCENT.getType(), |
| | | PerkEnum.BUY_SET_MEAL_PERK_PERCENT.getCode()); |
| | | if(ObjectUtil.isNotEmpty(buySetMealPerkPercentDic)){ |
| | | BigDecimal buySetMealPerkPercent = new BigDecimal(buySetMealPerkPercentDic.getValue() == null ? "0" : buySetMealPerkPercentDic.getValue()); |
| | | //购买人获得的积分数量 |
| | | BigDecimal buySetMealPerk = buySetMealPerkPercent.multiply(AppContants.PERCENTAGE).multiply(amountTC).setScale(2, BigDecimal.ROUND_DOWN); |
| | | //增加积分 |
| | | iApiMallMemberWalletService.add(buySetMealPerk,memberId,"score"); |
| | | //增加一个获得积分的流水记录 |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | memberId, |
| | | buySetMealPerk, |
| | | MoneyFlowTypeEnum.BUY_SET_MEAL_PERK.getValue(), |
| | | orderNo, |
| | | FlowTypeEnum.SCORE.getValue(), |
| | | AppContants.IS_RETURN_YES); |
| | | } |
| | | |
| | | /** |
| | | * 2、直推获取8%的现金->余额,4%的积分->积分 |
| | | */ |
| | | if(ObjectUtil.isNotEmpty(mallMember.getReferrerId())){ |
| | | String referrerId = mallMember.getReferrerId(); |
| | | MallMember mallMemberDirect = mallMemberMapper.selectInfoByInviteId(referrerId); |
| | | Long directMemberId = mallMemberDirect.getId(); |
| | | DataDictionaryCustom directCashPerkPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | PerkEnum.DIRECT_CASH_PERK_PERCENT.getType(), |
| | | PerkEnum.DIRECT_CASH_PERK_PERCENT.getCode()); |
| | | if(ObjectUtil.isNotEmpty(directCashPerkPercentDic)){ |
| | | BigDecimal directCashPerkPercent = new BigDecimal(directCashPerkPercentDic.getValue() == null ? "0" : directCashPerkPercentDic.getValue()); |
| | | //获得的现金数量 |
| | | BigDecimal directCashPerk = directCashPerkPercent.multiply(AppContants.PERCENTAGE).multiply(amountTC).setScale(2, BigDecimal.ROUND_DOWN); |
| | | //增加余额 |
| | | iApiMallMemberWalletService.add(directCashPerk,directMemberId,"balance"); |
| | | //增加一个获得现金的流水记录 |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | directMemberId, |
| | | directCashPerk, |
| | | MoneyFlowTypeEnum.DIRECT_CASH_PERK.getValue(), |
| | | orderNo, |
| | | FlowTypeEnum.BALANCE.getValue(), |
| | | AppContants.IS_RETURN_YES); |
| | | } |
| | | DataDictionaryCustom directScorePerkPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | PerkEnum.DIRECT_SCORE_PERK_PERCENT.getType(), |
| | | PerkEnum.DIRECT_SCORE_PERK_PERCENT.getCode()); |
| | | if(ObjectUtil.isNotEmpty(directScorePerkPercentDic)){ |
| | | BigDecimal directScorePerkPercent = new BigDecimal(directScorePerkPercentDic.getValue() == null ? "0" : directScorePerkPercentDic.getValue()); |
| | | //获得的积分数量 |
| | | BigDecimal directScorePerk = directScorePerkPercent.multiply(AppContants.PERCENTAGE).multiply(amountTC).setScale(2, BigDecimal.ROUND_DOWN); |
| | | //增加余额 |
| | | iApiMallMemberWalletService.add(directScorePerk,directMemberId,"score"); |
| | | //增加一个获得积分的流水记录 |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | directMemberId, |
| | | directScorePerk, |
| | | MoneyFlowTypeEnum.DIRECT_SCORE_PERK.getValue(), |
| | | orderNo, |
| | | FlowTypeEnum.SCORE.getValue(), |
| | | AppContants.IS_RETURN_YES); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 4、董事享受全公司入单分红2%加权(现金) |
| | | */ |
| | | // mallMemberMapper.selectMemberWithLevel() |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void rankReturnMoney(Long orderId) { |