## 去掉乐学涉及的奖项、法宝券等;
This commit is contained in:
parent
4b5b058af5
commit
bef0c9548e
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
/**
|
||||
* 根据订单查询邮费
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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,最多发3000,V1拿400,V4最多拿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)) {
|
||||
// 订单金额 128000,V4推拿43000,V3推拿10800,V2推拿1800,V1推拿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)) {
|
||||
// 订单金额 36000,V4推拿18000,V3推拿10800,V2推拿1800,V1推拿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)) {
|
||||
// 订单金额 6000,V4推拿3000,V3推拿2400,V2推拿1800,V1推拿400
|
||||
pretaxIncome = computePushRangeBonus(targetMemberSettleExt, MagicNumberConstants.V4_V2_BONUS, MagicNumberConstants.V3_V2_BONUS, MagicNumberConstants.V2_V2_BONUS, MagicNumberConstants.V1_V_BONUS);
|
||||
} else {
|
||||
// 订单金额 2000,V4推拿1000,V3推拿800,V2推拿600,V1推拿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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 计算某条订单的推荐奖金
|
||||
*
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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) {
|
||||
// 旧逻辑: 计算乐学易考特殊复购极差,找第一个vip,svip,找到有代金券,代金券-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: 商品ID,value: 法宝券数量)
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 乐学复购极差,找下一个等级的推荐人
|
||||
*
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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);
|
||||
|
||||
/**
|
||||
* 撤单扣减乐学代金券
|
||||
*
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
/**
|
||||
* 查询提货列表
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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(");");
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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 {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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: 根据规格、主键查询产品
|
||||
**/
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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.*
|
||||
|
|
|
@ -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");
|
||||
|
||||
}
|
||||
|
|
|
@ -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。
|
||||
*/
|
||||
|
|
|
@ -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 表
|
||||
*/
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -16,9 +16,6 @@ import lombok.experimental.Accessors;
|
|||
|
||||
/**
|
||||
* 会员提货记录
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2023-05-15
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
对接文档:
|
||||
https://docs.qq.com/doc/DVGFhWEFRRXB0elNX
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue