Commit 43dc016a by 蒋小洋

野翠山结算校验配送

parent 6cf60c76
/**
* 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.dto;
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.dto;
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;
}
}
...@@ -109,6 +109,7 @@ public enum ResponseResult { ...@@ -109,6 +109,7 @@ public enum ResponseResult {
SHOPPING_CART_REPLACE_GOODS("44040", "原有购物车没有商品"), SHOPPING_CART_REPLACE_GOODS("44040", "原有购物车没有商品"),
SHOPPING_CART_REPLACE_GOODS_AND_CLEAR("44041", "因部分商品当前门店暂未售卖,将从购物车移除"), SHOPPING_CART_REPLACE_GOODS_AND_CLEAR("44041", "因部分商品当前门店暂未售卖,将从购物车移除"),
SHOPPING_CART_COUPON_MUTUAL_EXCLUSION("44042", "代金券和折扣券互斥"), SHOPPING_CART_COUPON_MUTUAL_EXCLUSION("44042", "代金券和折扣券互斥"),
SHOPPING_CART_IS_OVERDELIVERY_ERR("44111", "校验配送范围失败"),
/** /**
* 订单状态码 * 订单状态码
......
package cn.freemud.interceptor; package cn.freemud.interceptor;
import feign.Request;
import feign.codec.Encoder; import feign.codec.Encoder;
import feign.form.spring.SpringFormEncoder; import feign.form.spring.SpringFormEncoder;
import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans.factory.ObjectFactory;
...@@ -17,4 +18,10 @@ public class FormSupportConfig { ...@@ -17,4 +18,10 @@ public class FormSupportConfig {
public Encoder feignFormEncoder() { public Encoder feignFormEncoder() {
return new SpringFormEncoder(new SpringEncoder(messageConverters)); return new SpringFormEncoder(new SpringEncoder(messageConverters));
} }
@Bean
public Request.Options options() {
// 第一个参数是连接超时,第二个参数是读取超时,默认ms
return new Request.Options(1000, 4000);
}
} }
...@@ -221,6 +221,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -221,6 +221,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
private GetActivityMsgHandle getActivityMsgHandle; private GetActivityMsgHandle getActivityMsgHandle;
@Autowired @Autowired
private GiftCacheManager giftCacheManager; private GiftCacheManager giftCacheManager;
@Value("${ycs.partnerId:2690,2702,2664}")
private String ycsPartnerId;
@Autowired
private CustomerClient customerClient;
@Resource
private TakeawayServiceClient takeawayServiceClient;
/** /**
* 从微信卡券向购物车中添加商品 * 从微信卡券向购物车中添加商品
...@@ -664,6 +670,16 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -664,6 +670,16 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if (StringUtils.isEmpty(shoppingCartInfoRequestVo.getVersion())) { if (StringUtils.isEmpty(shoppingCartInfoRequestVo.getVersion())) {
shoppingCartInfoRequestVo.setVersion(""); shoppingCartInfoRequestVo.setVersion("");
} }
//Apollo配置野翠山商户,外卖订单地址是否超出美图等配送范围 -jxy
List<String> ycsList = Arrays.asList(ycsPartnerId.split(","));
boolean ycsPartner = ycsList.contains(shoppingCartInfoRequestVo.getPartnerId());
if(ycsPartner && BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(shoppingCartInfoRequestVo.getMenuType())
&& StringUtils.isNotEmpty(shoppingCartInfoRequestVo.getReceiveId())){
boolean isOverDelivery = checkYcsIsOverDelivery(shoppingCartInfoRequestVo.getReceiveId(),shoppingCartInfoRequestVo.getPartnerId(),shoppingCartInfoRequestVo.getShopId());
if(isOverDelivery){
throw new ServiceException(ResponseResult.SHOPPING_CART_IS_OVERDELIVERY_ERR);
}
}
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = new ShoppingCartGoodsResponseVo(); ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = new ShoppingCartGoodsResponseVo();
// 获取用户信息 // 获取用户信息
CustomerInfoVo assortmentCustomerInfoVo = getCustomerInfoVo(shoppingCartInfoRequestVo.getSessionId()); CustomerInfoVo assortmentCustomerInfoVo = getCustomerInfoVo(shoppingCartInfoRequestVo.getSessionId());
...@@ -3525,4 +3541,30 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -3525,4 +3541,30 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return fullReplace; return fullReplace;
} }
/**
* 校验野翠山是否超配送,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;
}
} }
///** /**
// * All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
// * *
// * @Title: CustomerExtendClient * @Title: CustomerExtendClient
// * @Package cn.freemud.service.thirdparty * @Package cn.freemud.service.thirdparty
// * @Description: * @Description:
// * @author: song.cai * @author: song.cai
// * @date: 2019/2/20 16:42 * @date: 2019/2/20 16:42
// * @version V1.0 * @version V1.0
// * @Copyright: 2019 www.freemud.cn Inc. All rights reserved. * @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
// * 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目 * 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
// */ */
//
//package cn.freemud.service.thirdparty; package cn.freemud.service.thirdparty;
//
//import cn.freemud.entities.dto.*; import cn.freemud.annotations.IgnoreFeignLogAnnotation;
//import com.alibaba.fastjson.JSONObject; import cn.freemud.constant.ResponseCodeConstant;
//import org.springframework.cloud.openfeign.FeignClient; import cn.freemud.entities.dto.QueryReceiveAddressDto;
//import org.springframework.web.bind.annotation.PostMapping; import cn.freemud.entities.dto.QueryReceiveAddressResponseDto;
//import org.springframework.web.bind.annotation.RequestBody; import org.springframework.cloud.openfeign.FeignClient;
//import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.PostMapping;
// import org.springframework.web.bind.annotation.RequestBody;
//@FeignClient(name = "CUSTOMER-SERVICE", url = "${saas.customerclient.feign.url}") import org.springframework.web.bind.annotation.RequestMapping;
//@RequestMapping(produces = {"application/json;charset=UTF-8"})
//public interface CustomerClient { @FeignClient(name = "CUSTOMER-SERVICE", url = "${saas.customerclient.feign.url:}")
// /** @RequestMapping(produces = {"application/json;charset=UTF-8"})
// * 根据聚道注册会员 public interface CustomerClient {
// */ /*
// @PostMapping(value = "/customerservice/registerByChannel") *//**
// MemberRegisterResponseDto registerByChannel(@RequestBody MemberRegisterRequestDto memberRegisterRequestDto); * 根据聚道注册会员
// *//*
// /** @PostMapping(value = "/customerservice/registerByChannel")
// * 根据渠道信息查询顾客信息 MemberRegisterResponseDto registerByChannel(@RequestBody MemberRegisterRequestDto memberRegisterRequestDto);
// */
// @PostMapping(value = "/customerservice/getMemberByChannel") *//**
// GetMemberInfoByChannelResponseDto getMemberInfoByChannel(@RequestBody GetMemberInfoByChannelRequestDto getMemberInfoByChannelRequestDto); * 根据渠道信息查询顾客信息
// *//*
// /** @PostMapping(value = "/customerservice/getMemberByChannel")
// * 修改unionid GetMemberInfoByChannelResponseDto getMemberInfoByChannel(@RequestBody GetMemberInfoByChannelRequestDto getMemberInfoByChannelRequestDto);
// */
// @PostMapping(value = "/customerservice/updateMemberChannel") *//**
// JSONObject updateUserUnionId(@RequestBody UpdateMemUnionIdRequestDto updateMemUnionIdRequestDto); * 修改unionid
// *//*
// /** @PostMapping(value = "/customerservice/updateMemberChannel")
// * 根据会员id获取会员信息 JSONObject updateUserUnionId(@RequestBody UpdateMemUnionIdRequestDto updateMemUnionIdRequestDto);
// */
// @PostMapping(value = "/customerservice/getMemberById") *//**
// GetMemberInfoByIdResponseDto getMemberInfoById(@RequestBody GetMemberInfoByIdRequestDto getMemberInfoByIdRequestDto); * 根据会员id获取会员信息
// *//*
// /** @PostMapping(value = "/customerservice/getMemberById")
// * 修改顾客信息 GetMemberInfoByIdResponseDto getMemberInfoById(@RequestBody GetMemberInfoByIdRequestDto getMemberInfoByIdRequestDto);
// */
// @PostMapping(value = "/customerservice/update") *//**
// JSONObject editMemberInfo(@RequestBody EditMemberInfoRequestDto editMemberInfoRequestDto); * 修改顾客信息
// *//*
// @PostMapping(value = "/customerservice/update")
// /** JSONObject editMemberInfo(@RequestBody EditMemberInfoRequestDto editMemberInfoRequestDto);
// * 获取用户收货地址列表
// */
// @PostMapping(value = "/customerservice/address/getAddressList") *//**
// GetReceiveAddressListResponseDto getReceiveAddressList(@RequestBody GetReceiveAddressListDto getReceiveListDto); * 获取用户收货地址列表
// *//*
// /** @PostMapping(value = "/customerservice/address/getAddressList")
// * 新增收货地址 GetReceiveAddressListResponseDto getReceiveAddressList(@RequestBody GetReceiveAddressListDto getReceiveListDto);
// */
// @PostMapping(value = "/customerservice/address/add") *//**
// AddReceiveAddressResponseDto addReceiveAddress(@RequestBody AddReceiveAddressDto addReceiveDto); * 新增收货地址
// *//*
// /** @PostMapping(value = "/customerservice/address/add")
// * 修改收货地址 AddReceiveAddressResponseDto addReceiveAddress(@RequestBody AddReceiveAddressDto addReceiveDto);
// */
// @PostMapping(value = "/customerservice/address/update") *//**
// UpdateReceiveAddressResponseDto updateReceiveAddress(@RequestBody UpdateReceiveAddressDto updateReceiveAddressDto); * 修改收货地址
// *//*
// /** @PostMapping(value = "/customerservice/address/update")
// * 删除收货地址 UpdateReceiveAddressResponseDto updateReceiveAddress(@RequestBody UpdateReceiveAddressDto updateReceiveAddressDto);
// */
// @PostMapping(value = "/customerservice/address/delete") *//**
// DeleteReceiveAddressResponseDto deleteReceiveAddress(@RequestBody DeleteReceiveAddressDto deleteReceiveAddressDto); * 删除收货地址
// *//*
// @PostMapping(value = "/customerservice/address/delete")
// /** DeleteReceiveAddressResponseDto deleteReceiveAddress(@RequestBody DeleteReceiveAddressDto deleteReceiveAddressDto);*/
// * 查询收货地址详情
// */
// @PostMapping(value = "/customerservice/address/get") /**
// QueryReceiveAddressResponseDto queryReceiveAddressById(@RequestBody QueryReceiveAddressDto queryReceiveAddressDto); * 查询收货地址详情
//} */
@PostMapping(value = "/customerservice/address/get")
@IgnoreFeignLogAnnotation(logMessage = "/customerservice/address/get",excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR})
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.IgnoreFeignLogAnnotation;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.dto.CheckDeliveryAddressReq;
import cn.freemud.entities.dto.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"})
@IgnoreFeignLogAnnotation(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.dto.CheckDeliveryAddressReq;
import cn.freemud.entities.dto.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