## 计算等级处理;
This commit is contained in:
parent
5df6f78184
commit
4d22e81c1f
|
|
@ -104,14 +104,28 @@ public class ApiRetailOrderController {
|
|||
.isEnough(false)
|
||||
.build();
|
||||
|
||||
Long pkMember = SecurityUtils.getUserId();
|
||||
|
||||
if (ESpecialArea.RETAIL_REGISTER.getValue() == levelParam.getSpecialArea()) {
|
||||
// 注册订单
|
||||
levelParam.setUpgradeMember(iMemberServiceApi.getMember(SecurityUtils.getUserId()).getData());
|
||||
levelParam.setUpgradeMember(iMemberServiceApi.getMember(pkMember).getData());
|
||||
} else if (ESpecialArea.RETAIL_UPGRADE.getValue() == levelParam.getSpecialArea()) {
|
||||
// 升级校验
|
||||
if (StringUtils.isEmpty(levelParam.getUpgradeMemberCode())) {
|
||||
return AjaxResult.error("购买编号不能为空");
|
||||
}
|
||||
|
||||
CuMember updateGradeMember = iMemberServiceApi.getRetailMember(null, levelParam.getUpgradeMemberCode()).getData();
|
||||
if (null == updateGradeMember) {
|
||||
throw new ServiceException("购买编号不存在,请重试");
|
||||
}
|
||||
levelParam.setUpgradeMember(updateGradeMember);
|
||||
}
|
||||
|
||||
try {
|
||||
// 购物车中获取商品信息,获取等级
|
||||
BdGrade bdGrade = iSaOrderService.calculateGrade();
|
||||
BdGrade bdGrade = iRetailOrderService.calculateGrade(levelParam.getSpecialArea(), convertShoppingCarToSku(pkMember, levelParam.getShopList()),
|
||||
null, levelParam.getUpgradeMember(), null);
|
||||
if (null != bdGrade) {
|
||||
orderLevelVO.setIsEnough(true);
|
||||
orderLevelVO.setPkGradeVal(bdGrade.getGradeName());
|
||||
|
|
@ -265,7 +279,7 @@ public class ApiRetailOrderController {
|
|||
.waresItemsParamList(itemsParamList)
|
||||
.build());
|
||||
}
|
||||
if(ObjectUtil.isEmpty(buyMember)){
|
||||
if (ObjectUtil.isEmpty(buyMember)) {
|
||||
buyMember = new CuMember();
|
||||
List<BdGrade> gradeList = iGradeServiceApi.getRetailGradeList().getData();
|
||||
// Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
||||
|
|
@ -293,9 +307,9 @@ public class ApiRetailOrderController {
|
|||
@PostMapping("/confirm-reg-order")
|
||||
public AjaxResult confirmRegisterOrder(@Valid @RequestBody RetailOrderRegisterParam registerParam,
|
||||
@RequestHeader("Source") Integer source) {
|
||||
if(RetailConstants.LIMIT_TO_REG_PHONE_NUMBER){
|
||||
if (RetailConstants.LIMIT_TO_REG_PHONE_NUMBER) {
|
||||
Integer phoneCount = iMemberServiceApi.getMemberPhoneCount(registerParam.getPhone()).getData();
|
||||
if(phoneCount > 0){
|
||||
if (phoneCount > 0) {
|
||||
return AjaxResult.error("已注册相同的手机号码,不允许重复注册!");
|
||||
}
|
||||
}
|
||||
|
|
@ -424,7 +438,7 @@ public class ApiRetailOrderController {
|
|||
* @param source 数据来源
|
||||
* @return
|
||||
*/
|
||||
// @RepeatSubmit
|
||||
@RepeatSubmit
|
||||
@PostMapping("/confirm-other-order")
|
||||
public AjaxResult confirmOtherOrder(@Valid @RequestBody RetailOrderOtherParam orderParam,
|
||||
@RequestHeader("Source") Integer source) {
|
||||
|
|
@ -723,9 +737,9 @@ public class ApiRetailOrderController {
|
|||
@PostMapping("/fans-confirm-order")
|
||||
public AjaxResult fansConfirmOrder(@RequestBody RetailOrderRegisterParam registerParam,
|
||||
@RequestHeader("Source") Integer source) {
|
||||
if(RetailConstants.LIMIT_TO_REG_PHONE_NUMBER){
|
||||
if (RetailConstants.LIMIT_TO_REG_PHONE_NUMBER) {
|
||||
Integer phoneCount = iMemberServiceApi.getMemberPhoneCount(registerParam.getPhone()).getData();
|
||||
if(phoneCount > 0){
|
||||
if (phoneCount > 0) {
|
||||
return AjaxResult.error("已注册相同的手机号码,不允许重复注册!");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,8 +10,10 @@ import com.hzs.common.domain.system.config.BdGrade;
|
|||
import com.hzs.retail.sale.param.RetailOrderOtherParam;
|
||||
import com.hzs.retail.sale.param.RetailOrderParam;
|
||||
import com.hzs.retail.sale.param.RetailOrderRegisterParam;
|
||||
import com.hzs.sale.order.param.OrderItemsParam;
|
||||
import com.hzs.system.base.dto.CurrencyDTO;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -59,6 +61,15 @@ public interface IRetailOrderService {
|
|||
List<SaOrderItems> createSaOrderItems(RetailOrderParam orderParam, List<BdGrade> gradeList,
|
||||
CuMember cuMember, SaOrderExt saOrderExt, CurrencyDTO currency);
|
||||
|
||||
/**
|
||||
* 计算等级
|
||||
*
|
||||
* @return 返回 null 则为不满足升级条件
|
||||
*/
|
||||
BdGrade calculateGrade(Integer specialArea, List<OrderItemsParam> orderItemsParams,
|
||||
List<BdGrade> gradeList, CuMember updateGradeMember, BigDecimal orderAchieve);
|
||||
|
||||
|
||||
/**
|
||||
* 查询会员账户
|
||||
*
|
||||
|
|
|
|||
|
|
@ -203,14 +203,15 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
|
|||
|
||||
if (ESpecialArea.RETAIL_REGISTER.getValue() == orderParam.getSpecialArea()) {
|
||||
// 注册、升级订单,计算会员等级
|
||||
BdGrade newGrade = iSaOrderService.calculateGrade();
|
||||
BdGrade newGrade = this.calculateGrade(orderParam.getSpecialArea(), orderParam.getOrderItemsParams(),
|
||||
gradeList, cuMember, orderAchieve);
|
||||
if (null == newGrade) {
|
||||
throw new ServiceException("会员不满足升级条件");
|
||||
}
|
||||
saOrderExt.setPkGrade(newGrade.getPkId());
|
||||
// 会员信息
|
||||
if (null != cuMember) {
|
||||
// cuMember.setPkSettleGrade(newGrade.getPkId());
|
||||
cuMember.setPkSettleGrade(newGrade.getPkId());
|
||||
cuMember.setPkAwards(newGrade.getPkAwards());
|
||||
// if (null == cuMember.getPkAwards()) {
|
||||
// // 新会员没有奖衔,则进行赋值
|
||||
|
|
@ -259,9 +260,6 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
|
|||
// 当前盒数
|
||||
BigDecimal boxNum = BigDecimal.ZERO;
|
||||
|
||||
// 设置已经累计盒数的商品列表
|
||||
List<String> tmpBoxWares = new ArrayList<>();
|
||||
|
||||
// 遍历生成订单明细数据
|
||||
for (BdWaresDetailExt waresDetailExt : waresDetailExtList) {
|
||||
// 订单明细
|
||||
|
|
@ -296,20 +294,51 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
|
|||
return orderItemsList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BdGrade calculateGrade(Integer specialArea, List<OrderItemsParam> orderItemsParams, List<BdGrade> gradeList,
|
||||
CuMember updateGradeMember, BigDecimal orderAchieve) {
|
||||
// 需要计算等级,以及商品价格
|
||||
if (CollectionUtil.isEmpty(gradeList)) {
|
||||
gradeList = iGradeServiceApi.getRetailGradeList().getData();
|
||||
}
|
||||
|
||||
// 订单业绩
|
||||
if (null == orderAchieve) {
|
||||
orderAchieve = BigDecimal.ZERO;
|
||||
// 商品+产品明细
|
||||
List<BdWaresDetailExt> waresDetailExtList = getWaresDetailExtList(ESpecialArea.getRetailSpecialAreaValue(specialArea), orderItemsParams, updateGradeMember, null);
|
||||
// 遍历生成订单明细数据
|
||||
for (BdWaresDetailExt waresDetailExt : waresDetailExtList) {
|
||||
// 不是赠品,需要计算业绩
|
||||
if (EYesNo.NO.getIntValue() == waresDetailExt.getIsGift()) {
|
||||
orderAchieve = ComputeUtil.computeAddMultiply(orderAchieve, waresDetailExt.getAchieve(), waresDetailExt.getQuantity() * waresDetailExt.getWaresQuantity());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<BdGrade> tmpGradeList = gradeList.stream().sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed()).collect(Collectors.toList());
|
||||
for (BdGrade tmpGrade : tmpGradeList) {
|
||||
if (orderAchieve.compareTo(tmpGrade.getStartValue()) >= 0) {
|
||||
return tmpGrade;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品及产品详情
|
||||
*
|
||||
* @param specialArea 所属专区
|
||||
* @param orderItemsParams 订单参数列表
|
||||
* @param cuMember 订单会员(复购使用)
|
||||
* @param systemTyype 系统类型
|
||||
* @param systemType 系统类型
|
||||
* @return
|
||||
*/
|
||||
private List<BdWaresDetailExt> getWaresDetailExtList(Integer specialArea, List<OrderItemsParam> orderItemsParams, CuMember cuMember, Integer systemTyype) {
|
||||
private List<BdWaresDetailExt> getWaresDetailExtList(Integer specialArea, List<OrderItemsParam> orderItemsParams, CuMember cuMember, Integer systemType) {
|
||||
// 商品编号 + sku列表找到所有的商品信息
|
||||
List<BdWaresDetailExt> bdWaresDetailExtList = new ArrayList<>();
|
||||
if (CollectionUtil.isNotEmpty(orderItemsParams)) {
|
||||
List<BdWaresDetailExt> waresDetailExtList = iBdWaresDetailService.queryWaresDetailByCondition(specialArea, ETransportType.LAND.getValue(), orderItemsParams, systemTyype);
|
||||
List<BdWaresDetailExt> waresDetailExtList = iBdWaresDetailService.queryWaresDetailByCondition(specialArea, ETransportType.LAND.getValue(), orderItemsParams, systemType);
|
||||
// 复购处理极差
|
||||
setWaresRange(specialArea, waresDetailExtList, cuMember);
|
||||
if (waresDetailExtList.size() > 0) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue