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

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;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.order.SaOrder;
import java.util.Date;
/**
* @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 {
/**
* 根据秒结算会员奖金
*
* @param orderCode 订单
* @return: List<SaOrderExt>
* @Author: sui q
* @Date: 2023/2/1 21:27
*/
R<Boolean> calculateCumberBonusBySecond(String orderCode);
/*
* @description: 定时任务每天自动计算奖金
* @author: sui q
* @date: 2023/4/10 14:23
* @param: null null
* 定时任务每天自动计算奖金
**/
R<Boolean> autoCalculateBonus(Date settleDate);
/*
* @description: 备份网体
* @author: sui q
* @date: 2024/11/15 10:10
* @param: null null
* 备份网体
**/
void backupsSettleBonusEveryday();
/*
* @description: 定时任务每天自动公布奖金
* @author: sui q
* @date: 2023/4/10 14:23
* @param: null null
* 定时任务每天自动公布奖金
**/
void autoPublishBonus();
/*
* @description: 定时任务每天自动发放奖金
* @author: sui q
* @date: 2023/4/10 14:23
* @param: null null
* 定时任务每天自动发放奖金
**/
void autoGrantBonus();
/*
* @description: 每日生成业绩月表统计数据
* @author: sui q
* @date: 2023/9/1 9:50
* @param: null null
* 每日生成业绩月表统计数据
**/
void insertCuMemberAchieveByEveryDay();
/*
* @description: 退单回退业绩
* @author: sui q
* @date: 2023/9/22 9:27
* @param: null null
* 退单回退业绩
**/
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.domain.activity.pick.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import java.math.BigDecimal;
import java.util.List;
/**
* @Description: 提货相关dubbo服务入口
* @Author: jiang chao
* @Time: 2023/5/15 11:20
* @Classname: IAcPickServiceApi
* @PackageName: com.hzs.activity.base
* 提货相关dubbo服务入口
*/
public interface IAcPickServiceApi {
@ -27,29 +22,10 @@ public interface IAcPickServiceApi {
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);
/*
* @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;
/**
* @description: 奖金计算
* @author: sui q
* @time: 2023/9/18 14:26
* @classname: MemberBonusSettleProvider
* @package_name: com.hzs.bonus.bonus.settle
* version 1.0.0
* 奖金计算
*/
@DubboService
@Slf4j

View File

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

View File

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

View File

@ -3,15 +3,12 @@ package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.activity.pick.IAcPickServiceApi;
import com.hzs.bonus.bonus.param.LeXueRangeParam;
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
import com.hzs.common.core.constant.CountryConstants;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.constant.msg.BonusMsgConstants;
import com.hzs.common.core.enums.*;
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.risk.CuMemberRiskControl;
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.CuMemberSettleExt;
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.BdGrade;
import com.hzs.system.config.dto.BonusConfigDTO;
@ -35,12 +30,9 @@ import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 计算复购的奖金处理类
* @Classname: BonusSettlePurchaseHandle
* @PackageName: com.hzs.member.bonus.service.impl
* 计算复购的奖金处理类
*/
@Slf4j
@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,
BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period,
Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuAwardsControl> cuAwardsControlMap, LeXueRangeParam leXueRangeParam) {
// 计算复购极差的订单
// 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);
}*/
});
Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuAwardsControl> cuAwardsControlMap) {
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
// 处理血缘上网体信息
getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList);
// TODO new 乐学不需要考核相关
// 考核相关
// List<CuMemberSettleExt> cuMemberSettleExtList = getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList);
// Map<Long, CuMemberAssess> cuMemberAssessMap = getCuMemberAssessMap(cuMemberSettleExtMap, settleDate, cuMemberSettleExtList);
Map<Long, CuMemberAssess> cuMemberAssessMap = null;
// if (chinaRangeOrderList.size() > 0) {
// Map<String, List<SaOrderRangeDto>> saOrderRangeDtoMap = saOrderServiceApi.queryOrderRangeVO(chinaRangeOrderList).getData();
// Map<String, RangeDTO> rangePkDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(rangeDtoMap.size()));
@ -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;
}
@ -609,285 +479,6 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
cuMemberBonusRangeList.add(cuMemberBonusRange);
}
/**
* 乐学特殊复购级差根据法宝券进行计算奖金
* 每个等级最多拨出一张法宝券给200奖金遇到V4为止
* 如果购买时会员没有使用券那么同等级也可以拨出一张
*
* @param settleTableName
* @param rangeDtoMap
* @param bonusConfigDTO
* @param period
* @param cuMemberBonusMap
* @param leXueRangeParam
* @param specialOrderList
* @param cuMemberBonusRangeList
*/
private void calculateLeXueRangeBonus(String settleTableName, Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO,
Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, LeXueRangeParam leXueRangeParam,
List<SaOrderExt> specialOrderList, List<CuMemberBonusRange> cuMemberBonusRangeList) {
// 旧逻辑 计算乐学易考特殊复购极差找第一个vipsvip找到有代金券代金券-1奖金给金额第一个是svip后就不给
if (specialOrderList.size() > 0) {
// 查找订单血缘上会员
Set<Long> expandMemberSet = specialOrderList.stream().distinct().map(SaOrderExt::getPkMember).collect(Collectors.toSet());
List<CuMemberSettleExt> specialMemberSettleExtList = 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.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.hzs.activity.pick.IAcPickServiceApi;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
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.bonus.param.BdWaresBonusParam;
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.vo.BonusRecordDetailVO;
import com.hzs.bonus.bonus.vo.MemberBonusDetailCalVO;
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.swing.service.ICuMemberSwingNetLogService;
import com.hzs.common.core.config.BdConfig;
@ -90,8 +87,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
IMemberServiceApi iMemberServiceApi;
@DubboReference
ISaOrderServiceApi iSaOrderServiceApi;
@DubboReference
IAcPickServiceApi iAcPickServiceApi;
@Autowired
private ICuMemberTreeService iCuMemberTreeService;
@ -100,8 +95,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
@Autowired
private ICuMemberAwardsService iCuMemberAwardsService;
@Autowired
private ICuMemberLevelService iCuMemberLevelService;
@Autowired
private ICuMemberService iCuMemberService;
@Autowired
private ICuMemberAchieveLogService iCuMemberAchieveLogService;
@ -299,7 +292,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// c)增加奖衔记录表
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
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) {
saveCuMemberBonus(period, settleDate, cuMemberBonusMap);
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
@ -356,7 +349,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
}
/**
* @Description: 每日计算会员奖金最终的奖金
* 每日计算会员奖金最终的奖金
*/
@Override
@Transactional(rollbackFor = Exception.class)
@ -477,8 +470,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 奖金记录明细统一入库使用
BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO();
// 计算奖金主入口
// 乐学易考奖金计算回写代金券数量
LeXueRangeParam leXueRangeParam = calculateBonusBySaOrderList(settleDate, period, yesterdayPeriod, currentSettleTableName,
calculateBonusBySaOrderList(settleDate, period, yesterdayPeriod, currentSettleTableName,
firPurchaseOrderList, repurchaseOrderList, mallOrderList, awardsMap, gradeMap, bonusConfigDTO, cuMemberBonusMap,
recordDetailVO, cuMemberSettleExtMap, expandOrderList, newExpandFlag);
// 计算复购券
@ -559,15 +551,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
}
// 奖金计算结束统计拨比业绩4-N拨比
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) {
e.printStackTrace();
throw new RuntimeException(e);
@ -794,12 +777,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
* @param cuMemberSettleExtMap 会员结算map
* @param expandOrderList 拓展收益订单首购+复购
*/
private LeXueRangeParam calculateBonusBySaOrderList(String settleDate, Integer period, Integer yesterdayPeriod, String settleTableName,
List<SaOrderExt> firPurchaseOrderList, List<SaOrderExt> repurchaseOrderList, List<SaOrderExt> mallOrderList,
Map<String, BdAwards> awardsMap, Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO,
Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<SaOrderExt> expandOrderList, boolean newExpandFlag) {
LeXueRangeParam leXueRangeParam = null;
private void calculateBonusBySaOrderList(String settleDate, Integer period, Integer yesterdayPeriod, String settleTableName,
List<SaOrderExt> firPurchaseOrderList, List<SaOrderExt> repurchaseOrderList, List<SaOrderExt> mallOrderList,
Map<String, BdAwards> awardsMap, Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO,
Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<SaOrderExt> expandOrderList, boolean newExpandFlag) {
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
@ -822,7 +804,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 先计算复购在计算首购
// 计算复购
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,
newExpandFlag);
}
@ -861,8 +843,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
cuMemberBonusCoach.setIncomeDialRatio(BigDecimal.ZERO);
cuMemberBonusCoach.setOrderDialRatio(BigDecimal.ZERO);
});
return leXueRangeParam;
}
private Map<Long, CuMemberBonus> getWeekMemberBonusMap(String settleDate, Integer period) {
@ -1171,7 +1151,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
* @param purchaseOrderList 复购订单
* @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<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
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);
}
//****************************乐学极差(复购)*****************************/
LeXueRangeParam leXueRangeParam = new LeXueRangeParam();
//****************************复购极差*****************************/
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap,
bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap, cuAwardsControlMap, leXueRangeParam);
bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap, cuAwardsControlMap);
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
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.setOrderDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRealIncome(), saOrderExt.getOrderAmount()));
});
// 插入奖金表 奖金明细表
return leXueRangeParam;
}
/**
@ -1317,7 +1294,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
}
/**
* @Description: 计算嗨粉订单的奖金
* 计算嗨粉订单的奖金
*
* @return: void
*/
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
*/
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;
@Autowired
private IBonusSettleService iBonusSettleService;
@Autowired
private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
@Autowired
private CuMemberBonusPushMapper cuMemberBonusPushMapper;
@Autowired
private CuMemberBonusExpandMapper cuMemberBonusExpandMapper;
@Autowired
private CuMemberBonusCoachMapper cuMemberBonusCoachMapper;
@Autowired
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
public List<Long> batchQueryCuMemberBonusSeq(Integer rowNum) {
return baseMapper.batchQueryCuMemberBonusSeq(rowNum);

View File

@ -127,23 +127,6 @@ public class ApiPickController extends BaseController {
.quantity(quantity)
.build());
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 CONSUMPTION_GIFT:
case DIRECT_PUSH_GIFT:
@ -309,33 +292,6 @@ public class ApiPickController extends BaseController {
productOrderItems.setPkStorehouse(saOrder.getPkStorehouse());
orderItemsList.add(productOrderItems);
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 CONSUMPTION_GIFT:
case DIRECT_PUSH_GIFT:

View File

@ -38,11 +38,7 @@ import java.util.*;
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")
@RestController
@ -96,9 +92,8 @@ public class AcPickController extends BaseController {
acPickQueryVO.setPickTypeVal(EPickType.getEnumByValue(acPickQueryVO.getPickType()).getLabel());
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()
.productName(acPickExt.getProductName())
.quantity(acPickExt.getBaseQuantity())
@ -159,8 +154,7 @@ public class AcPickController extends BaseController {
acPickQueryVO.setPickTypeVal(EPickType.getEnumByValue(acPickQueryVO.getPickType()).getLabel());
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()
.productName(acPickExt.getProductName())
@ -204,7 +198,7 @@ public class AcPickController extends BaseController {
AcPickExt acPickExt = iAcPickService.queryDetail(pkId, pkCountry);
if (null != acPickExt) {
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()
.pkProduct(acPickExt.getPkDataId().intValue())

View File

@ -13,9 +13,6 @@ import java.util.List;
/**
* 提货基础表 Mapper 接口
*
* @author hzs
* @since 2023-04-21
*/
public interface AcPickMapper extends BaseMapper<AcPick> {
@ -53,25 +50,6 @@ public interface AcPickMapper extends BaseMapper<AcPick> {
@Param("quantity") Integer quantity,
@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,
@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);
/**
* 根据主键更新提货数量
*
* @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);
/**
* 更新代言礼包提货数据
*
* @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 接口
*
* @author hzs
* @since 2023-05-15
*/
public interface AcPickMemberLogMapper extends BaseMapper<AcPickMemberLog> {
@ -36,20 +33,8 @@ public interface AcPickMemberLogMapper extends BaseMapper<AcPickMemberLog> {
@Param("quantity") Integer quantity,
@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);
}

View File

@ -8,11 +8,7 @@ import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @Description: 提货查询列表入参
* @Author: jiang chao
* @Time: 2023/4/21 18:01
* @Classname: AcPickQueryParam
* @PackageName: com.hzs.activity.pick.param
* 提货查询列表入参
*/
@Data
@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.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
@ -18,11 +17,7 @@ import java.math.BigDecimal;
import java.util.List;
/**
* @Description: 提货相关dubbo服务入口
* @Author: jiang chao
* @Time: 2023/5/15 11:21
* @Classname: AcPickProviderApi
* @PackageName: com.hzs.activity.pick.provider
* 提货相关dubbo服务入口
*/
@Slf4j
@DubboService
@ -31,7 +26,7 @@ public class AcPickProviderApi implements IAcPickServiceApi {
@Autowired
private IAcPickService iAcPickService;
@Autowired
private IAcPickMemberLogService acPickMemberLogService;
private IAcPickMemberLogService iAcPickMemberLogService;
@Override
public R<?> handlePickOrder(Long pkMember, String orderCode) {
@ -55,27 +50,12 @@ public class AcPickProviderApi implements IAcPickServiceApi {
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
public R<BigDecimal> queryOrderPostage(String orderCode, Integer recProvince, Integer recCity, Integer pkCountry) {
try {
LambdaQueryWrapper<AcPickMemberLog> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AcPickMemberLog::getPickOrder, orderCode);
AcPickMemberLog acPickMemberLog = acPickMemberLogService.getOne(queryWrapper);
AcPickMemberLog acPickMemberLog = iAcPickMemberLogService.getOne(queryWrapper);
if (null != acPickMemberLog) {
AcPick acPick = iAcPickService.getById(acPickMemberLog.getPkPick());
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.common.domain.activity.pick.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import java.util.List;
/**
* 会员提货记录 服务类
*
* @author hzs
* @since 2023-05-15
*/
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);
/**
* 批量插入提货日志
*
* @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);
/*
* @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,
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);
/*
* @description: 更新提货单
**/
boolean updatePickUse(List<AcPickExt> acPickExtList, List<AcPickMemberLog> acPickMemberLogList);
/**
* 查询提货列表
*

View File

@ -1,23 +1,17 @@
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.service.IAcPickMemberLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.activity.pick.vo.AcPickMemberLogVO;
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* 会员提货记录 服务实现类
*
* @author hzs
* @since 2023-05-15
*/
@Service
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);
}
@Override
public int insertBatchPick(List<AcPickExt> acPickExtList, Integer source) {
return baseMapper.insertBatchPick(acPickExtList, source);
}
@Override
public int deleteBatch(List<AcPickMemberLog> 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;
}
@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
public int updatePickUsableByMemberAndActivityType(Long pkMember, Integer pickType, Long pkBaseConfig,
Long pkDataId, Integer quantity, Long pkModified) {
@ -145,21 +140,6 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
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
public List<AcPickExt> queryList(AcPickQueryParam param, Integer pkCountry) {
return baseMapper.queryList(param, pkCountry);
@ -259,7 +239,6 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
updateList.add(acPick);
}
// 产品信息
BdProduct bdProduct = productMap.get(detailParam.getPkProduct());
// 操作日志内容
@ -422,8 +401,7 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
switch (ePickType) {
case PICK_PRODUCT:
case PRIZE:
case COUPON:
// 提货产品抽奖创客沙棘提货复购提货代金券
// 提货产品抽奖
if (null != detailParam.getPkProduct()) {
BdProduct product = iBdProductService.getProduct(detailParam.getPkProduct());
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;
/**
* @Description: 会员提货日志
* @Author: jiang chao
* @Time: 2023/5/15 14:00
* @Classname: AcPickMemberLogVO
* @PackageName: com.hzs.activity.pick.vo
* 会员提货日志
*/
@Data
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;
/**
* @Description: 会员提货列表VO
* @Author: jiang chao
* @Time: 2023/4/24 16:15
* @Classname: ApiPickVO
* @PackageName: com.hzs.activity.pick.vo
* 会员提货列表VO
*/
@Data
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.system.base.BdStorehouse;
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.util.TransactionUtils;
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.dto.CurrencyDTO;
import com.hzs.system.config.IAreaFreePostageServiceApi;
import com.hzs.system.config.IAwardsServiceApi;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.dto.AreaCurrencyDTO;
import com.hzs.system.config.dto.GradeDTO;
@ -74,8 +72,6 @@ public class SaOrderHandle {
@DubboReference
IMemberTeamServiceApi memberTeamServiceApi;
@DubboReference
IAwardsServiceApi awardsServiceApi;
@DubboReference
ISystemConfigServiceApi systemConfigServiceApi;
@DubboReference
IAreaFreePostageServiceApi iAreaFreePostageServiceApi;
@ -268,24 +264,6 @@ public class SaOrderHandle {
for (BdWaresDetailExt waresDetailExt : bdWaresDetailExtList) {
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()) {

View File

@ -57,7 +57,6 @@ import com.hzs.sale.order.param.*;
import com.hzs.sale.order.service.*;
import com.hzs.sale.order.vo.*;
import com.hzs.sale.product.service.IBdProductExtendService;
import com.hzs.sale.product.service.IBdProductService;
import com.hzs.sale.wares.service.*;
import com.hzs.system.base.IAreaServiceApi;
import com.hzs.system.base.ICountryServiceApi;
@ -139,8 +138,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
@Autowired
private IBdWaresSpecsRelationService iBdWaresSpecsRelationService;
@Autowired
private IBdProductService iBdProductService;
@Autowired
private ISaDeliverItemsService iSaDeliverItemsService;
@Autowired
private IAcPickService iAcPickService;
@ -731,9 +728,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
saOrderExt.setPayTime(currentDateTime);
saOrderExt.setOrderStatus(EOrderStatus.PAY.getValue());
// // 乐学注册乐学升级订单处理法宝券
// this.handleLxPick(saOrderExt);
if (isToBePay && !isHaiFun) {
// 根据业绩判断自动上树 -- 目前使用
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)) {
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);
// // 乐学注册乐学升级订单处理法宝券
// this.handleLxPick(saOrderExt);
// 更新订单信息
updateSaOrder(saOrderExt);
// 处理会员信息更新会员等级,扣款
@ -2431,32 +2411,4 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
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);
/*
* @description: 根据产品id查询产品
**/
List<BdProductExt> queryProductExtById(@Param("productIdSet") Set<Integer> productIdSet, @Param("pkCountry") Integer pkCountry,
@Param("repurchaseType") Integer repurchaseType);
/*
* @description: 根据规格主键查询产品
**/

View File

@ -13,7 +13,6 @@ import com.hzs.system.sys.dto.LoginUser;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 产品相关服务
@ -28,12 +27,7 @@ public interface IBdProductService extends IService<BdProduct> {
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);

View File

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

View File

@ -237,8 +237,7 @@ public class ApiBdWaresController extends BaseController {
// 零售价
BigDecimal retailPrice = BigDecimal.ZERO;
if (EOrderType.REPURCHASE_ORDER.getValue() == cuWaresParams.getSpecialArea()
|| EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == cuWaresParams.getSpecialArea()) {
if (EOrderType.REPURCHASE_ORDER.getValue() == cuWaresParams.getSpecialArea()) {
for (BdWaresRange bdWaresRange : bdWaresRangeList) {
if (waresExt.getPkId().intValue() == bdWaresRange.getPkWares().intValue()) {
waresPrice = waresPrice.add(bdWaresRange.getPrice());
@ -246,18 +245,6 @@ public class ApiBdWaresController extends BaseController {
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 {
List<BdWaresSpecsSkuExt> waresSpecsSku = waresSpecsSkuMap.get(waresExt.getPkId());
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 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.enums.*;
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.BdWaresRange;
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.ext.BdLabelExt;
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.system.base.ICurrencyServiceApi;
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.dto.GradeDTO;
import com.hzs.system.config.dto.RangeDTO;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
@ -41,7 +36,6 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -67,10 +61,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
IRangeServiceApi iRangeServiceApi;
@DubboReference
IMemberServiceApi iMemberServiceApi;
@DubboReference
IAwardsServiceApi iAwardsServiceApi;
@DubboReference
IGradeServiceApi iGradeServiceApi;
@Override
public CuWaresParams queryWaresSpecsSku(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry) {
@ -176,34 +166,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
}
productParams.clear();
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.setSpecialArea(specialArea);
return cuWaresParams;
@ -211,13 +173,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
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
public CuWaresParams queryWaresSpecsSkuCount(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry) {
List<BdWaresSpecsSkuExt> bdWaresSpecsSkuExtList;
@ -273,7 +228,8 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
}
/**
* @description: 查询商品sku信息购物车专用
* 查询商品sku信息购物车专用
*
* @author: zhang jing
* @date: 2024/3/28 14:34
* @param: [specialArea, waresCode, loginMemberId, pkCountry]
@ -348,31 +304,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
.filter(param -> !param.getWaresItemsParamsList().isEmpty())
.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.setSpecialArea(specialArea);
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
public SpecsSkuParam queryWaresDetailSkuBySpecs(CuWaresItemsParams cuWaresItemsParams) {
BdWaresSpecsSkuExt bdWaresSpecsSkuExt = baseMapper.queryWaresDetailSkuBySpecs(cuWaresItemsParams);
@ -447,44 +370,21 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
.build();
}
/**
* 根据id修改值
*
* @param sku
*/
@Override
public void updateBySkuId(BdWaresSpecsSku sku) {
baseMapper.updateBySkuId(sku);
}
/**
* 根据id查询sku 可查询删除数据
*
* @param pkWaresSpecsSku
* @return
*/
@Override
public BdWaresSpecsSku selectByWaresSpecsSkuIdAndDel(Integer pkWaresSpecsSku) {
return baseMapper.selectByWaresSpecsSkuIdAndDel(pkWaresSpecsSku);
}
/**
* 根据商品id 查询
*
* @param waresIds
* @return
*/
@Override
public List<BdWaresSpecsSkuExt> selectByWaresSpecsSku(List<Integer> waresIds) {
return baseMapper.selectByWaresSpecsSku(waresIds);
}
/**
* 根据id 批量查询sku 信息
*
* @param pkWaresSpecsSku
* @return
*/
@Override
public List<WaresItemWaresInfo> selectByPkIds(List<Integer> 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())));
}
// 复购乐学专区 无奖衔 或者 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());
if (pkCountry != null) {
@ -589,35 +464,16 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
return waresItemVo;
}
/**
* 根据商品id查询规格价格最小值
*
* @param pkWares
* @return
*/
@Override
public List<BdWaresSpecsSkuExt> selectByMinWaresSpecsSku(Integer pkWares) {
return baseMapper.selectByMinWaresSpecsSku(pkWares);
}
/**
* 根据商品id查询规格价格最小值
*
* @param pkWaresIds
* @return
*/
@Override
public List<BdWaresSpecsSkuExt> selectByMinWaresSpecsSkuByPkWaresList(List<Integer> pkWaresIds) {
return baseMapper.selectByMinWaresSpecsSkuByPkWaresList(pkWaresIds);
}
/**
* 根据id 查询
*
* @param pkWaresSpecsSku
* @return
*/
@Override
public BdWaresSpecsSkuExt selectByPkWaresSpecsSku(Integer pkWaresSpecsSku) {
return baseMapper.selectByPkWaresSpecsSku(pkWaresSpecsSku);

View File

@ -75,29 +75,6 @@
ap.modified_time = sysdate
</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更新使用数量 -->
<update id="updatePickUseById">
update AC_PICK ap
@ -110,26 +87,6 @@
and ap.USABLE_QUANTITY - #{quantity} >= 0
</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 ac_pick ap
@ -148,22 +105,6 @@
and ap.usable_quantity - #{quantity} >= 0
</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 AC_PICK ap
@ -335,52 +276,6 @@
and ap.pick_type in (1, 17)
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'))
<!-- 迁移创客沙棘提货、复购提货 -->
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
select ap.pk_id,
@ -406,18 +301,6 @@
order by creation_time
</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 ac_pick ap

View File

@ -14,6 +14,7 @@
<result column="DEL_FLAG" property="delFlag"/>
<result column="SOURCE" property="source"/>
</resultMap>
<delete id="deleteBatch">
delete from AC_PICK_MEMBER_LOG
where pk_id in
@ -78,46 +79,4 @@
#{source})
</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>

View File

@ -166,19 +166,6 @@
order by pe.SORT desc
</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 distinct bp.*

View File

@ -97,82 +97,4 @@ public class MagicNumberConstants {
*/
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 = "订单编号%s,%s为%s贡献了推荐收益,推荐收益为%f。";
public static String RECOMMEND_SPECIAL_DIRECT = "订单编号%s,%s为%s贡献了乐学易考推荐极差收益,推荐极差收益为%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。";
/**
* 分享极差 -- 订单编号%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
*/

View File

@ -5,11 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Description: 提货商品类型
* @Author: jiang chao
* @Time: 2023/4/24 10:13
* @Classname: EPickType
* @PackageName: com.hzs.common.core.enums
* 提货商品类型
*/
@AllArgsConstructor
@Getter
@ -25,11 +21,6 @@ public enum EPickType {
*/
PRIZE(1, "抽奖", EnumsPrefixConstants.ACT_TYPE + "1"),
/**
* 关联 BS_PRODUCT , 用于乐学易考
*/
COUPON(8, "法宝券", EnumsPrefixConstants.ACT_TYPE + "8"),
/**
* 关联 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.TableName;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.hzs.common.core.web.domain.BaseEntity;
@ -12,9 +14,6 @@ import lombok.experimental.Accessors;
/**
* 提货基础表
*
* @author hzs
* @since 2023-04-21
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

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

View File

@ -7,11 +7,7 @@ import lombok.EqualsAndHashCode;
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)
@Data

View File

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