From 13e710cac7ce8ac3438aee3123d964cfe0ad4055 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 06 Apr 2023 17:11:40 +0800
Subject: [PATCH] 测试环境
---
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 179 +++++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 119 insertions(+), 60 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 d6c09a6..7d568b7 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
@@ -1,9 +1,6 @@
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.enumerates.*;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
@@ -184,85 +181,147 @@
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);
- }
+ perkMember(memberId,
+ PerkEnum.BUY_SET_MEAL_PERK_PERCENT,
+ amountTC,
+ "score",
+ MoneyFlowTypeEnum.BUY_SET_MEAL_PERK.getValue(),
+ FlowTypeEnum.SCORE.getValue(),
+ orderNo);
/**
* 2、直推获取8%的现金->余额,4%的积分->积分
*/
+ MallMember mallMember = mallMemberMapper.selectById(memberId);
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);
- }
+
+ perkMember(directMemberId,
+ PerkEnum.DIRECT_CASH_PERK_PERCENT,
+ amountTC,
+ "balance",
+ MoneyFlowTypeEnum.DIRECT_CASH_PERK.getValue(),
+ FlowTypeEnum.BALANCE.getValue(),
+ orderNo);
+
+ perkMember(directMemberId,
+ PerkEnum.DIRECT_SCORE_PERK_PERCENT,
+ amountTC,
+ "score",
+ MoneyFlowTypeEnum.DIRECT_SCORE_PERK.getValue(),
+ FlowTypeEnum.SCORE.getValue(),
+ orderNo);
}
/**
* 4、董事享受全公司入单分红2%加权(现金)
*/
-// mallMemberMapper.selectMemberWithLevel()
+ List<MallMember> mallMembersDirectors = mallMemberMapper.selectDirectorsOrStoreMaster(1);
+ if(CollUtil.isNotEmpty(mallMembersDirectors)){
+ perkMembersLevel(mallMembersDirectors,
+ PerkEnum.DIRECTOR_CASH_PERK_PERCENT,
+ amountTC,
+ "balance",
+ MoneyFlowTypeEnum.DIRECTOR_CASH_PERK.getValue(),
+ FlowTypeEnum.BALANCE.getValue(),
+ orderNo);
+ }
+ /**
+ * 5、合伙人享全公司入单分红5%加权(现金)
+ */
+ List<MallMember> mallMemberPartners = mallMemberMapper.selectDirectorsOrStoreMaster(3);
+ if(CollUtil.isNotEmpty(mallMemberPartners)){
+ perkMembersLevel(mallMemberPartners,
+ PerkEnum.PARTNER_CASH_PERK_PERCENT,
+ amountTC,
+ "balance",
+ MoneyFlowTypeEnum.PARTNER_CASH_PERK.getValue(),
+ FlowTypeEnum.BALANCE.getValue(),
+ orderNo);
+ }
+
+ /**
+ *
+ */
}
+ /**
+ * 给某一个用户根据订单金额去加权平分
+ * @param memberId 用户ID
+ * @param perkEnum 比例的枚举值
+ * @param amountTC 总金额
+ * @param walletField 类型:score:积分 balance:余额
+ * @param type 流水类型
+ * @param flowType 流水分类
+ * @param orderNo 订单编号
+ */
+ private void perkMember(Long memberId,PerkEnum perkEnum,BigDecimal amountTC,String walletField,int type,int flowType,String orderNo){
+ DataDictionaryCustom perkEnumDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ perkEnum.getType(),
+ perkEnum.getCode());
+ if(ObjectUtil.isNotEmpty(perkEnumDic)){
+ BigDecimal perkEnumDicPercent = new BigDecimal(perkEnumDic.getValue() == null ? "0" : perkEnumDic.getValue());
+ //获得数量
+ BigDecimal perkEnumDicPercentPerk = perkEnumDicPercent.multiply(AppContants.PERCENTAGE).multiply(amountTC).setScale(2, BigDecimal.ROUND_DOWN);
+ //增加
+ iApiMallMemberWalletService.add(perkEnumDicPercentPerk,memberId,walletField);
+ //增加一个流水记录
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ perkEnumDicPercentPerk,
+ type,
+ orderNo,
+ flowType,
+ AppContants.IS_RETURN_YES);
+ }
+ }
+ /**
+ * 按照级别,根据订单金额去加权平分
+ * @param mallMembers 用户
+ * @param perkEnum 比例的枚举值
+ * @param amountTC 总金额
+ * @param walletField 类型:score:积分 balance:余额
+ * @param type 流水类型
+ * @param flowType 流水分类
+ * @param orderNo 订单编号
+ */
+ private void perkMembersLevel(List<MallMember> mallMembers,PerkEnum perkEnum,BigDecimal amountTC,String walletField,int type,int flowType,String orderNo){
+ DataDictionaryCustom perkEnumDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ perkEnum.getType(),
+ perkEnum.getCode());
+ if(ObjectUtil.isNotEmpty(perkEnumDic)){
+ BigDecimal perkEnumDicPercent = new BigDecimal(perkEnumDic.getValue() == null ? "0" : perkEnumDic.getValue());
+ //获得的现金
+ BigDecimal perkEnumDicPercentPerkSum = perkEnumDicPercent.multiply(AppContants.PERCENTAGE).multiply(amountTC).setScale(2, BigDecimal.ROUND_DOWN);
+ //然后董事平分
+ BigDecimal perkEnumDicPercentPerk = perkEnumDicPercentPerkSum.divide(new BigDecimal(mallMembers.size()), 2, BigDecimal.ROUND_DOWN);
+ if(perkEnumDicPercentPerk.compareTo(BigDecimal.ZERO) > 0){
+ for(MallMember mallMember : mallMembers){
+ Long memberId = mallMember.getId();
+ //增加余额
+ iApiMallMemberWalletService.add(perkEnumDicPercentPerk,memberId,walletField);
+ //增加一个获得现金的流水记录
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ perkEnumDicPercentPerk,
+ type,
+ orderNo,
+ flowType,
+ AppContants.IS_RETURN_YES);
+ }
+ }
+ }
+ }
@Override
public void rankReturnMoney(Long orderId) {
--
Gitblit v1.9.1