From 0dbc58f58b23a5da1e0e12aec465f8964b1ecaf6 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Wed, 9 Jul 2025 11:18:07 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E7=89=B9=E6=AE=8A=E4=BD=93=E7=B3=BB?= =?UTF-8?q?=E5=A4=8D=E8=B4=AD=E7=BA=A7=E5=B7=AE=E5=A5=96=E9=A1=B9=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CuMemberRetailRangeServiceImpl.java | 2 +- .../base/mapper/BdVertexBonusMapper.java | 11 ++ .../hzs/bonus/base/mapper/CuMemberMapper.java | 13 +- .../base/service/IBdVertexBonusService.java | 21 +++ .../bonus/base/service/ICuMemberService.java | 10 ++ .../impl/BdVertexBonusServiceImpl.java | 41 +++++ .../service/impl/CuMemberServiceImpl.java | 5 + .../api/ApiCuMemberBonusController.java | 57 +++++-- .../manage/CuMemberBonusController.java | 6 +- .../service/impl/BonusGrantServiceImpl.java | 6 - .../bonus/service/impl/BonusSettleHandle.java | 17 ++ .../service/impl/BonusSettleRangeHandle.java | 157 +++++++++++++++++- .../service/impl/BonusSettleServiceImpl.java | 48 ++---- .../impl/CuMemberBonusServiceImpl.java | 20 +-- .../bonus/bonus/vo/BonusRecordDetailVO.java | 2 +- .../com/hzs/bonus/bonus/vo/BonusTotalVO.java | 36 ++-- .../hzs/bonus/bonus/vo/CuMemberBonusVO.java | 13 +- .../bonus/vo/MemberBonusFirstPurchaseVO.java | 12 +- .../com/hzs/bonus/bonus/vo/MemberBonusVO.java | 6 + .../impl/CuMemberAssessDetailServiceImpl.java | 2 +- .../bonus/order/mapper/BonusOrderMapper.java | 9 + .../order/service/IBonusOrderService.java | 10 ++ .../service/impl/BonusOrderServiceImpl.java | 31 +++- .../mapper/CuMemberSwingNetLogMapper.java | 17 -- .../service/ICuMemberSwingNetLogService.java | 15 -- .../impl/CuMemberSwingNetLogServiceImpl.java | 12 -- .../achieve/CuMemberRetailRangeMapper.xml | 2 + .../mapper/bonus/base/BdVertexBonusMapper.xml | 6 + .../mapper/bonus/base/CuMemberMapper.xml | 10 ++ .../bonus/bonus/CuMemberBonusDetailMapper.xml | 3 +- .../bonus/bonus/CuMemberBonusMapper.xml | 144 +++++++++------- .../mapper/bonus/order/BonusOrderMapper.xml | 66 +++++++- .../bonus/swing/CuMemberSwingNetLogMapper.xml | 54 ------ .../impl/CuBonusStatisServiceImpl.java | 17 -- .../api/ApiRetailWaresController.java | 3 + .../impl/BdWaresSpecsSkuServiceImpl.java | 1 + .../core/constant/MagicNumberConstants.java | 13 +- .../core/constant/msg/BonusMsgConstants.java | 10 +- .../hzs/common/core/enums/EBonusItems.java | 28 +--- .../com/hzs/common/core/enums/EDadaType.java | 8 +- .../hzs/common/core/enums/ERangeAwards.java | 51 ------ .../com/hzs/common/core/enums/ERangeType.java | 6 +- .../domain/sale/ext/SaOrderItemsExt.java | 14 +- .../domain/sale/wares/BdWaresRange.java | 5 - .../domain/sale/wares/ext/WaresRangeTmp.java | 23 +++ .../hzs/common/domain/vertex/BdVertex.java | 5 - .../common/domain/vertex/BdVertexBonus.java | 40 +++++ .../src/test/java/com/CodeGenerator.java | 10 +- 48 files changed, 684 insertions(+), 414 deletions(-) create mode 100644 bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/BdVertexBonusMapper.java create mode 100644 bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/IBdVertexBonusService.java create mode 100644 bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/BdVertexBonusServiceImpl.java create mode 100644 bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/BdVertexBonusMapper.xml delete mode 100644 bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ERangeAwards.java create mode 100644 bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/wares/ext/WaresRangeTmp.java create mode 100644 bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/vertex/BdVertexBonus.java diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java index 937ece59..118cb339 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java @@ -44,7 +44,7 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl> cutOrderList = cuMemberBonusSettle.handleCutList(orderIdSet, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM); + List> cutOrderList = cuMemberBonusSettle.handleCutList(orderIdSet, MagicNumberConstants.BATCH_QUERY_NUM); cutOrderList.forEach(orderList -> { List rangeExtList = baseMapper.queryCuMemberRetailRangeParent(tableName, orderList); if (rangeExtList.size() > 0) { diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/BdVertexBonusMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/BdVertexBonusMapper.java new file mode 100644 index 00000000..c1230024 --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/BdVertexBonusMapper.java @@ -0,0 +1,11 @@ +package com.hzs.bonus.base.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.hzs.common.domain.vertex.BdVertexBonus; + +/** + * 体系奖金配置(记录哪个体系走特殊奖金) Mapper 接口 + */ +public interface BdVertexBonusMapper extends BaseMapper { + +} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java index ff95a4d9..18192bd3 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/mapper/CuMemberMapper.java @@ -5,6 +5,7 @@ import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.detail.CuMemberAwards; import com.hzs.common.domain.member.detail.CuMemberGrade; import com.hzs.common.domain.member.ext.CuMemberExt; +import com.hzs.common.domain.vertex.BdVertexBonus; import org.apache.ibatis.annotations.Param; import java.util.Date; @@ -44,8 +45,8 @@ public interface CuMemberMapper extends BaseMapper { * @param cuMemberAwardsList 修改奖衔的会员 */ int updateCuMemberRetailRangeByList(@Param("cuMemberAwardsList") List cuMemberAwardsList, - @Param("period") Integer period, - @Param("awardType") Integer awardType); + @Param("period") Integer period, + @Param("awardType") Integer awardType); /** * 更新会员奖衔根据临时表 @@ -94,4 +95,12 @@ public interface CuMemberMapper extends BaseMapper { */ List queryCuMemberShareTotal(Integer pkCountry); + /** + * 查询体系奖项列表 + * + * @param pkMember + * @return + */ + List listVertexBonus(@Param("pkMember") Long pkMember); + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/IBdVertexBonusService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/IBdVertexBonusService.java new file mode 100644 index 00000000..d99dca54 --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/IBdVertexBonusService.java @@ -0,0 +1,21 @@ +package com.hzs.bonus.base.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hzs.common.domain.vertex.BdVertexBonus; + +import java.util.List; +import java.util.Map; + +/** + * 体系奖金配置(记录哪个体系走特殊奖金) 服务类 + */ +public interface IBdVertexBonusService extends IService { + + /** + * 查询体系奖金map + * + * @return + */ + Map> queryVertexBonus(); + +} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java index c3cd3400..1e2341fb 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/ICuMemberService.java @@ -5,6 +5,7 @@ import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.detail.CuMemberAwards; import com.hzs.common.domain.member.detail.CuMemberGrade; import com.hzs.common.domain.member.ext.CuMemberExt; +import com.hzs.common.domain.vertex.BdVertexBonus; import java.util.Date; import java.util.List; @@ -82,4 +83,13 @@ public interface ICuMemberService extends IService { * 查询可以获得分红的会员人数 */ List queryCuMemberShareTotal(Integer pkCountry); + + /** + * 查询体系奖项列表 + * + * @param pkMember + * @return + */ + List listVertexBonus(Long pkMember); + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/BdVertexBonusServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/BdVertexBonusServiceImpl.java new file mode 100644 index 00000000..bf253722 --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/BdVertexBonusServiceImpl.java @@ -0,0 +1,41 @@ +package com.hzs.bonus.base.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.hzs.bonus.base.mapper.BdVertexBonusMapper; +import com.hzs.bonus.base.service.IBdVertexBonusService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hzs.common.domain.vertex.BdVertexBonus; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 体系奖金配置(记录哪个体系走特殊奖金) 服务实现类 + */ +@Service +public class BdVertexBonusServiceImpl extends ServiceImpl implements IBdVertexBonusService { + + @Override + public Map> queryVertexBonus() { + HashMap> resultMap = new HashMap<>(); + + List vertexBonusList = this.list(); + if (CollectionUtil.isNotEmpty(vertexBonusList)) { + for (BdVertexBonus bdVertexBonus : vertexBonusList) { + if (resultMap.containsKey(bdVertexBonus.getPkVertex())) { + resultMap.get(bdVertexBonus.getPkVertex()).add(bdVertexBonus.getBonusItems()); + } else { + List tmpList = new ArrayList<>(); + tmpList.add(bdVertexBonus.getBonusItems()); + resultMap.put(bdVertexBonus.getPkVertex(), tmpList); + } + } + } + + return resultMap; + } + +} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java index 877d608e..c82fcfcb 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/base/service/impl/CuMemberServiceImpl.java @@ -9,6 +9,7 @@ import com.hzs.common.domain.member.detail.CuMemberAwards; import com.hzs.common.domain.member.detail.CuMemberGrade; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.bonus.base.mapper.CuMemberMapper; +import com.hzs.common.domain.vertex.BdVertexBonus; import org.springframework.stereotype.Service; import java.util.*; @@ -87,4 +88,8 @@ public class CuMemberServiceImpl extends ServiceImpl i return baseMapper.queryCuMemberShareTotal(pkCountry); } + @Override + public List listVertexBonus(Long pkMember) { + return baseMapper.listVertexBonus(pkMember); + } } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java index 5f611beb..e12d48ae 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java @@ -2,15 +2,18 @@ package com.hzs.bonus.bonus.controller.api; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import com.hzs.bonus.base.service.ICuMemberService; import com.hzs.bonus.bonus.param.BonusParam; import com.hzs.bonus.bonus.service.ICuMemberBonusService; import com.hzs.bonus.bonus.vo.*; +import com.hzs.common.core.enums.EBonusItems; import com.hzs.common.core.enums.EGrantStatus; import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.core.utils.DateUtils; import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.page.TableDataInfo; import com.hzs.common.domain.member.ext.CuMemberBonusExt; +import com.hzs.common.domain.vertex.BdVertexBonus; import com.hzs.common.security.utils.SecurityUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -21,10 +24,7 @@ import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.util.*; @RestController @RequestMapping("/api/bonus") @@ -33,6 +33,8 @@ public class ApiCuMemberBonusController extends BaseController { @Autowired private ICuMemberBonusService iCuMemberBonusService; + @Autowired + private ICuMemberService iCuMemberService; /** * 新零售实时奖金:查询会员实时奖金,当日的奖金 @@ -45,6 +47,9 @@ public class ApiCuMemberBonusController extends BaseController { bonusParam.setEndDate(DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.currentDate())); bonusParam.setGrantStatus(EGrantStatus.SETTLED.getValue()); + // 控制复购级差收益的返回 + final boolean rangeIncomeFlag = this.checkRangeIncome(); + List cuMemberBonusList = iCuMemberBonusService.queryMemberSecondBonusVoByCondition(bonusParam); List memberBonusVOList = new ArrayList<>(); cuMemberBonusList.forEach(cuMemberBonus -> { @@ -52,10 +57,17 @@ public class ApiCuMemberBonusController extends BaseController { MemberBonusVO memberBonusVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusVO.class, "settleDate"); memberBonusVO.setServiceSpend(BigDecimal.ZERO); memberBonusVO.setSettleDate(DateUtils.currentDate()); - BigDecimal serviceSpend = ComputeUtil.computeSubtract(ComputeUtil.computeAddNum(cuMemberBonus.getRetailRangeIncome(), cuMemberBonus.getRetailSameLevelIncome(), - cuMemberBonus.getRetailAreaIncome()), - cuMemberBonus.getRetailRealSubtotal()); + BigDecimal serviceSpend = ComputeUtil.computeSubtract( + ComputeUtil.computeAddNum(cuMemberBonus.getRetailRangeIncome(), cuMemberBonus.getRetailSameLevelIncome(), + cuMemberBonus.getRetailAreaIncome()), cuMemberBonus.getRetailRealSubtotal() + ); memberBonusVO.setBackPoints(serviceSpend); + + if (!rangeIncomeFlag) { + // 没有复购级差 + memberBonusVO.setRepurRangeIncome(null); + } + memberBonusVOList.add(memberBonusVO); } }); @@ -63,7 +75,7 @@ public class ApiCuMemberBonusController extends BaseController { } /** - * 新零售实时奖金:查询会员奖金列表 + * 新零售日结奖金:查询会员奖金列表 */ @PostMapping("/query-bonus-first") public TableDataInfo listFirstRepurchaseBonus(@RequestBody BonusParam bonusParam) { @@ -71,17 +83,24 @@ public class ApiCuMemberBonusController extends BaseController { List cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); + // 控制复购级差收益的返回 + final boolean rangeIncomeFlag = this.checkRangeIncome(); + List firstPurchaseVOList = new ArrayList<>(); cuMemberBonusList.forEach(cuMemberBonus -> { MemberBonusFirstPurchaseVO memberBonusFirstPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusFirstPurchaseVO.class, "settleDate"); packageSettleDate(cuMemberBonus, memberBonusFirstPurchaseVO); + if (!rangeIncomeFlag) { + // 没有复购级差 + memberBonusFirstPurchaseVO.setRepurRangeIncome(null); + } firstPurchaseVOList.add(memberBonusFirstPurchaseVO); }); return getDataTable(firstPurchaseVOList); } /** - * 新零售实时奖金:查询会员昨日奖金汇总 + * 新零售日结奖金:查询会员昨日奖金汇总 */ @PostMapping("/query-bonus-total") public TableDataInfo lisBonusTotal(@RequestBody BonusParam bonusParam) { @@ -158,8 +177,24 @@ public class ApiCuMemberBonusController extends BaseController { public TableDataInfo listBonusSource(@RequestBody BonusParam bonusParam) { setBonusParam(bonusParam); startPage(); - TableDataInfo tableDataInfo = iCuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam); - return tableDataInfo; + return iCuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam); + } + + /** + * 校验是否有复购级差 + * + * @return + */ + private boolean checkRangeIncome() { + List vertexBonusList = iCuMemberService.listVertexBonus(SecurityUtils.getUserId()); + if (CollectionUtil.isNotEmpty(vertexBonusList)) { + for (BdVertexBonus bdVertexBonus : vertexBonusList) { + if (EBonusItems.REPURCHASE_RANGE_INCOME.getValue() == bdVertexBonus.getBonusItems()) { + return true; + } + } + } + return false; } } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/manage/CuMemberBonusController.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/manage/CuMemberBonusController.java index 537b858a..7694c77c 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/manage/CuMemberBonusController.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/manage/CuMemberBonusController.java @@ -104,11 +104,7 @@ public class CuMemberBonusController extends BaseController { private List getBonusTotalVoS(List cuMemberBonusList) { List totalVoList = new ArrayList<>(); cuMemberBonusList.forEach(cuMemberBonus -> { - BonusTotalVO bonusTotalVO = BeanUtil.copyProperties(cuMemberBonus, BonusTotalVO.class); - for (String key : CuMemberBonusVO.INCOME_ARRAY) { - ReflectUtils.invokeSetter(bonusTotalVO, key + BonusFieldConstants.INCOME_SUFFIX, ComputeUtil.computeMultiply(ReflectUtils.invokeGetter(cuMemberBonus, key), cuMemberBonus.getOutExchangeRate())); - } - totalVoList.add(bonusTotalVO); + totalVoList.add(BeanUtil.copyProperties(cuMemberBonus, BonusTotalVO.class)); }); return totalVoList; } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusGrantServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusGrantServiceImpl.java index 4720fa98..5f3dae11 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusGrantServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusGrantServiceImpl.java @@ -179,14 +179,9 @@ public class BonusGrantServiceImpl implements IBonusGrantService { // 奖金币(首购+复购+云代+海粉+嗨粉+店铺) packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.BONUS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRealIncomeTotal(), currencyDTO.getOutExchangeRate()), settleDate); // 重销币(商城重消+平台服务费) -// BigDecimal repeat = ComputeUtil.computeAdd(cuMemberBonus.getBackPoints(), cuMemberBonus.getServiceSpend()); packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPEAT.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getBackPoints(), currencyDTO.getOutExchangeRate()), settleDate); // 复购券 packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPURCHASE.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRepurCouponSubtotal(), currencyDTO.getOutExchangeRate()), settleDate); - // 环球积分 -// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.GLOBAL_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getGlobalPoints(), currencyDTO.getOutExchangeRate()), settleDate); - // 车奖积分 -// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.CAR_AWARD_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getCarAwardPoints(), currencyDTO.getOutExchangeRate()), settleDate); }); List seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size()); // 新增流水明细,记录奖金明细的发放状态、消费明细 @@ -241,7 +236,6 @@ public class BonusGrantServiceImpl implements IBonusGrantService { // 奖金币(首购+复购+云代+海粉+嗨粉+店铺) packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.BONUS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRealIncomeTotal(), currencyDTO.getOutExchangeRate()), settleDate); // 重销币(商城重消+平台服务费) -// BigDecimal repeat = ComputeUtil.computeAdd(cuMemberBonus.getBackPoints(), cuMemberBonus.getServiceSpend()); packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPEAT.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getBackPoints(), currencyDTO.getOutExchangeRate()), settleDate); // 复购券 packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPURCHASE.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRepurCouponSubtotal(), currencyDTO.getOutExchangeRate()), settleDate); 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 3e8adc81..47fc5629 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 @@ -143,6 +143,23 @@ public abstract class BonusSettleHandle { cuMemberBonusRange.setRemark(remark); } + /** + * 获得 复购极差收益 备注 + * + * @param saOrderExt 订单编号 + * @param cuMemberBonusRange 报单服务费 + * @param sourceMemberRangeExt 提供奖金的人 + * @param targetMemberRangeExt 获得奖金的人 + */ + protected void rangeRepurchaseRetailRemark(SaOrder saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt, + CuMemberRetailRangeExt targetMemberRangeExt) { + String remark = String.format(BonusMsgConstants.RETAIL_REPURCHASE_INCOME, saOrderExt.getOrderCode(), + sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(), + targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), + cuMemberBonusRange.getCalAchieve(), targetMemberRangeExt.getGradeName()); + cuMemberBonusRange.setRemark(remark); + } + protected CuMemberBonus getCuMemberBonus(Integer period, Map cuMemberBonusMap, Long pkMember, Integer incomeStatus, Integer pkCountry, Integer pkRate) { if (cuMemberBonusMap.containsKey(pkMember)) { 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 e0bcb830..2fe299ec 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 @@ -3,6 +3,7 @@ package com.hzs.bonus.bonus.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService; +import com.hzs.bonus.base.service.IBdVertexBonusService; import com.hzs.bonus.base.service.ICuMemberService; import com.hzs.bonus.bonus.vo.BonusRecordDetailVO; import com.hzs.bonus.detail.service.ICuMemberAwardsService; @@ -20,13 +21,12 @@ import com.hzs.common.domain.bonus.BdBonusDeduct; import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; import com.hzs.common.domain.member.bonus.*; -import com.hzs.common.domain.member.detail.CuMemberAwards; -import com.hzs.common.domain.member.detail.CuMemberGrade; -import com.hzs.common.domain.member.detail.CuMemberLevel; -import com.hzs.common.domain.member.detail.CuMemberServiceLog; +import com.hzs.common.domain.member.detail.*; import com.hzs.common.domain.sale.ext.SaOrderExt; +import com.hzs.common.domain.sale.ext.SaOrderItemsExt; import com.hzs.common.domain.sale.ext.SaOrderWaresExt; import com.hzs.common.domain.sale.order.SaOrder; +import com.hzs.common.domain.sale.wares.ext.WaresRangeTmp; import com.hzs.common.domain.system.config.BdAwards; import com.hzs.common.domain.system.config.BdGrade; import com.hzs.member.detail.ICuMemberServiceLogServiceApi; @@ -59,6 +59,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { private ICuMemberService iCuMemberService; @Autowired private IBonusOrderService iBonusOrderService; + @Autowired + private IBdVertexBonusService iBdVertexBonusService; @DubboReference ICuMemberServiceLogServiceApi iCuMemberServiceLogServiceApi; @@ -110,6 +112,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 当期的手动激活的记录列表 Map activateMap = this.getActivateMap(saOrderExt.getPayTime()); + // 查询体系奖项配置 + Map> vertexBonusMap = iBdVertexBonusService.queryVertexBonus(); // 计算自消费奖衔 CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); @@ -176,8 +180,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { cuMemberBonusDetailList.add(cuMemberBonusDetail); } + // TODO 2025.07.04 部分体系单独奖项处理 + if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { + // 复购订单级差数据map(key:订单ID,value:订单明细+级差) + Map> rangeOrderMap = iBonusOrderService.getWaresRange(Collections.singletonList(saOrderExt)); + // 复购订单 + cuMemberBonusRangeList.addAll(this.calculateRepurchaseRangeBonus(saOrderExt, memberRangeExtMap, vertexBonusMap, rangeOrderMap, + bonusConfigDTO, currentPeriod, cuMemberBonusMap)); + } + // 回退会员等级 iCuMemberGradeService.updateCuMemberGrade(secondRangeTableName, saOrderExt.getPkId()); + if (cuMemberGradeList.size() > 0) { // 插入会员等级升级记录 iCuMemberGradeService.insertCuMemberGrade(cuMemberGradeList); @@ -423,18 +437,25 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { * 计算新零售团队的奖金,极差、平级、福利、福利分红、区域 */ void calculateRetailBonusByDay(String settleDate, Map cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, BonusRecordDetailVO bonusRecordDetailVO, - Integer period, Integer yesterdayPeriod, Boolean isSameMonth) { + Integer period, Integer yesterdayPeriod, Boolean isSameMonth, Map> vertexBonusMap) { // 结算期间日期 Date settleStartDate = DateUtils.parseStringToDate(settleDate); // 结算期间日期后一天 Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleStartDate); + // 所有有效订单列表 List retailOrderList = new ArrayList<>(); + // 复购订单列表 + List repurchaseOrderList = new ArrayList<>(); // 新零售订单 List orderList = iBonusOrderService.queryRetailSaOrderByDay(settleStartDate, settleEndDate, null); for (SaOrderExt saOrderExt : orderList) { if (saOrderExt.getDelFlag() == EYesNo.YES.getIntValue()) { retailOrderList.add(saOrderExt); + if (EOrderType.REPURCHASE_ORDER.getValue() == saOrderExt.getOrderType()) { + // 复购订单 + repurchaseOrderList.add(saOrderExt); + } } } @@ -458,6 +479,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { Map activateMap = this.getActivateMap(settleStartDate); if (retailOrderList.size() > 0) { + // 复购订单级差数据map(key:订单ID,value:订单明细+级差) + Map> rangeOrderMap = new HashMap<>(); + if (CollectionUtil.isNotEmpty(repurchaseOrderList)) { + rangeOrderMap = iBonusOrderService.getWaresRange(repurchaseOrderList); + } + Map memberLevelMap = new HashMap<>(); List memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName); memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel)); @@ -488,6 +515,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { List awardsList = bonusConfigDTO.getAwardsList(); awardsList.forEach(bdAwards -> retailAwardsMap.put(bdAwards.getAwardsValue(), bdAwards)); + // 会员转map for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) { if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt); @@ -505,7 +533,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { List cuMemberGradeList = new ArrayList<>(); // 会员奖衔升级记录 List cuMemberAwardsList = new ArrayList<>(); - // 平级收益 + // 平级收益 + 复购级差收益 List cuMemberBonusRangeList = new ArrayList<>(); // 会员奖金明细 List cuMemberBonusDetailList = new ArrayList<>(); @@ -583,7 +611,15 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { if (cuMemberBonusDetail != null) { cuMemberBonusDetailList.add(cuMemberBonusDetail); } + + // TODO 2025.07.04 部分体系单独奖项处理 + if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { + // 复购订单 + cuMemberBonusRangeList.addAll(this.calculateRepurchaseRangeBonus(saOrderExt, memberRangeExtMap, vertexBonusMap, rangeOrderMap, + bonusConfigDTO, period, cuMemberBonusMap)); + } } + if (cuMemberBonusRangeList.size() > 0) { if (bonusRecordDetailVO.getCuMemberBonusRangeList() == null) { bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList); @@ -1447,6 +1483,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } /** + * 团队福利、福利分红等奖金 -- 月奖 + * * @param settleDateStr 结算日期 */ void calculateRetailShareBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO, @@ -2039,4 +2077,111 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { ) )); } + + /** + * 处理复购级差 + */ + private List calculateRepurchaseRangeBonus(SaOrderExt saOrderExt, Map memberRangeExtMap, + Map> vertexBonusMap, Map> rangeOrderMap, + BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap) { + // 直推级差返回数据 + List memberBonusRangeList = new ArrayList<>(); + // 订单会员 + CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); + + List vertexBonusList = vertexBonusMap.get(sourceMemberRangeExt.getPkVertex()); + if (CollectionUtil.isNotEmpty(vertexBonusList)) { + // 存在体系奖项 + for (Integer bonusItems : vertexBonusList) { + if (EBonusItems.REPURCHASE_RANGE_INCOME.getValue() == bonusItems) { + // 复购级差收益(key:会员ID,value:复购级差收益) + Map bonusIncomeMap = new HashMap<>(); + + List saOrderItemsExtList = rangeOrderMap.get(saOrderExt.getPkId()); + for (SaOrderItemsExt saOrderItemsExt : saOrderItemsExtList) { + // 级别值比当前等级高的级差数据列表 + Map itemsRangePriceMap = saOrderItemsExt.getWaresRangeTmpList().stream() + .filter(tmpData -> tmpData.getRangeValue().compareTo(sourceMemberRangeExt.getGradeValue()) > 0) + .collect(Collectors.toMap(WaresRangeTmp::getRangeValue, WaresRangeTmp::getRangePrice)); + + // 临时价格(跟着每一次变动) + BigDecimal tmpPrice = saOrderItemsExt.getPrice(); + // 推荐人 + long pkParent = sourceMemberRangeExt.getPkParent(); + // 计算级差 + while (true) { + // 推荐人 + CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent); + if (null == targetMemberRangeExt) { + break; + } + // 上一级推荐人 + pkParent = targetMemberRangeExt.getPkParent(); + + if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() + || ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() + || targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue() + || targetMemberRangeExt.getGradeValue() == EGrade.START_UP.getValue() + || EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) { + // 停算收益、非正常会员、未激活、等级为顾客、停止收益,直接跳过 + continue; + } + // 当前会员等级值 + int calGradeValue = targetMemberRangeExt.getGradeValue(); + // 当前会员的级差价格 + BigDecimal targetRangePrice = itemsRangePriceMap.get(calGradeValue); + if (targetRangePrice.compareTo(tmpPrice) < 0) { + // 当前级差价格比上一次的低 + // 差价就是级差收益 + BigDecimal bonusIncome; + if (bonusIncomeMap.containsKey(targetMemberRangeExt.getPkMember())) { + bonusIncome = bonusIncomeMap.get(targetMemberRangeExt.getPkMember()).add(tmpPrice.subtract(targetRangePrice)); + } else { + bonusIncome = tmpPrice.subtract(targetRangePrice); + } + bonusIncomeMap.put(targetMemberRangeExt.getPkMember(), bonusIncome); + // 临时价格更新 + tmpPrice = targetRangePrice; + } + + // 最高等级则退出 + if (calGradeValue == EGrade.S_VIP.getValue()) { + break; + } + } + } + + if (bonusIncomeMap.size() > 0) { + for (Long key : bonusIncomeMap.keySet()) { + // 复购级差收益 + BigDecimal rangeBonusIncome = bonusIncomeMap.get(key); + if (rangeBonusIncome.compareTo(BigDecimal.ZERO) > 0) { + CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(key); + // 处理复购级差收益 + CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), + targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); + int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.REPURCHASE_RANGE_INCOME.getValue()); + CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); + cuMemberBonusRange.setCalValue(BigDecimal.ZERO); + cuMemberBonusRange.setCalAchieve(saOrderExt.getOrderAmount()); + cuMemberBonusRange.setPretaxIncome(rangeBonusIncome); + cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); + cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); + cuMemberBonusRange.setPkOrder(saOrderExt.getPkId()); + rangeRepurchaseRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt); + BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); + if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) { + cuMemberBonus.setRepurRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRepurRangeIncome(), cuMemberBonusRange.getPretaxIncome())); + setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange); + } + memberBonusRangeList.add(cuMemberBonusRange); + } + } + } + } + } + } + return memberBonusRangeList; + } + } 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 a2aeb266..4e499148 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 @@ -2,6 +2,7 @@ package com.hzs.bonus.bonus.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService; +import com.hzs.bonus.base.service.IBdVertexBonusService; import com.hzs.bonus.bonus.service.*; import com.hzs.bonus.bonus.vo.BonusRecordDetailVO; import com.hzs.bonus.detail.service.ICuRegionAssessService; @@ -42,48 +43,21 @@ public class BonusSettleServiceImpl implements IBonusSettleService { private ICuMemberSettlePeriodService cuMemberSettlePeriodService; @Autowired private BonusSettleRangeHandle bonusSettleRangeHandle; - + @Autowired private ICuMemberBonusService cuMemberBonusService; - + @Autowired private ICuMemberBonusPushService cuMemberBonusPushService; - + @Autowired private ICuMemberBonusExpandService cuMemberBonusExpandService; - + @Autowired private ICuMemberBonusCoachService cuMemberBonusCoachService; - + @Autowired private ICuMemberBonusDetailService cuMemberBonusDetailService; - + @Autowired private ICuMemberBonusRangeService cuMemberBonusRangeService; - @Autowired - public void setCuMemberBonusPushService(ICuMemberBonusPushService cuMemberBonusPushService) { - this.cuMemberBonusPushService = cuMemberBonusPushService; - } + private IBdVertexBonusService iBdVertexBonusService; - @Autowired - public void setCuMemberBonusExpandService(ICuMemberBonusExpandService cuMemberBonusExpandService) { - this.cuMemberBonusExpandService = cuMemberBonusExpandService; - } - - @Autowired - public void setCuMemberBonusCoachService(ICuMemberBonusCoachService cuMemberBonusCoachService) { - this.cuMemberBonusCoachService = cuMemberBonusCoachService; - } - - @Autowired - public void setCuMemberBonusDetailService(ICuMemberBonusDetailService cuMemberBonusDetailService) { - this.cuMemberBonusDetailService = cuMemberBonusDetailService; - } - - @Autowired - public void setCuMemberBonusRangeService(ICuMemberBonusRangeService cuMemberBonusRangeService) { - this.cuMemberBonusRangeService = cuMemberBonusRangeService; - } - - @Autowired - public void setCuMemberBonusService(ICuMemberBonusService cuMemberBonusService) { - this.cuMemberBonusService = cuMemberBonusService; - } /** * 保存会员奖金 @@ -121,10 +95,12 @@ public class BonusSettleServiceImpl implements IBonusSettleService { BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO(); // 今天和昨天是否同月 Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday)); + // 查询体系奖项配置 + Map> vertexBonusMap = iBdVertexBonusService.queryVertexBonus(); // 计算新零售团队奖金 bonusSettleRangeHandle.calculateRetailBonusByDay(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO, - period, yesterdayPeriod, isSameMonth); + period, yesterdayPeriod, isSameMonth, vertexBonusMap); // new 每月1号,需要计算4个月奖 if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) { @@ -164,7 +140,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService { if (CollectionUtil.isNotEmpty(retailOrderList)) { // 会员奖金map - Map cuMemberBonusMap = new HashMap<>(MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM); + Map cuMemberBonusMap = new HashMap<>(MagicNumberConstants.BATCH_UPDATE_NUM); // 订单数据 SaOrderExt saOrderExt = retailOrderList.get(0); diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java index 635df5f3..71bfba83 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java @@ -162,7 +162,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl cuMemberBonusPushList = cuMemberBonusPushMapper.queryMemberBonusPushByBonusItems(bonusParam); dataTable = getDataTable(cuMemberBonusPushList); cuMemberBonusPushList.forEach(cuMemberBonusPush -> { @@ -381,7 +381,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl cuMemberBonusRangeList = cuMemberBonusRangeMapper.queryMemberBonusRangeByBonusItems(bonusParam); dataTable = getDataTable(cuMemberBonusRangeList); cuMemberBonusRangeList.forEach(cuMemberBonusRange -> { @@ -446,9 +445,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl cuMemberBonusPushList = cuMemberBonusPushMapper.queryMemberBonusPushByBonusItemsFoServer(bonusParam); dataTable = getDataTable(cuMemberBonusPushList); @@ -619,6 +616,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl cuMemberBonusDetailList; /** - * 新零售 - 直推收益、平级收益、福利级差、复购级差 + * 新零售 - 直推收益、平级收益、月度福利级差、月度复购级差、复购级差 */ private List cuMemberBonusRangeList; } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/BonusTotalVO.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/BonusTotalVO.java index 34f197f2..f53789a6 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/BonusTotalVO.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/BonusTotalVO.java @@ -60,13 +60,13 @@ public class BonusTotalVO implements Serializable { /** * 新零售福利级差收益 */ - @Excel(name = "福利级差收益", scale = 2) + @Excel(name = "月度福利级差收益", scale = 2) private BigDecimal retailBenefitRangeIncome; /** * 新零售复购级差收益 */ - @Excel(name = "复购级差收益", scale = 2) + @Excel(name = "月度复购级差收益", scale = 2) private BigDecimal retailMonthRepurchaseIncome; /** @@ -87,18 +87,23 @@ public class BonusTotalVO implements Serializable { @Excel(name = "福利分红加权收益", scale = 2) private BigDecimal retailBenefitIncome; + /** + * 复购级差收益 + */ + @Excel(name = "复购级差收益", scale = 2) + private BigDecimal repurRangeIncome; + /** * 重消收益 */ @Excel(name = "重消收益", scale = 2) - private BigDecimal backPointsOri; + private BigDecimal backPoints; /** * 实发收益总计 */ @Excel(name = "实发收益总计", scale = 2) - private BigDecimal realIncomeTotalOri; - + private BigDecimal realIncomeTotal; /** @@ -154,11 +159,6 @@ public class BonusTotalVO implements Serializable { private BigDecimal repurPushIncomeOri; - /** - * 复购级差收益 - */ - private BigDecimal repurRangeIncomeOri; - /** * 复购拓展收益 */ @@ -267,11 +267,6 @@ public class BonusTotalVO implements Serializable { private BigDecimal repurPushIncome; - /** - * 复购级差收益 - */ - private BigDecimal repurRangeIncome; - /** * 复购拓展收益 */ @@ -287,11 +282,6 @@ public class BonusTotalVO implements Serializable { */ private BigDecimal repurCouponShare; - /** - * 商城重消 - */ - private BigDecimal backPoints; - /** * 平台服务费 */ @@ -337,10 +327,4 @@ public class BonusTotalVO implements Serializable { */ private BigDecimal repurCouponSubtotal; - /** - * 实发收益总计 - */ - private BigDecimal realIncomeTotal; - - } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/CuMemberBonusVO.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/CuMemberBonusVO.java index e021d43a..c9557d1b 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/CuMemberBonusVO.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/CuMemberBonusVO.java @@ -92,7 +92,7 @@ public class CuMemberBonusVO implements Serializable { public static final String[] INCOME_ARRAY = new String[]{ "backPoints", "retailRangeIncome", "retailSameLevelIncome", "retailAreaIncome", "retailBenefitRangeIncome", "retailMonthRepurchaseIncome", "coachIncome", "retailBenefitAvgIncome", - "retailBenefitIncome", "retailRealSubtotal", "realIncomeTotal"}; + "retailBenefitIncome", "retailRealSubtotal", "realIncomeTotal", "repurRangeIncome"}; private BigDecimal retailRangeIncome; @@ -120,14 +120,14 @@ public class CuMemberBonusVO implements Serializable { * 新零售福利级差收益 */ private BigDecimal retailBenefitRangeIncome; - @Excel(name = " 福利级差收益", scale = 2) + @Excel(name = "月度福利级差收益", scale = 2) private BigDecimal retailBenefitRangeIncomeOri; /** * 新零售复购级差收益 */ private BigDecimal retailMonthRepurchaseIncome; - @Excel(name = "复购级差收益", scale = 2) + @Excel(name = "月度复购级差收益", scale = 2) private BigDecimal retailMonthRepurchaseIncomeOri; /** @@ -151,6 +151,13 @@ public class CuMemberBonusVO implements Serializable { @Excel(name = " 福利加权收益", scale = 2) private BigDecimal retailBenefitIncomeOri; + /** + * 复购级差收益 + */ + private BigDecimal repurRangeIncome; + @Excel(name = "复购级差收益", scale = 2) + private BigDecimal repurRangeIncomeOri; + /** * 商城重消 */ diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusFirstPurchaseVO.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusFirstPurchaseVO.java index 65f51744..c73dce04 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusFirstPurchaseVO.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusFirstPurchaseVO.java @@ -55,12 +55,12 @@ public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO { // * 复购拓展收益 // */ // private BigDecimal repurExpandIncome; -// -// /** -// * 复购级差收益 -// */ -// private BigDecimal repurRangeIncome; -// + + /** + * 复购级差收益 + */ + private BigDecimal repurRangeIncome; + // /** // * 复购实发小计 // */ diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusVO.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusVO.java index 0d0e6fd3..e4f01725 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusVO.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/vo/MemberBonusVO.java @@ -160,6 +160,12 @@ public class MemberBonusVO implements Serializable { */ private BigDecimal retailBenefitIncome; + /** + * 复购级差收益 + */ + @BigDecimalFormat("#0.0000") + private BigDecimal repurRangeIncome; + /** * 新零售收益小计 */ diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAssessDetailServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAssessDetailServiceImpl.java index d0c29946..98b07785 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAssessDetailServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAssessDetailServiceImpl.java @@ -71,7 +71,7 @@ public class CuMemberAssessDetailServiceImpl extends ServiceImpl revokeDetailList) { List> handleCutList = cuMemberBonusSettle.handleCutList(revokeDetailList, - MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM); + MagicNumberConstants.BATCH_UPDATE_NUM); handleCutList.forEach(list -> { baseMapper.updateCuMemberAssessDetailByRevoke(list); }); 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 ac0fe4c7..560e63de 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.ext.SaOrderItemsExt; import com.hzs.common.domain.sale.order.SaOrder; import org.apache.ibatis.annotations.Param; @@ -40,4 +41,12 @@ public interface BonusOrderMapper { @Param("endDate") Date endDate, @Param("orderType") List orderType); + /** + * 查询订单商品级差数据 + * + * @param orderList 订单列表 + * @return + */ + List listOrderWaresRange(@Param("orderList") List orderList); + } 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 0b380855..fac56c07 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,10 +1,12 @@ package com.hzs.bonus.order.service; import com.hzs.common.domain.sale.ext.SaOrderExt; +import com.hzs.common.domain.sale.ext.SaOrderItemsExt; import com.hzs.common.domain.sale.order.SaOrder; import java.util.Date; import java.util.List; +import java.util.Map; public interface IBonusOrderService { @@ -30,4 +32,12 @@ public interface IBonusOrderService { */ List listSaOrderByTime(Date startDate, Date endDate, List orderType); + /** + * 查询商品级差数据 + * + * @param orderList + * @return + */ + Map> getWaresRange(List orderList); + } 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 25180756..e08db6ba 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 @@ -1,21 +1,26 @@ package com.hzs.bonus.order.service.impl; import cn.hutool.core.collection.CollectionUtil; +import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle; import com.hzs.bonus.order.mapper.BonusOrderMapper; import com.hzs.bonus.order.service.IBonusOrderService; +import com.hzs.common.core.constant.MagicNumberConstants; import com.hzs.common.domain.sale.ext.SaOrderExt; +import com.hzs.common.domain.sale.ext.SaOrderItemsExt; import com.hzs.common.domain.sale.order.SaOrder; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Date; -import java.util.List; +import java.util.*; @Service public class BonusOrderServiceImpl implements IBonusOrderService { @Resource private BonusOrderMapper bonusOrderMapper; + @Autowired + private CuMemberBonusSettle cuMemberBonusSettle; @Override public List queryRetailSaOrderByDay(Date startDate, Date endDate, String orderCode) { @@ -36,4 +41,26 @@ public class BonusOrderServiceImpl implements IBonusOrderService { return bonusOrderMapper.listSaOrderByTime(startDate, endDate, orderType); } + @Override + public Map> getWaresRange(List orderList) { + Map> resultMap = new HashMap<>(); + + List resultList = new ArrayList<>(); + List> handleCutList = cuMemberBonusSettle.handleCutList(orderList, MagicNumberConstants.BATCH_UPDATE_NUM); + handleCutList.forEach(list -> { + resultList.addAll(bonusOrderMapper.listOrderWaresRange(orderList)); + }); + for (SaOrderItemsExt saOrderItemsExt : resultList) { + if (resultMap.containsKey(saOrderItemsExt.getPkOrder())) { + resultMap.get(saOrderItemsExt.getPkOrder()).add(saOrderItemsExt); + } else { + List tmpList = new ArrayList<>(); + tmpList.add(saOrderItemsExt); + resultMap.put(saOrderItemsExt.getPkOrder(), tmpList); + } + } + + return resultMap; + } + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/mapper/CuMemberSwingNetLogMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/mapper/CuMemberSwingNetLogMapper.java index e3a0f2b4..553d68ea 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/mapper/CuMemberSwingNetLogMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/mapper/CuMemberSwingNetLogMapper.java @@ -1,28 +1,11 @@ package com.hzs.bonus.swing.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.hzs.common.domain.member.achieve.ext.CuMemberAchieveExt; import com.hzs.common.domain.member.swing.CuMemberSwingNetLog; -import org.apache.ibatis.annotations.Param; - -import java.util.List; /** - *

* 会员甩网业绩记录 Mapper 接口 - *

- * - * @author hzs - * @since 2024-03-05 */ public interface CuMemberSwingNetLogMapper extends BaseMapper { - /* - * @description: 更新或修改甩网业绩记录 - * @author: sui q - * @date: 2024/3/5 11:23 - * @param: null null - **/ - void mergeCuMemberSwingNetLogByAchieve(@Param("cuMemberAchieveExtList") List cuMemberAchieveExtList, - @Param("settleTableName") String settleTableName); } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/service/ICuMemberSwingNetLogService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/service/ICuMemberSwingNetLogService.java index 690a63ef..e85d235d 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/service/ICuMemberSwingNetLogService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/service/ICuMemberSwingNetLogService.java @@ -1,26 +1,11 @@ package com.hzs.bonus.swing.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.hzs.common.domain.member.achieve.ext.CuMemberAchieveExt; import com.hzs.common.domain.member.swing.CuMemberSwingNetLog; -import java.util.List; - /** - *

* 会员甩网业绩记录 服务类 - *

- * - * @author hzs - * @since 2024-03-05 */ public interface ICuMemberSwingNetLogService extends IService { - /* - * @description: 更新或修改甩网业绩记录 - * @author: sui q - * @date: 2024/3/5 11:23 - * @param: null null - **/ - void mergeCuMemberSwingNetLogByAchieve(List cuMemberAchieveExtList, String settleTableName); } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/service/impl/CuMemberSwingNetLogServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/service/impl/CuMemberSwingNetLogServiceImpl.java index b5f470fa..68cf63df 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/service/impl/CuMemberSwingNetLogServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/swing/service/impl/CuMemberSwingNetLogServiceImpl.java @@ -3,25 +3,13 @@ package com.hzs.bonus.swing.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.bonus.swing.mapper.CuMemberSwingNetLogMapper; import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService; -import com.hzs.common.domain.member.achieve.ext.CuMemberAchieveExt; import com.hzs.common.domain.member.swing.CuMemberSwingNetLog; import org.springframework.stereotype.Service; -import java.util.List; - /** - *

* 会员甩网业绩记录 服务实现类 - *

- * - * @author hzs - * @since 2024-03-05 */ @Service public class CuMemberSwingNetLogServiceImpl extends ServiceImpl implements ICuMemberSwingNetLogService { - @Override - public void mergeCuMemberSwingNetLogByAchieve(List cuMemberAchieveExtList, String settleTableName) { - baseMapper.mergeCuMemberSwingNetLogByAchieve(cuMemberAchieveExtList, settleTableName); - } } 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 1fa896a8..82e61e73 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 @@ -398,6 +398,7 @@ bw.benefit_avg_ratio, bw.benefit_share_ratio, br.name country_name, + a.pk_vertex, bv.region_vertex_pk_id from ( select * from ${tableName} @@ -694,6 +695,7 @@ a.pk_share_awards, cm.income_status, cm.pay_time, + cm.pk_vertex, nvl(b.pk_rate, bt.pk_id) pk_rate, nvl(cm.is_activate, a.enable_status) enable_status, a.new_box_num, diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/BdVertexBonusMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/BdVertexBonusMapper.xml new file mode 100644 index 00000000..d3d310b1 --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/BdVertexBonusMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml index 9cd6958b..0120eddc 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml @@ -343,4 +343,14 @@ when matched then update set a.pk_settle_grade = b.pk_grade, a.modified_time = sysdate + + + + diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusDetailMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusDetailMapper.xml index c4ace8f4..7dc5b3e3 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusDetailMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusDetailMapper.xml @@ -47,7 +47,6 @@ - @@ -67,7 +66,7 @@ #{item.calType}, #{item.calAchieve, jdbcType=NUMERIC}, #{item.calValue, jdbcType=NUMERIC}, #{item.pretaxIncome, jdbcType=NUMERIC}, #{item.incomeTax, jdbcType=NUMERIC}, #{item.realIncome, jdbcType=NUMERIC}, #{item.remark}, #{item.incomeRatio, jdbcType=NUMERIC}, #{item.incomeDialRatio, jdbcType=NUMERIC}, #{item.orderDialRatio, jdbcType=NUMERIC}, - #{item.pkCountry},#{item.pkCreator}) + #{item.pkCountry}, #{item.pkCreator}) SELECT 1 FROM dual diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusMapper.xml index 7291d327..031b0ec2 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusMapper.xml @@ -84,33 +84,42 @@ merge into cu_member_bonus a - using( - select b.* from bd_bonus_items bt - inner join( - select pk_bonus,pk_bonus_items, sum(pretax_income) pretax_income, - sum(income_tax) income_tax, sum(real_income) real_income from - - cu_member_bonus_detail - cu_member_bonus_range - - where del_flag=0 and pk_order= #{pkOrder} - group by pk_bonus, pk_bonus_items) b - on bt.pk_id = b.pk_bonus_items - where bt.bonus_value = #{bonusValue}) b - on (a.pk_id = b.pk_bonus) - when matched then - update set a.retail_real_subtotal=a.retail_real_subtotal-b.real_income, - a.back_points=a.back_points-b.income_tax, - a.real_income_total=a.real_income_total-b.real_income - - ,a.retail_range_income = a.retail_range_income - b.pretax_income - - - ,a.retail_same_level_income = a.retail_same_level_income - b.pretax_income - - - ,a.retail_area_income = a.retail_area_income - b.pretax_income - + using ( + select b.* from bd_bonus_items bt + inner join ( + select pk_bonus, pk_bonus_items, + sum(pretax_income) pretax_income, + sum(income_tax) income_tax, + sum(real_income) real_income + from + + cu_member_bonus_detail + cu_member_bonus_range + + where del_flag = 0 + and pk_order= #{pkOrder} + group by pk_bonus, pk_bonus_items + ) b + on bt.pk_id = b.pk_bonus_items + where bt.bonus_value = #{bonusValue} + ) b + on (a.pk_id = b.pk_bonus) + when matched then + update set a.retail_real_subtotal = a.retail_real_subtotal - b.real_income, + a.back_points = a.back_points - b.income_tax, + a.real_income_total = a.real_income_total - b.real_income + + ,a.repur_range_income = a.repur_range_income - b.pretax_income + + + ,a.retail_range_income = a.retail_range_income - b.pretax_income + + + ,a.retail_same_level_income = a.retail_same_level_income - b.pretax_income + + + ,a.retail_area_income = a.retail_area_income - b.pretax_income + @@ -178,21 +187,25 @@ using( select pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping, expand_capping,coach_income,share_income,service_income,back_points,service_spend, - pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal, + pur_real_subtotal,repur_push_income, + repur_range_income, + repur_expand_income,repur_real_subtotal, cloud_direct_income,cloud_pur_income,cloud_repur_income,cloud_real_subtotal, repur_coupon,repur_coupon_subtotal,global_points, - car_award_points,hi_fun_income,hai_fun_income,retail_range_income,retail_same_level_income,retail_area_income, - retail_benefit_range_income,retail_benefit_avg_income, - retail_benefit_income,retail_real_subtotal, - maker_direct_income,maker_share_income,maker_real_subtotal,real_income_total, - pk_country,pk_creator,grant_status,income_status from( + car_award_points,hi_fun_income,hai_fun_income, + retail_range_income, retail_same_level_income, retail_area_income, + retail_benefit_range_income, retail_benefit_avg_income, retail_benefit_income, + retail_real_subtotal, maker_direct_income,maker_share_income, maker_real_subtotal, real_income_total, + pk_country, pk_creator, grant_status, income_status + from ( select #{item.pkId} pk_id,#{item.pkMember} pk_member,#{item.period} period,#{item.pkRate} pk_rate, #{item.directIncome} direct_income,#{item.expandIncome} expand_income,#{item.expandNoCapping} expand_no_capping, #{item.expandCapping} expand_capping,#{item.coachIncome} coach_income,#{item.shareIncome} share_income, #{item.serviceIncome} service_income,#{item.backPoints} back_points,#{item.serviceSpend} service_spend, #{item.purRealSubtotal} pur_real_subtotal,#{item.repurPushIncome} repur_push_income, - #{item.repurRangeIncome} repur_range_income,#{item.repurExpandIncome} repur_expand_income, + #{item.repurRangeIncome} repur_range_income, + #{item.repurExpandIncome} repur_expand_income, #{item.repurRealSubtotal} repur_real_subtotal,#{item.cloudDirectIncome} cloud_direct_income, #{item.cloudPurIncome} cloud_pur_income,#{item.cloudRepurIncome} cloud_repur_income, #{item.cloudRealSubtotal} cloud_real_subtotal,#{item.repurCoupon} repur_coupon, @@ -201,11 +214,12 @@ #{item.haiFunIncome} hai_fun_income,#{item.makerDirectIncome} maker_direct_income, #{item.makerShareIncome} maker_share_income,#{item.makerRealSubtotal} maker_real_subtotal, #{item.realIncomeTotal} real_income_total,#{item.pkCountry} pk_country,#{item.pkCreator} pk_creator, - #{item.grantStatus} grant_status,#{item.incomeStatus} income_status, - #{item.retailRangeIncome} retail_range_income,#{item.retailSameLevelIncome} retail_same_level_income, - #{item.retailAreaIncome} retail_area_income,#{item.retailBenefitRangeIncome} retail_benefit_range_income, - #{item.retailBenefitAvgIncome} retail_benefit_avg_income,#{item.retailBenefitIncome} retail_benefit_income, - #{item.retailRealSubtotal} retail_real_subtotal from dual + #{item.grantStatus} grant_status, #{item.incomeStatus} income_status, + #{item.retailRangeIncome} retail_range_income, #{item.retailSameLevelIncome} retail_same_level_income, + #{item.retailAreaIncome} retail_area_income, #{item.retailBenefitRangeIncome} retail_benefit_range_income, + #{item.retailBenefitAvgIncome} retail_benefit_avg_income, #{item.retailBenefitIncome} retail_benefit_income, + #{item.retailRealSubtotal} retail_real_subtotal + from dual ) ) b on (a.pk_member = b.pk_member and a.period = b.period) @@ -216,31 +230,44 @@ a.coach_income=a.coach_income+b.coach_income,a.share_income=a.share_income+b.share_income, a.service_income=a.service_income+b.service_income,a.back_points=a.back_points+b.back_points,a.service_spend=a.service_spend+b.service_spend, a.pur_real_subtotal=a.pur_real_subtotal+b.pur_real_subtotal,a.repur_push_income=a.repur_push_income+b.repur_push_income, - a.repur_range_income=a.repur_range_income+b.repur_range_income,a.repur_expand_income=a.repur_expand_income+b.repur_expand_income, + a.repur_range_income = a.repur_range_income + b.repur_range_income, + a.repur_expand_income=a.repur_expand_income+b.repur_expand_income, a.repur_real_subtotal=a.repur_real_subtotal+b.repur_real_subtotal,a.cloud_direct_income=a.cloud_direct_income+b.cloud_direct_income, a.cloud_pur_income=a.cloud_pur_income+b.cloud_pur_income,a.cloud_repur_income=a.cloud_repur_income+b.cloud_repur_income, a.cloud_real_subtotal=a.cloud_real_subtotal+b.cloud_real_subtotal,a.repur_coupon=a.repur_coupon+b.repur_coupon, a.global_points=a.global_points+b.global_points,a.car_award_points=a.car_award_points+b.car_award_points, a.hi_fun_income=a.hi_fun_income+b.hi_fun_income,a.real_income_total=a.real_income_total+b.real_income_total, - a.retail_range_income=a.retail_range_income+b.retail_range_income,a.retail_same_level_income=a.retail_same_level_income+b.retail_same_level_income, - a.retail_area_income=a.retail_area_income+b.retail_area_income,a.retail_benefit_range_income=a.retail_benefit_range_income+b.retail_benefit_range_income, - a.retail_benefit_avg_income=a.retail_benefit_avg_income+b.retail_benefit_avg_income,a.retail_benefit_income=a.retail_benefit_income+b.retail_benefit_income, - a.retail_real_subtotal=a.retail_real_subtotal+b.retail_real_subtotal + a.retail_range_income = a.retail_range_income + b.retail_range_income, + a.retail_same_level_income = a.retail_same_level_income + b.retail_same_level_income, + a.retail_area_income = a.retail_area_income + b.retail_area_income, + a.retail_benefit_range_income = a.retail_benefit_range_income + b.retail_benefit_range_income, + a.retail_benefit_avg_income = a.retail_benefit_avg_income + b.retail_benefit_avg_income, + a.retail_benefit_income = a.retail_benefit_income + b.retail_benefit_income, + a.retail_real_subtotal = a.retail_real_subtotal + b.retail_real_subtotal when not matched then - insert (pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping, + insert ( + pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping, expand_capping,coach_income,share_income,service_income,back_points,service_spend, - pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal, + pur_real_subtotal,repur_push_income, + repur_range_income, + repur_expand_income,repur_real_subtotal, cloud_direct_income,cloud_pur_income,cloud_repur_income,cloud_real_subtotal, repur_coupon,global_points,car_award_points,hi_fun_income,real_income_total, - pk_country,pk_creator,grant_status,income_status,retail_range_income,retail_same_level_income, - retail_area_income,retail_benefit_range_income,retail_benefit_avg_income,retail_benefit_income,retail_real_subtotal) - values(b.pk_id,b.pk_member,b.period,b.pk_rate,b.direct_income,b.expand_income,b.expand_no_capping, + pk_country,pk_creator,grant_status,income_status, + retail_range_income, retail_same_level_income, retail_area_income, + retail_benefit_range_income, retail_benefit_avg_income, retail_benefit_income, + retail_real_subtotal) + values ( + b.pk_id,b.pk_member,b.period,b.pk_rate,b.direct_income,b.expand_income,b.expand_no_capping, b.expand_capping,b.coach_income,b.share_income,b.service_income,b.back_points,b.service_spend, - b.pur_real_subtotal,b.repur_push_income,b.repur_range_income,b.repur_expand_income,b.repur_real_subtotal, + b.pur_real_subtotal,b.repur_push_income, + b.repur_range_income, + b.repur_expand_income,b.repur_real_subtotal, b.cloud_direct_income,b.cloud_pur_income,b.cloud_repur_income,b.cloud_real_subtotal, b.repur_coupon,b.global_points,b.car_award_points,b.hi_fun_income,b.real_income_total, - b.pk_country,b.pk_creator,b.grant_status,b.income_status,b.retail_range_income,b.retail_same_level_income, - b.retail_area_income,b.retail_benefit_range_income,b.retail_benefit_avg_income,b.retail_benefit_income, + b.pk_country,b.pk_creator,b.grant_status,b.income_status, + b.retail_range_income, b.retail_same_level_income, b.retail_area_income, + b.retail_benefit_range_income, b.retail_benefit_avg_income, b.retail_benefit_income, b.retail_real_subtotal) @@ -257,15 +284,14 @@ cb.service_spend, cb.pur_real_subtotal, cb.repur_push_income, - cb.repur_range_income, cb.repur_expand_income, cb.repur_real_subtotal, cb.repur_coupon, cb.repur_coupon_share, cb.repur_coupon_subtotal, cb.store_income, - cb.global_points, - cb.car_award_points, + cb.global_points, cb.car_award_points, + cb.repur_range_income, cb.retail_range_income, cb.retail_same_level_income, cb.retail_area_income, @@ -298,10 +324,11 @@ bv.vertex_name, ct.team_name, cb.period,cp.settle_date,cb.direct_income,cb.expand_income,cb.expand_no_capping, cb.expand_capping,cb.share_income,cb.service_income,cb.back_points,cb.service_spend, - cb.pur_real_subtotal,cb.repur_push_income,cb.repur_range_income,cb.repur_expand_income,cb.repur_real_subtotal, + cb.pur_real_subtotal,cb.repur_push_income,cb.repur_expand_income,cb.repur_real_subtotal, cb.repur_coupon,cb.repur_coupon_share,cb.repur_coupon_subtotal,cb.store_income, cb.global_points,cb.car_award_points,cb.pk_rate,bc.out_exchange_rate, cb.coach_income, + cb.repur_range_income, cb.retail_range_income, cb.retail_same_level_income, cb.retail_area_income, cb.retail_benefit_range_income, cb.retail_month_repurchase_income, cb.retail_benefit_avg_income, cb.retail_benefit_income,cb.retail_real_subtotal, @@ -392,7 +419,6 @@ nvl(sum(cb.service_spend),0) service_spend, nvl(sum(cb.pur_real_subtotal),0) pur_real_subtotal, nvl(sum(cb.repur_push_income),0) repur_push_income, - nvl(sum(cb.repur_range_income),0) repur_range_income, nvl(sum(cb.repur_expand_income),0) repur_expand_income, nvl(sum(cb.repur_real_subtotal),0) repur_real_subtotal, nvl(sum(cb.repur_coupon),0) repur_coupon, @@ -402,6 +428,7 @@ nvl(sum(cb.global_points),0) global_points, nvl(sum(cb.car_award_points),0) car_award_points, bc.out_exchange_rate, + nvl(sum(cb.repur_range_income),0) repur_range_income, nvl(sum(cb.retail_range_income),0) retail_range_income, nvl(sum(cb.retail_same_level_income),0) retail_same_level_income, nvl(sum(cb.retail_area_income),0) retail_area_income, @@ -487,11 +514,12 @@ sum(cb.share_income) share_income, sum(cb.service_spend) service_spend, sum(cb.service_income) service_income, sum(cb.back_points) back_points, sum(cb.pur_real_subtotal) pur_real_subtotal, - sum(cb.repur_push_income) repur_push_income, sum(cb.repur_range_income) repur_range_income, + sum(cb.repur_push_income) repur_push_income, sum(cb.repur_expand_income) repur_expand_income, sum(cb.repur_real_subtotal) repur_real_subtotal, sum(cb.repur_coupon) repur_coupon, sum(repur_coupon_share) repur_coupon_share, sum(cb.repur_coupon_subtotal) repur_coupon_subtotal, sum(cb.global_points) global_points, sum(cb.car_award_points) car_award_points, + sum(cb.repur_range_income) repur_range_income, sum(cb.retail_range_income) retail_range_income, sum(cb.retail_same_level_income) retail_same_level_income, sum(cb.retail_area_income) retail_area_income, diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml index b9e09a19..90d250af 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/order/BonusOrderMapper.xml @@ -85,7 +85,6 @@ - @@ -329,4 +328,69 @@ and #{endDate} > so.pay_time + + + + + + + + + + + + + + + + + + diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/swing/CuMemberSwingNetLogMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/swing/CuMemberSwingNetLogMapper.xml index 61c20807..91ce7572 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/swing/CuMemberSwingNetLogMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/swing/CuMemberSwingNetLogMapper.xml @@ -2,58 +2,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - merge into cu_member_swing_net_log a - using ( - select x.*,(x.net_first_achieve+x.net_repurchase_achieve) net_real_achieve, - y.a_sum_pv,y.b_sum_pv,y.a_sum_real_pv,y.b_sum_real_pv,y.rep_a_new_pv rep_a_sum_pv,y.rep_b_new_pv rep_b_sum_pv,'100000000' pk_creator from( - select pk_member,place_dept,period,pk_country,sum(net_first_achieve) net_first_achieve, - sum(net_repurchase_achieve) net_repurchase_achieve from( - - select - #{item.pkMember} pk_member,#{item.placeDept} place_dept,#{item.period} period, - #{item.netFirstAchieve} net_first_achieve,#{item.netRepurchaseAchieve} net_repurchase_achieve, - #{item.pkCountry} pk_country from dual - ) - group by pk_member,place_dept,period,pk_country) x - inner join ${settleTableName} y - on x.pk_member=y.pk_member - ) b - on (a.pk_member=b.pk_member and a.period=b.period and a.place_dept=b.place_dept) - when matched then - update set a.net_first_achieve=b.net_first_achieve,a.net_repurchase_achieve=b.net_repurchase_achieve, - a.net_real_achieve=b.net_real_achieve,a.a_sum_pv=b.a_sum_pv,a.b_sum_pv=b.b_sum_pv, - a.a_sum_real_pv=b.a_sum_real_pv,a.b_sum_real_pv=b.b_sum_real_pv, - a.rep_a_sum_pv=b.rep_a_sum_pv,a.rep_b_sum_pv=b.rep_b_sum_pv,modified_time=sysdate - when not matched then - insert - (PK_ID,pk_member,period,place_dept,net_first_achieve,net_repurchase_achieve,net_real_achieve, - a_sum_pv,b_sum_pv,a_sum_real_pv,b_sum_real_pv,rep_a_sum_pv,rep_b_sum_pv,pk_creator,pk_country) - values (CU_MEMBER_SWING_NET_LOG_SEQ.NEXTVAL,b.pk_member,b.period,b.place_dept,b.net_first_achieve, - b.net_repurchase_achieve,b.net_real_achieve,b.a_sum_pv,b.b_sum_pv,b.a_sum_real_pv,b.b_sum_real_pv, - b.rep_a_sum_pv,b.rep_b_sum_pv,b.pk_creator,b.pk_country) - - diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/statis/service/impl/CuBonusStatisServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/statis/service/impl/CuBonusStatisServiceImpl.java index d1ac23bc..c222904f 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/statis/service/impl/CuBonusStatisServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/statis/service/impl/CuBonusStatisServiceImpl.java @@ -197,23 +197,6 @@ public class CuBonusStatisServiceImpl extends ServiceImpl waresRangeTmpList; + } diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/wares/BdWaresRange.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/wares/BdWaresRange.java index 24aa33a4..d41f560d 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/wares/BdWaresRange.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/wares/BdWaresRange.java @@ -12,12 +12,7 @@ import lombok.experimental.Accessors; import java.math.BigDecimal; /** - *

* 极差明细表 - *

- * - * @author hzs - * @since 2022-09-09 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/wares/ext/WaresRangeTmp.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/wares/ext/WaresRangeTmp.java new file mode 100644 index 00000000..07ffb509 --- /dev/null +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/wares/ext/WaresRangeTmp.java @@ -0,0 +1,23 @@ +package com.hzs.common.domain.sale.wares.ext; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 极差明细临时实体 + */ +@Data +public class WaresRangeTmp { + + /** + * 价格 + */ + private BigDecimal rangePrice; + + /** + * 级别值 + */ + private Integer rangeValue; + +} diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/vertex/BdVertex.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/vertex/BdVertex.java index 970dbc19..3e9b5e5e 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/vertex/BdVertex.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/vertex/BdVertex.java @@ -10,12 +10,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** - *

* 体系配置 - *

- * - * @author hzs - * @since 2022-10-31 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/vertex/BdVertexBonus.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/vertex/BdVertexBonus.java new file mode 100644 index 00000000..62f5bec5 --- /dev/null +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/vertex/BdVertexBonus.java @@ -0,0 +1,40 @@ +package com.hzs.common.domain.vertex; + +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 体系奖金配置(记录哪个体系走特殊奖金) + */ +@Data +@Accessors(chain = true) +@KeySequence("BD_VERTEX_BONUS_SEQ") +@TableName("BD_VERTEX_BONUS") +public class BdVertexBonus { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId("PK_ID") + private Integer pkId; + + /** + * 体系ID + */ + @TableField("PK_VERTEX") + private Long pkVertex; + + /** + * 类型(8=复购级差) -- 使用 EBonusItems 枚举 + */ + @TableField("BONUS_ITEMS") + private Integer bonusItems; + + +} diff --git a/code-util/src/test/java/com/CodeGenerator.java b/code-util/src/test/java/com/CodeGenerator.java index b730b7b2..085d10fd 100644 --- a/code-util/src/test/java/com/CodeGenerator.java +++ b/code-util/src/test/java/com/CodeGenerator.java @@ -20,7 +20,7 @@ public class CodeGenerator { // 模块名称(包名) String moduleName = "com.hzs.common.domain"; // 表名 - String[] tables = {"SA_TICKET"}; + String[] tables = {"BD_VERTEX_SYSTEM"}; // 生成实体是否继承统一父类 boolean superBool = true; @@ -32,7 +32,7 @@ public class CodeGenerator { // 输出目录 globalConfig.setOutputDir(projectPath + "/code-util/src/main/java") // 作者 - .setAuthor("hzs") + .setAuthor("bd") // 时间使用Date .setDateType(DateType.ONLY_DATE) // // 生成实体后缀追加 Entity @@ -48,10 +48,10 @@ public class CodeGenerator { // 数据源配置 DataSourceConfig dataSourceConfig = new DataSourceConfig(); // dsc.setSchemaName("public"); - dataSourceConfig.setUrl("jdbc:oracle:thin:@39.107.153.159:1521/orcl") + dataSourceConfig.setUrl("jdbc:oracle:thin:@101.201.51.180:1521/orcl") .setDriverName("oracle.jdbc.driver.OracleDriver") - .setUsername("hzs_retail") - .setPassword("123456") + .setUsername("retail") + .setPassword("pwRetailTest180") .setDbType(DbType.ORACLE); mpg.setDataSource(dataSourceConfig);