## 乐学复购级差法宝券处理第一版;
This commit is contained in:
parent
6a4b2ebaf0
commit
de3caf9321
|
@ -32,7 +32,7 @@ public interface ISaOrderServiceApi {
|
||||||
* @Author: sui q
|
* @Author: sui q
|
||||||
* @Date: 2022/11/2 16:30
|
* @Date: 2022/11/2 16:30
|
||||||
*/
|
*/
|
||||||
R<List<SaOrderExt>> querySaOrderByDay(Date startDate, Date endDate);
|
R<List<SaOrderExt>> listSaOrderByDay(Date startDate, Date endDate, String orderCode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询时间范围内的所有订单,按照订单时间排序,只能用于奖金结算
|
* 查询时间范围内的所有订单,按照订单时间排序,只能用于奖金结算
|
||||||
|
|
|
@ -653,15 +653,8 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
||||||
List<AcPickMemberLog> acPickMemberLogList = acPickServiceApi.queryPickMemberLog(specialOrderList).getData();
|
List<AcPickMemberLog> acPickMemberLogList = acPickServiceApi.queryPickMemberLog(specialOrderList).getData();
|
||||||
// key: 会员ID + 提货专区ID
|
// key: 会员ID + 提货专区ID
|
||||||
Map<String, AcPickMemberLog> pickMemberLogMap = new HashMap<>(ComputeUtil.mapInitCapacity(acPickMemberLogList.size()));
|
Map<String, AcPickMemberLog> pickMemberLogMap = new HashMap<>(ComputeUtil.mapInitCapacity(acPickMemberLogList.size()));
|
||||||
// key: 会员ID + 订单ID
|
|
||||||
Map<String, AcPickMemberLog> orderMemberMap = new HashMap<>(ComputeUtil.mapInitCapacity(acPickMemberLogList.size()));
|
|
||||||
if (CollectionUtil.isNotEmpty(acPickMemberLogList)) {
|
if (CollectionUtil.isNotEmpty(acPickMemberLogList)) {
|
||||||
acPickMemberLogList.forEach(acPickMemberLog -> {
|
acPickMemberLogList.forEach(acPickMemberLog -> pickMemberLogMap.put(acPickMemberLog.getPkMember().toString() + acPickMemberLog.getPkPick(), acPickMemberLog));
|
||||||
pickMemberLogMap.put(acPickMemberLog.getPkMember().toString() + acPickMemberLog.getPkId(), acPickMemberLog);
|
|
||||||
orderMemberMap.put(acPickMemberLog.getPkMember() + acPickMemberLog.getPickOrder(), acPickMemberLog);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
leXueRangeParam.setAcPickMemberLogList(acPickMemberLogList);
|
leXueRangeParam.setAcPickMemberLogList(acPickMemberLogList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -677,6 +670,14 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
||||||
});
|
});
|
||||||
List<AcPickExt> acPickExtList = new ArrayList<>();
|
List<AcPickExt> acPickExtList = new ArrayList<>();
|
||||||
for (SaOrderExt saOrderExt : specialOrderList) {
|
for (SaOrderExt saOrderExt : specialOrderList) {
|
||||||
|
// 商品使用法宝券数量(key: 商品ID,value: 法宝券数量)
|
||||||
|
Map<Integer, Integer> productPickMap = new HashMap<>();
|
||||||
|
for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) {
|
||||||
|
if (null != saOrderItemsExt.getUsePick() && saOrderItemsExt.getUsePick() != 0) {
|
||||||
|
productPickMap.put(saOrderItemsExt.getPkWares(), saOrderItemsExt.getUsePick());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) {
|
for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) {
|
||||||
if (EYesNo.YES.getIntValue() == saOrderItemsExt.getIsGift()
|
if (EYesNo.YES.getIntValue() == saOrderItemsExt.getIsGift()
|
||||||
|| ComputeUtil.compareEqual(saOrderItemsExt.getPrice(), BigDecimal.ZERO)
|
|| ComputeUtil.compareEqual(saOrderItemsExt.getPrice(), BigDecimal.ZERO)
|
||||||
|
@ -694,108 +695,35 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 订单会员推荐人
|
// 当前订单明细使用了法宝券
|
||||||
Long pkParent = sourceMemberSettleExt.getPkParent();
|
Integer useNum = productPickMap.get(saOrderItemsExt.getPkWares());
|
||||||
// 订单会员等级
|
|
||||||
int gradeValue = sourceMemberSettleExt.getGradeValue();
|
|
||||||
|
|
||||||
// 订单是否使用法宝券(true 使用了法宝券)
|
if (null != useNum) {
|
||||||
boolean useFlag = null != orderMemberMap.get(saOrderExt.getPkMember() + saOrderExt.getOrderCode()) ? Boolean.TRUE : Boolean.FALSE;
|
// 订单使用了法宝券
|
||||||
if (EGrade.S_VIP.getValue() == gradeValue && useFlag) {
|
if (useNum.equals(saOrderItemsExt.getWaresQuantity())) {
|
||||||
// 下单会员是 V4 并且 使用了法宝券,直接结束
|
// 法宝券和商品数量一致
|
||||||
break;
|
this.usePick(specialmeberSettleExtMap, rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
|
||||||
}
|
sourceMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
|
||||||
|
|
||||||
// 找不到父级了或者找到第一个svip直接跳出
|
|
||||||
boolean V1Flag = Boolean.TRUE;
|
|
||||||
boolean V2Flag = Boolean.TRUE;
|
|
||||||
boolean V3Flag = Boolean.TRUE;
|
|
||||||
while (true) {
|
|
||||||
CuMemberSettleExt targetMemberSettleExt = specialmeberSettleExtMap.get(pkParent);
|
|
||||||
if (null == targetMemberSettleExt) {
|
|
||||||
// 上面没有推荐人了,直接结束
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (useFlag) {
|
|
||||||
// 订单使用了法宝券,查询大于当前会员的
|
|
||||||
if (gradeValue < targetMemberSettleExt.getGradeValue() && EGrade.MAKER.getValue() == targetMemberSettleExt.getGradeValue() && V2Flag && V3Flag) {
|
|
||||||
// 订单会员等级小于推荐人等级 并且 推荐人是 V2 并且 V2 V3 都没有算过
|
|
||||||
AcPickExt acPickExt = calculateRangeBonus(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt, sourceMemberSettleExt,
|
|
||||||
targetMemberSettleExt, cuMemberBonusRangeList);
|
|
||||||
if (null != acPickExt) {
|
|
||||||
acPickExtList.add(acPickExt);
|
|
||||||
}
|
|
||||||
pkParent = targetMemberSettleExt.getPkParent();
|
|
||||||
sourceMemberSettleExt = targetMemberSettleExt;
|
|
||||||
V2Flag = Boolean.FALSE;
|
|
||||||
} else if (gradeValue < targetMemberSettleExt.getGradeValue() && EGrade.VIP.getValue() == targetMemberSettleExt.getGradeValue() && V3Flag) {
|
|
||||||
// 订单会员等级小于推荐人等级 并且 推荐人是 V3 并且 V3没有算过
|
|
||||||
AcPickExt acPickExt = calculateRangeBonus(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt, sourceMemberSettleExt,
|
|
||||||
targetMemberSettleExt, cuMemberBonusRangeList);
|
|
||||||
if (null != acPickExt) {
|
|
||||||
acPickExtList.add(acPickExt);
|
|
||||||
}
|
|
||||||
pkParent = targetMemberSettleExt.getPkParent();
|
|
||||||
sourceMemberSettleExt = targetMemberSettleExt;
|
|
||||||
V3Flag = Boolean.FALSE;
|
|
||||||
} else if (gradeValue < targetMemberSettleExt.getGradeValue() && EGrade.S_VIP.getValue() == targetMemberSettleExt.getGradeValue()) {
|
|
||||||
// 订单会员等级小于推荐人等级 并且 推荐人是 V4
|
|
||||||
AcPickExt acPickExt = calculateRangeBonus(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt, sourceMemberSettleExt,
|
|
||||||
targetMemberSettleExt, cuMemberBonusRangeList);
|
|
||||||
if (null != acPickExt) {
|
|
||||||
acPickExtList.add(acPickExt);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
pkParent = targetMemberSettleExt.getPkParent();
|
|
||||||
sourceMemberSettleExt = targetMemberSettleExt;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
// 订单没有使用法宝券
|
// 法宝券和商品数量不一致,需要拆分处理
|
||||||
if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.YOU_KE.getValue() == targetMemberSettleExt.getGradeValue() && V1Flag && V2Flag && V3Flag) {
|
// 使用法宝券部分处理
|
||||||
// 订单会员等级小于推荐人等级 并且 推荐人是 V1 并且 V1 V2 V3 都没有算过
|
SaOrderItemsExt tmpItems1 = BeanUtil.copyProperties(saOrderItemsExt, SaOrderItemsExt.class);
|
||||||
AcPickExt acPickExt = calculateRangeBonus(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt, sourceMemberSettleExt,
|
tmpItems1.setWaresQuantity(useNum);
|
||||||
targetMemberSettleExt, cuMemberBonusRangeList);
|
tmpItems1.setUsePick(useNum);
|
||||||
if (null != acPickExt) {
|
this.usePick(specialmeberSettleExtMap, rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, tmpItems1,
|
||||||
acPickExtList.add(acPickExt);
|
sourceMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
|
||||||
}
|
|
||||||
pkParent = targetMemberSettleExt.getPkParent();
|
// 未使用法宝券部分处理
|
||||||
sourceMemberSettleExt = targetMemberSettleExt;
|
SaOrderItemsExt tmpItems2 = BeanUtil.copyProperties(saOrderItemsExt, SaOrderItemsExt.class);
|
||||||
V1Flag = Boolean.FALSE;
|
tmpItems2.setWaresQuantity(saOrderItemsExt.getWaresQuantity() - useNum);
|
||||||
} else if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.MAKER.getValue() == targetMemberSettleExt.getGradeValue() && V2Flag && V3Flag) {
|
tmpItems2.setUsePick(saOrderItemsExt.getWaresQuantity() - useNum);
|
||||||
// 订单会员等级小于推荐人等级 并且 推荐人是 V2 并且 V2 V3 都没有算过
|
this.notUsePick(specialmeberSettleExtMap, rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, tmpItems2,
|
||||||
AcPickExt acPickExt = calculateRangeBonus(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt, sourceMemberSettleExt,
|
sourceMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
|
||||||
targetMemberSettleExt, cuMemberBonusRangeList);
|
|
||||||
if (null != acPickExt) {
|
|
||||||
acPickExtList.add(acPickExt);
|
|
||||||
}
|
|
||||||
pkParent = targetMemberSettleExt.getPkParent();
|
|
||||||
sourceMemberSettleExt = targetMemberSettleExt;
|
|
||||||
V2Flag = Boolean.FALSE;
|
|
||||||
} else if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.VIP.getValue() == targetMemberSettleExt.getGradeValue() && V3Flag) {
|
|
||||||
// 订单会员等级小于推荐人等级 并且 推荐人是 V3 并且 V3没有算过
|
|
||||||
AcPickExt acPickExt = calculateRangeBonus(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt, sourceMemberSettleExt,
|
|
||||||
targetMemberSettleExt, cuMemberBonusRangeList);
|
|
||||||
if (null != acPickExt) {
|
|
||||||
acPickExtList.add(acPickExt);
|
|
||||||
}
|
|
||||||
pkParent = targetMemberSettleExt.getPkParent();
|
|
||||||
sourceMemberSettleExt = targetMemberSettleExt;
|
|
||||||
V3Flag = Boolean.FALSE;
|
|
||||||
} else if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.S_VIP.getValue() == targetMemberSettleExt.getGradeValue()) {
|
|
||||||
// 订单会员等级小于推荐人等级 并且 推荐人是 V4
|
|
||||||
AcPickExt acPickExt = calculateRangeBonus(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt, sourceMemberSettleExt,
|
|
||||||
targetMemberSettleExt, cuMemberBonusRangeList);
|
|
||||||
if (null != acPickExt) {
|
|
||||||
acPickExtList.add(acPickExt);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
pkParent = targetMemberSettleExt.getPkParent();
|
|
||||||
sourceMemberSettleExt = targetMemberSettleExt;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// 没使用法宝券
|
||||||
|
this.notUsePick(specialmeberSettleExtMap, rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
|
||||||
|
sourceMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -805,6 +733,111 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用法宝券处理
|
||||||
|
*/
|
||||||
|
private void usePick(Map<Long, CuMemberSettleExt> specialmeberSettleExtMap, Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO, Integer period,
|
||||||
|
Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, SaOrderItemsExt saOrderItemsExt, CuMemberSettleExt sourceMemberSettleExt,
|
||||||
|
List<CuMemberBonusRange> cuMemberBonusRangeList, List<AcPickExt> acPickExtList) {
|
||||||
|
// 订单会员推荐人
|
||||||
|
Long pkParent = sourceMemberSettleExt.getPkParent();
|
||||||
|
// 订单会员等级
|
||||||
|
int gradeValue = sourceMemberSettleExt.getGradeValue();
|
||||||
|
|
||||||
|
// 找不到父级了或者找到第一个svip直接跳出
|
||||||
|
boolean V2Flag = Boolean.TRUE;
|
||||||
|
boolean V3Flag = Boolean.TRUE;
|
||||||
|
while (true) {
|
||||||
|
CuMemberSettleExt targetMemberSettleExt = specialmeberSettleExtMap.get(pkParent);
|
||||||
|
if (null == targetMemberSettleExt) {
|
||||||
|
// 上面没有推荐人了,直接结束
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 法宝券和商品数量一致
|
||||||
|
if (gradeValue < targetMemberSettleExt.getGradeValue() && EGrade.MAKER.getValue() == targetMemberSettleExt.getGradeValue() && V2Flag && V3Flag) {
|
||||||
|
// 订单会员等级小于推荐人等级 并且 推荐人是 V2 并且 V2 V3 都没有算过
|
||||||
|
this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
|
||||||
|
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
|
||||||
|
V2Flag = Boolean.FALSE;
|
||||||
|
} else if (gradeValue < targetMemberSettleExt.getGradeValue() && EGrade.VIP.getValue() == targetMemberSettleExt.getGradeValue() && V3Flag) {
|
||||||
|
// 订单会员等级小于推荐人等级 并且 推荐人是 V3 并且 V3没有算过
|
||||||
|
this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
|
||||||
|
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
|
||||||
|
V3Flag = Boolean.FALSE;
|
||||||
|
} else if (gradeValue < targetMemberSettleExt.getGradeValue() && EGrade.S_VIP.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||||
|
// 订单会员等级小于推荐人等级 并且 推荐人是 V4
|
||||||
|
this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
|
||||||
|
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pkParent = targetMemberSettleExt.getPkParent();
|
||||||
|
sourceMemberSettleExt = targetMemberSettleExt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 未使用法宝券处理
|
||||||
|
*/
|
||||||
|
private void notUsePick(Map<Long, CuMemberSettleExt> specialmeberSettleExtMap, Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO, Integer period,
|
||||||
|
Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, SaOrderItemsExt saOrderItemsExt, CuMemberSettleExt sourceMemberSettleExt,
|
||||||
|
List<CuMemberBonusRange> cuMemberBonusRangeList, List<AcPickExt> acPickExtList) {
|
||||||
|
// 订单会员推荐人
|
||||||
|
Long pkParent = sourceMemberSettleExt.getPkParent();
|
||||||
|
// 订单会员等级
|
||||||
|
int gradeValue = sourceMemberSettleExt.getGradeValue();
|
||||||
|
|
||||||
|
// 找不到父级了或者找到第一个svip直接跳出
|
||||||
|
boolean V1Flag = Boolean.TRUE;
|
||||||
|
boolean V2Flag = Boolean.TRUE;
|
||||||
|
boolean V3Flag = Boolean.TRUE;
|
||||||
|
while (true) {
|
||||||
|
CuMemberSettleExt targetMemberSettleExt = specialmeberSettleExtMap.get(pkParent);
|
||||||
|
if (null == targetMemberSettleExt) {
|
||||||
|
// 上面没有推荐人了,直接结束
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 法宝券和商品数量一致
|
||||||
|
if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.YOU_KE.getValue() == targetMemberSettleExt.getGradeValue() && V1Flag && V2Flag && V3Flag) {
|
||||||
|
// 订单会员等级小于推荐人等级 并且 推荐人是 V1 并且 V1 V2 V3 都没有算过
|
||||||
|
this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
|
||||||
|
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
|
||||||
|
V1Flag = Boolean.FALSE;
|
||||||
|
} else if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.MAKER.getValue() == targetMemberSettleExt.getGradeValue() && V2Flag && V3Flag) {
|
||||||
|
// 订单会员等级小于推荐人等级 并且 推荐人是 V2 并且 V2 V3 都没有算过
|
||||||
|
this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
|
||||||
|
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
|
||||||
|
V2Flag = Boolean.FALSE;
|
||||||
|
} else if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.VIP.getValue() == targetMemberSettleExt.getGradeValue() && V3Flag) {
|
||||||
|
// 订单会员等级小于推荐人等级 并且 推荐人是 V3 并且 V3没有算过
|
||||||
|
this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
|
||||||
|
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
|
||||||
|
V3Flag = Boolean.FALSE;
|
||||||
|
} else if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.S_VIP.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||||
|
// 订单会员等级小于推荐人等级 并且 推荐人是 V4
|
||||||
|
this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
|
||||||
|
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pkParent = targetMemberSettleExt.getPkParent();
|
||||||
|
sourceMemberSettleExt = targetMemberSettleExt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 封装法宝券抵扣相关
|
||||||
|
*/
|
||||||
|
private void handlePick(Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||||
|
SaOrderExt saOrderExt, SaOrderItemsExt saOrderItemsExt, CuMemberSettleExt sourceMemberSettleExt, CuMemberSettleExt targetMemberSettleExt,
|
||||||
|
List<CuMemberBonusRange> cuMemberBonusRangeList, List<AcPickExt> acPickExtList) {
|
||||||
|
AcPickExt acPickExt = calculateRangeBonus(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt, sourceMemberSettleExt,
|
||||||
|
targetMemberSettleExt, cuMemberBonusRangeList);
|
||||||
|
if (null != acPickExt) {
|
||||||
|
acPickExtList.add(acPickExt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算封装乐学复购特殊级差(法宝券)返回扣除提货法宝券
|
* 计算封装乐学复购特殊级差(法宝券)返回扣除提货法宝券
|
||||||
*
|
*
|
||||||
|
@ -821,14 +854,17 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
||||||
*/
|
*/
|
||||||
private AcPickExt calculateRangeBonus(Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO, Integer period,
|
private AcPickExt calculateRangeBonus(Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO, Integer period,
|
||||||
Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, SaOrderItemsExt saOrderItemsExt,
|
Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, SaOrderItemsExt saOrderItemsExt,
|
||||||
CuMemberSettleExt sourceMemberSettleExt,
|
CuMemberSettleExt sourceMemberSettleExt, CuMemberSettleExt targetMemberSettleExt,
|
||||||
CuMemberSettleExt targetMemberSettleExt, List<CuMemberBonusRange> cuMemberBonusRangeList) {
|
List<CuMemberBonusRange> cuMemberBonusRangeList) {
|
||||||
if (targetMemberSettleExt.getUsableQuantity() != null && targetMemberSettleExt.getUsableQuantity() > 0) {
|
if (targetMemberSettleExt.getUsableQuantity() != null && targetMemberSettleExt.getUsableQuantity() > 0) {
|
||||||
|
// 扣减数量(如果剩余法宝券 大于等于 商品数量,则使用商品数量,否则使用法宝券数量)
|
||||||
|
int waresQuantity = targetMemberSettleExt.getUsableQuantity() >= saOrderItemsExt.getWaresQuantity() ? saOrderItemsExt.getWaresQuantity() : targetMemberSettleExt.getUsableQuantity();
|
||||||
|
|
||||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||||
CuMemberBonusRange cuMemberBonusRange = getCuMemberBonusRange(bonusConfigDTO, saOrderExt, targetMemberSettleExt, cuMemberBonus);
|
CuMemberBonusRange cuMemberBonusRange = getCuMemberBonusRange(bonusConfigDTO, saOrderExt, targetMemberSettleExt, cuMemberBonus);
|
||||||
cuMemberBonusRange.setCalAchieve(saOrderItemsExt.getAchievement());
|
cuMemberBonusRange.setCalAchieve(saOrderItemsExt.getAchievement());
|
||||||
cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
|
cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
|
||||||
cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeMultiply(BigDecimal.valueOf(saOrderItemsExt.getWaresQuantity()),
|
cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeMultiply(BigDecimal.valueOf(waresQuantity),
|
||||||
ComputeUtil.computeDivide(targetMemberSettleExt.getRetailPrice(), BigDecimal.valueOf(1))));
|
ComputeUtil.computeDivide(targetMemberSettleExt.getRetailPrice(), BigDecimal.valueOf(1))));
|
||||||
String key = targetMemberSettleExt.getPkSettleCountry().toString() + ERangeType.GRADE.getValue() + targetMemberSettleExt.getPkGrade();
|
String key = targetMemberSettleExt.getPkSettleCountry().toString() + ERangeType.GRADE.getValue() + targetMemberSettleExt.getPkGrade();
|
||||||
cuMemberBonusRange.setPkRange(rangeDtoMap.get(key).getPkRange());
|
cuMemberBonusRange.setPkRange(rangeDtoMap.get(key).getPkRange());
|
||||||
|
@ -846,13 +882,13 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
||||||
setPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
|
setPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
|
||||||
}
|
}
|
||||||
cuMemberBonusRangeList.add(cuMemberBonusRange);
|
cuMemberBonusRangeList.add(cuMemberBonusRange);
|
||||||
targetMemberSettleExt.setUsableQuantity(targetMemberSettleExt.getUsableQuantity() - saOrderItemsExt.getWaresQuantity());
|
targetMemberSettleExt.setUsableQuantity(targetMemberSettleExt.getUsableQuantity() - waresQuantity);
|
||||||
AcPickExt acPickExt = new AcPickExt();
|
AcPickExt acPickExt = new AcPickExt();
|
||||||
acPickExt.setPkId(targetMemberSettleExt.getApPkId());
|
acPickExt.setPkId(targetMemberSettleExt.getApPkId());
|
||||||
acPickExt.setPkMember(targetMemberSettleExt.getPkMember());
|
acPickExt.setPkMember(targetMemberSettleExt.getPkMember());
|
||||||
acPickExt.setOrderCode(saOrderExt.getOrderCode());
|
acPickExt.setOrderCode(saOrderExt.getOrderCode());
|
||||||
acPickExt.setPickType(EPickType.COUPON.getValue());
|
acPickExt.setPickType(EPickType.COUPON.getValue());
|
||||||
acPickExt.setUsedQuantity(saOrderItemsExt.getWaresQuantity());
|
acPickExt.setUsedQuantity(waresQuantity);
|
||||||
acPickExt.setPkBaseConfig(0L);
|
acPickExt.setPkBaseConfig(0L);
|
||||||
acPickExt.setPkDataId(targetMemberSettleExt.getPkDataId());
|
acPickExt.setPkDataId(targetMemberSettleExt.getPkDataId());
|
||||||
return acPickExt;
|
return acPickExt;
|
||||||
|
|
|
@ -426,7 +426,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// 计算完奖衔回退业绩,最终根据新增进行回写
|
// 计算完奖衔回退业绩,最终根据新增进行回写
|
||||||
// cuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
|
// cuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
|
||||||
//********************************重新考核*********************************/
|
//********************************重新考核*********************************/
|
||||||
// TODO new 乐学没有分红、复购考核,这个位置需要去掉
|
// TODO new 乐学没有分红、复购考核,这个位置需要去掉???
|
||||||
cuMemberAssessService.retryCalculationAssess(DateUtils.parseStringToDate(settleDate), Boolean.TRUE);
|
cuMemberAssessService.retryCalculationAssess(DateUtils.parseStringToDate(settleDate), Boolean.TRUE);
|
||||||
//*********************************计算奖金********************************/
|
//*********************************计算奖金********************************/
|
||||||
// 首购订单 (注册+升级) 直推奖、量奖、领导奖、(注册)报单服务费
|
// 首购订单 (注册+升级) 直推奖、量奖、领导奖、(注册)报单服务费
|
||||||
|
@ -448,12 +448,13 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// 计算乐享订单奖金,按照订单进行日结
|
// 计算乐享订单奖金,按照订单进行日结
|
||||||
// 增加判断是否相同月,相同月的话昨天的考核结果更新到今天
|
// 增加判断是否相同月,相同月的话昨天的考核结果更新到今天
|
||||||
Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
|
Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
|
||||||
|
// 乐享奖金
|
||||||
bonusSettleRangeHandle.calculateLeEnjoyBonusBySaOrder(cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
bonusSettleRangeHandle.calculateLeEnjoyBonusBySaOrder(cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
||||||
period, yesterdayPeriod, isSameMonth);
|
period, yesterdayPeriod, isSameMonth);
|
||||||
// 计算新零售团队奖金
|
// 计算新零售团队奖金
|
||||||
// bonusSettleRangeHandle.calculateRetailBonusBySaOrder(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
// bonusSettleRangeHandle.calculateRetailBonusBySaOrder(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
||||||
// period, yesterdayPeriod, retailOrderList, isSameMonth);
|
// period, yesterdayPeriod, retailOrderList, isSameMonth);
|
||||||
// suiqing 验证是否月奖,验证是否是结算月底那一天,月底那一天计算云代,判断是否为月底
|
// 验证是否月奖,验证是否是结算月底那一天,月底那一天计算云代,判断是否为月底
|
||||||
//*********************************计算云代奖金、 复购券均分收益************************/
|
//*********************************计算云代奖金、 复购券均分收益************************/
|
||||||
if (settleDate.endsWith("10")) {
|
if (settleDate.endsWith("10")) {
|
||||||
// 计算云代奖金
|
// 计算云代奖金
|
||||||
|
|
|
@ -644,7 +644,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
||||||
cuMemberTreeService.createCuMemberTree(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)));
|
cuMemberTreeService.createCuMemberTree(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)));
|
||||||
log.info("初始化表完成");
|
log.info("初始化表完成");
|
||||||
// 奖金结算
|
// 奖金结算
|
||||||
List<SaOrderExt> saOrderExtList = saOrderServiceApi.querySaOrderByDay(startDate, settleEndDate).getData();
|
List<SaOrderExt> saOrderExtList = saOrderServiceApi.listSaOrderByDay(startDate, settleEndDate, "SO1744257643744907").getData();
|
||||||
bonusSettleService.calculateCuMemberBonus(settleDate, saOrderExtList);
|
bonusSettleService.calculateCuMemberBonus(settleDate, saOrderExtList);
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,6 +81,7 @@ public class ApiOthSaOrderController extends ParentOrderController {
|
||||||
// 商品预售数量不足
|
// 商品预售数量不足
|
||||||
return AjaxResult.error(SaOrderMsgConstants.WARES_PRE_SALE_QUANTITY_LACK);
|
return AjaxResult.error(SaOrderMsgConstants.WARES_PRE_SALE_QUANTITY_LACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orderParam.getSpecialArea() != EOrderType.REGISTER_ORDER.getValue() &&
|
if (orderParam.getSpecialArea() != EOrderType.REGISTER_ORDER.getValue() &&
|
||||||
orderParam.getSpecialArea() != EOrderType.SPECIAL_REGISTER_ORDER.getValue()) {
|
orderParam.getSpecialArea() != EOrderType.SPECIAL_REGISTER_ORDER.getValue()) {
|
||||||
convertShoppingCarToSku(orderParam);
|
convertShoppingCarToSku(orderParam);
|
||||||
|
|
|
@ -50,8 +50,8 @@ public class SaOrderServiceProvider implements ISaOrderServiceApi {
|
||||||
private ISaOrderService saOrderService;
|
private ISaOrderService saOrderService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public R<List<SaOrderExt>> querySaOrderByDay(Date startDate, Date endDate) {
|
public R<List<SaOrderExt>> listSaOrderByDay(Date startDate, Date endDate, String orderCode) {
|
||||||
return R.ok(saOrderService.querySaOrderByTime(startDate, endDate, null));
|
return R.ok(saOrderService.querySaOrderByTime(startDate, endDate, orderCode));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -326,11 +326,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
return redisService.lockKeyOnce(key);
|
return redisService.lockKeyOnce(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<CuMemberAccountExt> queryMemberAccountByCondition(CuMemberAccount cuMemberAccount) {
|
|
||||||
return memberAccountServiceApi.queryMemberAccountByCondition(cuMemberAccount).getData();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CuMemberAccountExt queryOrderSpendDetails(CuMemberAccountExt cuMemberAccount, SaOrder saOrder, List<SaOrderItems> orderItemList) {
|
public CuMemberAccountExt queryOrderSpendDetails(CuMemberAccountExt cuMemberAccount, SaOrder saOrder, List<SaOrderItems> orderItemList) {
|
||||||
BigDecimal payMoney = saOrder.getOrderAmount();
|
BigDecimal payMoney = saOrder.getOrderAmount();
|
||||||
|
@ -386,6 +381,11 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
return cuMemberAccount;
|
return cuMemberAccount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CuMemberAccountExt> queryMemberAccountByCondition(CuMemberAccount cuMemberAccount) {
|
||||||
|
return memberAccountServiceApi.queryMemberAccountByCondition(cuMemberAccount).getData();
|
||||||
|
}
|
||||||
|
|
||||||
private Boolean handleSaOrderAmount(SaOrder saOrder, List<SaOrderItems> orderItemList,
|
private Boolean handleSaOrderAmount(SaOrder saOrder, List<SaOrderItems> orderItemList,
|
||||||
CuMemberAccountExt cuMemberAccount, BigDecimal payMoney, BigDecimal postage,
|
CuMemberAccountExt cuMemberAccount, BigDecimal payMoney, BigDecimal postage,
|
||||||
List<AreaCurrencyDTO> areaCurrencyDTOList) {
|
List<AreaCurrencyDTO> areaCurrencyDTOList) {
|
||||||
|
@ -511,7 +511,8 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
*/
|
*/
|
||||||
private BigDecimal handleLeXueYiKaoCoupon(CuMemberAccountExt cuMemberAccount, SaOrder saOrder, BigDecimal payMoney, List<SaOrderItems> saOrderItemsList) {
|
private BigDecimal handleLeXueYiKaoCoupon(CuMemberAccountExt cuMemberAccount, SaOrder saOrder, BigDecimal payMoney, List<SaOrderItems> saOrderItemsList) {
|
||||||
// 乐学易考,特殊复购订单查询有没有代金券,有代金券的扣除一张券
|
// 乐学易考,特殊复购订单查询有没有代金券,有代金券的扣除一张券
|
||||||
if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == saOrder.getOrderType() && CollectionUtil.isNotEmpty(saOrderItemsList)) {
|
if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == saOrder.getOrderType()
|
||||||
|
&& CollectionUtil.isNotEmpty(saOrderItemsList)) {
|
||||||
// 注意同一个商品只能用一次
|
// 注意同一个商品只能用一次
|
||||||
Map<Integer, List<SaOrderItems>> orderItemMap = new HashMap<>();
|
Map<Integer, List<SaOrderItems>> orderItemMap = new HashMap<>();
|
||||||
Set<Integer> productIdSet = new HashSet<>();
|
Set<Integer> productIdSet = new HashSet<>();
|
||||||
|
@ -530,6 +531,9 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
List<AcPickExt> acPickExtList = iAcPickService.queryList(AcPickQueryParam.builder().pkMember(saOrder.getPkMember()).pickType(EPickType.COUPON.getValue()).build(), saOrder.getPkCountry());
|
List<AcPickExt> acPickExtList = iAcPickService.queryList(AcPickQueryParam.builder().pkMember(saOrder.getPkMember()).pickType(EPickType.COUPON.getValue()).build(), saOrder.getPkCountry());
|
||||||
// 查询提货专区是否有代金券
|
// 查询提货专区是否有代金券
|
||||||
if (CollectionUtil.isNotEmpty(acPickExtList)) {
|
if (CollectionUtil.isNotEmpty(acPickExtList)) {
|
||||||
|
// 可用法宝券数据
|
||||||
|
int pickQuantity = acPickExtList.get(0).getUsableQuantity();
|
||||||
|
|
||||||
Map<BigDecimal, AcPickExt> pickExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(acPickExtList.size()));
|
Map<BigDecimal, AcPickExt> pickExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(acPickExtList.size()));
|
||||||
acPickExtList.forEach(acPickExt -> {
|
acPickExtList.forEach(acPickExt -> {
|
||||||
if (acPickExt.getUsableQuantity() > 0) {
|
if (acPickExt.getUsableQuantity() > 0) {
|
||||||
|
@ -552,10 +556,29 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
for (SaOrderItems saOrderItems : orderItemMap.get(pkWares)) {
|
for (SaOrderItems saOrderItems : orderItemMap.get(pkWares)) {
|
||||||
if (productDtoMap.containsKey(saOrderItems.getPkProduct())) {
|
if (productDtoMap.containsKey(saOrderItems.getPkProduct())) {
|
||||||
BdProductExt productExt = productDtoMap.get(saOrderItems.getPkProduct());
|
BdProductExt productExt = productDtoMap.get(saOrderItems.getPkProduct());
|
||||||
payMoney = ComputeUtil.computeSubtract(payMoney, ComputeUtil.computeMultiply(productExt.getRetailPrice(), saOrderItems.getWaresQuantity()));
|
|
||||||
|
// 当前明细使用法宝券数量
|
||||||
|
int useQuantity;
|
||||||
|
|
||||||
|
// TODO new 实际能抵扣多少,需要判断是否有足够的法宝券
|
||||||
BigDecimal payAccount12 = cuMemberAccount.getPayAccount12() == null ? BigDecimal.ZERO : cuMemberAccount.getPayAccount12();
|
BigDecimal payAccount12 = cuMemberAccount.getPayAccount12() == null ? BigDecimal.ZERO : cuMemberAccount.getPayAccount12();
|
||||||
cuMemberAccount.setPayAccount12(ComputeUtil.computeAdd(payAccount12, ComputeUtil.computeMultiply(productExt.getRetailPrice(), saOrderItems.getWaresQuantity())));
|
if (pickQuantity >= saOrderItems.getWaresQuantity()) {
|
||||||
for (int i = 0; i < saOrderItems.getWaresQuantity(); i++) {
|
// 法宝券 >= 商品数量,直接使用商品数量
|
||||||
|
payMoney = ComputeUtil.computeSubtract(payMoney, ComputeUtil.computeMultiply(productExt.getRetailPrice(), saOrderItems.getWaresQuantity()));
|
||||||
|
cuMemberAccount.setPayAccount12(ComputeUtil.computeAdd(payAccount12, ComputeUtil.computeMultiply(productExt.getRetailPrice(), saOrderItems.getWaresQuantity())));
|
||||||
|
useQuantity = saOrderItems.getWaresQuantity();
|
||||||
|
pickQuantity -= saOrderItems.getWaresQuantity();
|
||||||
|
} else {
|
||||||
|
// 法宝券 < 商品数量,直接使用法宝券数量
|
||||||
|
payMoney = ComputeUtil.computeSubtract(payMoney, ComputeUtil.computeMultiply(productExt.getRetailPrice(), pickQuantity));
|
||||||
|
cuMemberAccount.setPayAccount12(ComputeUtil.computeAdd(payAccount12, ComputeUtil.computeMultiply(productExt.getRetailPrice(), pickQuantity)));
|
||||||
|
useQuantity = pickQuantity;
|
||||||
|
pickQuantity = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
saOrderItems.setUsePick(useQuantity);
|
||||||
|
|
||||||
|
for (int i = 0; i < useQuantity; i++) {
|
||||||
pickExtList.add(pickExtMap.get(productExt.getRetailPrice()));
|
pickExtList.add(pickExtMap.get(productExt.getRetailPrice()));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1065,7 +1088,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 封闭保存订单数据
|
// 封装保存订单数据
|
||||||
encapsulationSaOrder(saOrderExt);
|
encapsulationSaOrder(saOrderExt);
|
||||||
|
|
||||||
// 乐学注册、乐学升级订单处理法宝券
|
// 乐学注册、乐学升级订单处理法宝券
|
||||||
|
|
|
@ -138,6 +138,7 @@
|
||||||
<result column="WARES_CODE" property="waresCode"/>
|
<result column="WARES_CODE" property="waresCode"/>
|
||||||
<result column="MAKER_INCOME" property="makerIncome"/>
|
<result column="MAKER_INCOME" property="makerIncome"/>
|
||||||
<result column="ITEM_PK_STOREHOUSE" property="pkStorehouse"/>
|
<result column="ITEM_PK_STOREHOUSE" property="pkStorehouse"/>
|
||||||
|
<result column="USE_PICK" property="usePick"/>
|
||||||
</collection>
|
</collection>
|
||||||
<collection property="orderBonusList" ofType="com.hzs.common.domain.sale.order.SaOrderBonus">
|
<collection property="orderBonusList" ofType="com.hzs.common.domain.sale.order.SaOrderBonus">
|
||||||
<result column="PK_BONUS_ORDER" property="pkOrder"/>
|
<result column="PK_BONUS_ORDER" property="pkOrder"/>
|
||||||
|
@ -240,6 +241,7 @@
|
||||||
st.specs_name,
|
st.specs_name,
|
||||||
st.ass_achievement,
|
st.ass_achievement,
|
||||||
st.is_maker_gift,
|
st.is_maker_gift,
|
||||||
|
st.USE_PICK,
|
||||||
0 channel,
|
0 channel,
|
||||||
sb.pk_order pk_bonus_order,
|
sb.pk_order pk_bonus_order,
|
||||||
bt.bonus_value pk_bonus_items,
|
bt.bonus_value pk_bonus_items,
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
package com.hzs.common.core.enums;
|
package com.hzs.common.core.enums;
|
||||||
|
|
||||||
|
|
||||||
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description:
|
* @Description:
|
||||||
* @Author: yuhui
|
* @Author: yuhui
|
||||||
|
@ -27,12 +25,11 @@ public enum ERepurchaseType {
|
||||||
/**
|
/**
|
||||||
* 有这个复购的时候消耗代金券 单价、数量一致可以消耗
|
* 有这个复购的时候消耗代金券 单价、数量一致可以消耗
|
||||||
*/
|
*/
|
||||||
LE_XUE_REPURCHASE(3, "乐学复购", 0, EnumsPrefixConstants.REPURCHASE_TYPE + "1")
|
LE_XUE_REPURCHASE(3, "乐学复购", 0, EnumsPrefixConstants.REPURCHASE_TYPE + "1");
|
||||||
|
|
||||||
;
|
|
||||||
|
|
||||||
private final int value;
|
private final int value;
|
||||||
private final String label;
|
private final String label;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否启用(0=是,1=否) -- 来源EYesNo
|
* 是否启用(0=是,1=否) -- 来源EYesNo
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -9,9 +9,7 @@ import org.apache.ibatis.type.JdbcType;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
|
||||||
* 销售订单-明细表
|
* 销售订单-明细表
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @author hzs
|
* @author hzs
|
||||||
* @since 2022-08-31
|
* @since 2022-08-31
|
||||||
|
@ -208,4 +206,11 @@ public class SaOrderItems extends BaseEntity {
|
||||||
*/
|
*/
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private Long skuId;
|
private Long skuId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用多少法宝券
|
||||||
|
*/
|
||||||
|
@TableField("USE_PICK")
|
||||||
|
private Integer usePick;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,7 @@ public class OrderJob {
|
||||||
public void sendOrderAchieveMsg() {
|
public void sendOrderAchieveMsg() {
|
||||||
Date startDate = DateUtils.currentDate();
|
Date startDate = DateUtils.currentDate();
|
||||||
Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS);
|
Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS);
|
||||||
List<SaOrderExt> saOrderExtList = orderServiceApi.querySaOrderByDay(startDate, endDate).getData();
|
List<SaOrderExt> saOrderExtList = orderServiceApi.listSaOrderByDay(startDate, endDate, null).getData();
|
||||||
if (CollectionUtil.isNotEmpty(saOrderExtList)) {
|
if (CollectionUtil.isNotEmpty(saOrderExtList)) {
|
||||||
BigDecimal registerAchieve = BigDecimal.ZERO;
|
BigDecimal registerAchieve = BigDecimal.ZERO;
|
||||||
BigDecimal updateAchieve = BigDecimal.ZERO;
|
BigDecimal updateAchieve = BigDecimal.ZERO;
|
||||||
|
|
|
@ -4,8 +4,9 @@ import cn.hutool.http.HttpUtil;
|
||||||
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONArray;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.hzs.activity.tourism.IAcTourismServiceApi;
|
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.web.domain.AjaxResult;
|
import com.hzs.common.core.web.domain.AjaxResult;
|
||||||
import com.hzs.system.base.IAreaServiceApi;
|
import com.hzs.system.base.IAreaServiceApi;
|
||||||
import com.hzs.system.base.dto.AreaDTO;
|
import com.hzs.system.base.dto.AreaDTO;
|
||||||
|
@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,25 +33,17 @@ import java.util.*;
|
||||||
@RequestMapping("/job-test")
|
@RequestMapping("/job-test")
|
||||||
public class JobTestController {
|
public class JobTestController {
|
||||||
|
|
||||||
@DubboReference
|
|
||||||
IAcTourismServiceApi iAcTourismServiceApi;
|
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IAreaServiceApi iAreaServiceApi;
|
IAreaServiceApi iAreaServiceApi;
|
||||||
|
|
||||||
/**
|
@DubboReference
|
||||||
* 测试旅游活动定时任务
|
IMemberSettleBonusApi memberBonusSettleApi;
|
||||||
*
|
|
||||||
* @return
|
@GetMapping("/test")
|
||||||
*/
|
public AjaxResult test() {
|
||||||
@GetMapping("/test-tourism")
|
Date startDate = DateUtils.beforeDate(1, ChronoUnit.DAYS, DateUtils.currentDate());
|
||||||
public AjaxResult testTourism() {
|
log.info("开始进行奖金结算");
|
||||||
R resultR = iAcTourismServiceApi.handleTourismData();
|
memberBonusSettleApi.autoCalculateBonus(startDate);
|
||||||
if (resultR.isSuccess()) {
|
|
||||||
log.info("测试 旅游活动更新积分 执行成功");
|
|
||||||
} else {
|
|
||||||
log.error("测试 旅游活动更新积分 执行失败");
|
|
||||||
}
|
|
||||||
log.info("================处理完成==================");
|
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue