From 34b1b8632a991f59f93fba1b334aaa4526d3adce Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Tue, 17 Jun 2025 10:46:35 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E6=97=A5=E7=BB=93=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=9B=A2=E9=98=9F=E6=9C=88=E7=9B=92=E6=95=B0=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=8F=8A=E5=A4=84=E7=90=86=EF=BC=9B=E6=9C=88=E5=A5=96=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=AE=A2=E5=8D=95=E4=B8=8D=E8=B5=B0dubbo=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=EF=BC=8C=E6=94=B9=E4=B8=BA=E8=87=AA=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/CuMemberRetailRangeMapper.java | 4 +- .../service/ICuMemberRetailRangeService.java | 2 +- .../impl/CuMemberRetailRangeServiceImpl.java | 4 +- .../service/impl/BonusSettleAgentHandle.java | 219 ---------------- .../impl/BonusSettleFirstPurchaseHandle.java | 76 ++---- .../bonus/service/impl/BonusSettleHandle.java | 87 ++---- .../service/impl/BonusSettleRangeHandle.java | 71 +++-- .../service/impl/BonusSettleServiceImpl.java | 3 +- .../service/impl/BonusSettleStoreHandle.java | 112 -------- .../bonus/order/mapper/BonusOrderMapper.java | 12 + .../order/service/IBonusOrderService.java | 11 +- .../service/impl/BonusOrderServiceImpl.java | 6 + .../achieve/CuMemberRetailRangeMapper.xml | 248 ++++++++++-------- .../bonus/achieve/CuMemberTreeMapper.xml | 21 +- .../mapper/bonus/base/CuMemberMapper.xml | 5 +- .../bonus/detail/CuMemberAwardsMapper.xml | 9 +- .../bonus/detail/CuMemberGradeMapper.xml | 19 +- .../mapper/bonus/order/BonusOrderMapper.xml | 22 ++ .../com/hzs/common/core/utils/DateUtils.java | 99 ++----- .../member/achieve/CuMemberRetailRange.java | 121 ++++----- 20 files changed, 387 insertions(+), 764 deletions(-) delete mode 100644 bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleAgentHandle.java delete mode 100644 bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleStoreHandle.java diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java index 5f2c1c57..691f9453 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java @@ -144,5 +144,7 @@ public interface CuMemberRetailRangeMapper extends BaseMapper calculateCloudAgentAreaBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap) { - List cuMemberBonusDetailList = new ArrayList<>(); - // 云代区域 月奖 - // 查询时间范围内订单 - Date settleDate = DateUtils.parseStringToDate(settleDateStr); - // 上个月最后一天 - settleDate = DateUtils.beforeMonthLastDate(settleDate); - // 结算月第一天 - Date currentMonthFirstDate = DateUtils.currentMonthFirstDate(settleDate); - // 结算月下月第一天 - Date nextMonthFirstDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleDate); - List orderType = new ArrayList<>(); - orderType.add(EOrderType.REGISTER_ORDER.getValue()); - orderType.add(EOrderType.UPGRADE_ORDER.getValue()); - orderType.add(EOrderType.REPURCHASE_ORDER.getValue()); - List currentMonthOrderList = saOrderServiceApi.querySaOrderByDayForCloud(currentMonthFirstDate, nextMonthFirstDate, orderType).getData(); - // 查询月末会员状态 - Integer lastPeriod = getCuMemberSettlePeriodService().getCuMemberSettlePeriodByDate(settleDateStr).getPkId(); - String currentSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + lastPeriod; - Set pkMemberSet = new HashSet<>(); - // 获取配置 - Map bdBonusCloudMap = bonusConfigDTO.getBonusCloudMap(); - if (bdBonusCloudMap == null) { - return cuMemberBonusDetailList; - } - // 计算奖金 云代首购 首购订单1% 云代复购 复购订单1% - // 查询会员,查询出所有代理的会员 - Map> cuMemberAgentMap = cuMemberAgentService.queryCuMemberAgent(); - List saOrderList = new ArrayList<>(); - for (SaOrder saOrder : currentMonthOrderList) { - if (saOrder.getPkCountry() == null || saOrder.getRecProvince() == null || saOrder.getRecCity() == null) { - continue; - } - String key = saOrder.getPkCountry().toString() + saOrder.getRecProvince() + saOrder.getRecCity(); - if (!cuMemberAgentMap.containsKey(key)) { - continue; - } else { - saOrderList.add(saOrder); - } - pkMemberSet.add(saOrder.getPkMember()); - List cuMemberAgentList = cuMemberAgentMap.get(key); - cuMemberAgentList.forEach(cuMemberAgent -> - pkMemberSet.add(cuMemberAgent.getPkMember())); - } - List cuMemberSettleExtList = cuMemberTreeService.batchQueryMemberSettleByMemberPk(currentSettleTableName, pkMemberSet); - Map cuMemberSettleExtMap = new HashMap<>(); - getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList); - Map currencyDtoMap = bonusConfigDTO.getCurrencyDtoMap(); - for (SaOrder saOrder : saOrderList) { - String key = saOrder.getPkCountry().toString() + saOrder.getRecProvince().toString() + saOrder.getRecCity().toString(); - List cuMemberAgentList = cuMemberAgentMap.get(key); - BigDecimal exchangeRate = BigDecimal.ONE; - if (currencyDtoMap.containsKey(saOrder.getPkCountry().toString() + saOrder.getPkRate())) { - exchangeRate = currencyDtoMap.get(saOrder.getPkCountry().toString() + saOrder.getPkRate()).getInExchangeRate(); - } - // 云代首购 - CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrder.getPkMember()); - if (sourceMemberSettleExt == null) { - continue; - } - if (EOrderType.REGISTER_ORDER.getValue() == saOrder.getOrderType() || - EOrderType.UPGRADE_ORDER.getValue() == saOrder.getOrderType() || - Objects.equals(EOrderType.FICTITIOUS_ORDER.getValue(), saOrder.getOrderType())) { - BdBonusCloud bdBonusCloud = bdBonusCloudMap.get(saOrder.getPkCountry().toString() + ECloudType.CLOUD_TYPE_FIRST_PURCHASE.getValue()); - for (CuMemberAgent cuMemberAgent : cuMemberAgentList) { - CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(cuMemberAgent.getPkMember()); - if (targetMemberSettleExt == null || ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() || - EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() || - EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()) { - continue; - } - if (cuMemberAgent.getAgentGrade() == 7 && cuMemberAgent.getAgentCounty() != null && saOrder.getRecCounty() != null && - !Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) { - continue; - } else { - if (cuMemberAgent.getAgentGrade() == 8 && cuMemberAgent.getAgentCounty() != null && - !Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) { - continue; - } - } - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrder, targetMemberSettleExt); - CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrder, targetMemberSettleExt, cuMemberBonus); - // 计算比例 - cuMemberBonusDetail.setCalValue(bdBonusCloud.getCloudRatio()); - cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.CLOUD_AGENT_FIRST_PURCHASE.getValue())); - cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), bdBonusCloud.getCloudRatio())); - cloudAgentRemark(saOrder, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt, BonusMsgConstants.CLOUD_AGENT_FIRST_REPURCHASE); - cuMemberBonusDetailList.add(cuMemberBonusDetail); - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrder.getOrderAmount(), exchangeRate); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { - cuMemberBonus.setCloudPurIncome(ComputeUtil.computeAdd(cuMemberBonus.getCloudPurIncome(), cuMemberBonusDetail.getPretaxIncome())); - setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail); - } - } - } else { - // 云代复购 - BdBonusCloud bdBonusCloud = bdBonusCloudMap.get(saOrder.getPkCountry().toString() + ECloudType.CLOUD_TYPE_PURCHASE.getValue()); - for (CuMemberAgent cuMemberAgent : cuMemberAgentList) { - CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(cuMemberAgent.getPkMember()); - if (targetMemberSettleExt == null || ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() || - EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() || - EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()) { - continue; - } - if (cuMemberAgent.getAgentGrade() == 7 && cuMemberAgent.getAgentCounty() != null && saOrder.getRecCounty() != null && - !Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) { - continue; - } else { - if (cuMemberAgent.getAgentGrade() == 8 && cuMemberAgent.getAgentCounty() != null && - !Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) { - continue; - } - } - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrder, targetMemberSettleExt); - CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrder, targetMemberSettleExt, cuMemberBonus); - // 计算比例 - cuMemberBonusDetail.setCalValue(bdBonusCloud.getCloudRatio()); - cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.CLOUD_AGENT_REPURCHASE.getValue())); - cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), bdBonusCloud.getCloudRatio())); - cloudAgentRemark(saOrder, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt, BonusMsgConstants.CLOUD_AGENT_REPURCHASE); - cuMemberBonusDetailList.add(cuMemberBonusDetail); - - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrder.getOrderAmount(), exchangeRate); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { - cuMemberBonus.setCloudRepurIncome(ComputeUtil.computeAdd(cuMemberBonus.getCloudRepurIncome(), cuMemberBonusDetail.getPretaxIncome())); - setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail); - } - } - } - } - - // 复购券均分收益规则 - List repurSharRuleConfigExtList = activityServiceApi.queryRepurSharRuleConfig(currentMonthFirstDate, nextMonthFirstDate).getData(); - if (CollectionUtil.isNotEmpty(repurSharRuleConfigExtList)) { - for (AcRepurSharRuleConfigExt acRepurSharRuleConfigExt : repurSharRuleConfigExtList) { - List orderTypeList = acRepurSharRuleConfigExt.getRepurSharOrderTypeList().stream().distinct().map(AcRepurSharOrderType::getOrderType).collect(Collectors.toList()); - List orderList = saOrderServiceApi.querySaOrderByTimeForCouponShare(settleDate, nextMonthFirstDate, orderTypeList, - acRepurSharRuleConfigExt.getOrderAmount(), acRepurSharRuleConfigExt.getOrderAchieve(), acRepurSharRuleConfigExt.getPkCountry()).getData(); - if (CollectionUtil.isNotEmpty(orderList)) { - Set memberSet = orderList.stream().distinct().map(SaOrder::getPkMember).collect(Collectors.toSet()); - cuMemberSettleExtList = cuMemberTreeService.batchQueryMemberSettleByMemberPk(currentSettleTableName, memberSet); - getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList); - for (SaOrder saOrder : orderList) { - BigDecimal exchangeRate = BigDecimal.ONE; - if (currencyDtoMap.containsKey(saOrder.getPkCountry().toString() + saOrder.getPkRate())) { - exchangeRate = currencyDtoMap.get(saOrder.getPkCountry().toString() + saOrder.getPkRate()).getInExchangeRate(); - } - CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrder.getPkMember()); - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrder, targetMemberSettleExt); - CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrder, targetMemberSettleExt, cuMemberBonus); - // 计算比例 - cuMemberBonusDetail.setCalValue(acRepurSharRuleConfigExt.getRatioValue()); - cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_COUPONS_SHARE.getValue())); - cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), acRepurSharRuleConfigExt.getRatioValue())); - shareCouponRemark(cuMemberBonusDetail, DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, settleDate)); - cuMemberBonusDetailList.add(cuMemberBonusDetail); - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrder.getOrderAmount(), exchangeRate); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { - cuMemberBonus.setRepurCouponShare(cuMemberBonusDetail.getPretaxIncome()); - setRepurchaseCouponTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail); - } - } - } - } - } - return cuMemberBonusDetailList; - } -} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleFirstPurchaseHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleFirstPurchaseHandle.java index 7c9327ef..f4fd5354 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleFirstPurchaseHandle.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleFirstPurchaseHandle.java @@ -3,8 +3,6 @@ package com.hzs.bonus.bonus.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import com.hzs.bonus.base.service.ICuMemberService; -import com.hzs.bonus.bonus.service.ICuMemberBonusService; -import com.hzs.bonus.bonus.service.ICuMemberShareDetailService; import com.hzs.common.core.constant.*; import com.hzs.common.core.enums.*; import com.hzs.common.core.utils.ComputeUtil; @@ -21,7 +19,6 @@ import com.hzs.common.domain.member.ext.CuMemberSettleExt; import com.hzs.common.domain.sale.ext.SaOrderExt; import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.system.config.BdAwards; -import com.hzs.common.domain.system.config.BdBonusItems; import com.hzs.common.domain.system.config.BdGrade; import com.hzs.system.config.IGradeServiceApi; import com.hzs.system.config.dto.*; @@ -42,14 +39,10 @@ import java.util.stream.Collectors; public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { @DubboReference - IGradeServiceApi gradeServiceApi; + IGradeServiceApi iGradeServiceApi; @Autowired - private ICuMemberBonusService cuMemberBonusService; - @Autowired - private ICuMemberShareDetailService cuMemberShareDetailService; - @Autowired - private ICuMemberService cuMemberService; + private ICuMemberService iCuMemberService; /** * 计算直推奖 @@ -69,7 +62,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { // 推荐奖明细 List cuMemberBonusPushList = new ArrayList<>(); Set pkCountrySet = firPurchaseOrderList.stream().distinct().map(SaOrderExt::getPkCountry).collect(Collectors.toSet()); - Map> gradeDtoMap = gradeServiceApi.queryCountryGradeConfigByCondition(pkCountrySet).getData(); + Map> gradeDtoMap = iGradeServiceApi.queryCountryGradeConfigByCondition(pkCountrySet).getData(); // 等级对应的业绩 for (SaOrderExt saOrderExt : firPurchaseOrderList) { List gradeList = gradeDtoMap.get(saOrderExt.getPkCountry()); @@ -272,7 +265,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { * @param bonusConfigDTO 参数 * @param firPurchaseOrderList 首单 * @param cuMemberBonusMap 所有计算出来的奖金汇总 - * @Description: 计算拓展收益 + * 计算拓展收益 * @return: void * @Author: sui q * @Date: 2022/11/10 14:17 @@ -498,7 +491,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { * @param firPurchaseOrderList 订单列表 * @param cuMemberBonusExpandList 量奖明细 * @param cuMemberBonusMap 所有计算出来的奖金汇总 - * @Description: 计算辅导收益 + * 计算辅导收益 * @return: void * @Author: sui q * @Date: 2022/11/10 14:17 @@ -513,7 +506,8 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { } /** - * @Description: 计算领导奖 + * 计算领导奖 + * * @return: List * @Author: sui q * @Date: 2023/2/8 17:16 @@ -546,7 +540,8 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { } /** - * @Description: 计算领导奖 + * 计算领导奖 + * * @return: List * @Author: sui q * @Date: 2023/2/8 17:16 @@ -676,7 +671,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { /** * @param backMemberBonusCoachList 临时记录辅导奖列表 * @param i 第几代 - * @Description: 处理拓展表备注 + * 处理拓展表备注 * @return: void * @Author: sui q * @Date: 2022/11/17 18:02 @@ -777,41 +772,9 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { return cuMemberBonusDetail; } - /** - * @param settleTableName 结算表 - * @param period 期间 - * @param cuMemberBonusMap 所有计算出来的奖金汇总 - * @Description: 计算报单服务费 - * 车奖 全球分红 有奖衔的会员,复购考核通过的,根据对应奖衔可拿代数配置拿下面代数的(推荐+拓展+领导+分红)奖金合计为基数的相应代数的比率(配置值) - * 跟领导奖一样的算法,不算启动卡 - * @return: List - * @Author: sui q - * @Date: 2022/11/17 14:14 - */ - List calculateGlobalCarBonus(Map cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, String settleTableName, String settleDateStr, - Integer period, Map cuMemberBonusMap) { - // 查询存在车奖、全球积分的国家 - List bonusValueList = new ArrayList<>(); -// bonusValueList.add(EBonusItems.GLOBAL_DIVIDEND.getValue()); -// bonusValueList.add(EBonusItems.CAR_BONUS_POINTS.getValue()); - List bdBonusItemsList = bonusItemsServiceApi.queryExistsBonusItems(bonusValueList).getData(); - // 查询出存在车奖跟全球积分的国家 - Set country = new HashSet<>(); - if (bdBonusItemsList != null && bdBonusItemsList.size() > 0) { - bdBonusItemsList.forEach(bdBonusItems -> country.add(bdBonusItems.getPkCountry())); - // 查询这几个国家的奖金 - List cuMemberBonusList = cuMemberBonusService.queryExistsPurchaseBonusMember(period, Arrays.asList(country.toArray(new Integer[]{}))); - return calculateGlobalCarBonusOne(cuMemberSettleExtMap, settleTableName, settleDateStr, bonusConfigDTO, cuMemberBonusList, period, cuMemberBonusMap); - } - // 查询所有有奖金的人的所有血缘上级,根据国家查询,只查询有该奖金项的国家 - return null; - } /** - * @Description: 计算全球积分车奖积分 - * @return: List - * @Author: sui q - * @Date: 2023/2/8 17:16 + * 计算全球积分车奖积分 */ List calculateGlobalCarBonusOne(Map cuMemberSettleExtMap, String settleTableName, String settleDateStr, BonusConfigDTO bonusConfigDTO, List cuMemberBonusList, @@ -842,10 +805,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { } /** - * @Description: 计算全球积分车奖积分 - * @return: List - * @Author: sui q - * @Date: 2023/2/8 17:16 + * 计算全球积分车奖积分 */ List calculateGlobalCarBonusDetail(Map cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap, CuMemberBonus sourceMemberBonus, @@ -958,14 +918,12 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { } /** - * @param settleDateStr 结算日期 - * @param period 期间 - * @Description: 计算报单服务费 + * 计算报单服务费 * 车奖 全球分红 有奖衔的会员,复购考核通过的,根据对应奖衔可拿代数配置拿下面代数的(推荐+拓展+领导+分红)奖金合计为基数的相应代数的比率(配置值) * 跟领导奖一样的算法,不算启动卡 - * @return: List - * @Author: sui q - * @Date: 2022/11/17 14:14 + * + * @param settleDateStr 结算日期 + * @param period 期间 */ List calculateShareBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap, Map cuAwardsControlMap) { @@ -1115,7 +1073,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle { // } BigDecimal gradeExpandRatio = bdGrade.getExpandRatio(); // 验证受益人等级 - CuMember cuMember = cuMemberService.getMember(targetMemberSettleExt.getMemberCode()); + CuMember cuMember = iCuMemberService.getMember(targetMemberSettleExt.getMemberCode()); if (targetMemberSettleExt.getPkSettleCountry().equals(CountryConstants.CHINA_COUNTRY) && cuMember != null && DateUtils.compareDate(DateUtils.parseStringToDate("2024-09-11"), cuMember.getPayTime()) > 0) { if (targetMemberSettleExt.getGradeValue() == EGrade.VIP.getValue()) { diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java index 843f87da..22b3779e 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java @@ -26,10 +26,8 @@ import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.system.config.BdAwards; import com.hzs.common.domain.system.config.BdGrade; import com.hzs.common.domain.system.config.ext.BdBonusItemsExt; -import com.hzs.sale.order.ISaOrderServiceApi; import com.hzs.system.base.ICurrencyServiceApi; import com.hzs.system.base.dto.CurrencyDTO; -import com.hzs.system.config.IBonusItemsServiceApi; import com.hzs.system.config.dto.BonusConfigDTO; import com.hzs.system.config.dto.BonusExpandDTO; import com.hzs.system.config.dto.RangeDTO; @@ -45,33 +43,15 @@ import java.util.*; public abstract class BonusSettleHandle { @DubboReference - ISaOrderServiceApi saOrderServiceApi; - @DubboReference - IBonusItemsServiceApi bonusItemsServiceApi; - @DubboReference - ICurrencyServiceApi currencyServiceApi; + ICurrencyServiceApi iCurrencyServiceApi; + @Autowired protected ICuMemberTreeService cuMemberTreeService; - @Autowired - public void setCuMemberTreeService(ICuMemberTreeService cuMemberTreeService) { - this.cuMemberTreeService = cuMemberTreeService; - } - private ICuMemberSettlePeriodService cuMemberSettlePeriodService; - + @Autowired private ICuMemberAssessService cuMemberAssessService; - @Autowired - public void setCuMemberAssessService(ICuMemberAssessService cuMemberAssessService) { - this.cuMemberAssessService = cuMemberAssessService; - } - - @Autowired - public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) { - this.cuMemberSettlePeriodService = cuMemberSettlePeriodService; - } - public ICuMemberSettlePeriodService getCuMemberSettlePeriodService() { return cuMemberSettlePeriodService; } @@ -475,7 +455,7 @@ public abstract class BonusSettleHandle { * @param cuMemberBonusCoach 辅导奖 * @param sourceMemberRangeExt 提供奖金的人 * @param targetMemberRangeExt 获得奖金的人 - * @Description: 获得 辅导收益的备注 + * 获得 辅导收益的备注 * @return: String * @Author: sui q * @Date: 2022/11/17 11:22 @@ -495,7 +475,7 @@ public abstract class BonusSettleHandle { * @param cuMemberBonusDetail 报单服务费 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 报单服务费收益的备注 + * 获得 报单服务费收益的备注 * @return: String * @Author: sui q * @Date: 2022/11/17 11:22 @@ -514,7 +494,7 @@ public abstract class BonusSettleHandle { * @param cuMemberBonusDetail 报单服务费 * @param sourceCuMemberRangeExt 提供奖金的人 * @param targetCuMemberRangeExt 获得奖金的人 - * @Description: 获得 报单服务费收益的备注 + * 获得 报单服务费收益的备注 * @return: String * @Author: sui q * @Date: 2022/11/17 11:22 @@ -577,7 +557,7 @@ public abstract class BonusSettleHandle { /** * @param cuMemberBonusDetail 分红 * @param settleDate 结算日期 - * @Description: 获得 分红收益的备注 + * 获得 分红收益的备注 * @return: String * @Author: sui q * @Date: 2022/11/17 11:22 @@ -591,7 +571,7 @@ public abstract class BonusSettleHandle { /** * @param cuMemberBonusDetail 分红 * @param settleDate 结算日期 - * @Description: 获得 分红收益的备注 + * 获得 分红收益的备注 * @return: String * @Author: sui q * @Date: 2022/11/17 11:22 @@ -604,7 +584,7 @@ public abstract class BonusSettleHandle { /** * @param cuMemberBonusDetail 分红 - * @Description: 获得 分红收益的备注 + * 获得 分红收益的备注 * @return: String * @Author: sui q * @Date: 2022/11/17 11:22 @@ -619,7 +599,7 @@ public abstract class BonusSettleHandle { * @param cuMemberBonusRange 报单服务费 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 报单服务费收益的备注 + * 获得 报单服务费收益的备注 * @return: String * @Author: sui q * @Date: 2022/11/17 11:22 @@ -640,7 +620,7 @@ public abstract class BonusSettleHandle { * @param cuMemberBonusRange 报单服务费 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 报单服务费收益的备注 + * 获得 报单服务费收益的备注 * @return: String * @Author: sui q * @Date: 2022/11/17 11:22 @@ -744,7 +724,7 @@ public abstract class BonusSettleHandle { * @param cuMemberBonusDetail 云代首购 * @param sourceCuMemberSettleExt 提供奖金的人 * @param targetCuMemberSettleExt 获得奖金的人 - * @Description: 获得 报单服务费收益的备注 + * 获得 报单服务费收益的备注 * @return: String * @Author: sui q * @Date: 2022/11/17 11:22 @@ -761,7 +741,7 @@ public abstract class BonusSettleHandle { /** * @param settleDateStr 结算日期 * @param cuMemberSettleExtList 会员列表 - * @Description: 获取会员列表的考核结果 + * 获取会员列表的考核结果 * @return: Map * @Author: sui q * @Date: 2022/11/17 14:25 @@ -790,7 +770,7 @@ public abstract class BonusSettleHandle { CuMemberSettleExt cuMemberSettleExt) { Integer pkRate = saOrder.getPkRate(); if (pkRate == null || !Objects.equals(cuMemberSettleExt.getPkSettleCountry(), saOrder.getPkCountry())) { - CurrencyDTO currencyDTO = currencyServiceApi.getCurrency(cuMemberSettleExt.getPkSettleCountry()).getData(); + CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberSettleExt.getPkSettleCountry()).getData(); pkRate = currencyDTO.getPkId(); } return getCuMemberBonus(period, cuMemberBonusMap, cuMemberSettleExt.getPkMember(), cuMemberSettleExt.getIncomeStatus(), @@ -919,7 +899,7 @@ public abstract class BonusSettleHandle { * @param cuMemberSettleExtMap 树关系 * @param settleTableName 结算表 * @param saOrderList 订单 - * @Description: 根据订单获取会员的血缘父级,用于嗨粉推荐、复购极差 + * 根据订单获取会员的血缘父级,用于嗨粉推荐、复购极差 * @return: void * @Author: sui q * @Date: 2023/1/4 14:10 @@ -935,7 +915,7 @@ public abstract class BonusSettleHandle { /** * @param awardsMap 奖衔 * @param parentMemberTree 会员树历史记录 - * @Description: 获取会员的极差等级,验证会员是否有奖衔 + * 获取会员的极差等级,验证会员是否有奖衔 * @return: String * @Author: sui q * @Date: 2023/1/4 14:22 @@ -958,7 +938,7 @@ public abstract class BonusSettleHandle { /** * @param awardsMap 奖衔 * @param parentMemberTree 会员树历史记录 - * @Description: 获取会员的极差等级,验证会员是否有奖衔 + * 获取会员的极差等级,验证会员是否有奖衔 * @return: String * @Author: sui q * @Date: 2023/1/4 14:22 @@ -973,13 +953,11 @@ public abstract class BonusSettleHandle { } /** + * 奖金明细 报单服务费、分红、云代首购、云代复购、海豆收益 + * * @param saOrderExt 订单 * @param targetMemberSettleExt 奖金网体 * @param cuMemberBonus 奖金主表 - * @Description: 奖金明细 报单服务费、分红、云代首购、云代复购、海豆收益 - * @return: CuMemberBonusDetail - * @Author: sui q - * @Date: 2023/1/5 16:31 */ protected CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberSettleExt targetMemberSettleExt, CuMemberBonus cuMemberBonus) { CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder() @@ -1004,12 +982,10 @@ public abstract class BonusSettleHandle { } /** + * 获得需要查询的会员,免考通过的不需要查询考核记录 + * * @param cuMemberSettleExtMap 存储目前有的会员数据 * @param cuMemberSettleExtList 需要查询的会员数据 - * @Description: 获得需要查询的会员,免考通过的不需要查询考核记录 - * @return: List - * @Author: sui q - * @Date: 2022/11/17 17:57 */ protected List getQueryMemberSettleExtList(Map cuMemberSettleExtMap, List cuMemberSettleExtList) { // 过滤数据,免考的会员不进行查询 @@ -1025,12 +1001,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); @@ -1045,10 +1019,7 @@ public abstract class BonusSettleHandle { } /** - * @Description: 首购计算 扣项,小计,总计 - * @return: void - * @Author: sui q - * @Date: 2023/1/11 13:59 + * 首购计算 扣项,小计,总计 */ protected void setFirstPurchaseTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); @@ -1058,10 +1029,7 @@ public abstract class BonusSettleHandle { } /** - * @Description: 复购计算 扣项,小计,总计 - * @return: void - * @Author: sui q - * @Date: 2023/1/11 13:59 + * 复购计算 扣项,小计,总计 */ protected void setPurchaseTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); @@ -1071,10 +1039,7 @@ public abstract class BonusSettleHandle { } /** - * @Description: 云代计算 扣项,小计,总计 - * @return: void - * @Author: sui q - * @Date: 2023/1/11 13:59 + * 云代计算 扣项,小计,总计 */ protected void setCloudTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) { setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail); diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java index 9c17af6c..b046a598 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java @@ -132,6 +132,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 注册、升级、复购、重消,盒数、业绩算个人累计数据(盒数、业绩) sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() + boxNum); sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() + boxNum); + sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum() + boxNum); sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getNewConsumePv(), orderAchieve)); sourceMemberRangeExt.setConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getConsumePv(), orderAchieve)); sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve)); @@ -233,9 +234,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 等级map(key:等级ID,value:等级对象) Map gradeIdMap = new HashMap<>(); // 等级列表 - List retaiGradeList = bonusConfigDTO.getRetaiGradeList(); + List retailGradeList = bonusConfigDTO.getRetaiGradeList(); // 等级 - for (BdGrade bdGrade : retaiGradeList) { + for (BdGrade bdGrade : retailGradeList) { if (bdGrade.getBoxTotal() > 0) { retailTeamGradeMap.put(bdGrade.getGradeValue(), bdGrade); } @@ -267,11 +268,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 订单业绩 BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); // 复购、重消,盒数、业绩算个人累计数据(盒数、业绩) - sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() - boxNum); sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() - boxNum); + sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() - boxNum); + sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum() - boxNum); + sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getNewConsumePv(), orderAchieve)); sourceMemberRangeExt.setConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getConsumePv(), orderAchieve)); sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve)); - sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getNewConsumePv(), orderAchieve)); // 会员等级map Map cuMemberGradeMap = new HashMap<>(); @@ -283,7 +285,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { List cuMemberRetailRangeExtList = calculateRetailBackRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeMap, cuMemberAwardsMap); cuMemberRetailRangeExtList.add(sourceMemberRangeExt); - // 查询期间的等级和奖衔 List memberGradeList = iCuMemberGradeService.queryCuMemberGrade(cuMemberRetailRangeExtList, currentPeriod); // 查询最大的手动奖衔 @@ -323,7 +324,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } if (cuMemberGradeList.size() > 0) { + // 删除等级 iCuMemberGradeService.deleteCuMemberGrade(cuMemberGradeList, currentPeriod); + // 批量更新会员等级 iCuMemberService.updateCuMemberMinGradeByList(cuMemberGradeList, currentPeriod); } } @@ -347,8 +350,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } // 处理等级、奖衔 if (cuMemberAwardsList.size() > 0) { + // 删除会员奖衔记录 iCuMemberAwardsService.deleteCuMemberAwards(cuMemberAwardsList, currentPeriod); - // 更新会员表,更新奖衔 + // 更新会员表奖衔数据 iCuMemberService.updateCuMemberMinAwardsByList(cuMemberAwardsList, currentPeriod); } } @@ -493,7 +497,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 复购、重消,盒数、业绩算个人累计数据(盒数、业绩) sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() + boxNum); sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() + boxNum); - sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getConsumeBoxNum() + boxNum); + sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum() + boxNum); sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getNewConsumePv(), orderAchieve)); sourceMemberRangeExt.setConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getConsumePv(), orderAchieve)); sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve)); @@ -554,14 +558,17 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } if (cuMemberAwardsList.size() > 0) { + // 批量插入会员奖衔记录 iCuMemberAwardsService.saveBatchCuMemberAwards(cuMemberAwardsList); - // 更新会员表,更新奖衔 + // 更新会员表奖衔数据 iCuMemberService.updateCuMemberRetailRangeByPeriod(cuMemberAwardsList, period); } if (cuMemberGradeList.size() > 0) { + // 批量插入会员等级记录 iCuMemberGradeService.insertCuMemberGrade(cuMemberGradeList); + // 更新会员表等级数据(来源 cu_member_grade) iCuMemberService.updateCuMemberGradeByPeriod(cuMemberGradeList, period); - // 根据cu_member_level更新cu_member + // 更新会员表等级数据(来源 cu_member_level) iCuMemberService.updateCuMemberLevel(settleStartDate, settleEndDate); } // 更新网体 @@ -864,18 +871,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 激活的账号才能累计业绩和盒数(有注册、升级订单) if (targetMemberRangeExt.getEnableStatus() == EYesNo.YES.getIntValue()) { - // 累计业绩 + // 累计金额 targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamNewAmount(), orderAmount)); targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount)); targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthAmount(), orderAmount)); - // 累计金额 + // 累计业绩 targetMemberRangeExt.setTeamNewPv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamNewPv(), orderAchieve)); targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumePv(), orderAchieve)); targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), orderAchieve)); // 累计盒数 targetMemberRangeExt.setTeamNewBoxNum(targetMemberRangeExt.getTeamNewBoxNum() + boxNum); targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() + boxNum); - targetMemberRangeExt.setMonthBoxNum(targetMemberRangeExt.getMonthBoxNum() + boxNum); + targetMemberRangeExt.setTeamMonthBoxNum(targetMemberRangeExt.getTeamMonthBoxNum() + boxNum); // 计算等级 calculateGradeAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeList, cuMemberAwardsList, targetMemberRangeExt, activateMap); @@ -946,9 +953,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } } - if (targetMemberRangeExt.getPkMember() == 201) { - log.info("targetMemberRangeExt: {}", targetMemberRangeExt); - } // 计算奖衔(荣誉级别) while (true) { // 当前实时奖衔值 + 5,获取下一个奖衔值 @@ -1063,16 +1067,17 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 激活的账号才能累计业绩和盒数(有注册、升级订单) if (targetMemberRangeExt.getEnableStatus() == EYesNo.YES.getIntValue()) { // 累计业绩 - targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount)); - targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), orderAchieve)); - targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthAmount(), orderAmount)); - targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), orderAchieve)); - targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewAmount(), orderAmount)); targetMemberRangeExt.setTeamNewPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewPv(), orderAchieve)); + targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), orderAchieve)); + targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), orderAchieve)); + // 累计金额 + targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewAmount(), orderAmount)); + targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount)); + targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthAmount(), orderAmount)); // 累计盒数 - targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() - boxNum); - targetMemberRangeExt.setMonthBoxNum(targetMemberRangeExt.getMonthBoxNum() - boxNum); targetMemberRangeExt.setTeamNewBoxNum(targetMemberRangeExt.getTeamNewBoxNum() - boxNum); + targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() - boxNum); + targetMemberRangeExt.setTeamMonthBoxNum(targetMemberRangeExt.getTeamMonthBoxNum() - boxNum); // 计算等级 calculateBackGrade(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, targetMemberRangeExt); cuMemberRetailRangeExtList.add(targetMemberRangeExt); @@ -1755,39 +1760,53 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { */ void calculateRetailShareBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO, Integer period, BonusRecordDetailVO bonusRecordDetailVO, Map cuMemberBonusMap) { + // 结算日期 Date settleDate = DateUtils.parseStringToDate(settleDateStr); + // 上月最后一天 String beforeMonthLastDate = DateUtils.beforeMonthLastDateStr(settleDate); - // 查询上月最后一天 + // 上月最后一天期数 Integer beforeMonthLastPeriod = getCuMemberSettlePeriodService().getCuMemberSettlePeriodByDate(beforeMonthLastDate).getPkId(); String rangeTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE + beforeMonthLastPeriod; + // 查询上月订单 - // 结算月第一天 + // 结算月第一天(上月第一天) Date currentMonthFirstDate = DateUtils.beforeMonthFirstDate(settleDate); - // 结算月下月第一天 + // 结算月下月第一天(本月第一天) Date nextMonthFirstDate = DateUtils.currentMonthFirstDate(settleDate); + List orderType = new ArrayList<>(); orderType.add(EOrderType.RETAIL_REGISTER.getValue()); orderType.add(EOrderType.RETAIL_UPGRADE.getValue()); orderType.add(EOrderType.RETAIL_REPURCHASE.getValue()); + + // 月订单列表 List totalMonthOrderList = new ArrayList<>(); List memberBonusRangeList = new ArrayList<>(); List memberBonusDetailList = new ArrayList<>(); + // 当前年月 String month = DateUtils.getMonth(settleDateStr); while (!DateUtils.compareDateEqual(currentMonthFirstDate, nextMonthFirstDate)) { + // 从上月第一天开始,每天查一次订单,查到本月第一天停止 Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS, currentMonthFirstDate); - List currentMonthOrderList = saOrderServiceApi.querySaOrderByDayForCloud(currentMonthFirstDate, endDate, orderType).getData(); + // 查询指定时间范围内订单 + List currentMonthOrderList = iBonusOrderService.listSaOrderByTime(currentMonthFirstDate, endDate, orderType); totalMonthOrderList.addAll(currentMonthOrderList); currentMonthFirstDate = endDate; } + if (totalMonthOrderList.size() > 0) { + // 会员ID集合 Set pkMemberSet = new HashSet<>(); totalMonthOrderList.forEach(saOrder -> pkMemberSet.add(saOrder.getPkMember())); + // 查询会员血缘伞上数据 List cuMemberRetailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByMemberPk(rangeTableName, pkMemberSet); + // 会员结算map(key:会员ID, value:会员结算数据) Map memberRangeExtMap = new HashMap<>(); cuMemberRetailRangeExtList.forEach(cuMemberRetailRangeExt -> memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt)); // 按照体系将订单区分 + // key:会员体系,value:会员订单列表 Map> orderMap = new HashMap<>(); for (SaOrder saOrder : totalMonthOrderList) { if (memberRangeExtMap.containsKey(saOrder.getPkMember())) { diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java index 17f11363..f853565d 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java @@ -67,8 +67,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService { @Autowired private ICuMemberSettlePeriodService cuMemberSettlePeriodService; @Autowired - private ICuMemberService cuMemberService; - @Autowired private ICuAwardsControlService cuAwardsControlService; @Autowired private ICuMemberRepeatBonusService cuMemberRepeatBonusService; @@ -175,6 +173,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService { Date currentDate = DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.parseStringToDate(settleDate)); String afterDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate); if (afterDate.endsWith("01")) { + // TODO new 区域考核处理 // 计算完月奖,计算考核(区域6个月要达到蓝宝以上) String rangeTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE + period; cuRegionAssessService.assessRegionByEveryMonth(settleDate, rangeTableName); diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleStoreHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleStoreHandle.java deleted file mode 100644 index 54308fdc..00000000 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleStoreHandle.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.hzs.bonus.bonus.service.impl; - -import cn.hutool.core.collection.CollectionUtil; -import com.hzs.common.core.constant.BonusFieldConstants; -import com.hzs.common.core.constant.TableNameConstants; -import com.hzs.common.core.enums.EBonusIncomeStatus; -import com.hzs.common.core.enums.EBonusItems; -import com.hzs.common.core.utils.ComputeUtil; -import com.hzs.common.core.utils.DateUtils; -import com.hzs.common.core.utils.reflect.ReflectUtils; -import com.hzs.common.domain.bonus.BdBonusDeduct; -import com.hzs.common.domain.member.bonus.CuMemberBonus; -import com.hzs.common.domain.member.bonus.CuMemberBonusDetail; -import com.hzs.common.domain.member.ext.CuMemberSettleExt; -import com.hzs.common.domain.sale.ext.SaOrderExt; -import com.hzs.common.domain.sale.order.SaOrder; -import com.hzs.common.domain.system.config.BdStoreLevelDetail; -import com.hzs.common.domain.system.config.ext.BdStoreLevelExt; -import com.hzs.system.config.IGradeServiceApi; -import com.hzs.system.config.dto.BonusConfigDTO; -import org.apache.dubbo.config.annotation.DubboReference; -import org.springframework.stereotype.Component; - -import java.math.BigDecimal; -import java.time.temporal.ChronoUnit; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @description: 计算店铺奖金 - * @author: sui q - * @time: 2023/5/8 15:40 - * @classname: BonusStoreHandle - * @package_name: com.hzs.member.bonus.service.impl - * version 1.0.0 - */ -@Component -public class BonusSettleStoreHandle extends BonusSettleHandle{ - - @DubboReference - private IGradeServiceApi gradeServiceApi; - - /** - * @param period 期间 - * @param bonusConfigDTO 参数 - * @param cuMemberBonusMap 所有计算出来的奖金汇总 - * @Description: 计算嗨粉奖金 - * @return: void - * @Author: sui q - * @Date: 2022/11/10 14:17 - */ - List calculateStoreBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap) { - // 云代区域 月奖 - // 查询时间范围内订单 - Date settleDate = DateUtils.parseStringToDate(settleDateStr); - // 上个月最后一天 - settleDate = DateUtils.beforeMonthLastDate(settleDate); - // 结算月第一天 - Date currentMonthFirstDate = DateUtils.currentMonthFirstDate(settleDate); - // 结算月下月第一天 - Date nextMonthFirstDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleDate); - // 查询月末会员状态 - Date currentMonthLastDate = DateUtils.currentMonthLastDate(settleDate); - Integer lastPeriod = getCuMemberSettlePeriodService().getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentMonthLastDate)).getPkId(); - String currentSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + lastPeriod; - List cuMemberBonusDetailList = new ArrayList<>(); - List currentMonthOrderList = saOrderServiceApi.querySaOrderByTimeForStore(currentMonthFirstDate, nextMonthFirstDate).getData(); - if(CollectionUtil.isNotEmpty(currentMonthOrderList)){ - // 查询店铺奖金配置表 - Set pkMemberSet = currentMonthOrderList.stream().distinct().map(SaOrder::getPkMember).collect(Collectors.toSet()); - List cuMemberSettleExtList = cuMemberTreeService.batchQueryMemberSettleByMemberPk(currentSettleTableName, pkMemberSet); - Map cuMemberSettleExtMap = new HashMap<>(); - getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList); - List storeLevelList = gradeServiceApi.queryStoreLevel().getData(); - Map storeLevelExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(storeLevelList.size())); - if(CollectionUtil.isNotEmpty(storeLevelList)){ - for (BdStoreLevelExt bdStoreLevel : storeLevelList) { - storeLevelExtMap.put(bdStoreLevel.getPkId().toString() + bdStoreLevel.getPkCreator().toString(), bdStoreLevel); - } - } - for (SaOrderExt saOrderExt : currentMonthOrderList) { - String key = saOrderExt.getPkMemberStore().toString() + saOrderExt.getPkCountry().toString(); - if(storeLevelExtMap.containsKey(key)){ - BdStoreLevelExt bdStoreLevelExt = storeLevelExtMap.get(key); - for (BdStoreLevelDetail bdStoreLevelDetail : bdStoreLevelExt.getStoreLevelDetailList()) { - if(ComputeUtil.compareValue(saOrderExt.getOrderAchieve(), bdStoreLevelDetail.getEndAchievement())){ - CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember()); - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt); - CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus); - // 计算比例 - cuMemberBonusDetail.setCalValue(bdStoreLevelDetail.getRatio()); - cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.STORE_INCOME.getValue())); - cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrderExt.getOrderAchieve(), bdStoreLevelDetail.getRatio())); - storeRemark(cuMemberBonusDetail, DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentMonthLastDate)); - cuMemberBonusDetailList.add(cuMemberBonusDetail); - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { - cuMemberBonus.setStoreIncome(cuMemberBonusDetail.getPretaxIncome()); - setBonusDeduct(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail); - BigDecimal realIncome = ReflectUtils.invokeGetter(cuMemberBonusDetail, BonusFieldConstants.REAL_INCOME); - cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome)); - } - break; - } - } - } - } - } - return cuMemberBonusDetailList; - - } -} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/mapper/BonusOrderMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/mapper/BonusOrderMapper.java index 1a2dd92d..ac0fe4c7 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/mapper/BonusOrderMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/mapper/BonusOrderMapper.java @@ -1,6 +1,7 @@ package com.hzs.bonus.order.mapper; import com.hzs.common.domain.sale.ext.SaOrderExt; +import com.hzs.common.domain.sale.order.SaOrder; import org.apache.ibatis.annotations.Param; import java.util.Date; @@ -28,4 +29,15 @@ public interface BonusOrderMapper { @Param("endDate") Date endDate, @Param("orderCode") String orderCode); + /** + * 查询订单列表 + * + * @param startDate 开始日期 + * @param endDate 结束日期 + * @param orderType 订单类型列表 + */ + List listSaOrderByTime(@Param("startDate") Date startDate, + @Param("endDate") Date endDate, + @Param("orderType") List orderType); + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/service/IBonusOrderService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/service/IBonusOrderService.java index b1cecccc..0b380855 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/service/IBonusOrderService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/service/IBonusOrderService.java @@ -1,7 +1,7 @@ package com.hzs.bonus.order.service; -import com.hzs.common.core.domain.R; import com.hzs.common.domain.sale.ext.SaOrderExt; +import com.hzs.common.domain.sale.order.SaOrder; import java.util.Date; import java.util.List; @@ -21,4 +21,13 @@ public interface IBonusOrderService { */ SaOrderExt querySaOrderByDay(Date startDate, Date endDate, String orderCode); + /** + * 查询订单列表 + * + * @param startDate 开始日期 + * @param endDate 结束日期 + * @param orderType 订单类型列表 + */ + List listSaOrderByTime(Date startDate, Date endDate, List orderType); + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/service/impl/BonusOrderServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/service/impl/BonusOrderServiceImpl.java index 1425a1db..25180756 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/service/impl/BonusOrderServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/order/service/impl/BonusOrderServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.hzs.bonus.order.mapper.BonusOrderMapper; import com.hzs.bonus.order.service.IBonusOrderService; import com.hzs.common.domain.sale.ext.SaOrderExt; +import com.hzs.common.domain.sale.order.SaOrder; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -30,4 +31,9 @@ public class BonusOrderServiceImpl implements IBonusOrderService { return null; } + @Override + public List listSaOrderByTime(Date startDate, Date endDate, List orderType) { + return bonusOrderMapper.listSaOrderByTime(startDate, endDate, orderType); + } + } diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml index bc6a2071..28a19249 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml @@ -26,20 +26,21 @@ - - + - + - - + + + + - - + + @@ -60,51 +61,66 @@ update ${rangeTableName} - set consume_box_num=0, - new_box_num=0, - team_box_num=0, - month_box_num=0, - team_new_box_num=0, - pk_share_awards = (select pk_id from BD_AWARDS where awards_value = 0), - consume_pv=0, - month_consume_pv=0, - new_consume_pv=0, - team_consume_amount=0, - team_consume_pv=0, - enable_status=1, - team_month_amount=0, - team_month_pv=0, - team_new_amount=0, - team_new_pv=0, - recommend_num=0, - team_num=0, + set new_box_num = 0, + consume_box_num = 0, + month_box_num = 0, + new_consume_pv = 0, + consume_pv = 0, + month_consume_pv = 0, + team_new_box_num = 0, + team_box_num = 0, + team_month_box_num = 0, + team_new_pv = 0, + team_consume_pv = 0, + team_month_pv = 0, + team_new_amount = 0, + team_consume_amount = 0, + team_month_amount = 0, + recommend_num = 0, + team_num = 0, + enable_status = 1, pk_grade = (select pk_id from bd_grade where del_flag = 0 and grade_value = 20), - region_address=0, - big_box_num=0, - small_box_num=0, - big_team_pv=0, - small_team_pv=0 + pk_share_awards = (select pk_id from BD_AWARDS where awards_value = 0), + region_address = 0, + big_box_num = 0, + small_box_num = 0, + big_team_pv = 0, + small_team_pv = 0 merge into ${rangeTableName} a using( - select pk_member,consume_box_num,new_box_num,team_box_num,month_box_num,team_new_box_num,enable_status, - consume_pv,month_consume_pv,new_consume_pv,team_consume_amount,team_consume_pv,pk_share_awards, - team_month_amount,team_month_pv,team_new_amount,team_new_pv,recommend_num,team_num,pk_grade, - big_box_num,small_box_num,big_team_pv,small_team_pv + select pk_member, pk_grade, pk_share_awards, enable_status, + new_box_num, consume_box_num, month_box_num, + new_consume_pv, consume_pv, month_consume_pv, + team_new_box_num, team_box_num, team_month_box_num, + team_new_pv, team_consume_pv, team_month_pv, + team_new_amount, team_consume_amount, team_month_amount, + recommend_num, team_num, + big_box_num, small_box_num, big_team_pv, small_team_pv from ${yesterdayRangeTableName} ) b - on (a.pk_member=b.pk_member) + on (a.pk_member = b.pk_member) when matched then - update set a.consume_box_num=b.consume_box_num,a.team_box_num=b.team_box_num, - a.consume_pv=b.consume_pv,a.team_consume_amount=b.team_consume_amount,a.team_consume_pv=b.team_consume_pv, - a.recommend_num=b.recommend_num,a.team_num=b.team_num,a.pk_grade=b.pk_grade, a.enable_status = b.enable_status, - a.big_box_num=b.big_box_num,a.small_box_num=b.small_box_num, - a.big_team_pv=b.big_team_pv,a.small_team_pv=b.small_team_pv + update set + a.consume_box_num = b.consume_box_num, + a.consume_pv = b.consume_pv, + a.team_box_num = b.team_box_num, + a.team_consume_pv = b.team_consume_pv, + a.team_consume_amount = b.team_consume_amount, + a.recommend_num = b.recommend_num, a.team_num = b.team_num, + a.pk_grade = b.pk_grade, + a.enable_status = b.enable_status, + a.big_box_num = b.big_box_num, a.small_box_num = b.small_box_num, + a.big_team_pv = b.big_team_pv, a.small_team_pv = b.small_team_pv - ,a.month_box_num=b.month_box_num,a.month_consume_pv=b.month_consume_pv,a.pk_share_awards=b.pk_share_awards, - a.team_month_amount=b.team_month_amount,a.team_month_pv=b.team_month_pv + ,a.month_box_num = b.month_box_num + ,a.month_consume_pv = b.month_consume_pv + ,a.team_month_box_num = b.team_month_box_num + ,a.team_month_pv = b.team_month_pv + ,a.team_month_amount = b.team_month_amount + ,a.pk_share_awards = b.pk_share_awards @@ -112,28 +128,24 @@ merge into ${rangeTableName} a using ( - select #{item.pkMember} pk_member, #{item.pkAwards} pk_awards, #{item.pkGrade} pk_grade, - #{item.consumeBoxNum} consume_box_num, #{item.newBoxNum} new_bosx_num, #{item.pkShareAwards} pk_share_awards, - #{item.teamBoxNum} team_box_num, #{item.monthBoxNum} month_box_num, #{item.teamNewBoxNum} team_new_box_num, - #{item.consumePv} consume_pv, #{item.monthConsumePv} month_consume_pv, - #{item.newConsumePv} new_consume_pv, #{item.teamConsumeAmount} team_consume_amount, - #{item.teamMonthAmount} team_month_amount, #{item.teamMonthPv} team_month_pv, - #{item.teamNewPv} team_new_pv, #{item.teamNewAmount} team_new_amount, - #{item.teamConsumePv} team_consume_pv, #{item.newBoxNum} new_box_num, - #{item.recommendNum} recommend_num, #{item.teamNum} team_num, - #{item.enableStatus} enable_status + select #{item.pkMember} pk_member, #{item.pkAwards} pk_awards, #{item.pkGrade} pk_grade, #{item.pkShareAwards} pk_share_awards, + #{item.newBoxNum} new_box_num, #{item.consumeBoxNum} consume_box_num, #{item.monthBoxNum} month_box_num, + #{item.newConsumePv} new_consume_pv, #{item.consumePv} consume_pv, #{item.monthConsumePv} month_consume_pv, + #{item.teamNewBoxNum} team_new_box_num, #{item.teamBoxNum} team_box_num, #{item.teamMonthBoxNum} team_month_box_num, + #{item.teamNewPv} team_new_pv, #{item.teamConsumePv} team_consume_pv, #{item.teamMonthPv} team_month_pv, + #{item.teamNewAmount} team_new_amount, #{item.teamConsumeAmount} team_consume_amount, #{item.teamMonthAmount} team_month_amount, + #{item.recommendNum} recommend_num, #{item.teamNum} team_num, #{item.enableStatus} enable_status from dual ) b - on (a.pk_member=b.pk_member) + on (a.pk_member = b.pk_member) when matched then update set a.pk_awards = b.pk_awards, a.pk_grade = b.pk_grade, a.pk_share_awards = b.pk_share_awards, - a.consume_box_num = b.consume_box_num, a.new_box_num = b.new_box_num, a.team_box_num = b.team_box_num, - a.month_box_num = b.month_box_num, a.team_new_box_num = b.team_new_box_num, - a.consume_pv = b.consume_pv, a.month_consume_pv = b.month_consume_pv, a.new_consume_pv = b.new_consume_pv, - a.team_consume_amount = b.team_consume_amount, a.team_consume_pv = b.team_consume_pv, - a.team_month_amount = b.team_month_amount, a.team_month_pv = b.team_month_pv, - a.team_new_amount = b.team_new_amount, a.team_new_pv = b.team_new_pv, + a.new_box_num = b.new_box_num, a.consume_box_num = b.consume_box_num, a.month_box_num = b.month_box_num, + a.new_consume_pv = b.new_consume_pv, a.consume_pv = b.consume_pv, a.month_consume_pv = b.month_consume_pv, + a.team_new_box_num = b.team_new_box_num, a.team_box_num = b.team_box_num, a.team_month_box_num = b.team_month_box_num, + a.team_new_pv = b.team_new_pv, a.team_consume_pv = b.team_consume_pv, a.team_month_pv = b.team_month_pv, + a.team_new_amount = b.team_new_amount, a.team_consume_amount = b.team_consume_amount, a.team_month_amount = b.team_month_amount, a.recommend_num = b.recommend_num, a.team_num = b.team_num, a.enable_status = b.enable_status @@ -202,8 +214,8 @@ when matched then update set a.pk_grade = b.pk_grade, a.pk_awards = b.pk_awards, a.new_box_num = b.new_box_num, a.new_consume_pv = b.new_consume_pv, - a.team_new_box_num = b.team_new_box_num,a.team_new_pv = b.team_new_pv, - a.team_new_amount = b.team_new_amount,a.enable_status = b.enable_status + a.team_new_box_num = b.team_new_box_num, a.team_new_pv = b.team_new_pv, + a.team_new_amount = b.team_new_amount, a.enable_status = b.enable_status @@ -224,8 +236,11 @@ select cm.pk_member, cr.county region_address from ${rangeTableName} cm inner join cu_member_retail_region cr - on cr.pk_member = cm.pk_member and cr.effective = 0 and cr.del_flag = 0 - where cr.creation_time < #{settleDate,jdbcType=DATE}) b + on cr.pk_member = cm.pk_member + and cr.effective = 0 + and cr.del_flag = 0 + where cr.creation_time < #{settleDate, jdbcType=DATE} + ) b on (a.pk_member = b.pk_member) when matched then update set a.region_address = b.region_address @@ -241,15 +256,14 @@ from cu_member_spe_retail where del_flag = 0 and period = #{period} - group by member_code) b - on a.member_code = b.member_code and nvl(a.modified_time, a.creation_time) = b.creation_time + group by member_code + ) b on a.member_code = b.member_code and nvl(a.modified_time, a.creation_time) = b.creation_time ) b on (a.member_code = b.member_code) when matched then - update set a.big_box_num = b.team_box_num - b.small_box_num,a.small_box_num = b.small_box_num, - a.team_box_num = a.team_box_num + b.team_box_num,a.team_consume_pv = a.team_consume_pv + b.total_team_pv, - a.team_month_pv = a.team_month_pv + b.total_team_pv, - a.big_team_pv = b.total_team_pv - b.small_area_pv, a.small_team_pv = b.small_area_pv + update set + a.big_box_num = b.team_box_num - b.small_box_num, + a.small_box_num = b.small_box_num @@ -257,25 +271,26 @@ using ( select * from ${beforeTableName} a - inner join( + inner join ( select cr.* from cu_member_spe_retail cr - inner join( + inner join ( select member_code, max(pk_id) pk_id from cu_member_spe_retail where period < #{period} and del_flag = 0 group by member_code - ) b - on cr.member_code = b.member_code + ) b on cr.member_code = b.member_code where cr.period = #{period} - and cr.del_flag = 0) b - on a.member_code = b.member_code + and cr.del_flag = 0 + ) b on a.member_code = b.member_code ) b on (a.pk_member = b.pk_member) when matched then - update set a.big_box_num = 0,a.small_box_num = 0, - a.team_box_num = a.team_box_num - a.big_box_num - a.small_box_num + update set + a.big_box_num = 0, + a.small_box_num = 0, + a.team_box_num = a.team_box_num @@ -577,26 +598,27 @@ cm.income_status, cm.pay_time, b.pk_rate, - nvl(cm.is_activate, a.enable_status) enable_status, - nvl(b.consume_box_num, 0) + a.new_box_num consume_box_num, + nvl(cm.is_activate, a.enable_status) enable_status, a.new_box_num, - nvl(b.team_box_num, 0) + a.team_new_box_num team_box_num, - nvl(b.month_box_num, 0) + a.team_new_box_num month_box_num, - a.team_new_box_num, - nvl(b.consume_pv, 0) + a.new_consume_pv consume_pv, - nvl(month_consume_pv, 0) + a.new_consume_pv month_consume_pv, + nvl(b.consume_box_num, 0) + a.new_box_num consume_box_num, + nvl(b.month_box_num, 0) + a.new_box_num month_box_num, a.new_consume_pv, - nvl(b.team_consume_amount, 0) + a.team_new_amount team_consume_amount, + nvl(b.consume_pv, 0) + a.new_consume_pv consume_pv, + nvl(b.month_consume_pv, 0) + a.new_consume_pv month_consume_pv, + a.team_new_box_num, + nvl(b.team_box_num, 0) + a.team_new_box_num team_box_num, + nvl(b.team_month_box_num, 0) + a.team_new_box_num team_month_box_num, + a.team_new_pv, nvl(b.team_consume_pv, 0) + a.team_new_pv team_consume_pv, - nvl(b.team_month_amount, 0) + a.team_new_amount team_month_amount, nvl(b.team_month_pv, 0) + a.team_new_pv team_month_pv, + a.team_new_amount, + nvl(b.team_consume_amount, 0) + a.team_new_amount team_consume_amount, + nvl(b.team_month_amount, 0) + a.team_new_amount team_month_amount, nvl(b.big_box_num, 0) big_box_num, nvl(b.small_box_num, 0) small_box_num, nvl(b.big_team_pv, 0) big_team_pv, nvl(b.small_team_pv, 0) small_team_pv, a.system_type, - a.team_new_amount, - a.team_new_pv, bg.grade_value, bg.grade_name, bw.awards_value, @@ -657,17 +679,17 @@