3
0
Fork 0

## 调整等级判断处理,注水单独处理;

This commit is contained in:
cabbage 2025-06-17 11:26:08 +08:00
parent b84e3439ee
commit 555bfecd30
6 changed files with 16 additions and 103 deletions

View File

@ -1,7 +1,6 @@
package com.hzs.bonus.settle; package com.hzs.bonus.settle;
import com.hzs.common.core.domain.R; import com.hzs.common.core.domain.R;
import com.hzs.common.domain.member.bonus.CuMemberRetail;
import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.sale.order.SaOrder;
import java.util.Date; import java.util.Date;
@ -44,9 +43,4 @@ public interface IMemberSettleBonusApi {
void calculateCuMemberRetailRangeBonusBySaOrder(); void calculateCuMemberRetailRangeBonusBySaOrder();
/*
* 根据会员查询会员的 大小区盒数业绩
**/
R<CuMemberRetail> queryValidateBoxOrAchieve(Long pkMember);
} }

View File

@ -232,17 +232,6 @@ public class CuMemberSettleController extends BaseController {
return AjaxResult.success(); return AjaxResult.success();
} }
/**
* 秒接结算业绩仅用于测试
* w
*
* @return AjaxResult
*/
@GetMapping("/validate/{pkMember}")
public TableDataInfo validateBigBox(@PathVariable("pkMember") Long pkMember) {
return getDataTable(Collections.singletonList(bonusSettleService.queryValidateBoxOrAchieve(pkMember)));
}
/** /**
* 秒接结算业绩仅用于测试 * 秒接结算业绩仅用于测试
* *

View File

@ -9,7 +9,6 @@ import com.hzs.bonus.bonus.service.ICuMemberRetailLogService;
import com.hzs.bonus.settle.IMemberSettleBonusApi; import com.hzs.bonus.settle.IMemberSettleBonusApi;
import com.hzs.common.core.domain.R; import com.hzs.common.core.domain.R;
import com.hzs.common.core.utils.DateUtils; import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.domain.member.bonus.CuMemberRetail;
import com.hzs.common.domain.member.bonus.CuMemberRetailLog; import com.hzs.common.domain.member.bonus.CuMemberRetailLog;
import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.sale.order.SaOrder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -118,8 +117,4 @@ public class MemberSettleBonusProvider implements IMemberSettleBonusApi {
} }
} }
@Override
public R<CuMemberRetail> queryValidateBoxOrAchieve(Long pkMember) {
return R.ok(iBonusSettleService.queryValidateBoxOrAchieve(pkMember));
}
} }

View File

@ -1,6 +1,5 @@
package com.hzs.bonus.bonus.service; package com.hzs.bonus.bonus.service;
import com.hzs.common.domain.member.bonus.CuMemberRetail;
import com.hzs.common.domain.sale.ext.SaOrderExt; import com.hzs.common.domain.sale.ext.SaOrderExt;
import java.util.List; import java.util.List;
@ -28,9 +27,4 @@ public interface IBonusSettleService {
**/ **/
void repeatCuMemberBonusByExpand(String settleDate, List<SaOrderExt> saOrderExtList); void repeatCuMemberBonusByExpand(String settleDate, List<SaOrderExt> saOrderExtList);
/*
* 根据会员查询会员的 大小区盒数业绩
**/
CuMemberRetail queryValidateBoxOrAchieve(Long pkMember);
} }

View File

@ -576,62 +576,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
} }
/**
* 查询会员验证大小区区域算法2种条件1 实际满足V5 1种是满足 30w 小区10w
*/
CuMemberRetail queryValidateBoxOrAchieve(int currentPeriod, int beforePeriod, Long pkMember) {
CuMemberRetail cuMemberRetail = new CuMemberRetail();
String rangeTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE + beforePeriod;
String secondRangeTableName = TableNameConstants.CU_MEMBER_RETAIL_S + currentPeriod;
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRange(rangeTableName, secondRangeTableName, pkMember);
List<CuMemberRetailRangeExt> cuMemberRangeExtList = new ArrayList<>();
CuMemberRetailRangeExt targetMemberRangeExt = null;
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
if (cuMemberRetailRangeExt.getPkParent().equals(pkMember)) {
cuMemberRangeExtList.add(cuMemberRetailRangeExt);
} else {
targetMemberRangeExt = cuMemberRetailRangeExt;
}
}
if (targetMemberRangeExt == null) {
return null;
}
// 计算大区盒数小区盒数
int bigBoxNum = targetMemberRangeExt.getConsumeBoxNum();
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum()
- cuMemberRetailRangeExt.getBigBoxNum() - cuMemberRetailRangeExt.getSmallBoxNum();
if (areaBoxNum > bigBoxNum) {
bigBoxNum = areaBoxNum;
}
}
// 实际盒数去掉注水
int realBoxNum = targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum() -
targetMemberRangeExt.getBigBoxNum() - targetMemberRangeExt.getSmallBoxNum();
int smallBoxNum = realBoxNum - bigBoxNum;
cuMemberRetail.setRealBoxNum(realBoxNum);
cuMemberRetail.setBigBoxNum(bigBoxNum);
cuMemberRetail.setSmallBoxNum(smallBoxNum);
// 计算大小区业绩
BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv();
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
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));
cuMemberRetail.setTeamMonthPv(ComputeUtil.computeAdd(targetMemberRangeExt.getMonthConsumePv(), targetMemberRangeExt.getTeamMonthPv()));
cuMemberRetail.setBigAreaPv(consumeBigPv);
cuMemberRetail.setSmallAreaPv(smallAreaPv);
cuMemberRetail.setValidateFlag(Boolean.FALSE);
if ((cuMemberRetail.getRealBoxNum() >= 2400 && cuMemberRetail.getSmallBoxNum() >= 500) ||
(ComputeUtil.compareValue(cuMemberRetail.getTeamMonthPv(), BigDecimal.valueOf(46875)) && ComputeUtil.compareValue(cuMemberRetail.getSmallAreaPv(), BigDecimal.valueOf(15625)))) {
cuMemberRetail.setValidateFlag(Boolean.TRUE);
}
return cuMemberRetail;
}
void calculateRangeEvBonus(Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberRangeExt> memberRangeExtMap, List<CuMemberBonusPush> cuMemberBonusPushList, List<BdWaresBonusExt> bdWaresBonusExtList, SaOrderExt saOrderExt) { void calculateRangeEvBonus(Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberRangeExt> memberRangeExtMap, List<CuMemberBonusPush> cuMemberBonusPushList, List<BdWaresBonusExt> bdWaresBonusExtList, SaOrderExt saOrderExt) {
CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
if (ComputeUtil.compareValue(saOrderExt.getOrderAssAchieve(), BigDecimal.valueOf(15.625))) { if (ComputeUtil.compareValue(saOrderExt.getOrderAssAchieve(), BigDecimal.valueOf(15.625))) {
@ -926,23 +870,26 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 注水大区如果大则使用注水盒数为大区 // 注水大区如果大则使用注水盒数为大区
bigBoxNum = targetMemberRangeExt.getBigBoxNum(); bigBoxNum = targetMemberRangeExt.getBigBoxNum();
} }
if (targetMemberRangeExt.getSmallBoxNum() > bigBoxNum) {
// 注水小区如果大则使用注水盒数为大区
bigBoxNum = targetMemberRangeExt.getSmallBoxNum();
}
// 秒结补全直推数据此处秒结和日结可以使用同一逻辑 // 秒结补全直推数据此处秒结和日结可以使用同一逻辑
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) { for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
} }
// 最新确认逻辑计算大小区时需要去掉注水
// 伞下团队累计盒数 + 自己消费盒数 // 伞下团队累计盒数 + 自己消费盒数
int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum() int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum();
- cuMemberRetailRangeExt.getBigBoxNum() - cuMemberRetailRangeExt.getSmallBoxNum();
if (areaBoxNum > bigBoxNum) { if (areaBoxNum > bigBoxNum) {
// 实际订单累计盒数 大于 累计消费盒数实际订单累计盒数为大区 // 实际订单累计盒数 大于 累计消费盒数实际订单累计盒数为大区
bigBoxNum = areaBoxNum; bigBoxNum = areaBoxNum;
} }
} }
// 小区盒数 // 小区盒数团队累计盒数 + 自消费累计盒数 + 两个注水虚拟盒数 - 大市场盒数
int smallBoxNum = targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum() - bigBoxNum; int smallBoxNum = targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum()
+ targetMemberRangeExt.getBigBoxNum() + targetMemberRangeExt.getSmallBoxNum() - bigBoxNum;
if (smallBoxNum >= bdGrade.getBoxSmallTotal()) { if (smallBoxNum >= bdGrade.getBoxSmallTotal()) {
// 小区盒数 大于等于 升级小区盒数 // 小区盒数 大于等于 升级小区盒数
CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade); CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade);
@ -1114,23 +1061,26 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 注水大区如果大则使用注水盒数为大区 // 注水大区如果大则使用注水盒数为大区
bigBoxNum = targetMemberRangeExt.getBigBoxNum(); bigBoxNum = targetMemberRangeExt.getBigBoxNum();
} }
if (targetMemberRangeExt.getSmallBoxNum() > bigBoxNum) {
// 注水小区如果大则使用注水盒数为大区
bigBoxNum = targetMemberRangeExt.getSmallBoxNum();
}
// 秒结补全直推数据此处秒结和日结可以使用同一逻辑 // 秒结补全直推数据此处秒结和日结可以使用同一逻辑
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) { for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
} }
// 最新确认逻辑计算大小区时需要去掉注水
// 伞下团队累计盒数 + 自己消费盒数 // 伞下团队累计盒数 + 自己消费盒数
int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum() int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum();
- cuMemberRetailRangeExt.getBigBoxNum() - cuMemberRetailRangeExt.getSmallBoxNum();
if (areaBoxNum > bigBoxNum) { if (areaBoxNum > bigBoxNum) {
// 实际订单累计盒数 大于 累计消费盒数实际订单累计盒数为大区 // 实际订单累计盒数 大于 累计消费盒数实际订单累计盒数为大区
bigBoxNum = areaBoxNum; bigBoxNum = areaBoxNum;
} }
} }
// 小区盒数 // 小区盒数团队累计盒数 + 自消费累计盒数 + 两个注水虚拟盒数 - 大市场盒数
int smallBoxNum = targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum() - bigBoxNum; int smallBoxNum = targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum()
+ targetMemberRangeExt.getBigBoxNum() + targetMemberRangeExt.getSmallBoxNum() - bigBoxNum;
if (smallBoxNum >= bdGrade.getBoxSmallTotal()) { if (smallBoxNum >= bdGrade.getBoxSmallTotal()) {
// 小区盒数 大于等于 升级小区盒数 // 小区盒数 大于等于 升级小区盒数
CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade); CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade);

View File

@ -294,15 +294,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
} }
} }
@Override
public CuMemberRetail queryValidateBoxOrAchieve(Long pkMember) {
String settleDate = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, DateUtils.currentDate());
String beforeDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS));
int currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
int beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId();
return bonusSettleRangeHandle.queryValidateBoxOrAchieve(currentPeriod, beforePeriod, pkMember);
}
private Map<Long, CuMemberBonus> getWeekMemberBonusMap(String settleDate, Integer period) { private Map<Long, CuMemberBonus> getWeekMemberBonusMap(String settleDate, Integer period) {
// 根据结算日期获取周期的期间用于海外 // 根据结算日期获取周期的期间用于海外
String recentlyMonday = DateUtils.getRecentlyTuesday(settleDate); String recentlyMonday = DateUtils.getRecentlyTuesday(settleDate);