## 秒结、日结恢复分红奖衔;

This commit is contained in:
cabbage 2025-06-19 15:30:23 +08:00
parent ea23bcded1
commit 428e8872d5
17 changed files with 335 additions and 216 deletions

View File

@ -79,7 +79,7 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
/**
* 更新购买订单的等级
*/
void mergeMemberRetailGradeByMember(@Param("rangeTableName") String rangeTableName, @Param("pkMember") Long pkMember);
void mergeMemberRetailGradeByMember(@Param("rangeTableName") String rangeTableName, @Param("pkMember") Long pkMember, @Param("isToday") Integer isToday);
/**
* 根据会员查询会员上的所有网体
@ -119,7 +119,7 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
List<CuMemberRetailRangeExt> queryCuMemberSecondRangeYes(@Param("rangeTableName") String rangeTableName, @Param("pkMember") Long pkMember);
/**
* 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
* 秒结推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
*/
List<CuMemberRetailRangeExt> queryCuMemberSecondRangeExtByParent(@Param("rangeTableName") String rangeTableName, @Param("secondTableName") String secondTableName, @Param("pkMember") Long pkMember);

View File

@ -124,7 +124,7 @@ public interface ICuMemberRetailRangeService extends IService<CuMemberRetailRang
/**
* 更新购买订单的等级
*/
void mergeMemberRetailGradeByMember(String rangeTableName, Long pkMember);
void mergeMemberRetailGradeByMember(String rangeTableName, Long pkMember, Integer isToday);
/**
* 更新会员树的累计业绩

View File

@ -177,8 +177,8 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
}
@Override
public void mergeMemberRetailGradeByMember(String rangeTableName, Long pkMember) {
baseMapper.mergeMemberRetailGradeByMember(rangeTableName, pkMember);
public void mergeMemberRetailGradeByMember(String rangeTableName, Long pkMember, Integer isToday) {
baseMapper.mergeMemberRetailGradeByMember(rangeTableName, pkMember, isToday);
}
@Override

View File

@ -145,13 +145,13 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
@Override
public void updateBackCuMemberRetailRangeAward(String rangeTableName, Integer period) {
baseMapper.updateBackCuMemberRetailRangeAward(rangeTableName, period, EAwardsType.RANGE_TYPE.getValue());
// baseMapper.updateBackCuMemberRetailRangeAward(rangeTableName, period, EAwardsType.SHARE_TYPE.getValue());
baseMapper.updateBackCuMemberRetailRangeAward(rangeTableName, period, EAwardsType.SHARE_TYPE.getValue());
}
@Override
public void updateCuMemberRetailRangeAwardByDate(String rangeTableName, Date settleDate) {
baseMapper.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate, EAwardsType.RANGE_TYPE.getValue());
// baseMapper.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate, EAwardsType.SHARE_TYPE.getValue());
baseMapper.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate, EAwardsType.SHARE_TYPE.getValue());
}
@Override

View File

@ -41,13 +41,13 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
@Override
public void updateCuMemberRetailRangeByPeriod(List<CuMemberAwards> cuMemberAwardsList, Integer period) {
baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
// baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.SHARE_TYPE.getValue());
baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.SHARE_TYPE.getValue());
}
@Override
public void updateCuMemberRetailRangeByList(List<CuMemberAwards> cuMemberAwardsList, Integer period) {
baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue());
// baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.SHARE_TYPE.getValue());
baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.SHARE_TYPE.getValue());
}
@Override
@ -58,6 +58,7 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
@Override
public void updateCuMemberMinAwardsByList(List<CuMemberAwards> cuMemberAwardsList, Integer period) {
baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue());
baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.SHARE_TYPE.getValue());
}
@Override
@ -88,13 +89,13 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
@Override
public void updateBackCuMemberRetailRangeAward(Integer period) {
baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.RANGE_TYPE.getValue());
// baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.SHARE_TYPE.getValue());
baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.SHARE_TYPE.getValue());
}
@Override
public void updateCuMemberRetailRangeAwardByDate(Date settleDate) {
baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.RANGE_TYPE.getValue());
// baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.SHARE_TYPE.getValue());
baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.SHARE_TYPE.getValue());
}
@Override

View File

@ -185,7 +185,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (cuMemberAwardsList.size() > 0) {
// 插入会员奖衔升级记录
iCuMemberAwardsService.saveBatchCuMemberAwards(cuMemberAwardsList);
// 更新会员奖衔 -- 荣誉级别旧级差奖衔旧荣誉奖衔分红奖衔
// 更新会员奖衔 -- 当月奖衔分红奖衔
iCuMemberService.updateCuMemberRetailRangeByList(cuMemberAwardsList, currentPeriod);
}
@ -197,7 +197,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
}
/**
* 实时计算撤单数据业绩盒数等级奖衔日奖
* 撤单秒结实时计算撤单数据业绩盒数等级奖衔日奖
*/
void calculateCuMemberBackRetailIncome(SaOrderExt saOrderExt, BonusConfigDTO bonusConfigDTO,
String secondRangeTableName, int beforePeriod, int currentPeriod) {
@ -208,9 +208,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (DateUtils.isSameDay(saOrderExt.getPayTime(), DateUtils.currentDate())) {
// 当天撤单
// 实时网体查询血缘伞上会员更新秒结表等级奖衔
iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(secondRangeTableName, saOrderExt.getPkMember());
iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(secondRangeTableName, saOrderExt.getPkMember(), EYesNo.YES.getIntValue());
// 恢复秒结表奖衔
iCuMemberAwardsService.mergeCuMemberBackAwards(secondRangeTableName, saOrderExt.getPkMember(), currentPeriod);
iCuMemberAwardsService.mergeCuMemberBackAwards(secondRangeTableName, saOrderExt.getPkMember(), currentPeriod, EYesNo.YES.getIntValue());
// 查询 昨天日结 + 今天秒结 血缘伞上+直推
memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeParent(rangeTableName, secondRangeTableName, saOrderExt.getPkMember());
} else {
@ -219,9 +219,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
List<SaOrderExt> retailOrderList = new ArrayList<>();
retailOrderList.add(saOrderExt);
// 实时网体查询血缘上会员更新订单支付日结表等级奖衔
iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(rangeTableName, saOrderExt.getPkMember());
iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(rangeTableName, saOrderExt.getPkMember(), EYesNo.NO.getIntValue());
// 恢复日结表奖衔
iCuMemberAwardsService.mergeCuMemberBackAwards(rangeTableName, saOrderExt.getPkMember(), beforePeriod);
iCuMemberAwardsService.mergeCuMemberBackAwards(rangeTableName, saOrderExt.getPkMember(), beforePeriod, EYesNo.NO.getIntValue());
// 查询 订单下单日结 血缘上会员结算数据
memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList);
}
@ -279,13 +279,17 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
Map<String, CuMemberGrade> cuMemberGradeMap = new HashMap<>();
// 会员奖衔map
Map<String, CuMemberAwards> cuMemberAwardsMap = new HashMap<>();
// 会员分红奖衔map
Map<String, CuMemberAwards> cuMemberShareAwardsMap = new HashMap<>();
// 计算自己等级奖衔等
calculateBackGrade(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, sourceMemberRangeExt);
calculateBackGrade(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName,
cuMemberGradeMap, cuMemberAwardsMap, cuMemberShareAwardsMap, sourceMemberRangeExt);
// 计算团队业绩盒数计算等级奖衔
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = calculateRetailBackRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeMap, cuMemberAwardsMap);
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = calculateRetailBackRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap,
secondRangeTableName, boxNum, cuMemberGradeMap, cuMemberAwardsMap, cuMemberShareAwardsMap);
cuMemberRetailRangeExtList.add(sourceMemberRangeExt);
// 查询期间的等级和奖衔
// 查询期间的等级
List<CuMemberGrade> memberGradeList = iCuMemberGradeService.queryCuMemberGrade(cuMemberRetailRangeExtList, currentPeriod);
// 查询最大的手动奖衔
List<CuMemberGrade> cuMemberGradeList1 = iCuMemberGradeService.queryCuMemberGradeByList(currentPeriod, memberRetailRangeExtList);
@ -304,8 +308,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
cuMemberRetailRangeExt.setGradeValue(bdGrade.getGradeValue());
}
BdGrade bdGrade = gradeIdMap.get(cuMemberRetailRangeExt.getPkGrade());
if (bdGrade != null && bdGrade.getGradeValue() == EGrade.S_VIP.getValue() && cuMemberRetailRangeExt.getPkAwards() < 13) {
cuMemberRetailRangeExt.setPkAwards(13);
if (bdGrade != null && bdGrade.getGradeValue() == EGrade.S_VIP.getValue() && cuMemberRetailRangeExt.getPkAwards() < 11) {
// 如果是合伙人奖衔肯定得有不能置为无
cuMemberRetailRangeExt.setPkAwards(11);
}
}
}
@ -330,24 +335,47 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
iCuMemberService.updateCuMemberMinGradeByList(cuMemberGradeList, currentPeriod);
}
}
// 当期的所有奖衔升级记录
List<CuMemberAwards> memberAwardsList = iCuMemberAwardsService.queryCuMemberAwards(cuMemberRetailRangeExtList, currentPeriod);
if (memberAwardsList.size() > 0) {
// 当月奖衔升级记录
List<CuMemberAwards> pkAwardsList = memberAwardsList.stream().filter(tmpData -> tmpData.getAwardType() == EAwardsType.RANGE_TYPE.getValue()).collect(Collectors.toList());
// 分红奖衔升级记录
List<CuMemberAwards> pkShareAwardsList = memberAwardsList.stream().filter(tmpData -> tmpData.getAwardType() == EAwardsType.SHARE_TYPE.getValue()).collect(Collectors.toList());
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
for (CuMemberAwards cuMemberAwards : memberAwardsList) {
if (CollectionUtil.isNotEmpty(pkAwardsList)) {
for (CuMemberAwards cuMemberAwards : pkAwardsList) {
String key = cuMemberAwards.getPkMember() + "_" + cuMemberAwards.getNewLevel();
if (!cuMemberAwardsMap.containsKey(key)) {
CuMemberRetailRangeExt cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberAwards.getPkMember());
if (cuMemberAwards.getOldLevel() < cuMemberRetailRangeExt.getPkAwards()) {
cuMemberRetailRangeExt.setPkAwards(cuMemberAwards.getOldLevel());
}
if (cuMemberRetailRangeExt.getGradeValue() == EGrade.S_VIP.getValue() && cuMemberRetailRangeExt.getPkAwards() < 13) {
cuMemberRetailRangeExt.setPkAwards(13);
if (cuMemberRetailRangeExt.getGradeValue() == EGrade.S_VIP.getValue() && cuMemberRetailRangeExt.getPkAwards() < 11) {
// 如果是合伙人奖衔肯定得有不能置为无
cuMemberRetailRangeExt.setPkAwards(11);
continue;
}
cuMemberAwards.setNewLevel(cuMemberAwards.getOldLevel());
cuMemberAwardsList.add(cuMemberAwards);
}
}
}
if (CollectionUtil.isNotEmpty(pkShareAwardsList)) {
for (CuMemberAwards cuMemberAwards : pkShareAwardsList) {
String key = cuMemberAwards.getPkMember() + "_" + cuMemberAwards.getNewLevel();
if (!cuMemberShareAwardsMap.containsKey(key)) {
CuMemberRetailRangeExt cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberAwards.getPkMember());
if (cuMemberAwards.getOldLevel() < cuMemberRetailRangeExt.getPkShareAwards()) {
cuMemberRetailRangeExt.setPkShareAwards(cuMemberAwards.getOldLevel());
}
cuMemberAwards.setNewLevel(cuMemberAwards.getOldLevel());
cuMemberAwardsList.add(cuMemberAwards);
}
}
}
// 处理等级奖衔
if (cuMemberAwardsList.size() > 0) {
// 删除会员奖衔记录
@ -836,6 +864,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
return cuMemberAwardsList;
}
/**
* 计算等级奖衔
*/
private void calculateGradeAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName,
SaOrderExt saOrderExt, Map<Integer, BdGrade> retailTeamGradeMap, Map<Integer, BdAwards> retailAwardsMap,
String secondRangeTableName, List<CuMemberGrade> cuMemberGradeList, List<CuMemberAwards> cuMemberAwardsList,
@ -859,7 +890,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 验证小区计算小区累计盒数 查询伞下会员
List<CuMemberRetailRangeExt> cuMemberRangeExtList;
if (secondRangeTableName != null) {
// 秒结表关联昨日结算表查询订单会员直推数据
// 会员表 关联 秒结表 昨日结算表查询订单会员直推数据
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
} else {
// 昨日结算表查询订单会员直推数据
@ -903,108 +934,103 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
}
}
}
// 计算奖衔荣誉级别
// 计算当月奖衔
while (true) {
// 前实时奖衔值 + 5获取下一个奖衔值
// 奖衔值 + 5获取下一个奖衔值
int awardsValue = targetMemberRangeExt.getAwardsValue() + 5;
if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) {
// 等级达到V5 并且 存在下个奖衔判断是否能升奖衔
BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// 先验证累计业绩
// new 升级奖衔判断为当月累计业绩累计业绩为团队业绩 + 个人消费业绩
// new 升级奖衔判断 月累计业绩 = 本人月消费业绩 + 团队月消费业绩
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getTotalCheck())) {
// 累计业绩足够即可升奖衔
// BigDecimal consumeBigPv = BigDecimal.ZERO;
// if (ComputeUtil.compareValue(bdAwards.getCommunityCheck())) {
// // 验证小区计算小区业绩
// List<CuMemberRetailRangeExt> cuMemberRangeExtList;
// if (secondRangeTableName != null) {
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
// } else {
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
// }
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// }
// BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv());
// if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// consumeBigPv = consumePv;
// }
// }
// }
// BigDecimal smallAreaPv = ComputeUtil.computeSubtract(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), consumeBigPv);
// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getCommunityCheck())) {
cuMemberAwardsList.add(getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue()));
targetMemberRangeExt.setPkAwards(bdAwards.getPkId());
targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue());
targetMemberRangeExt.setAwardsName(bdAwards.getAwardsName());
continue;
// }
}
}
break;
}
// // 计算分红奖衔秒结不走这个地方
// while (true) {
// if (null == targetMemberRangeExt.getShareAwardsValue()) {
// break;
// }
// int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5;
// if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) {
// BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// // 先验证累计业绩
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) {
// // 验证小区计算小区业绩
// List<CuMemberRetailRangeExt> cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
// BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv();
//// if (ComputeUtil.compareGreaterThan(targetMemberRangeExt.getBigTeamPv(), consumeBigPv)) {
//// consumeBigPv = targetMemberRangeExt.getBigTeamPv();
//// }
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// }
// BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv());
// if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// consumeBigPv = consumePv;
// }
// }
// BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv));
// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
// if (bdAwards.getPlaceDeptNum() > 0) {
// // 验证是否有多个区满足业绩
// List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck());
// int enoughNum = 0;
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) {
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// }
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()), bdAwards.getShareCommunityCheck())) {
// enoughNum += 1;
// }
// }
// if (bdAwards.getPlaceDeptNum() > enoughNum) {
// break;
// }
// }
// cuMemberAwardsList.add(getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue()));
// targetMemberRangeExt.setShareAwardsValue(bdAwards.getAwardsValue());
// targetMemberRangeExt.setPkShareAwards(bdAwards.getPkId());
// continue;
// }
// }
// }
// break;
// }
// 计算分红奖衔
while (true) {
// 当月奖衔值 + 5获取下一个奖衔值
int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5;
if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) {
BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// 先验证累计业绩
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) {
// 验证小区计算小区业绩拉取直推会员数据
List<CuMemberRetailRangeExt> cuMemberRangeExtList;
if (secondRangeTableName != null) {
// 会员表 关联 秒结表 昨日结算表查询订单会员直推数据
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
} else {
// 昨日结算表查询订单会员直推数据
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
}
// 本人月消费业绩默认为大区
BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv();
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
}
// 月累计业绩 = 本人月消费业绩 + 团队月消费业绩
BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv());
if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// 月累计业绩 > 大区业绩则月累计就成为大区了
consumeBigPv = consumePv;
}
}
// 小区业绩 = 本人月消费业绩 + 团队月消费业绩 - 大区业绩
BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv));
if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
// 小区业绩 >= 小区考核业绩
if (bdAwards.getPlaceDeptNum() > 0) {
// 验证是否有多个区满足业绩
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList;
if (secondRangeTableName != null) {
// 会员表 关联 秒结表 昨日结算表查询订单会员直推数据
cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
} else {
// 昨日结算表查询订单会员直推数据
cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck());
}
int enoughNum = 0;
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) {
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
}
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()), bdAwards.getShareCommunityCheck())) {
// 本人月消费业绩 + 团队月消费业绩 >= 小区考核业绩则满足条件小部门 +1
enoughNum += 1;
}
}
if (bdAwards.getPlaceDeptNum() > enoughNum) {
break;
}
}
cuMemberAwardsList.add(getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue()));
targetMemberRangeExt.setShareAwardsValue(bdAwards.getAwardsValue());
targetMemberRangeExt.setPkShareAwards(bdAwards.getPkId());
continue;
}
}
}
break;
}
}
/**
* 计算团队极差奖衔
*/
public List<CuMemberRetailRangeExt> calculateRetailBackRangeGradeAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt,
Map<Integer, BdGrade> retailTeamGradeMap, Map<Integer, BdAwards> retailAwardsMap, String secondRangeTableName,
Integer boxNum, Map<String, CuMemberGrade> cuMemberGradeMap, Map<String, CuMemberAwards> cuMemberAwardsMap) {
Map<Integer, BdGrade> retailTeamGradeMap, Map<Integer, BdAwards> retailAwardsMap, String secondRangeTableName, Integer boxNum,
Map<String, CuMemberGrade> cuMemberGradeMap, Map<String, CuMemberAwards> cuMemberAwardsMap, Map<String, CuMemberAwards> cuMemberShareAwardsMap) {
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = new ArrayList<>();
// 订单会员
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
@ -1029,7 +1055,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() - boxNum);
targetMemberRangeExt.setTeamMonthBoxNum(targetMemberRangeExt.getTeamMonthBoxNum() - boxNum);
// 计算等级
calculateBackGrade(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, targetMemberRangeExt);
calculateBackGrade(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName,
cuMemberGradeMap, cuMemberAwardsMap, cuMemberShareAwardsMap, targetMemberRangeExt);
cuMemberRetailRangeExtList.add(targetMemberRangeExt);
}
// 计算等级
@ -1038,9 +1065,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
return cuMemberRetailRangeExtList;
}
private void calculateBackGrade(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName,
SaOrderExt saOrderExt, Map<Integer, BdGrade> retailTeamGradeMap, Map<Integer, BdAwards> retailAwardsMap,
String secondRangeTableName, Map<String, CuMemberGrade> cuMemberGradeMap, Map<String, CuMemberAwards> cuMemberAwardsMap,
private void calculateBackGrade(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt,
Map<Integer, BdGrade> retailTeamGradeMap, Map<Integer, BdAwards> retailAwardsMap, String secondRangeTableName,
Map<String, CuMemberGrade> cuMemberGradeMap, Map<String, CuMemberAwards> cuMemberAwardsMap, Map<String, CuMemberAwards> cuMemberShareAwardsMap,
CuMemberRetailRangeExt targetMemberRangeExt) {
// 遍历团队等级mapV4,V5
for (Integer gradeValue : retailTeamGradeMap.keySet()) {
@ -1053,7 +1080,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 验证小区计算小区累计盒数 查询伞下会员
List<CuMemberRetailRangeExt> cuMemberRangeExtList;
if (secondRangeTableName != null) {
// 秒结表关联昨日结算表查询订单会员直推数据
// 会员表 关联 秒结表 昨日结算表查询订单会员直推数据
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
} else {
// 昨日结算表查询订单会员直推数据
@ -1107,32 +1134,83 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// new 升级奖衔判断为当月累计业绩累计业绩为团队业绩 + 个人消费业绩
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getTotalCheck())) {
// 累计业绩足够即可升奖衔
// // 验证小区计算小区业绩
// List<CuMemberRetailRangeExt> cuMemberRangeExtList;
// if (secondRangeTableName != null) {
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
// } else {
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
// }
// BigDecimal consumeBigPv = BigDecimal.ZERO;
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// }
// BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv());
// if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// consumeBigPv = consumePv;
// }
// }
// BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv);
// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getCommunityCheck())) {
CuMemberAwards cuMemberRetailAwards = getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue());
cuMemberAwardsMap.put(cuMemberRetailAwards.getPkMember() + "_" + cuMemberRetailAwards.getNewLevel(), cuMemberRetailAwards);
targetMemberRangeExt.setPkAwards(bdAwards.getPkId());
targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue());
targetMemberRangeExt.setAwardsName(bdAwards.getAwardsName());
continue;
// }
}
}
break;
}
// 计算分红奖衔
while (true) {
// 当月奖衔值 + 5获取下一个奖衔值
int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5;
if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) {
BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// 先验证累计业绩
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) {
// 验证小区计算小区业绩拉取直推会员数据
List<CuMemberRetailRangeExt> cuMemberRangeExtList;
if (secondRangeTableName != null) {
// 会员表 关联 秒结表 昨日结算表查询订单会员直推数据
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
} else {
// 昨日结算表查询订单会员直推数据
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
}
// 本人月消费业绩默认为大区
BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv();
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
}
// 月累计业绩 = 本人月消费业绩 + 团队月消费业绩
BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv());
if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// 月累计业绩 > 大区业绩则月累计就成为大区了
consumeBigPv = consumePv;
}
}
// 小区业绩 = 本人月消费业绩 + 团队月消费业绩 - 大区业绩
BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv));
if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
// 小区业绩 >= 小区考核业绩
if (bdAwards.getPlaceDeptNum() > 0) {
// 验证是否有多个区满足业绩
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList;
if (secondRangeTableName != null) {
// 会员表 关联 秒结表 昨日结算表查询订单会员直推数据
cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
} else {
// 昨日结算表查询订单会员直推数据
cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck());
}
int enoughNum = 0;
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) {
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
}
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()), bdAwards.getShareCommunityCheck())) {
// 本人月消费业绩 + 团队月消费业绩 >= 小区考核业绩则满足条件小部门 +1
enoughNum += 1;
}
}
if (bdAwards.getPlaceDeptNum() > enoughNum) {
break;
}
}
CuMemberAwards cuMemberRetailAwards = getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue());
cuMemberShareAwardsMap.put(cuMemberRetailAwards.getPkMember() + "_" + cuMemberRetailAwards.getNewLevel(), cuMemberRetailAwards);
targetMemberRangeExt.setShareAwardsValue(bdAwards.getAwardsValue());
targetMemberRangeExt.setPkShareAwards(bdAwards.getPkId());
continue;
}
}
}
break;

View File

@ -54,8 +54,10 @@ public interface CuMemberAwardsMapper extends BaseMapper<CuMemberAwards> {
/**
* 回退等级
*/
void mergeCuMemberBackAwards(@Param("rangeTableName") String rangeTableName, @Param("pkMember") Long pkMember,
@Param("period") Integer period);
void mergeCuMemberBackAwards(@Param("rangeTableName") String rangeTableName,
@Param("pkMember") Long pkMember,
@Param("period") Integer period,
@Param("awardType") Integer awardType);
/**
* 根据结算表更新奖衔

View File

@ -59,7 +59,7 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
/**
* 回退奖衔
*/
void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period);
void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period, Integer isToday);
/**
* 删除奖衔升级记录

View File

@ -110,8 +110,12 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
}
@Override
public void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period) {
baseMapper.mergeCuMemberBackAwards(rangeTableName, pkMember, period);
public void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period, Integer isToday) {
baseMapper.mergeCuMemberBackAwards(rangeTableName, pkMember, period, EAwardsType.RANGE_TYPE.getValue());
if (EYesNo.YES.getIntValue() == isToday) {
// 当天需要处理秒结的分红奖衔
baseMapper.mergeCuMemberBackAwards(rangeTableName, pkMember, period, EAwardsType.SHARE_TYPE.getValue());
}
}
private Boolean calculateAwards(Map<String, BdAwards> countryAwardsMap, String settleTableName, Date settleDate, Integer period, List<CuMemberSettleExt> cuMemberSettleExtList) {

View File

@ -13,6 +13,7 @@
<result column="PHONE" property="phone"/>
<result column="PK_GRADE" property="pkGrade"/>
<result column="PK_AWARDS" property="pkAwards"/>
<result column="PK_SHARE_AWARDS" property="pkShareAwards"/>
<result column="ACCOUNT_STATUS" property="accountStatus"/>
<result column="PAY_STATUS" property="payStatus"/>
<result column="PAY_TIME" property="payTime"/>
@ -80,7 +81,6 @@
team_num = 0,
enable_status = 1,
pk_grade = (select pk_id from bd_grade where del_flag = 0 and grade_value = 20),
pk_share_awards = (select pk_id from BD_AWARDS where awards_value = 0),
region_address = 0,
big_box_num = 0,
small_box_num = 0,
@ -91,7 +91,7 @@
<update id="mergeMemberRetailRangeByYesterday">
merge into ${rangeTableName} a
using(
select pk_member, pk_grade, pk_share_awards, enable_status,
select pk_member, pk_grade, pk_awards, pk_share_awards, enable_status,
new_box_num, consume_box_num, month_box_num,
new_consume_pv, consume_pv, month_consume_pv,
team_new_box_num, team_box_num, team_month_box_num,
@ -120,7 +120,6 @@
,a.team_month_box_num = b.team_month_box_num
,a.team_month_pv = b.team_month_pv
,a.team_month_amount = b.team_month_amount
,a.pk_share_awards = b.pk_share_awards
</if>
</update>
@ -157,6 +156,7 @@
a.pk_parent,
a.pk_settle_grade pk_grade,
a.pk_awards,
a.pk_range_awards,
a.is_activate enable_status,
a.system_type
from (select *
@ -169,8 +169,8 @@
) b
on (a.pk_member = b.pk_member)
when not matched then
insert (pk_member, pk_parent, pk_grade, pk_awards, enable_status, system_type)
values (b.pk_member, b.pk_parent, b.pk_grade, b.pk_awards, b.enable_status, b.system_type)
insert (pk_member, pk_parent, pk_grade, pk_awards, pk_share_awards, enable_status, system_type)
values (b.pk_member, b.pk_parent, b.pk_grade, b.pk_awards, b.pk_range_awards, b.enable_status, b.system_type)
</update>
<!-- 更新极差秒接表,用昨天的结算表 -->
@ -181,6 +181,7 @@
a.pk_parent,
a.pk_settle_grade pk_grade,
a.pk_awards,
a.pk_range_awards,
nvl(b.enable_status, 1) enable_status
from (select *
from cu_member
@ -203,7 +204,9 @@
merge into ${secondTableName} a
using (
<foreach collection="cuMemberRangeExtList" item="item" open=" " close=" " separator="union">
select #{item.pkMember} pk_member, #{item.pkGrade} pk_grade, #{item.pkAwards} pk_awards,
select
#{item.pkMember} pk_member, #{item.pkGrade} pk_grade,
#{item.pkAwards} pk_awards, #{item.pkShareAwards} pk_share_awards,
#{item.newBoxNum} new_box_num, #{item.newConsumePv} new_consume_pv,
#{item.teamNewBoxNum} team_new_box_num, #{item.teamNewPv} team_new_pv,
#{item.teamNewAmount} team_new_amount, #{item.enableStatus} enable_status
@ -212,7 +215,7 @@
) b
on (a.pk_member = b.pk_member)
when matched then
update set a.pk_grade = b.pk_grade, a.pk_awards = b.pk_awards,
update set a.pk_grade = b.pk_grade, a.pk_awards = b.pk_awards, a.pk_share_awards = b.pk_share_awards,
a.new_box_num = b.new_box_num, a.new_consume_pv = b.new_consume_pv,
a.team_new_box_num = b.team_new_box_num, a.team_new_pv = b.team_new_pv,
a.team_new_amount = b.team_new_amount, a.enable_status = b.enable_status
@ -221,13 +224,17 @@
<update id="mergeMemberRetailGradeByMember">
merge into ${rangeTableName} a
using (
select pk_id pk_member, pk_parent, pk_settle_grade, pk_awards
select pk_id pk_member, pk_parent,
pk_settle_grade, pk_awards, pk_range_awards
from cu_member start with pk_id = #{pkMember}
connect by prior pk_parent = pk_id
) b
on (a.pk_member = b.pk_member)
when matched then
update set a.pk_grade = b.pk_settle_grade, a.pk_awards = b.pk_awards
<if test="isToday == 0">
, a.pk_share_awards = b.pk_range_awards
</if>
</update>
<update id="mergeMemberRetailRegion">
@ -305,6 +312,7 @@
a.account_status,
a.pk_grade,
a.pk_awards,
a.pk_share_awards,
a.income_status,
a.consume_pv,
a.pay_time,
@ -313,7 +321,6 @@
a.income_status,
a.pk_country,
a.pk_settle_country,
a.pk_share_awards,
a.enable_status,
new_box_num,
consume_box_num,
@ -332,7 +339,6 @@
team_month_amount,
recommend_num,
team_num,
pk_grade,
ba.grade_value,
ba.grade_name,
bw.awards_value,
@ -373,6 +379,7 @@
a.account_status,
a.pk_grade,
a.pk_awards,
a.pk_share_awards,
a.income_status,
a.consume_pv,
a.pay_time,
@ -380,7 +387,6 @@
a.income_status,
a.pk_country,
a.pk_settle_country,
a.pk_share_awards,
a.big_box_num,
a.small_box_num,
a.big_team_pv,
@ -407,7 +413,7 @@
ba.grade_name,
bw.awards_value,
bw.awards_name,
bwa.awards_value share_awards_value,
bws.awards_value share_awards_value,
bw.range_ratio,
bw.benefit_avg_ratio,
bw.benefit_share_ratio,
@ -416,13 +422,12 @@
inner join bd_grade ba
on a.pk_grade = ba.pk_id
inner join bd_awards bw
on bw.pk_id = a.pk_awards
on bw.pk_id = a.pk_awards and bw.del_flag = 0
inner join bd_awards bws
on bws.pk_id = a.pk_share_awards and bws.del_flag = 0
left join bd_area br
on br.pk_id = a.region_address and br.del_flag = 0
left join bd_awards bwa
on bwa.pk_id = a.pk_share_awards and bwa.del_flag = 0
where ba.del_flag = 0
and bw.del_flag = 0
and a.pk_parent = #{pkParent}
</select>
@ -504,9 +509,9 @@
pk_parent,
member_code,
member_name,
a.pk_awards,
a.pk_grade,
a.pk_rate,
a.pk_grade,
a.pk_awards,
a.pk_share_awards,
a.enable_status,
a.income_status,
@ -518,6 +523,7 @@
bg.grade_name,
bw.awards_value,
bw.awards_name,
bwa.awards_value share_awards_value,
a.account_status,
a.category,
bw.range_ratio,
@ -527,6 +533,8 @@
from ${rangeTableName} a
inner join bd_awards bw
on bw.pk_id = a.pk_awards
inner join bd_awards bwa
on bwa.pk_id = a.pk_share_awards
inner join bd_grade bg
on bg.pk_id = a.pk_grade
inner join bd_area ba
@ -595,6 +603,7 @@
cm.account_status,
a.pk_grade,
a.pk_awards,
a.pk_share_awards,
cm.income_status,
cm.pay_time,
b.pk_rate,
@ -626,6 +635,7 @@
bw.range_ratio,
bw.benefit_avg_ratio,
bw.benefit_share_ratio,
bws.awards_value share_awards_value,
br.name country_name,
cr.county region_address
from (
@ -638,15 +648,16 @@
inner join cu_member cm
on cm.pk_id = a.pk_member
inner join bd_awards bw
on bw.pk_id = a.pk_awards
on bw.pk_id = a.pk_awards and bw.del_flag = 0
inner join bd_awards bws
on bws.pk_id = a.pk_share_awards and bws.del_flag = 0
inner join bd_grade bg
on bg.pk_id = a.pk_grade
left join cu_member_retail_region cr
on cr.pk_member = cm.pk_id and cr.effective = 0 and cr.del_flag = 0
left join bd_area br
on br.pk_id = cr.county and br.del_flag = 0
where bw.del_flag = 0
and bg.del_flag = 0
where bg.del_flag = 0
</select>
<select id="queryCuMemberSecondRange" resultMap="CuMemberRetailRangeExt">
@ -679,6 +690,9 @@
<select id="queryCuMemberSecondRangeExtByParent" resultMap="CuMemberRetailRangeExt">
select cm.pk_id pkMember,
cm.pk_parent,
nvl(b.month_consume_pv, 0) + nvl(a.new_consume_pv, 0) month_consume_pv,
nvl(b.team_month_pv, 0) + nvl(a.team_new_pv, 0) team_month_pv,
nvl(b.consume_box_num, 0) + nvl(a.new_box_num, 0) consume_box_num,
nvl(b.team_box_num, 0) + nvl(a.team_new_box_num, 0) team_box_num,
nvl(b.big_box_num, 0) big_box_num,
@ -766,24 +780,25 @@
<select id="queryCuMemberRetailRangeEnoughAchieve" resultType="com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt">
select pk_member,
pk_parent,
consume_box_num,
new_box_num,
team_box_num,
consume_box_num,
month_box_num,
team_new_box_num,
new_consume_pv,
consume_pv,
month_consume_pv,
new_consume_pv,
team_consume_amount,
team_new_box_num,
team_box_num,
team_month_box_num,
team_new_pv,
team_consume_pv,
team_month_amount,
team_month_pv,
team_new_amount,
team_consume_amount,
team_month_amount,
big_box_num,
small_box_num,
big_team_pv,
small_team_pv,
team_new_amount,
team_new_pv
small_team_pv
from ${tableName}
where pk_parent = #{pkParent}
</select>

View File

@ -460,17 +460,17 @@
inner join (
select a.pk_member,a.new_level pk_awards
from cu_member_awards a
inner join(
inner join (
select pk_member, max(pk_id) pk_id
from cu_member_awards
where del_flag = 0 and up_type=2
where del_flag = 0 and up_type = 2
and end_validity_date &lt;= #{settleDate, jdbcType=DATE}
and award_type = #{awardType}
group by pk_member) b
on a.pk_id = b.pk_id
where a.del_flag = 0
) y
on x.pk_member=y.pk_member
on x.pk_member = y.pk_member
where
<if test="awardType == 1">
x.pk_awards &lt; y.pk_awards
@ -486,25 +486,26 @@
a.pk_awards = b.pk_awards
</if>
<if test="awardType == 2">
a.pk_share_awards=b.pk_awards
a.pk_share_awards = b.pk_awards
</if>
</update>
<!-- 初始化期间奖衔 -->
<update id="updateCuMemberRetailRangeInitAward">
update ${rangeTableName}
set pk_awards = (select pk_id from bd_awards where awards_value = 0)
set pk_awards = (select pk_id from bd_awards where awards_value = 0),
pk_share_awards = (select pk_id from bd_awards where awards_value = 0)
</update>
<!-- 初始化期间V5奖衔 -->
<update id="updateCuMemberRetailRangeInitV5Award">
update ${rangeTableName}
set pk_awards = (select pk_id from bd_awards where awards_value = 5)
set pk_awards = (select pk_id from bd_awards where awards_value = 5),
pk_share_awards = (select pk_id from bd_awards where awards_value = 5)
where pk_grade = (
select pk_id
from bd_grade
where grade_value = 70
and del_flag = 0
where grade_value = 70 and del_flag = 0
)
</update>
@ -529,7 +530,8 @@
pk_member NUMBER(20) not null,
pk_parent NUMBER(20) not null,
pk_grade NUMBER(4) not null,
pk_awards number(4) default 1 not null,
pk_awards number(4) default 10 not null,
pk_share_awards number(4) default 10 not null,
enable_status number(2) default 1 not null,
system_type NUMBER(2) default 2 not null,
new_box_num number(8) default 0 not null,
@ -550,8 +552,8 @@
customer_type NUMBER(2) not null,
phone VARCHAR2(40) not null,
pk_grade NUMBER(4) not null,
pk_awards number(4) default 1 not null,
pk_share_awards number(4) default 12 not null,
pk_awards number(4) default 10 not null,
pk_share_awards number(4) default 10 not null,
enable_status number(2) default 1 not null,
account_status number(1) default 0 not null,
pay_status NUMBER(2) default 0 not null,

View File

@ -195,7 +195,7 @@
using (
select pk_member, max(new_level) pk_awards
from cu_member_awards
where period = #{period} and award_type=#{awardType}
where period = #{period} and award_type = #{awardType}
and del_flag = 0
group by pk_member
) b
@ -324,7 +324,8 @@
<update id="updateCuMemberRetailRangeAwardByDate">
merge into cu_member a
using (
select y.pk_member,y.pk_awards from cu_member x
select y.pk_member, y.pk_awards
from cu_member x
inner join (
select a.pk_member,a.new_level pk_awards
from cu_member_awards a
@ -363,13 +364,15 @@
<!-- 初始化会员奖衔 -->
<update id="updateCuMemberRetailRangeInitAward">
update cu_member
set pk_awards = (select pk_id from bd_awards where awards_value = 0)
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)
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
@ -401,7 +404,11 @@
using (
select pk_member, max(pk_awards) pk_awards from (
<foreach item="item" index="index" collection="cuMemberAwardsList" separator=" union ">
select #{item.pkMember} pk_member,#{item.newLevel} pk_awards, #{item.awardType} award_type from dual
select
#{item.pkMember} pk_member,
#{item.newLevel} pk_awards,
#{item.awardType} award_type
from dual
</foreach>
)
where award_type = #{awardType}

View File

@ -71,11 +71,12 @@
from cu_member_awards ca
inner join bd_awards bw
on ca.new_level = bw.pk_id
where ca.del_flag = 0
and bw.del_flag = 0
and bw.awards_value >= 5
where ca.del_flag = 0
and ca.up_type = 1
and ca.period = #{period}
and ca.award_type = #{awardType}
and ca.pk_member in
(select pk_id
from cu_member start
@ -85,7 +86,13 @@
) cx on cw.pk_id = cx.pk_id where cw.del_flag = 0
) b on (a.pk_member = b.pk_member)
when matched then
update set a.pk_awards = b.old_level
update set
<if test="awardType == 1">
a.pk_awards = b.old_level
</if>
<if test="awardType == 2">
a.pk_share_awards = b.old_level
</if>
</update>
<!-- 删除自动升级的奖衔升级记录 -->
@ -142,7 +149,8 @@
</select>
<select id="queryCuMemberAwards" resultType="com.hzs.common.domain.member.detail.CuMemberAwards">
select ca.* from cu_member_awards ca
select ca.*
from cu_member_awards ca
inner join bd_awards bw
on ca.new_level = bw.pk_id
where ca.del_flag = 0

View File

@ -12,14 +12,14 @@ import lombok.Getter;
public enum EAwardsType {
/**
* 级差奖衔荣誉级别
* 当月奖衔
*/
RANGE_TYPE(1, "级差奖衔", 0, EnumsPrefixConstants.AWARDS_TYPE + "1"),
RANGE_TYPE(1, "当月奖衔", 0),
/**
* 荣誉奖衔分红奖衔
* 分红奖衔
*/
SHARE_TYPE(2, "荣誉奖衔", 0, EnumsPrefixConstants.AWARDS_TYPE + "2"),
SHARE_TYPE(2, "分红奖衔", 0),
;
@ -35,8 +35,4 @@ public enum EAwardsType {
* 是否启用0=,1= -- 来源EYesNo
*/
private final int enable;
/**
* 国际化翻译key值
*/
private final String key;
}

View File

@ -53,6 +53,9 @@ public class CuMemberRetailRange extends BaseEntity {
@TableField("PK_GRADE")
private Integer pkGrade;
/**
* 会员奖衔当月奖衔
*/
@TableField("PK_AWARDS")
private Integer pkAwards;

View File

@ -28,6 +28,9 @@ public class CuMemberRetailRangeExt extends CuMemberRetailRange {
*/
private Integer awardsValue;
/**
* 分红奖衔值
*/
private Integer shareAwardsValue;
/**

View File

@ -157,13 +157,13 @@ public class CuMember extends BaseEntity {
private Integer pkSettleGradeValue;
/**
* 真实奖衔
* 当月奖衔
*/
@TableField("PK_AWARDS")
private Integer pkAwards;
/**
* 最高奖衔
* 最高奖衔荣誉奖衔
*/
@TableField("PK_MAX_AWARDS")
private Integer pkMaxAwards;
@ -392,13 +392,13 @@ public class CuMember extends BaseEntity {
private Integer systemType;
/**
* 荣誉奖衔
* 分红奖衔
*/
@TableField("PK_RANGE_AWARDS")
private Integer pkRangeAwards;
/**
* 福利奖衔
* 福利奖衔(暂时不用
*/
@TableField("PK_BENEFIT_AWARDS")
private Integer pkBenefitAwards;