Compare commits

..

No commits in common. "1595f117232b56f45d908c49653436b913aafad4" and "e1da81afaa769b306963f0a2c73cae84bf8908cb" have entirely different histories.

12 changed files with 232 additions and 256 deletions

View File

@ -113,15 +113,17 @@ 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);
/** /**
* 根据订单查询出网体中记录的会员数据推荐人安置人 * 根据订单查询出网体中记录的会员数据推荐人安置人

View File

@ -111,12 +111,14 @@ 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); baseMapper.updateBackCuMemberRetailRangeAward(rangeTableName, period, EAwardsType.RANGE_TYPE.getValue());
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); baseMapper.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate, EAwardsType.RANGE_TYPE.getValue());
baseMapper.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate, EAwardsType.SHARE_TYPE.getValue());
} }
@Override @Override

View File

@ -42,11 +42,21 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
/** /**
* 更新会员奖衔根据临时表 * 更新会员奖衔根据临时表
*/ */
void updateBackCuMemberRetailRangeAward(@Param("period") Integer period); void updateBackCuMemberRetailRangeAward(@Param("period") Integer period, @Param("awardType") Integer awardType);
/** /**
* 更新会员奖衔根据临时表 * 更新会员奖衔根据临时表
*/ */
void updateCuMemberRetailRangeAwardByDate(@Param("settleDate") Date settleDate); void updateCuMemberRetailRangeAwardByDate(@Param("settleDate") Date settleDate, @Param("awardType") Integer awardType);
/**
* 初始化会员奖衔
*/
void updateCuMemberRetailRangeInitAward();
/**
* 初始化会员V5奖衔
*/
void updateCuMemberRetailRangeInitV5Award();
} }

View File

@ -3,6 +3,7 @@ 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;
@ -43,4 +44,9 @@ public interface ICuMemberService extends IService<CuMember> {
*/ */
void updateCuMemberRetailRangeAwardByDate(Date settleDate); void updateCuMemberRetailRangeAwardByDate(Date settleDate);
/**
* 初始化会员奖衔表
*/
void updateCuMemberRetailRangeInitAward();
} }

View File

@ -25,6 +25,7 @@ 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());
} }
@ -32,21 +33,31 @@ 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); baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.RANGE_TYPE.getValue());
baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.SHARE_TYPE.getValue());
} }
@Override @Override
public void updateCuMemberRetailRangeAwardByDate(Date settleDate) { public void updateCuMemberRetailRangeAwardByDate(Date settleDate) {
baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate); baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.RANGE_TYPE.getValue());
baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.SHARE_TYPE.getValue());
}
@Override
public void updateCuMemberRetailRangeInitAward() {
baseMapper.updateCuMemberRetailRangeInitAward();
baseMapper.updateCuMemberRetailRangeInitV5Award();
} }
} }

View File

@ -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,52 +330,26 @@ 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, sourceMember, saOrderExt, this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
bonusConfigDTO, period, cuMemberBonusMap); bonusConfigDTO, period, cuMemberBonusMap);
// 一阶段收益 -- 来源订单金额 // 一阶段收益 -- 来源订单金额
stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period, stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName)); memberRangeExtMap, 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, sourceMember, saOrderExt, this.calculateRepurDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
bonusConfigDTO, period, cuMemberBonusMap); bonusConfigDTO, period, cuMemberBonusMap);
// 一阶段收益 -- 来源订单累计业绩 // 一阶段收益 -- 来源订单累计业绩
stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period, stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName)); memberRangeExtMap, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
} }
} }
@ -845,9 +819,15 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
/** /**
* 计算直推收益 -- 精品专区 * 计算直推收益 -- 精品专区
*/ */
private void calculateDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, private void calculateDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
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) {
@ -888,9 +868,14 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
/** /**
* 计算见点收益 -- 商城专区 * 计算见点收益 -- 商城专区
*/ */
private void calculateRepurDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, private void calculateRepurDirectIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
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();
// 代数 // 代数
@ -974,10 +959,16 @@ 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, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, BonusConfigDTO bonusConfigDTO, Integer period,
CuMemberRetailRangeExt sourceMember, SaOrderExt saOrderExt, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, 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;
@ -1288,120 +1279,4 @@ 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;
}
} }

View File

@ -13,6 +13,9 @@ 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);

View File

@ -432,52 +432,71 @@
<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.del_flag = 0 and ca.award_type = #{awardType}
and cm.pk_awards &lt;= ca.new_level and ca.del_flag = 0
group by ca.pk_member <if test="awardType == 1">
) b and cm.pk_awards &lt;= ca.new_level
on (a.pk_member = b.pk_member) </if>
when matched then <if test="awardType == 2">
update set and cm.pk_share_awards &lt;= ca.new_level
a.pk_awards = b.pk_awards </if>
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 select y.pk_member,y.pk_awards from ${rangeTableName} x
from ${rangeTableName} 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 and up_type = 2
where del_flag = 0 and end_validity_date &lt;= #{settleDate, jdbcType=DATE}
and up_type = 2 and award_type = #{awardType}
and end_validity_date &lt;= #{settleDate, jdbcType=DATE} 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_member = y.pk_member
on x.pk_member = y.pk_member where
where x.pk_awards &lt; y.pk_awards <if test="awardType == 1">
) b x.pk_awards &lt; y.pk_awards
on (a.pk_member = b.pk_member) </if>
when matched then <if test="awardType == 2">
update set x.pk_share_awards &lt; y.pk_awards
a.pk_awards = b.pk_awards </if>
) 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">

View File

@ -123,52 +123,94 @@
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 ca.del_flag = 0 and award_type = #{awardType}
and cm.pk_awards &lt; ca.new_level and ca.del_flag = 0
group by ca.pk_member) b <if test="awardType == 1">
on (a.pk_id = b.pk_member) and cm.pk_awards &lt; ca.new_level
when matched then </if>
update set <if test="awardType == 2">
a.pk_awards = b.pk_awards, and cm.pk_range_awards &lt; ca.new_level
a.modified_time = sysdate </if>
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 &lt;= #{settleDate, jdbcType=DATE} and end_validity_date &lt;= #{settleDate, jdbcType=DATE}
group by pk_member) b and award_type = #{awardType}
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_id = y.pk_member ) y
where x.pk_awards &lt; y.pk_awards on x.pk_id = y.pk_member
) b where
on (a.pk_id = b.pk_member) <if test="awardType == 1">
when matched then x.pk_awards &lt; y.pk_awards
update set </if>
a.pk_awards = b.pk_awards, <if test="awardType == 2">
a.modified_time = sysdate x.pk_range_awards &lt; y.pk_awards
</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">

View File

@ -98,10 +98,16 @@
<!-- 删除自动升级的奖衔升级记录 --> <!-- 删除自动升级的奖衔升级记录 -->
<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>
<!-- 删除升级的奖衔 --> <!-- 删除升级的奖衔 -->

View File

@ -1,5 +1,6 @@
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;
@ -11,9 +12,9 @@ import lombok.Getter;
public enum EAwardsType { public enum EAwardsType {
/** /**
* 荣誉奖衔 * 当月奖衔
*/ */
RANGE_TYPE(1, "荣誉奖衔", 0), RANGE_TYPE(1, "当月奖衔", 0),
/** /**
* 分红奖衔 * 分红奖衔

View File

@ -25,15 +25,14 @@ 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),
/** /**
* 见点收益 -- 商城专区 * 见点收益 -- 商城专区