| 
					
				 | 
			
			
				@@ -4622,7 +4622,11 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Response<Object> response; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 查询会员信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByPhone("{\"phone\":" + memberCode + "}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (memberCode.trim().length() == 11) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByPhone("{\"phone\":\"" + memberCode + "\"}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByCode("{\"code\":\"" + memberCode + "\"}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 response = JacksonUtil.fromListJson(memberInfoByCodeResponseJson, new TypeReference<Response<Object>>() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (Objects.isNull(response) || Objects.nonNull(response.getErrorCode())) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4638,32 +4642,35 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 MemberInfoDTO memberInfoDTO = JacksonUtil.fromStringJson(JacksonUtil.toJson(response.getData()), MemberInfoDTO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 assert memberInfoDTO != null : String.format("会员码:【%s】会员信息错误!%s", memberCode, JacksonUtil.toJson(response)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 查询会员表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calculateOrderDiscountPriceResponseVO.setOpenId(memberInfoDTO.getOpenId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calculateOrderDiscountPriceResponseVO.setMemberPhone(memberInfoDTO.getPhone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 UserEntity userEntity = userService.queryByOpenId(memberInfoDTO.getOpenId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String openId = memberInfoDTO.getOpenId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (Objects.isNull(userEntity)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     userEntity = new UserEntity(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    userEntity.setOpenId(memberInfoDTO.getOpenId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    userEntity.setOpenId(openId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     userEntity.setMemberCode(memberCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    userEntity.setMobile(openId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     userService.save(userEntity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    userEntity.setOpenId(memberInfoDTO.getOpenId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    userEntity.setOpenId(openId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    userEntity.setMobile(openId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     userEntity.setMemberCode(memberCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     userService.update(userEntity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Integer score = memberInfoDTO.getScore(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (Objects.nonNull(score) && score > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // 有积分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    afterDiscountPrice = calculatePreferentialPrice(orderTotalPrice, score, memberCode, calculateOrderDiscountPriceResponseVO, goodsDetailsDtos, promotionSkuList, mkActivitiesEntityList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    LOGGER.info("会员【{}】,当前积分:{},积分抵扣后的订单金额:{},积分抵扣前的订单金额:{}", memberCode, score, afterDiscountPrice, orderTotalPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    afterDiscountPrice = calculatePreferentialPrice(orderTotalPrice, score, memberCode, openId, calculateOrderDiscountPriceResponseVO, goodsDetailsDtos, promotionSkuList, mkActivitiesEntityList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    LOGGER.info("会员【{}】,当前积分:{},积分抵扣后的订单金额:{},积分抵扣前的订单金额:{}", openId, score, afterDiscountPrice, orderTotalPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     calculateOrderDiscountPriceResponseVO.setOrderTotalPrice(afterDiscountPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     calculateOrderDiscountPriceResponseVO.setGoodsDetailsDtos(goodsDetailsDtos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     calculateOrderDiscountPriceResponseVO.setBeforeScore(score); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    calculateOrderDiscountPriceResponseVO.setOpenId(memberInfoDTO.getOpenId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    calculateOrderDiscountPriceResponseVO.setMemberPhone(memberInfoDTO.getPhone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // 订单完成后再添加积分消费记录,以及同步积分信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     return calculateOrderDiscountPriceResponseVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    LOGGER.error("会员【{}】积分为0,积分抵扣失败!", memberCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new ServiceException(String.format("会员【%s】积分为0,积分抵扣失败!", memberCode)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    LOGGER.error("会员【{}】积分为0,积分抵扣失败!", openId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return calculateOrderDiscountPriceResponseVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 LOGGER.error("查询会员信息失败!响应结果:{}", memberInfoByCodeResponseJson); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4684,15 +4691,18 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param orderTotalPrice   订单商品总价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param score             积分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param memberCode        会员码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param openId            会员open_id:手机号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param goodsDetailsDtos  订单商品详情 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param calculateOrderDiscountPriceResponseVO 响应数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param promotionSkuList  参与了限时特价活动并且与积分抵扣互斥的sku集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param mkActivitiesEntityList 根据优先级排序后的活动集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @return                  积分抵扣后的订单总金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private BigDecimal calculatePreferentialPrice(BigDecimal orderTotalPrice, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                   Integer score, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                   String memberCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                  String openId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                   CalculateOrderDiscountPriceResponseVO calculateOrderDiscountPriceResponseVO, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                   List<GoodsDetailsDto> goodsDetailsDtos, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                   List<String> promotionSkuList, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4764,9 +4774,9 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Integer scoreLimit = Integer.parseInt(scoreLimitStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (score < scoreLimit) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                LOGGER.error("用户【{}】的积分数量为:{},最低需要{}积分才能抵扣!", memberCode, score, scoreLimit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                LOGGER.error("会员码【{}】用户【{}】的积分数量为:{},最低需要{}积分才能抵扣!", memberCode, openId, score, scoreLimit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 calculateOrderDiscountPriceResponseVO.setAfterScore(score); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                throw new ServiceException(String.format("用户【%s】的积分数量为:%s,最低需要%s积分才能抵扣!", memberCode, score, scoreLimit)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new ServiceException(String.format("用户【%s】的积分数量为:%s,最低需要%s积分才能抵扣!", openId, score, scoreLimit)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 积分取整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 int scoreInteger = score % scoreLimit == 0 ? score : score - (score % scoreLimit); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4888,10 +4898,10 @@ public class OrderServiceImpl implements OrderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 calculateOrderDiscountPriceResponseVO.setOrderTotalPrice(orderTotalPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 积分抵扣的总金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 calculateOrderDiscountPriceResponseVO.setScoreDeductionPrice(goodsDetailScoreDeductionPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                LOGGER.info("会员【{}】,当前积分:{},抵扣订单金额后剩余积分:{}", memberCode, score, afterScore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                LOGGER.info("会员【{}】会员码【{}】,当前积分:{},抵扣订单金额后剩余积分:{}", openId, memberCode, score, afterScore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            LOGGER.info("会员【{}】的积分小于积分抵扣最低值,不参加积分抵扣!", memberCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LOGGER.info("会员【{}】会员码【{}】的积分小于积分抵扣最低值,不参加积分抵扣!", openId, memberCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return orderTotalPrice; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 |