|  | @@ -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;
 | 
	
		
			
				|  |  |      }
 |