## 乐学复购200级差收益修改;三单循环改为使用订单业绩;
This commit is contained in:
parent
82ceb5b135
commit
8edfc05ece
|
@ -71,11 +71,6 @@ public class LoginMember implements Serializable {
|
|||
*/
|
||||
private CuMemberShare cuMemberShare;
|
||||
|
||||
/**
|
||||
* 生态科技仓小程序游客(未绑定会员)
|
||||
*/
|
||||
private CuMemberWechat cuMemberWechat;
|
||||
|
||||
/**
|
||||
* 结算国家(此字段实体不存值,只做部分业务传递参数使用)
|
||||
*/
|
||||
|
|
|
@ -7,9 +7,7 @@ import org.apache.ibatis.annotations.Param;
|
|||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员奖金-4-n碰次重算奖金表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2024-07-23
|
||||
|
|
|
@ -69,6 +69,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
// 推荐奖明细
|
||||
List<CuMemberBonusPush> cuMemberBonusPushList = new ArrayList<>();
|
||||
Set<Integer> pkCountrySet = firPurchaseOrderList.stream().distinct().map(SaOrderExt::getPkCountry).collect(Collectors.toSet());
|
||||
// 根据国家拿出对应的等级
|
||||
Map<Integer, List<GradeDTO>> gradeDtoMap = gradeServiceApi.queryCountryGradeConfigByCondition(pkCountrySet).getData();
|
||||
// 等级对应的业绩
|
||||
for (SaOrderExt saOrderExt : firPurchaseOrderList) {
|
||||
|
@ -81,7 +82,9 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
cuMemberBonusPushList.add(cuMemberBonusPush);
|
||||
}
|
||||
}
|
||||
// 乐学易考特殊注册多一个,不扣20%
|
||||
|
||||
// TODO new 乐学直推级差收益,需要按新逻辑修改(级差等级4个,封顶上限修改)
|
||||
// V2订单6000,最多发3000,V1拿400,V4最多拿3000,前面等级没拿,后面等级就多拿一份
|
||||
List<SaOrderExt> specialOrderList = new ArrayList<>();
|
||||
firPurchaseOrderList.forEach(saOrderExt -> {
|
||||
if (EOrderType.SPECIAL_REGISTER_ORDER.getValue() == saOrderExt.getOrderType() ||
|
||||
|
@ -90,10 +93,6 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
}
|
||||
});
|
||||
if (specialOrderList.size() > 0) {
|
||||
// 优客 推荐 6000/36000/128000 给 1800 vip 拿 600 svip拿 600
|
||||
// vip 推荐 36000 给 10800 svip 拿 7200
|
||||
// svip推荐 128000 给 38000
|
||||
// TODO new 乐学直推级差收益,需要按新逻辑修改(级差等级4个,封顶上限修改)
|
||||
Set<Long> memberSet = new HashSet<>();
|
||||
specialOrderList.forEach(saOrderExt -> memberSet.add(saOrderExt.getPkMember()));
|
||||
cuMemberSettleExtList = cuMemberTreeService.batchQuerySpecialCuMemberSettleParent(settleTableName, memberSet);
|
||||
|
@ -182,8 +181,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
// BigDecimal realIncome = ReflectUtils.invokeGetter(cuMemberBonusPush, BonusFieldConstants.REAL_INCOME);
|
||||
// cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
|
||||
|
||||
// TODO new 首购实发小计、实发收益总计
|
||||
// 比原来多累计到首购实发小计
|
||||
// TODO new 首购实发小计、实发收益总计,比原来多累计到首购实发小计
|
||||
setFirstPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusPush);
|
||||
}
|
||||
cuMemberBonusPush.setRemark(String.format(BonusMsgConstants.RECOMMEND_SPECIAL_DIRECT, saOrderExt.getOrderCode(),
|
||||
|
@ -239,21 +237,26 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
if (targetMemberSettleExt == null) {
|
||||
return null;
|
||||
}
|
||||
// 死点没有奖金
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
// 死点 或 停算收益 没有奖金
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|
||||
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
return null;
|
||||
}
|
||||
// 当前国家是否有该奖项
|
||||
if (validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.DIRECT_INCOME.getValue())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
|
||||
// 直推奖金明细
|
||||
int pkBonusItem = getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.DIRECT_INCOME.getValue());
|
||||
CuMemberBonusPush cuMemberBonusPush = getCuMemberBonusPush(saOrderExt, targetMemberSettleExt, cuMemberBonus, pkBonusItem);
|
||||
// 扣项
|
||||
if (Objects.equals(EOrderType.UPGRADE_ORDER.getValue(), saOrderExt.getOrderType())) {
|
||||
if (Objects.equals(EOrderType.UPGRADE_ORDER.getValue(), saOrderExt.getOrderType())
|
||||
|| Objects.equals(EOrderType.SPECIAL_UPGRADE_ORDER.getValue(), saOrderExt.getOrderType())) {
|
||||
String value = systemConfigMap.get(targetMemberSettleExt.getPkSettleCountry() + EnumsKeyConstants.BONUS_UPGRADE_TYPE);
|
||||
// 只计算固定值,不进入三单
|
||||
// 只计算固定值,不进入三单(系统参数 -> 直推配置,不纳入循环下处理
|
||||
if (Objects.equals(EUpgradeIncomeType.FIXED_VALUE.getValue(), value)) {
|
||||
// 分比例跟固定值
|
||||
BonusDifferenceDTO bonusDifferenceDTO = bonusConfigDTO.getBonusDifferenceDtoMap().get(targetMemberSettleExt.getPkSettleCountry());
|
||||
|
@ -273,10 +276,14 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
return cuMemberBonusPush;
|
||||
}
|
||||
}
|
||||
|
||||
// 直推循环配置(第几单 给多少 比例)
|
||||
Map<String, BonusDirectLoopDTO> bonusDirectLoopDtoMap = bonusConfigDTO.getBonusDirectLoopDtoMap();
|
||||
// TODO new 直推奖励配置(目前应该不需要,之前配置的是区代、市代)
|
||||
Map<String, BonusDirectDTO> bonusDirectDtoMap = bonusConfigDTO.getBonusDirectDtoMap();
|
||||
// 根据会员等级获取,等级对应的参数
|
||||
// 判断轮次是否满足循环最后一个,最后一个需要重置,增加轮次,获取循环方式
|
||||
// 直推方式(1=三单循环 2=四单循环)
|
||||
String recommendType = systemConfigMap.get(targetMemberSettleExt.getPkSettleCountry() + EnumsKeyConstants.BONUS_RECOMMEND_TYPE);
|
||||
// 固定值 验证是否推荐的是固定值
|
||||
String memberCountryKey = getMemberCountryKey(awardsMap, sourceSettleExt, new HashMap<>());
|
||||
|
@ -309,16 +316,17 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
// 直接计算奖金 业绩 * 计算值,判断是否有扣项
|
||||
// 获取等级对应的业绩
|
||||
BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
|
||||
// 获得升级方式
|
||||
String value = systemConfigMap.get(targetMemberSettleExt.getPkSettleCountry() + ESystemConfig.UPGRADE_WAY.getKey());
|
||||
if (Objects.equals(Integer.toString(EUpgradeWay.COVER.getValue()), value) && CollectionUtil.isNotEmpty(gradeList)) {
|
||||
for (GradeDTO gradeDTO : gradeList) {
|
||||
if (validateGradeByAchieve(saOrderExt.getOrderAmount(), saOrderExt.getOrderAchieve(), gradeDTO)) {
|
||||
orderAchieve = gradeDTO.getStartValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// TODO new 乐学处理直接使用订单业绩,不跟等级业绩走
|
||||
// // 获得升级方式
|
||||
// String value = systemConfigMap.get(targetMemberSettleExt.getPkSettleCountry() + ESystemConfig.UPGRADE_WAY.getKey());
|
||||
// if (Objects.equals(Integer.toString(EUpgradeWay.COVER.getValue()), value) && CollectionUtil.isNotEmpty(gradeList)) {
|
||||
// for (GradeDTO gradeDTO : gradeList) {
|
||||
// if (validateGradeByAchieve(saOrderExt.getOrderAmount(), saOrderExt.getOrderAchieve(), gradeDTO)) {
|
||||
// orderAchieve = gradeDTO.getStartValue();
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
cuMemberBonusPush.setCalAchieve(orderAchieve);
|
||||
cuMemberBonusPush.setPretaxIncome(ComputeUtil.computeBonusMultiply(orderAchieve, cuMemberBonusPush.getCalValue()));
|
||||
}
|
||||
|
@ -326,7 +334,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
if (!roundEnd) {
|
||||
roundEnd = Objects.equals(ERecommendType.FOUR_LOOP.getValue(), recommendType) && targetMemberSettleExt.getSecond() == 4;
|
||||
}
|
||||
// 记录最小值,前面的值>后面的值
|
||||
// 记录最小值,前面的值 > 后面的值
|
||||
if (ComputeUtil.compareValue(targetMemberSettleExt.getMinAchieve(), cuMemberBonusPush.getCalAchieve()) ||
|
||||
ComputeUtil.compareEqual(targetMemberSettleExt.getMinAchieve(), BigDecimal.ZERO)) {
|
||||
targetMemberSettleExt.setMinAchieve(cuMemberBonusPush.getCalAchieve());
|
||||
|
@ -355,6 +363,9 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置奖金扣项以及直推备注
|
||||
*/
|
||||
void setBonusPushIncome(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, SaOrderExt saOrderExt, CuMemberBonus cuMemberBonus, CuMemberBonusPush cuMemberBonusPush) {
|
||||
// 奖金扣项
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusPush, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
|
|
|
@ -282,6 +282,33 @@ public abstract class BonusSettleHandle {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusPush 直推奖
|
||||
* @param cuMemberSettleExtMap 存储会员网体的map
|
||||
* @Description: 获得 直推收益的备注
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 11:22
|
||||
*/
|
||||
protected void recommendRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
|
||||
CuMemberSettleExt sourceCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
CuMemberSettleExt targetCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference());
|
||||
String remark;
|
||||
if (cuMemberBonusPush.getSecond() == 0) {
|
||||
remark = String.format(BonusMsgConstants.RECOMMEND_DIRECT, saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusPush.getRealIncome());
|
||||
} else {
|
||||
remark = String.format(BonusMsgConstants.RECOMMEND, cuMemberBonusPush.getRound() + 1, cuMemberBonusPush.getSecond(), saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusPush.getCalAchieve(), cuMemberBonusPush.getCalValue());
|
||||
}
|
||||
cuMemberBonusPush.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param cuMemberSettleExtMap 会员结算
|
||||
* @param cuMemberSettleExtList 查询出来的结算数据
|
||||
|
@ -332,33 +359,6 @@ public abstract class BonusSettleHandle {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusPush 直推奖
|
||||
* @param cuMemberSettleExtMap 存储会员网体的map
|
||||
* @Description: 获得 直推收益的备注
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 11:22
|
||||
*/
|
||||
protected void recommendRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
|
||||
CuMemberSettleExt sourceCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
CuMemberSettleExt targetCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference());
|
||||
String remark;
|
||||
if (cuMemberBonusPush.getSecond() == 0) {
|
||||
remark = String.format(BonusMsgConstants.RECOMMEND_DIRECT, saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusPush.getRealIncome());
|
||||
} else {
|
||||
remark = String.format(BonusMsgConstants.RECOMMEND, cuMemberBonusPush.getRound() + 1, cuMemberBonusPush.getSecond(), saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusPush.getCalAchieve(), cuMemberBonusPush.getCalValue());
|
||||
}
|
||||
cuMemberBonusPush.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusPush 直推奖
|
||||
|
@ -1056,8 +1056,8 @@ public abstract class BonusSettleHandle {
|
|||
|
||||
protected void setCuMemberAchieve(SaOrderExt saOrderExt, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO) {
|
||||
CuMemberSettleExt cuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType() ||
|
||||
Objects.equals(EOrderType.SPECIAL_REGISTER_ORDER.getValue(), saOrderExt.getOrderType())) {
|
||||
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType()
|
||||
|| Objects.equals(EOrderType.SPECIAL_REGISTER_ORDER.getValue(), saOrderExt.getOrderType())) {
|
||||
cuMemberSettleExt.setRegisterAmount(ComputeUtil.computeAdd(cuMemberSettleExt.getRegisterAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
cuMemberSettleExt.setRegisterPv(ComputeUtil.computeAdd(cuMemberSettleExt.getRegisterPv(), saOrderExt.getOrderAchieve()));
|
||||
cuMemberSettleExt.setRegisterNewAmount(ComputeUtil.computeAdd(cuMemberSettleExt.getRegisterNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
|
@ -1070,6 +1070,11 @@ public abstract class BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理汇率
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
protected BigDecimal convertLocalCurrency(SaOrder saOrderExt, BonusConfigDTO bonusConfigDTO) {
|
||||
Map<String, BdCurrencyDTO> currencyDtoMap = bonusConfigDTO.getCurrencyDtoMap();
|
||||
String key = saOrderExt.getPkCountry().toString() + saOrderExt.getPkRate();
|
||||
|
|
|
@ -757,19 +757,22 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
|||
// 法宝券和商品数量一致
|
||||
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;
|
||||
if (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;
|
||||
if (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;
|
||||
if (this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
|
||||
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
pkParent = targetMemberSettleExt.getPkParent();
|
||||
sourceMemberSettleExt = targetMemberSettleExt;
|
||||
|
@ -801,24 +804,28 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
|||
// 法宝券和商品数量一致
|
||||
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;
|
||||
if (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;
|
||||
if (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;
|
||||
if (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;
|
||||
if (this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
|
||||
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
pkParent = targetMemberSettleExt.getPkParent();
|
||||
sourceMemberSettleExt = targetMemberSettleExt;
|
||||
|
@ -828,14 +835,16 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
|||
/**
|
||||
* 封装法宝券抵扣相关
|
||||
*/
|
||||
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) {
|
||||
private boolean 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);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -415,6 +415,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// bonusSettlePurchaseHandle.assortSaOrder(cuMemberAchieveHashMap, firPurchaseOrderList, bonusConfigDTO, Boolean.TRUE);
|
||||
// bonusSettlePurchaseHandle.assortSaOrder(cuMemberAchieveHashMap, repurchaseOrderList, bonusConfigDTO, Boolean.FALSE);
|
||||
// cuMemberTreeService.updateCuMemberSettle(cuMemberAchieveHashMap, currentSettleTableName);
|
||||
|
||||
//*********************************计算奖衔 更新奖衔*********************************/
|
||||
// 开始计算奖衔 计算奖衔 更新奖衔(根据最新业绩查询变动且业绩满足下一等级,根据等级判断是否满足考核,安置考核或血缘考核)
|
||||
// 拉取变动过业绩的人 period >0 的为变动过业绩的人
|
||||
|
@ -425,6 +426,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// cuMemberAwardsService.calculateCuMemberAwards(settleDate, awardsMap, currentSettleTableName);
|
||||
// 计算完奖衔回退业绩,最终根据新增进行回写
|
||||
// cuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
|
||||
|
||||
//********************************重新考核*********************************/
|
||||
// TODO new 乐学没有分红、复购考核,这个位置需要去掉???
|
||||
cuMemberAssessService.retryCalculationAssess(DateUtils.parseStringToDate(settleDate), Boolean.TRUE);
|
||||
|
@ -436,8 +438,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap = new HashMap<>();
|
||||
BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO();
|
||||
|
||||
// 乐学易考奖金计算,回写代金券数量
|
||||
// 计算奖金(主入口)
|
||||
// 乐学易考奖金计算,回写代金券数量
|
||||
LeXueRangeParam leXueRangeParam = calculateBonusBySaOrderList(settleDate, period, currentSettleTableName,
|
||||
firPurchaseOrderList, repurchaseOrderList, mallOrderList,
|
||||
awardsMap, bonusConfigDTO, cuMemberBonusMap,
|
||||
|
@ -455,13 +457,17 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// bonusSettleRangeHandle.calculateRetailBonusBySaOrder(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
||||
// period, yesterdayPeriod, retailOrderList, isSameMonth);
|
||||
// 验证是否月奖,验证是否是结算月底那一天,月底那一天计算云代,判断是否为月底
|
||||
|
||||
//*********************************计算云代奖金、 复购券均分收益************************/
|
||||
if (settleDate.endsWith("10")) {
|
||||
// 计算云代奖金
|
||||
calculateCloudAgentOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
|
||||
calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap, cuAwardsControlMap);
|
||||
}
|
||||
// TODO new 云代、复购券均分、分红,暂时不处理
|
||||
// if (settleDate.endsWith("10")) {
|
||||
// // 计算云代奖金、复购券均分
|
||||
// calculateCloudAgentOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||
// // 分红
|
||||
// Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
|
||||
// calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap, cuAwardsControlMap);
|
||||
// }
|
||||
|
||||
// // 计算店铺奖金
|
||||
// if(settleDate.endsWith("10")){
|
||||
// calculateStoreOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||
|
@ -488,6 +494,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
if (retMemberAchieveExtList.size() > 0) {
|
||||
cuMemberSwingNetLogService.mergeCuMemberSwingNetLogByAchieve(retMemberAchieveExtList, currentSettleTableName);
|
||||
}
|
||||
|
||||
// 迁移网体数据到月表
|
||||
cuMemberTreeService.insertCuMemberTreeBySettleDate(settleDate, currentSettleTableName, period);
|
||||
Date currentDate = DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.parseStringToDate(settleDate));
|
||||
|
@ -752,6 +759,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
|
||||
Map<String, String> systemConfigMap = systemConfigServiceApi.getBonusSystemConfig().getData();
|
||||
Map<String, RangeDTO> rangeDtoMap = rangeServiceApi.queryRangeDto().getData();
|
||||
|
||||
// 查询K值控制
|
||||
List<CuMemberRiskControl> cuMemberRiskControlList = cuMemberRiskControlService.queryCuMemberRiskControl(DateUtils.parseStringToDate(settleDate));
|
||||
Map<Long, CuMemberRiskControl> riskControlMap = new HashMap<>();
|
||||
|
@ -763,6 +771,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
Map<Long, CuBonusExpandExt> cuBonusExpandExtMap = new HashMap<>();
|
||||
List<CuBonusExpandExt> cuBonusExpandExtList = bonusExpandService.queryBonusExpand(bonusExpandParam);
|
||||
cuBonusExpandExtList.forEach(cuBonusExpandExt -> cuBonusExpandExtMap.put(cuBonusExpandExt.getPkMember(), cuBonusExpandExt));
|
||||
|
||||
// 先计算复购在计算首购
|
||||
// 计算复购
|
||||
if (repurchaseOrderList.size() > 0) {
|
||||
|
@ -934,6 +943,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
//***************************计算推荐奖(直推级差、直推三单循环)******************************/
|
||||
List<CuMemberBonusPush> cuMemberBonusPushList = bonusSettleFirstPurchaseHandle.calculateRecommendBonus(cuMemberSettleExtMap, settleTableName, bonusConfigDTO, systemConfigMap, firPurchaseOrderList, period, cuMemberBonusMap, awardsMap);
|
||||
bonusRecordDetailVO.setCuMemberBonusPushList(cuMemberBonusPushList);
|
||||
|
||||
//****************************计算量奖*****************************/
|
||||
List<CuMemberBonusExpand> cuMemberBonusExpandList = bonusSettleFirstPurchaseHandle.calculateExpandBonus(cuMemberSettleExtMap, settleDate, settleTableName, bonusConfigDTO, systemConfigMap, firPurchaseOrderList, period, weekMemberBonusMap, cuMemberBonusMap, riskControlMap, cuBonusExpandExtMap);
|
||||
if (cuMemberBonusExpandList.size() > 0) {
|
||||
|
@ -1040,7 +1050,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
private LeXueRangeParam calculatePurchaseOrder(Map<Long, CuMemberRiskControl> riskControlMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate, Map<String, RangeDTO> rangeDtoMap,
|
||||
Map<String, BdAwards> awardsMap, BonusConfigDTO bonusConfigDTO, Map<String, String> systemConfigMap, List<SaOrderExt> purchaseOrderList, Integer period, Map<Long, CuMemberBonus> weekMemberBonusMap,
|
||||
Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap) {
|
||||
//****************************复购直推*****************************/ 查找10代血缘,验证复购考核,考核通过的给与奖金 紧缩
|
||||
//****************************复购直推*****************************
|
||||
// 查找10代血缘,验证复购考核,考核通过的给与奖金 紧缩
|
||||
// List<CuMemberBonusPush> cuMemberBonusPushList = bonusSettlePurchaseHandle.calculateRepurchasePushBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap);
|
||||
// if (cuMemberBonusPushList.size() > 0) {
|
||||
// if (bonusRecordDetailVO.getCuMemberBonusPushList() == null) {
|
||||
|
@ -1058,11 +1069,12 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
bonusRecordDetailVO.getCuMemberBonusExpandList().addAll(cuMemberBonusExpandList);
|
||||
}
|
||||
}
|
||||
//****************************乐学极差(复购)*****************************/
|
||||
LeXueRangeParam leXueRangeParam = new LeXueRangeParam();
|
||||
//****************************复购极差*****************************/
|
||||
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap,
|
||||
bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap, cuAwardsControlMap, leXueRangeParam);
|
||||
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
|
||||
|
||||
Map<Long, MemberBonusDetailCalVO> memberBonusDetailCalVoMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size()));
|
||||
cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> {
|
||||
MemberBonusDetailCalVO memberBonusDetailCalVO = calculateOrderRatio(memberBonusDetailCalVoMap, cuMemberBonusExpand);
|
||||
|
@ -1072,6 +1084,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
MemberBonusDetailCalVO memberBonusDetailCalVO = calculateOrderRatio(memberBonusDetailCalVoMap, cuMemberBonusRange);
|
||||
memberBonusDetailCalVO.setRepRangeIncome(ComputeUtil.computeAdd(memberBonusDetailCalVO.getRepRangeIncome(), cuMemberBonusRange.getRealIncome()));
|
||||
});
|
||||
|
||||
Map<Long, SaOrderExt> saOrderExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size()));
|
||||
purchaseOrderList.forEach(saOrderExt ->
|
||||
saOrderExtMap.put(saOrderExt.getPkId(), saOrderExt));
|
||||
|
|
|
@ -3,8 +3,7 @@ package com.hzs.bonus.bonus.service.impl;
|
|||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||
import com.hzs.bonus.bonus.mapper.CuBonusExpandMapper;
|
||||
|
@ -12,7 +11,6 @@ import com.hzs.bonus.bonus.param.BonusExpandParam;
|
|||
import com.hzs.bonus.bonus.service.IBonusSettleService;
|
||||
import com.hzs.bonus.bonus.service.ICuBonusExpandService;
|
||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||
import com.hzs.common.core.constant.SystemFieldConstants;
|
||||
import com.hzs.common.core.utils.ComputeUtil;
|
||||
import com.hzs.common.core.utils.DateUtils;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
|
||||
|
@ -42,7 +40,6 @@ public class CuBonusExpandServiceImpl extends ServiceImpl<CuBonusExpandMapper, C
|
|||
|
||||
@Autowired
|
||||
private ICuMemberSettlePeriodService memberSettlePeriodService;
|
||||
|
||||
@Autowired
|
||||
private IBonusSettleService bonusSettleService;
|
||||
|
||||
|
@ -168,13 +165,13 @@ public class CuBonusExpandServiceImpl extends ServiceImpl<CuBonusExpandMapper, C
|
|||
saveBonusExpand.setPkParent(cuBonusExpand.getPkId());
|
||||
save(saveBonusExpand);
|
||||
// 2 更新主表
|
||||
UpdateWrapper<CuBonusExpand> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.set("ADD_TOUCH", bonusExpandParam.getAddTouch());
|
||||
updateWrapper.set("EXPAND_RATIO", bonusExpandParam.getExpandRatio());
|
||||
updateWrapper.set("EXPAND_NUMBER", bonusExpandParam.getExpandNumber());
|
||||
updateWrapper.set(SystemFieldConstants.PK_MODIFIED, bonusExpandParam.getPkModified());
|
||||
updateWrapper.set(SystemFieldConstants.MODIFIED_TIME, DateUtils.currentDateTime());
|
||||
updateWrapper.eq(SystemFieldConstants.PK_ID, bonusExpandParam.getPkId());
|
||||
LambdaUpdateWrapper<CuBonusExpand> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.set(CuBonusExpand::getAddTouch, bonusExpandParam.getAddTouch());
|
||||
updateWrapper.set(CuBonusExpand::getExpandRatio, bonusExpandParam.getExpandRatio());
|
||||
updateWrapper.set(CuBonusExpand::getExpandNumber, bonusExpandParam.getExpandNumber());
|
||||
updateWrapper.set(CuBonusExpand::getPkModified, bonusExpandParam.getPkModified());
|
||||
updateWrapper.set(CuBonusExpand::getModifiedTime, DateUtils.currentDateTime());
|
||||
updateWrapper.eq(CuBonusExpand::getPkId, bonusExpandParam.getPkId());
|
||||
update(updateWrapper);
|
||||
}
|
||||
}
|
||||
|
@ -202,4 +199,5 @@ public class CuBonusExpandServiceImpl extends ServiceImpl<CuBonusExpandMapper, C
|
|||
queryWrapper.isNull(CuBonusExpand::getPkParent);
|
||||
return baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -644,7 +644,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
|||
cuMemberTreeService.createCuMemberTree(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)));
|
||||
log.info("初始化表完成");
|
||||
// 奖金结算
|
||||
List<SaOrderExt> saOrderExtList = saOrderServiceApi.listSaOrderByDay(startDate, settleEndDate, null).getData();
|
||||
List<SaOrderExt> saOrderExtList = saOrderServiceApi.listSaOrderByDay(startDate, settleEndDate, "").getData();
|
||||
bonusSettleService.calculateCuMemberBonus(settleDate, saOrderExtList);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.hzs.bonus.bonus.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
|
@ -22,6 +21,7 @@ import java.math.BigDecimal;
|
|||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class MemberBonusDetailCalVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
|
|
|
@ -4,29 +4,29 @@
|
|||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="CuBonusExpandExt" type="com.hzs.common.domain.member.ext.CuBonusExpandExt">
|
||||
<id column="PK_ID" property="pkId" />
|
||||
<result column="DEL_FLAG" property="delFlag" />
|
||||
<result column="PK_COUNTRY" property="pkCountry" />
|
||||
<result column="PK_CREATOR" property="pkCreator" />
|
||||
<result column="CREATION_TIME" property="creationTime" />
|
||||
<result column="PK_MODIFIED" property="pkModified" />
|
||||
<result column="MODIFIED_TIME" property="modifiedTime" />
|
||||
<result column="SETTLE_DATE" property="settleDate" />
|
||||
<result column="PK_MEMBER" property="pkMember" />
|
||||
<result column="PK_VERTEX" property="pkVertex" />
|
||||
<result column="DAY_ACHIEVE" property="dayAchieve" />
|
||||
<result column="DAY_BONUS" property="dayBonus" />
|
||||
<result column="YES_DAY_RATIO" property="yesDayRatio" />
|
||||
<result column="CUR_DAY_RATIO" property="curDayRatio" />
|
||||
<result column="MONTH_ACHIEVE" property="monthAchieve" />
|
||||
<result column="MONTH_BONUS" property="monthBonus" />
|
||||
<result column="MONTH_RATIO" property="monthRatio" />
|
||||
<result column="ADD_TOUCH" property="addTouch" />
|
||||
<result column="SORT" property="sort" />
|
||||
<result column="MEMBER_CODE" property="memberCode" />
|
||||
<result column="MEMBER_NAME" property="memberName" />
|
||||
<result column="VERTEX_NAME" property="vertexName" />
|
||||
<result column="EXPAND_RATIO" property="expandRatio" />
|
||||
<id column="PK_ID" property="pkId"/>
|
||||
<result column="DEL_FLAG" property="delFlag"/>
|
||||
<result column="PK_COUNTRY" property="pkCountry"/>
|
||||
<result column="PK_CREATOR" property="pkCreator"/>
|
||||
<result column="CREATION_TIME" property="creationTime"/>
|
||||
<result column="PK_MODIFIED" property="pkModified"/>
|
||||
<result column="MODIFIED_TIME" property="modifiedTime"/>
|
||||
<result column="SETTLE_DATE" property="settleDate"/>
|
||||
<result column="PK_MEMBER" property="pkMember"/>
|
||||
<result column="PK_VERTEX" property="pkVertex"/>
|
||||
<result column="DAY_ACHIEVE" property="dayAchieve"/>
|
||||
<result column="DAY_BONUS" property="dayBonus"/>
|
||||
<result column="YES_DAY_RATIO" property="yesDayRatio"/>
|
||||
<result column="CUR_DAY_RATIO" property="curDayRatio"/>
|
||||
<result column="MONTH_ACHIEVE" property="monthAchieve"/>
|
||||
<result column="MONTH_BONUS" property="monthBonus"/>
|
||||
<result column="MONTH_RATIO" property="monthRatio"/>
|
||||
<result column="ADD_TOUCH" property="addTouch"/>
|
||||
<result column="SORT" property="sort"/>
|
||||
<result column="MEMBER_CODE" property="memberCode"/>
|
||||
<result column="MEMBER_NAME" property="memberName"/>
|
||||
<result column="VERTEX_NAME" property="vertexName"/>
|
||||
<result column="EXPAND_RATIO" property="expandRatio"/>
|
||||
</resultMap>
|
||||
|
||||
<update id="mergeBonusExpandByList">
|
||||
|
@ -34,11 +34,13 @@
|
|||
using (
|
||||
select * from(
|
||||
<foreach collection="cuBonusExpandList" item="item" index="index" separator=" union ">
|
||||
select #{item.pkId} pk_id,#{item.dayAchieve,jdbcType=NUMERIC} day_achieve,#{item.dayBonus,jdbcType=NUMERIC} day_bonus,
|
||||
select #{item.pkId} pk_id,#{item.dayAchieve,jdbcType=NUMERIC} day_achieve,#{item.dayBonus,jdbcType=NUMERIC}
|
||||
day_bonus,
|
||||
#{item.yesDayRatio,jdbcType=NUMERIC} yes_day_ratio,#{item.curDayRatio,jdbcType=NUMERIC} cur_day_ratio,
|
||||
#{item.monthAchieve,jdbcType=NUMERIC} month_achieve,#{item.monthBonus,jdbcType=NUMERIC} month_bonus,
|
||||
#{item.monthRatio,jdbcType=NUMERIC} month_ratio,#{item.dayRepAchieve,jdbcType=NUMERIC} day_rep_achieve,
|
||||
#{item.dayRepBonus,jdbcType=NUMERIC} day_rep_bonus,#{item.curDayRepRatio,jdbcType=NUMERIC} cur_day_rep_ratio from dual
|
||||
#{item.dayRepBonus,jdbcType=NUMERIC} day_rep_bonus,#{item.curDayRepRatio,jdbcType=NUMERIC} cur_day_rep_ratio
|
||||
from dual
|
||||
</foreach>)
|
||||
) b
|
||||
on (ce.pk_id=b.pk_id)
|
||||
|
@ -69,7 +71,7 @@
|
|||
) cu
|
||||
on cu.pk_id=so.pk_member
|
||||
where so.order_status = 1 and so.del_flag=0 and so.order_achieve>0 and so.pk_country=1
|
||||
and so.order_type in(3,9,11,12,14,21,22,23,26,31)
|
||||
and so.order_type in(3,23,26)
|
||||
and so.pay_time >= #{bonusExpandParam.startDate,jdbcType=DATE}
|
||||
and so.pay_time < #{bonusExpandParam.endDate,jdbcType=DATE})) a
|
||||
inner join(
|
||||
|
@ -80,7 +82,8 @@
|
|||
connect by pk_place_parent =prior pk_id
|
||||
) cu
|
||||
on cu.pk_id = cb.pk_member
|
||||
where period between #{bonusExpandParam.startPeriod} and #{bonusExpandParam.endPeriod} and cb.del_flag=0 and cb.pk_country=1
|
||||
where period between #{bonusExpandParam.startPeriod} and #{bonusExpandParam.endPeriod} and cb.del_flag=0 and
|
||||
cb.pk_country=1
|
||||
) b
|
||||
on a.pk_member=b.pk_member
|
||||
join cu_member cm
|
||||
|
@ -109,14 +112,16 @@
|
|||
and so.pay_time >= #{bonusExpandParam.startDate,jdbcType=DATE}
|
||||
and so.pay_time < #{bonusExpandParam.endDate,jdbcType=DATE})) a
|
||||
inner join(
|
||||
select #{item} pk_member,nvl(sum(pur_real_subtotal+maker_real_subtotal),0) pur_real_subtotal from ${tableName} cb
|
||||
select #{item} pk_member,nvl(sum(pur_real_subtotal+maker_real_subtotal),0) pur_real_subtotal from
|
||||
${tableName} cb
|
||||
inner join(
|
||||
select * from cu_member
|
||||
start with pk_id=#{item}
|
||||
connect by pk_place_parent =prior pk_id
|
||||
) cu
|
||||
on cu.pk_id = cb.pk_member
|
||||
where period between #{bonusExpandParam.startPeriod} and #{bonusExpandParam.endPeriod} and cb.del_flag=0 and cb.pk_country=1
|
||||
where period between #{bonusExpandParam.startPeriod} and #{bonusExpandParam.endPeriod} and cb.del_flag=0 and
|
||||
cb.pk_country=1
|
||||
) b
|
||||
on a.pk_member=b.pk_member
|
||||
join cu_member cm
|
||||
|
@ -127,22 +132,23 @@
|
|||
</select>
|
||||
|
||||
<select id="queryZeroMemberByVertex" resultMap="CuBonusExpandExt">
|
||||
select cm.pk_id pk_member,bt.pk_id pk_vertex,nvl(bt.sort,99) sort,cm.pk_settle_country pk_country from cu_member cm
|
||||
inner join cu_member par
|
||||
on par.pk_id=cm.pk_place_parent
|
||||
left join bd_vertex bt
|
||||
on cm.pk_id = bt.pk_member and bt.del_flag=0
|
||||
where par.member_code='GJ30720200'
|
||||
and cm.del_flag=0
|
||||
order by sort,pk_member
|
||||
select cm.pk_id pk_member, bt.pk_id pk_vertex, nvl(bt.sort, 99) sort, cm.pk_settle_country pk_country
|
||||
from cu_member cm
|
||||
inner join cu_member par
|
||||
on par.pk_id = cm.pk_place_parent
|
||||
left join bd_vertex bt
|
||||
on cm.pk_id = bt.pk_member and bt.del_flag = 0
|
||||
where par.member_code = 'GJ30720200'
|
||||
and cm.del_flag = 0
|
||||
order by sort, pk_member
|
||||
</select>
|
||||
|
||||
<select id="queryBonusExpand" resultMap="CuBonusExpandExt">
|
||||
select ce.*,cm.member_code,cm.member_name,bv.vertex_name from cu_bonus_expand ce
|
||||
inner join cu_member cm
|
||||
on ce.pk_member = cm.pk_id
|
||||
left join bd_vertex bv
|
||||
on ce.pk_vertex=bv.pk_id and bv.del_flag=0
|
||||
inner join cu_member cm
|
||||
on ce.pk_member = cm.pk_id
|
||||
left join bd_vertex bv
|
||||
on ce.pk_vertex=bv.pk_id and bv.del_flag=0
|
||||
where ce.del_flag=0 and cm.del_flag=0
|
||||
<if test="pkCountry != null">
|
||||
and ce.pk_country = #{pkCountry}
|
||||
|
@ -151,8 +157,8 @@
|
|||
and ce.settle_date=#{settleDate,jdbcType=DATE}
|
||||
</if>
|
||||
<choose>
|
||||
<when test="pkParent != null"> and ce.pk_parent=#{pkParent}</when>
|
||||
<otherwise> and ce.pk_parent is null</otherwise>
|
||||
<when test="pkParent != null">and ce.pk_parent=#{pkParent}</when>
|
||||
<otherwise>and ce.pk_parent is null</otherwise>
|
||||
</choose>
|
||||
<if test="memberCode != null and memberCode != ''">
|
||||
and cm.member_code like '%' || #{memberCode} || '%'
|
||||
|
@ -167,9 +173,11 @@
|
|||
</select>
|
||||
|
||||
<select id="queryBonusExpandDis" resultMap="CuBonusExpandExt">
|
||||
select settle_date from cu_bonus_expand
|
||||
where del_flag=0 and (yes_day_ratio > 65 or CUR_DAY_RATIO > 65 or MONTH_RATIO > 65)
|
||||
and settle_date>sysdate-7
|
||||
select settle_date
|
||||
from cu_bonus_expand
|
||||
where del_flag = 0
|
||||
and (yes_day_ratio > 65 or CUR_DAY_RATIO > 65 or MONTH_RATIO > 65)
|
||||
and settle_date > sysdate - 7
|
||||
group by settle_date
|
||||
</select>
|
||||
|
||||
|
|
|
@ -2,30 +2,6 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.bonus.bonus.mapper.CuMemberRepeatBonusMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.hzs.common.domain.member.bonus.CuMemberRepeatBonus">
|
||||
<result column="DEL_FLAG" property="delFlag" />
|
||||
<result column="PK_COUNTRY" property="pkCountry" />
|
||||
<result column="PK_CREATOR" property="pkCreator" />
|
||||
<result column="CREATION_TIME" property="creationTime" />
|
||||
<result column="PK_MODIFIED" property="pkModified" />
|
||||
<result column="MODIFIED_TIME" property="modifiedTime" />
|
||||
<result column="PK_MEMBER" property="pkMember" />
|
||||
<result column="PERIOD" property="period" />
|
||||
<result column="PK_RATE" property="pkRate" />
|
||||
<result column="DIRECT_INCOME" property="directIncome" />
|
||||
<result column="EXPAND_INCOME" property="expandIncome" />
|
||||
<result column="COACH_INCOME" property="coachIncome" />
|
||||
<result column="SHARE_INCOME" property="shareIncome" />
|
||||
<result column="SERVICE_INCOME" property="serviceIncome" />
|
||||
<result column="BACK_POINTS" property="backPoints" />
|
||||
<result column="SERVICE_SPEND" property="serviceSpend" />
|
||||
<result column="PUR_REAL_SUBTOTAL" property="purRealSubtotal" />
|
||||
<result column="MAKER_DIRECT_INCOME" property="makerDirectIncome" />
|
||||
<result column="MAKER_SHARE_INCOME" property="makerShareIncome" />
|
||||
<result column="MAKER_REAL_SUBTOTAL" property="makerRealSubtotal" />
|
||||
<result column="REAL_INCOME_TOTAL" property="realIncomeTotal" />
|
||||
</resultMap>
|
||||
<insert id="insertCuMemberRepeatBonus">
|
||||
insert ALL
|
||||
<foreach item="item" index="index" collection="cuMemberRepeatBonusList" separator=" ">
|
||||
|
|
|
@ -10,7 +10,7 @@ package com.hzs.common.core.constant;
|
|||
public class EnumsKeyConstants {
|
||||
|
||||
/**
|
||||
* 直推方式
|
||||
* 直推方式 1=三单循环 2=四单循环
|
||||
*/
|
||||
public static final String BONUS_RECOMMEND_TYPE = "RECOMMEND_1";
|
||||
|
||||
|
|
|
@ -27,10 +27,12 @@ public enum EAccountStatus {
|
|||
* 禁止登录
|
||||
*/
|
||||
SHUT_DOWN(2, "禁止登录", 0, EnumsPrefixConstants.ACCOUNT_STATUS + "2"),
|
||||
|
||||
/**
|
||||
* 停止收益
|
||||
*/
|
||||
STOP_PROFIT(3, "停止收益", 0, EnumsPrefixConstants.ACCOUNT_STATUS + "3"),
|
||||
|
||||
/**
|
||||
* 停算收益
|
||||
*/
|
||||
|
|
|
@ -73,13 +73,7 @@ public class MemberTokenService {
|
|||
pkId = cuMember.getPkId();
|
||||
memberCode = cuMember.getMemberCode();
|
||||
pkCountry = cuMember.getPkSettleCountry();
|
||||
} else if (null != loginMember.getCuMemberWechat()) {
|
||||
// 生态科技仓小程序游客
|
||||
CuMemberWechat cuMemberWechat = loginMember.getCuMemberWechat();
|
||||
pkId = cuMemberWechat.getPkId();
|
||||
memberCode = cuMemberWechat.getWechatType() + "_" + cuMemberWechat.getOpenId();
|
||||
pkCountry = cuMemberWechat.getPkCountry();
|
||||
} else {
|
||||
} else {
|
||||
// 分享用户处理(临时海粉)
|
||||
CuMemberShare cuMemberShare = loginMember.getCuMemberShare();
|
||||
pkId = cuMemberShare.getPkId();
|
||||
|
|
Loading…
Reference in New Issue