Compare commits

...

3 Commits

21 changed files with 763 additions and 828 deletions

View File

@ -146,7 +146,7 @@ public class CuMemberBonusController extends BaseController {
bonusParam.setPkCountry(SecurityUtils.getPkCountry());
//获取管理员权限角色地区范围 体系列表团队列表)
Date date = DateUtils.currentDate();
if(bonusParam.getStartDate()==null||bonusParam.getEndDate()==null){
if (null == bonusParam.getStartDate() || null == bonusParam.getEndDate()) {
bonusParam.setStartDate(DateUtils.currentMonthFirstDate());
bonusParam.setEndDate(DateUtils.beforeDate(1, ChronoUnit.DAYS, date));
}

View File

@ -45,11 +45,11 @@ import java.util.*;
public abstract class BonusSettleHandle {
@DubboReference
protected ISaOrderServiceApi saOrderServiceApi;
ISaOrderServiceApi saOrderServiceApi;
@DubboReference
protected IBonusItemsServiceApi bonusItemsServiceApi;
IBonusItemsServiceApi bonusItemsServiceApi;
@DubboReference
private ICurrencyServiceApi currencyServiceApi;
ICurrencyServiceApi currencyServiceApi;
protected ICuMemberTreeService cuMemberTreeService;
@ -655,33 +655,12 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 直推级差收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceMemberRangeExt 提供奖金的人
* @param targetMemberRangeExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRangeExt sourceMemberRangeExt,
CuMemberRangeExt targetMemberRangeExt) {
String remark = String.format(BonusMsgConstants.RANGE, saOrderExt.getOrderCode(),
sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(),
targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(),
cuMemberBonusRange.getCalAchieve(), sourceMemberRangeExt.getRangeAwardsValue(), targetMemberRangeExt.getRangeAwardsValue());
cuMemberBonusRange.setRemark(remark);
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceMemberRangeExt 提供奖金的人
* @param targetMemberRangeExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void rangeRetailRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt,
CuMemberRetailRangeExt targetMemberRangeExt) {
@ -710,32 +689,13 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 报单服务费收益的备注
* 获得 平级收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceMemberRangeExt 提供奖金的人
* @param targetMemberRangeExt 获得奖金的人
*/
protected void oriRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRangeExt sourceMemberRangeExt,
CuMemberRangeExt targetMemberRangeExt) {
String remark = String.format(BonusMsgConstants.ORI_RANGE, saOrderExt.getOrderCode(),
sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(),
targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(),
cuMemberBonusRange.getCalAchieve(), targetMemberRangeExt.getRangeAwardsValue());
cuMemberBonusRange.setRemark(remark);
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceMemberRangeExt 提供奖金的人
* @param targetMemberRangeExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void oriRetailRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt,
CuMemberRetailRangeExt targetMemberRangeExt) {
String remark = String.format(BonusMsgConstants.ORI_RANGE, saOrderExt.getOrderCode(),

View File

@ -77,8 +77,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 会员结算mapkey会员IDvalue结算扩展
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
// 购买升级等级mapkey:等级值value:等级对象
Map<Integer, BdGrade> retaiBuyGradeMap = new TreeMap<>();
// 团队升级等级mapkey:等级值value:等级对象
Map<Integer, BdGrade> retailTeamGradeMap = new TreeMap<>();
// 等级mapkey:等级值value:等级对象
@ -86,9 +84,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 等级列表
List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList();
for (BdGrade bdGrade : retaiGradeList) {
if (bdGrade.getBoxNumber() > 0) {
retaiBuyGradeMap.put(bdGrade.getGradeValue(), bdGrade);
}
if (bdGrade.getBoxTotal() > 0) {
retailTeamGradeMap.put(bdGrade.getGradeValue(), bdGrade);
}
@ -102,28 +97,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// 会员结算map不存在这个会员则为新会员没处理过需要处理
cuMemberRetailRangeExt.setBuyNum(0);
// TODO new 目前一次性补差升级不需要校验是不是当天了
cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue());
// if (cuMemberRetailRangeExt.getPayTime() != null && DateUtils.compareDateEqual(DateUtils.parseStringToDate(settleDate), cuMemberRetailRangeExt.getPayTime())) {
// cuMemberRetailRangeExt.setSameDate(EYesNo.YES.getIntValue());
// } else {
// cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue());
// }
for (Integer gradeValue : retaiBuyGradeMap.keySet()) {
BdGrade bdGrade = retaiBuyGradeMap.get(gradeValue);
if (bdGrade.getBoxNumber() > 0 && cuMemberRetailRangeExt.getGradeValue().equals(gradeValue)) {
// TODO new 一次性补差需要下个等级的盒数 - 当前等级盒数
cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber());
// if (cuMemberRetailRangeExt.getSameDate().equals(EYesNo.YES.getIntValue())) {
// cuMemberRetailRangeExt.setBuyNum(cuMemberRetailRangeExt.getNewBoxNum());
// } else {
// cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber());
// }
break;
}
}
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt);
}
}
@ -159,7 +132,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 计算团队业绩盒数计算等级奖衔
cuMemberAwardsList.addAll(calculateRetailRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeList));
// TODO new 奖金处理
// 奖金处理
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()
@ -171,14 +144,11 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 计算直推级差收益 + 平级收益
cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, currentPeriod, saOrderItems, saOrderExt));
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
// 注册升级计算是否激活
// 注册升级 并且有盒数商品算激活
sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue());
}
}
}
}
// 查询区域配置
Map<String, CuMemberRetailRangeExt> countyRangeExtMap = new HashMap<>();
@ -396,6 +366,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
}
/**
* 日结
* 计算新零售团队的奖金极差平级福利福利分红区域
*/
void calculateRetailBonusByDay(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, BonusRecordDetailVO bonusRecordDetailVO,
@ -444,6 +415,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
Map<Integer, BdGrade> retaiBuyGradeMap = new TreeMap<>();
// 团队升级等级mapkey:等级值value:等级对象
Map<Integer, BdGrade> retailTeamGradeMap = new TreeMap<>();
// 等级mapkey:等级值value:等级对象
Map<Integer, BdGrade> gradeMap = new HashMap<>();
// 等级mapkey:等级IDvalue:等级对象
Map<Integer, BdGrade> gradeIdMap = new HashMap<>();
@ -470,21 +442,11 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
cuMemberRetailRangeExt.setBuyNum(0);
// TODO new 目前一次性补差升级不需要校验是不是当天了
cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue());
// if (cuMemberRetailRangeExt.getPayTime() != null && DateUtils.compareDateEqual(DateUtils.parseStringToDate(settleDate), cuMemberRetailRangeExt.getPayTime())) {
// cuMemberRetailRangeExt.setSameDate(EYesNo.YES.getIntValue());
// } else {
// cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue());
// }
for (Integer gradeValue : retaiBuyGradeMap.keySet()) {
BdGrade bdGrade = retaiBuyGradeMap.get(gradeValue);
if (bdGrade.getBoxNumber() > 0 && cuMemberRetailRangeExt.getGradeValue().equals(gradeValue)) {
// TODO new 一次性补差需要下个等级的盒数 - 当前等级盒数
cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber());
// if (cuMemberRetailRangeExt.getSameDate().equals(EYesNo.YES.getIntValue())) {
// cuMemberRetailRangeExt.setBuyNum(cuMemberRetailRangeExt.getNewBoxNum());
// } else {
// cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber());
// }
break;
}
}
@ -541,8 +503,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 计算团队业绩盒数计算等级奖衔
cuMemberAwardsList.addAll(calculateRetailRangeGradeAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, null, boxNum, cuMemberGradeList));
// TODO new 奖金处理
// 计算奖金 直推级差 + 平级收益
if ((EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType())
@ -1308,20 +1268,20 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
// 推荐人
long pkParent = sourceMemberRangeExt.getPkParent();
// 商品价格没有乘商品数量
// // 商品价格
// BigDecimal beginBuyPrice = saOrderItems.getWaresPrice();
// BigDecimal comBuyPrice = saOrderItems.getWaresPrice();
//
// // 开始计算等级值
// int beginGradeValue = sourceMemberRangeExt.getGradeValue();
// // 直推级差收益
// BigDecimal calBonusIncome = BigDecimal.ZERO;
// 商品最终价格
BigDecimal waresPrice = saOrderItems.getWaresPrice();
// 商品数量
Integer waresQuantity = saOrderItems.getWaresQuantity();
// 商品价格
BigDecimal beginBuyPrice = saOrderItems.getWaresPrice();
BigDecimal comBuyPrice = saOrderItems.getWaresPrice();
// 开始计算等级值
int beginGradeValue = sourceMemberRangeExt.getGradeValue();
// 直推级差收益
BigDecimal calBonusIncome = BigDecimal.ZERO;
BigDecimal waresQuantityBig = new BigDecimal(saOrderItems.getWaresQuantity());
// 前一个会员等级
int beforeGradeValue = 0;
// 前一个会员等级的平级收益人数
@ -1348,6 +1308,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
}
// 当前会员等级值
int calGradeValue = targetMemberRangeExt.getGradeValue();
// 当前会员等级
BdGrade bdGrade = gradeMap.get(calGradeValue);
// 直推级差税前收益
BigDecimal rangeBonusIncome = null;
@ -1358,19 +1320,19 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 前一个会员等级为0肯定为第一次处理直接处理直推级差收益
if (EGrade.HAI_FAN.getValue() == calGradeValue) {
// VIP拿1份40
rangeBonusIncome = RetailConstants.RANGE_BONUS;
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig);
} else if (EGrade.YOU_KE.getValue() == calGradeValue) {
// SVIP拿2份40
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(new BigDecimal("2"));
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("2"));
} else if (EGrade.MAKER.getValue() == calGradeValue) {
// 卓越拿3份40
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(new BigDecimal("3"));
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("3"));
} else if (EGrade.VIP.getValue() == calGradeValue) {
// 首席拿4份40
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(new BigDecimal("4"));
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("4"));
} else if (EGrade.S_VIP.getValue() == calGradeValue) {
// 合伙人拿5份40
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(new BigDecimal("5"));
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("5"));
}
// 赋值前一个会员等级
beforeGradeValue = calGradeValue;
@ -1380,8 +1342,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// V1 没有平级收益
continue;
}
if (beforeSameAlgebra >= RetailConstants.SAME_ALGEBRA) {
if (beforeSameAlgebra >= bdGrade.getAlgebra()) {
// 平级收益已经满10代不继续处理平级收益
if (EGrade.S_VIP.getValue() == beforeGradeValue) {
// 平级处理等级为最高级V5则结束处理
break;
}
continue;
}
// 平级收益商品价格 * 千分之五 -- 2位小数四舍五入
@ -1395,7 +1361,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
int tmpGradeVal = (calGradeValue - beforeGradeValue) / 10;
// 新等级的直推级差收益
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(new BigDecimal(tmpGradeVal));
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal(tmpGradeVal));
// 直推级差收益 = 新等级的直推级差收益 - 上一等级的平级收益
rangeBonusIncome = rangeBonusIncome.subtract(beforeSameBonus);
@ -1416,7 +1382,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_RANGE_INCOME.getValue());
CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
cuMemberBonusRange.setPretaxIncome(rangeBonusIncome.multiply(new BigDecimal(waresQuantity)));
cuMemberBonusRange.setCalAchieve(waresPrice);
cuMemberBonusRange.setPretaxIncome(rangeBonusIncome);
cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId());
@ -1434,8 +1401,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_SAME_LEVEL_INCOME.getValue());
CuMemberBonusRange oriMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
oriMemberBonusRange.setCalValue(BigDecimal.valueOf(2));
oriMemberBonusRange.setPretaxIncome(sameBonusIncome.multiply(new BigDecimal(waresQuantity)));
oriMemberBonusRange.setCalValue(RetailConstants.SAME_RATIO);
oriMemberBonusRange.setCalAchieve(waresPrice);
oriMemberBonusRange.setPretaxIncome(sameBonusIncome);
oriMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
oriMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
oriMemberBonusRange.setPkOrderItems(saOrderItems.getPkId());
@ -1448,135 +1416,127 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
memberBonusRangeList.add(oriMemberBonusRange);
}
///////////////////////////////////////////////////////////////
// 如果价格是209代表是第一单激活只有平级收益只有V5有平级收益
if (beginBuyPrice.equals(BigDecimal.valueOf(209))) {
calGradeValue = EGrade.S_VIP.getValue();
if (beginGradeValue < EGrade.S_VIP.getValue()) {
beginGradeValue = EGrade.S_VIP.getValue();
}
}
BdGrade bdGrade = gradeMap.get(calGradeValue);
BigDecimal buyPrice = bdGrade.getBuyPrice();
boolean isRange = Boolean.FALSE;
// 有极差或者有平级
if (ComputeUtil.compareGreaterThan(beginBuyPrice, buyPrice)) {
// 计算极差
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_RANGE_INCOME.getValue());
CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(ComputeUtil.computeSubtract(ComputeUtil.computeSubtract(beginBuyPrice, buyPrice), calBonusIncome), saOrderItems.getWaresQuantity()), BigDecimal.ONE));
cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId());
rangeRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
cuMemberBonus.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
}
memberBonusRangeList.add(cuMemberBonusRange);
beginBuyPrice = buyPrice;
comBuyPrice = buyPrice;
beginGradeValue = calGradeValue;
sourceMemberRangeExt = targetMemberRangeExt;
calBonusIncome = BigDecimal.ZERO;
} else {
isRange = Boolean.TRUE;
pkParent = targetMemberRangeExt.getPkMember();
}
if (saOrderExt.getOrderType().equals(EOrderType.RETAIL_CONSUME.getValue())) {
if (isRange) {
pkParent = targetMemberRangeExt.getPkParent();
}
continue;
}
if (bdGrade.getAlgebra() > 0) {
Long lastPkParent = pkParent;
for (int j = 0; j < bdGrade.getAlgebra(); j++) {
targetMemberRangeExt = memberRangeExtMap.get(lastPkParent);
if (targetMemberRangeExt == null) {
if (memberRangeExtMap.get(pkParent) == null) {
break;
}
pkParent = memberRangeExtMap.get(pkParent).getPkParent();
break;
}
calGradeValue = targetMemberRangeExt.getGradeValue();
BigDecimal sameBuyPrice = gradeMap.get(calGradeValue).getBuyPrice();
// 有平级
// if (calGradeValue < beginGradeValue) {
if (ComputeUtil.compareGreaterThan(sameBuyPrice, comBuyPrice)) {
lastPkParent = targetMemberRangeExt.getPkParent();
pkParent = targetMemberRangeExt.getPkParent();
j--;
continue;
}
if (ComputeUtil.compareGreaterThan(beginBuyPrice, sameBuyPrice)) {
pkParent = lastPkParent;
break;
// // 如果价格是209代表是第一单激活只有平级收益只有V5有平级收益
// if (beginBuyPrice.equals(BigDecimal.valueOf(209))) {
// calGradeValue = EGrade.S_VIP.getValue();
// if (beginGradeValue < EGrade.S_VIP.getValue()) {
// beginGradeValue = EGrade.S_VIP.getValue();
// }
// }
// BdGrade bdGrade = gradeMap.get(calGradeValue);
// BigDecimal buyPrice = bdGrade.getBuyPrice();
// boolean isRange = Boolean.FALSE;
// // 有极差或者有平级
// if (ComputeUtil.compareGreaterThan(beginBuyPrice, buyPrice)) {
// // 计算极差
// CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
// targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
// int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_RANGE_INCOME.getValue());
// CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
// cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
// cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(ComputeUtil.computeSubtract(ComputeUtil.computeSubtract(beginBuyPrice, buyPrice), calBonusIncome), saOrderItems.getWaresQuantity()), BigDecimal.ONE));
// cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
// cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
// cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId());
// rangeRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
// BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
// if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
// cuMemberBonus.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
// setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
// }
// memberBonusRangeList.add(cuMemberBonusRange);
//
// beginBuyPrice = buyPrice;
// comBuyPrice = buyPrice;
// beginGradeValue = calGradeValue;
// sourceMemberRangeExt = targetMemberRangeExt;
// calBonusIncome = BigDecimal.ZERO;
// } else {
// isRange = Boolean.TRUE;
// pkParent = targetMemberRangeExt.getPkMember();
// }
// if (saOrderExt.getOrderType().equals(EOrderType.RETAIL_CONSUME.getValue())) {
// if (isRange) {
// pkParent = targetMemberRangeExt.getPkParent();
// }
// continue;
// }
// if (bdGrade.getAlgebra() > 0) {
// Long lastPkParent = pkParent;
// for (int j = 0; j < bdGrade.getAlgebra(); j++) {
// targetMemberRangeExt = memberRangeExtMap.get(lastPkParent);
// if (targetMemberRangeExt == null) {
// if (memberRangeExtMap.get(pkParent) == null) {
// break;
// }
// pkParent = memberRangeExtMap.get(pkParent).getPkParent();
// break;
// }
// calGradeValue = targetMemberRangeExt.getGradeValue();
// BigDecimal sameBuyPrice = gradeMap.get(calGradeValue).getBuyPrice();
// // 有平级
// if (ComputeUtil.compareGreaterThan(sameBuyPrice, comBuyPrice)) {
// lastPkParent = targetMemberRangeExt.getPkParent();
// pkParent = targetMemberRangeExt.getPkParent();
// j--;
// continue;
}
lastPkParent = targetMemberRangeExt.getPkParent();
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() ||
ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() ||
targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue() ||
EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
j--;
continue;
}
BigDecimal bonusIncome = BigDecimal.ZERO;
if (j == 0) {
bonusIncome = bdGrade.getFirstAlgebra();
} else if (j == 1) {
bonusIncome = bdGrade.getSecondAlgebra();
} else if (j == 2) {
bonusIncome = bdGrade.getThirdAlgebra();
}
if (ComputeUtil.compareEqual(beginBuyPrice, sameBuyPrice)) {
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_SAME_LEVEL_INCOME.getValue());
CuMemberBonusRange oriMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
oriMemberBonusRange.setCalValue(BigDecimal.valueOf(10));
oriMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(bonusIncome, saOrderItems.getWaresQuantity()), BigDecimal.ONE));
oriMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
oriMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
oriMemberBonusRange.setPkOrderItems(saOrderItems.getPkId());
oriRetailRangeRemark(saOrderExt, oriMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, oriMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
if (EBonusIncomeStatus.NORMAL.getValue() == oriMemberBonusRange.getIncomeStatus()) {
cuMemberBonus.setRetailSameLevelIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailSameLevelIncome(), oriMemberBonusRange.getPretaxIncome()));
setRetailTotal(bdBonusDeduct, cuMemberBonus, oriMemberBonusRange);
}
memberBonusRangeList.add(oriMemberBonusRange);
calBonusIncome = ComputeUtil.computeAdd(calBonusIncome, bonusIncome);
pkParent = lastPkParent;
} else {
j--;
}
if (j == bdGrade.getAlgebra() - 1) {
beginGradeValue += 1;
comBuyPrice = ComputeUtil.computeSubtract(comBuyPrice, BigDecimal.ONE);
break;
}
}
} else {
if (isRange) {
pkParent = targetMemberRangeExt.getPkParent();
}
}
if (beginGradeValue > EGrade.S_VIP.getValue()) {
break;
}
// }
// if (ComputeUtil.compareGreaterThan(beginBuyPrice, sameBuyPrice)) {
// pkParent = lastPkParent;
// break;
// }
// lastPkParent = targetMemberRangeExt.getPkParent();
// if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() ||
// ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() ||
// targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue() ||
// EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
// j--;
// continue;
// }
// BigDecimal bonusIncome = BigDecimal.ZERO;
// if (j == 0) {
// bonusIncome = bdGrade.getFirstAlgebra();
// } else if (j == 1) {
// bonusIncome = bdGrade.getSecondAlgebra();
// } else if (j == 2) {
// bonusIncome = bdGrade.getThirdAlgebra();
// }
// if (ComputeUtil.compareEqual(beginBuyPrice, sameBuyPrice)) {
// CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
// targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
// int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_SAME_LEVEL_INCOME.getValue());
// CuMemberBonusRange oriMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
// oriMemberBonusRange.setCalValue(BigDecimal.valueOf(10));
// oriMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(bonusIncome, saOrderItems.getWaresQuantity()), BigDecimal.ONE));
// oriMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
// oriMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
// oriMemberBonusRange.setPkOrderItems(saOrderItems.getPkId());
// oriRetailRangeRemark(saOrderExt, oriMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
// BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, oriMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
// if (EBonusIncomeStatus.NORMAL.getValue() == oriMemberBonusRange.getIncomeStatus()) {
// cuMemberBonus.setRetailSameLevelIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailSameLevelIncome(), oriMemberBonusRange.getPretaxIncome()));
// setRetailTotal(bdBonusDeduct, cuMemberBonus, oriMemberBonusRange);
// }
// memberBonusRangeList.add(oriMemberBonusRange);
// calBonusIncome = ComputeUtil.computeAdd(calBonusIncome, bonusIncome);
// pkParent = lastPkParent;
// } else {
// j--;
// }
// if (j == bdGrade.getAlgebra() - 1) {
// beginGradeValue += 1;
// comBuyPrice = ComputeUtil.computeSubtract(comBuyPrice, BigDecimal.ONE);
// break;
// }
// }
// } else {
// if (isRange) {
// pkParent = targetMemberRangeExt.getPkParent();
// }
// }
// if (beginGradeValue > EGrade.S_VIP.getValue()) {
// break;
// }
}
return memberBonusRangeList;
}

View File

@ -9,27 +9,11 @@ import java.math.BigDecimal;
import java.util.Date;
/**
* @description: 奖金明细表
* @author: sui q
* @time: 2023/5/20 15:31
* @classname: CuMemberBonusVO
* @package_name: com.hzs.member.bonus.vo
* version 1.0.0
* 奖金明细表
*/
@Data
public class CuMemberBonusVO implements Serializable {
// /**
// * 需要转换人民币的
// */
// public static final String[] INCOME_ARRAY = new String[]{
// "directIncome", "expandIncome", "expandNoCapping", "expandCapping",
// "coachIncome", "shareIncome", "serviceIncome", "cloudDirectIncome",
// "cloudPurIncome", "cloudRepurIncome", "repurPushIncome", "repurRangeIncome", "repurExpandIncome",
// "repurCoupon", "repurCouponShare", "backPoints", "serviceSpend",
// "globalPoints", "carAwardPoints", "storeIncome", "hiFunIncome",
// "makerDirectIncome", "makerShareIncome", "makerRealSubtotal", "purRealSubtotal",
// "cloudRealSubtotal", "repurRealSubtotal", "repurCouponSubtotal", "realIncomeTotal"};
/**
* 主键
*/
@ -102,185 +86,60 @@ public class CuMemberBonusVO implements Serializable {
*/
private Integer grantStatus;
// /**
// * 直推收益
// */
// @Excel(name = "直推收益", scale = 2)
// private BigDecimal directIncomeOri;
//
// /**
// * 直推收益
// */
// @Excel(name = "直推收益($)", scale = 2)
// private BigDecimal directIncome;
//
// /**
// * 拓展收益
// */
// @Excel(name = "拓展收益", scale = 2)
// private BigDecimal expandIncomeOri;
//
// /**
// * 拓展收益
// */
// @Excel(name = "拓展收益($)", scale = 2)
// private BigDecimal expandIncome;
//
// /**
// * 拓展无封 (拓展收益按等级正常比例结算 拓展收益按等级正常比例结算 无封顶)
// */
// private BigDecimal expandNoCapping;
//
// /**
// * 拓展封顶 (拓展收益按等级正常比例结算不按4-N结算根据配置的封顶值限制最大收益)
// */
// private BigDecimal expandCapping;
//
//
// /**
// * 拓展无封 (拓展收益按等级正常比例结算 拓展收益按等级正常比例结算 无封顶)
// */
// private BigDecimal expandNoCappingOri;
//
// /**
// * 拓展封顶 (拓展收益按等级正常比例结算不按4-N结算根据配置的封顶值限制最大收益)
// */
// private BigDecimal expandCappingOri;
//
// /**
// * 辅导收益
// */
// @Excel(name = "辅导收益", scale = 2)
// private BigDecimal coachIncomeOri;
//
// /**
// * 辅导收益
// */
// @Excel(name = "辅导收益($)", scale = 2)
// private BigDecimal coachIncome;
//
// /**
// * 分红收益
// */
// @Excel(name = "分红收益", scale = 2)
// private BigDecimal shareIncomeOri;
//
// /**
// * 分红收益
// */
// @Excel(name = "分红收益($)", scale = 2)
// private BigDecimal shareIncome;
//
// /**
// * 报单收益
// */
// @Excel(name = "报单收益", scale = 2)
// private BigDecimal serviceIncomeOri;
//
// /**
// * 报单收益
// */
// @Excel(name = "服务收益($)", scale = 2)
// private BigDecimal serviceIncome;
//
//
// /**
// * 云代直推收益
// */
// @Excel(name = "云代直推收益", scale = 2)
// private BigDecimal cloudDirectIncomeOri;
//
// /**
// * 云代直推收益
// */
// @Excel(name = "云代直推收益($)", scale = 2)
// private BigDecimal cloudDirectIncome;
//
// /**
// * 云代首购收益
// */
// @Excel(name = "云代首购收益", scale = 2)
// private BigDecimal cloudPurIncomeOri;
//
// /**
// * 云代首购收益
// */
// @Excel(name = "云代首购收益($)", scale = 2)
// private BigDecimal cloudPurIncome;
//
// /**
// * 云代复购收益
// */
// @Excel(name = "云代复购收益", scale = 2)
// private BigDecimal cloudRepurIncomeOri;
//
// /**
// * 云代复购收益
// */
// @Excel(name = "云代复购收益($)", scale = 2)
// private BigDecimal cloudRepurIncome;
//
// /**
// * 复购级差收益
// */
// @Excel(name = "复购推荐收益", scale = 2)
// private BigDecimal repurPushIncomeOri;
//
// /**
// * 复购级差收益
// */
// @Excel(name = "复购推荐收益", scale = 2)
// private BigDecimal repurPushIncome;
//
// /**
// * 复购级差收益
// */
// @Excel(name = "复购级差收益", scale = 2)
// private BigDecimal repurRangeIncomeOri;
//
// /**
// * 复购级差收益
// */
// @Excel(name = "复购级差收益($)", scale = 2)
// private BigDecimal repurRangeIncome;
//
//
// /**
// * 复购拓展收益
// */
// @Excel(name = "复购拓展收益", scale = 2)
// private BigDecimal repurExpandIncomeOri;
//
// /**
// * 复购拓展收益
// */
// @Excel(name = "复购拓展收益($)", scale = 2)
// private BigDecimal repurExpandIncome;
//
// /**
// * 复购卷
// */
// @Excel(name = "复购卷", scale = 2)
// private BigDecimal repurCouponOri;
//
// /**
// * 复购卷
// */
// @Excel(name = "复购卷($)", scale = 2)
// private BigDecimal repurCoupon;
//
// /**
// * 复购券均分收益
// */
// @Excel(name = "复购券均分", scale = 2)
// private BigDecimal repurCouponShareOri;
//
// /**
// * 复购券均分收益
// */
// @Excel(name = "复购券均分($)", scale = 2)
// private BigDecimal repurCouponShare;
//
/**
* 需要转换人民币的
*/
public static final String[] INCOME_ARRAY = new String[]{
"backPoints", "retailRangeIncome", "retailSameLevelIncome", "retailAreaIncome",
"retailBenefitRangeIncome", "retailBenefitAvgIncome",
"retailBenefitIncome", "retailRealSubtotal", "realIncomeTotal"};
private BigDecimal retailRangeIncome;
/**
* 直推收益
*/
@Excel(name = "直推收益", scale = 2)
private BigDecimal retailRangeIncomeOri;
private BigDecimal retailSameLevelIncome;
/**
* 平级收益
*/
@Excel(name = "平级收益", scale = 2)
private BigDecimal retailSameLevelIncomeOri;
private BigDecimal retailAreaIncome;
/**
* 区域分红
*/
@Excel(name = "区域分红", scale = 2)
private BigDecimal retailAreaIncomeOri;
/**
* 新零售福利极差收益
*/
private BigDecimal retailBenefitRangeIncome;
@Excel(name = " 福利极差收益", scale = 2)
private BigDecimal retailBenefitRangeIncomeOri;
/**
* 新零售福利平均收益
*/
private BigDecimal retailBenefitAvgIncome;
@Excel(name = " 福利平均收益", scale = 2)
private BigDecimal retailBenefitAvgIncomeOri;
/**
* 新零售福利加权收益
*/
private BigDecimal retailBenefitIncome;
@Excel(name = " 福利加权收益", scale = 2)
private BigDecimal retailBenefitIncomeOri;
/**
* 商城重消
*/
@ -290,184 +149,11 @@ public class CuMemberBonusVO implements Serializable {
/**
* 商城重消
*/
@Excel(name = "商城重消($)", scale = 2)
private BigDecimal backPoints;
//
// /**
// * 平台服务费
// */
// @Excel(name = "平台服务费", scale = 2)
// private BigDecimal serviceSpendOri;
//
// /**
// * 平台服务费
// */
// @Excel(name = "平台服务费($)", scale = 2)
// private BigDecimal serviceSpend;
//
// /**
// * 环球积分
// */
// @Excel(name = "直推极差", scale = 2)
// private BigDecimal globalPointsOri;
//
// /**
// * 环球积分
// */
// @Excel(name = "直推极差($)", scale = 2)
// private BigDecimal globalPoints;
//
// /**
// * 车奖积分
// */
// @Excel(name = "车奖积分", scale = 2)
// private BigDecimal carAwardPointsOri;
//
//
// /**
// * 车奖积分
// */
// @Excel(name = "车奖积分($)", scale = 2)
// private BigDecimal carAwardPoints;
//
// /**
// * 店铺收益
// */
// @Excel(name = "店铺收益", scale = 2)
// private BigDecimal storeIncomeOri;
//
// /**
// * 店铺收益
// */
// @Excel(name = "店铺收益($)", scale = 2)
// private BigDecimal storeIncome;
//
// /**
// * 嗨粉推荐收益
// */
// @Excel(name = "嗨粉推荐收益", scale = 2)
// private BigDecimal hiFunIncomeOri;
//
// /**
// * 嗨粉推荐收益
// */
// @Excel(name = "嗨粉推荐收益($)", scale = 2)
// private BigDecimal hiFunIncome;
//
// /**
// * 首购实发小计
// */
// @Excel(name = "首购实发小计", scale = 2)
// private BigDecimal purRealSubtotalOri;
//
// /**
// * 首购实发小计
// */
// @Excel(name = "首购实发小计($)", scale = 2)
// private BigDecimal purRealSubtotal;
//
// /**
// * 云代实发小计
// */
// @Excel(name = "云代实发小计", scale = 2)
// private BigDecimal cloudRealSubtotalOri;
//
// /**
// * 云代实发小计
// */
// @Excel(name = "云代实发小计($)", scale = 2)
// private BigDecimal cloudRealSubtotal;
//
// /**
// * 复购实发小计
// */
// @Excel(name = "复购实发小计", scale = 2)
// private BigDecimal repurRealSubtotalOri;
//
// /**
// * 复购实发小计
// */
// @Excel(name = "复购实发小计($)", scale = 2)
// private BigDecimal repurRealSubtotal;
//
// /**
// * 复购券小计
// */
// @Excel(name = "复购券实发小计", scale = 2)
// private BigDecimal repurCouponSubtotalOri;
//
// /**
// * 复购券小计
// */
// @Excel(name = "复购券实发小计($)", scale = 2)
// private BigDecimal repurCouponSubtotal;
/**
* 需要转换人民币的
*/
public static final String[] INCOME_ARRAY = new String[]{
"backPoints","retailRangeIncome", "retailSameLevelIncome", "retailAreaIncome",
"retailBenefitRangeIncome","retailBenefitAvgIncome",
"retailBenefitIncome","retailRealSubtotal","realIncomeTotal"};
/**
* 新零售极差收益
*/
@Excel(name = "新零售极差收益($)", scale = 2)
private BigDecimal retailRangeIncome;
@Excel(name = " 新零售极差收益", scale = 2)
private BigDecimal retailRangeIncomeOri;
/**
* 新零售平级收益
*/
@Excel(name = "平级收益($)", scale = 2)
private BigDecimal retailSameLevelIncome;
@Excel(name = " 平级收益", scale = 2)
private BigDecimal retailSameLevelIncomeOri;
/**
* 新零售区域收益
*/
@Excel(name = "区域收益($)", scale = 2)
private BigDecimal retailAreaIncome;
@Excel(name = " 区域收益", scale = 2)
private BigDecimal retailAreaIncomeOri;
/**
* 新零售福利极差收益
*/
@Excel(name = "福利极差收益($)", scale = 2)
private BigDecimal retailBenefitRangeIncome;
@Excel(name = " 福利极差收益", scale = 2)
private BigDecimal retailBenefitRangeIncomeOri;
/**
* 新零售福利平均收益
*/
@Excel(name = "福利平均收益($)", scale = 2)
private BigDecimal retailBenefitAvgIncome;
@Excel(name = " 福利平均收益", scale = 2)
private BigDecimal retailBenefitAvgIncomeOri;
/**
* 新零售福利加权收益
*/
@Excel(name = "福利加权收益($)", scale = 2)
private BigDecimal retailBenefitIncome;
@Excel(name = " 福利加权收益", scale = 2)
private BigDecimal retailBenefitIncomeOri;
/**
* 新零售收益小计
*/
@Excel(name = "收益小计($)", scale = 2)
private BigDecimal retailRealSubtotal;
@Excel(name = " 收益小计", scale = 2)
@ -479,10 +165,8 @@ public class CuMemberBonusVO implements Serializable {
@Excel(name = "实发收益总计", scale = 2)
private BigDecimal realIncomeTotalOri;
/**
* 实发收益总计
*/
@Excel(name = "实发收益总计($)", scale = 2)
private BigDecimal realIncomeTotal;
}

View File

@ -119,7 +119,8 @@
#{item.teamMonthAmount} team_month_amount, #{item.teamMonthPv} team_month_pv,
#{item.teamNewPv} team_new_pv, #{item.teamNewAmount} team_new_amount,
#{item.teamConsumePv} team_consume_pv, #{item.newBoxNum} new_box_num,
#{item.recommendNum} recommend_num,#{item.teamNum} team_num,#{item.enableStatus} enable_status
#{item.recommendNum} recommend_num, #{item.teamNum} team_num,
#{item.enableStatus} enable_status
from dual
</foreach>
) b
@ -190,18 +191,18 @@
using (
<foreach collection="cuMemberRangeExtList" item="item" open=" " close=" " separator="union">
select #{item.pkMember} pk_member, #{item.pkGrade} pk_grade, #{item.pkAwards} pk_awards,
#{item.newConsumePv} new_consume_pv, #{item.teamNewAmount} team_new_amount,
#{item.teamNewPv} team_new_pv, #{item.teamNewBoxNum} team_new_box_num,
#{item.newBoxNum} new_box_num, #{item.enableStatus} enable_status
#{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
from dual
</foreach>
) 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,
a.new_consume_pv = b.new_consume_pv, a.team_new_amount = b.team_new_amount,
a.team_new_pv = b.team_new_pv, a.team_new_box_num = b.team_new_box_num,
a.new_box_num = b.new_box_num, a.enable_status = b.enable_status
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
</update>
<update id="mergeMemberRetailGradeByMember">

View File

@ -298,8 +298,11 @@
</if>
order by cp.settle_date desc
</select>
<select id="queryMemberBonusByConditionForServer" resultMap="CuMemberBonus">
select cm.member_code,cm.member_name,cm.pk_settle_grade,cm.pk_awards,bv.vertex_name,ct.team_name,
select cm.member_code, cm.member_name,
cm.pk_settle_grade, cm.pk_awards,
bv.vertex_name, ct.team_name,
cb.period,cp.settle_date,cb.direct_income,cb.expand_income,cb.expand_no_capping,
cb.expand_capping,cb.coach_income,cb.share_income,cb.service_income,cb.back_points,cb.service_spend,
cb.pur_real_subtotal,cb.repur_push_income,cb.repur_range_income,cb.repur_expand_income,cb.repur_real_subtotal,
@ -311,9 +314,7 @@
cb.retail_benefit_range_income,cb.retail_benefit_avg_income,
cb.retail_benefit_income,cb.retail_real_subtotal,
cb.real_income_total,
cm.pk_vertex,
cm.service_code,
cm.nick_name
cm.pk_vertex, cm.service_code, cm.nick_name
from cu_member_bonus cb
inner join cu_member cm
on cb.pk_member = cm.pk_id

View File

@ -5,14 +5,13 @@ import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.retail.member.service.ICuMemberRetailAchieveService;
import com.hzs.retail.member.vo.CuMemberRetailAchieveVO;
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.List;
/**
@ -44,7 +43,13 @@ public class ApiRetailHomePageController extends BaseController {
Long pkMember = SecurityUtils.getUserId();
Integer pkCountry = SecurityUtils.getPkCountry();
Integer systemType = SecurityUtils.getSystemType();
return AjaxResult.success(retailAchieveService.selectMemberSmallBox(pkMember, pkCountry, systemType));
CuMemberRetailDataStatisticsResultVO result = retailAchieveService.getRetailDataStatisticsDetail(pkMember, pkCountry, systemType);
CuMemberRetailAchieveVO vo = CuMemberRetailAchieveVO.builder()
.totalBox(result.getTotalBoxNum())
.smallAreaBox(result.getSmallRangeTotalBoxNum())
.build();
return AjaxResult.success(vo);
// return AjaxResult.success(retailAchieveService.selectMemberSmallBox(pkMember, pkCountry, systemType));
}
/**

View File

@ -3,6 +3,7 @@ package com.hzs.retail.member.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
import com.hzs.retail.member.vo.CuMemberRetailAchieveVO;
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -166,6 +167,13 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
*/
List<CuMemberRetailAchieveVO> selectMemberSumAchieve(CuMemberRetailAchieveVO cuMemberAchieveVO);
/**
* 获取会员结算明细
* @param cuMemberAchieveVO
* @return
*/
List<CuMemberRetailDataStatisticsDetailVO> getRetailDataStatisticsDetail(CuMemberRetailAchieveVO cuMemberAchieveVO);
/**
* 查询当天自己新增盒数
*

View File

@ -3,8 +3,11 @@ package com.hzs.retail.member.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
import com.hzs.retail.member.vo.CuMemberRetailAchieveVO;
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
import java.util.List;
import java.util.Map;
public interface ICuMemberRetailAchieveService extends IService<CuMemberRetailRange> {
@ -100,4 +103,12 @@ public interface ICuMemberRetailAchieveService extends IService<CuMemberRetailRa
*/
List<CuMemberRetailAchieveVO> selectMemberSmallBoxList(CuMemberRetailAchieveVO param);
/**
* 获取会员结算明细
* @param pkMember
* @param pkCountry
* @param systemType
* @return
*/
CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType);
}

View File

@ -1,19 +1,26 @@
package com.hzs.retail.member.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.constant.TableNameConstants;
import com.hzs.common.core.enums.EGrade;
import com.hzs.common.core.enums.EYesNo;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.member.account.service.ICuMemberBaseService;
import com.hzs.member.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.member.base.service.ICuMemberService;
import com.hzs.retail.member.mapper.CuMemberRetailRangeMapper;
import com.hzs.retail.member.service.ICuMemberRetailAchieveService;
import com.hzs.retail.member.utils.DataStatisticsUtil;
import com.hzs.retail.member.vo.CuMemberRetailAchieveVO;
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.dto.GradeDTO;
import lombok.extern.slf4j.Slf4j;
@ -388,9 +395,9 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail
String memberRetailTable = getTableName();
String memberSecondTable = getDayTableName();
//查询直推会员
// List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType);
List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType);
// 2025年6月11日 取伞下 + 自己的ID
List<Long> pkMemberList = baseMapper.selectSubMemberIdByRootMember(pkMember, systemType);
// List<Long> pkMemberList = baseMapper.selectSubMemberIdByRootMember(pkMember, systemType);
//根据国家查汇率
BigDecimal rate = iCuMemberBaseService.getCurrency(pkCountry).getInExchangeRate();
//查询自己业绩
@ -486,9 +493,13 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail
* @return String
*/
private String getAchieveAndBoxTableName(String date) {
int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date).getPkId();
CuMemberSettlePeriod cuMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date);
if(ObjectUtil.isNotEmpty(cuMemberSettlePeriod)){
int period = cuMemberSettlePeriod.getPkId();
return TableNameConstants.CU_MEMBER_AMOUNT_BOX + period;
}
return "";
}
@Override
public CuMemberRetailAchieveVO selectMemberBigBoxList(CuMemberRetailAchieveVO param) {
@ -546,6 +557,25 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail
return new ArrayList<>();
}
@Override
public CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType) {
Long userId = SecurityUtils.getUserId();
String memberRetailTable = getTableName();
String memberSecondTable = getDayTableName();
//查询直推会员
List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType);
pkMemberList.add(userId);
CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder()
.memberRetailTable(memberRetailTable)
.memberRetailSTable(memberSecondTable)
.pkMemberList(pkMemberList).systemType(systemType).build();
List<CuMemberRetailDataStatisticsDetailVO> statisticsDetailVOList = baseMapper.getRetailDataStatisticsDetail(memberAchieveVO);
CuMemberRetailDataStatisticsResultVO result = DataStatisticsUtil.getCalcMap(statisticsDetailVOList, userId);
log.info("statisticsDetailVOList: {}", JSONUtil.toJsonStr(statisticsDetailVOList));
log.info("calcMap -> {}", JSONUtil.toJsonStr(result));
return result;
}
/**
* 查询会员是否激活
*

View File

@ -0,0 +1,156 @@
package com.hzs.retail.member.utils;
import cn.hutool.core.util.ObjectUtil;
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
import java.math.BigDecimal;
import java.util.*;
/**
* 用户统计数据工具
* 主要用户统计用户的业绩/盒数/明细等
* 主要处理的类为
* @link com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO
*/
public class DataStatisticsUtil {
private static final Long SELF_VIRTUAL_ID = -1000L;
private static final Long BIG_RANGE_VIRTUAL_ID = -2000L;
private static final Long SMALL_RANGE_VIRTUAL_ID = -3000L;
private static final String SELF_VIRTUAL_NAME = "个人消费虚拟分支";
private static final String BIG_RANGE_VIRTUAL_NAME = "注水大区虚拟分支";
private static final String SMALL_RANGE_VIRTUAL_NAME = "注水小区虚拟分支";
public static CuMemberRetailDataStatisticsResultVO getCalcMap(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
calcDetailVOTotalField(detailVOList);
addVirtualBranch(detailVOList, pkId);
CuMemberRetailDataStatisticsDetailVO total = getDetailVOByPKID(detailVOList, pkId);
CuMemberRetailDataStatisticsDetailVO bigRange = getBigRangeDetailVO(detailVOList, pkId);
return CuMemberRetailDataStatisticsResultVO.builder()
.totalBoxNum(total.getTotalBoxNum())
.totalPv(total.getTotalPv())
.bigRangeTotalBoxNum(bigRange.getTotalBoxNum())
.bigRangeTotalPv(bigRange.getTotalPv())
.smallRangeTotalBoxNum(total.getTotalBoxNum() - bigRange.getTotalBoxNum())
.smallRangeTotalPv(total.getTotalPv().subtract(bigRange.getTotalPv()))
.build();
}
/**
* 计算集合内数据总数
* @param detailVOList
*/
public static void calcDetailVOTotalField(List<CuMemberRetailDataStatisticsDetailVO> detailVOList){
detailVOList.parallelStream().forEach(detailVO -> {
detailVO.setTotalBoxNum(
detailVO.getConsumeBoxNum() // 个人累计消费盒数(日结)
+ detailVO.getNewBoxNum() // 个人新增盒数(日结)
+ detailVO.getTeamBoxNum() // 团队累计消费盒数(日结)
+ detailVO.getTeamNewBoxNum() // 团队新增盒数(日结)
+ detailVO.getSNewBoxNum() // 个人新增消费盒数(秒结)
+ detailVO.getSTeamNewBoxNum() // 团队新增盒数(秒结)
// - detailVO.getBigBoxNum() // 个人注水大区盒数(日结)
// - detailVO.getSmallBoxNum() // 个人注水小区盒数(日结)
);
detailVO.setTotalPv(detailVO.getConsumePv()
.add(detailVO.getNewConsumePv())
.add(detailVO.getTeamConsumePv())
.add(detailVO.getTeamNewPv())
.add(detailVO.getSNewConsumePv())
.add(detailVO.getSTeamNewPv())
);
});
}
/**
* 增加虚拟分支 主要为
* 1.自己的消费总数
* 2.注水的大小区
*
* @param detailVOList
*/
public static void addVirtualBranch(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
CuMemberRetailDataStatisticsDetailVO detailVO = getDetailVOByPKID(detailVOList, pkId);
if(ObjectUtil.isNotEmpty(detailVO)){
CuMemberRetailDataStatisticsDetailVO selfVirtualDetailVO = getCuMemberRetailDataStatisticsDetailVO(detailVO);
detailVOList.add(selfVirtualDetailVO);
if(detailVO.getBigBoxNum() >0 || detailVO.getSmallBoxNum() > 0){
CuMemberRetailDataStatisticsDetailVO bigRangeVirtualDetailVO = CuMemberRetailDataStatisticsDetailVO.builder()
.pkId(BIG_RANGE_VIRTUAL_ID)
.memberCode(BIG_RANGE_VIRTUAL_NAME)
.totalBoxNum(detailVO.getBigBoxNum())
.totalPv(BigDecimal.ZERO)
.build();
CuMemberRetailDataStatisticsDetailVO smallRangeVirtualDetailVO = CuMemberRetailDataStatisticsDetailVO.builder()
.pkId(SMALL_RANGE_VIRTUAL_ID)
.memberCode(SMALL_RANGE_VIRTUAL_NAME)
.totalBoxNum(detailVO.getBigBoxNum())
.totalPv(BigDecimal.ZERO)
.build();
detailVOList.add(bigRangeVirtualDetailVO);
detailVOList.add(smallRangeVirtualDetailVO);
}
}
}
private static CuMemberRetailDataStatisticsDetailVO getCuMemberRetailDataStatisticsDetailVO(CuMemberRetailDataStatisticsDetailVO detailVO) {
return CuMemberRetailDataStatisticsDetailVO.builder()
.pkId(SELF_VIRTUAL_ID)
.memberCode(SELF_VIRTUAL_NAME)
.totalBoxNum(
detailVO.getConsumeBoxNum()
+ detailVO.getNewBoxNum()
+ detailVO.getSNewBoxNum()
)
.totalPv(
detailVO.getConsumePv()
.add(detailVO.getNewConsumePv())
.add(detailVO.getSNewConsumePv())
)
.build();
}
/**
* 移除总数Top1
* @param detailVOList
*/
public static List<CuMemberRetailDataStatisticsDetailVO> getSmallRangeList(List<CuMemberRetailDataStatisticsDetailVO> detailVOList){
List<CuMemberRetailDataStatisticsDetailVO> result = new ArrayList<>();
Integer maxTotalBoxNum = getMaxTotalBoxNum(detailVOList);
if (maxTotalBoxNum == null) {
return new ArrayList<>(detailVOList);
}
boolean removed = false;
for (CuMemberRetailDataStatisticsDetailVO vo : detailVOList) {
if (!removed && Objects.equals(vo.getTotalBoxNum(), maxTotalBoxNum)) {
removed = true;
} else {
result.add(vo);
}
}
return result;
}
/**
* 根据ID获取对应数据
* @param detailVOList
* @return
*/
public static CuMemberRetailDataStatisticsDetailVO getDetailVOByPKID(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
return detailVOList.stream().filter(o -> o.getPkId().equals(pkId)).findFirst().orElse(null);
}
private static Integer getMaxTotalBoxNum(List<CuMemberRetailDataStatisticsDetailVO> detailVOList) {
return detailVOList.stream()
.map(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum)
.filter(Objects::nonNull)
.max(Integer::compare)
.orElse(null);
}
private static CuMemberRetailDataStatisticsDetailVO getBigRangeDetailVO(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
return detailVOList.stream()
.filter(vo -> vo.getTotalBoxNum() != null && !vo.getPkId().equals(pkId))
.max(Comparator.comparingInt(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum))
.orElse(null);
}
}

View File

@ -0,0 +1,104 @@
package com.hzs.retail.member.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 会员数据统计
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CuMemberRetailDataStatisticsDetailVO implements Serializable {
private static final long serialVersionUID = 4225390345989552207L;
/**
* 用户主键
*/
private Long pkId;
/**
* 用户编号
*/
private String memberCode;
/**
* 日结表-个人累计消费pv
*/
private BigDecimal consumePv;
/**
* 日结表-个人当日新消费PV
*/
private BigDecimal newConsumePv;
/**
* 日结表-个人伞下累计消费pv
*/
private BigDecimal teamConsumePv;
/**
* 日结表-个人伞下新消费pv
*/
private BigDecimal teamNewPv;
/**
* 日结表-个人累计消费盒数
*/
private Integer consumeBoxNum;
/**
* 日结表-个人当日新消费盒数
*/
private Integer newBoxNum;
/**
* 日结表-个人伞下累计消费盒数
*/
private Integer teamBoxNum;
/**
* 日结表-个人伞下新消费盒数
*/
private Integer teamNewBoxNum;
/**
* 秒结表-个人新消费盒数
*/
private Integer sNewBoxNum;
/**
* 秒结表-团队新消费盒数
*/
private Integer sTeamNewBoxNum;
/**
* 秒结表-个人新消费pv
*/
private BigDecimal sNewConsumePv;
/**
* 秒结表-团队新消费pv
*/
private BigDecimal sTeamNewPv;
private Integer sTeamBoxNum;
/**
* 个人总业绩
*/
private BigDecimal totalPv;
/**
* 个人总盒数
*/
private Integer totalBoxNum;
/**
* 注水大区
*/
private Integer bigBoxNum;
/**
* 注水小区
*/
private Integer smallBoxNum;
}

View File

@ -0,0 +1,58 @@
package com.hzs.retail.member.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 会员数据统计
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CuMemberRetailDataStatisticsResultVO implements Serializable {
private static final long serialVersionUID = 747472786422852424L;
/**
* 用户主键
*/
private Long pkId;
/**
* 用户编号
*/
private String memberCode;
/**
* 总盒数
*/
private Integer totalBoxNum;
/**
* 大区盒数
*/
private Integer bigRangeTotalBoxNum;
/**
* 小区盒数
*/
private Integer smallRangeTotalBoxNum;
/**
* 总业绩
*/
private BigDecimal totalPv;
/**
* 大区业绩
*/
private BigDecimal bigRangeTotalPv;
/**
* 小区业绩
*/
private BigDecimal smallRangeTotalPv;
}

View File

@ -836,4 +836,39 @@
connect by prior cm.pk_id = cm.pk_parent
order by level
</select>
<select id="getRetailDataStatisticsDetail"
resultType="com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO">
SELECT
cu.pk_id,
cu.MEMBER_CODE,
NVL( mr.CONSUME_PV, 0 ) consumePv,
NVL( mr.NEW_CONSUME_PV, 0 ) newConsumePv,
NVL( mr.TEAM_CONSUME_PV, 0 ) teamConsumePv,
NVL( mr.TEAM_NEW_PV, 0 ) teamNewPv,
NVL( mr.CONSUME_BOX_NUM, 0 ) consumeBoxNum,
NVL( mr.NEW_BOX_NUM, 0 ) newBoxNum,
NVL( mr.TEAM_BOX_NUM, 0 ) teamBoxNum,
NVL( mr.TEAM_NEW_BOX_NUM, 0 ) teamNewBoxNum,
NVL( mr.BIG_BOX_NUM, 0 ) bigBoxNum,
NVL( mr.SMALL_BOX_NUM, 0 ) smallBoxNum,
NVL( mrs.NEW_BOX_NUM, 0 ) sNewBoxNum,
NVL( mrs.TEAM_NEW_BOX_NUM, 0 ) sTeamNewBoxNum,
NVL( mrs.NEW_CONSUME_PV, 0 ) sNewConsumePv,
NVL( mrs.TEAM_NEW_PV, 0 ) sTeamNewPv
FROM
cu_member cu
left join ${memberRetailTable} mr on cu.PK_ID = mr.PK_MEMBER and mr.CATEGORY = 0
left JOIN ${memberRetailSTable} mrs on cu.PK_ID = mrs.PK_MEMBER
<where>
<if test="pkMemberList != null and pkMemberList.size > 0">
cu.pk_id in
<foreach collection="pkMemberList" item="pkMember" separator="," open="(" close=")">
#{pkMember}
</foreach>
</if>
</where>
</select>
</mapper>

View File

@ -1,13 +1,11 @@
package com.hzs.system.config.controller.manage;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.hzs.common.core.annotation.Log;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.constant.msg.ConfigMsgConstants;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.utils.StringUtils;
@ -19,10 +17,8 @@ import com.hzs.common.domain.system.config.BdBonusItems;
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.util.TransactionUtils;
import com.hzs.system.base.ITransactionServiceApi;
import com.hzs.system.config.service.IBdBonusItemsService;
import com.hzs.system.config.vo.ApiBdBonusItemsVO;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -32,12 +28,7 @@ import java.util.Date;
import java.util.List;
/**
* <p>
* 奖项配置 前端控制器
* </p>
*
* @author zhangjing
* @since 2022-11-09
*/
@RestController
@RequestMapping("/manage/bd-bonus-items")
@ -45,79 +36,63 @@ public class BdBonusItemsController extends BaseController {
@Autowired
private IBdBonusItemsService bonusItemsService;
@DubboReference
private ITransactionServiceApi iTransactionServiceApi;
@Autowired
private RedisService redisService;
@Autowired
public void setRedisService(RedisService redisService) {
this.redisService = redisService;
}
/**
* @description: 查询奖项配置列表
* @author: zhang jing
* @date: 2022/8/30 10:20
* @param: [bonusItems]
* @return: com.hzs.common.core.web.page.TableDataInfo
* 查询奖项配置列表
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT)
@GetMapping("/list")
public TableDataInfo list(BdBonusItems bonusItems) {
startPage();
QueryWrapper<BdBonusItems> queryWrapper = new QueryWrapper();
queryWrapper.eq("PK_COUNTRY", SecurityUtils.getPkCountry());
if(StringUtils.isNotNull(bonusItems.getBonusName())){
queryWrapper.eq("BONUS_NAME",bonusItems.getBonusName());
}
queryWrapper.orderByAsc("PK_ID");
List<BdBonusItemsExt> listExt = new ArrayList<>();
startPage();
LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdBonusItems::getPkCountry, SecurityUtils.getPkCountry());
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
}
queryWrapper.orderByAsc(BdBonusItems::getPkId);
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
list.forEach(item -> listExt.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class)));
TableDataInfo tableDataInfo = getDataTable(list);
tableDataInfo.setRows(listExt);
return tableDataInfo;
}
/**
* @description: 导出
* @author: zhang jing
* @date: 2023/4/4 9:56
* @param: [response, bonusItems]
* @return: void
* 导出
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, BdBonusItems bonusItems) {
QueryWrapper<BdBonusItems> queryWrapper = new QueryWrapper();
queryWrapper.eq("PK_COUNTRY", SecurityUtils.getPkCountry());
LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdBonusItems::getPkCountry, SecurityUtils.getPkCountry());
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
queryWrapper.eq("BONUS_NAME",bonusItems.getBonusName());
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
}
queryWrapper.orderByAsc("PK_ID");
queryWrapper.orderByAsc(BdBonusItems::getPkId);
List<BdBonusItemsExt> listExt = new ArrayList<>();
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
list.forEach(item -> listExt.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class)));
ExcelUtil<BdBonusItemsExt> util = new ExcelUtil<>(BdBonusItemsExt.class);
util.exportExcel(response, listExt, "奖项配置");
}
/**
* @description: 查询奖项配置列表(下拉选)
* @author: zhang jing
* @date: 2022/8/30 10:20
* @param: [bonusItems]
* @return: com.hzs.common.core.web.page.TableDataInfo
* 查询奖项配置列表(下拉选)
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT)
@GetMapping("/listNoPage")
public TableDataInfo listNoPage(BdBonusItems bonusItems) {
QueryWrapper<BdBonusItems> queryWrapper = new QueryWrapper();
queryWrapper.eq("PK_COUNTRY", SecurityUtils.getPkCountry());
LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdBonusItems::getPkCountry, SecurityUtils.getPkCountry());
if (StringUtils.isNotNull(bonusItems.getBonusName())) {
queryWrapper.eq("BONUS_NAME",bonusItems.getBonusName());
queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName());
}
queryWrapper.orderByAsc("PK_ID");
queryWrapper.orderByAsc(BdBonusItems::getPkId);
List<ApiBdBonusItemsVO> listVO = new ArrayList<>();
List<BdBonusItems> list = bonusItemsService.list(queryWrapper);
list.forEach(item -> listVO.add(BeanUtil.copyProperties(item, ApiBdBonusItemsVO.class)));
@ -125,11 +100,7 @@ public class BdBonusItemsController extends BaseController {
}
/**
* @description: 生成奖项
* @author: zhang jing
* @date: 2022/10/22 9:54
* @param: [grade]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 生成奖项
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.INSERT)
@PostMapping("/generate")
@ -137,13 +108,8 @@ public class BdBonusItemsController extends BaseController {
return AjaxResult.success(bonusItemsService.generate(bonusItems));
}
/**
* @description: 修改奖项配置
* @author: zhang jing
* @date: 2022/8/30 10:21
* @param: [bonusItems]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 修改奖项配置
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.UPDATE)
@PostMapping("/update")
@ -170,34 +136,14 @@ public class BdBonusItemsController extends BaseController {
if (StringUtils.isNull(bonusItems.getWithdrawalDate())) {
return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.WITHDRAWAL_DATE_NOT_NULL));
}
//字段翻译保存到数据库
if(null!=bonusItems.getPkTransaction()){
R<Boolean> b = iTransactionServiceApi.updateTransaction(pkCountry,
bonusItems.getBonusName(),bonusItems.getPkTransaction(), true);
}else{
//字段翻译保存到数据库
R<Integer> pkTransaction= iTransactionServiceApi.createTransaction(pkCountry, ETransactionKey.BD_BONUS_ITEMS,
bonusItems.getBonusName(), EYesNo.YES, EYesNo.NO);
bonusItems.setPkTransaction(pkTransaction.getData());
}
bonusItems.setPkModified(SecurityUtils.getUserId());
bonusItems.setModifiedTime(new Date());
redisService.deleteObject(CacheConstants.BD_BONUS_ITEMS + pkCountry);
return toAjax(bonusItemsService.updateById(bonusItems));
}
/**
* @description: 查询单条奖项配置
* @author: zhang jing
* @date: 2022/8/30 10:21
* @param: [pkId]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 查询单条奖项配置
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT)
@GetMapping("/getOne/{pkId}")
@ -207,30 +153,18 @@ public class BdBonusItemsController extends BaseController {
return AjaxResult.success(bonusItemsExt);
}
/**
* @description: 删除奖项配置
* @author: zhang jing
* @date: 2022/8/30 10:21
* @param: [pkId]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 删除奖项配置
**/
@Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.DELETE)
@DeleteMapping("/{pkId}")
public AjaxResult delete(@PathVariable Long pkId) {
UpdateWrapper<BdBonusItems> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("PK_ID", pkId);
updateWrapper.set("DEL_FLAG", EDelFlag.DELETE.getValue());
updateWrapper.set("PK_MODIFIED", SecurityUtils.getUserId());
updateWrapper.set("MODIFIED_TIME", new Date());
LambdaUpdateWrapper<BdBonusItems> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(BdBonusItems::getPkId, pkId);
updateWrapper.set(BdBonusItems::getDelFlag, EDelFlag.DELETE.getValue());
updateWrapper.set(BdBonusItems::getPkModified, SecurityUtils.getUserId());
updateWrapper.set(BdBonusItems::getModifiedTime, new Date());
redisService.deleteObject(CacheConstants.BD_BONUS_ITEMS + SecurityUtils.getPkCountry());
//删除翻译
BdBonusItems bdBonusItems=bonusItemsService.getById(pkId);
List<Long> pkIdList=new ArrayList<>();
if(null!=bdBonusItems.getPkTransaction()){
pkIdList.add(bdBonusItems.getPkTransaction().longValue());
R<Boolean> b=iTransactionServiceApi.removeTransactionByPkId(pkIdList);
}
return toAjax(bonusItemsService.update(updateWrapper));
}
}

View File

@ -17,15 +17,6 @@ public class RetailConstants {
* 直推平级收益比例每代拿商品价格的千分之五
*/
public static final BigDecimal SAME_RATIO = new BigDecimal("0.005");
/**
* 直推平缓收益代数每级都是10代
*/
public static final Integer SAME_ALGEBRA = 10;
/**
* 区域分红每盒2元
*/
public static final BigDecimal AREA_BOX_BONUS = new BigDecimal("2");
/**
* 盒数产品列表

View File

@ -52,7 +52,10 @@ public class BonusMsgConstants {
public static String RETAIL_BENEFIT_AVG_INCOME = "获得%f月福利平均收益,结算月%s。";
public static String RETAIL_AREA_INCOME = "订单编号%s,%s为%s贡献了区域收益,区域收益%f,收益县%s。";
/**
* 区域分红说明
*/
public static String RETAIL_AREA_INCOME = "订单编号%s,%s为%s贡献了区域分红,区域分红%f,收益县%s。";
public static String RETAIL_BENEFIT_INCOME = "获得%f月福利加权收益,结算月%s。";
@ -110,10 +113,16 @@ public class BonusMsgConstants {
// public static String SHARE_RANGE = "MSG_BONUS_017";
public static String SHARE_RANGE = "订单编号%s,%s为%s贡献了复购极差收益,计算业绩%f,前一极差等级名称%s,当前极差等级名称%s。";
public static String RANGE = "订单编号%s,%s为%s贡献了极差收益,计算业绩%f,前一极差等级名称%s,当前极差等级名称%s。";
public static String RETAIL_RANGE = "订单编号%s,%s为%s贡献了福利极差收益,计算业绩%f,前一极差等级名称%s,当前极差等级名称%s。";
/**
* 直推级差收益说明
*/
public static String RANGE = "订单编号%s,%s为%s贡献了直推级差收益,计算金额%f,前一级差等级名称%s,当前级差等级名称%s。";
/**
* 平级收益
*/
public static String ORI_RANGE = "订单编号%s,%s为%s贡献了平级收益,计算业绩%f,等级名称%s。";
public static String LE_SHARE_RANGE = "订单编号%s,%s为%s贡献了复购极差收益,收益%f。";

View File

@ -5,11 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Description: 奖金收益状态 奖金明细表
* @Author: sui q
* @Time: 2022/11/10 16:03
* @Classname: EBonusIncomeStatus
* @PackageName: com.hzs.common.core.enums
* 奖金收益状态 奖金明细表
*/
@AllArgsConstructor
@Getter

View File

@ -224,7 +224,7 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal makerRealSubtotal;
/**
* 新零售极差收益
* 新零售直推收益
*/
@TableField("RETAIL_RANGE_INCOME")
private BigDecimal retailRangeIncome;
@ -236,7 +236,7 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal retailSameLevelIncome;
/**
* 新零售区域收益
* 新零售区域分红
*/
@TableField("RETAIL_AREA_INCOME")
private BigDecimal retailAreaIncome;

View File

@ -381,7 +381,7 @@ public class CuBonusVertexStatis extends BaseEntity {
private BigDecimal retailConsumePv;
/**
* 新零售极差收益
* 新零售直推收益
*/
@TableField("RETAIL_RANGE_INCOME")
private BigDecimal retailRangeIncome;

View File

@ -6,12 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 奖项配置
* </p>
*
* @author zhangjing
* @since 2022-11-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -24,6 +19,7 @@ public class BdBonusItemsExt extends BdBonusItems {
*/
@Excel(name = "结算周期", sort = 2)
private String settleTypeVal;
/**
* 公布日期
*/
@ -42,8 +38,4 @@ public class BdBonusItemsExt extends BdBonusItems {
@Excel(name = "可提现日期", sort = 6)
private String withdrawalDateVal;
}