## 去掉乐学涉及的奖项、法宝券等;
This commit is contained in:
parent
9d750ff7fc
commit
7e96970223
|
@ -1,76 +1,49 @@
|
||||||
package com.hzs.bonus.settle;
|
package com.hzs.bonus.settle;
|
||||||
|
|
||||||
import com.hzs.common.core.domain.R;
|
import com.hzs.common.core.domain.R;
|
||||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
|
||||||
import com.hzs.common.domain.sale.order.SaOrder;
|
import com.hzs.common.domain.sale.order.SaOrder;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 奖金结算
|
* 奖金结算
|
||||||
* @author: sui q
|
|
||||||
* @time: 2023/9/18 14:24
|
|
||||||
* @classname: IMemberBonusSettleApi
|
|
||||||
* @package_name: com.hzs.bonus.settle
|
|
||||||
* version 1.0.0
|
|
||||||
*/
|
*/
|
||||||
public interface IMemberSettleBonusApi {
|
public interface IMemberSettleBonusApi {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据秒结算会员奖金
|
* 根据秒结算会员奖金
|
||||||
|
*
|
||||||
* @param orderCode 订单
|
* @param orderCode 订单
|
||||||
* @return: List<SaOrderExt>
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2023/2/1 21:27
|
|
||||||
*/
|
*/
|
||||||
R<Boolean> calculateCumberBonusBySecond(String orderCode);
|
R<Boolean> calculateCumberBonusBySecond(String orderCode);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 定时任务每天自动计算奖金
|
* 定时任务每天自动计算奖金
|
||||||
* @author: sui q
|
|
||||||
* @date: 2023/4/10 14:23
|
|
||||||
* @param: null null
|
|
||||||
**/
|
**/
|
||||||
R<Boolean> autoCalculateBonus(Date settleDate);
|
R<Boolean> autoCalculateBonus(Date settleDate);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 备份网体
|
* 备份网体
|
||||||
* @author: sui q
|
|
||||||
* @date: 2024/11/15 10:10
|
|
||||||
* @param: null null
|
|
||||||
**/
|
**/
|
||||||
void backupsSettleBonusEveryday();
|
void backupsSettleBonusEveryday();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 定时任务每天自动公布奖金
|
* 定时任务每天自动公布奖金
|
||||||
* @author: sui q
|
|
||||||
* @date: 2023/4/10 14:23
|
|
||||||
* @param: null null
|
|
||||||
**/
|
**/
|
||||||
void autoPublishBonus();
|
void autoPublishBonus();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 定时任务每天自动发放奖金
|
* 定时任务每天自动发放奖金
|
||||||
* @author: sui q
|
|
||||||
* @date: 2023/4/10 14:23
|
|
||||||
* @param: null null
|
|
||||||
**/
|
**/
|
||||||
void autoGrantBonus();
|
void autoGrantBonus();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 每日生成业绩、月表统计数据
|
* 每日生成业绩、月表统计数据
|
||||||
* @author: sui q
|
|
||||||
* @date: 2023/9/1 9:50
|
|
||||||
* @param: null null
|
|
||||||
**/
|
**/
|
||||||
void insertCuMemberAchieveByEveryDay();
|
void insertCuMemberAchieveByEveryDay();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 退单回退业绩
|
* 退单回退业绩
|
||||||
* @author: sui q
|
|
||||||
* @date: 2023/9/22 9:27
|
|
||||||
* @param: null null
|
|
||||||
**/
|
**/
|
||||||
Boolean chargeBackSaOrder(SaOrder saOrder);
|
Boolean chargeBackSaOrder(SaOrder saOrder);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,17 +3,12 @@ package com.hzs.activity.pick;
|
||||||
import com.hzs.common.core.domain.R;
|
import com.hzs.common.core.domain.R;
|
||||||
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
|
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
|
||||||
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
|
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
|
||||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 提货相关dubbo服务入口
|
* 提货相关dubbo服务入口
|
||||||
* @Author: jiang chao
|
|
||||||
* @Time: 2023/5/15 11:20
|
|
||||||
* @Classname: IAcPickServiceApi
|
|
||||||
* @PackageName: com.hzs.activity.base
|
|
||||||
*/
|
*/
|
||||||
public interface IAcPickServiceApi {
|
public interface IAcPickServiceApi {
|
||||||
|
|
||||||
|
@ -27,29 +22,10 @@ public interface IAcPickServiceApi {
|
||||||
R<?> handlePickOrder(Long pkMember, String orderCode);
|
R<?> handlePickOrder(Long pkMember, String orderCode);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 更新提货单
|
* 更新提货单
|
||||||
* @author: sui q
|
|
||||||
* @date: 2023/5/30 19:49
|
|
||||||
* @param: null null
|
|
||||||
**/
|
**/
|
||||||
R<Boolean> updatePickUse(List<AcPickExt> acPickExtList, Integer signSource, List<AcPickMemberLog> acPickMemberLogList);
|
R<Boolean> updatePickUse(List<AcPickExt> acPickExtList, Integer signSource, List<AcPickMemberLog> acPickMemberLogList);
|
||||||
|
|
||||||
/*
|
|
||||||
* @description: 更新提货单
|
|
||||||
* @author: sui q
|
|
||||||
* @date: 2023/5/30 19:49
|
|
||||||
* @param: null null
|
|
||||||
**/
|
|
||||||
R<Boolean> updatePickUse(List<AcPickExt> acPickExtList, List<AcPickMemberLog> acPickMemberLogList);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @description: 查询会员提货使用记录
|
|
||||||
* @author: sui q
|
|
||||||
* @date: 2023/6/3 10:51
|
|
||||||
* @param: null null
|
|
||||||
**/
|
|
||||||
R<List<AcPickMemberLog>> queryPickMemberLog(List<SaOrderExt> saOrderExtList);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据订单查询邮费
|
* 根据订单查询邮费
|
||||||
*
|
*
|
||||||
|
|
|
@ -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;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 奖金计算
|
* 奖金计算
|
||||||
* @author: sui q
|
|
||||||
* @time: 2023/9/18 14:26
|
|
||||||
* @classname: MemberBonusSettleProvider
|
|
||||||
* @package_name: com.hzs.bonus.bonus.settle
|
|
||||||
* version 1.0.0
|
|
||||||
*/
|
*/
|
||||||
@DubboService
|
@DubboService
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
|
@ -74,7 +74,7 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
|
||||||
TableDataInfo queryMemberBonusDetailVoByCondition(BonusParam bonusParam);
|
TableDataInfo queryMemberBonusDetailVoByCondition(BonusParam bonusParam);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 查询创客空间奖金来源
|
* 查询创客空间奖金来源
|
||||||
**/
|
**/
|
||||||
List<MemberBonusDetailVO> queryMemberMarkBonusDetailSource(BonusParam bonusParam);
|
List<MemberBonusDetailVO> queryMemberMarkBonusDetailSource(BonusParam bonusParam);
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
|
||||||
void insertOrUpdateCuMemberBonus(List<CuMemberBonus> cuMemberBonusList);
|
void insertOrUpdateCuMemberBonus(List<CuMemberBonus> cuMemberBonusList);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 查询会员奖金
|
* 查询会员奖金
|
||||||
**/
|
**/
|
||||||
List<CuMemberBonus> queryCuMemberBonus(int period, List<CuMemberBonus> cuMemberBonusList);
|
List<CuMemberBonus> queryCuMemberBonus(int period, List<CuMemberBonus> cuMemberBonusList);
|
||||||
|
|
||||||
|
@ -130,24 +130,24 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
|
||||||
List<CuMemberBonus> queryCuMemberBonusByCondition(Integer pkCountry, Integer grantStatus, Integer startPeriod, Integer endPeriod);
|
List<CuMemberBonus> queryCuMemberBonusByCondition(Integer pkCountry, Integer grantStatus, Integer startPeriod, Integer endPeriod);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 定时任务每天自动计算奖金
|
* 定时任务每天自动计算奖金
|
||||||
* @param: startDate 开始时间
|
* @param: startDate 开始时间
|
||||||
* @param: endDate 结束时间
|
* @param: endDate 结束时间
|
||||||
**/
|
**/
|
||||||
Boolean autoCalculateBonus(Date startDate, Date endDate);
|
Boolean autoCalculateBonus(Date startDate, Date endDate);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 备份网体
|
* 备份网体
|
||||||
**/
|
**/
|
||||||
void backupsSettleBonusEveryday();
|
void backupsSettleBonusEveryday();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 查询会员奖金根据期间
|
* 查询会员奖金根据期间
|
||||||
**/
|
**/
|
||||||
Set<Long> queryMemberBonusByPeriod(Integer period);
|
Set<Long> queryMemberBonusByPeriod(Integer period);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 查询会员一周周期的拓展累计,复购拓展累计
|
* 查询会员一周周期的拓展累计,复购拓展累计
|
||||||
**/
|
**/
|
||||||
Map<Long, CuMemberBonus> queryWeekMemberBonus(int startPeriod, int endPeriod);
|
Map<Long, CuMemberBonus> queryWeekMemberBonus(int startPeriod, int endPeriod);
|
||||||
|
|
||||||
|
|
|
@ -48,12 +48,12 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
||||||
private ICuMemberBonusDelayService iCuMemberBonusDelayService;
|
private ICuMemberBonusDelayService iCuMemberBonusDelayService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 计算直推奖
|
||||||
|
*
|
||||||
* @param settleTableName 结算表
|
* @param settleTableName 结算表
|
||||||
* @param bonusConfigDTO 参数
|
* @param bonusConfigDTO 参数
|
||||||
* @param systemConfigMap 系统参数
|
* @param systemConfigMap 系统参数
|
||||||
* @param firPurchaseOrderList 首单
|
* @param firPurchaseOrderList 首单
|
||||||
* @Description: 计算直推奖
|
|
||||||
* @return: void
|
|
||||||
*/
|
*/
|
||||||
List<CuMemberBonusPush> calculateRecommendBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, BonusConfigDTO bonusConfigDTO,
|
List<CuMemberBonusPush> calculateRecommendBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, BonusConfigDTO bonusConfigDTO,
|
||||||
Map<String, String> systemConfigMap, List<SaOrderExt> firPurchaseOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<String, BdAwards> awardsMap) {
|
Map<String, String> systemConfigMap, List<SaOrderExt> firPurchaseOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<String, BdAwards> awardsMap) {
|
||||||
|
@ -75,141 +75,9 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
||||||
cuMemberBonusPushList.add(cuMemberBonusPush);
|
cuMemberBonusPushList.add(cuMemberBonusPush);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO new 乐学直推级差收益,需要按新逻辑修改(级差等级4个,封顶上限修改)
|
|
||||||
// V2订单6000,最多发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;
|
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());
|
BonusExpandDTO bonusExpand = bonusConfigDTO.getBonusExpandMap().get(memberSettleExt.getPkSettleCountry());
|
||||||
// 4-N 拓展比例(一般为26%)
|
// 4-N 拓展比例(一般为26%)
|
||||||
BigDecimal expandRatio = bonusExpand.getExpandRatio();
|
BigDecimal expandRatio = bonusExpand.getExpandRatio();
|
||||||
// log.info("expandRatio 配置N使用的比例 : {}", expandRatio);
|
|
||||||
if (ComputeUtil.compareValue(editExpandRatio)) {
|
if (ComputeUtil.compareValue(editExpandRatio)) {
|
||||||
expandRatio = editExpandRatio;
|
expandRatio = editExpandRatio;
|
||||||
}
|
}
|
||||||
// log.info("expandRatio 2 : {}", expandRatio);
|
|
||||||
BigDecimal countryExpandRatio = ComputeUtil.computeDivide(expandRatio, BigDecimal.valueOf(endTouch));
|
BigDecimal countryExpandRatio = ComputeUtil.computeDivide(expandRatio, BigDecimal.valueOf(endTouch));
|
||||||
if (ComputeUtil.compareValue(countryExpandRatio, bdGrade.getRepurchaseRatio())) {
|
if (ComputeUtil.compareValue(countryExpandRatio, bdGrade.getRepurchaseRatio())) {
|
||||||
// log.info("expandRatio 3 : {}", bdGrade.getRepurchaseRatio());
|
|
||||||
return bdGrade.getRepurchaseRatio();
|
return bdGrade.getRepurchaseRatio();
|
||||||
}
|
}
|
||||||
// log.info("expandRatio N均过比较 : {}", countryExpandRatio);
|
|
||||||
return countryExpandRatio;
|
return countryExpandRatio;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,10 +358,11 @@ public abstract class BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 获得 直推收益的备注
|
||||||
|
*
|
||||||
* @param saOrderExt 订单编号
|
* @param saOrderExt 订单编号
|
||||||
* @param cuMemberBonusPush 直推奖
|
* @param cuMemberBonusPush 直推奖
|
||||||
* @param cuMemberSettleExtMap 存储会员网体的map
|
* @param cuMemberSettleExtMap 存储会员网体的map
|
||||||
* @Description: 获得 直推收益的备注
|
|
||||||
*/
|
*/
|
||||||
protected void recommendRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
|
protected void recommendRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
|
||||||
CuMemberSettleExt sourceCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
CuMemberSettleExt sourceCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||||
|
@ -386,12 +383,10 @@ public abstract class BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 记录需要修改的会员结算表数据, 安置的
|
||||||
|
*
|
||||||
* @param cuMemberSettleExtMap 会员结算
|
* @param cuMemberSettleExtMap 会员结算
|
||||||
* @param cuMemberSettleExtList 查询出来的结算数据
|
* @param cuMemberSettleExtList 查询出来的结算数据
|
||||||
* @Description: 记录需要修改的会员结算表数据, 安置的
|
|
||||||
* @return: void
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/15 9:52
|
|
||||||
*/
|
*/
|
||||||
protected void getSecondMemberSettle(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<CuMemberSettleExt> cuMemberSettleExtList) {
|
protected void getSecondMemberSettle(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<CuMemberSettleExt> cuMemberSettleExtList) {
|
||||||
cuMemberSettleExtList.forEach(cuMemberSettleExt -> {
|
cuMemberSettleExtList.forEach(cuMemberSettleExt -> {
|
||||||
|
@ -693,31 +688,12 @@ public abstract class BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得 分享极差收益的备注
|
* 获得 报单服务费收益的备注
|
||||||
*
|
*
|
||||||
* @param saOrderExt 订单编号
|
|
||||||
* @param cuMemberBonusRange 报单服务费
|
|
||||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
|
||||||
* @param targetCuMemberSettleExt 获得奖金的人
|
|
||||||
*/
|
|
||||||
protected void xueRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
|
|
||||||
CuMemberSettleExt targetCuMemberSettleExt) {
|
|
||||||
String remark = String.format(BonusMsgConstants.LE_XUE_SHARE_RANGE, saOrderExt.getOrderCode(),
|
|
||||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
|
||||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
|
||||||
ComputeUtil.computeDivide(targetCuMemberSettleExt.getRetailPrice(), BigDecimal.valueOf(1)), targetCuMemberSettleExt.getGradeValue());
|
|
||||||
cuMemberBonusRange.setRemark(remark);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param saOrder 订单编号
|
* @param saOrder 订单编号
|
||||||
* @param cuMemberBonusDetail 云代首购
|
* @param cuMemberBonusDetail 云代首购
|
||||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||||
* @param targetCuMemberSettleExt 获得奖金的人
|
* @param targetCuMemberSettleExt 获得奖金的人
|
||||||
* @Description: 获得 报单服务费收益的备注
|
|
||||||
* @return: String
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/17 11:22
|
|
||||||
*/
|
*/
|
||||||
protected void cloudAgentRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
|
protected void cloudAgentRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
|
||||||
CuMemberSettleExt targetCuMemberSettleExt, String msg) {
|
CuMemberSettleExt targetCuMemberSettleExt, String msg) {
|
||||||
|
@ -729,14 +705,12 @@ public abstract class BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 获得 报单服务费收益的备注
|
||||||
|
*
|
||||||
* @param saOrder 订单编号
|
* @param saOrder 订单编号
|
||||||
* @param cuMemberBonusDetail 云代首购
|
* @param cuMemberBonusDetail 云代首购
|
||||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||||
* @param targetCuMemberSettleExt 获得奖金的人
|
* @param targetCuMemberSettleExt 获得奖金的人
|
||||||
* @Description: 获得 报单服务费收益的备注
|
|
||||||
* @return: String
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/11/17 11:22
|
|
||||||
*/
|
*/
|
||||||
protected void repurchaseCouponsRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
|
protected void repurchaseCouponsRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
|
||||||
CuMemberSettleExt targetCuMemberSettleExt) {
|
CuMemberSettleExt targetCuMemberSettleExt) {
|
||||||
|
@ -987,12 +961,10 @@ public abstract class BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 获取会员的极差等级,验证会员是否有奖衔
|
||||||
|
*
|
||||||
* @param awardsMap 奖衔
|
* @param awardsMap 奖衔
|
||||||
* @param parentMemberTree 会员树历史记录
|
* @param parentMemberTree 会员树历史记录
|
||||||
* @Description: 获取会员的极差等级,验证会员是否有奖衔
|
|
||||||
* @return: String
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2023/1/4 14:22
|
|
||||||
*/
|
*/
|
||||||
protected String getMemberCountryKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
protected String getMemberCountryKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||||
Integer pkAwards = getPkRealAwards(parentMemberTree.getPkMember(), parentMemberTree.getPkAwards(), cuAwardsControlMap);
|
Integer pkAwards = getPkRealAwards(parentMemberTree.getPkMember(), parentMemberTree.getPkAwards(), cuAwardsControlMap);
|
||||||
|
@ -1010,12 +982,10 @@ public abstract class BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 获取会员的极差等级,验证会员是否有奖衔
|
||||||
|
*
|
||||||
* @param awardsMap 奖衔
|
* @param awardsMap 奖衔
|
||||||
* @param parentMemberTree 会员树历史记录
|
* @param parentMemberTree 会员树历史记录
|
||||||
* @Description: 获取会员的极差等级,验证会员是否有奖衔
|
|
||||||
* @return: String
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2023/1/4 14:22
|
|
||||||
*/
|
*/
|
||||||
protected String getMemberKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree) {
|
protected String getMemberKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree) {
|
||||||
String key = Integer.toString(ERangeType.AWARDS.getValue()) + parentMemberTree.getPkAwards();
|
String key = Integer.toString(ERangeType.AWARDS.getValue()) + parentMemberTree.getPkAwards();
|
||||||
|
@ -1027,13 +997,11 @@ public abstract class BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 奖金明细 报单服务费、分红、云代首购、云代复购、海豆收益
|
||||||
|
*
|
||||||
* @param saOrderExt 订单
|
* @param saOrderExt 订单
|
||||||
* @param targetMemberSettleExt 奖金网体
|
* @param targetMemberSettleExt 奖金网体
|
||||||
* @param cuMemberBonus 奖金主表
|
* @param cuMemberBonus 奖金主表
|
||||||
* @Description: 奖金明细 报单服务费、分红、云代首购、云代复购、海豆收益
|
|
||||||
* @return: CuMemberBonusDetail
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2023/1/5 16:31
|
|
||||||
*/
|
*/
|
||||||
protected CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberSettleExt targetMemberSettleExt, CuMemberBonus cuMemberBonus) {
|
protected CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberSettleExt targetMemberSettleExt, CuMemberBonus cuMemberBonus) {
|
||||||
CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder()
|
CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder()
|
||||||
|
|
|
@ -3,15 +3,12 @@ package com.hzs.bonus.bonus.service.impl;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.hzs.activity.pick.IAcPickServiceApi;
|
import com.hzs.activity.pick.IAcPickServiceApi;
|
||||||
import com.hzs.bonus.bonus.param.LeXueRangeParam;
|
|
||||||
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
|
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
|
||||||
import com.hzs.common.core.constant.CountryConstants;
|
import com.hzs.common.core.constant.CountryConstants;
|
||||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||||
import com.hzs.common.core.constant.msg.BonusMsgConstants;
|
import com.hzs.common.core.constant.msg.BonusMsgConstants;
|
||||||
import com.hzs.common.core.enums.*;
|
import com.hzs.common.core.enums.*;
|
||||||
import com.hzs.common.core.utils.ComputeUtil;
|
import com.hzs.common.core.utils.ComputeUtil;
|
||||||
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
|
|
||||||
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
|
|
||||||
import com.hzs.common.domain.bonus.BdBonusDeduct;
|
import com.hzs.common.domain.bonus.BdBonusDeduct;
|
||||||
import com.hzs.common.domain.bonus.risk.CuMemberRiskControl;
|
import com.hzs.common.domain.bonus.risk.CuMemberRiskControl;
|
||||||
import com.hzs.common.domain.member.base.CuAwardsControl;
|
import com.hzs.common.domain.member.base.CuAwardsControl;
|
||||||
|
@ -20,8 +17,6 @@ import com.hzs.common.domain.member.detail.CuMemberAssess;
|
||||||
import com.hzs.common.domain.member.ext.CuBonusExpandExt;
|
import com.hzs.common.domain.member.ext.CuBonusExpandExt;
|
||||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||||
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
|
|
||||||
import com.hzs.common.domain.sale.order.SaOrderItems;
|
|
||||||
import com.hzs.common.domain.system.config.BdAwards;
|
import com.hzs.common.domain.system.config.BdAwards;
|
||||||
import com.hzs.common.domain.system.config.BdGrade;
|
import com.hzs.common.domain.system.config.BdGrade;
|
||||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||||
|
@ -35,12 +30,9 @@ import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 计算复购的奖金处理类
|
* 计算复购的奖金处理类
|
||||||
* @Classname: BonusSettlePurchaseHandle
|
|
||||||
* @PackageName: com.hzs.member.bonus.service.impl
|
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
|
@ -384,37 +376,13 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
||||||
*/
|
*/
|
||||||
List<CuMemberBonusRange> calculateRepurchaseRangeBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate, Map<String, RangeDTO> rangeDtoMap, Map<String, BdAwards> awardsMap,
|
List<CuMemberBonusRange> calculateRepurchaseRangeBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate, Map<String, RangeDTO> rangeDtoMap, Map<String, BdAwards> awardsMap,
|
||||||
BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period,
|
BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period,
|
||||||
Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuAwardsControl> cuAwardsControlMap, LeXueRangeParam leXueRangeParam) {
|
Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||||
// 计算复购极差的订单
|
|
||||||
// List<SaOrderExt> chinaRangeOrderList = new ArrayList<>();
|
|
||||||
// 计算乐学易考特殊复购极差的订单
|
|
||||||
List<SaOrderExt> specialOrderList = new ArrayList<>();
|
|
||||||
purchaseOrderList.forEach(saOrderExt -> {
|
|
||||||
/*if (Objects.equals(EOrderType.REPURCHASE_ORDER.getValue(), saOrderExt.getOrderType()) ||
|
|
||||||
Objects.equals(EOrderType.THIRD_ORDER.getValue(), saOrderExt.getOrderType())) {
|
|
||||||
rangeOrderList.add(saOrderExt);
|
|
||||||
} else */
|
|
||||||
if (Objects.equals(EOrderType.SPECIAL_REPURCHASE_ORDER.getValue(), saOrderExt.getOrderType())) {
|
|
||||||
// rangeOrderList.add(saOrderExt);
|
|
||||||
specialOrderList.add(saOrderExt);
|
|
||||||
}/* else if (Objects.equals(saOrderExt.getPkCountry(), CountryConstants.CHINA_COUNTRY)) {
|
|
||||||
if (!Objects.equals(EOrderType.FANS_ORDER.getValue(), saOrderExt.getOrderType()) &&
|
|
||||||
!Objects.equals(EOrderType.HAI_FUN_UPGRADE_ORDER.getValue(), saOrderExt.getOrderType())) {
|
|
||||||
chinaRangeOrderList.add(saOrderExt);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
overseasRangeOrderList.add(saOrderExt);
|
|
||||||
}*/
|
|
||||||
});
|
|
||||||
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
|
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
|
||||||
// 处理血缘上网体信息
|
// 处理血缘上网体信息
|
||||||
getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList);
|
getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList);
|
||||||
// TODO new 乐学不需要考核相关
|
// 考核相关
|
||||||
// List<CuMemberSettleExt> cuMemberSettleExtList = getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList);
|
// List<CuMemberSettleExt> cuMemberSettleExtList = getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, purchaseOrderList);
|
||||||
// Map<Long, CuMemberAssess> cuMemberAssessMap = getCuMemberAssessMap(cuMemberSettleExtMap, settleDate, cuMemberSettleExtList);
|
// Map<Long, CuMemberAssess> cuMemberAssessMap = getCuMemberAssessMap(cuMemberSettleExtMap, settleDate, cuMemberSettleExtList);
|
||||||
|
|
||||||
Map<Long, CuMemberAssess> cuMemberAssessMap = null;
|
|
||||||
|
|
||||||
// if (chinaRangeOrderList.size() > 0) {
|
// if (chinaRangeOrderList.size() > 0) {
|
||||||
// Map<String, List<SaOrderRangeDto>> saOrderRangeDtoMap = saOrderServiceApi.queryOrderRangeVO(chinaRangeOrderList).getData();
|
// Map<String, List<SaOrderRangeDto>> saOrderRangeDtoMap = saOrderServiceApi.queryOrderRangeVO(chinaRangeOrderList).getData();
|
||||||
// Map<String, RangeDTO> rangePkDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(rangeDtoMap.size()));
|
// Map<String, RangeDTO> rangePkDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(rangeDtoMap.size()));
|
||||||
|
@ -487,104 +455,6 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// 乐学复购级差,商品4个等级购买差价300,这个位置进行拨出
|
|
||||||
if (specialOrderList.size() > 0) {
|
|
||||||
for (SaOrderExt saOrderExt : specialOrderList) {
|
|
||||||
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsExtList()) {
|
|
||||||
if (EYesNo.YES.getIntValue() == saOrderItems.getIsGift() || ComputeUtil.compareGreaterThan(MagicNumberConstants.LXYK_V3, saOrderItems.getPrice())) {
|
|
||||||
// 赠品或者商品价格小于2680,不需要处理,2380已经是V4价格了,不存在往上拨出的极差
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 最大发放奖金
|
|
||||||
BigDecimal maxBonus;
|
|
||||||
if (ComputeUtil.compareValue(saOrderItems.getPrice(), MagicNumberConstants.LXYK_V1)) {
|
|
||||||
// 价格大于等于3280,最多拨900
|
|
||||||
// 2025.04.28 需求调整去掉 V1 等级,最低为2980,最多拨600
|
|
||||||
maxBonus = MagicNumberConstants.LXYK_BONUS_600;
|
|
||||||
} else if (ComputeUtil.compareValue(saOrderItems.getPrice(), MagicNumberConstants.LXYK_V2)) {
|
|
||||||
// 价格大于等于2980,最多拨600
|
|
||||||
maxBonus = MagicNumberConstants.LXYK_BONUS_600;
|
|
||||||
} else if (ComputeUtil.compareValue(saOrderItems.getPrice(), MagicNumberConstants.LXYK_V3)) {
|
|
||||||
// 价格大于等于2680,最多拨拨300
|
|
||||||
maxBonus = MagicNumberConstants.LXYK_BONUS_300;
|
|
||||||
} else {
|
|
||||||
maxBonus = BigDecimal.ZERO;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取血缘伞上的推荐人 一定要发完,从推荐人开始发
|
|
||||||
// 当前会员
|
|
||||||
CuMemberSettleExt sourceMemberTree = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
|
||||||
|
|
||||||
// 累计发放奖金
|
|
||||||
BigDecimal grantBonus = BigDecimal.ZERO;
|
|
||||||
while (ComputeUtil.compareGreaterThan(maxBonus, grantBonus)) {
|
|
||||||
// 最大发放奖金 大于 累计发放奖金,则继续处理
|
|
||||||
if (null == sourceMemberTree) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
int pkGrade = sourceMemberTree.getPkGrade();
|
|
||||||
if (pkGrade == 3 || pkGrade == 4) {
|
|
||||||
// 如果是 V1 直接跳过,开始计算 V2
|
|
||||||
// 2025.04.28 需求调整去掉 V1 等级,V1 V2 就直接跳过,开始计算V3
|
|
||||||
pkGrade = 5;
|
|
||||||
}
|
|
||||||
// 推荐人
|
|
||||||
CuMemberSettleExt parentMemberTree = cuMemberSettleExtMap.get(sourceMemberTree.getPkParent());
|
|
||||||
// 找血缘线上高等级推荐人
|
|
||||||
parentMemberTree = getSpecialRangeCuMemberTree(cuMemberSettleExtMap, bonusConfigDTO, sourceMemberTree, parentMemberTree, cuMemberAssessMap, pkGrade);
|
|
||||||
if (null == parentMemberTree) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// 级差奖金
|
|
||||||
BigDecimal rangeOrder = BigDecimal.ZERO;
|
|
||||||
// if (parentMemberTree.getPkGrade() == 4) {
|
|
||||||
// // V2 拿 300
|
|
||||||
// // 2025.04.28 需求调整去掉 V1 等级,V2 不需要拿了
|
|
||||||
// rangeOrder = MagicNumberConstants.LXYK_BONUS_300;
|
|
||||||
// } else
|
|
||||||
if (parentMemberTree.getPkGrade() == 5) {
|
|
||||||
// V3前没有V2,拿600; V3前有V2,拿300
|
|
||||||
// 2025.04.28 需求调整去掉 V1 等级,V3 拿300
|
|
||||||
rangeOrder = MagicNumberConstants.LXYK_BONUS_300;
|
|
||||||
// if (ComputeUtil.computeSubtract(maxBonus, grantBonus).compareTo(new BigDecimal(900)) == 0) {
|
|
||||||
// rangeOrder = MagicNumberConstants.LXYK_BONUS_600;
|
|
||||||
// } else {
|
|
||||||
// rangeOrder = MagicNumberConstants.LXYK_BONUS_300;
|
|
||||||
// }
|
|
||||||
} else if (parentMemberTree.getPkGrade() == 6) {
|
|
||||||
// V4 拿剩下所有
|
|
||||||
rangeOrder = ComputeUtil.computeSubtract(maxBonus, grantBonus);
|
|
||||||
}
|
|
||||||
grantBonus = ComputeUtil.computeAdd(grantBonus, rangeOrder);
|
|
||||||
// 实际发放复购级差(多个商品情况下,需要乘商品数量)
|
|
||||||
BigDecimal repurchaseRangeBonus = ComputeUtil.computeMultiply(rangeOrder, saOrderItems.getWaresQuantity());
|
|
||||||
|
|
||||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, parentMemberTree);
|
|
||||||
CuMemberBonusRange cuMemberBonusRange = getCuMemberBonusRange(bonusConfigDTO, saOrderExt, parentMemberTree, cuMemberBonus);
|
|
||||||
cuMemberBonusRange.setCalAchieve(saOrderExt.getOrderAchieve());
|
|
||||||
cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
|
|
||||||
cuMemberBonusRange.setPretaxIncome(repurchaseRangeBonus);
|
|
||||||
cuMemberBonusRange.setPkRange(0);
|
|
||||||
cuMemberBonusRange.setPkBeforeRange(0);
|
|
||||||
cuMemberBonusRange.setPkOrderItems(0L);
|
|
||||||
String remark = String.format(BonusMsgConstants.LE_SHARE_RANGE, saOrderExt.getOrderCode(),
|
|
||||||
sourceMemberTree.getMemberCode() + sourceMemberTree.getMemberName(),
|
|
||||||
parentMemberTree.getMemberCode() + parentMemberTree.getMemberName(), repurchaseRangeBonus);
|
|
||||||
cuMemberBonusRange.setRemark(remark);
|
|
||||||
// 封装复购级差,处理明细、扣项等
|
|
||||||
packageRepurchaseRange(bonusConfigDTO, cuMemberBonusRangeList, saOrderExt, cuMemberBonus, cuMemberBonusRange, repurchaseRangeBonus);
|
|
||||||
// 发放到最高级后跳出
|
|
||||||
if (parentMemberTree.getPkGrade() == 6) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
sourceMemberTree = cuMemberSettleExtMap.get(parentMemberTree.getPkMember());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 学特殊级差
|
|
||||||
calculateLeXueRangeBonus(settleTableName, rangeDtoMap, bonusConfigDTO, period, cuMemberBonusMap, leXueRangeParam, specialOrderList, cuMemberBonusRangeList);
|
|
||||||
}
|
|
||||||
return cuMemberBonusRangeList;
|
return cuMemberBonusRangeList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -609,285 +479,6 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
|
||||||
cuMemberBonusRangeList.add(cuMemberBonusRange);
|
cuMemberBonusRangeList.add(cuMemberBonusRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 乐学特殊复购级差,根据法宝券进行计算奖金
|
|
||||||
* 每个等级最多拨出一张法宝券,给200奖金,遇到V4为止
|
|
||||||
* 如果购买时会员没有使用券,那么同等级也可以拨出一张
|
|
||||||
*
|
|
||||||
* @param settleTableName
|
|
||||||
* @param rangeDtoMap
|
|
||||||
* @param bonusConfigDTO
|
|
||||||
* @param period
|
|
||||||
* @param cuMemberBonusMap
|
|
||||||
* @param leXueRangeParam
|
|
||||||
* @param specialOrderList
|
|
||||||
* @param cuMemberBonusRangeList
|
|
||||||
*/
|
|
||||||
private void calculateLeXueRangeBonus(String settleTableName, Map<String, RangeDTO> rangeDtoMap, BonusConfigDTO bonusConfigDTO,
|
|
||||||
Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, LeXueRangeParam leXueRangeParam,
|
|
||||||
List<SaOrderExt> specialOrderList, List<CuMemberBonusRange> cuMemberBonusRangeList) {
|
|
||||||
// 旧逻辑: 计算乐学易考特殊复购极差,找第一个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.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.hzs.activity.pick.IAcPickServiceApi;
|
|
||||||
import com.hzs.bonus.achieve.param.MemberAchieveParam;
|
import com.hzs.bonus.achieve.param.MemberAchieveParam;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
|
import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
|
||||||
import com.hzs.bonus.achieve.service.ICuMemberRangeService;
|
import com.hzs.bonus.achieve.service.ICuMemberRangeService;
|
||||||
|
@ -14,12 +13,10 @@ import com.hzs.bonus.base.service.ICuMemberAchieveLogService;
|
||||||
import com.hzs.bonus.base.service.ICuMemberService;
|
import com.hzs.bonus.base.service.ICuMemberService;
|
||||||
import com.hzs.bonus.bonus.param.BdWaresBonusParam;
|
import com.hzs.bonus.bonus.param.BdWaresBonusParam;
|
||||||
import com.hzs.bonus.bonus.param.BonusExpandParam;
|
import com.hzs.bonus.bonus.param.BonusExpandParam;
|
||||||
import com.hzs.bonus.bonus.param.LeXueRangeParam;
|
|
||||||
import com.hzs.bonus.bonus.service.*;
|
import com.hzs.bonus.bonus.service.*;
|
||||||
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
|
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
|
||||||
import com.hzs.bonus.bonus.vo.MemberBonusDetailCalVO;
|
import com.hzs.bonus.bonus.vo.MemberBonusDetailCalVO;
|
||||||
import com.hzs.bonus.detail.service.ICuMemberAwardsService;
|
import com.hzs.bonus.detail.service.ICuMemberAwardsService;
|
||||||
import com.hzs.bonus.detail.service.ICuMemberLevelService;
|
|
||||||
import com.hzs.bonus.risk.service.ICuMemberRiskControlService;
|
import com.hzs.bonus.risk.service.ICuMemberRiskControlService;
|
||||||
import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService;
|
import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService;
|
||||||
import com.hzs.common.core.config.BdConfig;
|
import com.hzs.common.core.config.BdConfig;
|
||||||
|
@ -90,8 +87,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
IMemberServiceApi iMemberServiceApi;
|
IMemberServiceApi iMemberServiceApi;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
ISaOrderServiceApi iSaOrderServiceApi;
|
ISaOrderServiceApi iSaOrderServiceApi;
|
||||||
@DubboReference
|
|
||||||
IAcPickServiceApi iAcPickServiceApi;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ICuMemberTreeService iCuMemberTreeService;
|
private ICuMemberTreeService iCuMemberTreeService;
|
||||||
|
@ -100,8 +95,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ICuMemberAwardsService iCuMemberAwardsService;
|
private ICuMemberAwardsService iCuMemberAwardsService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ICuMemberLevelService iCuMemberLevelService;
|
|
||||||
@Autowired
|
|
||||||
private ICuMemberService iCuMemberService;
|
private ICuMemberService iCuMemberService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ICuMemberAchieveLogService iCuMemberAchieveLogService;
|
private ICuMemberAchieveLogService iCuMemberAchieveLogService;
|
||||||
|
@ -299,7 +292,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// c)增加奖衔记录表
|
// c)增加奖衔记录表
|
||||||
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
||||||
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap,
|
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap,
|
||||||
bonusConfigDTO, Collections.singletonList(saOrderExt), period, cuMemberBonusMap, cuAwardsControlMap, new LeXueRangeParam());
|
bonusConfigDTO, Collections.singletonList(saOrderExt), period, cuMemberBonusMap, cuAwardsControlMap);
|
||||||
if (cuMemberBonusMap.size() > 0) {
|
if (cuMemberBonusMap.size() > 0) {
|
||||||
saveCuMemberBonus(period, settleDate, cuMemberBonusMap);
|
saveCuMemberBonus(period, settleDate, cuMemberBonusMap);
|
||||||
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
|
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
|
||||||
|
@ -356,7 +349,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 每日计算会员奖金,最终的奖金
|
* 每日计算会员奖金,最终的奖金
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
@ -477,8 +470,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// 奖金记录明细(统一入库使用)
|
// 奖金记录明细(统一入库使用)
|
||||||
BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO();
|
BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO();
|
||||||
// 计算奖金(主入口)
|
// 计算奖金(主入口)
|
||||||
// 乐学易考奖金计算,回写代金券数量
|
calculateBonusBySaOrderList(settleDate, period, yesterdayPeriod, currentSettleTableName,
|
||||||
LeXueRangeParam leXueRangeParam = calculateBonusBySaOrderList(settleDate, period, yesterdayPeriod, currentSettleTableName,
|
|
||||||
firPurchaseOrderList, repurchaseOrderList, mallOrderList, awardsMap, gradeMap, bonusConfigDTO, cuMemberBonusMap,
|
firPurchaseOrderList, repurchaseOrderList, mallOrderList, awardsMap, gradeMap, bonusConfigDTO, cuMemberBonusMap,
|
||||||
recordDetailVO, cuMemberSettleExtMap, expandOrderList, newExpandFlag);
|
recordDetailVO, cuMemberSettleExtMap, expandOrderList, newExpandFlag);
|
||||||
// 计算复购券
|
// 计算复购券
|
||||||
|
@ -559,15 +551,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
}
|
}
|
||||||
// 奖金计算结束,统计拨比、业绩、4-N拨比
|
// 奖金计算结束,统计拨比、业绩、4-N拨比
|
||||||
iCuBonusExpandService.updateCuBonusExpandRatio(BonusExpandParam.builder().settleDate(DateUtils.parseStringToDate(settleDate)).build(), "cu_member_bonus");
|
iCuBonusExpandService.updateCuBonusExpandRatio(BonusExpandParam.builder().settleDate(DateUtils.parseStringToDate(settleDate)).build(), "cu_member_bonus");
|
||||||
|
|
||||||
if (leXueRangeParam != null) {
|
|
||||||
// 乐学相关,处理提货数据
|
|
||||||
if (CollectionUtil.isNotEmpty(leXueRangeParam.getAcPickExtList())) {
|
|
||||||
if (!iAcPickServiceApi.updatePickUse(leXueRangeParam.getAcPickExtList(), leXueRangeParam.getAcPickMemberLogList()).getData()) {
|
|
||||||
throw new RuntimeException("更新提货专区数量失败");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
|
@ -794,12 +777,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
* @param cuMemberSettleExtMap 会员结算map
|
* @param cuMemberSettleExtMap 会员结算map
|
||||||
* @param expandOrderList 拓展收益订单(首购+复购)
|
* @param expandOrderList 拓展收益订单(首购+复购)
|
||||||
*/
|
*/
|
||||||
private LeXueRangeParam calculateBonusBySaOrderList(String settleDate, Integer period, Integer yesterdayPeriod, String settleTableName,
|
private void calculateBonusBySaOrderList(String settleDate, Integer period, Integer yesterdayPeriod, String settleTableName,
|
||||||
List<SaOrderExt> firPurchaseOrderList, List<SaOrderExt> repurchaseOrderList, List<SaOrderExt> mallOrderList,
|
List<SaOrderExt> firPurchaseOrderList, List<SaOrderExt> repurchaseOrderList, List<SaOrderExt> mallOrderList,
|
||||||
Map<String, BdAwards> awardsMap, Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO,
|
Map<String, BdAwards> awardsMap, Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO,
|
||||||
Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
|
Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
|
||||||
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<SaOrderExt> expandOrderList, boolean newExpandFlag) {
|
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<SaOrderExt> expandOrderList, boolean newExpandFlag) {
|
||||||
LeXueRangeParam leXueRangeParam = null;
|
|
||||||
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
|
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
|
||||||
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
|
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
|
||||||
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
|
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
|
||||||
|
@ -822,7 +804,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
// 先计算复购在计算首购
|
// 先计算复购在计算首购
|
||||||
// 计算复购
|
// 计算复购
|
||||||
if (CollectionUtil.isNotEmpty(repurchaseOrderList)) {
|
if (CollectionUtil.isNotEmpty(repurchaseOrderList)) {
|
||||||
leXueRangeParam = calculatePurchaseOrder(riskControlMap, cuMemberSettleExtMap, settleTableName, settleDate, systemConfigMap, bonusConfigDTO,
|
calculatePurchaseOrder(riskControlMap, cuMemberSettleExtMap, settleTableName, settleDate, systemConfigMap, bonusConfigDTO,
|
||||||
repurchaseOrderList, period, weekMemberBonusMap, cuMemberBonusMap, bonusRecordDetailVO, awardsMap, awardsList, cuAwardsControlMap, cuBonusExpandExtMap, rangeDtoMap,
|
repurchaseOrderList, period, weekMemberBonusMap, cuMemberBonusMap, bonusRecordDetailVO, awardsMap, awardsList, cuAwardsControlMap, cuBonusExpandExtMap, rangeDtoMap,
|
||||||
newExpandFlag);
|
newExpandFlag);
|
||||||
}
|
}
|
||||||
|
@ -861,8 +843,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
cuMemberBonusCoach.setIncomeDialRatio(BigDecimal.ZERO);
|
cuMemberBonusCoach.setIncomeDialRatio(BigDecimal.ZERO);
|
||||||
cuMemberBonusCoach.setOrderDialRatio(BigDecimal.ZERO);
|
cuMemberBonusCoach.setOrderDialRatio(BigDecimal.ZERO);
|
||||||
});
|
});
|
||||||
|
|
||||||
return leXueRangeParam;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Long, CuMemberBonus> getWeekMemberBonusMap(String settleDate, Integer period) {
|
private Map<Long, CuMemberBonus> getWeekMemberBonusMap(String settleDate, Integer period) {
|
||||||
|
@ -1171,7 +1151,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
* @param purchaseOrderList 复购订单
|
* @param purchaseOrderList 复购订单
|
||||||
* @param rangeDtoMap 乐学奖金使用的汇率map
|
* @param rangeDtoMap 乐学奖金使用的汇率map
|
||||||
*/
|
*/
|
||||||
private LeXueRangeParam calculatePurchaseOrder(Map<Long, CuMemberRiskControl> riskControlMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate,
|
private void calculatePurchaseOrder(Map<Long, CuMemberRiskControl> riskControlMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDate,
|
||||||
Map<String, String> systemConfigMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period,
|
Map<String, String> systemConfigMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period,
|
||||||
Map<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
|
Map<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
|
||||||
Map<String, BdAwards> awardsMap, List<BdAwards> awardsList, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap,
|
Map<String, BdAwards> awardsMap, List<BdAwards> awardsList, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap,
|
||||||
|
@ -1208,10 +1188,9 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberBonusCoachList);
|
bonusRecordDetailVO.setCuMemberBonusCoachList(cuMemberBonusCoachList);
|
||||||
}
|
}
|
||||||
|
|
||||||
//****************************乐学极差(复购)*****************************/
|
//****************************复购极差*****************************/
|
||||||
LeXueRangeParam leXueRangeParam = new LeXueRangeParam();
|
|
||||||
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap,
|
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseRangeBonus(cuMemberSettleExtMap, settleTableName, settleDate, rangeDtoMap, awardsMap,
|
||||||
bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap, cuAwardsControlMap, leXueRangeParam);
|
bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap, cuAwardsControlMap);
|
||||||
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
|
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
|
||||||
|
|
||||||
Map<Long, MemberBonusDetailCalVO> memberBonusDetailCalVoMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size()));
|
Map<Long, MemberBonusDetailCalVO> memberBonusDetailCalVoMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size()));
|
||||||
|
@ -1262,8 +1241,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
cuMemberBonusRange.setIncomeDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRepRangeIncome(), memberBonusDetailCalVO.getRealIncome()));
|
cuMemberBonusRange.setIncomeDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRepRangeIncome(), memberBonusDetailCalVO.getRealIncome()));
|
||||||
cuMemberBonusRange.setOrderDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRealIncome(), saOrderExt.getOrderAmount()));
|
cuMemberBonusRange.setOrderDialRatio(ComputeUtil.computeDivide(memberBonusDetailCalVO.getRealIncome(), saOrderExt.getOrderAmount()));
|
||||||
});
|
});
|
||||||
// 插入奖金表 奖金明细表
|
|
||||||
return leXueRangeParam;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1317,7 +1294,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 计算嗨粉订单的奖金
|
* 计算嗨粉订单的奖金
|
||||||
|
*
|
||||||
* @return: void
|
* @return: void
|
||||||
*/
|
*/
|
||||||
private void calculateHiFunOrder(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, Map<String, RangeDTO> rangeDtoMap,
|
private void calculateHiFunOrder(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, Map<String, RangeDTO> rangeDtoMap,
|
||||||
|
@ -1354,7 +1332,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 计算订单奖金累计值
|
* 计算订单奖金累计值
|
||||||
|
*
|
||||||
* @return: void
|
* @return: void
|
||||||
*/
|
*/
|
||||||
private MemberBonusDetailCalVO calculateOrderRatio(Map<Long, MemberBonusDetailCalVO> memberBonusDetailVoMap, Object cuMemberBonus) {
|
private MemberBonusDetailCalVO calculateOrderRatio(Map<Long, MemberBonusDetailCalVO> memberBonusDetailVoMap, Object cuMemberBonus) {
|
||||||
|
|
|
@ -66,42 +66,17 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
||||||
private ICuMemberTreeService iCuMemberTreeService;
|
private ICuMemberTreeService iCuMemberTreeService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBonusSettleService iBonusSettleService;
|
private IBonusSettleService iBonusSettleService;
|
||||||
|
@Autowired
|
||||||
private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
|
private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
|
||||||
|
@Autowired
|
||||||
private CuMemberBonusPushMapper cuMemberBonusPushMapper;
|
private CuMemberBonusPushMapper cuMemberBonusPushMapper;
|
||||||
|
@Autowired
|
||||||
private CuMemberBonusExpandMapper cuMemberBonusExpandMapper;
|
private CuMemberBonusExpandMapper cuMemberBonusExpandMapper;
|
||||||
|
@Autowired
|
||||||
private CuMemberBonusCoachMapper cuMemberBonusCoachMapper;
|
private CuMemberBonusCoachMapper cuMemberBonusCoachMapper;
|
||||||
|
@Autowired
|
||||||
private CuMemberBonusRangeMapper cuMemberBonusRangeMapper;
|
private CuMemberBonusRangeMapper cuMemberBonusRangeMapper;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public void setCuMemberBonusPushMapper(CuMemberBonusPushMapper cuMemberBonusPushMapper) {
|
|
||||||
this.cuMemberBonusPushMapper = cuMemberBonusPushMapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public void setCuMemberBonusExpandMapper(CuMemberBonusExpandMapper cuMemberBonusExpandMapper) {
|
|
||||||
this.cuMemberBonusExpandMapper = cuMemberBonusExpandMapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public void setCuMemberBonusCoachMapper(CuMemberBonusCoachMapper cuMemberBonusCoachMapper) {
|
|
||||||
this.cuMemberBonusCoachMapper = cuMemberBonusCoachMapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public void setCuMemberBonusRangeMapper(CuMemberBonusRangeMapper cuMemberBonusRangeMapper) {
|
|
||||||
this.cuMemberBonusRangeMapper = cuMemberBonusRangeMapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public void setCuMemberBonusDetailMapper(CuMemberBonusDetailMapper cuMemberBonusDetailMapper) {
|
|
||||||
this.cuMemberBonusDetailMapper = cuMemberBonusDetailMapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Long> batchQueryCuMemberBonusSeq(Integer rowNum) {
|
public List<Long> batchQueryCuMemberBonusSeq(Integer rowNum) {
|
||||||
return baseMapper.batchQueryCuMemberBonusSeq(rowNum);
|
return baseMapper.batchQueryCuMemberBonusSeq(rowNum);
|
||||||
|
|
|
@ -127,23 +127,6 @@ public class ApiPickController extends BaseController {
|
||||||
.quantity(quantity)
|
.quantity(quantity)
|
||||||
.build());
|
.build());
|
||||||
break;
|
break;
|
||||||
// case MAKER_SEA_BUCKTHORN:
|
|
||||||
// case REPURCHASE_PICK:
|
|
||||||
// // 迁移创客沙棘提货、迁移复购提货处理
|
|
||||||
// if (quantity % acPick.getBaseQuantity() != 0) {
|
|
||||||
// // 提货数量只能为%s的倍数
|
|
||||||
// return AjaxResult.error(TransactionUtils.getContent(ActivityMsgConstants.PICK_QUANTITY_BASE, acPick.getBaseQuantity()));
|
|
||||||
// }
|
|
||||||
// // 查询产品
|
|
||||||
// ProductDTO seaProductDTO = iProductServiceApi.getProduct(acPick.getPkDataId().intValue()).getData();
|
|
||||||
// // 处理提货产品明细
|
|
||||||
// detailList.add(ApiPickDetailVO.builder()
|
|
||||||
// .productName(seaProductDTO.getProductName())
|
|
||||||
// .specsName(acPick.getSpecsName())
|
|
||||||
// .cover(StringUtils.isNotEmpty(acPick.getPickCover()) ? acPick.getPickCover() : seaProductDTO.getCover())
|
|
||||||
// .quantity(quantity)
|
|
||||||
// .build());
|
|
||||||
// break;
|
|
||||||
case LOTTERY_DRAW:
|
case LOTTERY_DRAW:
|
||||||
case CONSUMPTION_GIFT:
|
case CONSUMPTION_GIFT:
|
||||||
case DIRECT_PUSH_GIFT:
|
case DIRECT_PUSH_GIFT:
|
||||||
|
@ -309,33 +292,6 @@ public class ApiPickController extends BaseController {
|
||||||
productOrderItems.setPkStorehouse(saOrder.getPkStorehouse());
|
productOrderItems.setPkStorehouse(saOrder.getPkStorehouse());
|
||||||
orderItemsList.add(productOrderItems);
|
orderItemsList.add(productOrderItems);
|
||||||
break;
|
break;
|
||||||
// case MAKER_SEA_BUCKTHORN:
|
|
||||||
// case REPURCHASE_PICK:
|
|
||||||
// // 迁移创客沙棘提货、迁移复购提货处理
|
|
||||||
// if (param.getQuantity() % acPick.getBaseQuantity() != 0) {
|
|
||||||
// // 提货数量只能为%s的倍数
|
|
||||||
// return AjaxResult.error(TransactionUtils.getContent(ActivityMsgConstants.PICK_QUANTITY_BASE, acPick.getBaseQuantity()));
|
|
||||||
// }
|
|
||||||
// // 查询产品信息
|
|
||||||
// ProductDTO msbProductDTO = iProductServiceApi.getProduct(acPick.getPkDataId().intValue()).getData();
|
|
||||||
//
|
|
||||||
// // 处理提货产品明细
|
|
||||||
// SaOrderItems msbOrderItems = new SaOrderItems();
|
|
||||||
// msbOrderItems.setPkProduct(acPick.getPkDataId().intValue());
|
|
||||||
// msbOrderItems.setPkRate(currencyDTO.getPkId());
|
|
||||||
// msbOrderItems.setQuantity(param.getQuantity());
|
|
||||||
// msbOrderItems.setPkGrade(cuMember.getPkSettleGrade());
|
|
||||||
// msbOrderItems.setPkAwards(cuMember.getPkAwards());
|
|
||||||
// msbOrderItems.setOrderStatus(EOrderStatus.PAY.getValue());
|
|
||||||
// msbOrderItems.setPkCreator(userId);
|
|
||||||
// msbOrderItems.setCreationTime(nowDate);
|
|
||||||
// msbOrderItems.setSpecsName(acPick.getSpecsName());
|
|
||||||
// msbOrderItems.setSpecsNameId(acPick.getSpecsNameId());
|
|
||||||
// msbOrderItems.setPkCountry(pkCountry);
|
|
||||||
// msbOrderItems.setWaresQuantity(param.getQuantity());
|
|
||||||
// msbOrderItems.setSkuCode(CommonUtil.createSkuCode(msbProductDTO.getProductCode(), acPick.getSpecsNameId()));
|
|
||||||
// orderItemsList.add(msbOrderItems);
|
|
||||||
// break;
|
|
||||||
case LOTTERY_DRAW:
|
case LOTTERY_DRAW:
|
||||||
case CONSUMPTION_GIFT:
|
case CONSUMPTION_GIFT:
|
||||||
case DIRECT_PUSH_GIFT:
|
case DIRECT_PUSH_GIFT:
|
||||||
|
|
|
@ -38,11 +38,7 @@ import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 提货处理控制器
|
* 提货处理控制器
|
||||||
* @Author: jiang chao
|
|
||||||
* @Time: 2023/4/21 17:59
|
|
||||||
* @Classname: AcPickController
|
|
||||||
* @PackageName: com.hzs.activity.pick.controller.manage
|
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/manage/pick")
|
@RequestMapping("/manage/pick")
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -96,9 +92,8 @@ public class AcPickController extends BaseController {
|
||||||
|
|
||||||
acPickQueryVO.setPickTypeVal(EPickType.getEnumByValue(acPickQueryVO.getPickType()).getLabel());
|
acPickQueryVO.setPickTypeVal(EPickType.getEnumByValue(acPickQueryVO.getPickType()).getLabel());
|
||||||
|
|
||||||
if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType()
|
if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType()) {
|
||||||
|| EPickType.COUPON.getValue() == acPickExt.getPickType()) {
|
// 提货产品
|
||||||
// 提货产品、乐学易考代金券
|
|
||||||
acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder()
|
acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder()
|
||||||
.productName(acPickExt.getProductName())
|
.productName(acPickExt.getProductName())
|
||||||
.quantity(acPickExt.getBaseQuantity())
|
.quantity(acPickExt.getBaseQuantity())
|
||||||
|
@ -159,8 +154,7 @@ public class AcPickController extends BaseController {
|
||||||
|
|
||||||
acPickQueryVO.setPickTypeVal(EPickType.getEnumByValue(acPickQueryVO.getPickType()).getLabel());
|
acPickQueryVO.setPickTypeVal(EPickType.getEnumByValue(acPickQueryVO.getPickType()).getLabel());
|
||||||
|
|
||||||
if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType()
|
if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType()) {
|
||||||
|| EPickType.COUPON.getValue() == acPickExt.getPickType()) {
|
|
||||||
// 产品处理
|
// 产品处理
|
||||||
acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder()
|
acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder()
|
||||||
.productName(acPickExt.getProductName())
|
.productName(acPickExt.getProductName())
|
||||||
|
@ -204,7 +198,7 @@ public class AcPickController extends BaseController {
|
||||||
AcPickExt acPickExt = iAcPickService.queryDetail(pkId, pkCountry);
|
AcPickExt acPickExt = iAcPickService.queryDetail(pkId, pkCountry);
|
||||||
if (null != acPickExt) {
|
if (null != acPickExt) {
|
||||||
acPickQueryVO = BeanUtil.copyProperties(acPickExt, AcPickQueryVO.class);
|
acPickQueryVO = BeanUtil.copyProperties(acPickExt, AcPickQueryVO.class);
|
||||||
if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType() || EPickType.COUPON.getValue() == acPickExt.getPickType()) {
|
if (EPickType.PICK_PRODUCT.getValue() == acPickExt.getPickType()) {
|
||||||
// 产品处理
|
// 产品处理
|
||||||
acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder()
|
acPickQueryVO.setDetailList(Collections.singletonList(AcPickQueryDetailVO.builder()
|
||||||
.pkProduct(acPickExt.getPkDataId().intValue())
|
.pkProduct(acPickExt.getPkDataId().intValue())
|
||||||
|
|
|
@ -13,9 +13,6 @@ import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提货基础表 Mapper 接口
|
* 提货基础表 Mapper 接口
|
||||||
*
|
|
||||||
* @author hzs
|
|
||||||
* @since 2023-04-21
|
|
||||||
*/
|
*/
|
||||||
public interface AcPickMapper extends BaseMapper<AcPick> {
|
public interface AcPickMapper extends BaseMapper<AcPick> {
|
||||||
|
|
||||||
|
@ -53,25 +50,6 @@ public interface AcPickMapper extends BaseMapper<AcPick> {
|
||||||
@Param("quantity") Integer quantity,
|
@Param("quantity") Integer quantity,
|
||||||
@Param("pkModified") Long pkModified);
|
@Param("pkModified") Long pkModified);
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据会员和类型回退使用数量
|
|
||||||
*
|
|
||||||
* @param pkMember 会员ID
|
|
||||||
* @param pickType 提货类型
|
|
||||||
* @param pkBaseConfig 活动配置ID(产品时为0) -- 可为null
|
|
||||||
* @param pkDataId 数据ID(产品为产品ID,活动为活动ID) -- 可为null
|
|
||||||
* @param quantity 数量
|
|
||||||
* @param pkModified 操作人
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
int updatePickUsableByMember(@Param("pkMember") Long pkMember,
|
|
||||||
@Param("pickType") Integer pickType,
|
|
||||||
@Param("pkBaseConfig") Long pkBaseConfig,
|
|
||||||
@Param("pkDataId") Long pkDataId,
|
|
||||||
@Param("quantity") Integer quantity,
|
|
||||||
@Param("pkModified") Long pkModified);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据会员和活动类型回退使用数量
|
* 根据会员和活动类型回退使用数量
|
||||||
*
|
*
|
||||||
|
@ -101,14 +79,6 @@ public interface AcPickMapper extends BaseMapper<AcPick> {
|
||||||
int updatePickUseBatch(@Param("list") List<AcPickExt> acPickExtList,
|
int updatePickUseBatch(@Param("list") List<AcPickExt> acPickExtList,
|
||||||
@Param("quantity") Integer quantity);
|
@Param("quantity") Integer quantity);
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量更新使用数量
|
|
||||||
*
|
|
||||||
* @param acPickExtList 批量更新数据
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
int updatePickUseCouponBatch(@Param("list") List<AcPickExt> acPickExtList);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量更新使用数量
|
* 批量更新使用数量
|
||||||
*
|
*
|
||||||
|
@ -116,14 +86,6 @@ public interface AcPickMapper extends BaseMapper<AcPick> {
|
||||||
*/
|
*/
|
||||||
int updateBackPickUseBatch(@Param("list") List<AcPickMemberLog> acPickMemberLogList);
|
int updateBackPickUseBatch(@Param("list") List<AcPickMemberLog> acPickMemberLogList);
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据主键更新提货数量
|
|
||||||
*
|
|
||||||
* @param acPick
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
int updatePickQuantityByPkId(@Param("acPick") AcPick acPick);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据主键更新提货数据
|
* 根据主键更新提货数据
|
||||||
*
|
*
|
||||||
|
@ -168,16 +130,6 @@ public interface AcPickMapper extends BaseMapper<AcPick> {
|
||||||
*/
|
*/
|
||||||
List<ApiPickListVO> pickList(@Param("pkMember") Long pkMember, @Param("pkCountry") Integer pkCountry);
|
List<ApiPickListVO> pickList(@Param("pkMember") Long pkMember, @Param("pkCountry") Integer pkCountry);
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新代言礼包提货数据
|
|
||||||
*
|
|
||||||
* @param pkMember 会员ID
|
|
||||||
* @param pkProduct 产品ID
|
|
||||||
* @param usableQuantity 更新数量
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
int updateRepurchasePick(@Param("pkMember") Long pkMember, @Param("pkProduct") Long pkProduct, @Param("usableQuantity") Integer usableQuantity);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 撤单扣减乐学代金券
|
* 撤单扣减乐学代金券
|
||||||
*
|
*
|
||||||
|
|
|
@ -10,9 +10,6 @@ import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会员提货记录 Mapper 接口
|
* 会员提货记录 Mapper 接口
|
||||||
*
|
|
||||||
* @author hzs
|
|
||||||
* @since 2023-05-15
|
|
||||||
*/
|
*/
|
||||||
public interface AcPickMemberLogMapper extends BaseMapper<AcPickMemberLog> {
|
public interface AcPickMemberLogMapper extends BaseMapper<AcPickMemberLog> {
|
||||||
|
|
||||||
|
@ -36,20 +33,8 @@ public interface AcPickMemberLogMapper extends BaseMapper<AcPickMemberLog> {
|
||||||
@Param("quantity") Integer quantity,
|
@Param("quantity") Integer quantity,
|
||||||
@Param("source") Integer source);
|
@Param("source") Integer source);
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入提货日志
|
|
||||||
*
|
|
||||||
* @param acPickExtList 批量插入数据
|
|
||||||
* @param source 来源(1=后台,2=前台)
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
int insertBatchPick(@Param("list") List<AcPickExt> acPickExtList, @Param("source") Integer source);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 批量删除使用记录数据
|
*批量删除使用记录数据
|
||||||
* @author: sui q
|
|
||||||
* @date: 2023/6/3 13:52
|
|
||||||
* @param: null null
|
|
||||||
**/
|
**/
|
||||||
int deleteBatch(@Param("acPickMemberLogList") List<AcPickMemberLog> acPickMemberLogList);
|
int deleteBatch(@Param("acPickMemberLogList") List<AcPickMemberLog> acPickMemberLogList);
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,11 +8,7 @@ import lombok.NoArgsConstructor;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 提货查询列表入参
|
* 提货查询列表入参
|
||||||
* @Author: jiang chao
|
|
||||||
* @Time: 2023/4/21 18:01
|
|
||||||
* @Classname: AcPickQueryParam
|
|
||||||
* @PackageName: com.hzs.activity.pick.param
|
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
|
|
|
@ -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.AcPick;
|
||||||
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
|
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
|
||||||
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
|
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
|
||||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
@ -18,11 +17,7 @@ import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 提货相关dubbo服务入口
|
* 提货相关dubbo服务入口
|
||||||
* @Author: jiang chao
|
|
||||||
* @Time: 2023/5/15 11:21
|
|
||||||
* @Classname: AcPickProviderApi
|
|
||||||
* @PackageName: com.hzs.activity.pick.provider
|
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@DubboService
|
@DubboService
|
||||||
|
@ -31,7 +26,7 @@ public class AcPickProviderApi implements IAcPickServiceApi {
|
||||||
@Autowired
|
@Autowired
|
||||||
private IAcPickService iAcPickService;
|
private IAcPickService iAcPickService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IAcPickMemberLogService acPickMemberLogService;
|
private IAcPickMemberLogService iAcPickMemberLogService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public R<?> handlePickOrder(Long pkMember, String orderCode) {
|
public R<?> handlePickOrder(Long pkMember, String orderCode) {
|
||||||
|
@ -55,27 +50,12 @@ public class AcPickProviderApi implements IAcPickServiceApi {
|
||||||
return R.fail();
|
return R.fail();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public R<Boolean> updatePickUse(List<AcPickExt> acPickExtList, List<AcPickMemberLog> acPickMemberLogList) {
|
|
||||||
try {
|
|
||||||
return R.ok(iAcPickService.updatePickUse(acPickExtList, acPickMemberLogList));
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("更新提货单失败", e);
|
|
||||||
}
|
|
||||||
return R.fail();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public R<List<AcPickMemberLog>> queryPickMemberLog(List<SaOrderExt> saOrderExtList) {
|
|
||||||
return R.ok(acPickMemberLogService.queryPickMemberLog(saOrderExtList));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public R<BigDecimal> queryOrderPostage(String orderCode, Integer recProvince, Integer recCity, Integer pkCountry) {
|
public R<BigDecimal> queryOrderPostage(String orderCode, Integer recProvince, Integer recCity, Integer pkCountry) {
|
||||||
try {
|
try {
|
||||||
LambdaQueryWrapper<AcPickMemberLog> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<AcPickMemberLog> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(AcPickMemberLog::getPickOrder, orderCode);
|
queryWrapper.eq(AcPickMemberLog::getPickOrder, orderCode);
|
||||||
AcPickMemberLog acPickMemberLog = acPickMemberLogService.getOne(queryWrapper);
|
AcPickMemberLog acPickMemberLog = iAcPickMemberLogService.getOne(queryWrapper);
|
||||||
if (null != acPickMemberLog) {
|
if (null != acPickMemberLog) {
|
||||||
AcPick acPick = iAcPickService.getById(acPickMemberLog.getPkPick());
|
AcPick acPick = iAcPickService.getById(acPickMemberLog.getPkPick());
|
||||||
if (null != acPick) {
|
if (null != acPick) {
|
||||||
|
|
|
@ -4,15 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.hzs.activity.pick.vo.AcPickMemberLogVO;
|
import com.hzs.activity.pick.vo.AcPickMemberLogVO;
|
||||||
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
|
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
|
||||||
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
|
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
|
||||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会员提货记录 服务类
|
* 会员提货记录 服务类
|
||||||
*
|
|
||||||
* @author hzs
|
|
||||||
* @since 2023-05-15
|
|
||||||
*/
|
*/
|
||||||
public interface IAcPickMemberLogService extends IService<AcPickMemberLog> {
|
public interface IAcPickMemberLogService extends IService<AcPickMemberLog> {
|
||||||
|
|
||||||
|
@ -34,28 +30,9 @@ public interface IAcPickMemberLogService extends IService<AcPickMemberLog> {
|
||||||
*/
|
*/
|
||||||
int insertBatch(List<AcPickExt> acPickExtList, Integer quantity, Integer source);
|
int insertBatch(List<AcPickExt> acPickExtList, Integer quantity, Integer source);
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入提货日志
|
|
||||||
*
|
|
||||||
* @param acPickExtList 批量插入数据
|
|
||||||
* @param source 来源(1=后台,2=前台)
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
int insertBatchPick(List<AcPickExt> acPickExtList, Integer source);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 批量删除使用记录数据
|
* 批量删除使用记录数据
|
||||||
* @author: sui q
|
|
||||||
* @date: 2023/6/3 13:52
|
|
||||||
* @param: null null
|
|
||||||
**/
|
**/
|
||||||
int deleteBatch(List<AcPickMemberLog> acPickMemberLogList);
|
int deleteBatch(List<AcPickMemberLog> acPickMemberLogList);
|
||||||
|
|
||||||
/*
|
|
||||||
* @description: 查询会员提货使用记录
|
|
||||||
* @author: sui q
|
|
||||||
* @date: 2023/6/3 10:51
|
|
||||||
* @param: null null
|
|
||||||
**/
|
|
||||||
List<AcPickMemberLog> queryPickMemberLog(List<SaOrderExt> saOrderExtList);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,21 +41,6 @@ public interface IAcPickService extends IService<AcPick> {
|
||||||
Integer usableQuantity, String pickCover, Date receiveTime, Integer pkPostage,
|
Integer usableQuantity, String pickCover, Date receiveTime, Integer pkPostage,
|
||||||
Long pkCreator, Integer pkCountry, Long pkBaseId, String specsNameId, String specsName);
|
Long pkCreator, Integer pkCountry, Long pkBaseId, String specsNameId, String specsName);
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据会员和类型回退使用数量
|
|
||||||
*
|
|
||||||
* @param pkMember 会员ID
|
|
||||||
* @param pickType 提货类型
|
|
||||||
* @param pkBaseConfig 活动配置ID(产品时为0) -- 可为null
|
|
||||||
* @param pkDataId 数据ID(产品为产品ID,活动为活动ID) -- 可为null
|
|
||||||
* @param quantity 数量
|
|
||||||
* @param pkModified 操作人
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
int updatePickUsableByMember(Long pkMember, Integer pickType, Long pkBaseConfig,
|
|
||||||
Long pkDataId, Integer quantity, Long pkModified);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据会员和活动类型回退使用数量
|
* 根据会员和活动类型回退使用数量
|
||||||
*
|
*
|
||||||
|
@ -75,11 +60,6 @@ public interface IAcPickService extends IService<AcPick> {
|
||||||
**/
|
**/
|
||||||
boolean updatePickUse(List<AcPickExt> acPickExtList, Integer signSource, List<AcPickMemberLog> acPickMemberLogList);
|
boolean updatePickUse(List<AcPickExt> acPickExtList, Integer signSource, List<AcPickMemberLog> acPickMemberLogList);
|
||||||
|
|
||||||
/*
|
|
||||||
* @description: 更新提货单
|
|
||||||
**/
|
|
||||||
boolean updatePickUse(List<AcPickExt> acPickExtList, List<AcPickMemberLog> acPickMemberLogList);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询提货列表
|
* 查询提货列表
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,23 +1,17 @@
|
||||||
package com.hzs.activity.pick.service.impl;
|
package com.hzs.activity.pick.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.hzs.activity.pick.mapper.AcPickMemberLogMapper;
|
import com.hzs.activity.pick.mapper.AcPickMemberLogMapper;
|
||||||
import com.hzs.activity.pick.service.IAcPickMemberLogService;
|
import com.hzs.activity.pick.service.IAcPickMemberLogService;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.hzs.activity.pick.vo.AcPickMemberLogVO;
|
import com.hzs.activity.pick.vo.AcPickMemberLogVO;
|
||||||
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
|
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
|
||||||
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
|
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
|
||||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会员提货记录 服务实现类
|
* 会员提货记录 服务实现类
|
||||||
*
|
|
||||||
* @author hzs
|
|
||||||
* @since 2023-05-15
|
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class AcPickMemberLogServiceImpl extends ServiceImpl<AcPickMemberLogMapper, AcPickMemberLog> implements IAcPickMemberLogService {
|
public class AcPickMemberLogServiceImpl extends ServiceImpl<AcPickMemberLogMapper, AcPickMemberLog> implements IAcPickMemberLogService {
|
||||||
|
@ -32,33 +26,9 @@ public class AcPickMemberLogServiceImpl extends ServiceImpl<AcPickMemberLogMappe
|
||||||
return baseMapper.insertBatch(acPickExtList, quantity, source);
|
return baseMapper.insertBatch(acPickExtList, quantity, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int insertBatchPick(List<AcPickExt> acPickExtList, Integer source) {
|
|
||||||
return baseMapper.insertBatchPick(acPickExtList, source);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int deleteBatch(List<AcPickMemberLog> acPickMemberLogList) {
|
public int deleteBatch(List<AcPickMemberLog> acPickMemberLogList) {
|
||||||
return baseMapper.deleteBatch(acPickMemberLogList);
|
return baseMapper.deleteBatch(acPickMemberLogList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<AcPickMemberLog> queryPickMemberLog(List<SaOrderExt> saOrderExtList) {
|
|
||||||
List<AcPickMemberLog> retPickMemberLogList = new ArrayList<>();
|
|
||||||
|
|
||||||
Set<String> orderKey = new HashSet<>();
|
|
||||||
saOrderExtList.forEach(saOrderExt -> orderKey.add(saOrderExt.getOrderCode() + saOrderExt.getPkMember()));
|
|
||||||
|
|
||||||
Set<String> orderCodeSet = saOrderExtList.stream().distinct().map(SaOrderExt::getOrderCode).collect(Collectors.toSet());
|
|
||||||
LambdaQueryWrapper<AcPickMemberLog> queryWrapper = new LambdaQueryWrapper<>();
|
|
||||||
queryWrapper.in(AcPickMemberLog::getPickOrder, orderCodeSet);
|
|
||||||
List<AcPickMemberLog> acPickMemberLogList = baseMapper.selectList(queryWrapper);
|
|
||||||
|
|
||||||
for (AcPickMemberLog acPickMemberLog : acPickMemberLogList) {
|
|
||||||
if (!orderKey.contains(acPickMemberLog.getPickOrder() + acPickMemberLog.getPkMember())) {
|
|
||||||
retPickMemberLogList.add(acPickMemberLog);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return retPickMemberLogList;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,11 +117,6 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int updatePickUsableByMember(Long pkMember, Integer pickType, Long pkBaseConfig, Long pkDataId, Integer quantity, Long pkModified) {
|
|
||||||
return baseMapper.updatePickUsableByMember(pkMember, pickType, pkBaseConfig, pkDataId, quantity, pkModified);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int updatePickUsableByMemberAndActivityType(Long pkMember, Integer pickType, Long pkBaseConfig,
|
public int updatePickUsableByMemberAndActivityType(Long pkMember, Integer pickType, Long pkBaseConfig,
|
||||||
Long pkDataId, Integer quantity, Long pkModified) {
|
Long pkDataId, Integer quantity, Long pkModified) {
|
||||||
|
@ -145,21 +140,6 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public boolean updatePickUse(List<AcPickExt> acPickExtList, List<AcPickMemberLog> acPickMemberLogList) {
|
|
||||||
if (CollectionUtil.isNotEmpty(acPickMemberLogList)) {
|
|
||||||
// 回退数量
|
|
||||||
baseMapper.updateBackPickUseBatch(acPickMemberLogList);
|
|
||||||
iAcPickMemberLogService.deleteBatch(acPickMemberLogList);
|
|
||||||
}
|
|
||||||
// 批量更新提货使用数量
|
|
||||||
baseMapper.updatePickUseCouponBatch(acPickExtList);
|
|
||||||
// 批量插入提货日志
|
|
||||||
iAcPickMemberLogService.insertBatchPick(acPickExtList, ESignSource.BONUS.getValue());
|
|
||||||
return Boolean.TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AcPickExt> queryList(AcPickQueryParam param, Integer pkCountry) {
|
public List<AcPickExt> queryList(AcPickQueryParam param, Integer pkCountry) {
|
||||||
return baseMapper.queryList(param, pkCountry);
|
return baseMapper.queryList(param, pkCountry);
|
||||||
|
@ -259,7 +239,6 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
|
||||||
updateList.add(acPick);
|
updateList.add(acPick);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 产品信息
|
// 产品信息
|
||||||
BdProduct bdProduct = productMap.get(detailParam.getPkProduct());
|
BdProduct bdProduct = productMap.get(detailParam.getPkProduct());
|
||||||
// 操作日志内容
|
// 操作日志内容
|
||||||
|
@ -422,8 +401,7 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
|
||||||
switch (ePickType) {
|
switch (ePickType) {
|
||||||
case PICK_PRODUCT:
|
case PICK_PRODUCT:
|
||||||
case PRIZE:
|
case PRIZE:
|
||||||
case COUPON:
|
// 提货产品、抽奖
|
||||||
// 提货产品、抽奖、创客沙棘提货、复购提货、代金券
|
|
||||||
if (null != detailParam.getPkProduct()) {
|
if (null != detailParam.getPkProduct()) {
|
||||||
BdProduct product = iBdProductService.getProduct(detailParam.getPkProduct());
|
BdProduct product = iBdProductService.getProduct(detailParam.getPkProduct());
|
||||||
content.append(ePickType.getLabel()).append(",").append(product.getProductName()).append("(").append(delAcPick.getSpecsName()).append(");");
|
content.append(ePickType.getLabel()).append(",").append(product.getProductName()).append("(").append(delAcPick.getSpecsName()).append(");");
|
||||||
|
|
|
@ -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;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 会员提货日志
|
* 会员提货日志
|
||||||
* @Author: jiang chao
|
|
||||||
* @Time: 2023/5/15 14:00
|
|
||||||
* @Classname: AcPickMemberLogVO
|
|
||||||
* @PackageName: com.hzs.activity.pick.vo
|
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class AcPickMemberLogVO {
|
public class AcPickMemberLogVO {
|
||||||
|
|
|
@ -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;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 会员提货列表VO
|
* 会员提货列表VO
|
||||||
* @Author: jiang chao
|
|
||||||
* @Time: 2023/4/24 16:15
|
|
||||||
* @Classname: ApiPickVO
|
|
||||||
* @PackageName: com.hzs.activity.pick.vo
|
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class ApiPickListVO {
|
public class ApiPickListVO {
|
||||||
|
|
|
@ -28,7 +28,6 @@ import com.hzs.common.domain.sale.product.BdProduct;
|
||||||
import com.hzs.common.domain.sale.wares.BdWaresRange;
|
import com.hzs.common.domain.sale.wares.BdWaresRange;
|
||||||
import com.hzs.common.domain.system.base.BdStorehouse;
|
import com.hzs.common.domain.system.base.BdStorehouse;
|
||||||
import com.hzs.common.domain.system.config.BdAreaFreePostage;
|
import com.hzs.common.domain.system.config.BdAreaFreePostage;
|
||||||
import com.hzs.common.domain.system.config.BdAwards;
|
|
||||||
import com.hzs.common.security.utils.SecurityUtils;
|
import com.hzs.common.security.utils.SecurityUtils;
|
||||||
import com.hzs.common.util.TransactionUtils;
|
import com.hzs.common.util.TransactionUtils;
|
||||||
import com.hzs.member.base.IMemberTeamServiceApi;
|
import com.hzs.member.base.IMemberTeamServiceApi;
|
||||||
|
@ -46,7 +45,6 @@ import com.hzs.system.base.ICurrencyServiceApi;
|
||||||
import com.hzs.system.base.ISystemConfigServiceApi;
|
import com.hzs.system.base.ISystemConfigServiceApi;
|
||||||
import com.hzs.system.base.dto.CurrencyDTO;
|
import com.hzs.system.base.dto.CurrencyDTO;
|
||||||
import com.hzs.system.config.IAreaFreePostageServiceApi;
|
import com.hzs.system.config.IAreaFreePostageServiceApi;
|
||||||
import com.hzs.system.config.IAwardsServiceApi;
|
|
||||||
import com.hzs.system.config.IGradeServiceApi;
|
import com.hzs.system.config.IGradeServiceApi;
|
||||||
import com.hzs.system.config.dto.AreaCurrencyDTO;
|
import com.hzs.system.config.dto.AreaCurrencyDTO;
|
||||||
import com.hzs.system.config.dto.GradeDTO;
|
import com.hzs.system.config.dto.GradeDTO;
|
||||||
|
@ -74,8 +72,6 @@ public class SaOrderHandle {
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IMemberTeamServiceApi memberTeamServiceApi;
|
IMemberTeamServiceApi memberTeamServiceApi;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IAwardsServiceApi awardsServiceApi;
|
|
||||||
@DubboReference
|
|
||||||
ISystemConfigServiceApi systemConfigServiceApi;
|
ISystemConfigServiceApi systemConfigServiceApi;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IAreaFreePostageServiceApi iAreaFreePostageServiceApi;
|
IAreaFreePostageServiceApi iAreaFreePostageServiceApi;
|
||||||
|
@ -268,24 +264,6 @@ public class SaOrderHandle {
|
||||||
|
|
||||||
for (BdWaresDetailExt waresDetailExt : bdWaresDetailExtList) {
|
for (BdWaresDetailExt waresDetailExt : bdWaresDetailExtList) {
|
||||||
SaOrderItems saOrderItems = getSaOrderItems(cuMember, saOrder, currency, saOrderItemsList, waresDetailExt);
|
SaOrderItems saOrderItems = getSaOrderItems(cuMember, saOrder, currency, saOrderItemsList, waresDetailExt);
|
||||||
// 特殊会员产品处理
|
|
||||||
if (null != saOrder
|
|
||||||
&& EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == saOrder.getOrderType()
|
|
||||||
&& EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) {
|
|
||||||
|
|
||||||
// 乐学复购,价格根据等级固定
|
|
||||||
if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.S_VIP.getValue()).getPkId())) {
|
|
||||||
saOrderItems.setPrice(MagicNumberConstants.LXYK_V4);
|
|
||||||
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.VIP.getValue()).getPkId())) {
|
|
||||||
saOrderItems.setPrice(MagicNumberConstants.LXYK_V3);
|
|
||||||
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.MAKER.getValue()).getPkId())) {
|
|
||||||
saOrderItems.setPrice(MagicNumberConstants.LXYK_V2);
|
|
||||||
} else {
|
|
||||||
saOrderItems.setPrice(MagicNumberConstants.LXYK_V1);
|
|
||||||
}
|
|
||||||
// TODO new 乐学复购商品业绩为600
|
|
||||||
saOrderItems.setAchievement(MagicNumberConstants.LXYK_PV);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 免邮的话不需要计算邮费
|
// 免邮的话不需要计算邮费
|
||||||
if (EYesNo.YES.getIntValue() == waresDetailExt.getIsFreeMail()) {
|
if (EYesNo.YES.getIntValue() == waresDetailExt.getIsFreeMail()) {
|
||||||
|
|
|
@ -57,7 +57,6 @@ import com.hzs.sale.order.param.*;
|
||||||
import com.hzs.sale.order.service.*;
|
import com.hzs.sale.order.service.*;
|
||||||
import com.hzs.sale.order.vo.*;
|
import com.hzs.sale.order.vo.*;
|
||||||
import com.hzs.sale.product.service.IBdProductExtendService;
|
import com.hzs.sale.product.service.IBdProductExtendService;
|
||||||
import com.hzs.sale.product.service.IBdProductService;
|
|
||||||
import com.hzs.sale.wares.service.*;
|
import com.hzs.sale.wares.service.*;
|
||||||
import com.hzs.system.base.IAreaServiceApi;
|
import com.hzs.system.base.IAreaServiceApi;
|
||||||
import com.hzs.system.base.ICountryServiceApi;
|
import com.hzs.system.base.ICountryServiceApi;
|
||||||
|
@ -139,8 +138,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBdWaresSpecsRelationService iBdWaresSpecsRelationService;
|
private IBdWaresSpecsRelationService iBdWaresSpecsRelationService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBdProductService iBdProductService;
|
|
||||||
@Autowired
|
|
||||||
private ISaDeliverItemsService iSaDeliverItemsService;
|
private ISaDeliverItemsService iSaDeliverItemsService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IAcPickService iAcPickService;
|
private IAcPickService iAcPickService;
|
||||||
|
@ -731,9 +728,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
saOrderExt.setPayTime(currentDateTime);
|
saOrderExt.setPayTime(currentDateTime);
|
||||||
saOrderExt.setOrderStatus(EOrderStatus.PAY.getValue());
|
saOrderExt.setOrderStatus(EOrderStatus.PAY.getValue());
|
||||||
|
|
||||||
// // 乐学注册、乐学升级订单处理法宝券
|
|
||||||
// this.handleLxPick(saOrderExt);
|
|
||||||
|
|
||||||
if (isToBePay && !isHaiFun) {
|
if (isToBePay && !isHaiFun) {
|
||||||
// 根据业绩判断自动上树 -- 目前使用
|
// 根据业绩判断自动上树 -- 目前使用
|
||||||
newCuMember.setPkModified(pkCreator);
|
newCuMember.setPkModified(pkCreator);
|
||||||
|
@ -891,23 +885,9 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
if (oldGradeDTO.getGradeValue() >= cuMember.getPkSettleGradeValue() && !Objects.equals(Integer.toString(EUpgradeWay.TOTAL.getValue()), upgradeWay)) {
|
if (oldGradeDTO.getGradeValue() >= cuMember.getPkSettleGradeValue() && !Objects.equals(Integer.toString(EUpgradeWay.TOTAL.getValue()), upgradeWay)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// // 验证等级,原等级<新等级
|
|
||||||
// if (oldGradeDTO.getGradeValue() >= cuMember.getPkSettleGradeValue()) {
|
|
||||||
// if (saOrderExt.getOrderType().equals(EOrderType.SPECIAL_UPGRADE_ORDER.getValue())) {
|
|
||||||
// // TODO new 乐学升级,如果V2可以购买订单金额大于36000的,如果V3可以购买订单金额大于128000的
|
|
||||||
// if (!((EGrade.MAKER.getValue() == cuMember.getPkSettleGradeValue() && saOrderExt.getOrderAmount().compareTo(MagicNumberConstants.V3_AMOUNT) >= 0)
|
|
||||||
// || (EGrade.VIP.getValue() == cuMember.getPkSettleGradeValue() && saOrderExt.getOrderAmount().compareTo(MagicNumberConstants.V4_AMOUNT) >= 0))
|
|
||||||
// ) {
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// 封装保存订单数据
|
// 封装保存订单数据
|
||||||
encapsulationSaOrder(saOrderExt);
|
encapsulationSaOrder(saOrderExt);
|
||||||
|
|
||||||
// // 乐学注册、乐学升级订单处理法宝券
|
|
||||||
// this.handleLxPick(saOrderExt);
|
|
||||||
|
|
||||||
// 更新订单信息
|
// 更新订单信息
|
||||||
updateSaOrder(saOrderExt);
|
updateSaOrder(saOrderExt);
|
||||||
// 处理会员信息,更新会员等级,扣款
|
// 处理会员信息,更新会员等级,扣款
|
||||||
|
@ -2431,32 +2411,4 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
return baseMapper.singleItemStat(singleItemStatParam);
|
return baseMapper.singleItemStat(singleItemStatParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 注册、升级处理乐学法宝券
|
|
||||||
*
|
|
||||||
* @param saOrderExt
|
|
||||||
*/
|
|
||||||
private void handleLxPick(SaOrderExt saOrderExt) {
|
|
||||||
Set<Integer> productIdList = saOrderExt.getOrderItemsList().stream().map(SaOrderItems::getPkProduct).collect(Collectors.toSet());
|
|
||||||
List<BdProductExt> productExtList = iBdProductService.queryProductById(productIdList, saOrderExt.getPkCountry(), ERepurchaseType.LE_XUE_REGISTER.getValue());
|
|
||||||
if (CollectionUtil.isNotEmpty(productExtList)) {
|
|
||||||
Map<Integer, BdProductExt> productDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(productExtList.size()));
|
|
||||||
productExtList.forEach(productDTO ->
|
|
||||||
productDtoMap.put(productDTO.getPkId(), productDTO));
|
|
||||||
// 记录数量
|
|
||||||
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsList()) {
|
|
||||||
if (productDtoMap.containsKey(saOrderItems.getPkProduct())) {
|
|
||||||
BdProductExt productDTO = productDtoMap.get(saOrderItems.getPkProduct());
|
|
||||||
// 加入提货单
|
|
||||||
iAcPickService.addPickByActivity(saOrderExt.getPkMember(), EPickType.COUPON.getValue(), 0L, saOrderItems.getPkProduct().longValue(),
|
|
||||||
saOrderItems.getQuantity(), productDTO.getCover(), null, null,
|
|
||||||
saOrderExt.getPkCreator(), saOrderExt.getPkCountry(), null, saOrderItems.getSpecsNameId(), saOrderItems.getSpecsName());
|
|
||||||
|
|
||||||
// 法宝券数量冗余在订单主表
|
|
||||||
saOrderExt.setBoxNum(saOrderItems.getQuantity());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,12 +30,6 @@ public interface BdProductMapper extends BaseMapper<BdProduct> {
|
||||||
*/
|
*/
|
||||||
List<ProductVo> selectByQueryList(ProductParams productParams);
|
List<ProductVo> selectByQueryList(ProductParams productParams);
|
||||||
|
|
||||||
/*
|
|
||||||
* @description: 根据产品id查询产品
|
|
||||||
**/
|
|
||||||
List<BdProductExt> queryProductExtById(@Param("productIdSet") Set<Integer> productIdSet, @Param("pkCountry") Integer pkCountry,
|
|
||||||
@Param("repurchaseType") Integer repurchaseType);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 根据规格、主键查询产品
|
* @description: 根据规格、主键查询产品
|
||||||
**/
|
**/
|
||||||
|
|
|
@ -13,7 +13,6 @@ import com.hzs.system.sys.dto.LoginUser;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品相关服务
|
* 产品相关服务
|
||||||
|
@ -28,12 +27,7 @@ public interface IBdProductService extends IService<BdProduct> {
|
||||||
BdProduct getProduct(Integer pkProduct);
|
BdProduct getProduct(Integer pkProduct);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @description: 根据产品id查询产品
|
* 根据规格、主键查询产品
|
||||||
**/
|
|
||||||
List<BdProductExt> queryProductById(Set<Integer> productIdSet, Integer pkCountry, Integer repurchaseType);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @description: 根据规格、主键查询产品
|
|
||||||
**/
|
**/
|
||||||
List<BdProductExt> queryProductExtById(List<BdProductSpecs> productSpecsList, Integer pkCountry);
|
List<BdProductExt> queryProductExtById(List<BdProductSpecs> productSpecsList, Integer pkCountry);
|
||||||
|
|
||||||
|
|
|
@ -65,11 +65,6 @@ public class BdProductServiceImpl extends ServiceImpl<BdProductMapper, BdProduct
|
||||||
return baseMapper.selectById(pkProduct);
|
return baseMapper.selectById(pkProduct);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BdProductExt> queryProductById(Set<Integer> productIdSet, Integer pkCountry, Integer repurchaseType) {
|
|
||||||
return baseMapper.queryProductExtById(productIdSet, pkCountry, repurchaseType);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BdProductExt> queryProductExtById(List<BdProductSpecs> productSpecsList, Integer pkCountry) {
|
public List<BdProductExt> queryProductExtById(List<BdProductSpecs> productSpecsList, Integer pkCountry) {
|
||||||
return baseMapper.queryProductExtBySpecsId(productSpecsList, pkCountry);
|
return baseMapper.queryProductExtBySpecsId(productSpecsList, pkCountry);
|
||||||
|
|
|
@ -237,8 +237,7 @@ public class ApiBdWaresController extends BaseController {
|
||||||
// 零售价
|
// 零售价
|
||||||
BigDecimal retailPrice = BigDecimal.ZERO;
|
BigDecimal retailPrice = BigDecimal.ZERO;
|
||||||
|
|
||||||
if (EOrderType.REPURCHASE_ORDER.getValue() == cuWaresParams.getSpecialArea()
|
if (EOrderType.REPURCHASE_ORDER.getValue() == cuWaresParams.getSpecialArea()) {
|
||||||
|| EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == cuWaresParams.getSpecialArea()) {
|
|
||||||
for (BdWaresRange bdWaresRange : bdWaresRangeList) {
|
for (BdWaresRange bdWaresRange : bdWaresRangeList) {
|
||||||
if (waresExt.getPkId().intValue() == bdWaresRange.getPkWares().intValue()) {
|
if (waresExt.getPkId().intValue() == bdWaresRange.getPkWares().intValue()) {
|
||||||
waresPrice = waresPrice.add(bdWaresRange.getPrice());
|
waresPrice = waresPrice.add(bdWaresRange.getPrice());
|
||||||
|
@ -246,18 +245,6 @@ public class ApiBdWaresController extends BaseController {
|
||||||
assAchieve = assAchieve.add(bdWaresRange.getAssAchieve());
|
assAchieve = assAchieve.add(bdWaresRange.getAssAchieve());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == cuWaresParams.getSpecialArea()) {
|
|
||||||
// 乐学复购,价格根据等级固定
|
|
||||||
if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.S_VIP.getValue()).getPkId())) {
|
|
||||||
waresPrice = MagicNumberConstants.LXYK_V4;
|
|
||||||
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.VIP.getValue()).getPkId())) {
|
|
||||||
waresPrice = MagicNumberConstants.LXYK_V3;
|
|
||||||
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.MAKER.getValue()).getPkId())) {
|
|
||||||
waresPrice = MagicNumberConstants.LXYK_V2;
|
|
||||||
} else {
|
|
||||||
waresPrice = MagicNumberConstants.LXYK_V1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
List<BdWaresSpecsSkuExt> waresSpecsSku = waresSpecsSkuMap.get(waresExt.getPkId());
|
List<BdWaresSpecsSkuExt> waresSpecsSku = waresSpecsSkuMap.get(waresExt.getPkId());
|
||||||
waresSpecsSku = waresSpecsSku.stream().peek(a -> a.setProductGift(a.getPkProduct() + "" + a.getIsGift())).collect(Collectors.toList());
|
waresSpecsSku = waresSpecsSku.stream().peek(a -> a.setProductGift(a.getPkProduct() + "" + a.getIsGift())).collect(Collectors.toList());
|
||||||
|
|
|
@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.hzs.common.core.constant.CountryConstants;
|
import com.hzs.common.core.constant.CountryConstants;
|
||||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
|
||||||
import com.hzs.common.core.domain.R;
|
import com.hzs.common.core.domain.R;
|
||||||
import com.hzs.common.core.enums.*;
|
import com.hzs.common.core.enums.*;
|
||||||
import com.hzs.common.core.utils.ComputeUtil;
|
import com.hzs.common.core.utils.ComputeUtil;
|
||||||
|
@ -16,7 +15,6 @@ import com.hzs.common.domain.sale.ext.BdWaresSpecsSkuExt;
|
||||||
import com.hzs.common.domain.sale.wares.BdWaresLabel;
|
import com.hzs.common.domain.sale.wares.BdWaresLabel;
|
||||||
import com.hzs.common.domain.sale.wares.BdWaresRange;
|
import com.hzs.common.domain.sale.wares.BdWaresRange;
|
||||||
import com.hzs.common.domain.sale.wares.BdWaresSpecsSku;
|
import com.hzs.common.domain.sale.wares.BdWaresSpecsSku;
|
||||||
import com.hzs.common.domain.system.config.BdAwards;
|
|
||||||
import com.hzs.common.domain.system.config.BdLabel;
|
import com.hzs.common.domain.system.config.BdLabel;
|
||||||
import com.hzs.common.domain.system.ext.BdLabelExt;
|
import com.hzs.common.domain.system.ext.BdLabelExt;
|
||||||
import com.hzs.common.security.utils.SecurityUtils;
|
import com.hzs.common.security.utils.SecurityUtils;
|
||||||
|
@ -30,10 +28,7 @@ import com.hzs.sale.wares.param.*;
|
||||||
import com.hzs.sale.wares.service.*;
|
import com.hzs.sale.wares.service.*;
|
||||||
import com.hzs.system.base.ICurrencyServiceApi;
|
import com.hzs.system.base.ICurrencyServiceApi;
|
||||||
import com.hzs.system.base.dto.CurrencyDTO;
|
import com.hzs.system.base.dto.CurrencyDTO;
|
||||||
import com.hzs.system.config.IAwardsServiceApi;
|
|
||||||
import com.hzs.system.config.IGradeServiceApi;
|
|
||||||
import com.hzs.system.config.IRangeServiceApi;
|
import com.hzs.system.config.IRangeServiceApi;
|
||||||
import com.hzs.system.config.dto.GradeDTO;
|
|
||||||
import com.hzs.system.config.dto.RangeDTO;
|
import com.hzs.system.config.dto.RangeDTO;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
@ -41,7 +36,6 @@ import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,10 +61,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
|
||||||
IRangeServiceApi iRangeServiceApi;
|
IRangeServiceApi iRangeServiceApi;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IMemberServiceApi iMemberServiceApi;
|
IMemberServiceApi iMemberServiceApi;
|
||||||
@DubboReference
|
|
||||||
IAwardsServiceApi iAwardsServiceApi;
|
|
||||||
@DubboReference
|
|
||||||
IGradeServiceApi iGradeServiceApi;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CuWaresParams queryWaresSpecsSku(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry) {
|
public CuWaresParams queryWaresSpecsSku(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry) {
|
||||||
|
@ -176,34 +166,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
|
||||||
}
|
}
|
||||||
productParams.clear();
|
productParams.clear();
|
||||||
productParams.addAll(productParamsResultList);
|
productParams.addAll(productParamsResultList);
|
||||||
|
|
||||||
if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == specialArea) {
|
|
||||||
// 乐学复购,价格根据等级固定
|
|
||||||
// 等级
|
|
||||||
R<List<GradeDTO>> gradeDTO = iGradeServiceApi.queryGradeList(pkCountry);
|
|
||||||
List<GradeDTO> gradeList = gradeDTO.getData();
|
|
||||||
Map<Integer, GradeDTO> gradeMap = gradeList.stream().collect(Collectors.toMap(GradeDTO::getGradeValue, Function.identity()));
|
|
||||||
|
|
||||||
BigDecimal price;
|
|
||||||
// 乐学复购,价格根据等级固定
|
|
||||||
if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.S_VIP.getValue()).getPkId())) {
|
|
||||||
price = MagicNumberConstants.LXYK_V4;
|
|
||||||
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.VIP.getValue()).getPkId())) {
|
|
||||||
price = MagicNumberConstants.LXYK_V3;
|
|
||||||
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.MAKER.getValue()).getPkId())) {
|
|
||||||
price = MagicNumberConstants.LXYK_V2;
|
|
||||||
} else {
|
|
||||||
price = MagicNumberConstants.LXYK_V1;
|
|
||||||
}
|
|
||||||
cuWaresParams.setWaresPrice(price);
|
|
||||||
|
|
||||||
for (CuProductParams productParam : productParams) {
|
|
||||||
for (CuWaresItemsParams cuWaresItemsParams : productParam.getWaresItemsParamsList()) {
|
|
||||||
cuWaresItemsParams.setPriceTotal(new BigDecimal(price.intValue() / productParams.size()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cuWaresParams.setProductParams(productParams);
|
cuWaresParams.setProductParams(productParams);
|
||||||
cuWaresParams.setSpecialArea(specialArea);
|
cuWaresParams.setSpecialArea(specialArea);
|
||||||
return cuWaresParams;
|
return cuWaresParams;
|
||||||
|
@ -211,13 +173,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @description: 购物车查询数量专用
|
|
||||||
* @author: zhang jing
|
|
||||||
* @date: 2024/3/28 10:41
|
|
||||||
* @param: [specialArea, waresCode, loginMemberId, pkCountry]
|
|
||||||
* @return: com.hzs.sale.wares.param.CuWaresParams
|
|
||||||
**/
|
|
||||||
@Override
|
@Override
|
||||||
public CuWaresParams queryWaresSpecsSkuCount(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry) {
|
public CuWaresParams queryWaresSpecsSkuCount(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry) {
|
||||||
List<BdWaresSpecsSkuExt> bdWaresSpecsSkuExtList;
|
List<BdWaresSpecsSkuExt> bdWaresSpecsSkuExtList;
|
||||||
|
@ -273,7 +228,8 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 查询商品sku信息购物车专用
|
* 查询商品sku信息购物车专用
|
||||||
|
*
|
||||||
* @author: zhang jing
|
* @author: zhang jing
|
||||||
* @date: 2024/3/28 14:34
|
* @date: 2024/3/28 14:34
|
||||||
* @param: [specialArea, waresCode, loginMemberId, pkCountry]
|
* @param: [specialArea, waresCode, loginMemberId, pkCountry]
|
||||||
|
@ -348,31 +304,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
|
||||||
.filter(param -> !param.getWaresItemsParamsList().isEmpty())
|
.filter(param -> !param.getWaresItemsParamsList().isEmpty())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
// 处理特殊情况下的价格修改
|
|
||||||
if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == specialArea) {
|
|
||||||
// 获取等级信息
|
|
||||||
Map<Integer, GradeDTO> gradeMap = iGradeServiceApi.queryGradeList(pkCountry).getData().stream()
|
|
||||||
.collect(Collectors.toMap(GradeDTO::getGradeValue, Function.identity()));
|
|
||||||
BigDecimal price;
|
|
||||||
if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.S_VIP.getValue()).getPkId())) {
|
|
||||||
price = MagicNumberConstants.LXYK_V4;
|
|
||||||
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.VIP.getValue()).getPkId())) {
|
|
||||||
price = MagicNumberConstants.LXYK_V3;
|
|
||||||
} else if (cuMember.getPkSettleGrade().equals(gradeMap.get(EGrade.MAKER.getValue()).getPkId())) {
|
|
||||||
price = MagicNumberConstants.LXYK_V2;
|
|
||||||
} else {
|
|
||||||
price = MagicNumberConstants.LXYK_V1;
|
|
||||||
}
|
|
||||||
BigDecimal finalPrice = price;
|
|
||||||
productParamsResultList.forEach(param -> param.getWaresItemsParamsList().forEach(item -> {
|
|
||||||
if (EYesNo.NO.getIntValue() == item.getIsGift()) {
|
|
||||||
// 非赠品
|
|
||||||
item.setPrice(finalPrice);
|
|
||||||
item.setPriceTotal(finalPrice.multiply(new BigDecimal(item.getQuantity())));
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
cuWaresParams.setProductParams(productParamsResultList);
|
cuWaresParams.setProductParams(productParamsResultList);
|
||||||
cuWaresParams.setSpecialArea(specialArea);
|
cuWaresParams.setSpecialArea(specialArea);
|
||||||
return cuWaresParams;
|
return cuWaresParams;
|
||||||
|
@ -429,14 +360,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过规格列表查询商品最小库存单位,
|
|
||||||
*
|
|
||||||
* @param cuWaresItemsParams 明细参数
|
|
||||||
* @return: SpecsSkuParam
|
|
||||||
* @Author: sui q
|
|
||||||
* @Date: 2022/9/19 16:26
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public SpecsSkuParam queryWaresDetailSkuBySpecs(CuWaresItemsParams cuWaresItemsParams) {
|
public SpecsSkuParam queryWaresDetailSkuBySpecs(CuWaresItemsParams cuWaresItemsParams) {
|
||||||
BdWaresSpecsSkuExt bdWaresSpecsSkuExt = baseMapper.queryWaresDetailSkuBySpecs(cuWaresItemsParams);
|
BdWaresSpecsSkuExt bdWaresSpecsSkuExt = baseMapper.queryWaresDetailSkuBySpecs(cuWaresItemsParams);
|
||||||
|
@ -447,44 +370,21 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据id修改值
|
|
||||||
*
|
|
||||||
* @param sku
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public void updateBySkuId(BdWaresSpecsSku sku) {
|
public void updateBySkuId(BdWaresSpecsSku sku) {
|
||||||
baseMapper.updateBySkuId(sku);
|
baseMapper.updateBySkuId(sku);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据id查询sku (可查询删除数据)
|
|
||||||
*
|
|
||||||
* @param pkWaresSpecsSku
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public BdWaresSpecsSku selectByWaresSpecsSkuIdAndDel(Integer pkWaresSpecsSku) {
|
public BdWaresSpecsSku selectByWaresSpecsSkuIdAndDel(Integer pkWaresSpecsSku) {
|
||||||
return baseMapper.selectByWaresSpecsSkuIdAndDel(pkWaresSpecsSku);
|
return baseMapper.selectByWaresSpecsSkuIdAndDel(pkWaresSpecsSku);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据商品id 查询
|
|
||||||
*
|
|
||||||
* @param waresIds
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public List<BdWaresSpecsSkuExt> selectByWaresSpecsSku(List<Integer> waresIds) {
|
public List<BdWaresSpecsSkuExt> selectByWaresSpecsSku(List<Integer> waresIds) {
|
||||||
return baseMapper.selectByWaresSpecsSku(waresIds);
|
return baseMapper.selectByWaresSpecsSku(waresIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据id 批量查询sku 信息
|
|
||||||
*
|
|
||||||
* @param pkWaresSpecsSku
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public List<WaresItemWaresInfo> selectByPkIds(List<Integer> pkWaresSpecsSku) {
|
public List<WaresItemWaresInfo> selectByPkIds(List<Integer> pkWaresSpecsSku) {
|
||||||
return baseMapper.selectByPkIds(pkWaresSpecsSku);
|
return baseMapper.selectByPkIds(pkWaresSpecsSku);
|
||||||
|
@ -541,31 +441,6 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
|
||||||
waresItemVo.setAssAchieve(ComputeUtil.computeAdd(waresItemVo.getAssAchieve(), ComputeUtil.computeMultiply(waresItemWaresInfo.getAssAchieve(), waresItemWaresInfo.getQuantity())));
|
waresItemVo.setAssAchieve(ComputeUtil.computeAdd(waresItemVo.getAssAchieve(), ComputeUtil.computeMultiply(waresItemWaresInfo.getAssAchieve(), waresItemWaresInfo.getQuantity())));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 复购乐学专区 无奖衔 或者 是 vip 或者是 svip 价格改为2680
|
|
||||||
if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == specialArea) {
|
|
||||||
// 等级
|
|
||||||
R<List<GradeDTO>> gradeDTO = iGradeServiceApi.queryGradeList(pkCountry);
|
|
||||||
List<GradeDTO> gradeList = gradeDTO.getData();
|
|
||||||
Map<Integer, GradeDTO> gradeMap = gradeList.stream().collect(Collectors.toMap(GradeDTO::getGradeValue, Function.identity()));
|
|
||||||
|
|
||||||
// 查询会员信息
|
|
||||||
R<CuMember> memberDate = iMemberServiceApi.getMember(pkMember);
|
|
||||||
CuMember cuMemberDate = memberDate.getData();
|
|
||||||
|
|
||||||
// 价格
|
|
||||||
BigDecimal waresPrice;
|
|
||||||
if (cuMemberDate.getPkSettleGrade().equals(gradeMap.get(EGrade.S_VIP.getValue()).getPkId())) {
|
|
||||||
waresPrice = MagicNumberConstants.LXYK_V4;
|
|
||||||
} else if (cuMemberDate.getPkSettleGrade().equals(gradeMap.get(EGrade.VIP.getValue()).getPkId())) {
|
|
||||||
waresPrice = MagicNumberConstants.LXYK_V3;
|
|
||||||
} else if (cuMemberDate.getPkSettleGrade().equals(gradeMap.get(EGrade.MAKER.getValue()).getPkId())) {
|
|
||||||
waresPrice = MagicNumberConstants.LXYK_V2;
|
|
||||||
} else {
|
|
||||||
waresPrice = MagicNumberConstants.LXYK_V1;
|
|
||||||
}
|
|
||||||
waresItemVo.setPrice(waresPrice);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 前台传递结算国 跨国报单计算价格使用
|
// 前台传递结算国 跨国报单计算价格使用
|
||||||
R<CurrencyDTO> currency = iCurrencyServiceApi.getCurrency(SecurityUtils.getPkCountry());
|
R<CurrencyDTO> currency = iCurrencyServiceApi.getCurrency(SecurityUtils.getPkCountry());
|
||||||
if (pkCountry != null) {
|
if (pkCountry != null) {
|
||||||
|
@ -589,35 +464,16 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
|
||||||
return waresItemVo;
|
return waresItemVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据商品id查询规格价格最小值
|
|
||||||
*
|
|
||||||
* @param pkWares
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BdWaresSpecsSkuExt> selectByMinWaresSpecsSku(Integer pkWares) {
|
public List<BdWaresSpecsSkuExt> selectByMinWaresSpecsSku(Integer pkWares) {
|
||||||
return baseMapper.selectByMinWaresSpecsSku(pkWares);
|
return baseMapper.selectByMinWaresSpecsSku(pkWares);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据商品id查询规格价格最小值
|
|
||||||
*
|
|
||||||
* @param pkWaresIds
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public List<BdWaresSpecsSkuExt> selectByMinWaresSpecsSkuByPkWaresList(List<Integer> pkWaresIds) {
|
public List<BdWaresSpecsSkuExt> selectByMinWaresSpecsSkuByPkWaresList(List<Integer> pkWaresIds) {
|
||||||
return baseMapper.selectByMinWaresSpecsSkuByPkWaresList(pkWaresIds);
|
return baseMapper.selectByMinWaresSpecsSkuByPkWaresList(pkWaresIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据id 查询
|
|
||||||
*
|
|
||||||
* @param pkWaresSpecsSku
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public BdWaresSpecsSkuExt selectByPkWaresSpecsSku(Integer pkWaresSpecsSku) {
|
public BdWaresSpecsSkuExt selectByPkWaresSpecsSku(Integer pkWaresSpecsSku) {
|
||||||
return baseMapper.selectByPkWaresSpecsSku(pkWaresSpecsSku);
|
return baseMapper.selectByPkWaresSpecsSku(pkWaresSpecsSku);
|
||||||
|
|
|
@ -75,29 +75,6 @@
|
||||||
ap.modified_time = sysdate
|
ap.modified_time = sysdate
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<!-- 批量更新使用数量 -->
|
|
||||||
<update id="updatePickUseCouponBatch">
|
|
||||||
merge into ac_pick ap
|
|
||||||
using (
|
|
||||||
select pk_id,pk_member,sum(used_quantity) used_quantity from (
|
|
||||||
<foreach collection="list" item="item" separator=" union all ">
|
|
||||||
select
|
|
||||||
#{item.pkId} PK_ID,
|
|
||||||
#{item.pkMember} PK_MEMBER,
|
|
||||||
#{item.usedQuantity} used_quantity
|
|
||||||
from dual
|
|
||||||
</foreach>)
|
|
||||||
group by pk_id,pk_member
|
|
||||||
) tmp
|
|
||||||
on (tmp.PK_ID = ap.PK_ID)
|
|
||||||
WHEN MATCHED THEN
|
|
||||||
update
|
|
||||||
set ap.USABLE_QUANTITY = ap.USABLE_QUANTITY - tmp.used_quantity,
|
|
||||||
ap.USED_QUANTITY = ap.USED_QUANTITY + tmp.used_quantity,
|
|
||||||
ap.pk_modified = tmp.pk_member,
|
|
||||||
ap.modified_time = sysdate
|
|
||||||
</update>
|
|
||||||
|
|
||||||
<!-- 根据提货ID更新使用数量 -->
|
<!-- 根据提货ID更新使用数量 -->
|
||||||
<update id="updatePickUseById">
|
<update id="updatePickUseById">
|
||||||
update AC_PICK ap
|
update AC_PICK ap
|
||||||
|
@ -110,26 +87,6 @@
|
||||||
and ap.USABLE_QUANTITY - #{quantity} >= 0
|
and ap.USABLE_QUANTITY - #{quantity} >= 0
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<!-- 根据会员和类型回退使用数量 -->
|
|
||||||
<update id="updatePickUsableByMember">
|
|
||||||
update ac_pick ap
|
|
||||||
set ap.modified_time = sysdate,
|
|
||||||
ap.pk_modified = #{pkModified},
|
|
||||||
ap.usable_quantity = ap.usable_quantity + #{quantity},
|
|
||||||
ap.used_quantity = ap.used_quantity - #{quantity}
|
|
||||||
where ap.del_flag = 0
|
|
||||||
and ap.pk_member = #{pkMember}
|
|
||||||
and ap.pick_type = #{pickType}
|
|
||||||
<if test="null != pkBaseConfig">
|
|
||||||
and ap.pk_base_config = #{pkBaseConfig}
|
|
||||||
</if>
|
|
||||||
<if test="null != pkDataId">
|
|
||||||
and ap.pk_data_id = #{pkDataId}
|
|
||||||
</if>
|
|
||||||
and ap.used_quantity - #{quantity} >= 0
|
|
||||||
</update>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 根据会员和活动类型回退使用数量 -->
|
<!-- 根据会员和活动类型回退使用数量 -->
|
||||||
<update id="updatePickUsableByMemberAndActivityType">
|
<update id="updatePickUsableByMemberAndActivityType">
|
||||||
update ac_pick ap
|
update ac_pick ap
|
||||||
|
@ -148,22 +105,6 @@
|
||||||
and ap.usable_quantity - #{quantity} >= 0
|
and ap.usable_quantity - #{quantity} >= 0
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<!-- 根据主键更新提货数量 -->
|
|
||||||
<update id="updatePickQuantityByPkId">
|
|
||||||
update AC_PICK ap
|
|
||||||
set ap.USABLE_QUANTITY = ap.USABLE_QUANTITY + #{acPick.usableQuantity},
|
|
||||||
ap.pk_modified = #{acPick.pkModified},
|
|
||||||
ap.modified_time = sysdate
|
|
||||||
where ap.del_flag = 0
|
|
||||||
and ap.PK_ID = #{acPick.pkId}
|
|
||||||
and ap.RECEIVE_TIME = #{acPick.receiveTime}
|
|
||||||
<if test="acPick.isFreeMail != null">
|
|
||||||
and ap.IS_FREE_MAIL = #{acPick.isFreeMail}
|
|
||||||
</if>
|
|
||||||
and ap.PK_POSTAGE = #{acPick.pkPostage}
|
|
||||||
and ap.USABLE_QUANTITY + #{acPick.usableQuantity} > 0
|
|
||||||
</update>
|
|
||||||
|
|
||||||
<!-- 根据主键更新提货数据 -->
|
<!-- 根据主键更新提货数据 -->
|
||||||
<update id="updatePickByPkId">
|
<update id="updatePickByPkId">
|
||||||
update AC_PICK ap
|
update AC_PICK ap
|
||||||
|
@ -335,52 +276,6 @@
|
||||||
and ap.pick_type in (1, 17)
|
and ap.pick_type in (1, 17)
|
||||||
and ap.usable_quantity > 0
|
and ap.usable_quantity > 0
|
||||||
and (ap.receive_time is null or to_char(ap.receive_time, 'yyyy-mm-dd hh24:mi:ss') >= to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'))
|
and (ap.receive_time is null or to_char(ap.receive_time, 'yyyy-mm-dd hh24:mi:ss') >= to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'))
|
||||||
<!-- 迁移创客沙棘提货、复购提货 -->
|
|
||||||
union all
|
|
||||||
select ap.pk_id,
|
|
||||||
ap.pick_type,
|
|
||||||
case
|
|
||||||
when ap.pick_cover is not null then
|
|
||||||
ap.pick_cover
|
|
||||||
else
|
|
||||||
(select bp.cover from bd_product bp where bp.pk_id = ap.pk_data_id)
|
|
||||||
end pick_cover,
|
|
||||||
ap.usable_quantity,
|
|
||||||
ap.receive_time,
|
|
||||||
0 pick_flag,
|
|
||||||
1 IS_WHOLE,
|
|
||||||
ap.base_quantity,
|
|
||||||
ap.creation_time
|
|
||||||
from AC_PICK ap
|
|
||||||
where ap.del_flag = 0
|
|
||||||
and ap.pk_country = #{pkCountry}
|
|
||||||
and ap.pk_member = #{pkMember}
|
|
||||||
and ap.pick_type in (5, 7)
|
|
||||||
and ap.usable_quantity > 0
|
|
||||||
and (ap.receive_time is null or to_char(ap.receive_time, 'yyyy-mm-dd') >= to_char(sysdate, 'yyyy-mm-dd'))
|
|
||||||
<!-- 迁移乐学易考代金券 -->
|
|
||||||
union all
|
|
||||||
select ap.pk_id,
|
|
||||||
ap.pick_type,
|
|
||||||
case
|
|
||||||
when ap.pick_cover is not null then
|
|
||||||
ap.pick_cover
|
|
||||||
else
|
|
||||||
(select bp.cover from bd_product bp where bp.pk_id = ap.pk_data_id)
|
|
||||||
end pick_cover,
|
|
||||||
ap.usable_quantity,
|
|
||||||
ap.receive_time,
|
|
||||||
1 pick_flag,
|
|
||||||
0 IS_WHOLE,
|
|
||||||
ap.base_quantity,
|
|
||||||
ap.creation_time
|
|
||||||
from AC_PICK ap
|
|
||||||
where ap.del_flag = 0
|
|
||||||
and ap.pk_country = #{pkCountry}
|
|
||||||
and ap.pk_member = #{pkMember}
|
|
||||||
and ap.pick_type = 8
|
|
||||||
and ap.usable_quantity > 0
|
|
||||||
and (ap.receive_time is null or to_char(ap.receive_time, 'yyyy-mm-dd') >= to_char(sysdate, 'yyyy-mm-dd'))
|
|
||||||
<!-- 消费赠送、直推赠送 -->
|
<!-- 消费赠送、直推赠送 -->
|
||||||
union all
|
union all
|
||||||
select ap.pk_id,
|
select ap.pk_id,
|
||||||
|
@ -406,18 +301,6 @@
|
||||||
order by creation_time
|
order by creation_time
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 更新代言礼包提货数据 -->
|
|
||||||
<update id="updateRepurchasePick">
|
|
||||||
update AC_PICK ap
|
|
||||||
set ap.usable_quantity = nvl(ap.usable_quantity, 0) + #{usableQuantity},
|
|
||||||
ap.MODIFIED_TIME = sysdate
|
|
||||||
where ap.del_flag = 0
|
|
||||||
and ap.pick_type = 7
|
|
||||||
and ap.pk_base_config = 0
|
|
||||||
and ap.pk_data_id = #{pkProduct}
|
|
||||||
and ap.pk_member = #{pkMember}
|
|
||||||
</update>
|
|
||||||
|
|
||||||
<!-- 撤单扣减乐学代金券 -->
|
<!-- 撤单扣减乐学代金券 -->
|
||||||
<update id="deductionsCouponByOrder">
|
<update id="deductionsCouponByOrder">
|
||||||
update ac_pick ap
|
update ac_pick ap
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
<result column="DEL_FLAG" property="delFlag"/>
|
<result column="DEL_FLAG" property="delFlag"/>
|
||||||
<result column="SOURCE" property="source"/>
|
<result column="SOURCE" property="source"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<delete id="deleteBatch">
|
<delete id="deleteBatch">
|
||||||
delete from AC_PICK_MEMBER_LOG
|
delete from AC_PICK_MEMBER_LOG
|
||||||
where pk_id in
|
where pk_id in
|
||||||
|
@ -78,46 +79,4 @@
|
||||||
#{source})
|
#{source})
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
|
||||||
<!-- 批量插入提货日志 -->
|
|
||||||
<update id="insertBatchPick">
|
|
||||||
merge into AC_PICK_MEMBER_LOG apml
|
|
||||||
using (
|
|
||||||
<foreach collection="list" item="item" separator=" union ">
|
|
||||||
select ap.pk_id PK_PICK,
|
|
||||||
ap.pk_member pk_member,
|
|
||||||
#{item.orderCode} PICK_ORDER,
|
|
||||||
#{item.usedQuantity} used_quantity,
|
|
||||||
ap.pk_country pk_country
|
|
||||||
from ac_pick ap
|
|
||||||
where ap.pick_type = #{item.pickType}
|
|
||||||
and ap.pk_base_config = #{item.pkBaseConfig}
|
|
||||||
and ap.pk_data_id = #{item.pkDataId}
|
|
||||||
and ap.pk_member = #{item.pkMember}
|
|
||||||
</foreach>
|
|
||||||
) tmp
|
|
||||||
on (0 = 1)
|
|
||||||
WHEN NOT MATCHED THEN
|
|
||||||
insert
|
|
||||||
(PK_ID,
|
|
||||||
PK_MEMBER,
|
|
||||||
PK_PICK,
|
|
||||||
PICK_QUANTITY,
|
|
||||||
PICK_TIME,
|
|
||||||
PICK_ORDER,
|
|
||||||
PK_COUNTRY,
|
|
||||||
DEL_FLAG,
|
|
||||||
SOURCE)
|
|
||||||
values
|
|
||||||
(ac_pick_member_log_seq.nextval,
|
|
||||||
tmp.pk_member,
|
|
||||||
tmp.pk_pick,
|
|
||||||
tmp.used_quantity,
|
|
||||||
sysdate,
|
|
||||||
tmp.pick_order,
|
|
||||||
tmp.pk_country,
|
|
||||||
0,
|
|
||||||
#{source})
|
|
||||||
</update>
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
@ -166,19 +166,6 @@
|
||||||
order by pe.SORT desc
|
order by pe.SORT desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="queryProductExtById" resultMap="BdProduct">
|
|
||||||
select bp.pk_id,bp.pk_country,be.repurchase_type,bp.cover,bp.retail_price
|
|
||||||
from bd_product bp
|
|
||||||
inner join bd_product_extend be
|
|
||||||
on bp.pk_id = be.pk_product
|
|
||||||
where bp.del_flag=0 and be.del_flag=0
|
|
||||||
and be.repurchase_type = #{repurchaseType}
|
|
||||||
and bp.pk_country= #{pkCountry} and bp.pk_id in
|
|
||||||
<foreach collection="productIdSet" item="item" open="(" close=")" separator=",">
|
|
||||||
#{item}
|
|
||||||
</foreach>
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<!-- 查询带有规格的产品列表 -->
|
<!-- 查询带有规格的产品列表 -->
|
||||||
<select id="queryProductExistSpecs" resultMap="BdProduct">
|
<select id="queryProductExistSpecs" resultMap="BdProduct">
|
||||||
select distinct bp.*
|
select distinct bp.*
|
||||||
|
|
|
@ -97,82 +97,4 @@ public class MagicNumberConstants {
|
||||||
*/
|
*/
|
||||||
public static final BigDecimal big10000 = new BigDecimal("10000");
|
public static final BigDecimal big10000 = new BigDecimal("10000");
|
||||||
|
|
||||||
/**
|
|
||||||
* 乐学复购 v4 价格
|
|
||||||
*/
|
|
||||||
public static final BigDecimal LXYK_V4 = new BigDecimal("2380");
|
|
||||||
/**
|
|
||||||
* 乐学复购 V3 价格
|
|
||||||
*/
|
|
||||||
public static final BigDecimal LXYK_V3 = new BigDecimal("2680");
|
|
||||||
/**
|
|
||||||
* 乐学复购 V2 价格
|
|
||||||
*/
|
|
||||||
public static final BigDecimal LXYK_V2 = new BigDecimal("2980");
|
|
||||||
/**
|
|
||||||
* 乐学复购 V1 价格
|
|
||||||
*/
|
|
||||||
public static final BigDecimal LXYK_V1 = new BigDecimal("2980");
|
|
||||||
/**
|
|
||||||
* 乐学复购业绩
|
|
||||||
*/
|
|
||||||
public static final BigDecimal LXYK_PV = new BigDecimal("600");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 乐学复购级差奖金300
|
|
||||||
*/
|
|
||||||
public static final BigDecimal LXYK_BONUS_300 = new BigDecimal("300");
|
|
||||||
/**
|
|
||||||
* 乐学复购级差奖金600
|
|
||||||
*/
|
|
||||||
public static final BigDecimal LXYK_BONUS_600 = new BigDecimal("600");
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 乐学V4注册金额
|
|
||||||
*/
|
|
||||||
public static final BigDecimal V4_AMOUNT = new BigDecimal("128000");
|
|
||||||
/**
|
|
||||||
* 乐学V3注册金额
|
|
||||||
*/
|
|
||||||
public static final BigDecimal V3_AMOUNT = new BigDecimal("36000");
|
|
||||||
/**
|
|
||||||
* 乐学V2注册金额
|
|
||||||
*/
|
|
||||||
public static final BigDecimal V2_AMOUNT = new BigDecimal("6000");
|
|
||||||
/**
|
|
||||||
* 乐学V1注册金额
|
|
||||||
*/
|
|
||||||
public static final BigDecimal V1_AMOUNT = new BigDecimal("2000");
|
|
||||||
|
|
||||||
// 级差 V4-V4 给的奖金
|
|
||||||
public static final BigDecimal V4_V4_BONUS = new BigDecimal("43000");
|
|
||||||
// 级差 V4-V3 给的奖金
|
|
||||||
public static final BigDecimal V4_V3_BONUS = new BigDecimal("18000");
|
|
||||||
// 级差 V4-V2 给的奖金
|
|
||||||
public static final BigDecimal V4_V2_BONUS = new BigDecimal("3000");
|
|
||||||
// 级差 V4-V1 给的奖金
|
|
||||||
public static final BigDecimal V4_V1_BONUS = new BigDecimal("1000");
|
|
||||||
|
|
||||||
// 级差 V3-V4 给的奖金
|
|
||||||
public static final BigDecimal V3_V4_BONUS = new BigDecimal("10800");
|
|
||||||
// 级差 V3-V3 给的奖金
|
|
||||||
public static final BigDecimal V3_V3_BONUS = new BigDecimal("10800");
|
|
||||||
// 级差 V3-V2 给的奖金
|
|
||||||
public static final BigDecimal V3_V2_BONUS = new BigDecimal("2400");
|
|
||||||
// 级差 V3-V1 给的奖金
|
|
||||||
public static final BigDecimal V3_V1_BONUS = new BigDecimal("800");
|
|
||||||
|
|
||||||
// 级差 V2-V4 给的奖金
|
|
||||||
public static final BigDecimal V2_V4_BONUS = new BigDecimal("1800");
|
|
||||||
// 级差 V2-V3 给的奖金
|
|
||||||
public static final BigDecimal V2_V3_BONUS = new BigDecimal("1800");
|
|
||||||
// 级差 V2-V2 给的奖金
|
|
||||||
public static final BigDecimal V2_V2_BONUS = new BigDecimal("1800");
|
|
||||||
// 级差 V2-V1 给的奖金
|
|
||||||
public static final BigDecimal V2_V1_BONUS = new BigDecimal("600");
|
|
||||||
|
|
||||||
// 级差 V1-V1-4 给的奖金
|
|
||||||
public static final BigDecimal V1_V_BONUS = new BigDecimal("400");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,6 @@ public class BonusMsgConstants {
|
||||||
*/
|
*/
|
||||||
// public static String RECOMMEND_DIRECT = "MSG_BONUS_002";
|
// public static String RECOMMEND_DIRECT = "MSG_BONUS_002";
|
||||||
public static String RECOMMEND_DIRECT = "订单编号%s,%s为%s贡献了推荐收益,推荐收益为%f。";
|
public static String RECOMMEND_DIRECT = "订单编号%s,%s为%s贡献了推荐收益,推荐收益为%f。";
|
||||||
public static String RECOMMEND_SPECIAL_DIRECT = "订单编号%s,%s为%s贡献了乐学易考推荐极差收益,推荐极差收益为%f。";
|
|
||||||
/**
|
/**
|
||||||
* 拓展收益备注 -- 当前是第%d碰,共%d碰,订单编号%s,%s为%s贡献了拓展收益,计算业绩%f,拓展比例%f。
|
* 拓展收益备注 -- 当前是第%d碰,共%d碰,订单编号%s,%s为%s贡献了拓展收益,计算业绩%f,拓展比例%f。
|
||||||
*/
|
*/
|
||||||
|
@ -103,12 +102,6 @@ public class BonusMsgConstants {
|
||||||
|
|
||||||
public static String LE_SHARE_RANGE = "订单编号%s,%s为%s贡献了复购极差收益,收益%f。";
|
public static String LE_SHARE_RANGE = "订单编号%s,%s为%s贡献了复购极差收益,收益%f。";
|
||||||
|
|
||||||
/**
|
|
||||||
* 分享极差 -- 订单编号%s,%s为%s贡献了分享极差收益(乐学易考),使用代金券%f,当前等级%s。
|
|
||||||
*/
|
|
||||||
// public static String LE_XUE_SHARE_RANGE = "MSG_BONUS_018";
|
|
||||||
public static String LE_XUE_SHARE_RANGE = "订单编号%s,%s为%s贡献了分享极差收益(乐学易考),使用代金券%f,当前等级%s。";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 复购券收益 -- 订单编号%s,%s为%s贡献了复购券收益,计算业绩%f,计算比例%f,复购券收益%f。
|
* 复购券收益 -- 订单编号%s,%s为%s贡献了复购券收益,计算业绩%f,计算比例%f,复购券收益%f。
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -5,11 +5,7 @@ import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 提货商品类型
|
* 提货商品类型
|
||||||
* @Author: jiang chao
|
|
||||||
* @Time: 2023/4/24 10:13
|
|
||||||
* @Classname: EPickType
|
|
||||||
* @PackageName: com.hzs.common.core.enums
|
|
||||||
*/
|
*/
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
|
@ -25,11 +21,6 @@ public enum EPickType {
|
||||||
*/
|
*/
|
||||||
PRIZE(1, "抽奖", EnumsPrefixConstants.ACT_TYPE + "1"),
|
PRIZE(1, "抽奖", EnumsPrefixConstants.ACT_TYPE + "1"),
|
||||||
|
|
||||||
/**
|
|
||||||
* 关联 BS_PRODUCT 表, 用于乐学易考
|
|
||||||
*/
|
|
||||||
COUPON(8, "法宝券", EnumsPrefixConstants.ACT_TYPE + "8"),
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关联 AC_GIFT_CONFIG 表
|
* 关联 AC_GIFT_CONFIG 表
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2,7 +2,9 @@ package com.hzs.common.domain.activity.pick;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.hzs.common.core.web.domain.BaseEntity;
|
import com.hzs.common.core.web.domain.BaseEntity;
|
||||||
|
@ -12,9 +14,6 @@ import lombok.experimental.Accessors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提货基础表
|
* 提货基础表
|
||||||
*
|
|
||||||
* @author hzs
|
|
||||||
* @since 2023-04-21
|
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
|
|
@ -16,9 +16,6 @@ import lombok.experimental.Accessors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会员提货记录
|
* 会员提货记录
|
||||||
*
|
|
||||||
* @author hzs
|
|
||||||
* @since 2023-05-15
|
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
|
|
@ -7,11 +7,7 @@ import lombok.EqualsAndHashCode;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 提货基础表扩展
|
* 提货基础表扩展
|
||||||
* @Author: jiang chao
|
|
||||||
* @Time: 2023/4/21 18:10
|
|
||||||
* @Classname: AcPickExt
|
|
||||||
* @PackageName: com.hzs.common.domain.activity.pick.ext
|
|
||||||
*/
|
*/
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
对接文档:
|
|
||||||
https://docs.qq.com/doc/DVGFhWEFRRXB0elNX
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue