## 顾客不计算奖金不会获得奖金;
This commit is contained in:
parent
8833f062e6
commit
a96b70939e
|
@ -1,220 +1,12 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.hzs.activity.base.IActivityServiceApi;
|
||||
import com.hzs.common.core.constant.TableNameConstants;
|
||||
import com.hzs.common.core.constant.msg.BonusMsgConstants;
|
||||
import com.hzs.common.core.enums.*;
|
||||
import com.hzs.common.core.utils.ComputeUtil;
|
||||
import com.hzs.common.core.utils.DateUtils;
|
||||
import com.hzs.common.domain.activity.recommend.AcRepurSharOrderType;
|
||||
import com.hzs.common.domain.activity.recommend.ext.AcRepurSharRuleConfigExt;
|
||||
import com.hzs.common.domain.bonus.BdBonusDeduct;
|
||||
import com.hzs.common.domain.member.base.CuMemberAgent;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonus;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusDetail;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
import com.hzs.common.domain.sale.order.SaOrder;
|
||||
import com.hzs.common.domain.system.config.BdBonusCloud;
|
||||
import com.hzs.bonus.base.service.ICuMemberAgentService;
|
||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||
import com.hzs.system.sys.dto.BdCurrencyDTO;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description:
|
||||
* @Author: sui q
|
||||
* @Time: 2023/1/4 17:19
|
||||
* @Classname: BonusSettleAgentHandle
|
||||
* @PackageName: com.hzs.member.bonus.service.impl
|
||||
* 计算云代奖金
|
||||
*/
|
||||
@Component
|
||||
public class BonusSettleAgentHandle extends BonusSettleHandle {
|
||||
|
||||
@DubboReference
|
||||
IActivityServiceApi iActivityServiceApi;
|
||||
|
||||
// 代理直推 推荐给多少钱 代理复购 区域 所有订单的1%
|
||||
@Autowired
|
||||
private ICuMemberAgentService iCuMemberAgentService;
|
||||
|
||||
/**
|
||||
* 计算嗨粉奖金
|
||||
*
|
||||
* @param period 期间
|
||||
* @param bonusConfigDTO 参数
|
||||
* @param cuMemberBonusMap 所有计算出来的奖金汇总
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateCloudAgentAreaBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
// 云代区域 月奖
|
||||
// 查询时间范围内订单
|
||||
Date settleDate = DateUtils.parseStringToDate(settleDateStr);
|
||||
// 上个月最后一天
|
||||
settleDate = DateUtils.beforeMonthLastDate(settleDate);
|
||||
// 结算月第一天
|
||||
Date currentMonthFirstDate = DateUtils.currentMonthFirstDate(settleDate);
|
||||
// 结算月下月第一天
|
||||
Date nextMonthFirstDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleDate);
|
||||
List<SaOrder> currentMonthOrderList = iSaOrderServiceApi.querySaOrderByDayForCloud(currentMonthFirstDate, nextMonthFirstDate).getData();
|
||||
// 查询月末会员状态
|
||||
Integer lastPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDateStr).getPkId();
|
||||
String currentSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + lastPeriod;
|
||||
Set<Long> pkMemberSet = new HashSet<>();
|
||||
// 获取配置
|
||||
Map<String, BdBonusCloud> bdBonusCloudMap = bonusConfigDTO.getBonusCloudMap();
|
||||
if (bdBonusCloudMap == null) {
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
// 计算奖金 云代首购 首购订单1% 云代复购 复购订单1%
|
||||
// 查询会员,查询出所有代理的会员
|
||||
Map<String, List<CuMemberAgent>> cuMemberAgentMap = iCuMemberAgentService.queryCuMemberAgent();
|
||||
List<SaOrder> saOrderList = new ArrayList<>();
|
||||
for (SaOrder saOrder : currentMonthOrderList) {
|
||||
if (saOrder.getPkCountry() == null || saOrder.getRecProvince() == null || saOrder.getRecCity() == null) {
|
||||
continue;
|
||||
}
|
||||
String key = saOrder.getPkCountry().toString() + saOrder.getRecProvince() + saOrder.getRecCity();
|
||||
if (!cuMemberAgentMap.containsKey(key)) {
|
||||
continue;
|
||||
} else {
|
||||
saOrderList.add(saOrder);
|
||||
}
|
||||
pkMemberSet.add(saOrder.getPkMember());
|
||||
List<CuMemberAgent> cuMemberAgentList = cuMemberAgentMap.get(key);
|
||||
cuMemberAgentList.forEach(cuMemberAgent ->
|
||||
pkMemberSet.add(cuMemberAgent.getPkMember()));
|
||||
}
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = iCuMemberTreeService.batchQueryMemberSettleByMemberPk(currentSettleTableName, pkMemberSet);
|
||||
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap = new HashMap<>();
|
||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
Map<String, BdCurrencyDTO> currencyDtoMap = bonusConfigDTO.getCurrencyDtoMap();
|
||||
for (SaOrder saOrder : saOrderList) {
|
||||
String key = saOrder.getPkCountry().toString() + saOrder.getRecProvince().toString() + saOrder.getRecCity().toString();
|
||||
List<CuMemberAgent> cuMemberAgentList = cuMemberAgentMap.get(key);
|
||||
BigDecimal exchangeRate = BigDecimal.ONE;
|
||||
if (currencyDtoMap.containsKey(saOrder.getPkCountry().toString() + saOrder.getPkRate())) {
|
||||
exchangeRate = currencyDtoMap.get(saOrder.getPkCountry().toString() + saOrder.getPkRate()).getInExchangeRate();
|
||||
}
|
||||
// 云代首购
|
||||
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrder.getPkMember());
|
||||
if (sourceMemberSettleExt == null) {
|
||||
continue;
|
||||
}
|
||||
if (EOrderType.REGISTER_ORDER.getValue() == saOrder.getOrderType() ||
|
||||
EOrderType.UPGRADE_ORDER.getValue() == saOrder.getOrderType() ||
|
||||
Objects.equals(EOrderType.FICTITIOUS_ORDER.getValue(), saOrder.getOrderType()) ||
|
||||
Objects.equals(EOrderType.SPECIAL_REGISTER_ORDER.getValue(), saOrder.getOrderType()) ||
|
||||
Objects.equals(EOrderType.SPECIAL_UPGRADE_ORDER.getValue(), saOrder.getOrderType())) {
|
||||
BdBonusCloud bdBonusCloud = bdBonusCloudMap.get(saOrder.getPkCountry().toString() + ECloudType.CLOUD_TYPE_FIRST_PURCHASE.getValue());
|
||||
for (CuMemberAgent cuMemberAgent : cuMemberAgentList) {
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(cuMemberAgent.getPkMember());
|
||||
if (targetMemberSettleExt == null || ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() ||
|
||||
EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() ||
|
||||
EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
continue;
|
||||
}
|
||||
if (cuMemberAgent.getAgentGrade() == 7 && cuMemberAgent.getAgentCounty() != null && saOrder.getRecCounty() != null &&
|
||||
!Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) {
|
||||
continue;
|
||||
} else {
|
||||
if (cuMemberAgent.getAgentGrade() == 8 && cuMemberAgent.getAgentCounty() != null &&
|
||||
!Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrder, targetMemberSettleExt);
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrder, targetMemberSettleExt, cuMemberBonus);
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(bdBonusCloud.getCloudRatio());
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.CLOUD_AGENT_FIRST_PURCHASE.getValue()));
|
||||
cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), bdBonusCloud.getCloudRatio()));
|
||||
cloudAgentRemark(saOrder, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt, BonusMsgConstants.CLOUD_AGENT_FIRST_REPURCHASE);
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrder.getOrderAmount(), exchangeRate);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setCloudPurIncome(ComputeUtil.computeAdd(cuMemberBonus.getCloudPurIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 云代复购
|
||||
BdBonusCloud bdBonusCloud = bdBonusCloudMap.get(saOrder.getPkCountry().toString() + ECloudType.CLOUD_TYPE_PURCHASE.getValue());
|
||||
for (CuMemberAgent cuMemberAgent : cuMemberAgentList) {
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(cuMemberAgent.getPkMember());
|
||||
if (targetMemberSettleExt == null || ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() ||
|
||||
EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() ||
|
||||
EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
continue;
|
||||
}
|
||||
if (cuMemberAgent.getAgentGrade() == 7 && cuMemberAgent.getAgentCounty() != null && saOrder.getRecCounty() != null &&
|
||||
!Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) {
|
||||
continue;
|
||||
} else {
|
||||
if (cuMemberAgent.getAgentGrade() == 8 && cuMemberAgent.getAgentCounty() != null &&
|
||||
!Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrder, targetMemberSettleExt);
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrder, targetMemberSettleExt, cuMemberBonus);
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(bdBonusCloud.getCloudRatio());
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.CLOUD_AGENT_REPURCHASE.getValue()));
|
||||
cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), bdBonusCloud.getCloudRatio()));
|
||||
cloudAgentRemark(saOrder, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt, BonusMsgConstants.CLOUD_AGENT_REPURCHASE);
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrder.getOrderAmount(), exchangeRate);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setCloudRepurIncome(ComputeUtil.computeAdd(cuMemberBonus.getCloudRepurIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 复购券均分收益规则
|
||||
List<AcRepurSharRuleConfigExt> repurSharRuleConfigExtList = iActivityServiceApi.queryRepurSharRuleConfig(currentMonthFirstDate, nextMonthFirstDate).getData();
|
||||
if (CollectionUtil.isNotEmpty(repurSharRuleConfigExtList)) {
|
||||
for (AcRepurSharRuleConfigExt acRepurSharRuleConfigExt : repurSharRuleConfigExtList) {
|
||||
List<Integer> orderTypeList = acRepurSharRuleConfigExt.getRepurSharOrderTypeList().stream().distinct().map(AcRepurSharOrderType::getOrderType).collect(Collectors.toList());
|
||||
List<SaOrder> orderList = iSaOrderServiceApi.querySaOrderByTimeForCouponShare(settleDate, nextMonthFirstDate, orderTypeList,
|
||||
acRepurSharRuleConfigExt.getOrderAmount(), acRepurSharRuleConfigExt.getOrderAchieve(), acRepurSharRuleConfigExt.getPkCountry()).getData();
|
||||
if (CollectionUtil.isNotEmpty(orderList)) {
|
||||
Set<Long> memberSet = orderList.stream().distinct().map(SaOrder::getPkMember).collect(Collectors.toSet());
|
||||
cuMemberSettleExtList = iCuMemberTreeService.batchQueryMemberSettleByMemberPk(currentSettleTableName, memberSet);
|
||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
for (SaOrder saOrder : orderList) {
|
||||
BigDecimal exchangeRate = BigDecimal.ONE;
|
||||
if (currencyDtoMap.containsKey(saOrder.getPkCountry().toString() + saOrder.getPkRate())) {
|
||||
exchangeRate = currencyDtoMap.get(saOrder.getPkCountry().toString() + saOrder.getPkRate()).getInExchangeRate();
|
||||
}
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrder.getPkMember());
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrder, targetMemberSettleExt);
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrder, targetMemberSettleExt, cuMemberBonus);
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(acRepurSharRuleConfigExt.getRatioValue());
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_COUPONS_SHARE.getValue()));
|
||||
cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), acRepurSharRuleConfigExt.getRatioValue()));
|
||||
shareCouponRemark(cuMemberBonusDetail, DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, settleDate));
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrder.getOrderAmount(), exchangeRate);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setRepurCouponShare(cuMemberBonusDetail.getPretaxIncome());
|
||||
setRepurchaseCouponTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -96,9 +96,11 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
if (targetMemberSettleExt == null) {
|
||||
return null;
|
||||
}
|
||||
// 死点 或 停算收益 没有奖金
|
||||
// 死点 或 停算收益 或 顾客 没有奖金
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员不满足计算奖金条件,跳过
|
||||
return null;
|
||||
}
|
||||
// 当前国家是否有该奖项
|
||||
|
@ -347,9 +349,11 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
for (int i = 1; i <= startTouch; i++) {
|
||||
for (CuMemberSettleExt sourceMemberSettleExt : cuMemberSettleExtList) {
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(sourceMemberSettleExt.getPkPlaceParent());
|
||||
if (targetMemberSettleExt == null
|
||||
if (null == targetMemberSettleExt
|
||||
|| ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员不满足计算奖金条件,跳过
|
||||
continue;
|
||||
}
|
||||
// 验证是否有当前奖金项
|
||||
|
@ -376,7 +380,9 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(sourceMemberSettleExt.getPkPlaceParent());
|
||||
if (targetMemberSettleExt == null
|
||||
|| ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员不满足计算奖金条件,跳过
|
||||
continue;
|
||||
}
|
||||
// 验证是否有当前奖金项
|
||||
|
@ -432,10 +438,12 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
for (CuMemberSettleExt cuMemberSettleExt : cuMemberSettleExtList) {
|
||||
// 数据已经准备好了,肯定有值,map中是实际的值,先计算新增,然后根据新增结算计算碰次,list是为了存储碰次的顺序
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(cuMemberSettleExt.getPkPlaceParent());
|
||||
if (targetMemberSettleExt == null
|
||||
if (null == targetMemberSettleExt
|
||||
|| ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
|| EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员不满足计算奖金条件,跳过
|
||||
continue;
|
||||
}
|
||||
// 验证是否计算奖金
|
||||
|
@ -597,8 +605,9 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
}
|
||||
pkMember = targetMemberSettleExt.getPkParent();
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
// 会员状态不正常 或者 停算收益 直接跳过
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员状态不正常 或者 停算收益 或 顾客等级 直接跳过
|
||||
continue;
|
||||
}
|
||||
if (firstBool) {
|
||||
|
@ -805,7 +814,8 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
if (targetMemberSettleExt == null
|
||||
|| ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| ERegistrationAuthority.SERVICE.getValue() != targetMemberSettleExt.getRegisterAuthority()) {
|
||||
|| ERegistrationAuthority.SERVICE.getValue() != targetMemberSettleExt.getRegisterAuthority()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 非正常会员、停算收益、不是服务中心,都不进行处理
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -1,391 +1,12 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import com.hzs.common.core.constant.BonusFieldConstants;
|
||||
import com.hzs.common.core.enums.*;
|
||||
import com.hzs.common.core.utils.ComputeUtil;
|
||||
import com.hzs.common.core.utils.reflect.ReflectUtils;
|
||||
import com.hzs.common.domain.bonus.BdBonusDeduct;
|
||||
import com.hzs.common.domain.member.base.CuAwardsControl;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonus;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusDetail;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||
import com.hzs.system.config.dto.BonusHiPinkDTO;
|
||||
import com.hzs.system.config.dto.RangeDTO;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Description: 计算嗨粉订单
|
||||
* @Author: sui q
|
||||
* @Time: 2023/1/4 13:38
|
||||
* @Classname: BonusSettleHiFunHandle
|
||||
* @PackageName: com.hzs.member.bonus.service.impl
|
||||
* 计算嗨粉订单
|
||||
*/
|
||||
@Component
|
||||
public class BonusSettleHiFunHandle extends BonusSettleHandle {
|
||||
|
||||
/**
|
||||
* @param period 期间
|
||||
* @param bonusConfigDTO 参数
|
||||
* @param hiFunSaOrderList 复购订单
|
||||
* @param cuMemberBonusMap 所有计算出来的奖金汇总
|
||||
* @Description: 计算嗨粉奖金
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/10 14:17
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateHiFunPushBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, Map<String, RangeDTO> rangeDtoMap, Map<String, BdAwards> awardsMap,
|
||||
BonusConfigDTO bonusConfigDTO, List<SaOrderExt> hiFunSaOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
// 根据订单明细开始计算奖金,计算嗨粉推荐奖
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
// cuMemberSettleExtMap 需要含自己
|
||||
getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, hiFunSaOrderList);
|
||||
// 拆分为2种,一种是嗨粉,一种是1000pv的,奖金不一样
|
||||
List<SaOrderExt> oldHaiFunOrderList = new ArrayList<>();
|
||||
// List<SaOrderExt> newHaiFunOrderList = new ArrayList<>();
|
||||
for (SaOrderExt saOrderExt : hiFunSaOrderList) {
|
||||
if (EOrderTypeExtend.NORMAL.getValue() == saOrderExt.getOrderTypeExtend()) {
|
||||
oldHaiFunOrderList.add(saOrderExt);
|
||||
}
|
||||
}
|
||||
// 原来413嗨粉推荐海粉极差收益
|
||||
oldHaiFunOrderList.forEach(saOrderExt -> {
|
||||
List<CuMemberBonusDetail> bonusDetailList = calculateHiFunPushBonusOne(cuMemberSettleExtMap, rangeDtoMap, awardsMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, cuAwardsControlMap);
|
||||
if (bonusDetailList.size() > 0) {
|
||||
cuMemberBonusDetailList.addAll(bonusDetailList);
|
||||
}
|
||||
});
|
||||
// // 新5680 推荐海粉极差收益
|
||||
// newHaiFunOrderList.forEach(saOrderExt -> {
|
||||
// // 海粉极差
|
||||
// List<CuMemberBonusDetail> bonusDetailList = calculateNewHiFunPushBonusOne(cuMemberSettleExtMap, rangeDtoMap, awardsMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, cuAwardsControlMap);
|
||||
// if (bonusDetailList.size() > 0) {
|
||||
// cuMemberBonusDetailList.addAll(bonusDetailList);
|
||||
// }
|
||||
// if(saOrderExt.getPkMember().equals(saOrderExt.getPkCreator())){
|
||||
// return;
|
||||
// }
|
||||
// // 给注册人复购券
|
||||
// // 获得奖金
|
||||
// CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
// CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkCreator());
|
||||
// if (targetMemberSettleExt == null || validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_COUPONS.getValue())) {
|
||||
// return;
|
||||
// }
|
||||
// CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
// CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus);
|
||||
// // 计算类型
|
||||
// cuMemberBonusDetail.setCalType(ECalType.VALUE.getValue());
|
||||
// // 计算值
|
||||
// cuMemberBonusDetail.setCalValue(BigDecimal.ZERO);
|
||||
// cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_COUPONS.getValue()));
|
||||
// cuMemberBonusDetail.setPretaxIncome(BigDecimal.valueOf(15.46875));
|
||||
// BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
// if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
// cuMemberBonus.setRepurCoupon(ComputeUtil.computeAdd(cuMemberBonus.getRepurCoupon(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
// setRepurchaseCouponTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
// }
|
||||
// repurchaseCouponsRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt);
|
||||
// cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
// });
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param settleTableName 结算表
|
||||
* @param period 期间
|
||||
* @param bonusConfigDTO 参数
|
||||
* @param haiFunOrderList 订单列表
|
||||
* @param cuMemberBonusMap 所有计算出来的奖金汇总
|
||||
* @Description: 计算报单服务费
|
||||
* @return: List<CuMemberBonusCoach>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 14:14
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateHaiFunBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, BonusConfigDTO bonusConfigDTO,
|
||||
List<SaOrderExt> haiFunOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
// 先过滤数据,验证报单人是否在网体列表中,不在需要从数据库中查询
|
||||
Set<Long> haiFunMemberSet = new HashSet<>();
|
||||
haiFunOrderList.forEach(saOrderExt -> {
|
||||
CuMemberSettleExt cuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
if (cuMemberSettleExt == null || cuMemberSettleExtMap.get(cuMemberSettleExt.getPkParent()) == null) {
|
||||
haiFunMemberSet.add(saOrderExt.getPkMember());
|
||||
}
|
||||
});
|
||||
if (haiFunMemberSet.size() > 0) {
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = iCuMemberTreeService.batchQueryMemberSettleParentByMemberPk(settleTableName, haiFunMemberSet);
|
||||
// 初始化父类网体的值
|
||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
}
|
||||
// 计算海粉推荐
|
||||
for (SaOrderExt saOrderExt : haiFunOrderList) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetails = calculateHaiFunBonusOne(cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt);
|
||||
if (cuMemberBonusDetails.size() > 0) {
|
||||
cuMemberBonusDetailList.addAll(cuMemberBonusDetails);
|
||||
}
|
||||
}
|
||||
// 查询会员
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 计算海粉推荐奖
|
||||
* @return: CuMemberBonusDetail
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/8 17:22
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateHaiFunBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
if (sourceMemberSettleExt == null) {
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(sourceMemberSettleExt.getPkParent());
|
||||
if (targetMemberSettleExt == null || ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() ||
|
||||
EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
// 验证是否有奖金
|
||||
// if (validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HAI_DOU_INCOME.getValue())) {
|
||||
// return cuMemberBonusDetailList;
|
||||
// }
|
||||
for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) {
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
// 海粉直推奖金明细
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus);
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(BigDecimal.ZERO);
|
||||
// cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HAI_DOU_INCOME.getValue()));
|
||||
cuMemberBonusDetail.setPretaxIncome(saOrderItemsExt.getShareAchieve());
|
||||
// 收益占比
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
haiFunRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setHaiFunIncome(ComputeUtil.computeAdd(cuMemberBonus.getHaiFunIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
BigDecimal realIncome = ReflectUtils.invokeGetter(cuMemberBonusDetail, BonusFieldConstants.REAL_INCOME);
|
||||
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
|
||||
}
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
}
|
||||
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 计算嗨粉奖金,嗨粉推荐,嗨粉极差
|
||||
* @return: List<CuMemberBonusDetail>
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/9 10:25
|
||||
*/
|
||||
protected List<CuMemberBonusDetail> calculateHiFunPushBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, Map<String, RangeDTO> rangeDtoMap, Map<String, BdAwards> awardsMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
if (sourceMemberSettleExt == null) {
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
BigDecimal waresNum = ComputeUtil.computeDivide(saOrderExt.getOrderAmount(), BigDecimal.valueOf(413));
|
||||
sourceMemberSettleExt.setHiFunAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
sourceMemberSettleExt.setHiFunPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunPv(), saOrderExt.getOrderAchieve()));
|
||||
sourceMemberSettleExt.setHiFunNewAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
sourceMemberSettleExt.setHiFunNewPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewPv(), saOrderExt.getOrderAchieve()));
|
||||
Map<Integer, List<BonusHiPinkDTO>> bonusHiPinkDtoMap = bonusConfigDTO.getBonusHiPinkDtoMap();
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference());
|
||||
// 找到最大的奖金
|
||||
BigDecimal maxBonusValue = BigDecimal.ZERO;
|
||||
List<BonusHiPinkDTO> bonusHiPinkDTOList = bonusHiPinkDtoMap.get(saOrderExt.getPkCountry());
|
||||
for (BonusHiPinkDTO bonusHiPinkDTO : bonusHiPinkDTOList) {
|
||||
if (ComputeUtil.compareGreaterThan(bonusHiPinkDTO.getBonusValue(), maxBonusValue)) {
|
||||
maxBonusValue = bonusHiPinkDTO.getBonusValue();
|
||||
}
|
||||
}
|
||||
BigDecimal income = BigDecimal.ZERO;
|
||||
boolean flag = false;
|
||||
int i = 0;
|
||||
while (targetMemberSettleExt != null && targetMemberSettleExt.getPkParent() != 0) {
|
||||
// 嗨粉直推奖励的配置,从第一级开始获取
|
||||
BonusHiPinkDTO startBonusHiPinkDto = bonusHiPinkDTOList.get(i);
|
||||
targetMemberSettleExt = getCuMemberTree(cuMemberSettleExtMap, rangeDtoMap, awardsMap, targetMemberSettleExt, startBonusHiPinkDto, cuAwardsControlMap);
|
||||
if (targetMemberSettleExt == null) {
|
||||
break;
|
||||
}
|
||||
String key = getMemberKey(awardsMap, targetMemberSettleExt);
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() ||
|
||||
validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue())) {
|
||||
targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent());
|
||||
continue;
|
||||
}
|
||||
for (int x = i; x < bonusHiPinkDTOList.size(); x++) {
|
||||
BonusHiPinkDTO bonusHiPinkDTO = bonusHiPinkDTOList.get(x);
|
||||
String hiKey = bonusHiPinkDTO.getRangeType().toString() + bonusHiPinkDTO.getPkLevel();
|
||||
if (key.equals(hiKey)) {
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
BigDecimal bonusIncome = ComputeUtil.computeSubtract(bonusHiPinkDTO.getBonusValue(), income);
|
||||
bonusIncome = ComputeUtil.computeMultiply(bonusIncome, waresNum);
|
||||
if (ComputeUtil.compareValue(BigDecimal.ZERO, bonusIncome)) {
|
||||
// flag = true;
|
||||
break;
|
||||
}
|
||||
// 直推奖金明细
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus);
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue()));
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(bonusHiPinkDTO.getBonusValue());
|
||||
cuMemberBonusDetail.setPretaxIncome(bonusIncome);
|
||||
// 收益占比
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
hiFunRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setHiFunIncome(ComputeUtil.computeAdd(cuMemberBonus.getHiFunIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), cuMemberBonusDetail.getRealIncome()));
|
||||
}
|
||||
income = bonusHiPinkDTO.getBonusValue();
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
if (ComputeUtil.compareEqual(maxBonusValue, bonusHiPinkDTO.getBonusValue())) {
|
||||
flag = true;
|
||||
}
|
||||
if (x < bonusHiPinkDTOList.size() - 1) {
|
||||
i = x + 1;
|
||||
} else {
|
||||
flag = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent());
|
||||
if (flag) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 计算嗨粉奖金,嗨粉推荐,嗨粉极差
|
||||
* @return: List<CuMemberBonusDetail>
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/9 10:25
|
||||
*/
|
||||
protected List<CuMemberBonusDetail> calculateNewHiFunPushBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, Map<String, RangeDTO> rangeDtoMap, Map<String, BdAwards> awardsMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
if (sourceMemberSettleExt == null) {
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
sourceMemberSettleExt.setHiFunAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
sourceMemberSettleExt.setHiFunPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunPv(), saOrderExt.getOrderAchieve()));
|
||||
sourceMemberSettleExt.setHiFunNewAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
sourceMemberSettleExt.setHiFunNewPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewPv(), saOrderExt.getOrderAchieve()));
|
||||
// Map<Integer, List<BonusHiPinkDTO>> bonusHiPinkDtoMap = bonusConfigDTO.getBonusHiPinkDtoMap();
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference());
|
||||
// 找到最大的奖金
|
||||
// BigDecimal maxBonusValue = BigDecimal.ZERO;
|
||||
BigDecimal maxBonusValue = BigDecimal.valueOf(1200);
|
||||
BigDecimal grantBonusValue = BigDecimal.ZERO;
|
||||
// List<BonusHiPinkDTO> bonusHiPinkDTOList = bonusHiPinkDtoMap.get(saOrderExt.getPkCountry());
|
||||
// for (BonusHiPinkDTO bonusHiPinkDTO : bonusHiPinkDTOList) {
|
||||
// if (ComputeUtil.compareGreaterThan(bonusHiPinkDTO.getBonusValue(), maxBonusValue)) {
|
||||
// maxBonusValue = bonusHiPinkDTO.getBonusValue();
|
||||
// }
|
||||
// }
|
||||
// BigDecimal income = BigDecimal.ZERO;
|
||||
Integer gradeValue = EGrade.YOU_KE.getValue();
|
||||
while (targetMemberSettleExt != null && targetMemberSettleExt.getPkParent() != 0) {
|
||||
// 嗨粉直推奖励的配置,从第一级开始获取
|
||||
targetMemberSettleExt = getCuMemberTree(cuMemberSettleExtMap, targetMemberSettleExt, gradeValue);
|
||||
if (targetMemberSettleExt == null) {
|
||||
break;
|
||||
}
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() ||
|
||||
validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue())) {
|
||||
targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent());
|
||||
continue;
|
||||
}
|
||||
BigDecimal memberMaxBonusValue = BigDecimal.ZERO;
|
||||
if (targetMemberSettleExt.getGradeValue() == EGrade.YOU_KE.getValue() || targetMemberSettleExt.getGradeValue() == EGrade.MAKER.getValue()) {
|
||||
memberMaxBonusValue = BigDecimal.valueOf(800);
|
||||
} else if (targetMemberSettleExt.getGradeValue() == EGrade.VIP.getValue()) {
|
||||
memberMaxBonusValue = BigDecimal.valueOf(1000);
|
||||
} else if (targetMemberSettleExt.getGradeValue() == EGrade.S_VIP.getValue()) {
|
||||
memberMaxBonusValue = BigDecimal.valueOf(1200);
|
||||
}
|
||||
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
BigDecimal bonusIncome = ComputeUtil.computeSubtract(memberMaxBonusValue, grantBonusValue);
|
||||
if (ComputeUtil.compareValue(BigDecimal.ZERO, bonusIncome)) {
|
||||
targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent());
|
||||
continue;
|
||||
}
|
||||
// 直推奖金明细
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus);
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue()));
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(BigDecimal.ZERO);
|
||||
cuMemberBonusDetail.setPretaxIncome(bonusIncome);
|
||||
// 收益占比
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
hiFunRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setHiFunIncome(ComputeUtil.computeAdd(cuMemberBonus.getHiFunIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), cuMemberBonusDetail.getRealIncome()));
|
||||
}
|
||||
grantBonusValue = ComputeUtil.computeAdd(grantBonusValue, bonusIncome);
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
if (ComputeUtil.compareEqual(maxBonusValue, grantBonusValue)) {
|
||||
break;
|
||||
} else {
|
||||
targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent());
|
||||
}
|
||||
}
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据极差获取会员
|
||||
*/
|
||||
private CuMemberSettleExt getCuMemberTree(Map<Long, CuMemberSettleExt> cuMemberTreeMap, Map<String, RangeDTO> rangeDtoMap,
|
||||
Map<String, BdAwards> awardsMap, CuMemberSettleExt parentMemberTree, BonusHiPinkDTO bonusHiPinkDTO, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
if (parentMemberTree == null) {
|
||||
return null;
|
||||
}
|
||||
// 获取目标会员的极差配置信息 等级还是奖衔
|
||||
RangeDTO rangeDto = getRangeDto(rangeDtoMap, awardsMap, parentMemberTree, cuAwardsControlMap);
|
||||
// 嗨粉直推奖励的配置,获取目标奖励的配置
|
||||
RangeDTO targetRangeDto = rangeDtoMap.get(bonusHiPinkDTO.getPkCountry().toString() + bonusHiPinkDTO.getRangeType() + bonusHiPinkDTO.getPkLevel());
|
||||
if (rangeDto == null || targetRangeDto == null) {
|
||||
return null;
|
||||
}
|
||||
// 判断目标会员极差奖励,目标会员的极差等级不足 直推奖励的配置,取上一级,一直取到 目标会员的 极差等级>= 直推推荐奖励配置的
|
||||
if (rangeDto.getRangeValue() < targetRangeDto.getRangeValue()) {
|
||||
parentMemberTree = cuMemberTreeMap.get(parentMemberTree.getPkParent());
|
||||
parentMemberTree = getCuMemberTree(cuMemberTreeMap, rangeDtoMap, awardsMap, parentMemberTree, bonusHiPinkDTO, cuAwardsControlMap);
|
||||
}
|
||||
return parentMemberTree;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据极差获取会员
|
||||
*/
|
||||
private CuMemberSettleExt getCuMemberTree(Map<Long, CuMemberSettleExt> cuMemberTreeMap, CuMemberSettleExt parentMemberTree, Integer startGradeValue) {
|
||||
if (parentMemberTree == null) {
|
||||
return null;
|
||||
}
|
||||
// 判断目标会员极差奖励,目标会员的极差等级不足 直推奖励的配置,取上一级,一直取到 目标会员的 极差等级>= 直推推荐奖励配置的
|
||||
if (parentMemberTree.getGradeValue() < startGradeValue) {
|
||||
parentMemberTree = cuMemberTreeMap.get(parentMemberTree.getPkParent());
|
||||
parentMemberTree = getCuMemberTree(cuMemberTreeMap, parentMemberTree, startGradeValue);
|
||||
}
|
||||
return parentMemberTree;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -118,7 +118,9 @@ public class BonusSettleNewExpandHandle extends BonusSettleHandle {
|
|||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(sourceMemberSettleExt.getPkPlaceParent());
|
||||
if (null == targetMemberSettleExt
|
||||
|| ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员不满足计算奖金条件,跳过
|
||||
continue;
|
||||
}
|
||||
// 验证是否有当前奖金项
|
||||
|
@ -146,7 +148,9 @@ public class BonusSettleNewExpandHandle extends BonusSettleHandle {
|
|||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(sourceMemberSettleExt.getPkPlaceParent());
|
||||
if (targetMemberSettleExt == null
|
||||
|| ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员不满足计算奖金条件,跳过
|
||||
continue;
|
||||
}
|
||||
// 验证是否有当前奖金项
|
||||
|
@ -183,7 +187,9 @@ public class BonusSettleNewExpandHandle extends BonusSettleHandle {
|
|||
if (targetMemberSettleExt == null
|
||||
|| ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
|| EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员不满足计算奖金条件,跳过
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -41,9 +41,6 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
|||
@Autowired
|
||||
private BonusSettleFirstPurchaseHandle bonusSettleFirstPurchaseHandle;
|
||||
|
||||
@DubboReference
|
||||
IAcPickServiceApi iAcPickServiceApi;
|
||||
|
||||
List<CuMemberBonusPush> calculateRepurchasePushBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO,
|
||||
Map<Long, CuMemberAssess> cuMemberAssessMap, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
SaOrderExt saOrderExt) {
|
||||
|
@ -60,9 +57,11 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
|||
if (targetMemberSettleExt == null) {
|
||||
break;
|
||||
}
|
||||
// 死点没有奖金
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() ||
|
||||
EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
// 死点 停算 顾客 没有奖金
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员不满足计算奖金条件,跳过
|
||||
pkParent = targetMemberSettleExt.getPkParent();
|
||||
continue;
|
||||
}
|
||||
|
@ -244,9 +243,11 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
|||
for (int i = 1; i <= startTouch; i++) {
|
||||
for (CuMemberSettleExt sourceMemberSettleExt : cuMemberSettleExtList) {
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(sourceMemberSettleExt.getPkPlaceParent());
|
||||
if (targetMemberSettleExt == null
|
||||
if (null == targetMemberSettleExt
|
||||
|| ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员不满足计算奖金条件,跳过
|
||||
continue;
|
||||
}
|
||||
// 验证是否有当前奖金项
|
||||
|
@ -272,9 +273,11 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
|||
for (int i = 1; i <= endTouch; i++) {
|
||||
for (CuMemberSettleExt sourceMemberSettleExt : cuMemberSettleExtList) {
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(sourceMemberSettleExt.getPkPlaceParent());
|
||||
if (targetMemberSettleExt == null
|
||||
if (null == targetMemberSettleExt
|
||||
|| ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员不满足计算奖金条件,跳过
|
||||
continue;
|
||||
}
|
||||
// 验证是否有当前奖金项
|
||||
|
@ -306,10 +309,12 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
|||
for (CuMemberSettleExt cuMemberSettleExt : cuMemberSettleExtList) {
|
||||
// 数据已经准备好了,肯定有值,map中是实际的值,先计算新增,然后根据新增结算计算碰次,list是为了存储碰次的顺序
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(cuMemberSettleExt.getPkPlaceParent());
|
||||
if (targetMemberSettleExt == null
|
||||
if (null == targetMemberSettleExt
|
||||
|| ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|
||||
|| EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
|| EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()
|
||||
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
// 会员不满足计算奖金条件,跳过
|
||||
continue;
|
||||
}
|
||||
// 验证是否计算奖金
|
||||
|
|
|
@ -673,8 +673,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
}
|
||||
|
||||
/*
|
||||
* @description: 执行甩网业绩
|
||||
* @param: null null
|
||||
* 执行甩网业绩
|
||||
**/
|
||||
private List<CuMemberAchieveExt> execNetAchieve(Integer period, String settleDate, String currentSettleTableName) {
|
||||
List<CuMemberSwingNetExt> memberSwingNetExtList = iMemberServiceApi.queryCuMemberSwingNetExt().getData();
|
||||
|
@ -1152,10 +1151,10 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
* @param rangeDtoMap 乐学奖金使用的汇率map
|
||||
*/
|
||||
private void calculatePurchaseOrder(Map<Long, CuMemberRiskControl> riskControlMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate,
|
||||
Map<String, String> systemConfigMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period,
|
||||
Map<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
|
||||
Map<String, BdAwards> awardsMap, List<BdAwards> awardsList, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap,
|
||||
Map<String, RangeDTO> rangeDtoMap, boolean newExpandFlag) {
|
||||
Map<String, String> systemConfigMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period,
|
||||
Map<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
|
||||
Map<String, BdAwards> awardsMap, List<BdAwards> awardsList, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap,
|
||||
Map<String, RangeDTO> rangeDtoMap, boolean newExpandFlag) {
|
||||
//****************************复购直推*****************************
|
||||
// 查找10代血缘,验证复购考核,考核通过的给与奖金 紧缩
|
||||
// List<CuMemberBonusPush> cuMemberBonusPushList = bonusSettlePurchaseHandle.calculateRepurchasePushBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap);
|
||||
|
@ -1243,26 +1242,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param settleDate 结算日期
|
||||
* @param bonusConfigDTO 各个国家奖金参数
|
||||
* @Desccription: 计算云代的奖金
|
||||
* @return: Map<Long, CuMemberSettleExt> 需要更新的
|
||||
*/
|
||||
private void calculateCloudAgentOrder(String settleDate, BonusConfigDTO bonusConfigDTO, Integer period, BonusRecordDetailVO bonusRecordDetailVO, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusSettleAgentHandle.calculateCloudAgentAreaBonus(settleDate, bonusConfigDTO, period, cuMemberBonusMap);
|
||||
if (cuMemberBonusDetailList.size() > 0) {
|
||||
if (bonusRecordDetailVO.getCuMemberBonusDetailList() != null) {
|
||||
bonusRecordDetailVO.getCuMemberBonusDetailList().addAll(cuMemberBonusDetailList);
|
||||
} else {
|
||||
bonusRecordDetailVO.setCuMemberBonusDetailList(cuMemberBonusDetailList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* @description: 计算复购券收益
|
||||
* @param: null null
|
||||
* 计算复购券收益
|
||||
**/
|
||||
private void calculateRepurchaseCoupons(Date settleDate, List<SaOrderExt> firPurchaseOrderList, Integer period, BonusConfigDTO bonusConfigDTO, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
BonusRecordDetailVO bonusRecordDetailVO, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
|
||||
|
@ -1276,51 +1257,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param settleDateStr 结算日期
|
||||
* @Desccription: 计算云代的奖金
|
||||
* @return: Map<Long, CuMemberSettleExt> 需要更新的
|
||||
*/
|
||||
private void calculateShareBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO,
|
||||
Integer period, BonusRecordDetailVO bonusRecordDetailVO, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusSettleFirstPurchaseHandle.calculateShareBonus(settleDateStr, bonusConfigDTO, period, cuMemberBonusMap, cuAwardsControlMap);
|
||||
if (CollectionUtil.isNotEmpty(cuMemberBonusDetailList)) {
|
||||
if (bonusRecordDetailVO.getCuMemberBonusDetailList() != null) {
|
||||
bonusRecordDetailVO.getCuMemberBonusDetailList().addAll(cuMemberBonusDetailList);
|
||||
} else {
|
||||
bonusRecordDetailVO.setCuMemberBonusDetailList(cuMemberBonusDetailList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算嗨粉订单的奖金
|
||||
*
|
||||
* @return: void
|
||||
*/
|
||||
private void calculateHiFunOrder(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, Map<String, RangeDTO> rangeDtoMap,
|
||||
Map<String, BdAwards> awardsMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> hiFunOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
//*****************************嗨粉推荐奖金*****************************/
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusSettleHiFunHandle.calculateHiFunPushBonus(cuMemberSettleExtMap, settleTableName, rangeDtoMap, awardsMap,
|
||||
bonusConfigDTO, hiFunOrderList, period, cuMemberBonusMap, cuAwardsControlMap);
|
||||
addCuMemberBonusDetail(bonusRecordDetailVO, cuMemberBonusDetailList);
|
||||
Map<Long, MemberBonusDetailCalVO> memberBonusDetailCalVoMap = new HashMap<>(ComputeUtil.mapInitCapacity(MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM));
|
||||
cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> {
|
||||
MemberBonusDetailCalVO memberBonusDetailCalVO = calculateOrderRatio(memberBonusDetailCalVoMap, cuMemberBonusDetail);
|
||||
memberBonusDetailCalVO.setHiFunIncome(ComputeUtil.computeAdd(memberBonusDetailCalVO.getHiFunIncome(), cuMemberBonusDetail.getRealIncome()));
|
||||
});
|
||||
Map<Long, SaOrderExt> saOrderExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(hiFunOrderList.size()));
|
||||
hiFunOrderList.forEach(saOrderExt ->
|
||||
saOrderExtMap.put(saOrderExt.getPkId(), saOrderExt));
|
||||
// 嗨粉收益
|
||||
cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> {
|
||||
MemberBonusDetailCalVO memberBonusDetailCalVO = memberBonusDetailCalVoMap.get(cuMemberBonusDetail.getPkOrder());
|
||||
SaOrderExt saOrderExt = saOrderExtMap.get(memberBonusDetailCalVO.getPkOrder());
|
||||
cuMemberBonusDetail.setIncomeDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getHiFunIncome(), memberBonusDetailCalVO.getRealIncome()));
|
||||
cuMemberBonusDetail.setOrderDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRealIncome(), ComputeUtil.computeDivide(saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate())));
|
||||
});
|
||||
}
|
||||
|
||||
private static void addCuMemberBonusDetail(BonusRecordDetailVO bonusRecordDetailVO, List<CuMemberBonusDetail> cuMemberBonusDetailList) {
|
||||
if (cuMemberBonusDetailList.size() > 0) {
|
||||
if (bonusRecordDetailVO.getCuMemberBonusDetailList() != null) {
|
||||
|
@ -1333,8 +1269,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
|
||||
/**
|
||||
* 计算订单奖金累计值
|
||||
*
|
||||
* @return: void
|
||||
*/
|
||||
private MemberBonusDetailCalVO calculateOrderRatio(Map<Long, MemberBonusDetailCalVO> memberBonusDetailVoMap, Object cuMemberBonus) {
|
||||
Long pkOrder = ReflectUtils.invokeGetter(cuMemberBonus, "pkOrder");
|
||||
|
|
|
@ -882,7 +882,8 @@
|
|||
left join (
|
||||
select cmbd.pk_member, cmbd.after_grant_income
|
||||
from CU_MEMBER_BONUS_DELAY cmbd
|
||||
where exists (select 1
|
||||
where exists
|
||||
(select 1
|
||||
from (select cmbd.pk_member, max(cmbd.period) period
|
||||
from cu_member_bonus_delay cmbd
|
||||
where cmbd.del_flag = 0
|
||||
|
|
Loading…
Reference in New Issue