## 计算等级处理;
This commit is contained in:
		
							parent
							
								
									4e093d2a2d
								
							
						
					
					
						commit
						e5ca77d7b6
					
				|  | @ -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