diff --git a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusConfigDTO.java b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusConfigDTO.java index 5219c3bd..9b7609f0 100644 --- a/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusConfigDTO.java +++ b/bd-api/bd-api-system/src/main/java/com/hzs/system/config/dto/BonusConfigDTO.java @@ -31,6 +31,11 @@ public class BonusConfigDTO implements Serializable { */ private Map bonusDirectDtoMap; + /** + * 等级列表 + */ + private List gradeList; + /** * 奖衔列表 */ 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 8fc7539b..a4b70904 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 @@ -121,6 +121,17 @@ public abstract class BonusSettleHandle { cuMemberBonusRange.setRemark(remark); } + /** + * 获得 赠送积分的备注 + */ + protected void giftPointRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail, + CuMemberRetailRangeExt targetMemberRangeExt) { + String remark = String.format(BonusMsgConstants.GIFT_POINT, saOrderExt.getOrderCode(), + targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), + cuMemberBonusDetail.getRealIncome()); + cuMemberBonusDetail.setRemark(remark); + } + public 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 18756d4f..671ce77c 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 @@ -11,6 +11,7 @@ import com.hzs.bonus.bonus.service.ICuMemberBonusStageService; import com.hzs.bonus.bonus.vo.BonusRecordDetailVO; import com.hzs.bonus.constant.BonusConstants; import com.hzs.bonus.detail.service.ICuMemberAwardsService; +import com.hzs.bonus.detail.service.ICuMemberGradeService; import com.hzs.bonus.order.service.IBonusOrderService; import com.hzs.common.core.constant.MagicNumberConstants; import com.hzs.common.core.constant.RetailConstants; @@ -26,6 +27,7 @@ import com.hzs.common.domain.member.detail.*; 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.BdGrade; import com.hzs.system.config.dto.BonusConfigDTO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -53,6 +55,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { @Autowired private ICuMemberAwardsService iCuMemberAwardsService; @Autowired + private ICuMemberGradeService iCuMemberGradeService; + @Autowired private ICuMemberService iCuMemberService; @Autowired private IBonusOrderService iBonusOrderService; @@ -303,11 +307,24 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(rangeTableName, yesterdayRangeTableName, isSameMonth); // 初始化结算明细数据(昨天数据更新到今天数据) iCuMemberRetailRangeService.mergeMemberRetailRangeDetailByYesterday(rangeDetailTableName, yesterdayRangeDetailTableName, true); + // 更新会员手动升级 + iCuMemberGradeService.updateCuMemberManualGrade(rangeTableName, period); // 升阶段点位列表 List stageList = new ArrayList<>(); if (orderList.size() > 0) { + // 会员购买升级记录 + Map memberLevelMap = new HashMap<>(); + List memberLevelList = iCuMemberGradeService.queryCuMemberLevel(settleStartDate, settleEndDate); + memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel)); + // 等级map(key:等级ID,value:等级对象) + Map gradeIdMap = new HashMap<>(); + List gradeList = bonusConfigDTO.getGradeList(); + for (BdGrade bdGrade : gradeList) { + gradeIdMap.put(bdGrade.getPkId(), bdGrade); + } + // 奖衔 Map awardsMap = new HashMap<>(); List awardsList = bonusConfigDTO.getAwardsList(); @@ -319,6 +336,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { List cuMemberBonusRangeList = new ArrayList<>(); // 阶段收益 List cuMemberBonusStageList = new ArrayList<>(); + // 赠品积分 + List cuMemberBonusDetailList = new ArrayList<>(); // 更新血缘上个人、团队累计业绩,用于处理奖衔 Map memberAchieveHashMap = new HashMap<>(); @@ -380,13 +399,31 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period, memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName)); + // 领导级差收益、平级收益 -- 来源PV + this.calculateRetailRangeBonus(cuMemberBonusRangeList, memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, + awardsMap, saOrderExt, sourceMember); + // 2025.10.27需求调整,去掉直推收益 // // 直推收益 -- 来源订单金额,直推拿业绩的10% // this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, sourceMember, saOrderExt, // bonusConfigDTO, period, cuMemberBonusMap); - // 领导级差收益、平级收益 -- 来源PV - this.calculateRetailRangeBonus(cuMemberBonusRangeList, memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, - awardsMap, saOrderExt, sourceMember); + + // 2025.10.27需求调整,订单满指定PV对应给指定赠品积分 + this.calculateGiftPoint(memberRangeExtMap, saOrderExt, cuMemberBonusMap, cuMemberBonusDetailList, bonusConfigDTO, period); + + // 订单存在升级记录 + if (memberLevelMap.containsKey(saOrderExt.getPkId())) { + CuMemberLevel cuMemberLevel = memberLevelMap.get(saOrderExt.getPkId()); + if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) { + BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel()); + if (bdGrade.getGradeValue() > sourceMember.getGradeValue()) { + sourceMember.setPkGrade(bdGrade.getPkId()); + sourceMember.setGradeValue(bdGrade.getGradeValue()); + sourceMember.setGradeName(bdGrade.getGradeName()); + } + } + } + } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { // 商城专区 sourceMember.setRepConsumeNewPv(sourceMember.getRepConsumeNewPv().add(orderAchieve)); @@ -445,6 +482,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { if (cuMemberBonusStageList.size() > 0) { bonusRecordDetailVO.setCuMemberBonusStageList(cuMemberBonusStageList); } + if (cuMemberBonusDetailList.size() > 0) { + bonusRecordDetailVO.setCuMemberBonusDetailList(cuMemberBonusDetailList); + } // 更新日结数据 iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap); // 更新日结明细数据 @@ -607,6 +647,28 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { return cuMemberAwards; } + private CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt, + CuMemberBonus cuMemberBonus, Integer pkBonusItems) { + CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder() + .pkBonus(cuMemberBonus.getPkId()) + .pkOrder(saOrderExt.getPkId()) + .pkBonusItems(pkBonusItems) + .incomeStatus(targetMemberRangeExt.getIncomeStatus()) + .calType(ECalType.VALUE.getValue()) + .calAchieve(saOrderExt.getOrderAchieve()) + .calValue(BigDecimal.ZERO) + .pretaxIncome(BigDecimal.ZERO) + .incomeTax(BigDecimal.ZERO) + .realIncome(BigDecimal.ZERO) + .incomeRatio(BigDecimal.ZERO) + .incomeDialRatio(BigDecimal.ZERO) + .orderDialRatio(BigDecimal.ZERO) + .build(); + cuMemberBonusDetail.setPkCountry(targetMemberRangeExt.getPkSettleCountry()); + cuMemberBonusDetail.setPkCreator(MagicNumberConstants.PK_ADMIN); + return cuMemberBonusDetail; + } + /** * 计算直推收益 -- 精品专区 */ @@ -753,13 +815,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { // 精品专区按订单金额计算 -- 2025.10.13精品专区改为按业绩处理 - BigDecimal orderAmount = saOrderExt.getOrderAchieve(); + BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); // 订单金额除50取整,为新増点位数量 - newPointInt = orderAmount.divide(RetailConstants.POINT_VAL, 0, RoundingMode.DOWN).intValue(); - if (orderAmount.compareTo(BonusConstants.GIFT_TWO_AMOUNT) >= 0 && sourceMember.getGiftPoint() < 2) { + newPointInt = orderAchieve.divide(RetailConstants.POINT_VAL, 0, RoundingMode.DOWN).intValue(); + if (orderAchieve.compareTo(BonusConstants.GIFT_TWO_AMOUNT) >= 0 && sourceMember.getGiftPoint() < 2) { // 首次订单金额大于等于2万,每个点位完成三阶段赠送2个点位 sourceMember.setGiftPoint(2); - } else if (orderAmount.compareTo(BonusConstants.GIFT_ONE_AMOUNT) >= 0 && sourceMember.getGiftPoint() < 1) { + } else if (orderAchieve.compareTo(BonusConstants.GIFT_ONE_AMOUNT) >= 0 && sourceMember.getGiftPoint() < 1) { // 首次订单金额大于等于1万,每个点位完成三阶段赠送1个点位 sourceMember.setGiftPoint(1); } @@ -1359,5 +1421,63 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } + /** + * 计算赠品积分 + */ + private void calculateGiftPoint(Map memberRangeExtMap, SaOrderExt saOrderExt, + Map cuMemberBonusMap, List cuMemberBonusDetailList, + BonusConfigDTO bonusConfigDTO, Integer period) { + // 订单业绩 + BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); + // 一次性消费拿赠品积分 + CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember()); + // 推荐会员消费拿赠品积分 + CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(saOrderExt.getPkReference()); + + // 赠送积分 + BigDecimal giftPoint = BigDecimal.ZERO; + // 推荐赠送积分 + BigDecimal targetGiftPoint = BigDecimal.ZERO; + + if (orderAchieve.compareTo(BonusConstants.GIFT_TWO_AMOUNT) >= 0) { + // 订单业绩大于等于2万 + giftPoint = BonusConstants.GIFT_TWO_POINT; + targetGiftPoint = BonusConstants.TARGET_GIFT_TWO_POINT; + } else if (orderAchieve.compareTo(BonusConstants.GIFT_ONE_AMOUNT) >= 0) { + // 订单业绩大于等于1万 + giftPoint = BonusConstants.GIFT_ONE_POINT; + targetGiftPoint = BonusConstants.TARGET_GIFT_ONE_POINT; + } + + if (giftPoint.compareTo(BigDecimal.ZERO) > 0 && null != sourceMember) { + CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, sourceMember.getPkMember(), + sourceMember.getIncomeStatus(), sourceMember.getPkSettleCountry(), sourceMember.getPkRate() == null ? saOrderExt.getPkRate() : sourceMember.getPkRate()); + int pkBonusItems = getPkBonusItems(bonusConfigDTO, sourceMember.getPkSettleCountry(), EBonusItems.RANGE_INCOME.getValue()); + CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, sourceMember, cuMemberBonus, pkBonusItems); + cuMemberBonusDetail.setPretaxIncome(giftPoint); + setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); + giftPointRemark(saOrderExt, cuMemberBonusDetail, sourceMember); + if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { + cuMemberBonus.setBackPoints(ComputeUtil.computeAdd(cuMemberBonus.getBackPoints(), giftPoint)); + } + cuMemberBonusDetailList.add(cuMemberBonusDetail); + } + if (targetGiftPoint.compareTo(BigDecimal.ZERO) > 0 && null != targetMember && targetMember.getGradeValue() >= EGrade.HAI_FAN.getValue()) { + // 银卡 或 金卡会员推荐才有奖励 + CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMember.getPkMember(), + targetMember.getIncomeStatus(), targetMember.getPkSettleCountry(), targetMember.getPkRate() == null ? saOrderExt.getPkRate() : targetMember.getPkRate()); + int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMember.getPkSettleCountry(), EBonusItems.RANGE_INCOME.getValue()); + CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMember, cuMemberBonus, pkBonusItems); + cuMemberBonusDetail.setPretaxIncome(giftPoint); + setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); + giftPointRemark(saOrderExt, cuMemberBonusDetail, targetMember); + if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) { + cuMemberBonus.setBackPoints(ComputeUtil.computeAdd(cuMemberBonus.getBackPoints(), giftPoint)); + } + cuMemberBonusDetailList.add(cuMemberBonusDetail); + } + + + } } 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 a35a1bb2..bbd78dca 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 @@ -221,6 +221,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService { iCuMemberBonusPushService.deleteCuMemberBonusPush(period); iCuMemberBonusStageService.deleteCuMemberBonusStage(period); iCuMemberBonusRangeService.deleteCuMemberBonusRange(period); + iCuMemberBonusDetailService.deleteCuMemberBonusDetail(period); iCuMemberBonusService.deleteCuMemberBonus(period); if (cuMemberBonusMap.size() == 0) { return; @@ -230,6 +231,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService { List cuMemberBonusPushList = bonusRecordDetailVO.getCuMemberBonusPushList(); List cuMemberBonusRangeList = bonusRecordDetailVO.getCuMemberBonusRangeList(); List cuMemberBonusStageList = bonusRecordDetailVO.getCuMemberBonusStageList(); + List cuMemberBonusDetailList = bonusRecordDetailVO.getCuMemberBonusDetailList(); if (cuMemberBonusPushList != null && cuMemberBonusPushList.size() > 0) { cuMemberBonusPushList.forEach(cuMemberBonusPush -> cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId())); @@ -242,12 +244,17 @@ public class BonusSettleServiceImpl implements IBonusSettleService { cuMemberBonusStageList.forEach(cuMemberBonusStage -> cuMemberBonusStage.setPkBonus(cuMemberBonusMap.get(cuMemberBonusStage.getPkBonus()).getPkId())); } + if (cuMemberBonusDetailList != null && cuMemberBonusDetailList.size() > 0) { + cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> + cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId())); + } // 插入奖金主表 iCuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList); Set memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period); iCuMemberBonusPushService.batchInsertCuMemberBonusPush(cuMemberBonusPushList, memberIdSet); iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet); iCuMemberBonusStageService.batchInsertCuMemberBonusStage(cuMemberBonusStageList, memberIdSet); + iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet); } private List setCuMemberBonusSeq(String settleDate, Map cuMemberBonusMap) { diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/constant/BonusConstants.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/constant/BonusConstants.java index 552b0b50..99b0f217 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/constant/BonusConstants.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/constant/BonusConstants.java @@ -40,6 +40,15 @@ public class BonusConstants { */ public static final BigDecimal GIFT_ONE_POINT = new BigDecimal("2000"); + /** + * 推荐2万业绩会员赠送积分 + */ + public static final BigDecimal TARGET_GIFT_TWO_POINT = new BigDecimal("2000"); + /** + * 推荐1万业绩会员赠送积分 + */ + public static final BigDecimal TARGET_GIFT_ONE_POINT = new BigDecimal("1000"); + /** * 一阶段奖金 -- 满14,发35 */ diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberGradeMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberGradeMapper.java new file mode 100644 index 00000000..e411356a --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberGradeMapper.java @@ -0,0 +1,28 @@ +package com.hzs.bonus.detail.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.hzs.common.domain.member.detail.CuMemberGrade; +import com.hzs.common.domain.member.detail.CuMemberLevel; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * 会员信息-等级升级记录 Mapper 接口 + */ +public interface CuMemberGradeMapper extends BaseMapper { + + /** + * 更新会员手动升级 + */ + void updateCuMemberManualGrade(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period); + + /** + * 查询会员升级记录 + */ + List queryCuMemberLevel(@Param("startDate") Date startDate, + @Param("endDate") Date endDate, + @Param("upType") Integer upType); + +} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberGradeService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberGradeService.java new file mode 100644 index 00000000..81c3bee8 --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberGradeService.java @@ -0,0 +1,25 @@ +package com.hzs.bonus.detail.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hzs.common.domain.member.detail.CuMemberGrade; +import com.hzs.common.domain.member.detail.CuMemberLevel; + +import java.util.Date; +import java.util.List; + +/** + * 会员信息-等级升级记录 服务类 + */ +public interface ICuMemberGradeService extends IService { + + /** + * 更新会员手动升级 + */ + void updateCuMemberManualGrade(String rangeTableName, Integer period); + + /** + * 回退极差奖衔,每日重新结算,先把等级回退到前一天 + */ + List queryCuMemberLevel(Date startDate, Date endDate); + +} diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberGradeServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberGradeServiceImpl.java new file mode 100644 index 00000000..3ab76603 --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberGradeServiceImpl.java @@ -0,0 +1,32 @@ +package com.hzs.bonus.detail.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hzs.bonus.detail.mapper.CuMemberGradeMapper; +import com.hzs.bonus.detail.service.ICuMemberGradeService; +import com.hzs.common.core.enums.EUpgradeType; +import com.hzs.common.domain.member.detail.CuMemberGrade; +import com.hzs.common.domain.member.detail.CuMemberLevel; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * 会员信息-等级升级记录 服务实现类 + */ +@Service +public class CuMemberGradeServiceImpl extends ServiceImpl implements ICuMemberGradeService { + + @Override + public void updateCuMemberManualGrade(String rangeTableName, Integer period) { + // 根据手动升级记录,更新日结表 + baseMapper.updateCuMemberManualGrade(rangeTableName, period); + } + + @Override + public List queryCuMemberLevel(Date startDate, Date endDate) { + // 购买升级记录列表 + return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.BUY_UPGRADE.getValue()); + } + +} 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 7a496ddb..817d539e 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 @@ -58,6 +58,7 @@ + @@ -141,252 +142,252 @@ insert into ${detailTableName} select t.pk_member, - t.child_node, - cm.pk_parent, - t.stage, - t.stage_status, - t.stage_date, - t.point_member_11, - t.point_11, - t.point_member_12, - t.point_12, - t.point_member_21, - t.point_21, - t.point_member_22, - t.point_22, - t.point_member_23, - t.point_23, - t.point_member_24, - t.point_24, - t.point_member_31, - t.point_31, - t.point_member_32, - t.point_32, - t.point_member_33, - t.point_33, - t.point_member_34, - t.point_34, - t.point_member_35, - t.point_35, - t.point_member_36, - t.point_36, - t.point_member_37, - t.point_37, - t.point_member_38, - t.point_38, - t.point_type, - t.point_gift, - t.creation_time, - t.point_member_first, - t.point_first, - t.point_member_second, - t.point_second, - t.point_member_third, - t.point_third, - t.third_bonus_1, - t.third_bonus_2, - t.third_bonus_3, - t.stage_sort + t.child_node, + cm.pk_parent, + t.stage, + t.stage_status, + t.stage_date, + t.point_member_11, + t.point_11, + t.point_member_12, + t.point_12, + t.point_member_21, + t.point_21, + t.point_member_22, + t.point_22, + t.point_member_23, + t.point_23, + t.point_member_24, + t.point_24, + t.point_member_31, + t.point_31, + t.point_member_32, + t.point_32, + t.point_member_33, + t.point_33, + t.point_member_34, + t.point_34, + t.point_member_35, + t.point_35, + t.point_member_36, + t.point_36, + t.point_member_37, + t.point_37, + t.point_member_38, + t.point_38, + t.point_type, + t.point_gift, + t.creation_time, + t.point_member_first, + t.point_first, + t.point_member_second, + t.point_second, + t.point_member_third, + t.point_third, + t.third_bonus_1, + t.third_bonus_2, + t.third_bonus_3, + t.stage_sort from ${yesterdayDetailTableName} t - left join cu_member cm - on cm.pk_id = t.pk_member - + left join cu_member cm + on cm.pk_id = t.pk_member + @@ -394,7 +395,7 @@ merge into ${rangeTableName} a using ( - select #{item.pkMember} pk_member, #{item.pkAwards} pk_awards, #{item.pkShareAwards} pk_share_awards, + select #{item.pkMember} pk_member, #{item.pkGrade} pk_grade, #{item.pkAwards} pk_awards, #{item.pkShareAwards} pk_share_awards, #{item.newConsumePv} new_consume_pv, #{item.consumePv} consume_pv, #{item.monthConsumePv} month_consume_pv, #{item.newConsumeAmount} new_consume_amount, #{item.consumeAmount} consume_amount, #{item.monthConsumeAmount} month_consume_amount, #{item.teamNewPv} team_new_pv, #{item.teamConsumePv} team_consume_pv, #{item.teamMonthPv} team_month_pv, @@ -412,7 +413,7 @@ ) b on (a.pk_member = b.pk_member) when matched then - update set a.pk_awards = b.pk_awards, a.pk_share_awards = b.pk_share_awards, + update set a.pk_grade = b.pk_grade, a.pk_awards = b.pk_awards, a.pk_share_awards = b.pk_share_awards, a.new_consume_pv = b.new_consume_pv, a.consume_pv = b.consume_pv, a.month_consume_pv = b.month_consume_pv, a.new_consume_amount = b.new_consume_amount, a.consume_amount = b.consume_amount, a.month_consume_amount = b.month_consume_amount, a.team_new_pv = b.team_new_pv, a.team_consume_pv = b.team_consume_pv, a.team_month_pv = b.team_month_pv, @@ -751,7 +752,8 @@ gift_point, gift_pay_time, bw.awards_value, - bw.awards_name + bw.awards_name, + bg.grade_value from ( select * from ${tableName} start with pk_member = #{item} @@ -759,6 +761,8 @@ ) a inner join bd_awards bw on bw.pk_id = a.pk_awards + inner join bd_grade bg + on bg.pk_id = a.pk_grade left join bd_vertex bv on bv.pk_id = a.pk_vertex @@ -1082,7 +1086,8 @@ connect by cmr.pk_member = prior cmr.pk_parent group by cmr.pk_parent having count (distinct cmr.pk_member) >= #{placeDeptNum}) - and #{awardsValue} > ba.awards_value + and #{awardsValue} + > ba.awards_value and cmr.team_consume_pv >= #{totalCheck} 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 861f0b1d..10205b41 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 @@ -133,7 +133,7 @@ insert ( pk_id, pk_member, period, pk_rate, direct_income, global_points, expand_income,expand_no_capping, - expand_capping,coach_income,share_income,service_income,back_points,service_spend, + 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, repur_coupon,repur_coupon_share,repur_coupon_subtotal, store_income, real_income_total, @@ -147,7 +147,7 @@ values ( b.pk_id, b.pk_member, b.period, b.pk_rate, b.direct_income, b.global_points, 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.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.repur_coupon,b.repur_coupon_share,b.repur_coupon_subtotal, b.store_income, b.real_income_total, diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberGradeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberGradeMapper.xml new file mode 100644 index 00000000..ec277521 --- /dev/null +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberGradeMapper.xml @@ -0,0 +1,38 @@ + + + + + + + merge into ${rangeTableName} a + using ( + select a.pk_member, max(a.new_level) pk_grade + from cu_member_grade a + inner join( + select pk_member, max(nvl(modified_time, creation_time)) creation_time + from cu_member_grade + where period = #{period} + and del_flag = 0 + and up_type = 2 + group by pk_member) b + on a.pk_member = b.pk_member and nvl(a.modified_time, a.creation_time) = b.creation_time + group by a.pk_member + ) b + on (a.pk_member = b.pk_member) + when matched then + update set + a.pk_grade = b.pk_grade + + + + + + diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/OrderBusinessServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/OrderBusinessServiceImpl.java index 51f39589..60300c41 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/OrderBusinessServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/OrderBusinessServiceImpl.java @@ -46,7 +46,6 @@ import com.hzs.sale.product.service.IBdProductService; import com.hzs.sale.pub.dto.OrderDeductionDTO; import com.hzs.system.base.IAreaServiceApi; import com.hzs.system.base.ICurrencyServiceApi; -import com.hzs.system.base.ISystemConfigServiceApi; import com.hzs.system.base.dto.CurrencyDTO; import com.hzs.system.config.IAccountServiceApi; import com.hzs.system.config.IServiceChargeServiceApi; @@ -1260,7 +1259,8 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService { } // 校验订单是否存在进行中的签呈 if (iSaOrderChargeLogService.checkOrderApprovalExist( - Arrays.asList(EApprovalBusiness.ORDER_CHANGE_ADDRESS.getValue(), EApprovalBusiness.ORDER_CHANGE_PRODUCT.getValue(), + Arrays.asList(EApprovalBusiness.ORDER_CHANGE_ADDRESS.getValue(), + EApprovalBusiness.ORDER_CHANGE_PRODUCT.getValue(), EApprovalBusiness.ORDER_RETURN.getValue(), approveBusiness, EApprovalBusiness.ORDER_CANCEL_PRODUCT.getValue() ), @@ -1364,13 +1364,13 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService { } } else if (orderCancelParam.getCancelType().equals(ECancelOrderType.OTHER_CANCEL_ORDER.getValue())) { // 其他撤单 - if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { - // 2025.03.05 复购可以升级,需要必须从最后一单开始撤单 + if (EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { + // 自购买精品专区订单,必须按顺序撤单 List saOrderList = iSaOrderService.querySaleOrderByPkMember(cuMember.getPkSettleCountry(), cuMember.getPkId(), - Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()), + Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue()), null); if (!saOrderList.get(0).getOrderCode().equals(saOrderExt.getOrderCode())) { - validateCancelOrderVO.setMsg("撤销复购订单,只能从最新的订单开始撤销,最新的订单编号:" + saOrderList.get(0).getOrderCode()); + validateCancelOrderVO.setMsg("撤销复购专区订单,只能从最新的订单开始撤销,最新的订单编号:" + saOrderList.get(0).getOrderCode()); return validateCancelOrderVO; } } @@ -2291,7 +2291,7 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService { return myOrderVO; } if (myOrderVO.getOrderType() == EOrderType.RETAIL_REGISTER.getValue() || - myOrderVO.getOrderType() == EOrderType.RETAIL_REPURCHASE.getValue()) { + myOrderVO.getOrderType() == EOrderType.RETAIL_UPGRADE.getValue()) { String lastOrderCode = iSaOrderService.lastOrderList(userId, myOrderVO.getPkCountry()); if (StringUtils.isEmpty(lastOrderCode) || !lastOrderCode.equals(myOrderVO.getOrderCode())) { myOrderVO.setMsg(TransactionUtils.getContent(SaOrderMsgConstants.CHECK_MEMBER_LAST_ORDER)); diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/config/provider/BonusItemsServiceProvider.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/config/provider/BonusItemsServiceProvider.java index b20a6750..9a2152b4 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/config/provider/BonusItemsServiceProvider.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/config/provider/BonusItemsServiceProvider.java @@ -27,31 +27,33 @@ import java.util.*; public class BonusItemsServiceProvider implements IBonusItemsServiceApi { @Autowired - private IBdBonusItemsService bonusItemsService; + private IBdBonusItemsService iBdBonusItemsService; @Autowired - private IBdBonusDirectService bdBonusDirectService; + private IBdBonusDirectService iBdBonusDirectService; @Autowired private IBdAwardsService iBdAwardsService; @Autowired - private IBdBonusDeductService bdBonusDeductService; + private IBdGradeService iBdGradeService; @Autowired - private IBdCurrencyService bdCurrencyService; + private IBdBonusDeductService iBdBonusDeductService; @Autowired - private IBdCountryService bdCountryService; + private IBdCurrencyService iBdCurrencyService; + @Autowired + private IBdCountryService iBdCountryService; @Override public R> queryBonusItems(Integer pkCountry) { - return R.ok(bonusItemsService.queryBonusItems(pkCountry)); + return R.ok(iBdBonusItemsService.queryBonusItems(pkCountry)); } @Override public R> queryExistsBonusItems(List bonusValueList) { - return R.ok(bonusItemsService.queryBonusItemsByValue(bonusValueList)); + return R.ok(iBdBonusItemsService.queryBonusItemsByValue(bonusValueList)); } @Override public R queryBonusItems(Integer pkCountry, Integer pkBonusItems) { - return R.ok(bonusItemsService.queryBonusItems(pkCountry, pkBonusItems)); + return R.ok(iBdBonusItemsService.queryBonusItems(pkCountry, pkBonusItems)); } @Override @@ -60,7 +62,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi { // 汇率 bonusConfigDTO.setCurrencyDtoMap(getCurrencyDtoMap()); // 收益类型 - List allCountryList = bdCountryService.getAllCountry(); + List allCountryList = iBdCountryService.getAllCountry(); Set countrySet = new HashSet<>(); allCountryList.forEach(bdCountry -> countrySet.add(bdCountry.getPkId())); @@ -72,11 +74,13 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi { bonusConfigDTO.setBonusDeductsMap(getBonusDeductConfig()); // 奖衔列表 bonusConfigDTO.setAwardsList(iBdAwardsService.queryAwards()); + // 等级列表 + bonusConfigDTO.setGradeList(iBdGradeService.queryBdGrade()); return R.ok(bonusConfigDTO); } private Map getCurrencyDtoMap() { - List bdCurrencyList = bdCurrencyService.queryAllBdCurrency(); + List bdCurrencyList = iBdCurrencyService.queryAllBdCurrency(); Map currencyDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdCurrencyList.size())); bdCurrencyList.forEach(bdCurrency -> currencyDtoMap.put(bdCurrency.getPkCountry().toString() + bdCurrency.getPkId(), @@ -87,7 +91,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi { private Map getBdBonusItemsExtMap(Set countrySet) { Map bonusItemsMap = new HashMap<>(ComputeUtil.mapInitCapacity(countrySet.size() * 8)); countrySet.forEach(pkCountry -> { - List bdBonusItemsExtList = bonusItemsService.queryCalBonusItems(pkCountry); + List bdBonusItemsExtList = iBdBonusItemsService.queryCalBonusItems(pkCountry); for (BdBonusItemsExt bdBonusItemsExt : bdBonusItemsExtList) { bonusItemsMap.put(pkCountry.toString() + bdBonusItemsExt.getBonusValue().toString(), bdBonusItemsExt); } @@ -99,7 +103,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi { * 获得奖金 推荐什么等级 直推奖励配置 */ private Map getBonusDirectConfig() { - List bdBonusDirectList = bdBonusDirectService.queryBonusDirect(); + List bdBonusDirectList = iBdBonusDirectService.queryBonusDirect(); Map directDtoHashMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusDirectList.size())); bdBonusDirectList.forEach(bdBonusDirect -> { BonusDirectDTO bonusDirectDTO = BeanUtil.copyProperties(bdBonusDirect, BonusDirectDTO.class); @@ -112,7 +116,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi { * 获取每个国家奖金项对应的扣项 */ private Map getBonusDeductConfig() { - List bdBonusDeductList = bdBonusDeductService.queryBonusDeduct(); + List bdBonusDeductList = iBdBonusDeductService.queryBonusDeduct(); Map bdBonusDeductMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusDeductList.size())); bdBonusDeductList.forEach(bdBonusDeduct -> bdBonusDeductMap.put(bdBonusDeduct.getPkBonusItems(), bdBonusDeduct)); diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/impl/BdGradeServiceImpl.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/impl/BdGradeServiceImpl.java index c0dd09fc..0b48bb49 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/impl/BdGradeServiceImpl.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/impl/BdGradeServiceImpl.java @@ -2,7 +2,6 @@ package com.hzs.system.config.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.common.core.constant.CacheConstants; @@ -173,9 +172,8 @@ public class BdGradeServiceImpl extends ServiceImpl impl @Override public List queryBdGrade() { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("PK_ID,GRADE_VALUE,FIRST_CALCULATE,FIRST_ASSESS,EXPAND_CAPPING,EXPAND_RATIO,REPURCHASE_CALCULATE,REPURCHASE_ASSESS,REPURCHASE_CAPPING,REPURCHASE_RATIO,PK_COUNTRY"); - queryWrapper.eq("SYSTEM_TYPE", 0); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.orderByAsc(BdGrade::getGradeValue); return baseMapper.selectList(queryWrapper); } diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ECancelOrderType.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ECancelOrderType.java index f7690572..c50b4e0c 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ECancelOrderType.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ECancelOrderType.java @@ -1,13 +1,10 @@ package com.hzs.common.core.enums; -import com.hzs.common.core.constant.EnumsPrefixConstants; import lombok.AllArgsConstructor; import lombok.Getter; /** * 撤销订单类型 - * - * @author: hzs */ @AllArgsConstructor @Getter diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/bonus/CuMemberBonus.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/bonus/CuMemberBonus.java index 0b354240..0485ff82 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/bonus/CuMemberBonus.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/bonus/CuMemberBonus.java @@ -92,7 +92,7 @@ public class CuMemberBonus extends BaseEntity { private BigDecimal serviceIncome; /** - * 商城重消 + * 赠品积分-众康 */ @TableField("BACK_POINTS") private BigDecimal backPoints;