## 去掉乐学涉及的奖项、法宝券等;

This commit is contained in:
cabbage 2025-07-15 17:04:43 +08:00
parent 9d750ff7fc
commit 7e96970223
46 changed files with 79 additions and 1833 deletions

View File

@ -1,76 +1,49 @@
package com.hzs.bonus.settle; package com.hzs.bonus.settle;
import com.hzs.common.core.domain.R; import com.hzs.common.core.domain.R;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.sale.order.SaOrder;
import java.util.Date; import java.util.Date;
/** /**
* @description: 奖金结算 * 奖金结算
* @author: sui q
* @time: 2023/9/18 14:24
* @classname: IMemberBonusSettleApi
* @package_name: com.hzs.bonus.settle
* version 1.0.0
*/ */
public interface IMemberSettleBonusApi { public interface IMemberSettleBonusApi {
/** /**
* 根据秒结算会员奖金 * 根据秒结算会员奖金
*
* @param orderCode 订单 * @param orderCode 订单
* @return: List<SaOrderExt>
* @Author: sui q
* @Date: 2023/2/1 21:27
*/ */
R<Boolean> calculateCumberBonusBySecond(String orderCode); R<Boolean> calculateCumberBonusBySecond(String orderCode);
/* /*
* @description: 定时任务每天自动计算奖金 * 定时任务每天自动计算奖金
* @author: sui q
* @date: 2023/4/10 14:23
* @param: null null
**/ **/
R<Boolean> autoCalculateBonus(Date settleDate); R<Boolean> autoCalculateBonus(Date settleDate);
/* /*
* @description: 备份网体 * 备份网体
* @author: sui q
* @date: 2024/11/15 10:10
* @param: null null
**/ **/
void backupsSettleBonusEveryday(); void backupsSettleBonusEveryday();
/* /*
* @description: 定时任务每天自动公布奖金 * 定时任务每天自动公布奖金
* @author: sui q
* @date: 2023/4/10 14:23
* @param: null null
**/ **/
void autoPublishBonus(); void autoPublishBonus();
/* /*
* @description: 定时任务每天自动发放奖金 * 定时任务每天自动发放奖金
* @author: sui q
* @date: 2023/4/10 14:23
* @param: null null
**/ **/
void autoGrantBonus(); void autoGrantBonus();
/* /*
* @description: 每日生成业绩月表统计数据 * 每日生成业绩月表统计数据
* @author: sui q
* @date: 2023/9/1 9:50
* @param: null null
**/ **/
void insertCuMemberAchieveByEveryDay(); void insertCuMemberAchieveByEveryDay();
/* /*
* @description: 退单回退业绩 * 退单回退业绩
* @author: sui q
* @date: 2023/9/22 9:27
* @param: null null
**/ **/
Boolean chargeBackSaOrder(SaOrder saOrder); Boolean chargeBackSaOrder(SaOrder saOrder);
} }

View File

@ -3,17 +3,12 @@ package com.hzs.activity.pick;
import com.hzs.common.core.domain.R; import com.hzs.common.core.domain.R;
import com.hzs.common.domain.activity.pick.AcPickMemberLog; import com.hzs.common.domain.activity.pick.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt; import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
* @Description: 提货相关dubbo服务入口 * 提货相关dubbo服务入口
* @Author: jiang chao
* @Time: 2023/5/15 11:20
* @Classname: IAcPickServiceApi
* @PackageName: com.hzs.activity.base
*/ */
public interface IAcPickServiceApi { public interface IAcPickServiceApi {
@ -27,29 +22,10 @@ public interface IAcPickServiceApi {
R<?> handlePickOrder(Long pkMember, String orderCode); R<?> handlePickOrder(Long pkMember, String orderCode);
/* /*
* @description: 更新提货单 * 更新提货单
* @author: sui q
* @date: 2023/5/30 19:49
* @param: null null
**/ **/
R<Boolean> updatePickUse(List<AcPickExt> acPickExtList, Integer signSource, List<AcPickMemberLog> acPickMemberLogList); R<Boolean> updatePickUse(List<AcPickExt> acPickExtList, Integer signSource, List<AcPickMemberLog> acPickMemberLogList);
/*
* @description: 更新提货单
* @author: sui q
* @date: 2023/5/30 19:49
* @param: null null
**/
R<Boolean> updatePickUse(List<AcPickExt> acPickExtList, List<AcPickMemberLog> acPickMemberLogList);
/*
* @description: 查询会员提货使用记录
* @author: sui q
* @date: 2023/6/3 10:51
* @param: null null
**/
R<List<AcPickMemberLog>> queryPickMemberLog(List<SaOrderExt> saOrderExtList);
/** /**
* 根据订单查询邮费 * 根据订单查询邮费
* *

View File

@ -1,24 +0,0 @@
package com.hzs.bonus.bonus.param;
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @description: 计算乐学易考特殊极差的param
* @author: sui q
* @time: 2023/6/3 14:37
* @classname: LeXueRangeParam
* @package_name: com.hzs.member.bonus.param
* version 1.0.0
*/
@Data
public class LeXueRangeParam implements Serializable {
private List<AcPickExt> acPickExtList;
private List<AcPickMemberLog> acPickMemberLogList;
}

View File

@ -1,68 +0,0 @@
package com.hzs.bonus.bonus.param;/**
* @Description:
* @Author: yuhui
* @Time: 2023/6/7 14:43
* @Classname: TripleCycleListParam
* @PackageName: com.hzs.member.marketnews.param
*/
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
*@BelongsProject: hzs_cloud
*@BelongsPackage: com.hzs.member.marketnews.param
*@Author: yh
*@CreateTime: 2023-06-07 14:43
*@Description: TODO
*@Version: 1.0
*/
@Data
public class TripleCycleListParam {
/**
* 会员主键
*/
private Long pkMember;
/**
* 会员编号
*/
private String memberCode;
/**
* 会员姓名
*/
private String memberName;
/**
* 开始时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date startCreationTime;
/**
* 结束时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endCreationTime;
/**
* 国家
*/
private Integer pkCountry;
/**
* 注册等级
*/
private Integer pkRegisterGrade;
/**
* 查询会员信息
*/
private String memberInfo;
}

View File

@ -17,12 +17,7 @@ import java.time.temporal.ChronoUnit;
import java.util.Date; import java.util.Date;
/** /**
* @description: 奖金计算 * 奖金计算
* @author: sui q
* @time: 2023/9/18 14:26
* @classname: MemberBonusSettleProvider
* @package_name: com.hzs.bonus.bonus.settle
* version 1.0.0
*/ */
@DubboService @DubboService
@Slf4j @Slf4j

View File

@ -74,7 +74,7 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
TableDataInfo queryMemberBonusDetailVoByCondition(BonusParam bonusParam); TableDataInfo queryMemberBonusDetailVoByCondition(BonusParam bonusParam);
/* /*
* @description: 查询创客空间奖金来源 * 查询创客空间奖金来源
**/ **/
List<MemberBonusDetailVO> queryMemberMarkBonusDetailSource(BonusParam bonusParam); List<MemberBonusDetailVO> queryMemberMarkBonusDetailSource(BonusParam bonusParam);
@ -107,7 +107,7 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
void insertOrUpdateCuMemberBonus(List<CuMemberBonus> cuMemberBonusList); void insertOrUpdateCuMemberBonus(List<CuMemberBonus> cuMemberBonusList);
/* /*
* @description: 查询会员奖金 * 查询会员奖金
**/ **/
List<CuMemberBonus> queryCuMemberBonus(int period, List<CuMemberBonus> cuMemberBonusList); List<CuMemberBonus> queryCuMemberBonus(int period, List<CuMemberBonus> cuMemberBonusList);
@ -130,24 +130,24 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
List<CuMemberBonus> queryCuMemberBonusByCondition(Integer pkCountry, Integer grantStatus, Integer startPeriod, Integer endPeriod); List<CuMemberBonus> queryCuMemberBonusByCondition(Integer pkCountry, Integer grantStatus, Integer startPeriod, Integer endPeriod);
/* /*
* @description: 定时任务每天自动计算奖金 * 定时任务每天自动计算奖金
* @param: startDate 开始时间 * @param: startDate 开始时间
* @param: endDate 结束时间 * @param: endDate 结束时间
**/ **/
Boolean autoCalculateBonus(Date startDate, Date endDate); Boolean autoCalculateBonus(Date startDate, Date endDate);
/* /*
* @description: 备份网体 * 备份网体
**/ **/
void backupsSettleBonusEveryday(); void backupsSettleBonusEveryday();
/* /*
* @description: 查询会员奖金根据期间 * 查询会员奖金根据期间
**/ **/
Set<Long> queryMemberBonusByPeriod(Integer period); Set<Long> queryMemberBonusByPeriod(Integer period);
/* /*
* @description: 查询会员一周周期的拓展累计复购拓展累计 * 查询会员一周周期的拓展累计复购拓展累计
**/ **/
Map<Long, CuMemberBonus> queryWeekMemberBonus(int startPeriod, int endPeriod); Map<Long, CuMemberBonus> queryWeekMemberBonus(int startPeriod, int endPeriod);

View File

@ -48,12 +48,12 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
private ICuMemberBonusDelayService iCuMemberBonusDelayService; private ICuMemberBonusDelayService iCuMemberBonusDelayService;
/** /**
* 计算直推奖
*
* @param settleTableName 结算表 * @param settleTableName 结算表
* @param bonusConfigDTO 参数 * @param bonusConfigDTO 参数
* @param systemConfigMap 系统参数 * @param systemConfigMap 系统参数
* @param firPurchaseOrderList 首单 * @param firPurchaseOrderList 首单
* @Description: 计算直推奖
* @return: void
*/ */
List<CuMemberBonusPush> calculateRecommendBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, BonusConfigDTO bonusConfigDTO, List<CuMemberBonusPush> calculateRecommendBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, BonusConfigDTO bonusConfigDTO,
Map<String, String> systemConfigMap, List<SaOrderExt> firPurchaseOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<String, BdAwards> awardsMap) { Map<String, String> systemConfigMap, List<SaOrderExt> firPurchaseOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<String, BdAwards> awardsMap) {
@ -75,141 +75,9 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
cuMemberBonusPushList.add(cuMemberBonusPush); cuMemberBonusPushList.add(cuMemberBonusPush);
} }
} }
// TODO new 乐学直推级差收益需要按新逻辑修改级差等级4个封顶上限修改
// V2订单6000最多发3000V1拿400V4最多拿3000前面等级没拿后面等级就多拿一份
List<SaOrderExt> specialOrderList = new ArrayList<>();
firPurchaseOrderList.forEach(saOrderExt -> {
if (EOrderType.SPECIAL_REGISTER_ORDER.getValue() == saOrderExt.getOrderType() ||
EOrderType.SPECIAL_UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()) {
specialOrderList.add(saOrderExt);
}
});
if (specialOrderList.size() > 0) {
Set<Long> memberSet = new HashSet<>();
specialOrderList.forEach(saOrderExt -> memberSet.add(saOrderExt.getPkMember()));
cuMemberSettleExtList = iCuMemberTreeService.batchQuerySpecialCuMemberSettleParent(settleTableName, memberSet);
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
// 计算奖金
for (SaOrderExt saOrderExt : specialOrderList) {
// 订单能发放总奖金
BigDecimal maxBonus;
// 根据金额验证最大金额
if (ComputeUtil.compareValue(saOrderExt.getOrderAmount(), MagicNumberConstants.V4_AMOUNT)) {
// 订单金额大于 128000封顶奖金 43000
maxBonus = MagicNumberConstants.V4_V4_BONUS;
} else if (ComputeUtil.compareValue(saOrderExt.getOrderAmount(), MagicNumberConstants.V3_AMOUNT)) {
// 订单金额大于 36000封顶奖金 18000
maxBonus = MagicNumberConstants.V4_V3_BONUS;
} else if (ComputeUtil.compareValue(saOrderExt.getOrderAmount(), MagicNumberConstants.V2_AMOUNT)) {
// 订单金额大于 6000封顶奖金 3000
maxBonus = MagicNumberConstants.V4_V2_BONUS;
} else if (ComputeUtil.compareValue(saOrderExt.getOrderAmount(), MagicNumberConstants.V1_AMOUNT)) {
// 订单金额大于 2000封顶奖金 1000
maxBonus = MagicNumberConstants.V4_V1_BONUS;
} else {
// 订单金额小于 2000没有奖金
maxBonus = BigDecimal.ZERO;
}
CuMemberSettleExt sourceSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
Long pkParent = sourceSettleExt.getPkParent();
// 已发放奖金
BigDecimal grantBonus = BigDecimal.ZERO;
while (ComputeUtil.compareGreaterThan(maxBonus, grantBonus)) {
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(pkParent);
if (targetMemberSettleExt == null) {
break;
}
// 死点没有奖金
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|| validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.DIRECT_INCOME.getValue())) {
// 非正常点位 停算收益 没有这个奖项则直接跳过当前人
pkParent = targetMemberSettleExt.getPkParent();
continue;
}
// 初始化会员奖金汇总
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
// 直推奖金明细
int pkBonusItem = getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.DIRECT_INCOME.getValue());
CuMemberBonusPush cuMemberBonusPush = getCuMemberBonusPush(saOrderExt, targetMemberSettleExt, cuMemberBonus, pkBonusItem);
// 不算轮次
cuMemberBonusPush.setCalType(ECalType.VALUE.getValue());
cuMemberBonusPush.setRound(-1);
cuMemberBonusPush.setSecond(0);
//
cuMemberBonusPush.setCalValue(BigDecimal.ZERO);
BigDecimal pretaxIncome;
// 验证等级根据等级给奖金
if (ComputeUtil.compareValue(saOrderExt.getOrderAmount(), MagicNumberConstants.V4_AMOUNT)) {
// 订单金额 128000V4推拿43000V3推拿10800V2推拿1800V1推拿400
pretaxIncome = computePushRangeBonus(targetMemberSettleExt, MagicNumberConstants.V4_V4_BONUS, MagicNumberConstants.V3_V4_BONUS, MagicNumberConstants.V2_V4_BONUS, MagicNumberConstants.V1_V_BONUS);
} else if (ComputeUtil.compareValue(saOrderExt.getOrderAmount(), MagicNumberConstants.V3_AMOUNT)) {
// 订单金额 36000V4推拿18000V3推拿10800V2推拿1800V1推拿400
pretaxIncome = computePushRangeBonus(targetMemberSettleExt, MagicNumberConstants.V4_V3_BONUS, MagicNumberConstants.V3_V3_BONUS, MagicNumberConstants.V2_V3_BONUS, MagicNumberConstants.V1_V_BONUS);
} else if (ComputeUtil.compareValue(saOrderExt.getOrderAmount(), MagicNumberConstants.V2_AMOUNT)) {
// 订单金额 6000V4推拿3000V3推拿2400V2推拿1800V1推拿400
pretaxIncome = computePushRangeBonus(targetMemberSettleExt, MagicNumberConstants.V4_V2_BONUS, MagicNumberConstants.V3_V2_BONUS, MagicNumberConstants.V2_V2_BONUS, MagicNumberConstants.V1_V_BONUS);
} else {
// 订单金额 2000V4推拿1000V3推拿800V2推拿600V1推拿400
pretaxIncome = computePushRangeBonus(targetMemberSettleExt, MagicNumberConstants.V4_V1_BONUS, MagicNumberConstants.V3_V1_BONUS, MagicNumberConstants.V2_V1_BONUS, MagicNumberConstants.V1_V_BONUS);
}
pretaxIncome = ComputeUtil.computeSubtract(pretaxIncome, grantBonus);
if (!ComputeUtil.compareValue(pretaxIncome)) {
pkParent = targetMemberSettleExt.getPkParent();
continue;
}
grantBonus = ComputeUtil.computeAdd(grantBonus, pretaxIncome);
cuMemberBonusPush.setPretaxIncome(pretaxIncome);
cuMemberBonusPush.setRealIncome(pretaxIncome);
cuMemberBonusPush.setIncomeTax(BigDecimal.ZERO);
// TODO new 需要扣除20%
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusPush, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusPush.getIncomeStatus()) {
cuMemberBonus.setGlobalPoints(ComputeUtil.computeAdd(cuMemberBonus.getGlobalPoints(), cuMemberBonusPush.getPretaxIncome()));
// 实发收益总计
// BigDecimal realIncome = ReflectUtils.invokeGetter(cuMemberBonusPush, BonusFieldConstants.REAL_INCOME);
// cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
// TODO new 首购实发小计实发收益总计比原来多累计到首购实发小计
setFirstPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusPush);
}
cuMemberBonusPush.setRemark(String.format(BonusMsgConstants.RECOMMEND_SPECIAL_DIRECT, saOrderExt.getOrderCode(),
sourceSettleExt.getMemberCode() + sourceSettleExt.getMemberName(),
targetMemberSettleExt.getMemberCode() + targetMemberSettleExt.getMemberName(),
cuMemberBonusPush.getRealIncome()));
cuMemberBonusPushList.add(cuMemberBonusPush);
pkParent = targetMemberSettleExt.getPkParent();
}
}
}
return cuMemberBonusPushList; return cuMemberBonusPushList;
} }
/**
* 计算直推奖金
*/
private BigDecimal computePushRangeBonus(CuMemberSettleExt targetMemberSettleExt,
BigDecimal V4Bonus, BigDecimal V3Bonus,
BigDecimal V2Bonus, BigDecimal V1Bonus) {
BigDecimal pretaxIncome;
if (targetMemberSettleExt.getGradeValue() == EGrade.S_VIP.getValue()) {
pretaxIncome = V4Bonus;
} else if (targetMemberSettleExt.getGradeValue() == EGrade.VIP.getValue()) {
pretaxIncome = V3Bonus;
} else if (targetMemberSettleExt.getGradeValue() == EGrade.MAKER.getValue()) {
pretaxIncome = V2Bonus;
} else {
pretaxIncome = V1Bonus;
}
return pretaxIncome;
}
/** /**
* 计算某条订单的推荐奖金 * 计算某条订单的推荐奖金
* *

View File

@ -126,17 +126,13 @@ public abstract class BonusSettleHandle {
BonusExpandDTO bonusExpand = bonusConfigDTO.getBonusExpandMap().get(memberSettleExt.getPkSettleCountry()); BonusExpandDTO bonusExpand = bonusConfigDTO.getBonusExpandMap().get(memberSettleExt.getPkSettleCountry());
// 4-N 拓展比例一般为26% // 4-N 拓展比例一般为26%
BigDecimal expandRatio = bonusExpand.getExpandRatio(); BigDecimal expandRatio = bonusExpand.getExpandRatio();
// log.info("expandRatio 配置N使用的比例 : {}", expandRatio);
if (ComputeUtil.compareValue(editExpandRatio)) { if (ComputeUtil.compareValue(editExpandRatio)) {
expandRatio = editExpandRatio; expandRatio = editExpandRatio;
} }
// log.info("expandRatio 2 : {}", expandRatio);
BigDecimal countryExpandRatio = ComputeUtil.computeDivide(expandRatio, BigDecimal.valueOf(endTouch)); BigDecimal countryExpandRatio = ComputeUtil.computeDivide(expandRatio, BigDecimal.valueOf(endTouch));
if (ComputeUtil.compareValue(countryExpandRatio, bdGrade.getRepurchaseRatio())) { if (ComputeUtil.compareValue(countryExpandRatio, bdGrade.getRepurchaseRatio())) {
// log.info("expandRatio 3 : {}", bdGrade.getRepurchaseRatio());
return bdGrade.getRepurchaseRatio(); return bdGrade.getRepurchaseRatio();
} }
// log.info("expandRatio N均过比较 : {}", countryExpandRatio);
return countryExpandRatio; return countryExpandRatio;
} }
@ -362,10 +358,11 @@ public abstract class BonusSettleHandle {
} }
/** /**
* 获得 直推收益的备注
*
* @param saOrderExt 订单编号 * @param saOrderExt 订单编号
* @param cuMemberBonusPush 直推奖 * @param cuMemberBonusPush 直推奖
* @param cuMemberSettleExtMap 存储会员网体的map * @param cuMemberSettleExtMap 存储会员网体的map
* @Description: 获得 直推收益的备注
*/ */
protected void recommendRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) { protected void recommendRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
CuMemberSettleExt sourceCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember()); CuMemberSettleExt sourceCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
@ -386,12 +383,10 @@ public abstract class BonusSettleHandle {
} }
/** /**
* 记录需要修改的会员结算表数据, 安置的
*
* @param cuMemberSettleExtMap 会员结算 * @param cuMemberSettleExtMap 会员结算
* @param cuMemberSettleExtList 查询出来的结算数据 * @param cuMemberSettleExtList 查询出来的结算数据
* @Description: 记录需要修改的会员结算表数据, 安置的
* @return: void
* @Author: sui q
* @Date: 2022/11/15 9:52
*/ */
protected void getSecondMemberSettle(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<CuMemberSettleExt> cuMemberSettleExtList) { protected void getSecondMemberSettle(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<CuMemberSettleExt> cuMemberSettleExtList) {
cuMemberSettleExtList.forEach(cuMemberSettleExt -> { cuMemberSettleExtList.forEach(cuMemberSettleExt -> {
@ -693,31 +688,12 @@ public abstract class BonusSettleHandle {
} }
/** /**
* 获得 分享极差收益的备注 * 获得 报单服务费收益的备注
* *
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
*/
protected void xueRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt) {
String remark = String.format(BonusMsgConstants.LE_XUE_SHARE_RANGE, saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
ComputeUtil.computeDivide(targetCuMemberSettleExt.getRetailPrice(), BigDecimal.valueOf(1)), targetCuMemberSettleExt.getGradeValue());
cuMemberBonusRange.setRemark(remark);
}
/**
* @param saOrder 订单编号 * @param saOrder 订单编号
* @param cuMemberBonusDetail 云代首购 * @param cuMemberBonusDetail 云代首购
* @param sourceCuMemberSettleExt 提供奖金的人 * @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人 * @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/ */
protected void cloudAgentRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt, protected void cloudAgentRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt, String msg) { CuMemberSettleExt targetCuMemberSettleExt, String msg) {
@ -729,14 +705,12 @@ public abstract class BonusSettleHandle {
} }
/** /**
* 获得 报单服务费收益的备注
*
* @param saOrder 订单编号 * @param saOrder 订单编号
* @param cuMemberBonusDetail 云代首购 * @param cuMemberBonusDetail 云代首购
* @param sourceCuMemberSettleExt 提供奖金的人 * @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人 * @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/ */
protected void repurchaseCouponsRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt, protected void repurchaseCouponsRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt) { CuMemberSettleExt targetCuMemberSettleExt) {
@ -987,12 +961,10 @@ public abstract class BonusSettleHandle {
} }
/** /**
* 获取会员的极差等级验证会员是否有奖衔
*
* @param awardsMap 奖衔 * @param awardsMap 奖衔
* @param parentMemberTree 会员树历史记录 * @param parentMemberTree 会员树历史记录
* @Description: 获取会员的极差等级验证会员是否有奖衔
* @return: String
* @Author: sui q
* @Date: 2023/1/4 14:22
*/ */
protected String getMemberCountryKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree, Map<Long, CuAwardsControl> cuAwardsControlMap) { protected String getMemberCountryKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree, Map<Long, CuAwardsControl> cuAwardsControlMap) {
Integer pkAwards = getPkRealAwards(parentMemberTree.getPkMember(), parentMemberTree.getPkAwards(), cuAwardsControlMap); Integer pkAwards = getPkRealAwards(parentMemberTree.getPkMember(), parentMemberTree.getPkAwards(), cuAwardsControlMap);
@ -1010,12 +982,10 @@ public abstract class BonusSettleHandle {
} }
/** /**
* 获取会员的极差等级验证会员是否有奖衔
*
* @param awardsMap 奖衔 * @param awardsMap 奖衔
* @param parentMemberTree 会员树历史记录 * @param parentMemberTree 会员树历史记录
* @Description: 获取会员的极差等级验证会员是否有奖衔
* @return: String
* @Author: sui q
* @Date: 2023/1/4 14:22
*/ */
protected String getMemberKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree) { protected String getMemberKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree) {
String key = Integer.toString(ERangeType.AWARDS.getValue()) + parentMemberTree.getPkAwards(); String key = Integer.toString(ERangeType.AWARDS.getValue()) + parentMemberTree.getPkAwards();
@ -1027,13 +997,11 @@ public abstract class BonusSettleHandle {
} }
/** /**
* 奖金明细 报单服务费分红云代首购云代复购海豆收益
*
* @param saOrderExt 订单 * @param saOrderExt 订单
* @param targetMemberSettleExt 奖金网体 * @param targetMemberSettleExt 奖金网体
* @param cuMemberBonus 奖金主表 * @param cuMemberBonus 奖金主表
* @Description: 奖金明细 报单服务费分红云代首购云代复购海豆收益
* @return: CuMemberBonusDetail
* @Author: sui q
* @Date: 2023/1/5 16:31
*/ */
protected CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberSettleExt targetMemberSettleExt, CuMemberBonus cuMemberBonus) { protected CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberSettleExt targetMemberSettleExt, CuMemberBonus cuMemberBonus) {
CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder() CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder()

View File

@ -3,15 +3,12 @@ package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.hzs.activity.pick.IAcPickServiceApi; import com.hzs.activity.pick.IAcPickServiceApi;
import com.hzs.bonus.bonus.param.LeXueRangeParam;
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO; import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
import com.hzs.common.core.constant.CountryConstants; import com.hzs.common.core.constant.CountryConstants;
import com.hzs.common.core.constant.MagicNumberConstants; import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.constant.msg.BonusMsgConstants; import com.hzs.common.core.constant.msg.BonusMsgConstants;
import com.hzs.common.core.enums.*; import com.hzs.common.core.enums.*;
import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import com.hzs.common.domain.bonus.BdBonusDeduct; import com.hzs.common.domain.bonus.BdBonusDeduct;
import com.hzs.common.domain.bonus.risk.CuMemberRiskControl; import com.hzs.common.domain.bonus.risk.CuMemberRiskControl;
import com.hzs.common.domain.member.base.CuAwardsControl; import com.hzs.common.domain.member.base.CuAwardsControl;
@ -20,8 +17,6 @@ import com.hzs.common.domain.member.detail.CuMemberAssess;
import com.hzs.common.domain.member.ext.CuBonusExpandExt; import com.hzs.common.domain.member.ext.CuBonusExpandExt;
import com.hzs.common.domain.member.ext.CuMemberSettleExt; import com.hzs.common.domain.member.ext.CuMemberSettleExt;
import com.hzs.common.domain.sale.ext.SaOrderExt; import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.sale.order.SaOrderItems;
import com.hzs.common.domain.system.config.BdAwards; import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.domain.system.config.BdGrade; import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.system.config.dto.BonusConfigDTO; import com.hzs.system.config.dto.BonusConfigDTO;
@ -35,12 +30,9 @@ import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* @Description: 计算复购的奖金处理类 * 计算复购的奖金处理类
* @Classname: BonusSettlePurchaseHandle
* @PackageName: com.hzs.member.bonus.service.impl
*/ */
@Slf4j @Slf4j
@Component @Component
@ -384,37 +376,13 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
*/ */
List<CuMemberBonusRange> calculateRepurchaseRangeBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate, Map<String, RangeDTO> rangeDtoMap, Map<String, BdAwards> awardsMap, List<CuMemberBonusRange> calculateRepurchaseRangeBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate, Map<String, RangeDTO> rangeDtoMap, Map<String, BdAwards> awardsMap,
BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period,
Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuAwardsControl> cuAwardsControlMap, LeXueRangeParam leXueRangeParam) { Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuAwardsControl> cuAwardsControlMap) {
// 计算复购极差的订单
// List<SaOrderExt> chinaRangeOrderList = new ArrayList<>();
// 计算乐学易考特殊复购极差的订单
List<SaOrderExt> specialOrderList = new ArrayList<>();
purchaseOrderList.forEach(saOrderExt -> {
/*if (Objects.equals(EOrderType.REPURCHASE_ORDER.getValue(), saOrderExt.getOrderType()) ||
Objects.equals(EOrderType.THIRD_ORDER.getValue(), saOrderExt.getOrderType())) {
rangeOrderList.add(saOrderExt);
} else */
if (Objects.equals(EOrderType.SPECIAL_REPURCHASE_ORDER.getValue(), saOrderExt.getOrderType())) {
// rangeOrderList.add(saOrderExt);
specialOrderList.add(saOrderExt);
}/* else if (Objects.equals(saOrderExt.getPkCountry(), CountryConstants.CHINA_COUNTRY)) {
if (!Objects.equals(EOrderType.FANS_ORDER.getValue(), saOrderExt.getOrderType()) &&
!Objects.equals(EOrderType.HAI_FUN_UPGRADE_ORDER.getValue(), saOrderExt.getOrderType())) {
chinaRangeOrderList.add(saOrderExt);
}
} else {
overseasRangeOrderList.add(saOrderExt);
}*/
});
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>(); List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
// 处理血缘上网体信息 // 处理血缘上网体信息
getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList); getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList);
// TODO new 乐学不需要考核相关 // 考核相关
// List<CuMemberSettleExt> cuMemberSettleExtList = getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList); // List<CuMemberSettleExt> cuMemberSettleExtList = getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList);
// Map<Long, CuMemberAssess> cuMemberAssessMap = getCuMemberAssessMap(cuMemberSettleExtMap, settleDate, cuMemberSettleExtList); // Map<Long, CuMemberAssess> cuMemberAssessMap = getCuMemberAssessMap(cuMemberSettleExtMap, settleDate, cuMemberSettleExtList);
Map<Long, CuMemberAssess> cuMemberAssessMap = null;
// if (chinaRangeOrderList.size() > 0) { // if (chinaRangeOrderList.size() > 0) {
// Map<String, List<SaOrderRangeDto>> saOrderRangeDtoMap = saOrderServiceApi.queryOrderRangeVO(chinaRangeOrderList).getData(); // Map<String, List<SaOrderRangeDto>> saOrderRangeDtoMap = saOrderServiceApi.queryOrderRangeVO(chinaRangeOrderList).getData();
// Map<String, RangeDTO> rangePkDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(rangeDtoMap.size())); // Map<String, RangeDTO> rangePkDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(rangeDtoMap.size()));
@ -487,104 +455,6 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
// } // }
// } // }
// } // }
// 乐学复购级差商品4个等级购买差价300这个位置进行拨出
if (specialOrderList.size() > 0) {
for (SaOrderExt saOrderExt : specialOrderList) {
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsExtList()) {
if (EYesNo.YES.getIntValue() == saOrderItems.getIsGift() || ComputeUtil.compareGreaterThan(MagicNumberConstants.LXYK_V3, saOrderItems.getPrice())) {
// 赠品或者商品价格小于2680不需要处理2380已经是V4价格了不存在往上拨出的极差
continue;
}
// 最大发放奖金
BigDecimal maxBonus;
if (ComputeUtil.compareValue(saOrderItems.getPrice(), MagicNumberConstants.LXYK_V1)) {
// 价格大于等于3280最多拨900
// 2025.04.28 需求调整去掉 V1 等级最低为2980最多拨600
maxBonus = MagicNumberConstants.LXYK_BONUS_600;
} else if (ComputeUtil.compareValue(saOrderItems.getPrice(), MagicNumberConstants.LXYK_V2)) {
// 价格大于等于2980最多拨600
maxBonus = MagicNumberConstants.LXYK_BONUS_600;
} else if (ComputeUtil.compareValue(saOrderItems.getPrice(), MagicNumberConstants.LXYK_V3)) {
// 价格大于等于2680最多拨拨300
maxBonus = MagicNumberConstants.LXYK_BONUS_300;
} else {
maxBonus = BigDecimal.ZERO;
}
// 获取血缘伞上的推荐人 一定要发完从推荐人开始发
// 当前会员
CuMemberSettleExt sourceMemberTree = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
// 累计发放奖金
BigDecimal grantBonus = BigDecimal.ZERO;
while (ComputeUtil.compareGreaterThan(maxBonus, grantBonus)) {
// 最大发放奖金 大于 累计发放奖金则继续处理
if (null == sourceMemberTree) {
break;
}
int pkGrade = sourceMemberTree.getPkGrade();
if (pkGrade == 3 || pkGrade == 4) {
// 如果是 V1 直接跳过开始计算 V2
// 2025.04.28 需求调整去掉 V1 等级V1 V2 就直接跳过开始计算V3
pkGrade = 5;
}
// 推荐人
CuMemberSettleExt parentMemberTree = cuMemberSettleExtMap.get(sourceMemberTree.getPkParent());
// 找血缘线上高等级推荐人
parentMemberTree = getSpecialRangeCuMemberTree(cuMemberSettleExtMap, bonusConfigDTO, sourceMemberTree, parentMemberTree, cuMemberAssessMap, pkGrade);
if (null == parentMemberTree) {
break;
}
// 级差奖金
BigDecimal rangeOrder = BigDecimal.ZERO;
// if (parentMemberTree.getPkGrade() == 4) {
// // V2 300
// // 2025.04.28 需求调整去掉 V1 等级V2 不需要拿了
// rangeOrder = MagicNumberConstants.LXYK_BONUS_300;
// } else
if (parentMemberTree.getPkGrade() == 5) {
// V3前没有V2拿600 V3前有V2拿300
// 2025.04.28 需求调整去掉 V1 等级V3 拿300
rangeOrder = MagicNumberConstants.LXYK_BONUS_300;
// if (ComputeUtil.computeSubtract(maxBonus, grantBonus).compareTo(new BigDecimal(900)) == 0) {
// rangeOrder = MagicNumberConstants.LXYK_BONUS_600;
// } else {
// rangeOrder = MagicNumberConstants.LXYK_BONUS_300;
// }
} else if (parentMemberTree.getPkGrade() == 6) {
// V4 拿剩下所有
rangeOrder = ComputeUtil.computeSubtract(maxBonus, grantBonus);
}
grantBonus = ComputeUtil.computeAdd(grantBonus, rangeOrder);
// 实际发放复购级差多个商品情况下需要乘商品数量
BigDecimal repurchaseRangeBonus = ComputeUtil.computeMultiply(rangeOrder, saOrderItems.getWaresQuantity());
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, parentMemberTree);
CuMemberBonusRange cuMemberBonusRange = getCuMemberBonusRange(bonusConfigDTO, saOrderExt, parentMemberTree, cuMemberBonus);
cuMemberBonusRange.setCalAchieve(saOrderExt.getOrderAchieve());
cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
cuMemberBonusRange.setPretaxIncome(repurchaseRangeBonus);
cuMemberBonusRange.setPkRange(0);
cuMemberBonusRange.setPkBeforeRange(0);
cuMemberBonusRange.setPkOrderItems(0L);
String remark = String.format(BonusMsgConstants.LE_SHARE_RANGE, saOrderExt.getOrderCode(),
sourceMemberTree.getMemberCode() + sourceMemberTree.getMemberName(),
parentMemberTree.getMemberCode() + parentMemberTree.getMemberName(), repurchaseRangeBonus);
cuMemberBonusRange.setRemark(remark);
// 封装复购级差处理明细扣项等
packageRepurchaseRange(bonusConfigDTO, cuMemberBonusRangeList, saOrderExt, cuMemberBonus, cuMemberBonusRange, repurchaseRangeBonus);
// 发放到最高级后跳出
if (parentMemberTree.getPkGrade() == 6) {
break;
}
sourceMemberTree = cuMemberSettleExtMap.get(parentMemberTree.getPkMember());
}
}
}
// 学特殊级差
calculateLeXueRangeBonus(settleTableName, rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, leXueRangeParam, specialOrderList, cuMemberBonusRangeList);
}
return cuMemberBonusRangeList; return cuMemberBonusRangeList;
} }
@ -609,285 +479,6 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
cuMemberBonusRangeList.add(cuMemberBonusRange); cuMemberBonusRangeList.add(cuMemberBonusRange);
} }
/**
* 乐学特殊复购级差根据法宝券进行计算奖金
* 每个等级最多拨出一张法宝券给200奖金遇到V4为止
* 如果购买时会员没有使用券那么同等级也可以拨出一张
*
* @param settleTableName
* @param rangeDtoMap
* @param bonusConfigDTO
* @param period
* @param cuMemberBonusMap
* @param leXueRangeParam
* @param specialOrderList
* @param cuMemberBonusRangeList
*/
private void calculateLeXueRangeBonus(String settleTableName, Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO,
Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, LeXueRangeParam leXueRangeParam,
List<SaOrderExt> specialOrderList, List<CuMemberBonusRange> cuMemberBonusRangeList) {
// 旧逻辑 计算乐学易考特殊复购极差找第一个vipsvip找到有代金券代金券-1奖金给金额第一个是svip后就不给
if (specialOrderList.size() > 0) {
// 查找订单血缘上会员
Set<Long> expandMemberSet = specialOrderList.stream().distinct().map(SaOrderExt::getPkMember).collect(Collectors.toSet());
List<CuMemberSettleExt> specialMemberSettleExtList = iCuMemberTreeService.batchQueryCuMemberSettleParentForSpecial(settleTableName, expandMemberSet);
// 重算的时候首先先把数量还回来在重新计算查询订单扣除的记录
List<AcPickMemberLog> acPickMemberLogList = iAcPickServiceApi.queryPickMemberLog(specialOrderList).getData();
// key: 会员ID + 提货专区ID
Map<String, AcPickMemberLog> pickMemberLogMap = new HashMap<>(ComputeUtil.mapInitCapacity(acPickMemberLogList.size()));
if (CollectionUtil.isNotEmpty(acPickMemberLogList)) {
acPickMemberLogList.forEach(acPickMemberLog -> pickMemberLogMap.put(acPickMemberLog.getPkMember().toString() + acPickMemberLog.getPkPick(), acPickMemberLog));
leXueRangeParam.setAcPickMemberLogList(acPickMemberLogList);
}
// 初始化父类网体的值
Map<Long, CuMemberSettleExt> specialmeberSettleExtMap = new HashMap<>();
getMemberSettle(specialmeberSettleExtMap, specialMemberSettleExtList);
// 还原数量
specialmeberSettleExtMap.forEach((pkMember, cumemberSettleExt) -> {
String key = pkMember.toString() + cumemberSettleExt.getApPkId();
if (pickMemberLogMap.containsKey(key)) {
cumemberSettleExt.setUsableQuantity(cumemberSettleExt.getUsableQuantity() + pickMemberLogMap.get(key).getPickQuantity());
}
});
List<AcPickExt> acPickExtList = new ArrayList<>();
for (SaOrderExt saOrderExt : specialOrderList) {
// 商品使用法宝券数量key: 商品IDvalue 法宝券数量
Map<Integer, Integer> productPickMap = new HashMap<>();
for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) {
if (null != saOrderItemsExt.getUsePick() && saOrderItemsExt.getUsePick() != 0) {
productPickMap.put(saOrderItemsExt.getPkWares(), saOrderItemsExt.getUsePick());
}
}
for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) {
if (EYesNo.YES.getIntValue() == saOrderItemsExt.getIsGift()
|| ComputeUtil.compareEqual(saOrderItemsExt.getPrice(), BigDecimal.ZERO)
|| ComputeUtil.compareEqual(saOrderItemsExt.getAchievement(), BigDecimal.ZERO)) {
// 赠品 或者 金额为0 或者 业绩为0 则不进行处理
continue;
}
// 订单对应的会员
CuMemberSettleExt sourceMemberSettleExt = specialmeberSettleExtMap.get(saOrderExt.getPkMember());
if (null == sourceMemberSettleExt) {
break;
}
if (validatePkBonusItems(bonusConfigDTO, sourceMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_RANGE_INCOME.getValue())) {
// 没有这个奖项直接退出
break;
}
// 当前订单明细使用了法宝券
Integer useNum = productPickMap.get(saOrderItemsExt.getPkWares());
if (null != useNum) {
// 订单使用了法宝券
if (useNum.equals(saOrderItemsExt.getWaresQuantity())) {
// 法宝券和商品数量一致
this.usePick(specialmeberSettleExtMap, rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
sourceMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
} else {
// 法宝券和商品数量不一致需要拆分处理
// 使用法宝券部分处理
SaOrderItemsExt tmpItems1 = BeanUtil.copyProperties(saOrderItemsExt, SaOrderItemsExt.class);
tmpItems1.setWaresQuantity(useNum);
tmpItems1.setUsePick(useNum);
this.usePick(specialmeberSettleExtMap, rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, tmpItems1,
sourceMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
// 未使用法宝券部分处理
SaOrderItemsExt tmpItems2 = BeanUtil.copyProperties(saOrderItemsExt, SaOrderItemsExt.class);
tmpItems2.setWaresQuantity(saOrderItemsExt.getWaresQuantity() - useNum);
tmpItems2.setUsePick(saOrderItemsExt.getWaresQuantity() - useNum);
this.notUsePick(specialmeberSettleExtMap, rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, tmpItems2,
sourceMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
}
} else {
// 没使用法宝券
this.notUsePick(specialmeberSettleExtMap, rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
sourceMemberSettleExt, cuMemberBonusRangeList, acPickExtList);
}
}
}
if (acPickExtList.size() > 0) {
leXueRangeParam.setAcPickExtList(acPickExtList);
}
}
}
/**
* 使用法宝券处理
*/
private void usePick(Map<Long, CuMemberSettleExt> specialmeberSettleExtMap, Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO, Integer period,
Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, SaOrderItemsExt saOrderItemsExt, CuMemberSettleExt sourceMemberSettleExt,
List<CuMemberBonusRange> cuMemberBonusRangeList, List<AcPickExt> acPickExtList) {
// 订单会员推荐人
Long pkParent = sourceMemberSettleExt.getPkParent();
// 订单会员等级
int gradeValue = sourceMemberSettleExt.getGradeValue();
// 找不到父级了或者找到第一个svip直接跳出
boolean V2Flag = Boolean.TRUE;
boolean V3Flag = Boolean.TRUE;
while (true) {
CuMemberSettleExt targetMemberSettleExt = specialmeberSettleExtMap.get(pkParent);
if (null == targetMemberSettleExt) {
// 上面没有推荐人了直接结束
break;
}
// 法宝券和商品数量一致
if (gradeValue < targetMemberSettleExt.getGradeValue() && EGrade.MAKER.getValue() == targetMemberSettleExt.getGradeValue() && V2Flag && V3Flag) {
// 订单会员等级小于推荐人等级 并且 推荐人是 V2 并且 V2 V3 都没有算过
if (this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList)) {
V2Flag = Boolean.FALSE;
}
} else if (gradeValue < targetMemberSettleExt.getGradeValue() && EGrade.VIP.getValue() == targetMemberSettleExt.getGradeValue() && V3Flag) {
// 订单会员等级小于推荐人等级 并且 推荐人是 V3 并且 V3没有算过
if (this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList)) {
V3Flag = Boolean.FALSE;
}
} else if (gradeValue < targetMemberSettleExt.getGradeValue() && EGrade.S_VIP.getValue() == targetMemberSettleExt.getGradeValue()) {
// 订单会员等级小于推荐人等级 并且 推荐人是 V4
if (this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList)) {
break;
}
}
pkParent = targetMemberSettleExt.getPkParent();
sourceMemberSettleExt = targetMemberSettleExt;
}
}
/**
* 未使用法宝券处理
*/
private void notUsePick(Map<Long, CuMemberSettleExt> specialmeberSettleExtMap, Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO, Integer period,
Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, SaOrderItemsExt saOrderItemsExt, CuMemberSettleExt sourceMemberSettleExt,
List<CuMemberBonusRange> cuMemberBonusRangeList, List<AcPickExt> acPickExtList) {
// 订单会员推荐人
Long pkParent = sourceMemberSettleExt.getPkParent();
// 订单会员等级
int gradeValue = sourceMemberSettleExt.getGradeValue();
// 找不到父级了或者找到第一个svip直接跳出
boolean V1Flag = Boolean.TRUE;
boolean V2Flag = Boolean.TRUE;
boolean V3Flag = Boolean.TRUE;
while (true) {
CuMemberSettleExt targetMemberSettleExt = specialmeberSettleExtMap.get(pkParent);
if (null == targetMemberSettleExt) {
// 上面没有推荐人了直接结束
break;
}
// 法宝券和商品数量一致
if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.YOU_KE.getValue() == targetMemberSettleExt.getGradeValue() && V1Flag && V2Flag && V3Flag) {
// 订单会员等级小于推荐人等级 并且 推荐人是 V1 并且 V1 V2 V3 都没有算过
if (this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList)) {
V1Flag = Boolean.FALSE;
}
} else if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.MAKER.getValue() == targetMemberSettleExt.getGradeValue() && V2Flag && V3Flag) {
// 订单会员等级小于推荐人等级 并且 推荐人是 V2 并且 V2 V3 都没有算过
if (this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList)) {
V2Flag = Boolean.FALSE;
}
} else if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.VIP.getValue() == targetMemberSettleExt.getGradeValue() && V3Flag) {
// 订单会员等级小于推荐人等级 并且 推荐人是 V3 并且 V3没有算过
if (this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList)) {
V3Flag = Boolean.FALSE;
}
} else if (gradeValue <= targetMemberSettleExt.getGradeValue() && EGrade.S_VIP.getValue() == targetMemberSettleExt.getGradeValue()) {
// 订单会员等级小于推荐人等级 并且 推荐人是 V4
if (this.handlePick(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt,
sourceMemberSettleExt, targetMemberSettleExt, cuMemberBonusRangeList, acPickExtList)) {
break;
}
}
pkParent = targetMemberSettleExt.getPkParent();
sourceMemberSettleExt = targetMemberSettleExt;
}
}
/**
* 封装法宝券抵扣相关
*/
private boolean handlePick(Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
SaOrderExt saOrderExt, SaOrderItemsExt saOrderItemsExt, CuMemberSettleExt sourceMemberSettleExt, CuMemberSettleExt targetMemberSettleExt,
List<CuMemberBonusRange> cuMemberBonusRangeList, List<AcPickExt> acPickExtList) {
AcPickExt acPickExt = calculateRangeBonus(rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, saOrderItemsExt, sourceMemberSettleExt,
targetMemberSettleExt, cuMemberBonusRangeList);
if (null != acPickExt) {
acPickExtList.add(acPickExt);
return true;
}
return false;
}
/**
* 计算封装乐学复购特殊级差法宝券返回扣除提货法宝券
*
* @param rangeDtoMap
* @param bonusConfigDTO
* @param period
* @param cuMemberBonusMap
* @param saOrderExt
* @param saOrderItemsExt
* @param sourceMemberSettleExt
* @param targetMemberSettleExt
* @param cuMemberBonusRangeList
* @return
*/
private AcPickExt calculateRangeBonus(Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO, Integer period,
Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, SaOrderItemsExt saOrderItemsExt,
CuMemberSettleExt sourceMemberSettleExt, CuMemberSettleExt targetMemberSettleExt,
List<CuMemberBonusRange> cuMemberBonusRangeList) {
if (targetMemberSettleExt.getUsableQuantity() != null && targetMemberSettleExt.getUsableQuantity() > 0) {
// 扣减数量如果剩余法宝券 大于等于 商品数量则使用商品数量否则使用法宝券数量
int waresQuantity = targetMemberSettleExt.getUsableQuantity() >= saOrderItemsExt.getWaresQuantity() ? saOrderItemsExt.getWaresQuantity() : targetMemberSettleExt.getUsableQuantity();
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
CuMemberBonusRange cuMemberBonusRange = getCuMemberBonusRange(bonusConfigDTO, saOrderExt, targetMemberSettleExt, cuMemberBonus);
cuMemberBonusRange.setCalAchieve(saOrderItemsExt.getAchievement());
cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeMultiply(BigDecimal.valueOf(waresQuantity),
ComputeUtil.computeDivide(targetMemberSettleExt.getRetailPrice(), BigDecimal.valueOf(1))));
String key = targetMemberSettleExt.getPkSettleCountry().toString() + ERangeType.GRADE.getValue() + targetMemberSettleExt.getPkGrade();
cuMemberBonusRange.setPkRange(rangeDtoMap.get(key).getPkRange());
String beforeKey = targetMemberSettleExt.getPkSettleCountry().toString() + ERangeType.GRADE.getValue() + targetMemberSettleExt.getPkGrade();
cuMemberBonusRange.setPkBeforeRange(rangeDtoMap.get(beforeKey).getPkRange());
cuMemberBonusRange.setIncomeRatio(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(cuMemberBonusRange.getPretaxIncome(), BigDecimal.valueOf(1)), saOrderExt.getOrderAmount()));
cuMemberBonusRange.setPkOrderItems(0L);
// 计算比例
cuMemberBonusRange.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_RANGE_INCOME.getValue()));
// 收益占比
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
xueRangeRemark(saOrderExt, cuMemberBonusRange, sourceMemberSettleExt, targetMemberSettleExt);
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
cuMemberBonus.setRepurRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRepurRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
setPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
}
cuMemberBonusRangeList.add(cuMemberBonusRange);
targetMemberSettleExt.setUsableQuantity(targetMemberSettleExt.getUsableQuantity() - waresQuantity);
AcPickExt acPickExt = new AcPickExt();
acPickExt.setPkId(targetMemberSettleExt.getApPkId());
acPickExt.setPkMember(targetMemberSettleExt.getPkMember());
acPickExt.setOrderCode(saOrderExt.getOrderCode());
acPickExt.setPickType(EPickType.COUPON.getValue());
acPickExt.setUsedQuantity(waresQuantity);
acPickExt.setPkBaseConfig(0L);
acPickExt.setPkDataId(targetMemberSettleExt.getPkDataId());
return acPickExt;
}
return null;
}
/** /**
* 乐学复购极差找下一个等级的推荐人 * 乐学复购极差找下一个等级的推荐人
* *

View File

@ -3,7 +3,6 @@ package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.hzs.activity.pick.IAcPickServiceApi;
import com.hzs.bonus.achieve.param.MemberAchieveParam; import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.bonus.achieve.service.ICuMemberAchieveService; import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
import com.hzs.bonus.achieve.service.ICuMemberRangeService; import com.hzs.bonus.achieve.service.ICuMemberRangeService;
@ -14,12 +13,10 @@ import com.hzs.bonus.base.service.ICuMemberAchieveLogService;
import com.hzs.bonus.base.service.ICuMemberService; import com.hzs.bonus.base.service.ICuMemberService;
import com.hzs.bonus.bonus.param.BdWaresBonusParam; import com.hzs.bonus.bonus.param.BdWaresBonusParam;
import com.hzs.bonus.bonus.param.BonusExpandParam; import com.hzs.bonus.bonus.param.BonusExpandParam;
import com.hzs.bonus.bonus.param.LeXueRangeParam;
import com.hzs.bonus.bonus.service.*; import com.hzs.bonus.bonus.service.*;
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO; import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
import com.hzs.bonus.bonus.vo.MemberBonusDetailCalVO; import com.hzs.bonus.bonus.vo.MemberBonusDetailCalVO;
import com.hzs.bonus.detail.service.ICuMemberAwardsService; import com.hzs.bonus.detail.service.ICuMemberAwardsService;
import com.hzs.bonus.detail.service.ICuMemberLevelService;
import com.hzs.bonus.risk.service.ICuMemberRiskControlService; import com.hzs.bonus.risk.service.ICuMemberRiskControlService;
import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService; import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService;
import com.hzs.common.core.config.BdConfig; import com.hzs.common.core.config.BdConfig;
@ -90,8 +87,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
IMemberServiceApi iMemberServiceApi; IMemberServiceApi iMemberServiceApi;
@DubboReference @DubboReference
ISaOrderServiceApi iSaOrderServiceApi; ISaOrderServiceApi iSaOrderServiceApi;
@DubboReference
IAcPickServiceApi iAcPickServiceApi;
@Autowired @Autowired
private ICuMemberTreeService iCuMemberTreeService; private ICuMemberTreeService iCuMemberTreeService;
@ -100,8 +95,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
@Autowired @Autowired
private ICuMemberAwardsService iCuMemberAwardsService; private ICuMemberAwardsService iCuMemberAwardsService;
@Autowired @Autowired
private ICuMemberLevelService iCuMemberLevelService;
@Autowired
private ICuMemberService iCuMemberService; private ICuMemberService iCuMemberService;
@Autowired @Autowired
private ICuMemberAchieveLogService iCuMemberAchieveLogService; private ICuMemberAchieveLogService iCuMemberAchieveLogService;
@ -299,7 +292,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// c)增加奖衔记录表 // c)增加奖衔记录表
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData(); Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap, List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap,
bonusConfigDTO, Collections.singletonList(saOrderExt), period, cuMemberBonusMap, cuAwardsControlMap, new LeXueRangeParam()); bonusConfigDTO, Collections.singletonList(saOrderExt), period, cuMemberBonusMap, cuAwardsControlMap);
if (cuMemberBonusMap.size() > 0) { if (cuMemberBonusMap.size() > 0) {
saveCuMemberBonus(period, settleDate, cuMemberBonusMap); saveCuMemberBonus(period, settleDate, cuMemberBonusMap);
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period); Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
@ -356,7 +349,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
} }
/** /**
* @Description: 每日计算会员奖金最终的奖金 * 每日计算会员奖金最终的奖金
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -477,8 +470,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 奖金记录明细统一入库使用 // 奖金记录明细统一入库使用
BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO(); BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO();
// 计算奖金主入口 // 计算奖金主入口
// 乐学易考奖金计算回写代金券数量 calculateBonusBySaOrderList(settleDate, period, yesterdayPeriod, currentSettleTableName,
LeXueRangeParam leXueRangeParam = calculateBonusBySaOrderList(settleDate, period, yesterdayPeriod, currentSettleTableName,
firPurchaseOrderList, repurchaseOrderList, mallOrderList, awardsMap, gradeMap, bonusConfigDTO, cuMemberBonusMap, firPurchaseOrderList, repurchaseOrderList, mallOrderList, awardsMap, gradeMap, bonusConfigDTO, cuMemberBonusMap,
recordDetailVO, cuMemberSettleExtMap, expandOrderList, newExpandFlag); recordDetailVO, cuMemberSettleExtMap, expandOrderList, newExpandFlag);
// 计算复购券 // 计算复购券
@ -559,15 +551,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
} }
// 奖金计算结束统计拨比业绩4-N拨比 // 奖金计算结束统计拨比业绩4-N拨比
iCuBonusExpandService.updateCuBonusExpandRatio(BonusExpandParam.builder().settleDate(DateUtils.parseStringToDate(settleDate)).build(), "cu_member_bonus"); iCuBonusExpandService.updateCuBonusExpandRatio(BonusExpandParam.builder().settleDate(DateUtils.parseStringToDate(settleDate)).build(), "cu_member_bonus");
if (leXueRangeParam != null) {
// 乐学相关处理提货数据
if (CollectionUtil.isNotEmpty(leXueRangeParam.getAcPickExtList())) {
if (!iAcPickServiceApi.updatePickUse(leXueRangeParam.getAcPickExtList(), leXueRangeParam.getAcPickMemberLogList()).getData()) {
throw new RuntimeException("更新提货专区数量失败");
}
}
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
throw new RuntimeException(e); throw new RuntimeException(e);
@ -794,12 +777,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
* @param cuMemberSettleExtMap 会员结算map * @param cuMemberSettleExtMap 会员结算map
* @param expandOrderList 拓展收益订单首购+复购 * @param expandOrderList 拓展收益订单首购+复购
*/ */
private LeXueRangeParam calculateBonusBySaOrderList(String settleDate, Integer period, Integer yesterdayPeriod, String settleTableName, private void calculateBonusBySaOrderList(String settleDate, Integer period, Integer yesterdayPeriod, String settleTableName,
List<SaOrderExt> firPurchaseOrderList, List<SaOrderExt> repurchaseOrderList, List<SaOrderExt> mallOrderList, List<SaOrderExt> firPurchaseOrderList, List<SaOrderExt> repurchaseOrderList, List<SaOrderExt> mallOrderList,
Map<String, BdAwards> awardsMap, Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO, Map<String, BdAwards> awardsMap, Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO,
Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<SaOrderExt> expandOrderList, boolean newExpandFlag) { Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<SaOrderExt> expandOrderList, boolean newExpandFlag) {
LeXueRangeParam leXueRangeParam = null;
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap(); Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period); Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData(); Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
@ -822,7 +804,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 先计算复购在计算首购 // 先计算复购在计算首购
// 计算复购 // 计算复购
if (CollectionUtil.isNotEmpty(repurchaseOrderList)) { if (CollectionUtil.isNotEmpty(repurchaseOrderList)) {
leXueRangeParam = calculatePurchaseOrder(riskControlMap, cuMemberSettleExtMap, settleTableName, settleDate, systemConfigMap, bonusConfigDTO, calculatePurchaseOrder(riskControlMap, cuMemberSettleExtMap, settleTableName, settleDate, systemConfigMap, bonusConfigDTO,
repurchaseOrderList, period, weekMemberBonusMap, cuMemberBonusMap, bonusRecordDetailVO, awardsMap, awardsList, cuAwardsControlMap, cuBonusExpandExtMap, rangeDtoMap, repurchaseOrderList, period, weekMemberBonusMap, cuMemberBonusMap, bonusRecordDetailVO, awardsMap, awardsList, cuAwardsControlMap, cuBonusExpandExtMap, rangeDtoMap,
newExpandFlag); newExpandFlag);
} }
@ -861,8 +843,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
cuMemberBonusCoach.setIncomeDialRatio(BigDecimal.ZERO); cuMemberBonusCoach.setIncomeDialRatio(BigDecimal.ZERO);
cuMemberBonusCoach.setOrderDialRatio(BigDecimal.ZERO); cuMemberBonusCoach.setOrderDialRatio(BigDecimal.ZERO);
}); });
return leXueRangeParam;
} }
private Map<Long, CuMemberBonus> getWeekMemberBonusMap(String settleDate, Integer period) { private Map<Long, CuMemberBonus> getWeekMemberBonusMap(String settleDate, Integer period) {
@ -1171,7 +1151,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
* @param purchaseOrderList 复购订单 * @param purchaseOrderList 复购订单
* @param rangeDtoMap 乐学奖金使用的汇率map * @param rangeDtoMap 乐学奖金使用的汇率map
*/ */
private LeXueRangeParam calculatePurchaseOrder(Map<Long, CuMemberRiskControl> riskControlMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate, private void calculatePurchaseOrder(Map<Long, CuMemberRiskControl> riskControlMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate,
Map<String, String> systemConfigMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period, Map<String, String> systemConfigMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period,
Map<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO, Map<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
Map<String, BdAwards> awardsMap, List<BdAwards> awardsList, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap, Map<String, BdAwards> awardsMap, List<BdAwards> awardsList, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap,
@ -1208,10 +1188,9 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberBonusCoachList); bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberBonusCoachList);
} }
//****************************乐学极差(复购)*****************************/ //****************************复购极差*****************************/
LeXueRangeParam leXueRangeParam = new LeXueRangeParam();
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap, List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap,
bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap, cuAwardsControlMap, leXueRangeParam); bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap, cuAwardsControlMap);
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList); bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
Map<Long, MemberBonusDetailCalVO> memberBonusDetailCalVoMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size())); Map<Long, MemberBonusDetailCalVO> memberBonusDetailCalVoMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size()));
@ -1262,8 +1241,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
cuMemberBonusRange.setIncomeDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRepRangeIncome(), memberBonusDetailCalVO.getRealIncome())); cuMemberBonusRange.setIncomeDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRepRangeIncome(), memberBonusDetailCalVO.getRealIncome()));
cuMemberBonusRange.setOrderDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRealIncome(), saOrderExt.getOrderAmount())); cuMemberBonusRange.setOrderDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRealIncome(), saOrderExt.getOrderAmount()));
}); });
// 插入奖金表 奖金明细表
return leXueRangeParam;
} }
/** /**
@ -1317,7 +1294,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
} }
/** /**
* @Description: 计算嗨粉订单的奖金 * 计算嗨粉订单的奖金
*
* @return: void * @return: void
*/ */
private void calculateHiFunOrder(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, Map<String, RangeDTO> rangeDtoMap, private void calculateHiFunOrder(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, Map<String, RangeDTO> rangeDtoMap,
@ -1354,7 +1332,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
} }
/** /**
* @Description: 计算订单奖金累计值 * 计算订单奖金累计值
*
* @return: void * @return: void
*/ */
private MemberBonusDetailCalVO calculateOrderRatio(Map<Long, MemberBonusDetailCalVO> memberBonusDetailVoMap, Object cuMemberBonus) { private MemberBonusDetailCalVO calculateOrderRatio(Map<Long, MemberBonusDetailCalVO> memberBonusDetailVoMap, Object cuMemberBonus) {

View File

@ -66,42 +66,17 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
private ICuMemberTreeService iCuMemberTreeService; private ICuMemberTreeService iCuMemberTreeService;
@Autowired @Autowired
private IBonusSettleService iBonusSettleService; private IBonusSettleService iBonusSettleService;
@Autowired
private CuMemberBonusDetailMapper cuMemberBonusDetailMapper; private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
@Autowired
private CuMemberBonusPushMapper cuMemberBonusPushMapper; private CuMemberBonusPushMapper cuMemberBonusPushMapper;
@Autowired
private CuMemberBonusExpandMapper cuMemberBonusExpandMapper; private CuMemberBonusExpandMapper cuMemberBonusExpandMapper;
@Autowired
private CuMemberBonusCoachMapper cuMemberBonusCoachMapper; private CuMemberBonusCoachMapper cuMemberBonusCoachMapper;
@Autowired
private CuMemberBonusRangeMapper cuMemberBonusRangeMapper; private CuMemberBonusRangeMapper cuMemberBonusRangeMapper;
@Autowired
public void setCuMemberBonusPushMapper(CuMemberBonusPushMapper cuMemberBonusPushMapper) {
this.cuMemberBonusPushMapper = cuMemberBonusPushMapper;
}
@Autowired
public void setCuMemberBonusExpandMapper(CuMemberBonusExpandMapper cuMemberBonusExpandMapper) {
this.cuMemberBonusExpandMapper = cuMemberBonusExpandMapper;
}
@Autowired
public void setCuMemberBonusCoachMapper(CuMemberBonusCoachMapper cuMemberBonusCoachMapper) {
this.cuMemberBonusCoachMapper = cuMemberBonusCoachMapper;
}
@Autowired
public void setCuMemberBonusRangeMapper(CuMemberBonusRangeMapper cuMemberBonusRangeMapper) {
this.cuMemberBonusRangeMapper = cuMemberBonusRangeMapper;
}
@Autowired
public void setCuMemberBonusDetailMapper(CuMemberBonusDetailMapper cuMemberBonusDetailMapper) {
this.cuMemberBonusDetailMapper = cuMemberBonusDetailMapper;
}
@Override @Override
public List<Long> batchQueryCuMemberBonusSeq(Integer rowNum) { public List<Long> batchQueryCuMemberBonusSeq(Integer rowNum) {
return baseMapper.batchQueryCuMemberBonusSeq(rowNum); return baseMapper.batchQueryCuMemberBonusSeq(rowNum);

View File

@ -127,23 +127,6 @@ public class ApiPickController extends BaseController {
.quantity(quantity) .quantity(quantity)
.build()); .build());
break; break;
// case MAKER_SEA_BUCKTHORN:
// case REPURCHASE_PICK:
// // 迁移创客沙棘提货迁移复购提货处理
// if (quantity % acPick.getBaseQuantity() != 0) {
// // 提货数量只能为%s的倍数
// return AjaxResult.error(TransactionUtils.getContent(ActivityMsgConstants.PICK_QUANTITY_BASE, acPick.getBaseQuantity()));
// }
// // 查询产品
// ProductDTO seaProductDTO = iProductServiceApi.getProduct(acPick.getPkDataId().intValue()).getData();
// // 处理提货产品明细
// detailList.add(ApiPickDetailVO.builder()
// .productName(seaProductDTO.getProductName())
// .specsName(acPick.getSpecsName())
// .cover(StringUtils.isNotEmpty(acPick.getPickCover()) ? acPick.getPickCover() : seaProductDTO.getCover())
// .quantity(quantity)
// .build());
// break;
case LOTTERY_DRAW: case LOTTERY_DRAW:
case CONSUMPTION_GIFT: case CONSUMPTION_GIFT:
case DIRECT_PUSH_GIFT: case DIRECT_PUSH_GIFT:
@ -309,33 +292,6 @@ public class ApiPickController extends BaseController {
productOrderItems.setPkStorehouse(saOrder.getPkStorehouse()); productOrderItems.setPkStorehouse(saOrder.getPkStorehouse());
orderItemsList.add(productOrderItems); orderItemsList.add(productOrderItems);
break; break;
// case MAKER_SEA_BUCKTHORN:
// case REPURCHASE_PICK:
// // 迁移创客沙棘提货迁移复购提货处理
// if (param.getQuantity() % acPick.getBaseQuantity() != 0) {
// // 提货数量只能为%s的倍数
// return AjaxResult.error(TransactionUtils.getContent(ActivityMsgConstants.PICK_QUANTITY_BASE, acPick.getBaseQuantity()));
// }
// // 查询产品信息
// ProductDTO msbProductDTO = iProductServiceApi.getProduct(acPick.getPkDataId().intValue()).getData();
//
// // 处理提货产品明细
// SaOrderItems msbOrderItems = new SaOrderItems();
// msbOrderItems.setPkProduct(acPick.getPkDataId().intValue());
// msbOrderItems.setPkRate(currencyDTO.getPkId());
// msbOrderItems.setQuantity(param.getQuantity());
// msbOrderItems.setPkGrade(cuMember.getPkSettleGrade());
// msbOrderItems.setPkAwards(cuMember.getPkAwards());
// msbOrderItems.setOrderStatus(EOrderStatus.PAY.getValue());
// msbOrderItems.setPkCreator(userId);
// msbOrderItems.setCreationTime(nowDate);
// msbOrderItems.setSpecsName(acPick.getSpecsName());
// msbOrderItems.setSpecsNameId(acPick.getSpecsNameId());
// msbOrderItems.setPkCountry(pkCountry);
// msbOrderItems.setWaresQuantity(param.getQuantity());
// msbOrderItems.setSkuCode(CommonUtil.createSkuCode(msbProductDTO.getProductCode(), acPick.getSpecsNameId()));
// orderItemsList.add(msbOrderItems);
// break;
case LOTTERY_DRAW: case LOTTERY_DRAW:
case CONSUMPTION_GIFT: case CONSUMPTION_GIFT:
case DIRECT_PUSH_GIFT: case DIRECT_PUSH_GIFT:

View File

@ -38,11 +38,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* @Description: 提货处理控制器 * 提货处理控制器
* @Author: jiang chao
* @Time: 2023/4/21 17:59
* @Classname: AcPickController
* @PackageName: com.hzs.activity.pick.controller.manage
*/ */
@RequestMapping("/manage/pick") @RequestMapping("/manage/pick")
@RestController @RestController
@ -96,9 +92,8 @@ public class AcPickController extends BaseController {
acPickQueryVO.setPickTypeVal(EPickType.getEnumByValue(acPickQueryVO.getPickType()).getLabel()); acPickQueryVO.setPickTypeVal(EPickType.getEnumByValue(acPickQueryVO.getPickType()).getLabel());
if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType() if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType()) {
|| EPickType.COUPON.getValue() == acPickExt.getPickType()) { // 提货产品
// 提货产品乐学易考代金券
acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder() acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder()
.productName(acPickExt.getProductName()) .productName(acPickExt.getProductName())
.quantity(acPickExt.getBaseQuantity()) .quantity(acPickExt.getBaseQuantity())
@ -159,8 +154,7 @@ public class AcPickController extends BaseController {
acPickQueryVO.setPickTypeVal(EPickType.getEnumByValue(acPickQueryVO.getPickType()).getLabel()); acPickQueryVO.setPickTypeVal(EPickType.getEnumByValue(acPickQueryVO.getPickType()).getLabel());
if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType() if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType()) {
|| EPickType.COUPON.getValue() == acPickExt.getPickType()) {
// 产品处理 // 产品处理
acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder() acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder()
.productName(acPickExt.getProductName()) .productName(acPickExt.getProductName())
@ -204,7 +198,7 @@ public class AcPickController extends BaseController {
AcPickExt acPickExt = iAcPickService.queryDetail(pkId, pkCountry); AcPickExt acPickExt = iAcPickService.queryDetail(pkId, pkCountry);
if (null != acPickExt) { if (null != acPickExt) {
acPickQueryVO = BeanUtil.copyProperties(acPickExt, AcPickQueryVO.class); acPickQueryVO = BeanUtil.copyProperties(acPickExt, AcPickQueryVO.class);
if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType() || EPickType.COUPON.getValue() == acPickExt.getPickType()) { if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType()) {
// 产品处理 // 产品处理
acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder() acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder()
.pkProduct(acPickExt.getPkDataId().intValue()) .pkProduct(acPickExt.getPkDataId().intValue())

View File

@ -13,9 +13,6 @@ import java.util.List;
/** /**
* 提货基础表 Mapper 接口 * 提货基础表 Mapper 接口
*
* @author hzs
* @since 2023-04-21
*/ */
public interface AcPickMapper extends BaseMapper<AcPick> { public interface AcPickMapper extends BaseMapper<AcPick> {
@ -53,25 +50,6 @@ public interface AcPickMapper extends BaseMapper<AcPick> {
@Param("quantity") Integer quantity, @Param("quantity") Integer quantity,
@Param("pkModified") Long pkModified); @Param("pkModified") Long pkModified);
/**
* 根据会员和类型回退使用数量
*
* @param pkMember 会员ID
* @param pickType 提货类型
* @param pkBaseConfig 活动配置ID产品时为0 -- 可为null
* @param pkDataId 数据ID产品为产品ID活动为活动ID -- 可为null
* @param quantity 数量
* @param pkModified 操作人
* @return
*/
int updatePickUsableByMember(@Param("pkMember") Long pkMember,
@Param("pickType") Integer pickType,
@Param("pkBaseConfig") Long pkBaseConfig,
@Param("pkDataId") Long pkDataId,
@Param("quantity") Integer quantity,
@Param("pkModified") Long pkModified);
/** /**
* 根据会员和活动类型回退使用数量 * 根据会员和活动类型回退使用数量
* *
@ -101,14 +79,6 @@ public interface AcPickMapper extends BaseMapper<AcPick> {
int updatePickUseBatch(@Param("list") List<AcPickExt> acPickExtList, int updatePickUseBatch(@Param("list") List<AcPickExt> acPickExtList,
@Param("quantity") Integer quantity); @Param("quantity") Integer quantity);
/**
* 批量更新使用数量
*
* @param acPickExtList 批量更新数据
* @return
*/
int updatePickUseCouponBatch(@Param("list") List<AcPickExt> acPickExtList);
/** /**
* 批量更新使用数量 * 批量更新使用数量
* *
@ -116,14 +86,6 @@ public interface AcPickMapper extends BaseMapper<AcPick> {
*/ */
int updateBackPickUseBatch(@Param("list") List<AcPickMemberLog> acPickMemberLogList); int updateBackPickUseBatch(@Param("list") List<AcPickMemberLog> acPickMemberLogList);
/**
* 根据主键更新提货数量
*
* @param acPick
* @return
*/
int updatePickQuantityByPkId(@Param("acPick") AcPick acPick);
/** /**
* 根据主键更新提货数据 * 根据主键更新提货数据
* *
@ -168,16 +130,6 @@ public interface AcPickMapper extends BaseMapper<AcPick> {
*/ */
List<ApiPickListVO> pickList(@Param("pkMember") Long pkMember, @Param("pkCountry") Integer pkCountry); List<ApiPickListVO> pickList(@Param("pkMember") Long pkMember, @Param("pkCountry") Integer pkCountry);
/**
* 更新代言礼包提货数据
*
* @param pkMember 会员ID
* @param pkProduct 产品ID
* @param usableQuantity 更新数量
* @return
*/
int updateRepurchasePick(@Param("pkMember") Long pkMember, @Param("pkProduct") Long pkProduct, @Param("usableQuantity") Integer usableQuantity);
/** /**
* 撤单扣减乐学代金券 * 撤单扣减乐学代金券
* *

View File

@ -10,9 +10,6 @@ import java.util.List;
/** /**
* 会员提货记录 Mapper 接口 * 会员提货记录 Mapper 接口
*
* @author hzs
* @since 2023-05-15
*/ */
public interface AcPickMemberLogMapper extends BaseMapper<AcPickMemberLog> { public interface AcPickMemberLogMapper extends BaseMapper<AcPickMemberLog> {
@ -36,20 +33,8 @@ public interface AcPickMemberLogMapper extends BaseMapper<AcPickMemberLog> {
@Param("quantity") Integer quantity, @Param("quantity") Integer quantity,
@Param("source") Integer source); @Param("source") Integer source);
/**
* 批量插入提货日志
*
* @param acPickExtList 批量插入数据
* @param source 来源1=后台2=前台
* @return
*/
int insertBatchPick(@Param("list") List<AcPickExt> acPickExtList, @Param("source") Integer source);
/* /*
* @description: 批量删除使用记录数据 *批量删除使用记录数据
* @author: sui q
* @date: 2023/6/3 13:52
* @param: null null
**/ **/
int deleteBatch(@Param("acPickMemberLogList") List<AcPickMemberLog> acPickMemberLogList); int deleteBatch(@Param("acPickMemberLogList") List<AcPickMemberLog> acPickMemberLogList);
} }

View File

@ -8,11 +8,7 @@ import lombok.NoArgsConstructor;
import java.util.Date; import java.util.Date;
/** /**
* @Description: 提货查询列表入参 * 提货查询列表入参
* @Author: jiang chao
* @Time: 2023/4/21 18:01
* @Classname: AcPickQueryParam
* @PackageName: com.hzs.activity.pick.param
*/ */
@Data @Data
@Builder @Builder

View File

@ -1,49 +0,0 @@
package com.hzs.activity.pick.param;
import lombok.Data;
import java.util.Date;
/**
* @Description: 复购提货迁移入参
* @Author: jiang chao
* @Time: 2023/5/31 17:29
* @Classname: AcRepurchasePickParam
* @PackageName: com.hzs.activity.pick.param
*/
@Data
public class AcRepurchasePickParam {
/**
* 会员编号
*/
private String memberCode;
/**
* 会员名称
*/
private String memberName;
/**
* 结算等级
*/
private Integer pkGrade;
/**
* 真实奖衔
*/
private Integer pkAwards;
/**
* 所属团队
*/
private String teamName;
/**
* 订单编号
*/
private String orderCode;
/**
* 购买时间
*/
private Date[] payTime;
}

View File

@ -9,7 +9,6 @@ import com.hzs.common.core.exception.ServiceException;
import com.hzs.common.domain.activity.pick.AcPick; import com.hzs.common.domain.activity.pick.AcPick;
import com.hzs.common.domain.activity.pick.AcPickMemberLog; import com.hzs.common.domain.activity.pick.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt; import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -18,11 +17,7 @@ import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
* @Description: 提货相关dubbo服务入口 * 提货相关dubbo服务入口
* @Author: jiang chao
* @Time: 2023/5/15 11:21
* @Classname: AcPickProviderApi
* @PackageName: com.hzs.activity.pick.provider
*/ */
@Slf4j @Slf4j
@DubboService @DubboService
@ -31,7 +26,7 @@ public class AcPickProviderApi implements IAcPickServiceApi {
@Autowired @Autowired
private IAcPickService iAcPickService; private IAcPickService iAcPickService;
@Autowired @Autowired
private IAcPickMemberLogService acPickMemberLogService; private IAcPickMemberLogService iAcPickMemberLogService;
@Override @Override
public R<?> handlePickOrder(Long pkMember, String orderCode) { public R<?> handlePickOrder(Long pkMember, String orderCode) {
@ -55,27 +50,12 @@ public class AcPickProviderApi implements IAcPickServiceApi {
return R.fail(); return R.fail();
} }
@Override
public R<Boolean> updatePickUse(List<AcPickExt> acPickExtList, List<AcPickMemberLog> acPickMemberLogList) {
try {
return R.ok(iAcPickService.updatePickUse(acPickExtList, acPickMemberLogList));
} catch (Exception e) {
log.error("更新提货单失败", e);
}
return R.fail();
}
@Override
public R<List<AcPickMemberLog>> queryPickMemberLog(List<SaOrderExt> saOrderExtList) {
return R.ok(acPickMemberLogService.queryPickMemberLog(saOrderExtList));
}
@Override @Override
public R<BigDecimal> queryOrderPostage(String orderCode, Integer recProvince, Integer recCity, Integer pkCountry) { public R<BigDecimal> queryOrderPostage(String orderCode, Integer recProvince, Integer recCity, Integer pkCountry) {
try { try {
LambdaQueryWrapper<AcPickMemberLog> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<AcPickMemberLog> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AcPickMemberLog::getPickOrder, orderCode); queryWrapper.eq(AcPickMemberLog::getPickOrder, orderCode);
AcPickMemberLog acPickMemberLog = acPickMemberLogService.getOne(queryWrapper); AcPickMemberLog acPickMemberLog = iAcPickMemberLogService.getOne(queryWrapper);
if (null != acPickMemberLog) { if (null != acPickMemberLog) {
AcPick acPick = iAcPickService.getById(acPickMemberLog.getPkPick()); AcPick acPick = iAcPickService.getById(acPickMemberLog.getPkPick());
if (null != acPick) { if (null != acPick) {

View File

@ -4,15 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.activity.pick.vo.AcPickMemberLogVO; import com.hzs.activity.pick.vo.AcPickMemberLogVO;
import com.hzs.common.domain.activity.pick.AcPickMemberLog; import com.hzs.common.domain.activity.pick.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt; import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import java.util.List; import java.util.List;
/** /**
* 会员提货记录 服务类 * 会员提货记录 服务类
*
* @author hzs
* @since 2023-05-15
*/ */
public interface IAcPickMemberLogService extends IService<AcPickMemberLog> { public interface IAcPickMemberLogService extends IService<AcPickMemberLog> {
@ -34,28 +30,9 @@ public interface IAcPickMemberLogService extends IService<AcPickMemberLog> {
*/ */
int insertBatch(List<AcPickExt> acPickExtList, Integer quantity, Integer source); int insertBatch(List<AcPickExt> acPickExtList, Integer quantity, Integer source);
/**
* 批量插入提货日志
*
* @param acPickExtList 批量插入数据
* @param source 来源1=后台2=前台
* @return
*/
int insertBatchPick(List<AcPickExt> acPickExtList, Integer source);
/* /*
* @description: 批量删除使用记录数据 * 批量删除使用记录数据
* @author: sui q
* @date: 2023/6/3 13:52
* @param: null null
**/ **/
int deleteBatch(List<AcPickMemberLog> acPickMemberLogList); int deleteBatch(List<AcPickMemberLog> acPickMemberLogList);
/*
* @description: 查询会员提货使用记录
* @author: sui q
* @date: 2023/6/3 10:51
* @param: null null
**/
List<AcPickMemberLog> queryPickMemberLog(List<SaOrderExt> saOrderExtList);
} }

View File

@ -41,21 +41,6 @@ public interface IAcPickService extends IService<AcPick> {
Integer usableQuantity, String pickCover, Date receiveTime, Integer pkPostage, Integer usableQuantity, String pickCover, Date receiveTime, Integer pkPostage,
Long pkCreator, Integer pkCountry, Long pkBaseId, String specsNameId, String specsName); Long pkCreator, Integer pkCountry, Long pkBaseId, String specsNameId, String specsName);
/**
* 根据会员和类型回退使用数量
*
* @param pkMember 会员ID
* @param pickType 提货类型
* @param pkBaseConfig 活动配置ID产品时为0 -- 可为null
* @param pkDataId 数据ID产品为产品ID活动为活动ID -- 可为null
* @param quantity 数量
* @param pkModified 操作人
* @return
*/
int updatePickUsableByMember(Long pkMember, Integer pickType, Long pkBaseConfig,
Long pkDataId, Integer quantity, Long pkModified);
/** /**
* 根据会员和活动类型回退使用数量 * 根据会员和活动类型回退使用数量
* *
@ -75,11 +60,6 @@ public interface IAcPickService extends IService<AcPick> {
**/ **/
boolean updatePickUse(List<AcPickExt> acPickExtList, Integer signSource, List<AcPickMemberLog> acPickMemberLogList); boolean updatePickUse(List<AcPickExt> acPickExtList, Integer signSource, List<AcPickMemberLog> acPickMemberLogList);
/*
* @description: 更新提货单
**/
boolean updatePickUse(List<AcPickExt> acPickExtList, List<AcPickMemberLog> acPickMemberLogList);
/** /**
* 查询提货列表 * 查询提货列表
* *

View File

@ -1,23 +1,17 @@
package com.hzs.activity.pick.service.impl; package com.hzs.activity.pick.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.hzs.activity.pick.mapper.AcPickMemberLogMapper; import com.hzs.activity.pick.mapper.AcPickMemberLogMapper;
import com.hzs.activity.pick.service.IAcPickMemberLogService; import com.hzs.activity.pick.service.IAcPickMemberLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.activity.pick.vo.AcPickMemberLogVO; import com.hzs.activity.pick.vo.AcPickMemberLogVO;
import com.hzs.common.domain.activity.pick.AcPickMemberLog; import com.hzs.common.domain.activity.pick.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt; import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 会员提货记录 服务实现类 * 会员提货记录 服务实现类
*
* @author hzs
* @since 2023-05-15
*/ */
@Service @Service
public class AcPickMemberLogServiceImpl extends ServiceImpl<AcPickMemberLogMapper, AcPickMemberLog> implements IAcPickMemberLogService { public class AcPickMemberLogServiceImpl extends ServiceImpl<AcPickMemberLogMapper, AcPickMemberLog> implements IAcPickMemberLogService {
@ -32,33 +26,9 @@ public class AcPickMemberLogServiceImpl extends ServiceImpl<AcPickMemberLogMappe
return baseMapper.insertBatch(acPickExtList, quantity, source); return baseMapper.insertBatch(acPickExtList, quantity, source);
} }
@Override
public int insertBatchPick(List<AcPickExt> acPickExtList, Integer source) {
return baseMapper.insertBatchPick(acPickExtList, source);
}
@Override @Override
public int deleteBatch(List<AcPickMemberLog> acPickMemberLogList) { public int deleteBatch(List<AcPickMemberLog> acPickMemberLogList) {
return baseMapper.deleteBatch(acPickMemberLogList); return baseMapper.deleteBatch(acPickMemberLogList);
} }
@Override
public List<AcPickMemberLog> queryPickMemberLog(List<SaOrderExt> saOrderExtList) {
List<AcPickMemberLog> retPickMemberLogList = new ArrayList<>();
Set<String> orderKey = new HashSet<>();
saOrderExtList.forEach(saOrderExt -> orderKey.add(saOrderExt.getOrderCode() + saOrderExt.getPkMember()));
Set<String> orderCodeSet = saOrderExtList.stream().distinct().map(SaOrderExt::getOrderCode).collect(Collectors.toSet());
LambdaQueryWrapper<AcPickMemberLog> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(AcPickMemberLog::getPickOrder, orderCodeSet);
List<AcPickMemberLog> acPickMemberLogList = baseMapper.selectList(queryWrapper);
for (AcPickMemberLog acPickMemberLog : acPickMemberLogList) {
if (!orderKey.contains(acPickMemberLog.getPickOrder() + acPickMemberLog.getPkMember())) {
retPickMemberLogList.add(acPickMemberLog);
}
}
return retPickMemberLogList;
}
} }

View File

@ -117,11 +117,6 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
return true; return true;
} }
@Override
public int updatePickUsableByMember(Long pkMember, Integer pickType, Long pkBaseConfig, Long pkDataId, Integer quantity, Long pkModified) {
return baseMapper.updatePickUsableByMember(pkMember, pickType, pkBaseConfig, pkDataId, quantity, pkModified);
}
@Override @Override
public int updatePickUsableByMemberAndActivityType(Long pkMember, Integer pickType, Long pkBaseConfig, public int updatePickUsableByMemberAndActivityType(Long pkMember, Integer pickType, Long pkBaseConfig,
Long pkDataId, Integer quantity, Long pkModified) { Long pkDataId, Integer quantity, Long pkModified) {
@ -145,21 +140,6 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
return Boolean.TRUE; return Boolean.TRUE;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updatePickUse(List<AcPickExt> acPickExtList, List<AcPickMemberLog> acPickMemberLogList) {
if (CollectionUtil.isNotEmpty(acPickMemberLogList)) {
// 回退数量
baseMapper.updateBackPickUseBatch(acPickMemberLogList);
iAcPickMemberLogService.deleteBatch(acPickMemberLogList);
}
// 批量更新提货使用数量
baseMapper.updatePickUseCouponBatch(acPickExtList);
// 批量插入提货日志
iAcPickMemberLogService.insertBatchPick(acPickExtList, ESignSource.BONUS.getValue());
return Boolean.TRUE;
}
@Override @Override
public List<AcPickExt> queryList(AcPickQueryParam param, Integer pkCountry) { public List<AcPickExt> queryList(AcPickQueryParam param, Integer pkCountry) {
return baseMapper.queryList(param, pkCountry); return baseMapper.queryList(param, pkCountry);
@ -259,7 +239,6 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
updateList.add(acPick); updateList.add(acPick);
} }
// 产品信息 // 产品信息
BdProduct bdProduct = productMap.get(detailParam.getPkProduct()); BdProduct bdProduct = productMap.get(detailParam.getPkProduct());
// 操作日志内容 // 操作日志内容
@ -422,8 +401,7 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
switch (ePickType) { switch (ePickType) {
case PICK_PRODUCT: case PICK_PRODUCT:
case PRIZE: case PRIZE:
case COUPON: // 提货产品抽奖
// 提货产品抽奖创客沙棘提货复购提货代金券
if (null != detailParam.getPkProduct()) { if (null != detailParam.getPkProduct()) {
BdProduct product = iBdProductService.getProduct(detailParam.getPkProduct()); BdProduct product = iBdProductService.getProduct(detailParam.getPkProduct());
content.append(ePickType.getLabel()).append("").append(product.getProductName()).append("(").append(delAcPick.getSpecsName()).append(")"); content.append(ePickType.getLabel()).append("").append(product.getProductName()).append("(").append(delAcPick.getSpecsName()).append(")");

View File

@ -1,41 +0,0 @@
package com.hzs.activity.pick.util;
import com.hzs.common.core.utils.StringUtils;
import java.math.BigDecimal;
/**
* @Description: 提货工具
* @Author: jiang chao
* @Time: 2023/3/29 10:07
* @Classname: PickUtil
* @PackageName: com.hzs.web.util
*/
public class PickUtil {
/**
* 根据省获取复购提货邮费
*
* @param province 省编号
* @return
*/
public static BigDecimal getPurchasePickPostage(String province) {
if (StringUtils.isNotEmpty(province)) {
switch (province) {
case "620000":
case "460000":
case "150000":
case "630000":
case "640000":
case "540000":
case "650000":
// 甘肃海南内蒙古青海宁厦西藏新疆邮费20元
return new BigDecimal("20");
default:
}
}
// 其它地区邮费0元
return BigDecimal.ZERO;
}
}

View File

@ -8,11 +8,7 @@ import lombok.Data;
import java.util.Date; import java.util.Date;
/** /**
* @Description: 会员提货日志 * 会员提货日志
* @Author: jiang chao
* @Time: 2023/5/15 14:00
* @Classname: AcPickMemberLogVO
* @PackageName: com.hzs.activity.pick.vo
*/ */
@Data @Data
public class AcPickMemberLogVO { public class AcPickMemberLogVO {

View File

@ -1,43 +0,0 @@
package com.hzs.activity.pick.vo;
import lombok.Data;
/**
* @Description: 代言礼包详情VO
* @Author: jiang chao
* @Time: 2023/5/31 18:56
* @Classname: AcRepurchasePickLogVO
* @PackageName: com.hzs.activity.pick.vo
*/
@Data
public class AcRepurchasePickLogVO {
/**
* 订单编号
*/
private String orderCode;
/**
* 产品名称
*/
private String productName;
/**
* 产品编码
*/
private String productCode;
/**
* 发放数量
*/
private Integer receiveQuantity;
/**
* 发放年月
*/
private String receiveMonth;
/**
* 是否提货1=0=
*/
private Integer receiveFlag;
}

View File

@ -1,95 +0,0 @@
package com.hzs.activity.pick.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hzs.common.core.annotation.Excel;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.Data;
import java.util.Date;
/**
* @Description: 复购提货迁移返回VO
* @Author: jiang chao
* @Time: 2023/5/31 17:09
* @Classname: AcRepurchasePickExt
* @PackageName: com.hzs.common.domain.activity.pick.ext
*/
@Data
public class AcRepurchasePickVO {
/**
* 主键
*/
private Long pkId;
/**
* 会员编号
*/
@Excel(name = "会员编号")
private String memberCode;
/**
* 会员名称
*/
@Excel(name = "会员姓名")
private String memberName;
/**
* 结算等级翻译KEY
*/
@Transaction(transactionKey = EnumsPrefixConstants.KEY_GRADE)
@JsonIgnore
private Integer gradeKey;
/**
* 结算等级显示
*/
@Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
@Excel(name = "结算等级")
private String gradeKeyVal;
/**
* 真实奖衔翻译KEY
*/
@JsonIgnore
private Integer awardsKey;
/**
* 真实奖衔显示
*/
@Excel(name = "真实奖衔")
private String awardsKeyVal;
/**
* 所属团队
*/
@Excel(name = "所属团队")
private String teamName;
/**
* 商品名称
*/
@Excel(name = "商品名称")
private String waresName;
/**
* 礼包数量
*/
@Excel(name = "礼包数量")
private Integer buyQuantity;
/**
* 可提数量
*/
@Excel(name = "可提数量")
private Integer usableQuantity;
/**
* 订单编号
*/
@Excel(name = "订单编号")
private String orderCode;
/**
* 支付时间
*/
@Excel(name = "支付时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date payTime;
}

View File

@ -6,11 +6,7 @@ import lombok.Data;
import java.util.Date; import java.util.Date;
/** /**
* @Description: 会员提货列表VO * 会员提货列表VO
* @Author: jiang chao
* @Time: 2023/4/24 16:15
* @Classname: ApiPickVO
* @PackageName: com.hzs.activity.pick.vo
*/ */
@Data @Data
public class ApiPickListVO { public class ApiPickListVO {

View File

@ -28,7 +28,6 @@ import com.hzs.common.domain.sale.product.BdProduct;
import com.hzs.common.domain.sale.wares.BdWaresRange; import com.hzs.common.domain.sale.wares.BdWaresRange;
import com.hzs.common.domain.system.base.BdStorehouse; import com.hzs.common.domain.system.base.BdStorehouse;
import com.hzs.common.domain.system.config.BdAreaFreePostage; import com.hzs.common.domain.system.config.BdAreaFreePostage;
import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.security.utils.SecurityUtils; import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.util.TransactionUtils; import com.hzs.common.util.TransactionUtils;
import com.hzs.member.base.IMemberTeamServiceApi; import com.hzs.member.base.IMemberTeamServiceApi;
@ -46,7 +45,6 @@ import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.ISystemConfigServiceApi; import com.hzs.system.base.ISystemConfigServiceApi;
import com.hzs.system.base.dto.CurrencyDTO; import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAreaFreePostageServiceApi; import com.hzs.system.config.IAreaFreePostageServiceApi;
import com.hzs.system.config.IAwardsServiceApi;
import com.hzs.system.config.IGradeServiceApi; import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.dto.AreaCurrencyDTO; import com.hzs.system.config.dto.AreaCurrencyDTO;
import com.hzs.system.config.dto.GradeDTO; import com.hzs.system.config.dto.GradeDTO;
@ -74,8 +72,6 @@ public class SaOrderHandle {
@DubboReference @DubboReference
IMemberTeamServiceApi memberTeamServiceApi; IMemberTeamServiceApi memberTeamServiceApi;
@DubboReference @DubboReference
IAwardsServiceApi awardsServiceApi;
@DubboReference
ISystemConfigServiceApi systemConfigServiceApi; ISystemConfigServiceApi systemConfigServiceApi;
@DubboReference @DubboReference
IAreaFreePostageServiceApi iAreaFreePostageServiceApi; IAreaFreePostageServiceApi iAreaFreePostageServiceApi;
@ -268,24 +264,6 @@ public class SaOrderHandle {
for (BdWaresDetailExt waresDetailExt : bdWaresDetailExtList) { for (BdWaresDetailExt waresDetailExt : bdWaresDetailExtList) {
SaOrderItems saOrderItems = getSaOrderItems(cuMember, saOrder, currency, saOrderItemsList, waresDetailExt); SaOrderItems saOrderItems = getSaOrderItems(cuMember, saOrder, currency, saOrderItemsList, waresDetailExt);
// 特殊会员产品处理
if (null != saOrder
&& EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == saOrder.getOrderType()
&& EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) {
// 乐学复购价格根据等级固定
if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.S_VIP.getValue()).getPkId())) {
saOrderItems.setPrice(MagicNumberConstants.LXYK_V4);
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.VIP.getValue()).getPkId())) {
saOrderItems.setPrice(MagicNumberConstants.LXYK_V3);
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.MAKER.getValue()).getPkId())) {
saOrderItems.setPrice(MagicNumberConstants.LXYK_V2);
} else {
saOrderItems.setPrice(MagicNumberConstants.LXYK_V1);
}
// TODO new 乐学复购商品业绩为600
saOrderItems.setAchievement(MagicNumberConstants.LXYK_PV);
}
// 免邮的话不需要计算邮费 // 免邮的话不需要计算邮费
if (EYesNo.YES.getIntValue() == waresDetailExt.getIsFreeMail()) { if (EYesNo.YES.getIntValue() == waresDetailExt.getIsFreeMail()) {

View File

@ -57,7 +57,6 @@ import com.hzs.sale.order.param.*;
import com.hzs.sale.order.service.*; import com.hzs.sale.order.service.*;
import com.hzs.sale.order.vo.*; import com.hzs.sale.order.vo.*;
import com.hzs.sale.product.service.IBdProductExtendService; import com.hzs.sale.product.service.IBdProductExtendService;
import com.hzs.sale.product.service.IBdProductService;
import com.hzs.sale.wares.service.*; import com.hzs.sale.wares.service.*;
import com.hzs.system.base.IAreaServiceApi; import com.hzs.system.base.IAreaServiceApi;
import com.hzs.system.base.ICountryServiceApi; import com.hzs.system.base.ICountryServiceApi;
@ -139,8 +138,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
@Autowired @Autowired
private IBdWaresSpecsRelationService iBdWaresSpecsRelationService; private IBdWaresSpecsRelationService iBdWaresSpecsRelationService;
@Autowired @Autowired
private IBdProductService iBdProductService;
@Autowired
private ISaDeliverItemsService iSaDeliverItemsService; private ISaDeliverItemsService iSaDeliverItemsService;
@Autowired @Autowired
private IAcPickService iAcPickService; private IAcPickService iAcPickService;
@ -731,9 +728,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
saOrderExt.setPayTime(currentDateTime); saOrderExt.setPayTime(currentDateTime);
saOrderExt.setOrderStatus(EOrderStatus.PAY.getValue()); saOrderExt.setOrderStatus(EOrderStatus.PAY.getValue());
// // 乐学注册乐学升级订单处理法宝券
// this.handleLxPick(saOrderExt);
if (isToBePay && !isHaiFun) { if (isToBePay && !isHaiFun) {
// 根据业绩判断自动上树 -- 目前使用 // 根据业绩判断自动上树 -- 目前使用
newCuMember.setPkModified(pkCreator); newCuMember.setPkModified(pkCreator);
@ -891,23 +885,9 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
if (oldGradeDTO.getGradeValue() >= cuMember.getPkSettleGradeValue() && !Objects.equals(Integer.toString(EUpgradeWay.TOTAL.getValue()), upgradeWay)) { if (oldGradeDTO.getGradeValue() >= cuMember.getPkSettleGradeValue() && !Objects.equals(Integer.toString(EUpgradeWay.TOTAL.getValue()), upgradeWay)) {
return false; return false;
} }
// // 验证等级原等级<新等级
// if (oldGradeDTO.getGradeValue() >= cuMember.getPkSettleGradeValue()) {
// if (saOrderExt.getOrderType().equals(EOrderType.SPECIAL_UPGRADE_ORDER.getValue())) {
// // TODO new 乐学升级如果V2可以购买订单金额大于36000的如果V3可以购买订单金额大于128000的
// if (!((EGrade.MAKER.getValue() == cuMember.getPkSettleGradeValue() && saOrderExt.getOrderAmount().compareTo(MagicNumberConstants.V3_AMOUNT) >= 0)
// || (EGrade.VIP.getValue() == cuMember.getPkSettleGradeValue() && saOrderExt.getOrderAmount().compareTo(MagicNumberConstants.V4_AMOUNT) >= 0))
// ) {
// return false;
// }
// }
// }
// 封装保存订单数据 // 封装保存订单数据
encapsulationSaOrder(saOrderExt); encapsulationSaOrder(saOrderExt);
// // 乐学注册乐学升级订单处理法宝券
// this.handleLxPick(saOrderExt);
// 更新订单信息 // 更新订单信息
updateSaOrder(saOrderExt); updateSaOrder(saOrderExt);
// 处理会员信息更新会员等级,扣款 // 处理会员信息更新会员等级,扣款
@ -2431,32 +2411,4 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
return baseMapper.singleItemStat(singleItemStatParam); return baseMapper.singleItemStat(singleItemStatParam);
} }
/**
* 注册升级处理乐学法宝券
*
* @param saOrderExt
*/
private void handleLxPick(SaOrderExt saOrderExt) {
Set<Integer> productIdList = saOrderExt.getOrderItemsList().stream().map(SaOrderItems::getPkProduct).collect(Collectors.toSet());
List<BdProductExt> productExtList = iBdProductService.queryProductById(productIdList, saOrderExt.getPkCountry(), ERepurchaseType.LE_XUE_REGISTER.getValue());
if (CollectionUtil.isNotEmpty(productExtList)) {
Map<Integer, BdProductExt> productDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(productExtList.size()));
productExtList.forEach(productDTO ->
productDtoMap.put(productDTO.getPkId(), productDTO));
// 记录数量
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsList()) {
if (productDtoMap.containsKey(saOrderItems.getPkProduct())) {
BdProductExt productDTO = productDtoMap.get(saOrderItems.getPkProduct());
// 加入提货单
iAcPickService.addPickByActivity(saOrderExt.getPkMember(), EPickType.COUPON.getValue(), 0L, saOrderItems.getPkProduct().longValue(),
saOrderItems.getQuantity(), productDTO.getCover(), null, null,
saOrderExt.getPkCreator(), saOrderExt.getPkCountry(), null, saOrderItems.getSpecsNameId(), saOrderItems.getSpecsName());
// 法宝券数量冗余在订单主表
saOrderExt.setBoxNum(saOrderItems.getQuantity());
}
}
}
}
} }

View File

@ -30,12 +30,6 @@ public interface BdProductMapper extends BaseMapper<BdProduct> {
*/ */
List<ProductVo> selectByQueryList(ProductParams productParams); List<ProductVo> selectByQueryList(ProductParams productParams);
/*
* @description: 根据产品id查询产品
**/
List<BdProductExt> queryProductExtById(@Param("productIdSet") Set<Integer> productIdSet, @Param("pkCountry") Integer pkCountry,
@Param("repurchaseType") Integer repurchaseType);
/* /*
* @description: 根据规格主键查询产品 * @description: 根据规格主键查询产品
**/ **/

View File

@ -13,7 +13,6 @@ import com.hzs.system.sys.dto.LoginUser;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* 产品相关服务 * 产品相关服务
@ -28,12 +27,7 @@ public interface IBdProductService extends IService<BdProduct> {
BdProduct getProduct(Integer pkProduct); BdProduct getProduct(Integer pkProduct);
/* /*
* @description: 根据产品id查询产品 * 根据规格主键查询产品
**/
List<BdProductExt> queryProductById(Set<Integer> productIdSet, Integer pkCountry, Integer repurchaseType);
/*
* @description: 根据规格主键查询产品
**/ **/
List<BdProductExt> queryProductExtById(List<BdProductSpecs> productSpecsList, Integer pkCountry); List<BdProductExt> queryProductExtById(List<BdProductSpecs> productSpecsList, Integer pkCountry);

View File

@ -65,11 +65,6 @@ public class BdProductServiceImpl extends ServiceImpl<BdProductMapper, BdProduct
return baseMapper.selectById(pkProduct); return baseMapper.selectById(pkProduct);
} }
@Override
public List<BdProductExt> queryProductById(Set<Integer> productIdSet, Integer pkCountry, Integer repurchaseType) {
return baseMapper.queryProductExtById(productIdSet, pkCountry, repurchaseType);
}
@Override @Override
public List<BdProductExt> queryProductExtById(List<BdProductSpecs> productSpecsList, Integer pkCountry) { public List<BdProductExt> queryProductExtById(List<BdProductSpecs> productSpecsList, Integer pkCountry) {
return baseMapper.queryProductExtBySpecsId(productSpecsList, pkCountry); return baseMapper.queryProductExtBySpecsId(productSpecsList, pkCountry);

View File

@ -237,8 +237,7 @@ public class ApiBdWaresController extends BaseController {
// 零售价 // 零售价
BigDecimal retailPrice = BigDecimal.ZERO; BigDecimal retailPrice = BigDecimal.ZERO;
if (EOrderType.REPURCHASE_ORDER.getValue() == cuWaresParams.getSpecialArea() if (EOrderType.REPURCHASE_ORDER.getValue() == cuWaresParams.getSpecialArea()) {
|| EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == cuWaresParams.getSpecialArea()) {
for (BdWaresRange bdWaresRange : bdWaresRangeList) { for (BdWaresRange bdWaresRange : bdWaresRangeList) {
if (waresExt.getPkId().intValue() == bdWaresRange.getPkWares().intValue()) { if (waresExt.getPkId().intValue() == bdWaresRange.getPkWares().intValue()) {
waresPrice = waresPrice.add(bdWaresRange.getPrice()); waresPrice = waresPrice.add(bdWaresRange.getPrice());
@ -246,18 +245,6 @@ public class ApiBdWaresController extends BaseController {
assAchieve = assAchieve.add(bdWaresRange.getAssAchieve()); assAchieve = assAchieve.add(bdWaresRange.getAssAchieve());
} }
} }
if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == cuWaresParams.getSpecialArea()) {
// 乐学复购价格根据等级固定
if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.S_VIP.getValue()).getPkId())) {
waresPrice = MagicNumberConstants.LXYK_V4;
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.VIP.getValue()).getPkId())) {
waresPrice = MagicNumberConstants.LXYK_V3;
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.MAKER.getValue()).getPkId())) {
waresPrice = MagicNumberConstants.LXYK_V2;
} else {
waresPrice = MagicNumberConstants.LXYK_V1;
}
}
} else { } else {
List<BdWaresSpecsSkuExt> waresSpecsSku = waresSpecsSkuMap.get(waresExt.getPkId()); List<BdWaresSpecsSkuExt> waresSpecsSku = waresSpecsSkuMap.get(waresExt.getPkId());
waresSpecsSku = waresSpecsSku.stream().peek(a -> a.setProductGift(a.getPkProduct() + "" + a.getIsGift())).collect(Collectors.toList()); waresSpecsSku = waresSpecsSku.stream().peek(a -> a.setProductGift(a.getPkProduct() + "" + a.getIsGift())).collect(Collectors.toList());

View File

@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.constant.CountryConstants; import com.hzs.common.core.constant.CountryConstants;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.domain.R; import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*; import com.hzs.common.core.enums.*;
import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.core.utils.ComputeUtil;
@ -16,7 +15,6 @@ import com.hzs.common.domain.sale.ext.BdWaresSpecsSkuExt;
import com.hzs.common.domain.sale.wares.BdWaresLabel; import com.hzs.common.domain.sale.wares.BdWaresLabel;
import com.hzs.common.domain.sale.wares.BdWaresRange; import com.hzs.common.domain.sale.wares.BdWaresRange;
import com.hzs.common.domain.sale.wares.BdWaresSpecsSku; import com.hzs.common.domain.sale.wares.BdWaresSpecsSku;
import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.domain.system.config.BdLabel; import com.hzs.common.domain.system.config.BdLabel;
import com.hzs.common.domain.system.ext.BdLabelExt; import com.hzs.common.domain.system.ext.BdLabelExt;
import com.hzs.common.security.utils.SecurityUtils; import com.hzs.common.security.utils.SecurityUtils;
@ -30,10 +28,7 @@ import com.hzs.sale.wares.param.*;
import com.hzs.sale.wares.service.*; import com.hzs.sale.wares.service.*;
import com.hzs.system.base.ICurrencyServiceApi; import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.dto.CurrencyDTO; import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAwardsServiceApi;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.IRangeServiceApi; import com.hzs.system.config.IRangeServiceApi;
import com.hzs.system.config.dto.GradeDTO;
import com.hzs.system.config.dto.RangeDTO; import com.hzs.system.config.dto.RangeDTO;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -41,7 +36,6 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -67,10 +61,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
IRangeServiceApi iRangeServiceApi; IRangeServiceApi iRangeServiceApi;
@DubboReference @DubboReference
IMemberServiceApi iMemberServiceApi; IMemberServiceApi iMemberServiceApi;
@DubboReference
IAwardsServiceApi iAwardsServiceApi;
@DubboReference
IGradeServiceApi iGradeServiceApi;
@Override @Override
public CuWaresParams queryWaresSpecsSku(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry) { public CuWaresParams queryWaresSpecsSku(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry) {
@ -176,34 +166,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
} }
productParams.clear(); productParams.clear();
productParams.addAll(productParamsResultList); productParams.addAll(productParamsResultList);
if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == specialArea) {
// 乐学复购价格根据等级固定
// 等级
R<List<GradeDTO>> gradeDTO = iGradeServiceApi.queryGradeList(pkCountry);
List<GradeDTO> gradeList = gradeDTO.getData();
Map<Integer, GradeDTO> gradeMap = gradeList.stream().collect(Collectors.toMap(GradeDTO::getGradeValue, Function.identity()));
BigDecimal price;
// 乐学复购价格根据等级固定
if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.S_VIP.getValue()).getPkId())) {
price = MagicNumberConstants.LXYK_V4;
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.VIP.getValue()).getPkId())) {
price = MagicNumberConstants.LXYK_V3;
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.MAKER.getValue()).getPkId())) {
price = MagicNumberConstants.LXYK_V2;
} else {
price = MagicNumberConstants.LXYK_V1;
}
cuWaresParams.setWaresPrice(price);
for (CuProductParams productParam : productParams) {
for (CuWaresItemsParams cuWaresItemsParams : productParam.getWaresItemsParamsList()) {
cuWaresItemsParams.setPriceTotal(new BigDecimal(price.intValue() / productParams.size()));
}
}
}
cuWaresParams.setProductParams(productParams); cuWaresParams.setProductParams(productParams);
cuWaresParams.setSpecialArea(specialArea); cuWaresParams.setSpecialArea(specialArea);
return cuWaresParams; return cuWaresParams;
@ -211,13 +173,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
return null; return null;
} }
/**
* @description: 购物车查询数量专用
* @author: zhang jing
* @date: 2024/3/28 10:41
* @param: [specialArea, waresCode, loginMemberId, pkCountry]
* @return: com.hzs.sale.wares.param.CuWaresParams
**/
@Override @Override
public CuWaresParams queryWaresSpecsSkuCount(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry) { public CuWaresParams queryWaresSpecsSkuCount(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry) {
List<BdWaresSpecsSkuExt> bdWaresSpecsSkuExtList; List<BdWaresSpecsSkuExt> bdWaresSpecsSkuExtList;
@ -273,7 +228,8 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
} }
/** /**
* @description: 查询商品sku信息购物车专用 * 查询商品sku信息购物车专用
*
* @author: zhang jing * @author: zhang jing
* @date: 2024/3/28 14:34 * @date: 2024/3/28 14:34
* @param: [specialArea, waresCode, loginMemberId, pkCountry] * @param: [specialArea, waresCode, loginMemberId, pkCountry]
@ -348,31 +304,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
.filter(param -> !param.getWaresItemsParamsList().isEmpty()) .filter(param -> !param.getWaresItemsParamsList().isEmpty())
.collect(Collectors.toList()); .collect(Collectors.toList());
// 处理特殊情况下的价格修改
if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == specialArea) {
// 获取等级信息
Map<Integer, GradeDTO> gradeMap = iGradeServiceApi.queryGradeList(pkCountry).getData().stream()
.collect(Collectors.toMap(GradeDTO::getGradeValue, Function.identity()));
BigDecimal price;
if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.S_VIP.getValue()).getPkId())) {
price = MagicNumberConstants.LXYK_V4;
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.VIP.getValue()).getPkId())) {
price = MagicNumberConstants.LXYK_V3;
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.MAKER.getValue()).getPkId())) {
price = MagicNumberConstants.LXYK_V2;
} else {
price = MagicNumberConstants.LXYK_V1;
}
BigDecimal finalPrice = price;
productParamsResultList.forEach(param -> param.getWaresItemsParamsList().forEach(item -> {
if (EYesNo.NO.getIntValue() == item.getIsGift()) {
// 非赠品
item.setPrice(finalPrice);
item.setPriceTotal(finalPrice.multiply(new BigDecimal(item.getQuantity())));
}
}));
}
cuWaresParams.setProductParams(productParamsResultList); cuWaresParams.setProductParams(productParamsResultList);
cuWaresParams.setSpecialArea(specialArea); cuWaresParams.setSpecialArea(specialArea);
return cuWaresParams; return cuWaresParams;
@ -429,14 +360,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
} }
} }
/**
* 通过规格列表查询商品最小库存单位
*
* @param cuWaresItemsParams 明细参数
* @return: SpecsSkuParam
* @Author: sui q
* @Date: 2022/9/19 16:26
*/
@Override @Override
public SpecsSkuParam queryWaresDetailSkuBySpecs(CuWaresItemsParams cuWaresItemsParams) { public SpecsSkuParam queryWaresDetailSkuBySpecs(CuWaresItemsParams cuWaresItemsParams) {
BdWaresSpecsSkuExt bdWaresSpecsSkuExt = baseMapper.queryWaresDetailSkuBySpecs(cuWaresItemsParams); BdWaresSpecsSkuExt bdWaresSpecsSkuExt = baseMapper.queryWaresDetailSkuBySpecs(cuWaresItemsParams);
@ -447,44 +370,21 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
.build(); .build();
} }
/**
* 根据id修改值
*
* @param sku
*/
@Override @Override
public void updateBySkuId(BdWaresSpecsSku sku) { public void updateBySkuId(BdWaresSpecsSku sku) {
baseMapper.updateBySkuId(sku); baseMapper.updateBySkuId(sku);
} }
/**
* 根据id查询sku 可查询删除数据
*
* @param pkWaresSpecsSku
* @return
*/
@Override @Override
public BdWaresSpecsSku selectByWaresSpecsSkuIdAndDel(Integer pkWaresSpecsSku) { public BdWaresSpecsSku selectByWaresSpecsSkuIdAndDel(Integer pkWaresSpecsSku) {
return baseMapper.selectByWaresSpecsSkuIdAndDel(pkWaresSpecsSku); return baseMapper.selectByWaresSpecsSkuIdAndDel(pkWaresSpecsSku);
} }
/**
* 根据商品id 查询
*
* @param waresIds
* @return
*/
@Override @Override
public List<BdWaresSpecsSkuExt> selectByWaresSpecsSku(List<Integer> waresIds) { public List<BdWaresSpecsSkuExt> selectByWaresSpecsSku(List<Integer> waresIds) {
return baseMapper.selectByWaresSpecsSku(waresIds); return baseMapper.selectByWaresSpecsSku(waresIds);
} }
/**
* 根据id 批量查询sku 信息
*
* @param pkWaresSpecsSku
* @return
*/
@Override @Override
public List<WaresItemWaresInfo> selectByPkIds(List<Integer> pkWaresSpecsSku) { public List<WaresItemWaresInfo> selectByPkIds(List<Integer> pkWaresSpecsSku) {
return baseMapper.selectByPkIds(pkWaresSpecsSku); return baseMapper.selectByPkIds(pkWaresSpecsSku);
@ -541,31 +441,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
waresItemVo.setAssAchieve(ComputeUtil.computeAdd(waresItemVo.getAssAchieve(), ComputeUtil.computeMultiply(waresItemWaresInfo.getAssAchieve(), waresItemWaresInfo.getQuantity()))); waresItemVo.setAssAchieve(ComputeUtil.computeAdd(waresItemVo.getAssAchieve(), ComputeUtil.computeMultiply(waresItemWaresInfo.getAssAchieve(), waresItemWaresInfo.getQuantity())));
} }
// 复购乐学专区 无奖衔 或者 vip 或者是 svip 价格改为2680
if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == specialArea) {
// 等级
R<List<GradeDTO>> gradeDTO = iGradeServiceApi.queryGradeList(pkCountry);
List<GradeDTO> gradeList = gradeDTO.getData();
Map<Integer, GradeDTO> gradeMap = gradeList.stream().collect(Collectors.toMap(GradeDTO::getGradeValue, Function.identity()));
// 查询会员信息
R<CuMember> memberDate = iMemberServiceApi.getMember(pkMember);
CuMember cuMemberDate = memberDate.getData();
// 价格
BigDecimal waresPrice;
if (cuMemberDate.getPkSettleGrade().equals(gradeMap.get(EGrade.S_VIP.getValue()).getPkId())) {
waresPrice = MagicNumberConstants.LXYK_V4;
} else if (cuMemberDate.getPkSettleGrade().equals(gradeMap.get(EGrade.VIP.getValue()).getPkId())) {
waresPrice = MagicNumberConstants.LXYK_V3;
} else if (cuMemberDate.getPkSettleGrade().equals(gradeMap.get(EGrade.MAKER.getValue()).getPkId())) {
waresPrice = MagicNumberConstants.LXYK_V2;
} else {
waresPrice = MagicNumberConstants.LXYK_V1;
}
waresItemVo.setPrice(waresPrice);
}
// 前台传递结算国 跨国报单计算价格使用 // 前台传递结算国 跨国报单计算价格使用
R<CurrencyDTO> currency = iCurrencyServiceApi.getCurrency(SecurityUtils.getPkCountry()); R<CurrencyDTO> currency = iCurrencyServiceApi.getCurrency(SecurityUtils.getPkCountry());
if (pkCountry != null) { if (pkCountry != null) {
@ -589,35 +464,16 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
return waresItemVo; return waresItemVo;
} }
/**
* 根据商品id查询规格价格最小值
*
* @param pkWares
* @return
*/
@Override @Override
public List<BdWaresSpecsSkuExt> selectByMinWaresSpecsSku(Integer pkWares) { public List<BdWaresSpecsSkuExt> selectByMinWaresSpecsSku(Integer pkWares) {
return baseMapper.selectByMinWaresSpecsSku(pkWares); return baseMapper.selectByMinWaresSpecsSku(pkWares);
} }
/**
* 根据商品id查询规格价格最小值
*
* @param pkWaresIds
* @return
*/
@Override @Override
public List<BdWaresSpecsSkuExt> selectByMinWaresSpecsSkuByPkWaresList(List<Integer> pkWaresIds) { public List<BdWaresSpecsSkuExt> selectByMinWaresSpecsSkuByPkWaresList(List<Integer> pkWaresIds) {
return baseMapper.selectByMinWaresSpecsSkuByPkWaresList(pkWaresIds); return baseMapper.selectByMinWaresSpecsSkuByPkWaresList(pkWaresIds);
} }
/**
* 根据id 查询
*
* @param pkWaresSpecsSku
* @return
*/
@Override @Override
public BdWaresSpecsSkuExt selectByPkWaresSpecsSku(Integer pkWaresSpecsSku) { public BdWaresSpecsSkuExt selectByPkWaresSpecsSku(Integer pkWaresSpecsSku) {
return baseMapper.selectByPkWaresSpecsSku(pkWaresSpecsSku); return baseMapper.selectByPkWaresSpecsSku(pkWaresSpecsSku);

View File

@ -75,29 +75,6 @@
ap.modified_time = sysdate ap.modified_time = sysdate
</update> </update>
<!-- 批量更新使用数量 -->
<update id="updatePickUseCouponBatch">
merge into ac_pick ap
using (
select pk_id,pk_member,sum(used_quantity) used_quantity from (
<foreach collection="list" item="item" separator=" union all ">
select
#{item.pkId} PK_ID,
#{item.pkMember} PK_MEMBER,
#{item.usedQuantity} used_quantity
from dual
</foreach>)
group by pk_id,pk_member
) tmp
on (tmp.PK_ID = ap.PK_ID)
WHEN MATCHED THEN
update
set ap.USABLE_QUANTITY = ap.USABLE_QUANTITY - tmp.used_quantity,
ap.USED_QUANTITY = ap.USED_QUANTITY + tmp.used_quantity,
ap.pk_modified = tmp.pk_member,
ap.modified_time = sysdate
</update>
<!-- 根据提货ID更新使用数量 --> <!-- 根据提货ID更新使用数量 -->
<update id="updatePickUseById"> <update id="updatePickUseById">
update AC_PICK ap update AC_PICK ap
@ -110,26 +87,6 @@
and ap.USABLE_QUANTITY - #{quantity} >= 0 and ap.USABLE_QUANTITY - #{quantity} >= 0
</update> </update>
<!-- 根据会员和类型回退使用数量 -->
<update id="updatePickUsableByMember">
update ac_pick ap
set ap.modified_time = sysdate,
ap.pk_modified = #{pkModified},
ap.usable_quantity = ap.usable_quantity + #{quantity},
ap.used_quantity = ap.used_quantity - #{quantity}
where ap.del_flag = 0
and ap.pk_member = #{pkMember}
and ap.pick_type = #{pickType}
<if test="null != pkBaseConfig">
and ap.pk_base_config = #{pkBaseConfig}
</if>
<if test="null != pkDataId">
and ap.pk_data_id = #{pkDataId}
</if>
and ap.used_quantity - #{quantity} >= 0
</update>
<!-- 根据会员和活动类型回退使用数量 --> <!-- 根据会员和活动类型回退使用数量 -->
<update id="updatePickUsableByMemberAndActivityType"> <update id="updatePickUsableByMemberAndActivityType">
update ac_pick ap update ac_pick ap
@ -148,22 +105,6 @@
and ap.usable_quantity - #{quantity} >= 0 and ap.usable_quantity - #{quantity} >= 0
</update> </update>
<!-- 根据主键更新提货数量 -->
<update id="updatePickQuantityByPkId">
update AC_PICK ap
set ap.USABLE_QUANTITY = ap.USABLE_QUANTITY + #{acPick.usableQuantity},
ap.pk_modified = #{acPick.pkModified},
ap.modified_time = sysdate
where ap.del_flag = 0
and ap.PK_ID = #{acPick.pkId}
and ap.RECEIVE_TIME = #{acPick.receiveTime}
<if test="acPick.isFreeMail != null">
and ap.IS_FREE_MAIL = #{acPick.isFreeMail}
</if>
and ap.PK_POSTAGE = #{acPick.pkPostage}
and ap.USABLE_QUANTITY + #{acPick.usableQuantity} > 0
</update>
<!-- 根据主键更新提货数据 --> <!-- 根据主键更新提货数据 -->
<update id="updatePickByPkId"> <update id="updatePickByPkId">
update AC_PICK ap update AC_PICK ap
@ -335,52 +276,6 @@
and ap.pick_type in (1, 17) and ap.pick_type in (1, 17)
and ap.usable_quantity > 0 and ap.usable_quantity > 0
and (ap.receive_time is null or to_char(ap.receive_time, 'yyyy-mm-dd hh24:mi:ss') >= to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')) and (ap.receive_time is null or to_char(ap.receive_time, 'yyyy-mm-dd hh24:mi:ss') >= to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'))
<!-- 迁移创客沙棘提货、复购提货 -->
union all
select ap.pk_id,
ap.pick_type,
case
when ap.pick_cover is not null then
ap.pick_cover
else
(select bp.cover from bd_product bp where bp.pk_id = ap.pk_data_id)
end pick_cover,
ap.usable_quantity,
ap.receive_time,
0 pick_flag,
1 IS_WHOLE,
ap.base_quantity,
ap.creation_time
from AC_PICK ap
where ap.del_flag = 0
and ap.pk_country = #{pkCountry}
and ap.pk_member = #{pkMember}
and ap.pick_type in (5, 7)
and ap.usable_quantity > 0
and (ap.receive_time is null or to_char(ap.receive_time, 'yyyy-mm-dd') >= to_char(sysdate, 'yyyy-mm-dd'))
<!-- 迁移乐学易考代金券 -->
union all
select ap.pk_id,
ap.pick_type,
case
when ap.pick_cover is not null then
ap.pick_cover
else
(select bp.cover from bd_product bp where bp.pk_id = ap.pk_data_id)
end pick_cover,
ap.usable_quantity,
ap.receive_time,
1 pick_flag,
0 IS_WHOLE,
ap.base_quantity,
ap.creation_time
from AC_PICK ap
where ap.del_flag = 0
and ap.pk_country = #{pkCountry}
and ap.pk_member = #{pkMember}
and ap.pick_type = 8
and ap.usable_quantity > 0
and (ap.receive_time is null or to_char(ap.receive_time, 'yyyy-mm-dd') >= to_char(sysdate, 'yyyy-mm-dd'))
<!-- 消费赠送、直推赠送 --> <!-- 消费赠送、直推赠送 -->
union all union all
select ap.pk_id, select ap.pk_id,
@ -406,18 +301,6 @@
order by creation_time order by creation_time
</select> </select>
<!-- 更新代言礼包提货数据 -->
<update id="updateRepurchasePick">
update AC_PICK ap
set ap.usable_quantity = nvl(ap.usable_quantity, 0) + #{usableQuantity},
ap.MODIFIED_TIME = sysdate
where ap.del_flag = 0
and ap.pick_type = 7
and ap.pk_base_config = 0
and ap.pk_data_id = #{pkProduct}
and ap.pk_member = #{pkMember}
</update>
<!-- 撤单扣减乐学代金券 --> <!-- 撤单扣减乐学代金券 -->
<update id="deductionsCouponByOrder"> <update id="deductionsCouponByOrder">
update ac_pick ap update ac_pick ap

View File

@ -14,6 +14,7 @@
<result column="DEL_FLAG" property="delFlag"/> <result column="DEL_FLAG" property="delFlag"/>
<result column="SOURCE" property="source"/> <result column="SOURCE" property="source"/>
</resultMap> </resultMap>
<delete id="deleteBatch"> <delete id="deleteBatch">
delete from AC_PICK_MEMBER_LOG delete from AC_PICK_MEMBER_LOG
where pk_id in where pk_id in
@ -78,46 +79,4 @@
#{source}) #{source})
</update> </update>
<!-- 批量插入提货日志 -->
<update id="insertBatchPick">
merge into AC_PICK_MEMBER_LOG apml
using (
<foreach collection="list" item="item" separator=" union ">
select ap.pk_id PK_PICK,
ap.pk_member pk_member,
#{item.orderCode} PICK_ORDER,
#{item.usedQuantity} used_quantity,
ap.pk_country pk_country
from ac_pick ap
where ap.pick_type = #{item.pickType}
and ap.pk_base_config = #{item.pkBaseConfig}
and ap.pk_data_id = #{item.pkDataId}
and ap.pk_member = #{item.pkMember}
</foreach>
) tmp
on (0 = 1)
WHEN NOT MATCHED THEN
insert
(PK_ID,
PK_MEMBER,
PK_PICK,
PICK_QUANTITY,
PICK_TIME,
PICK_ORDER,
PK_COUNTRY,
DEL_FLAG,
SOURCE)
values
(ac_pick_member_log_seq.nextval,
tmp.pk_member,
tmp.pk_pick,
tmp.used_quantity,
sysdate,
tmp.pick_order,
tmp.pk_country,
0,
#{source})
</update>
</mapper> </mapper>

View File

@ -166,19 +166,6 @@
order by pe.SORT desc order by pe.SORT desc
</select> </select>
<select id="queryProductExtById" resultMap="BdProduct">
select bp.pk_id,bp.pk_country,be.repurchase_type,bp.cover,bp.retail_price
from bd_product bp
inner join bd_product_extend be
on bp.pk_id = be.pk_product
where bp.del_flag=0 and be.del_flag=0
and be.repurchase_type = #{repurchaseType}
and bp.pk_country= #{pkCountry} and bp.pk_id in
<foreach collection="productIdSet" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
<!-- 查询带有规格的产品列表 --> <!-- 查询带有规格的产品列表 -->
<select id="queryProductExistSpecs" resultMap="BdProduct"> <select id="queryProductExistSpecs" resultMap="BdProduct">
select distinct bp.* select distinct bp.*

View File

@ -97,82 +97,4 @@ public class MagicNumberConstants {
*/ */
public static final BigDecimal big10000 = new BigDecimal("10000"); public static final BigDecimal big10000 = new BigDecimal("10000");
/**
* 乐学复购 v4 价格
*/
public static final BigDecimal LXYK_V4 = new BigDecimal("2380");
/**
* 乐学复购 V3 价格
*/
public static final BigDecimal LXYK_V3 = new BigDecimal("2680");
/**
* 乐学复购 V2 价格
*/
public static final BigDecimal LXYK_V2 = new BigDecimal("2980");
/**
* 乐学复购 V1 价格
*/
public static final BigDecimal LXYK_V1 = new BigDecimal("2980");
/**
* 乐学复购业绩
*/
public static final BigDecimal LXYK_PV = new BigDecimal("600");
/**
* 乐学复购级差奖金300
*/
public static final BigDecimal LXYK_BONUS_300 = new BigDecimal("300");
/**
* 乐学复购级差奖金600
*/
public static final BigDecimal LXYK_BONUS_600 = new BigDecimal("600");
/**
* 乐学V4注册金额
*/
public static final BigDecimal V4_AMOUNT = new BigDecimal("128000");
/**
* 乐学V3注册金额
*/
public static final BigDecimal V3_AMOUNT = new BigDecimal("36000");
/**
* 乐学V2注册金额
*/
public static final BigDecimal V2_AMOUNT = new BigDecimal("6000");
/**
* 乐学V1注册金额
*/
public static final BigDecimal V1_AMOUNT = new BigDecimal("2000");
// 级差 V4-V4 给的奖金
public static final BigDecimal V4_V4_BONUS = new BigDecimal("43000");
// 级差 V4-V3 给的奖金
public static final BigDecimal V4_V3_BONUS = new BigDecimal("18000");
// 级差 V4-V2 给的奖金
public static final BigDecimal V4_V2_BONUS = new BigDecimal("3000");
// 级差 V4-V1 给的奖金
public static final BigDecimal V4_V1_BONUS = new BigDecimal("1000");
// 级差 V3-V4 给的奖金
public static final BigDecimal V3_V4_BONUS = new BigDecimal("10800");
// 级差 V3-V3 给的奖金
public static final BigDecimal V3_V3_BONUS = new BigDecimal("10800");
// 级差 V3-V2 给的奖金
public static final BigDecimal V3_V2_BONUS = new BigDecimal("2400");
// 级差 V3-V1 给的奖金
public static final BigDecimal V3_V1_BONUS = new BigDecimal("800");
// 级差 V2-V4 给的奖金
public static final BigDecimal V2_V4_BONUS = new BigDecimal("1800");
// 级差 V2-V3 给的奖金
public static final BigDecimal V2_V3_BONUS = new BigDecimal("1800");
// 级差 V2-V2 给的奖金
public static final BigDecimal V2_V2_BONUS = new BigDecimal("1800");
// 级差 V2-V1 给的奖金
public static final BigDecimal V2_V1_BONUS = new BigDecimal("600");
// 级差 V1-V1-4 给的奖金
public static final BigDecimal V1_V_BONUS = new BigDecimal("400");
} }

View File

@ -15,7 +15,6 @@ public class BonusMsgConstants {
*/ */
// public static String RECOMMEND_DIRECT = "MSG_BONUS_002"; // public static String RECOMMEND_DIRECT = "MSG_BONUS_002";
public static String RECOMMEND_DIRECT = "订单编号%s,%s为%s贡献了推荐收益,推荐收益为%f。"; public static String RECOMMEND_DIRECT = "订单编号%s,%s为%s贡献了推荐收益,推荐收益为%f。";
public static String RECOMMEND_SPECIAL_DIRECT = "订单编号%s,%s为%s贡献了乐学易考推荐极差收益,推荐极差收益为%f。";
/** /**
* 拓展收益备注 -- 当前是第%d碰,%d碰,订单编号%s,%s为%s贡献了拓展收益,计算业绩%f,拓展比例%f * 拓展收益备注 -- 当前是第%d碰,%d碰,订单编号%s,%s为%s贡献了拓展收益,计算业绩%f,拓展比例%f
*/ */
@ -103,12 +102,6 @@ public class BonusMsgConstants {
public static String LE_SHARE_RANGE = "订单编号%s,%s为%s贡献了复购极差收益,收益%f。"; public static String LE_SHARE_RANGE = "订单编号%s,%s为%s贡献了复购极差收益,收益%f。";
/**
* 分享极差 -- 订单编号%s,%s为%s贡献了分享极差收益(乐学易考),使用代金券%f,当前等级%s
*/
// public static String LE_XUE_SHARE_RANGE = "MSG_BONUS_018";
public static String LE_XUE_SHARE_RANGE = "订单编号%s,%s为%s贡献了分享极差收益(乐学易考),使用代金券%f,当前等级%s。";
/** /**
* 复购券收益 -- 订单编号%s,%s为%s贡献了复购券收益,计算业绩%f,计算比例%f,复购券收益%f * 复购券收益 -- 订单编号%s,%s为%s贡献了复购券收益,计算业绩%f,计算比例%f,复购券收益%f
*/ */

View File

@ -5,11 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
/** /**
* @Description: 提货商品类型 * 提货商品类型
* @Author: jiang chao
* @Time: 2023/4/24 10:13
* @Classname: EPickType
* @PackageName: com.hzs.common.core.enums
*/ */
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
@ -25,11 +21,6 @@ public enum EPickType {
*/ */
PRIZE(1, "抽奖", EnumsPrefixConstants.ACT_TYPE + "1"), PRIZE(1, "抽奖", EnumsPrefixConstants.ACT_TYPE + "1"),
/**
* 关联 BS_PRODUCT , 用于乐学易考
*/
COUPON(8, "法宝券", EnumsPrefixConstants.ACT_TYPE + "8"),
/** /**
* 关联 AC_GIFT_CONFIG * 关联 AC_GIFT_CONFIG
*/ */

View File

@ -2,7 +2,9 @@ package com.hzs.common.domain.activity.pick;
import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date; import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.hzs.common.core.web.domain.BaseEntity; import com.hzs.common.core.web.domain.BaseEntity;
@ -12,9 +14,6 @@ import lombok.experimental.Accessors;
/** /**
* 提货基础表 * 提货基础表
*
* @author hzs
* @since 2023-04-21
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)

View File

@ -16,9 +16,6 @@ import lombok.experimental.Accessors;
/** /**
* 会员提货记录 * 会员提货记录
*
* @author hzs
* @since 2023-05-15
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)

View File

@ -7,11 +7,7 @@ import lombok.EqualsAndHashCode;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* @Description: 提货基础表扩展 * 提货基础表扩展
* @Author: jiang chao
* @Time: 2023/4/21 18:10
* @Classname: AcPickExt
* @PackageName: com.hzs.common.domain.activity.pick.ext
*/ */
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data

View File

@ -1,2 +0,0 @@
对接文档:
https://docs.qq.com/doc/DVGFhWEFRRXB0elNX