Commit 71c3114d by 蒋小洋

野翠山去支付校验配送

parent 43dc016a
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: QueryReceiveAddressDistanceDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: ping.wu
* @date: 2018/6/29 16:37
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.entities.vo;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class CheckDeliveryAddressReq {
//商户号
private String partnerId;
//门店id
private String storeId;
//收货人经度
private String receiverLng;
//收货人纬度
private String receiverLat;
//收货人地址
private String receiverAddress;
//物品重量(kg)
private String depatchWeight = "1";
//是否预约单 :0 否 1 是
private Integer isPre = 0;
//用户支付方式 1、已支付 0、货到付款
private Integer payType = 1;
//是否保价,0:非保价;1:保价
private Integer isInsured = 0;
//是否是专人直送订单,0:否;1:是
private Integer isPersonDirect = 0;
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: QueryReceiveAddressDistanceDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: ping.wu
* @date: 2018/6/29 16:37
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.entities.vo;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class CheckDeliveryAddressResp {
private String code;
private String msg;
private ResultBean data;
@NoArgsConstructor
@Data
public static class ResultBean {
//是否在配送范围内
private boolean isSupport;
//消息提示
private String msg;
}
}
......@@ -91,6 +91,9 @@ public enum ResponseResult {
SHOPPING_CART_SENDGOODS_NOT_EXIST("44011", "加价购商品不存在",""),
SHOPPING_CART_STOCK_NOT_HAVE("44012", "商品库存不足",""),
SHOPPING_CART_PRODUCT_NOT_EXIST("44013", "商品不存在",""),
SHOPPING_CART_IS_OVERDELIVERY_ERR("44111", "校验配送范围失败",""),
/**
* 订单状态码
......
......@@ -6,6 +6,8 @@ import cn.freemud.config.ApolloVariableConfig;
import cn.freemud.constant.RedisLockKey;
import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.QueryReceiveAddressDto;
import cn.freemud.entities.dto.QueryReceiveAddressResponseDto;
import cn.freemud.entities.dto.order.CreateCashierOrderDto;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.order.PaymentConfigVo;
......@@ -16,7 +18,8 @@ import cn.freemud.management.service.handle.SaasOrderHandle;
import cn.freemud.management.thirdparty.OrderCallbackClient;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.*;
import cn.freemud.service.universal.UniversalOrderService;
import cn.freemud.service.thirdparty.CustomerClient;
import cn.freemud.service.thirdparty.TakeawayServiceClient;
import cn.freemud.service.universal.factory.CreateOrderServiceFactory;
import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil;
......@@ -37,6 +40,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.List;
......@@ -134,6 +138,12 @@ public class OrderAdapterServiceImpl {
private CashierOrderService cashierOrderService;
@Autowired
private PayServiceImpl payService;
@Value("${ycs.partnerId:2690,2702,2664}")
private String ycsPartnerId;
@Autowired
private CustomerClient customerClient;
@Resource
private TakeawayServiceClient takeawayServiceClient;
//获取下单实现对象
private OrderFactoryService getCreateOrderBean(AssortmentCustomerInfoVo assortmentCustomerInfoVo,CreateOrderVo createOrderVo){
......@@ -188,6 +198,16 @@ public class OrderAdapterServiceImpl {
if (assortmentCustomerInfoVo == null || StringUtils.isEmpty(assortmentCustomerInfoVo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
//Apollo配置野翠山商户,外卖订单地址是否超出美图等配送范围 -jxy
List<String> ycsList = Arrays.asList(ycsPartnerId.split(","));
boolean ycsPartner = ycsList.contains(createOrderVo.getPartnerId());
if(ycsPartner && BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(createOrderVo.getMenuType())
&& StringUtils.isNotEmpty(createOrderVo.getReceiveId())){
boolean isOverDelivery = checkYcsIsOverDelivery(createOrderVo.getReceiveId(),createOrderVo.getPartnerId(),createOrderVo.getShopId());
if(isOverDelivery){
throw new ServiceException(ResponseResult.SHOPPING_CART_IS_OVERDELIVERY_ERR);
}
}
// 扩展字段中存储 sessionKey
createOrderVo.setSessionKey(assortmentCustomerInfoVo.getSessionKey());
// 用于测试 新创建订单接口 不是围餐, 并且 商户号 门店号都在配置里面
......@@ -383,4 +403,30 @@ public class OrderAdapterServiceImpl {
}
/**
* 校验野翠山是否超配送,true超配送,false没有超出配送
* @return
*/
private boolean checkYcsIsOverDelivery(String addressId, String partnerId,String storeId){
//1、查询收件人地址信息
QueryReceiveAddressDto queryReceiveAddressDto = new QueryReceiveAddressDto(addressId,partnerId);
QueryReceiveAddressResponseDto queryReceiveAddressResponseDto = customerClient.queryReceiveAddressById(queryReceiveAddressDto);
if(!Objects.equals("100",queryReceiveAddressResponseDto.getCode()) || queryReceiveAddressResponseDto.getData() == null){
return true;
}
CheckDeliveryAddressReq checkDeliveryAddressReq = new CheckDeliveryAddressReq();
checkDeliveryAddressReq.setPartnerId(partnerId);
checkDeliveryAddressReq.setStoreId(storeId);
checkDeliveryAddressReq.setReceiverLng(queryReceiveAddressResponseDto.getData().getLongitude());
checkDeliveryAddressReq.setReceiverLat(queryReceiveAddressResponseDto.getData().getLatitude());
checkDeliveryAddressReq.setReceiverAddress(queryReceiveAddressResponseDto.getData().getReceiveAddress());
//2、查询配送信息是否超配送
CheckDeliveryAddressResp checkDeliveryAddressResp = takeawayServiceClient.checkDeliveryAddress(checkDeliveryAddressReq);
if(!Objects.equals("100",checkDeliveryAddressResp.getCode()) || checkDeliveryAddressResp.getData() == null
|| !checkDeliveryAddressResp.getData().isSupport()){
return true;
}
return false;
}
}
......@@ -14,10 +14,7 @@
package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.entities.dto.GetMemberExtendInfoRequestDto;
import cn.freemud.entities.dto.GetMemberExtendInfoResponseDto;
import cn.freemud.entities.dto.GetMemberInfoByIdRequestDto;
import cn.freemud.entities.dto.GetMemberInfoByIdResponseDto;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.member.GetMemberIdsReq;
import cn.freemud.entities.dto.member.GetMemberIdsResp;
import com.freemud.application.sdk.api.base.BaseResponse;
......@@ -98,12 +95,12 @@ public interface CustomerClient {
// deleteReceiveAddressDto);
//
//
// /**
// * 查询收货地址详情
// */
// @PostMapping(value = "/customerservice/address/get")
// QueryReceiveAddressResponseDto queryReceiveAddressById(@RequestBody QueryReceiveAddressDto
// queryReceiveAddressDto);
/**
* 查询收货地址详情
*/
@PostMapping(value = "/customerservice/address/get")
QueryReceiveAddressResponseDto queryReceiveAddressById(@RequestBody QueryReceiveAddressDto
queryReceiveAddressDto);
/**
* 查询收货地址详情
......
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: CustomerExtendClient
* @Package cn.freemud.service.thirdparty
* @Description:
* @author: song.cai
* @date: 2019/2/20 16:42
* @version V1.0
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.vo.CheckDeliveryAddressReq;
import cn.freemud.entities.vo.CheckDeliveryAddressResp;
import cn.freemud.interceptor.FormSupportConfig;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(name = "TAKEAWAY-SERVICE", url = "${saas.takeawayclient.feign.url:}",fallback = TakeawayServiceClientFallback.class,configuration = FormSupportConfig.class)
public interface TakeawayServiceClient {
/**
* 查询门店是否开通第三方配送,是否超配送范围
*/
@PostMapping(value = "/delivery/checkDeliveryAddress",produces = {"application/json;charset=UTF-8"})
@LogIgnoreFeign(logMessage = "/delivery/checkDeliveryAddress",excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},messageFieldName=ResponseCodeKeyConstant.MSG)
CheckDeliveryAddressResp checkDeliveryAddress(@RequestBody CheckDeliveryAddressReq checkDeliveryAddressReq);
}
package cn.freemud.service.thirdparty;
import cn.freemud.entities.vo.CheckDeliveryAddressReq;
import cn.freemud.entities.vo.CheckDeliveryAddressResp;
import org.springframework.stereotype.Component;
//@IgnoreFeignLogAnnotation
@Component
public class TakeawayServiceClientFallback implements TakeawayServiceClient {
/**
* 查询配送超过4秒熔断,返回错误码,直接返回前端
* @param checkDeliveryAddressReq
* @return
*/
@Override
public CheckDeliveryAddressResp checkDeliveryAddress(CheckDeliveryAddressReq checkDeliveryAddressReq) {
CheckDeliveryAddressResp response = new CheckDeliveryAddressResp();
response.setCode("200");
return response;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment