## 乐学复购级差法宝券结算;

This commit is contained in:
cabbage 2025-04-09 20:52:16 +08:00
parent 308c266a26
commit 2376c525cc
7 changed files with 301 additions and 139 deletions

View File

@ -651,14 +651,12 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 报单服务费收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void xueRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt) {
@ -858,13 +856,11 @@ public abstract class BonusSettleHandle {
}
/**
* 根据订单获取会员的血缘父级用于嗨粉推荐复购极差
*
* @param cuMemberSettleExtMap 树关系
* @param settleTableName 结算表
* @param saOrderList 订单
* @Description: 根据订单获取会员的血缘父级用于嗨粉推荐复购极差
* @return: void
* @Author: sui q
* @Date: 2023/1/4 14:10
*/
protected List<CuMemberSettleExt> getMemberParentBySaOrder(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, List<SaOrderExt> saOrderList) {
Set<Long> memberSet = new HashSet<>();
@ -946,12 +942,10 @@ public abstract class BonusSettleHandle {
}
/**
* 设置奖金扣项计算税前收益扣税实际收益, 设置主表
*
* @param cuMemberBonus 奖金明细
* @param bonusDetail 奖金明细表
* @Description: 设置奖金扣项计算税前收益扣税实际收益, 设置主表
* @return: void
* @Author: sui q
* @Date: 2023/1/11 11:17
*/
protected void setBonusDeduct(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
BigDecimal pretaxIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.PRETAX_INCOME);
@ -966,12 +960,10 @@ public abstract class BonusSettleHandle {
}
/**
* 获得需要查询的会员免考通过的不需要查询考核记录
*
* @param cuMemberSettleExtMap 存储目前有的会员数据
* @param cuMemberSettleExtList 需要查询的会员数据
* @Description: 获得需要查询的会员免考通过的不需要查询考核记录
* @return: List<CuMemberSettleExt>
* @Author: sui q
* @Date: 2022/11/17 17:57
*/
protected List<CuMemberSettleExt> getQueryMemberSettleExtList(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<CuMemberSettleExt> cuMemberSettleExtList) {
// 过滤数据免考的会员不进行查询
@ -1006,6 +998,7 @@ public abstract class BonusSettleHandle {
* @Date: 2023/1/11 13:59
*/
protected void setPurchaseTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
// 处理扣项
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME);
cuMemberBonus.setRepurRealSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getRepurRealSubtotal(), realIncome));

View File

@ -428,8 +428,12 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
}*/
});
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
List<CuMemberSettleExt> cuMemberSettleExtList = getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList);
Map<Long, CuMemberAssess> cuMemberAssessMap = getCuMemberAssessMap(cuMemberSettleExtMap, settleDate, cuMemberSettleExtList);
// TODO new 乐学不需要考核相关
// List<CuMemberSettleExt> cuMemberSettleExtList = getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList);
// Map<Long, CuMemberAssess> cuMemberAssessMap = getCuMemberAssessMap(cuMemberSettleExtMap, settleDate, cuMemberSettleExtList);
Map<Long, CuMemberAssess> cuMemberAssessMap = null;
// if (chinaRangeOrderList.size() > 0) {
// Map<String, List<SaOrderRangeDto>> saOrderRangeDtoMap = saOrderServiceApi.queryOrderRangeVO(chinaRangeOrderList).getData();
// Map<String, RangeDTO> rangePkDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(rangeDtoMap.size()));
@ -502,6 +506,7 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
// }
// }
// }
// TODO new 乐学复购级差商品4个等级购买差价300这个位置进行拨出
if (specialOrderList.size() > 0) {
for (SaOrderExt saOrderExt : specialOrderList) {
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsExtList()) {
@ -590,6 +595,7 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
}
}
}
// TODO new 乐学特殊级差
calculateLeXueRangeBonus(settleTableName, rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, leXueRangeParam, specialOrderList, cuMemberBonusRangeList);
}
return cuMemberBonusRangeList;
@ -616,22 +622,44 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
cuMemberBonusRangeList.add(cuMemberBonusRange);
}
/**
* 乐学特殊复购级差根据法宝券进行计算奖金
* 每个等级最多拨出一张法宝券给200奖金遇到V4为止
*
* @param settleTableName
* @param rangeDtoMap
* @param bonusConfigDTO
* @param period
* @param cuMemberBonusMap
* @param leXueRangeParam
* @param specialOrderList
* @param cuMemberBonusRangeList
*/
private void calculateLeXueRangeBonus(String settleTableName, Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO,
Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, LeXueRangeParam leXueRangeParam,
List<SaOrderExt> specialOrderList, List<CuMemberBonusRange> cuMemberBonusRangeList) {
// 计算乐学易考特殊复购极差找第一个vipsvip找到有代金券代金券-1奖金给金额第一个是svip后就不给
if (specialOrderList.size() > 0) {
// 查找订单血缘
// 查找订单血缘上会员
Set<Long> expandMemberSet = specialOrderList.stream().distinct().map(SaOrderExt::getPkMember).collect(Collectors.toSet());
List<CuMemberSettleExt> specialMemberSettleExtList = cuMemberTreeService.batchQueryCuMemberSettleParentForSpecial(settleTableName, expandMemberSet);
// 重算的时候首先先把数量还回来在重新计算查询订单扣除的记录
List<AcPickMemberLog> acPickMemberLogList = acPickServiceApi.queryPickMemberLog(specialOrderList).getData();
// key: 会员ID + 提货专区ID
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)) {
acPickMemberLogList.forEach(acPickMemberLog ->
pickMemberLogMap.put(acPickMemberLog.getPkMember().toString() + acPickMemberLog.getPkId(), acPickMemberLog));
acPickMemberLogList.forEach(acPickMemberLog -> {
pickMemberLogMap.put(acPickMemberLog.getPkMember().toString() + acPickMemberLog.getPkId(), acPickMemberLog);
orderMemberMap.put(acPickMemberLog.getPkMember() + acPickMemberLog.getPickOrder(), acPickMemberLog);
}
);
leXueRangeParam.setAcPickMemberLogList(acPickMemberLogList);
}
// 初始化父类网体的值
Map<Long, CuMemberSettleExt> specialmeberSettleExtMap = new HashMap<>();
getMemberSettle(specialmeberSettleExtMap, specialMemberSettleExtList);
@ -645,53 +673,123 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
List<AcPickExt> acPickExtList = new ArrayList<>();
for (SaOrderExt saOrderExt : specialOrderList) {
for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) {
if (EYesNo.YES.getIntValue() == saOrderItemsExt.getIsGift() || ComputeUtil.compareEqual(saOrderItemsExt.getPrice(), BigDecimal.ZERO) ||
ComputeUtil.compareEqual(saOrderItemsExt.getAchievement(), BigDecimal.ZERO)) {
if (EYesNo.YES.getIntValue() == saOrderItemsExt.getIsGift()
|| ComputeUtil.compareEqual(saOrderItemsExt.getPrice(), BigDecimal.ZERO)
|| ComputeUtil.compareEqual(saOrderItemsExt.getAchievement(), BigDecimal.ZERO)) {
// 赠品 或者 金额为0 或者 业绩为0 则不进行处理
continue;
}
// 订单对应的会员
CuMemberSettleExt sourceMemberSettleExt = specialmeberSettleExtMap.get(saOrderExt.getPkMember());
if (sourceMemberSettleExt == null) {
continue;
if (null == sourceMemberSettleExt) {
break;
}
// 找不到父级了或者找到第一个svip直接跳出
boolean flag = Boolean.TRUE;
if (validatePkBonusItems(bonusConfigDTO, sourceMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_RANGE_INCOME.getValue())) {
// 没有这个奖项直接退出
break;
}
// 订单会员推荐人
Long pkParent = sourceMemberSettleExt.getPkParent();
// 订单会员等级
int gradeValue = sourceMemberSettleExt.getGradeValue();
// 订单是否使用法宝券true 使用了法宝券
boolean useFlag = null != orderMemberMap.get(saOrderExt.getPkMember() + saOrderExt.getOrderCode()) ? Boolean.TRUE : Boolean.FALSE;
if (EGrade.S_VIP.getValue() == gradeValue && useFlag) {
// 下单会员是 V4 并且 使用了法宝券直接结束
break;
}
// 找不到父级了或者找到第一个svip直接跳出
boolean V1Flag = Boolean.TRUE;
boolean V2Flag = Boolean.TRUE;
boolean V3Flag = Boolean.TRUE;
while (true) {
CuMemberSettleExt targetMemberSettleExt = specialmeberSettleExtMap.get(pkParent);
if (targetMemberSettleExt == null) {
if (null == targetMemberSettleExt) {
// 上面没有推荐人了直接结束
break;
}
if (gradeValue < targetMemberSettleExt.getGradeValue() && EGrade.VIP.getValue() == targetMemberSettleExt.getGradeValue() && flag) {
// 获得奖金
// 验证是否有奖金
if (validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_RANGE_INCOME.getValue())) {
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;
continue;
}
AcPickExt acPickExt = calculateRangeBonus(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt, sourceMemberSettleExt,
targetMemberSettleExt, cuMemberBonusRangeList);
if (acPickExt != null) {
acPickExtList.add(acPickExt);
}
pkParent = targetMemberSettleExt.getPkParent();
sourceMemberSettleExt = targetMemberSettleExt;
flag = Boolean.FALSE;
} else if (gradeValue < targetMemberSettleExt.getGradeValue() && EGrade.S_VIP.getValue() == targetMemberSettleExt.getGradeValue()) {
// 获得奖金
if (validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_RANGE_INCOME.getValue())) {
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;
}
AcPickExt acPickExt = calculateRangeBonus(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt, sourceMemberSettleExt,
targetMemberSettleExt, cuMemberBonusRangeList);
if (acPickExt != null) {
acPickExtList.add(acPickExt);
}
break;
} else {
pkParent = targetMemberSettleExt.getPkParent();
sourceMemberSettleExt = targetMemberSettleExt;
// 订单没有使用法宝券
if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.YOU_KE.getValue() == targetMemberSettleExt.getGradeValue() && V1Flag && V2Flag && V3Flag) {
// 订单会员等级小于推荐人等级 并且 推荐人是 V1 并且 V1 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;
V1Flag = Boolean.FALSE;
} else 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;
}
}
}
}
@ -702,6 +800,20 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
}
}
/**
* 计算封装乐学复购特殊级差法宝券返回扣除提货法宝券
*
* @param rangeDtoMap
* @param bonusConfigDTO
* @param period
* @param cuMemberBonusMap
* @param saOrderExt
* @param saOrderItemsExt
* @param sourceMemberSettleExt
* @param targetMemberSettleExt
* @param cuMemberBonusRangeList
* @return
*/
private AcPickExt calculateRangeBonus(Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO, Integer period,
Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, SaOrderItemsExt saOrderItemsExt,
CuMemberSettleExt sourceMemberSettleExt,

View File

@ -357,6 +357,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
validateSettleTable(yesterday, yesterdayTableName);
Map<String, BdAwards> awardsMap = awardsServiceApi.getAwards().getData();
cuMemberTreeService.initCuMemberTreeTable(yesterdayTableName, currentSettleTableName);
// 查看是否有特殊业务有特殊业务的处理特殊业务注水处理
List<CuMemberAchieveLog> cuMemberAchieveLogList = cuMemberAchieveLogService.queryMemberAchieveLogByPeriod(period);
// 有特殊业务
@ -368,32 +369,25 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
cuMemberAchieveService.mergeCuMemberSettleByAchieveLogByDate(currentSettleTableName, DateUtils.parseStringToDate(settleDate));
// 判断特殊业务是否有到期日期有到期的需要使用真实业绩昨天的期间真实更新当前的
cuMemberAchieveService.updateCuMemberSettleAchieveByDueDate(currentSettleTableName, yesterdayTableName, DateUtils.parseStringToDate(settleDate));
// // 每月10号进行甩网将业绩从A甩到B, 甩网业绩修改为按照每日甩业绩
// List<CuMemberAchieveExt> retMemberAchieveExtList = null;
// if (settleDate.endsWith("10")) {
// retMemberAchieveExtList = execNetAchieve(period, settleDate, currentSettleTableName);
// }
// 根据日期开始计算网体 + 业绩
//********************* 更新网体*************/
// 按照订单时间开始奖金结算当订单类型为注册订单需要进行上网更新网体
// 根据订单开始更新业绩
// 订单按照体系开始分类
// Map<Long, List<SaOrderExt>> saOrderMap = new HashMap<>(ComputeUtil.mapInitCapacity(saOrderExtList.size()));
// suiqing 退单需要处理
// 退单需要处理
// 用于记录每天的撤单退单数据数据7天的网体均变为死点
List<SaOrderExt> revokeRegSaOrderList = new ArrayList<>();
List<SaOrderExt> revokeUpdSaOrderList = new ArrayList<>();
// 区分体系体系按照多线程进行更新业绩
// 首购订单 注册+升级 直推奖量奖领导奖注册报单服务费
// 嗨粉订单 嗨粉 嗨粉极差
// 复购订单 (复购量奖复购极差)
// 其他订单 只累计业绩 仅算奖衔
// 分红奖金 是固定的
// 云代奖金 1% 待考虑
// 首购订单
List<SaOrderExt> firPurchaseOrderList = new ArrayList<>();
// 注意
// 复购订单
List<SaOrderExt> repurchaseOrderList = new ArrayList<>();
// 商城订单
@ -432,6 +426,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 计算完奖衔回退业绩最终根据新增进行回写
// cuMemberTreeService.updateCuMemberBackSettle(cuMemberAchieveHashMap, currentSettleTableName);
//********************************重新考核*********************************/
// TODO new 乐学没有分红复购考核这个位置需要去掉
cuMemberAssessService.retryCalculationAssess(DateUtils.parseStringToDate(settleDate), Boolean.TRUE);
//*********************************计算奖金********************************/
// 首购订单 注册+升级 直推奖量奖领导奖注册报单服务费
@ -440,6 +435,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
//计算 直推奖拓展奖辅导奖
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap = new HashMap<>();
BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO();
// 计算奖金
// 乐学易考奖金计算回写代金券数量
LeXueRangeParam leXueRangeParam = calculateBonusBySaOrderList(settleDate, period, currentSettleTableName,
@ -736,6 +732,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
}
/**
* 根据不同的订单类型计算奖金
*
* @param settleDate 结算日期
* @param period 期间
* @param currentSettleTableName 结算日表
@ -743,10 +741,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
* @param bonusConfigDTO 奖金配置
* @param cuMemberBonusMap 最终的奖金列表
* @param cuMemberSettleExtMap 会员结算map
* @Description: 根据不同的订单类型计算奖金
* @return: void
* @Author: sui q
* @Date: 2023/2/13 15:09
*/
private LeXueRangeParam calculateBonusBySaOrderList(String settleDate, Integer period, String currentSettleTableName,
List<SaOrderExt> firPurchaseOrderList, List<SaOrderExt> repurchaseOrderList, List<SaOrderExt> mallOrderList,
@ -1036,14 +1030,12 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
}
/**
* 计算首购订单的奖金
*
* @param settleTableName 结算日表
* @param settleDate 结算日期
* @param bonusConfigDTO 各个国家奖金参数
* @param purchaseOrderList 首购订单
* @Desccription: 计算首购订单的奖金
* @return: Map<Long, CuMemberSettleExt> 需要更新的
* @Author: sui q
* @Date: 2022/11/10 17:40
*/
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,

View File

@ -640,9 +640,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
public Boolean autoCalculateBonus(Date startDate, Date endDate) {
String settleDate = DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, startDate);
Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, startDate);
if (DateUtils.compareDateBefore(startDate, DateUtils.parseStringToDate("2024-09-10"))) {
return Boolean.TRUE;
}
// 自动初始化表
cuMemberTreeService.createCuMemberTree(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)));
log.info("初始化表完成");

View File

@ -203,7 +203,8 @@
</sql>
<sql id="memberParent">
select pk_member,pk_parent,member_code,member_name,a.pk_awards,account_status,a.register_authority,customer_type,
select
pk_member,pk_parent,member_code,member_name,a.pk_awards,account_status,a.register_authority,customer_type,
income_status,pk_settle_country,purchase_status,share_status,is_maker_space,
a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance,
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,
@ -240,9 +241,7 @@
<sql id="CuMemberTableTrig">
CREATE
OR REPLACE TRIGGER
${tableName}
_
TRIG
${tableName}_TRIG
BEFORE
INSERT
OR
@ -277,6 +276,7 @@
END IF;
END;
</sql>
<sql id="QueryMemberParent">
<foreach collection="pkMemberList" item="item" open=" " close=" " separator=" union ">
select pk_member,pk_parent,member_code,member_name,pk_awards,account_status,
@ -294,8 +294,10 @@
<insert id="insertCuMemberSettleByMember">
insert into ${settleTableName}(pk_member, pk_parent, pk_place_parent, place_dept, member_code, member_name,
customer_type, phone, pk_grade, pk_awards, account_status, pay_status, register_authority, category,
purchase_type, purchase_status, share_status, income_status, pk_team_code, is_maker_space,
customer_type, phone, pk_grade, pk_awards, account_status, pay_status,
register_authority, category,
purchase_type, purchase_status, share_status, income_status, pk_team_code,
is_maker_space,
pk_center_code, pk_vertex, pk_settle_country, is_real_name, pk_country, pk_rate,
store_level, is_maker_gift, expire_status)
select cm.pk_id,
@ -352,7 +354,8 @@
<insert id="insertCuMemberTreeBySettleDate">
insert into ${targetTableName}(period, pk_member, pk_parent, pk_place_parent, place_dept, member_code,
member_name, customer_type, phone, pk_grade, pk_awards, account_status, pay_status,
member_name, customer_type, phone, pk_grade, pk_awards, account_status,
pay_status,
register_authority, category, purchase_type, purchase_status,
share_status, income_status, pk_team_code, pk_center_code, pk_vertex,
pk_settle_country, is_real_name, is_bus_license, is_maker_space, pk_country)
@ -412,19 +415,19 @@
</update>
<update id="createCuMemberTreeParentIndex">
create index ${tableName}_parent on ${tableName}(pk_parent)
create index ${tableName}_parent on ${tableName} ( pk_parent )
</update>
<update id="createCuMemberTreePlaceIndex">
create index ${tableName}_place on ${tableName}(pk_place_parent,place_dept)
create index ${tableName}_place on ${tableName} ( pk_place_parent, place_dept )
</update>
<update id="createCuMemberTableUniqueIndex">
create unique index ${tableName}_PK_M on ${tableName}(PK_MEMBER,period)
create unique index ${tableName}_PK_M on ${tableName} ( PK_MEMBER, period )
</update>
<update id="createCuMemberTreeDayOnlyIndex">
create unique index ${tableName}_PK_M on ${tableName}(PK_MEMBER)
create unique index ${tableName}_PK_M on ${tableName} ( PK_MEMBER )
</update>
<update id="updateCuMemberTreeByCancelOrder">
@ -451,16 +454,25 @@
<insert id="insertCuMemberSettleByHis">
insert into ${settleTableName}(pk_member, PK_PARENT, PK_PLACE_PARENT, PLACE_DEPT, MEMBER_CODE, member_name,
CUSTOMER_TYPE, PHONE, PK_GRADE, PK_AWARDS, ACCOUNT_STATUS, PAY_STATUS, REGISTER_AUTHORITY,
CATEGORY, PURCHASE_TYPE, PURCHASE_STATUS, SHARE_STATUS, INCOME_STATUS, PK_TEAM_CODE, PK_CENTER_CODE,
PK_VERTEX, PK_SETTLE_COUNTRY, IS_REAL_NAME, IS_BUS_LICENSE, IS_MAKER_SPACE, PK_COUNTRY, PK_RATE,
CUSTOMER_TYPE, PHONE, PK_GRADE, PK_AWARDS, ACCOUNT_STATUS, PAY_STATUS,
REGISTER_AUTHORITY,
CATEGORY, PURCHASE_TYPE, PURCHASE_STATUS, SHARE_STATUS, INCOME_STATUS,
PK_TEAM_CODE, PK_CENTER_CODE,
PK_VERTEX, PK_SETTLE_COUNTRY, IS_REAL_NAME, IS_BUS_LICENSE, IS_MAKER_SPACE,
PK_COUNTRY, PK_RATE,
a_balance, b_balance, A_SUM_AMOUNT, B_SUM_AMOUNT, A_SUM_PV, B_SUM_PV,
A_NEW_AMOUNT, B_NEW_AMOUNT, A_NEW_PV, B_NEW_PV, A_SUM_REAL_AMOUNT, B_SUM_REAL_AMOUNT, A_SUM_REAL_PV, B_SUM_REAL_PV,
REP_A_BALANCE, REP_B_BALANCE, REP_A_NEW_AMOUNT, REP_B_NEW_AMOUNT, REP_A_NEW_PV, REP_B_NEW_PV, REP_A_SUM_AMOUNT,
REP_B_SUM_AMOUNT, REP_A_SUM_PV, REP_B_SUM_PV, REGISTER_AMOUNT, REGISTER_PV, REGISTER_NEW_AMOUNT, REGISTER_NEW_PV,
UPGRADE_AMOUNT, UPGRADE_PV, UPGRADE_NEW_AMOUNT, UPGRADE_NEW_PV, REPURCHASE_AMOUNT, REPURCHASE_PV,
REPURCHASE_NEW_AMOUNT, REPURCHASE_NEW_PV, HI_FUN_AMOUNT, HI_FUN_PV, HI_FUN_NEW_AMOUNT, HI_FUN_NEW_PV,
MALL_AMOUNT, MALL_PV, MALL_NEW_AMOUNT, MALL_NEW_PV, REGISTER_BLO_NEW_PV, UPGRADE_BLO_NEW_PV, REPURCHASE_BLO_NEW_PV,
A_NEW_AMOUNT, B_NEW_AMOUNT, A_NEW_PV, B_NEW_PV, A_SUM_REAL_AMOUNT,
B_SUM_REAL_AMOUNT, A_SUM_REAL_PV, B_SUM_REAL_PV,
REP_A_BALANCE, REP_B_BALANCE, REP_A_NEW_AMOUNT, REP_B_NEW_AMOUNT, REP_A_NEW_PV,
REP_B_NEW_PV, REP_A_SUM_AMOUNT,
REP_B_SUM_AMOUNT, REP_A_SUM_PV, REP_B_SUM_PV, REGISTER_AMOUNT, REGISTER_PV,
REGISTER_NEW_AMOUNT, REGISTER_NEW_PV,
UPGRADE_AMOUNT, UPGRADE_PV, UPGRADE_NEW_AMOUNT, UPGRADE_NEW_PV,
REPURCHASE_AMOUNT, REPURCHASE_PV,
REPURCHASE_NEW_AMOUNT, REPURCHASE_NEW_PV, HI_FUN_AMOUNT, HI_FUN_PV,
HI_FUN_NEW_AMOUNT, HI_FUN_NEW_PV,
MALL_AMOUNT, MALL_PV, MALL_NEW_AMOUNT, MALL_NEW_PV, REGISTER_BLO_NEW_PV,
UPGRADE_BLO_NEW_PV, REPURCHASE_BLO_NEW_PV,
HI_FUN_BLO_NEW_PV, MALL_BLO_NEW_PV, MIN_ACHIEVE, ROUND, SECOND)
select ca.pk_member,
ca.PK_PARENT,
@ -549,9 +561,11 @@
<insert id="insertCuMemberRangeByMember">
insert into ${settleTableName}(pk_member, pk_parent, member_code, member_name,
customer_type, phone, pk_grade, pk_awards, pk_range_awards, pk_benefit_awards, account_status, pay_status, register_authority, category,
customer_type, phone, pk_grade, pk_awards, pk_range_awards, pk_benefit_awards,
account_status, pay_status, register_authority, category,
purchase_status, income_status, pk_team_code,
pk_center_code, pk_vertex, pk_settle_country, is_real_name, pk_country, pk_rate, assess_status, month_member, range_store_status, pay_time)
pk_center_code, pk_vertex, pk_settle_country, is_real_name, pk_country, pk_rate,
assess_status, month_member, range_store_status, pay_time)
select cm.pk_id,
pk_parent,
member_code,
@ -610,6 +624,7 @@
<update id="createCuMemberTableSequence" statementType="STATEMENT">
<include refid="CuMemberTableTrig"></include>
</update>
<update id="updateCuMemberSettleExemptByAward">
merge into ${settleTableName} a
using (
@ -635,24 +650,33 @@
when matched then
update set a.purchase_status = 0,a.purchase_type = b.purchase_type
</update>
<update id="updateCuMemberSettle">
merge into ${settleTableName} a
using(
select * from (
<foreach collection="cuMemberTreeList" item="item" open=" " separator=" union " close=" ">
select #{item.pkMember} pk_member,#{item.aBalance} a_balance, #{item.bBalance} b_balance,
#{item.aNewAmount} a_new_amount,#{item.bNewAmount} b_new_amount,#{item.aNewPv} a_new_pv,#{item.bNewPv} b_new_pv,
#{item.aNewAmount} a_new_amount,#{item.bNewAmount} b_new_amount,#{item.aNewPv} a_new_pv,#{item.bNewPv}
b_new_pv,
#{item.repABalance} rep_a_balance,#{item.repBBalance} rep_b_balance,#{item.repANewAmount} rep_a_new_amount,
#{item.repBNewAmount} rep_b_new_amount,#{item.repANewPv} rep_a_new_pv,#{item.repBNewPv} rep_b_new_pv,
#{item.registerAmount} register_amount,#{item.registerPv} register_pv,#{item.registerNewAmount} register_new_amount,#{item.registerNewPv} register_new_pv,
#{item.upgradeAmount} upgrade_amount,#{item.upgradePv} upgrade_pv,#{item.upgradeNewAmount} upgrade_new_amount,#{item.upgradeNewPv} upgrade_new_pv,
#{item.repurchaseAmount} repurchase_amount,#{item.repurchasePv} repurchase_pv,#{item.repurchaseNewAmount} repurchase_new_amount,#{item.repurchaseNewPv} repurchase_new_pV,
#{item.hiFunAmount} hi_fun_amount,#{item.hiFunPv} hi_fun_pv,#{item.hiFunNewAmount} hi_fun_new_amount,#{item.hiFunNewPv} hi_fun_new_pv,
#{item.mallAmount} mall_amount,#{item.mallPv} mall_pv,#{item.mallNewAmount} mall_new_amount,#{item.mallNewPv} mall_new_pv,
#{item.registerBloNewPv} register_blo_new_pv,#{item.upgradeBloNewPv} upgrade_blo_new_pv,#{item.repurchaseBloNewPv} repurchase_blo_new_pv,
#{item.registerAmount} register_amount,#{item.registerPv} register_pv,#{item.registerNewAmount}
register_new_amount,#{item.registerNewPv} register_new_pv,
#{item.upgradeAmount} upgrade_amount,#{item.upgradePv} upgrade_pv,#{item.upgradeNewAmount}
upgrade_new_amount,#{item.upgradeNewPv} upgrade_new_pv,
#{item.repurchaseAmount} repurchase_amount,#{item.repurchasePv} repurchase_pv,#{item.repurchaseNewAmount}
repurchase_new_amount,#{item.repurchaseNewPv} repurchase_new_pV,
#{item.hiFunAmount} hi_fun_amount,#{item.hiFunPv} hi_fun_pv,#{item.hiFunNewAmount}
hi_fun_new_amount,#{item.hiFunNewPv} hi_fun_new_pv,
#{item.mallAmount} mall_amount,#{item.mallPv} mall_pv,#{item.mallNewAmount}
mall_new_amount,#{item.mallNewPv} mall_new_pv,
#{item.registerBloNewPv} register_blo_new_pv,#{item.upgradeBloNewPv}
upgrade_blo_new_pv,#{item.repurchaseBloNewPv} repurchase_blo_new_pv,
#{item.hiFunBloNewPv} hi_fun_blo_new_pv,#{item.mallBloNewPv} mall_blo_new_pv,
#{item.rABalance} r_a_balance,#{item.rBBalance} r_b_balance,#{item.rRepABalance} r_rep_a_balance,
#{item.rRepBBalance} r_rep_b_balance,#{item.minAchieve} min_achieve,#{item.round} round,#{item.second} second from dual
#{item.rRepBBalance} r_rep_b_balance,#{item.minAchieve} min_achieve,#{item.round} round,#{item.second}
second from dual
</foreach>)
) b
on (a.pk_member = b.pk_member)
@ -661,7 +685,8 @@
a.b_new_amount=b.b_new_amount,a.a_new_pv=b.a_new_pv,a.b_new_pv=b.b_new_pv,a.rep_a_balance=b.rep_a_balance,
a.rep_b_balance=b.rep_b_balance, a.rep_a_new_amount=b.rep_a_new_amount,a.rep_b_new_amount=b.rep_b_new_amount,
a.rep_a_new_pv=b.rep_a_new_pv,a.rep_b_new_pv=b.rep_b_new_pv,
a.register_amount = b.register_amount,a.register_pv=b.register_pv,a.register_new_amount = b.register_new_amount,a.register_new_pv=b.register_new_pv,
a.register_amount = b.register_amount,a.register_pv=b.register_pv,a.register_new_amount =
b.register_new_amount,a.register_new_pv=b.register_new_pv,
a.upgrade_amount=b.upgrade_amount,a.upgrade_pv=b.upgrade_pv,a.upgrade_new_amount=b.upgrade_new_amount,a.upgrade_new_pv=b.upgrade_new_pv,
a.repurchase_amount=b.repurchase_amount,a.repurchase_pv=b.repurchase_pv,a.repurchase_new_amount=b.repurchase_new_amount,a.repurchase_new_pv=b.repurchase_new_pv,
a.hi_fun_amount=b.hi_fun_amount,a.hi_fun_pv=b.hi_fun_pv,a.hi_fun_new_amount=b.hi_fun_new_amount,a.hi_fun_new_pv=b.hi_fun_new_pv,
@ -689,12 +714,14 @@
using(
<foreach collection="cuMemberTreeList" item="item" open=" " separator=" union all " close=" ">
select #{item.pkMember} pk_member,#{item.aBalance} a_balance, #{item.bBalance} b_balance,
#{item.aNewAmount} a_new_amount,#{item.bNewAmount} b_new_amount,#{item.aNewPv} a_new_pv,#{item.bNewPv} b_new_pv,
#{item.aNewAmount} a_new_amount,#{item.bNewAmount} b_new_amount,#{item.aNewPv} a_new_pv,#{item.bNewPv}
b_new_pv,
#{item.repABalance} rep_a_balance,#{item.repBBalance} rep_b_balance,#{item.repANewAmount} rep_a_new_amount,
#{item.repBNewAmount} rep_b_new_amount,#{item.repANewPv} rep_a_new_pv,#{item.repBNewPv} rep_b_new_pv,
#{item.registerAmount} register_amount,#{item.registerPv} register_pv,#{item.registerNewPv} register_new_pv,
#{item.upgradeAmount} upgrade_amount,#{item.upgradePv} upgrade_pv,#{item.upgradeNewPv} upgrade_new_pv,
#{item.repurchaseAmount} repurchase_amount,#{item.repurchasePv} repurchase_pv,#{item.repurchaseNewPv} repurchase_new_pv,
#{item.repurchaseAmount} repurchase_amount,#{item.repurchasePv} repurchase_pv,#{item.repurchaseNewPv}
repurchase_new_pv,
#{item.hiFunAmount} hi_fun_amount,#{item.hiFunPv} hi_fun_pv,#{item.hiFunNewPv} hi_fun_new_pv,
#{item.mallAmount} mall_amount,#{item.mallPv} mall_pv,#{item.mallNewPv} mall_new_pv,
#{item.minAchieve} min_achieve,#{item.round} round,#{item.second} second from dual
@ -743,7 +770,8 @@
nvl(ST.REP_B_NEW_PV,0) REP_B_NEW_PV,nvl(yt.REP_A_SUM_AMOUNT,0) REP_A_SUM_AMOUNT,
nvl(yt.REP_B_SUM_AMOUNT,0) REP_B_SUM_AMOUNT,nvl(yt.REP_A_SUM_PV,0) REP_A_SUM_PV,
nvl(yt.REP_B_SUM_PV,0) REP_B_SUM_PV,
nvl(ST.ROUND,0) ROUND,nvl(nvl(ST.SECOND,yt.second),1) SECOND,nvl(ST.MIN_ACHIEVE,0) MIN_ACHIEVE,b.expire_status from
nvl(ST.ROUND,0) ROUND,nvl(nvl(ST.SECOND,yt.second),1) SECOND,nvl(ST.MIN_ACHIEVE,0) MIN_ACHIEVE,b.expire_status
from
(select t.pk_id,t.pk_settle_country,t.expire_status from cu_member t
where t.del_flag = 0 start with t.pk_id = #{pkMember}
connect by t.pk_id = prior
@ -858,7 +886,8 @@
share_status, income_status, pk_team_code, pk_center_code, pk_vertex,
pk_settle_country, is_real_name, is_bus_license, is_maker_space, pk_country)
values (b.period, b.pk_member, b.pk_parent, b.pk_place_parent, b.place_dept, b.member_code,
b.member_name, b.customer_type, b.phone, b.pk_grade, b.pk_awards, b.account_status, b.pay_status,
b.member_name, b.customer_type, b.phone, b.pk_grade, b.pk_awards, b.account_status,
b.pay_status,
b.register_authority, b.category, b.purchase_type, b.purchase_status,
b.share_status, b.income_status, b.pk_team_code, b.pk_center_code, b.pk_vertex,
b.pk_settle_country, b.is_real_name, b.is_bus_license, b.is_maker_space, b.pk_country)
@ -1180,6 +1209,7 @@
and bw.community_check &lt;= a.b_sum_real_pv
order by pk_member desc
</select>
<select id="queryCuMemberSettlePlaceUnderUmbrella" resultType="java.lang.Integer">
select count(a.pk_member)
from (select a.*, b.pk_awards
@ -1228,6 +1258,7 @@
on x.pk_awards = ba.pk_id
where ba.awards_value >= (select awards_value from bd_awards where pk_id = #{awardsValue}))
</select>
<select id="queryExemptCuMemberSettle" resultMap="CuMemberSettleExt">
select pk_member, 0 assess_type
from ${tableName}
@ -1239,7 +1270,8 @@
</select>
<select id="queryMemberSettleBySaOrder" resultMap="CuMemberSettleExt">
select pk_member,member_code,member_name,c.pk_awards,c.pk_grade,account_status,category,income_status,pk_settle_country,
select
pk_member,member_code,member_name,c.pk_awards,c.pk_grade,account_status,category,income_status,pk_settle_country,
is_maker_space,purchase_status,share_status,bg.grade_value,pk_parent,is_maker_space,
a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance,
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,c.pk_vertex,
@ -1254,14 +1286,16 @@
</select>
<select id="batchQueryCuMemberSettlePlaceParent" resultMap="CuMemberSettleExt">
select pk_order,pk_member,member_code,member_name,pk_place_parent,place_dept,pk_grade,a.pk_awards,bg.grade_value,account_status,
select
pk_order,pk_member,member_code,member_name,pk_place_parent,place_dept,pk_grade,a.pk_awards,bg.grade_value,account_status,
income_status,pk_settle_country,purchase_status,share_status,a.register_authority,
a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance,
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,category,pk_vertex,
min_achieve,round,second,store_level,expire_status from (
<foreach collection="firPurchaseOrderList" item="item" open=" " close=" " separator=" union all ">
select #{item.pkId} pk_order,pk_member,member_code,member_name,pk_place_parent,place_dept,pk_grade,pk_awards,account_status,
select #{item.pkId}
pk_order,pk_member,member_code,member_name,pk_place_parent,place_dept,pk_grade,pk_awards,account_status,
income_status,pk_settle_country,purchase_status,share_status,register_authority,
a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance,
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,
@ -1292,7 +1326,8 @@
</select>
<select id="batchQueryCuMemberSettleParentForSpecial" resultMap="CuMemberSettleExt">
select a.pk_member,a.pk_parent,a.member_code,a.member_name,a.pk_awards,a.account_status,a.register_authority,a.customer_type,
select
a.pk_member,a.pk_parent,a.member_code,a.member_name,a.pk_awards,a.account_status,a.register_authority,a.customer_type,
a.income_status,a.pk_settle_country,a.purchase_status,a.share_status,a.is_maker_space,
a.a_balance,a.b_balance,a.r_a_balance,a.r_b_balance,a.rep_a_balance,a.rep_b_balance,a.r_rep_a_balance,a.r_rep_b_balance,
a.register_amount,a.register_pv,a.upgrade_amount,a.upgrade_pv,a.repurchase_amount,a.pk_center_code,
@ -1304,10 +1339,11 @@
inner join bd_grade bg
on a.pk_grade = bg.pk_id
left join ac_pick ap
on ap.pk_member = a.pk_member and ap.pick_type=8 and ap.del_flag=0
on ap.pk_member = a.pk_member and ap.pick_type = 8 and ap.del_flag=0
left join bd_product bp
on ap.pk_data_id = bp.pk_id
</select>
<select id="queryCuMemberSecondPlaceParent" resultMap="CuMemberSettleExt">
select b.pk_id pk_member,
b.pk_parent,
@ -1517,7 +1553,8 @@
</select>
<select id="queryCuMemberSecondParent" resultMap="CuMemberSettleExt">
select b.pk_id pk_member,b.pk_parent,b.pk_place_parent,b.place_dept,b.pk_center_code,b.member_code,b.member_name,b.pk_grade,b.pk_awards,b.account_status,
select b.pk_id
pk_member,b.pk_parent,b.pk_place_parent,b.place_dept,b.pk_center_code,b.member_code,b.member_name,b.pk_grade,b.pk_awards,b.account_status,
b.register_authority,b.customer_type,b.income_status,b.pk_settle_country,b.is_maker_space,b.purchase_status,
b.share_status,bg.grade_value,b.category,st.a_balance,st.b_balance,0 r_a_balance,0 r_b_balance,
st.a_sum_amount,st.b_sum_amount,st.a_sum_pv,st.b_sum_pv,st.a_new_amount,st.b_new_amount,st.a_new_pv,
@ -1532,7 +1569,8 @@
st.mall_amount,st.mall_pv,st.mall_new_amount,st.mall_new_pv,
st.round,st.second,st.min_achieve,st.expire_status from
(
select pk_id,pk_parent,pk_place_parent,place_dept,member_code,member_name,pk_center_code,pk_settle_grade pk_grade,pk_awards,account_status,register_authority,customer_type,
select pk_id,pk_parent,pk_place_parent,place_dept,member_code,member_name,pk_center_code,pk_settle_grade
pk_grade,pk_awards,account_status,register_authority,customer_type,
income_status,pk_settle_country,purchase_status,share_status,category,is_maker_space from cu_member
where del_flag= 0 and pk_id in
<foreach collection="cuMemberTreeList" item="item" open="(" close=")" separator=",">
@ -1574,7 +1612,8 @@
t.UPGRADE_NEW_PV,t.REPURCHASE_AMOUNT,t.REPURCHASE_PV,t.REPURCHASE_NEW_PV,t.HI_FUN_AMOUNT,t.HI_FUN_PV,t.HI_FUN_NEW_PV,t.MALL_AMOUNT,
t.MALL_PV ,t.MALL_NEW_PV,t.MIN_ACHIEVE,t.ROUND,t.SECOND,
</if>
cm.PK_AWARDS,cm.PK_PLACE_PARENT,cm.PK_PARENT ,cm.PLACE_DEPT ,cm.MEMBER_NAME, cm.MEMBER_CODE,cm.PK_ID PK_MEMBER,cm.PK_COUNTRY,cm.PK_SETTLE_COUNTRY,cme.MEMBER_CODE parentMemberCode,
cm.PK_AWARDS,cm.PK_PLACE_PARENT,cm.PK_PARENT ,cm.PLACE_DEPT ,cm.MEMBER_NAME, cm.MEMBER_CODE,cm.PK_ID
PK_MEMBER,cm.PK_COUNTRY,cm.PK_SETTLE_COUNTRY,cme.MEMBER_CODE parentMemberCode,
(select count(cr.pk_id) from CU_MEMBER cr where cr.pk_parent = cm.pk_id and cr.del_flag = 0) directPushNumber
from
CU_MEMBER cm
@ -1679,7 +1718,8 @@
t.UPGRADE_NEW_PV,t.REPURCHASE_AMOUNT,t.REPURCHASE_PV,t.REPURCHASE_NEW_PV,t.HI_FUN_AMOUNT,t.HI_FUN_PV,t.HI_FUN_NEW_PV,t.MALL_AMOUNT,
t.MALL_PV ,t.MALL_NEW_PV,t.MIN_ACHIEVE,t.ROUND,t.SECOND,
</if>
level,cm.PK_AWARDS,cm.PK_PLACE_PARENT,cm.PK_PARENT ,cm.PLACE_DEPT ,cm.MEMBER_NAME, cm.MEMBER_CODE,cm.PK_ID PK_MEMBER,cm.PK_COUNTRY,cm.PK_SETTLE_COUNTRY,cme.MEMBER_CODE parentMemberCode
level,cm.PK_AWARDS,cm.PK_PLACE_PARENT,cm.PK_PARENT ,cm.PLACE_DEPT ,cm.MEMBER_NAME, cm.MEMBER_CODE,cm.PK_ID
PK_MEMBER,cm.PK_COUNTRY,cm.PK_SETTLE_COUNTRY,cme.MEMBER_CODE parentMemberCode
from CU_MEMBER cm
<if test="tableName != null and tableName != ''">
left join ${tableName} t on cm.PK_ID = t.PK_MEMBER
@ -1752,7 +1792,13 @@
union
select *
from (
select t.place_dept, t.pk_member, t.member_name, t.member_code, t.phone, t.category, t.pk_grade
select t.place_dept,
t.pk_member,
t.member_name,
t.member_code,
t.phone,
t.category,
t.pk_grade
from ${tableName} t
where t.place_dept = 2
start
@ -1772,7 +1818,8 @@
</select>
<select id="queryCuMemberTree" resultMap="CuMemberSettleExt">
select t.place_dept, t.pk_member, t.member_name,t.member_code, t.phone,t.category,t.pk_grade,bg.grade_value from ${tableName} t
select t.place_dept, t.pk_member, t.member_name,t.member_code, t.phone,t.category,t.pk_grade,bg.grade_value from
${tableName} t
left join bd_grade bg
on bg.pk_id = t.pk_grade
where 1=1
@ -1875,11 +1922,13 @@
</select>
<select id="batchQueryMemberSettleParentByMemberPk" resultMap="CuMemberSettleExt">
select cl.pk_member,cl.member_code,cl.member_name,cl.pk_awards,cl.pk_grade,cl.account_status,cl.category,cl.income_status,cl.pk_settle_country,
select
cl.pk_member,cl.member_code,cl.member_name,cl.pk_awards,cl.pk_grade,cl.account_status,cl.category,cl.income_status,cl.pk_settle_country,
cl.is_maker_space,cl.purchase_status,cl.share_status,
cl.a_balance,cl.b_balance,cl.r_a_balance,cl.r_b_balance,cl.rep_a_balance,cl.rep_b_balance,cl.r_rep_a_balance,cl.r_rep_b_balance,
cl.register_amount,cl.register_pv,cl.upgrade_amount,cl.upgrade_pv,cl.repurchase_amount,cl.pk_center_code,cl.register_authority,
cl.repurchase_pv,cl.hi_fun_amount,cl.hi_fun_pv,cl.mall_amount,cl.mall_pv,cl.min_achieve,cl.round,cl.second from ${settleTableName} ct
cl.repurchase_pv,cl.hi_fun_amount,cl.hi_fun_pv,cl.mall_amount,cl.mall_pv,cl.min_achieve,cl.round,cl.second from
${settleTableName} ct
inner join ${settleTableName} cl
on ct.pk_parent = cl.pk_member
where ct.pk_member in
@ -1887,7 +1936,8 @@
#{item}
</foreach>
union
select pk_member,member_code,member_name,pk_awards,pk_grade,account_status,category,income_status,pk_settle_country,
select
pk_member,member_code,member_name,pk_awards,pk_grade,account_status,category,income_status,pk_settle_country,
is_maker_space,purchase_status,share_status,
a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance,
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,register_authority,
@ -1925,7 +1975,8 @@
t.UPGRADE_NEW_PV,t.REPURCHASE_AMOUNT,t.REPURCHASE_PV,t.REPURCHASE_NEW_PV,t.HI_FUN_AMOUNT,t.HI_FUN_PV,t.HI_FUN_NEW_PV,t.MALL_AMOUNT,
t.MALL_PV ,t.MALL_NEW_PV,t.MIN_ACHIEVE,t.ROUND,t.SECOND,
</if>
cm.PK_AWARDS,cm.PK_PLACE_PARENT,cm.PK_PARENT ,cm.PLACE_DEPT ,cm.MEMBER_NAME, cm.MEMBER_CODE,cm.PK_ID PK_MEMBER,cm.PK_COUNTRY,cm.PK_SETTLE_COUNTRY,cme.MEMBER_CODE parentMemberCode
cm.PK_AWARDS,cm.PK_PLACE_PARENT,cm.PK_PARENT ,cm.PLACE_DEPT ,cm.MEMBER_NAME, cm.MEMBER_CODE,cm.PK_ID
PK_MEMBER,cm.PK_COUNTRY,cm.PK_SETTLE_COUNTRY,cme.MEMBER_CODE parentMemberCode
from
CU_MEMBER cm
left join CU_MEMBER cme on cme.PK_ID = cm.PK_PARENT
@ -1954,7 +2005,8 @@
</select>
<select id="queryByMemberParentSumPv" resultType="com.hzs.bonus.achieve.param.MemberParentCountParam">
select sum(cr.REGISTER_PV + cr.UPGRADE_PV + cr.REPURCHASE_PV + cr.HI_FUN_PV + cr.MALL_PV) parentMemberSumPv,cm.PK_PARENT pkMember from ${tableName} cr
select sum(cr.REGISTER_PV + cr.UPGRADE_PV + cr.REPURCHASE_PV + cr.HI_FUN_PV + cr.MALL_PV)
parentMemberSumPv,cm.PK_PARENT pkMember from ${tableName} cr
left join CU_MEMBER cm on cm.PK_ID = cr.PK_MEMBER
where cm.del_flag = 0 and cm.PK_PARENT in
<foreach collection="memberIds" item="item" open="(" close=")" separator=",">
@ -1971,7 +2023,8 @@
t.REP_B_SUM_AMOUNT,t.REP_A_SUM_PV,t.REP_B_SUM_PV,t.REGISTER_AMOUNT,t.REGISTER_PV,t.REGISTER_NEW_PV,t.UPGRADE_AMOUNT,t.UPGRADE_PV,
t.UPGRADE_NEW_PV,t.REPURCHASE_AMOUNT,t.REPURCHASE_PV,t.REPURCHASE_NEW_PV,t.HI_FUN_AMOUNT,t.HI_FUN_PV,t.HI_FUN_NEW_PV,t.MALL_AMOUNT,
t.MALL_PV ,t.MALL_NEW_PV,t.MIN_ACHIEVE,t.ROUND,t.SECOND,
level,cm.PK_AWARDS,cm.PK_PLACE_PARENT,cm.PK_PARENT ,cm.PLACE_DEPT ,cm.MEMBER_NAME, cm.MEMBER_CODE,cm.PK_ID PK_MEMBER,cm.PK_COUNTRY,cm.PK_SETTLE_COUNTRY,cme.MEMBER_CODE parentMemberCode
level,cm.PK_AWARDS,cm.PK_PLACE_PARENT,cm.PK_PARENT ,cm.PLACE_DEPT ,cm.MEMBER_NAME, cm.MEMBER_CODE,cm.PK_ID
PK_MEMBER,cm.PK_COUNTRY,cm.PK_SETTLE_COUNTRY,cme.MEMBER_CODE parentMemberCode
from ${tableName} t
left join CU_MEMBER cm on cm.PK_ID = t.PK_MEMBER
left join CU_MEMBER cme on cme.PK_ID = cm.PK_PLACE_PARENT
@ -2056,8 +2109,10 @@
on cme.PK_ID = cm.PK_PARENT
</select>
<select id="queryByMemberParentAndMemberSettleCount" resultType="com.hzs.bonus.achieve.param.MemberParentCountParam">
select count(cr.PK_MEMBER) parentMemberCount,cr.PK_PARENT pkMember from cu_member_settle981 cr where cr.PK_PARENT in
<select id="queryByMemberParentAndMemberSettleCount"
resultType="com.hzs.bonus.achieve.param.MemberParentCountParam">
select count(cr.PK_MEMBER) parentMemberCount,cr.PK_PARENT pkMember from cu_member_settle981 cr where
cr.PK_PARENT in
<trim suffixOverrides=" OR PK_ID IN()"> <!-- 表示删除最后一个条件 -->
<foreach collection="memberIds" item="Id" index="index" open="(" close=")">
<if test="index != 0">
@ -2073,7 +2128,8 @@
</select>
<select id="queryByMemberParentSettleSumPv" resultType="com.hzs.bonus.achieve.param.MemberParentCountParam">
select sum(cr.REGISTER_PV + cr.UPGRADE_PV + cr.REPURCHASE_PV + cr.HI_FUN_PV + cr.MALL_PV) parentMemberSumPv,cr.PK_PARENT pkMember from ${tableName} cr
select sum(cr.REGISTER_PV + cr.UPGRADE_PV + cr.REPURCHASE_PV + cr.HI_FUN_PV + cr.MALL_PV)
parentMemberSumPv,cr.PK_PARENT pkMember from ${tableName} cr
where cr.PK_PARENT in
<foreach collection="memberIds" item="item" open="(" close=")" separator=",">
@ -2089,7 +2145,13 @@
</select>
<select id="queryMemberSettleByAwards" resultType="com.hzs.common.domain.member.ext.CuMemberSettleExt">
select a.pk_settle_country, a.income_status, a.pk_member, a.expire_status, a.purchase_status, ba.abonus_ratio, c.real_income_total
select a.pk_settle_country,
a.income_status,
a.pk_member,
a.expire_status,
a.purchase_status,
ba.abonus_ratio,
c.real_income_total
from ${settleTableName} a
inner join bd_awards ba
on a.pk_awards = ba.pk_id
@ -2106,7 +2168,13 @@
and ba.abonus_ratio > 0
and a.pk_settle_country = 1
union
select a.pk_settle_country, a.income_status, a.pk_member, 1 expire_status, a.purchase_status, ba.abonus_ratio, c.real_income_total
select a.pk_settle_country,
a.income_status,
a.pk_member,
1 expire_status,
a.purchase_status,
ba.abonus_ratio,
c.real_income_total
from ${rangeTableName} a
inner join bd_awards ba
on a.pk_benefit_awards = ba.pk_id

View File

@ -44,13 +44,16 @@ public class AcPickMemberLogServiceImpl extends ServiceImpl<AcPickMemberLogMappe
@Override
public List<AcPickMemberLog> queryPickMemberLog(List<SaOrderExt> saOrderExtList) {
LambdaQueryWrapper<AcPickMemberLog> queryWrapper = new LambdaQueryWrapper<>();
Set<String> orderCodeSet = saOrderExtList.stream().distinct().map(SaOrderExt::getOrderCode).collect(Collectors.toSet());
queryWrapper.in(AcPickMemberLog::getPickOrder, orderCodeSet);
List<AcPickMemberLog> retPickMemberLogList = new ArrayList<>();
Set<String> orderKey = new HashSet<>();
saOrderExtList.forEach(saOrderExt -> orderKey.add(saOrderExt.getOrderCode() + saOrderExt.getPkMember()));
List<AcPickMemberLog> retPickMemberLogList = new ArrayList<>();
Set<String> orderCodeSet = saOrderExtList.stream().distinct().map(SaOrderExt::getOrderCode).collect(Collectors.toSet());
LambdaQueryWrapper<AcPickMemberLog> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(AcPickMemberLog::getPickOrder, orderCodeSet);
List<AcPickMemberLog> acPickMemberLogList = baseMapper.selectList(queryWrapper);
for (AcPickMemberLog acPickMemberLog : acPickMemberLogList) {
if (!orderKey.contains(acPickMemberLog.getPickOrder() + acPickMemberLog.getPkMember())) {
retPickMemberLogList.add(acPickMemberLog);

View File

@ -242,7 +242,8 @@
st.is_maker_gift,
0 channel,
sb.pk_order pk_bonus_order,
bt.bonus_value pk_bonus_items,bw.wares_code,nvl(bet.maker_income,0) maker_income
bt.bonus_value pk_bonus_items,
bw.wares_code
from sa_order so
inner join sa_order_items st
on so.pk_id = st.pk_order
@ -252,10 +253,6 @@
on bt.pk_id = sb.pk_bonus_items and bt.del_flag=0
left join bd_wares bw
on bw.pk_id=st.pk_wares and bw.del_flag=0
left join bd_wares_extend bet
on bet.pk_wares=bw.pk_id and bet.del_flag=0
left join sa_cabin_card_detail sd
on sd.pk_order=so.pk_id and sd.del_flag=0
where so.order_status = 1
<if test="orderCode != null and orderCode != ''">
and so.order_code=#{orderCode}