## 日结处理业绩;
This commit is contained in:
parent
f832063a17
commit
6db021e8b0
|
@ -113,17 +113,15 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
|
||||||
*/
|
*/
|
||||||
Integer queryExistOrderTableCount(String tableName);
|
Integer queryExistOrderTableCount(String tableName);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* 回退会员奖衔
|
* 回退会员奖衔
|
||||||
**/
|
*/
|
||||||
void updateBackCuMemberRetailRangeAward(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period,
|
void updateBackCuMemberRetailRangeAward(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period);
|
||||||
@Param("awardType") Integer awardType);
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* 回退会员奖衔
|
* 回退会员奖衔
|
||||||
**/
|
*/
|
||||||
void updateCuMemberRetailRangeAwardByDate(@Param("rangeTableName") String rangeTableName, @Param("settleDate") Date settleDate,
|
void updateCuMemberRetailRangeAwardByDate(@Param("rangeTableName") String rangeTableName, @Param("settleDate") Date settleDate);
|
||||||
@Param("awardType") Integer awardType);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据订单,查询出网体中记录的会员数据,推荐人、安置人
|
* 根据订单,查询出网体中记录的会员数据,推荐人、安置人
|
||||||
|
|
|
@ -111,14 +111,12 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateBackCuMemberRetailRangeAward(String rangeTableName, Integer period) {
|
public void updateBackCuMemberRetailRangeAward(String rangeTableName, Integer period) {
|
||||||
baseMapper.updateBackCuMemberRetailRangeAward(rangeTableName, period, EAwardsType.RANGE_TYPE.getValue());
|
baseMapper.updateBackCuMemberRetailRangeAward(rangeTableName, period);
|
||||||
baseMapper.updateBackCuMemberRetailRangeAward(rangeTableName, period, EAwardsType.SHARE_TYPE.getValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateCuMemberRetailRangeAwardByDate(String rangeTableName, Date settleDate) {
|
public void updateCuMemberRetailRangeAwardByDate(String rangeTableName, Date settleDate) {
|
||||||
baseMapper.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate, EAwardsType.RANGE_TYPE.getValue());
|
baseMapper.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate);
|
||||||
baseMapper.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate, EAwardsType.SHARE_TYPE.getValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -42,21 +42,11 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
|
||||||
/**
|
/**
|
||||||
* 更新会员奖衔根据临时表
|
* 更新会员奖衔根据临时表
|
||||||
*/
|
*/
|
||||||
void updateBackCuMemberRetailRangeAward(@Param("period") Integer period, @Param("awardType") Integer awardType);
|
void updateBackCuMemberRetailRangeAward(@Param("period") Integer period);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新会员奖衔根据临时表
|
* 更新会员奖衔根据临时表
|
||||||
*/
|
*/
|
||||||
void updateCuMemberRetailRangeAwardByDate(@Param("settleDate") Date settleDate, @Param("awardType") Integer awardType);
|
void updateCuMemberRetailRangeAwardByDate(@Param("settleDate") Date settleDate);
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化会员奖衔
|
|
||||||
*/
|
|
||||||
void updateCuMemberRetailRangeInitAward();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化会员V5奖衔
|
|
||||||
*/
|
|
||||||
void updateCuMemberRetailRangeInitV5Award();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.hzs.bonus.base.service;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.hzs.common.domain.member.base.CuMember;
|
import com.hzs.common.domain.member.base.CuMember;
|
||||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
|
import com.hzs.common.domain.member.detail.CuMemberAwards;
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
@ -44,9 +43,4 @@ public interface ICuMemberService extends IService<CuMember> {
|
||||||
*/
|
*/
|
||||||
void updateCuMemberRetailRangeAwardByDate(Date settleDate);
|
void updateCuMemberRetailRangeAwardByDate(Date settleDate);
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化会员奖衔表
|
|
||||||
*/
|
|
||||||
void updateCuMemberRetailRangeInitAward();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
|
||||||
@Override
|
@Override
|
||||||
public void updateCuMemberRetailRangeByPeriod(Integer period) {
|
public void updateCuMemberRetailRangeByPeriod(Integer period) {
|
||||||
baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
|
baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
|
||||||
baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.SHARE_TYPE.getValue());
|
|
||||||
// 更新会员最高奖衔
|
// 更新会员最高奖衔
|
||||||
baseMapper.updateCuMemberMaxAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
|
baseMapper.updateCuMemberMaxAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
|
||||||
}
|
}
|
||||||
|
@ -33,31 +32,21 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
|
||||||
@Override
|
@Override
|
||||||
public void updateCuMemberRetailRangeByList(List<CuMemberAwards> cuMemberAwardsList, Integer period) {
|
public void updateCuMemberRetailRangeByList(List<CuMemberAwards> cuMemberAwardsList, Integer period) {
|
||||||
baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue());
|
baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue());
|
||||||
baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.SHARE_TYPE.getValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateCuMemberMinAwardsByList(List<CuMemberAwards> cuMemberAwardsList, Integer period) {
|
public void updateCuMemberMinAwardsByList(List<CuMemberAwards> cuMemberAwardsList, Integer period) {
|
||||||
baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue());
|
baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue());
|
||||||
baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.SHARE_TYPE.getValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateBackCuMemberRetailRangeAward(Integer period) {
|
public void updateBackCuMemberRetailRangeAward(Integer period) {
|
||||||
baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.RANGE_TYPE.getValue());
|
baseMapper.updateBackCuMemberRetailRangeAward(period);
|
||||||
baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.SHARE_TYPE.getValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateCuMemberRetailRangeAwardByDate(Date settleDate) {
|
public void updateCuMemberRetailRangeAwardByDate(Date settleDate) {
|
||||||
baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.RANGE_TYPE.getValue());
|
baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate);
|
||||||
baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.SHARE_TYPE.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateCuMemberRetailRangeInitAward() {
|
|
||||||
baseMapper.updateCuMemberRetailRangeInitAward();
|
|
||||||
baseMapper.updateCuMemberRetailRangeInitV5Award();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -289,7 +289,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
// 结算明细前一天表
|
// 结算明细前一天表
|
||||||
String yesterdayRangeDetailTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + yesterdayPeriod;
|
String yesterdayRangeDetailTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + yesterdayPeriod;
|
||||||
|
|
||||||
// TODO 回退奖衔,将奖衔回退到结算前状态
|
// 回退奖衔,将奖衔回退到结算前状态
|
||||||
iCuMemberAwardsService.calculateCuMemberRetailRangeAwardsInit(settleDate, period, rangeTableName);
|
iCuMemberAwardsService.calculateCuMemberRetailRangeAwardsInit(settleDate, period, rangeTableName);
|
||||||
// 初始化结算网体数据(昨天数据更新到今天数据)
|
// 初始化结算网体数据(昨天数据更新到今天数据)
|
||||||
iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(rangeTableName, yesterdayRangeTableName, isSameMonth);
|
iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(rangeTableName, yesterdayRangeTableName, isSameMonth);
|
||||||
|
@ -330,26 +330,52 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||||
|
|
||||||
for (SaOrderExt saOrderExt : orderList) {
|
for (SaOrderExt saOrderExt : orderList) {
|
||||||
|
CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||||
|
if (null == sourceMember) {
|
||||||
|
log.warn("订单会员不存在, pkMember: {}", saOrderExt.getPkMember());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
|
||||||
|
BigDecimal orderAmount = saOrderExt.getOrderAmount();
|
||||||
|
|
||||||
|
// 自己消费的相关金额、业绩处理
|
||||||
|
sourceMember.setNewConsumePv(orderAchieve);
|
||||||
|
sourceMember.setConsumePv(sourceMember.getConsumePv().add(orderAchieve));
|
||||||
|
sourceMember.setMonthConsumePv(sourceMember.getMonthConsumePv().add(orderAchieve));
|
||||||
|
sourceMember.setNewConsumeAmount(orderAmount);
|
||||||
|
sourceMember.setConsumeAmount(sourceMember.getConsumeAmount().add(orderAmount));
|
||||||
|
sourceMember.setMonthConsumeAmount(sourceMember.getMonthConsumeAmount().add(orderAmount));
|
||||||
|
// TODO 自己计算奖衔
|
||||||
|
this.calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, sourceMember);
|
||||||
|
// TODO 累计团队业绩、金额 + 计算奖衔
|
||||||
|
this.calculateParentAwards(period, memberRangeExtMap, rangeTableName, sourceMember, saOrderExt, retailAwardsMap);
|
||||||
|
|
||||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
||||||
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
|
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
|
||||||
// 精品专区、甄选专区
|
// 精品专区、甄选专区
|
||||||
|
sourceMember.setRegConsumeNewPv(sourceMember.getRegConsumeNewPv().add(orderAchieve));
|
||||||
|
sourceMember.setRegConsumeNewAmount(sourceMember.getRegConsumeNewAmount().add(orderAmount));
|
||||||
|
|
||||||
// 直推收益 -- 来源订单金额,直推拿金额的10%
|
// 直推收益 -- 来源订单金额,直推拿金额的10%
|
||||||
this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
|
this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, sourceMember, saOrderExt,
|
||||||
bonusConfigDTO, period, cuMemberBonusMap);
|
bonusConfigDTO, period, cuMemberBonusMap);
|
||||||
// 一阶段收益 -- 来源订单金额
|
// 一阶段收益 -- 来源订单金额
|
||||||
stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
|
stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
|
||||||
memberRangeExtMap, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
|
memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
|
||||||
|
|
||||||
// TODO 领导级差收益 -- 来源PV
|
// TODO 领导级差收益 -- 来源PV
|
||||||
// TODO 领导平差收益 -- 来源PV
|
// TODO 领导平差收益 -- 来源PV
|
||||||
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
|
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
|
||||||
// 商城专区
|
// 商城专区
|
||||||
|
sourceMember.setRepConsumeNewPv(sourceMember.getRepConsumeNewPv().add(orderAchieve));
|
||||||
|
sourceMember.setRepConsumeNewAmount(sourceMember.getRepConsumeNewAmount().add(orderAmount));
|
||||||
|
|
||||||
// 见点收益 -- 来源订单业绩,血缘上20代,每代拿业绩的10%
|
// 见点收益 -- 来源订单业绩,血缘上20代,每代拿业绩的10%
|
||||||
this.calculateRepurDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
|
this.calculateRepurDirectIncome(cuMemberBonusPushList, memberRangeExtMap, sourceMember, saOrderExt,
|
||||||
bonusConfigDTO, period, cuMemberBonusMap);
|
bonusConfigDTO, period, cuMemberBonusMap);
|
||||||
// 一阶段收益 -- 来源订单累计业绩
|
// 一阶段收益 -- 来源订单累计业绩
|
||||||
stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
|
stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
|
||||||
memberRangeExtMap, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
|
memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -819,15 +845,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
/**
|
/**
|
||||||
* 计算直推收益 -- 精品专区
|
* 计算直推收益 -- 精品专区
|
||||||
*/
|
*/
|
||||||
private void calculateDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
|
private void calculateDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
|
||||||
|
CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt,
|
||||||
BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||||
// 订单会员
|
|
||||||
CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
|
|
||||||
if (null == sourceMember) {
|
|
||||||
log.warn("直推收益:订单会员不存在, pkMember: {}", saOrderExt.getPkMember());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 订单会员推荐人
|
// 订单会员推荐人
|
||||||
CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(sourceMember.getPkParent());
|
CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(sourceMember.getPkParent());
|
||||||
if (null == targetMember) {
|
if (null == targetMember) {
|
||||||
|
@ -868,14 +888,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
/**
|
/**
|
||||||
* 计算见点收益 -- 商城专区
|
* 计算见点收益 -- 商城专区
|
||||||
*/
|
*/
|
||||||
private void calculateRepurDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
|
private void calculateRepurDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
|
||||||
|
CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt,
|
||||||
BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||||
// 订单会员
|
|
||||||
CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
|
|
||||||
if (null == sourceMember) {
|
|
||||||
log.warn("订单会员不存在, pkMember: {}", saOrderExt.getPkMember());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// 推荐人
|
// 推荐人
|
||||||
long pkParent = sourceMember.getPkParent();
|
long pkParent = sourceMember.getPkParent();
|
||||||
// 代数
|
// 代数
|
||||||
|
@ -959,16 +974,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
* 计算一阶段收益 -- 精品专区、商城专区
|
* 计算一阶段收益 -- 精品专区、商城专区
|
||||||
*/
|
*/
|
||||||
private List<CuMemberRetailDetail> calculateStageIncome(List<CuMemberBonusStage> cuMemberBonusStageList, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
private List<CuMemberRetailDetail> calculateStageIncome(List<CuMemberBonusStage> cuMemberBonusStageList, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||||
BonusConfigDTO bonusConfigDTO, Integer period,
|
BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
|
||||||
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
|
CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt,
|
||||||
Date settleDate, String rangeTableName, String rangeDetailTableName) {
|
Date settleDate, String rangeTableName, String rangeDetailTableName) {
|
||||||
List<CuMemberRetailDetail> returnRetailDetailList = new ArrayList<>();
|
List<CuMemberRetailDetail> returnRetailDetailList = new ArrayList<>();
|
||||||
// 订单会员
|
|
||||||
CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
|
|
||||||
if (null == sourceMember) {
|
|
||||||
log.error("阶段收益处理失败,订单会员不存在. orderCode: {}, pkMember: {}", saOrderExt.getOrderCode(), saOrderExt.getPkMember());
|
|
||||||
return returnRetailDetailList;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 订单生成新点位数量
|
// 订单生成新点位数量
|
||||||
int newPointInt;
|
int newPointInt;
|
||||||
|
@ -1279,4 +1288,120 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
return resultList;
|
return resultList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算奖衔
|
||||||
|
*/
|
||||||
|
private void calculateAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName,
|
||||||
|
SaOrderExt saOrderExt, Map<Integer, BdAwards> retailAwardsMap, List<CuMemberAwards> cuMemberAwardsList,
|
||||||
|
CuMemberRetailRangeExt targetMember) {
|
||||||
|
// // 校验大小区会员数据
|
||||||
|
// List<CuMemberRetailRangeExt> cuMemberRangeExtList = null;
|
||||||
|
// // 校验累计小部门会员数据
|
||||||
|
// List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = null;
|
||||||
|
// // 计算分红奖衔
|
||||||
|
// while (true) {
|
||||||
|
// // 当月奖衔值 + 5,获取下一个奖衔值
|
||||||
|
// int awardsValue = targetMember.getAwardsValue() + 5;
|
||||||
|
// if (retailAwardsMap.containsKey(awardsValue)) {
|
||||||
|
// BdAwards bdAwards = retailAwardsMap.get(awardsValue);
|
||||||
|
// // 先验证累计业绩
|
||||||
|
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMember.getTeamConsumePv(), targetMember.getConsumePv()), bdAwards.getShareTotalCheck())) {
|
||||||
|
// // 再验证小区,计算小区业绩(拉取直推会员数据)
|
||||||
|
// if (null == cuMemberRangeExtList) {
|
||||||
|
// // 昨日结算表,查询订单会员直推数据
|
||||||
|
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember());
|
||||||
|
// }
|
||||||
|
// // 本人月消费业绩(默认为大区)
|
||||||
|
// BigDecimal consumeBigPv = targetMember.getMonthConsumePv();
|
||||||
|
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
|
||||||
|
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
||||||
|
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
||||||
|
// }
|
||||||
|
// // 月累计业绩 = 本人月消费业绩 + 团队月消费业绩
|
||||||
|
// BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getAllTeamMonthPv());
|
||||||
|
// if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
|
||||||
|
// // 月累计业绩 > 大区业绩,则月累计就成为大区了
|
||||||
|
// consumeBigPv = consumePv;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // 小区业绩 = 本人月消费业绩 + 团队月消费业绩 - 大区业绩
|
||||||
|
// BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMember.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMember.getTeamMonthPv(), consumeBigPv));
|
||||||
|
// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
|
||||||
|
// // 小区业绩 >= 小区考核业绩
|
||||||
|
// if (bdAwards.getPlaceDeptNum() > 0) {
|
||||||
|
// // 验证是否有多个区满足业绩
|
||||||
|
// if (null == cuMemberRetailRangeExtList) {
|
||||||
|
// // 昨日结算表,查询订单会员直推数据
|
||||||
|
// cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMember.getPkMember(), bdAwards.getShareCommunityCheck());
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// int enoughNum = 0;
|
||||||
|
// if (ComputeUtil.compareValue(targetMember.getMonthConsumePv(), bdAwards.getShareCommunityCheck())) {
|
||||||
|
// enoughNum += 1;
|
||||||
|
// }
|
||||||
|
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) {
|
||||||
|
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
||||||
|
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
||||||
|
// }
|
||||||
|
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getAllTeamMonthPv()), bdAwards.getShareCommunityCheck())) {
|
||||||
|
// // 本人月消费业绩 + 团队月消费业绩 >= 小区考核业绩,则满足条件小部门 +1
|
||||||
|
// enoughNum += 1;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (bdAwards.getPlaceDeptNum() > enoughNum) {
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue(), targetMember.getPkShareAwards()));
|
||||||
|
// targetMember.setAwardsValue(bdAwards.getAwardsValue());
|
||||||
|
// targetMember.setPkAwards(bdAwards.getPkId());
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算团队奖衔
|
||||||
|
*/
|
||||||
|
public List<CuMemberAwards> calculateParentAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName,
|
||||||
|
CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt, Map<Integer, BdAwards> retailAwardsMap) {
|
||||||
|
// 会员奖衔升级列表
|
||||||
|
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
||||||
|
// 订单会员的推荐人
|
||||||
|
CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(sourceMember.getPkParent());
|
||||||
|
|
||||||
|
BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
|
||||||
|
BigDecimal orderAmount = saOrderExt.getOrderAmount();
|
||||||
|
while (null != targetMember) {
|
||||||
|
// 累计业绩
|
||||||
|
targetMember.setTeamNewPv(targetMember.getTeamNewPv().add(orderAchieve));
|
||||||
|
targetMember.setTeamConsumePv(targetMember.getTeamConsumePv().add(orderAchieve));
|
||||||
|
targetMember.setTeamMonthPv(targetMember.getTeamMonthPv().add(orderAchieve));
|
||||||
|
// 累计金额
|
||||||
|
targetMember.setTeamNewAmount(targetMember.getTeamNewAmount().add(orderAmount));
|
||||||
|
targetMember.setTeamConsumeAmount(targetMember.getTeamConsumeAmount().add(orderAmount));
|
||||||
|
targetMember.setTeamMonthAmount(targetMember.getTeamMonthAmount().add(orderAmount));
|
||||||
|
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
||||||
|
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()
|
||||||
|
) {
|
||||||
|
// 团队精品专区
|
||||||
|
targetMember.setRegTeamNewPv(targetMember.getRegTeamNewPv().add(orderAchieve));
|
||||||
|
targetMember.setRegTeamNewAmount(targetMember.getRegTeamNewAmount().add(orderAmount));
|
||||||
|
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
|
||||||
|
// 团队商城专区
|
||||||
|
targetMember.setRepTeamNewPv(targetMember.getRepTeamNewPv().add(orderAchieve));
|
||||||
|
targetMember.setRepTeamNewAmount(targetMember.getRepTeamNewAmount().add(orderAmount));
|
||||||
|
}
|
||||||
|
// 计算奖衔
|
||||||
|
calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, targetMember);
|
||||||
|
|
||||||
|
targetMember = memberRangeExtMap.get(targetMember.getPkParent());
|
||||||
|
}
|
||||||
|
return cuMemberAwardsList;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,9 +13,6 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 回退极差奖衔,每日重新结算,先把奖衔回退到前一天
|
* 回退极差奖衔,每日重新结算,先把奖衔回退到前一天
|
||||||
*
|
|
||||||
* @param period 结算期间
|
|
||||||
* @param rangeTableName 结算表
|
|
||||||
*/
|
*/
|
||||||
void calculateCuMemberRetailRangeAwardsInit(String settleDate, Integer period, String rangeTableName);
|
void calculateCuMemberRetailRangeAwardsInit(String settleDate, Integer period, String rangeTableName);
|
||||||
|
|
||||||
|
|
|
@ -432,71 +432,52 @@
|
||||||
<include refid="CuMemberTableTrig"></include>
|
<include refid="CuMemberTableTrig"></include>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<!-- 回退会员奖衔 -->
|
||||||
<update id="updateBackCuMemberRetailRangeAward">
|
<update id="updateBackCuMemberRetailRangeAward">
|
||||||
merge into ${rangeTableName} a
|
merge into ${rangeTableName} a
|
||||||
using (
|
using (
|
||||||
select ca.pk_member, max(old_level) pk_awards
|
select ca.pk_member, max(old_level) pk_awards
|
||||||
from cu_member_awards ca
|
from cu_member_awards ca
|
||||||
inner join ${rangeTableName} cm
|
inner join ${rangeTableName} cm
|
||||||
on ca.pk_member = cm.pk_member
|
on ca.pk_member = cm.pk_member
|
||||||
where ca.period = #{period}
|
where ca.period = #{period}
|
||||||
and ca.up_type = 1
|
and ca.up_type = 1
|
||||||
and ca.award_type = #{awardType}
|
and ca.del_flag = 0
|
||||||
and ca.del_flag = 0
|
and cm.pk_awards <= ca.new_level
|
||||||
<if test="awardType == 1">
|
group by ca.pk_member
|
||||||
and cm.pk_awards <= ca.new_level
|
) b
|
||||||
</if>
|
on (a.pk_member = b.pk_member)
|
||||||
<if test="awardType == 2">
|
when matched then
|
||||||
and cm.pk_share_awards <= ca.new_level
|
update set
|
||||||
</if>
|
a.pk_awards = b.pk_awards
|
||||||
group by ca.pk_member
|
|
||||||
) b
|
|
||||||
on (a.pk_member = b.pk_member)
|
|
||||||
when matched then
|
|
||||||
update set
|
|
||||||
<if test="awardType == 1">
|
|
||||||
a.pk_awards = b.pk_awards
|
|
||||||
</if>
|
|
||||||
<if test="awardType == 2">
|
|
||||||
a.pk_share_awards=b.pk_awards
|
|
||||||
</if>
|
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<!-- 回退会员奖衔 -->
|
||||||
<update id="updateCuMemberRetailRangeAwardByDate">
|
<update id="updateCuMemberRetailRangeAwardByDate">
|
||||||
merge into ${rangeTableName} a
|
merge into ${rangeTableName} a
|
||||||
using (
|
using (
|
||||||
select y.pk_member,y.pk_awards from ${rangeTableName} x
|
select y.pk_member, y.pk_awards
|
||||||
inner join (
|
from ${rangeTableName} x
|
||||||
select a.pk_member,a.new_level pk_awards
|
inner join (
|
||||||
from cu_member_awards a
|
select a.pk_member, a.new_level pk_awards
|
||||||
inner join (
|
from cu_member_awards a
|
||||||
select pk_member, max(pk_id) pk_id
|
inner join (
|
||||||
from cu_member_awards
|
select pk_member, max(pk_id) pk_id
|
||||||
where del_flag = 0 and up_type = 2
|
from cu_member_awards
|
||||||
and end_validity_date <= #{settleDate, jdbcType=DATE}
|
where del_flag = 0
|
||||||
and award_type = #{awardType}
|
and up_type = 2
|
||||||
group by pk_member) b
|
and end_validity_date <= #{settleDate, jdbcType=DATE}
|
||||||
on a.pk_id = b.pk_id
|
group by pk_member) b
|
||||||
where a.del_flag = 0
|
on a.pk_id = b.pk_id
|
||||||
) y
|
where a.del_flag = 0
|
||||||
on x.pk_member = y.pk_member
|
) y
|
||||||
where
|
on x.pk_member = y.pk_member
|
||||||
<if test="awardType == 1">
|
where x.pk_awards < y.pk_awards
|
||||||
x.pk_awards < y.pk_awards
|
) b
|
||||||
</if>
|
on (a.pk_member = b.pk_member)
|
||||||
<if test="awardType == 2">
|
when matched then
|
||||||
x.pk_share_awards < y.pk_awards
|
update set
|
||||||
</if>
|
a.pk_awards = b.pk_awards
|
||||||
) b
|
|
||||||
on (a.pk_member = b.pk_member)
|
|
||||||
when matched then
|
|
||||||
update set
|
|
||||||
<if test="awardType == 1">
|
|
||||||
a.pk_awards = b.pk_awards
|
|
||||||
</if>
|
|
||||||
<if test="awardType == 2">
|
|
||||||
a.pk_share_awards = b.pk_awards
|
|
||||||
</if>
|
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="createCuMemberRetailRangeSecondTable">
|
<update id="createCuMemberRetailRangeSecondTable">
|
||||||
|
|
|
@ -123,94 +123,52 @@
|
||||||
update set a.pk_max_awards = b.pk_awards, a.modified_time = sysdate
|
update set a.pk_max_awards = b.pk_awards, a.modified_time = sysdate
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<!-- 更新会员奖衔根据临时表 -->
|
||||||
<update id="updateBackCuMemberRetailRangeAward">
|
<update id="updateBackCuMemberRetailRangeAward">
|
||||||
merge into cu_member a
|
merge into cu_member a
|
||||||
using (select pk_member, max(old_level) pk_awards
|
using (select pk_member, max(old_level) pk_awards
|
||||||
from cu_member_awards ca
|
from cu_member_awards ca
|
||||||
inner join cu_member cm
|
inner join cu_member cm
|
||||||
on ca.pk_member = cm.pk_id
|
on ca.pk_member = cm.pk_id
|
||||||
where ca.period = #{period}
|
where ca.period = #{period}
|
||||||
and ca.up_type = 1
|
and ca.up_type = 1
|
||||||
and award_type = #{awardType}
|
and ca.del_flag = 0
|
||||||
and ca.del_flag = 0
|
and cm.pk_awards < ca.new_level
|
||||||
<if test="awardType == 1">
|
group by ca.pk_member) b
|
||||||
and cm.pk_awards < ca.new_level
|
on (a.pk_id = b.pk_member)
|
||||||
</if>
|
when matched then
|
||||||
<if test="awardType == 2">
|
update set
|
||||||
and cm.pk_range_awards < ca.new_level
|
a.pk_awards = b.pk_awards,
|
||||||
</if>
|
a.modified_time = sysdate
|
||||||
group by ca.pk_member) b
|
|
||||||
on (a.pk_id = b.pk_member)
|
|
||||||
when matched then
|
|
||||||
update set
|
|
||||||
<if test="awardType == 1">
|
|
||||||
a.pk_awards = b.pk_awards,
|
|
||||||
</if>
|
|
||||||
<if test="awardType == 2">
|
|
||||||
a.pk_range_awards = b.pk_awards,
|
|
||||||
</if>
|
|
||||||
a.modified_time = sysdate
|
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<!-- 更新会员奖衔根据临时表 -->
|
||||||
<update id="updateCuMemberRetailRangeAwardByDate">
|
<update id="updateCuMemberRetailRangeAwardByDate">
|
||||||
merge into cu_member a
|
merge into cu_member a
|
||||||
using (
|
using (
|
||||||
select y.pk_member, y.pk_awards
|
select y.pk_member, y.pk_awards
|
||||||
from cu_member x
|
from cu_member x
|
||||||
inner join (
|
inner join (
|
||||||
select a.pk_member,a.new_level pk_awards
|
select a.pk_member, a.new_level pk_awards
|
||||||
from cu_member_awards a
|
from cu_member_awards a
|
||||||
inner join (
|
inner join (
|
||||||
select pk_member, max(pk_id) pk_id
|
select pk_member, max(pk_id) pk_id
|
||||||
from cu_member_awards
|
from cu_member_awards
|
||||||
where del_flag = 0
|
where del_flag = 0
|
||||||
and up_type = 2
|
and up_type = 2
|
||||||
and end_validity_date <= #{settleDate, jdbcType=DATE}
|
and end_validity_date <= #{settleDate, jdbcType=DATE}
|
||||||
and award_type = #{awardType}
|
group by pk_member) b
|
||||||
group by pk_member) b
|
on a.pk_id = b.pk_id
|
||||||
on a.pk_id = b.pk_id
|
where a.del_flag = 0
|
||||||
where a.del_flag = 0
|
) y
|
||||||
) y
|
on x.pk_id = y.pk_member
|
||||||
on x.pk_id = y.pk_member
|
where x.pk_awards < y.pk_awards
|
||||||
where
|
) b
|
||||||
<if test="awardType == 1">
|
on (a.pk_id = b.pk_member)
|
||||||
x.pk_awards < y.pk_awards
|
when matched then
|
||||||
</if>
|
update set
|
||||||
<if test="awardType == 2">
|
a.pk_awards = b.pk_awards,
|
||||||
x.pk_range_awards < y.pk_awards
|
a.modified_time = sysdate
|
||||||
</if>
|
|
||||||
) b
|
|
||||||
on (a.pk_id = b.pk_member)
|
|
||||||
when matched then
|
|
||||||
update set
|
|
||||||
<if test="awardType == 1">
|
|
||||||
a.pk_awards = b.pk_awards,
|
|
||||||
</if>
|
|
||||||
<if test="awardType == 2">
|
|
||||||
a.pk_range_awards = b.pk_awards,
|
|
||||||
</if>
|
|
||||||
a.modified_time = sysdate
|
|
||||||
</update>
|
|
||||||
|
|
||||||
<!-- 初始化会员奖衔 -->
|
|
||||||
<update id="updateCuMemberRetailRangeInitAward">
|
|
||||||
update cu_member
|
|
||||||
set pk_awards = (select pk_id from bd_awards where awards_value = 0),
|
|
||||||
pk_range_awards = (select pk_id from bd_awards where awards_value = 0)
|
|
||||||
</update>
|
|
||||||
|
|
||||||
<!-- 初始化会员V5奖衔 -->
|
|
||||||
<update id="updateCuMemberRetailRangeInitV5Award">
|
|
||||||
update cu_member
|
|
||||||
set pk_awards = (select pk_id from bd_awards where awards_value = 5),
|
|
||||||
pk_range_awards = (select pk_id from bd_awards where awards_value = 5)
|
|
||||||
where pk_settle_grade = (
|
|
||||||
select pk_id
|
|
||||||
from bd_grade
|
|
||||||
where grade_value = 70
|
|
||||||
and del_flag = 0
|
|
||||||
)
|
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="updateCuMemberRetailRangeByList">
|
<update id="updateCuMemberRetailRangeByList">
|
||||||
|
|
|
@ -98,16 +98,10 @@
|
||||||
<!-- 删除自动升级的奖衔升级记录 -->
|
<!-- 删除自动升级的奖衔升级记录 -->
|
||||||
<delete id="deleteCuMemberAwards">
|
<delete id="deleteCuMemberAwards">
|
||||||
update cu_member_awards cma
|
update cu_member_awards cma
|
||||||
set cma.del_flag = 1,
|
set cma.del_flag = 1,
|
||||||
cma.modified_time = sysdate
|
cma.modified_time = sysdate
|
||||||
where period = #{period}
|
|
||||||
and up_type = 1
|
|
||||||
|
|
||||||
<!--
|
|
||||||
delete from cu_member_awards
|
|
||||||
where period = #{period}
|
where period = #{period}
|
||||||
and up_type = 1
|
and up_type = 1
|
||||||
-->
|
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
<!-- 删除升级的奖衔 -->
|
<!-- 删除升级的奖衔 -->
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package com.hzs.common.core.enums;
|
package com.hzs.common.core.enums;
|
||||||
|
|
||||||
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@ -12,9 +11,9 @@ import lombok.Getter;
|
||||||
public enum EAwardsType {
|
public enum EAwardsType {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当月奖衔
|
* 荣誉奖衔
|
||||||
*/
|
*/
|
||||||
RANGE_TYPE(1, "当月奖衔", 0),
|
RANGE_TYPE(1, "荣誉奖衔", 0),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分红奖衔
|
* 分红奖衔
|
||||||
|
|
|
@ -25,14 +25,15 @@ public enum EBonusItems {
|
||||||
* 阶段收益 -- 精品专区、商城专区
|
* 阶段收益 -- 精品专区、商城专区
|
||||||
*/
|
*/
|
||||||
STAGE_INCOME(21, "阶段收益", 0),
|
STAGE_INCOME(21, "阶段收益", 0),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 级差收益 -- 精品专区、商城专区
|
* 领导奖金收益 -- 精品专区、商城专区
|
||||||
*/
|
*/
|
||||||
RANGE_INCOME(22, "级差收益", 0),
|
RANGE_INCOME(22, "领导奖金收益", 0),
|
||||||
/**
|
/**
|
||||||
* 平级收益 -- 精品专区、商城专区
|
* 平级奖金收益 -- 精品专区、商城专区
|
||||||
*/
|
*/
|
||||||
SAME_LEVEL_INCOME(23, "平级收益", 0),
|
SAME_LEVEL_INCOME(23, "平级奖金收益", 0),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 见点收益 -- 商城专区
|
* 见点收益 -- 商城专区
|
||||||
|
|
Loading…
Reference in New Issue