Commit 7a953aa0 by 周晓航

新对接门店 获取配送费

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent 5318ced4
package cn.freemud.entities.dto.store;
import lombok.Builder;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/6/4 下午1:53
* @description :
*/
@Data
@Builder
public class GetEstimateDeliveryRequest extends StoreInfoRequestDto {
/**
* 用户收货地址维度
*/
private String latitude;
/**
* 用户收货地址经度
*/
private String longitude;
}
package cn.freemud.entities.dto.store;
import lombok.Builder;
import lombok.Data;
import java.util.Date;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/6/4 下午3:42
* @description :
*/
@Data
@Builder
public class QueryDeliverDetailResponse {
/**
* 预计送达时间
*/
private Date expectArriveTime;
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: StoreBaseResponseDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: ping.wu
* @date: 2018/5/28 19:13
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.entities.dto.store;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class StoreBaseResponseDto<T> {
Integer statusCode;
String msg;
T bizVO;
}
package cn.freemud.entities.dto.store;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/6/16 上午9:57
* @description :
*/
@Data
public class StoreCBaseResponse<T> {
private String code;
private String message;
private T result;
private String ver;
}
package cn.freemud.entities.dto.store;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/6/17 上午11:36
* @description :
*/
@Data
public class StoreCBaseResponseDto {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date expectArriveTime;
/**
* 新配送费
*/
private Long deliveryAmount;
/**
* 配送费为零的原因:0:正常,1:超出配送范围
*/
private Integer deliveryFeeZeroReason;
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: StoreInfoRequestDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: ping.wu
* @date: 2018/5/14 16:42
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.entities.dto.store;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class StoreInfoRequestDto {
private String partnerId;
private String storeCode;
public StoreInfoRequestDto(String partnerId, String storeCode) {
this.partnerId = partnerId;
this.storeCode = storeCode;
}
}
...@@ -63,6 +63,7 @@ public enum ResponseResult { ...@@ -63,6 +63,7 @@ public enum ResponseResult {
//麦咖啡专用提示 //麦咖啡专用提示
CART_STORE_CLOSE("43014","您选择的【$storeName】门店已关闭,请选择其他门店。"), CART_STORE_CLOSE("43014","您选择的【$storeName】门店已关闭,请选择其他门店。"),
CART_STORE_REST("43015","您选择的【$storeName】门店已打烊,请选择其他门店。"), CART_STORE_REST("43015","您选择的【$storeName】门店已打烊,请选择其他门店。"),
STORE_QUERYEXPECTARRIVETIME("43016", "获取门店计算预计送达时间失败"),
/** /**
* 购物车状态码 * 购物车状态码
......
...@@ -13,10 +13,15 @@ ...@@ -13,10 +13,15 @@
package cn.freemud.service.delivery.impl; package cn.freemud.service.delivery.impl;
import cn.freemud.entities.dto.store.GetEstimateDeliveryRequest;
import cn.freemud.entities.dto.store.StoreCBaseResponse;
import cn.freemud.entities.dto.store.StoreCBaseResponseDto;
import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo; import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.delivery.DeliveryService; import cn.freemud.service.delivery.DeliveryService;
import cn.freemud.service.store.StoreBaseApiClient;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest; import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse; import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
...@@ -28,6 +33,8 @@ import org.apache.commons.lang.StringUtils; ...@@ -28,6 +33,8 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Objects;
@Service("gradDeliveryService") @Service("gradDeliveryService")
public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl implements DeliveryService { public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl implements DeliveryService {
...@@ -37,6 +44,9 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme ...@@ -37,6 +44,9 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme
@Autowired @Autowired
private StoreCenterService storeCenterService; private StoreCenterService storeCenterService;
@Autowired
private StoreBaseApiClient storeBaseApiClient;
@Override @Override
public Long calculateDeliveryAmount(String receiveId, String partnerId, String storeId, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) { public Long calculateDeliveryAmount(String receiveId, String partnerId, String storeId, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) {
...@@ -48,23 +58,34 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme ...@@ -48,23 +58,34 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme
if (!ResponseResult.SUCCESS.getCode().equals(queryReceiveAddressResponse.getCode()) || queryReceiveAddressResponse.getData() == null) { if (!ResponseResult.SUCCESS.getCode().equals(queryReceiveAddressResponse.getCode()) || queryReceiveAddressResponse.getData() == null) {
throw new ServiceException(ResponseResult.USER_GETRECEIVEADDRESS_ERROR); throw new ServiceException(ResponseResult.USER_GETRECEIVEADDRESS_ERROR);
} }
// fisherman 新配送费计算 调用门店接口
// 查询运费详情 StoreCBaseResponseDto deliveryDataMsg = getDeliveryDataMsg(queryReceiveAddressResponse.getData().getLatitude(),
QueryDeliveryRequest queryDeliveryRequest = new QueryDeliveryRequest(); queryReceiveAddressResponse.getData().getLongitude(),
queryDeliveryRequest.setPartnerId(partnerId); partnerId,
queryDeliveryRequest.setStoreCode(storeId); storeId);
queryDeliveryRequest.setUserLatitude(queryReceiveAddressResponse.getData().getLatitude()); if (Objects.isNull(deliveryDataMsg.getDeliveryAmount())) {
queryDeliveryRequest.setUserLongitude(queryReceiveAddressResponse.getData().getLongitude());
com.freemud.application.sdk.api.base.BaseResponse<QueryDeliverDetailResponse> queryDeliverDetailResponse = storeCenterService.queryDeliverDetail(queryDeliveryRequest, trackingNo);
if (queryDeliverDetailResponse == null || !ResponseResult.SUCCESS.getCode().equals(queryDeliverDetailResponse.getCode()) || queryDeliverDetailResponse.getData() == null) {
throw new ServiceException(ResponseResult.STORE_ITEM_NOT_DELIVERY);
}
if(queryDeliverDetailResponse.getData().getDeliveryAmount() == null) {
throw new ServiceException(ResponseResult.STORE_DELIVERY_AMOUNT_ERROR); throw new ServiceException(ResponseResult.STORE_DELIVERY_AMOUNT_ERROR);
} }
shoppingCartGoodsResponseVo.setDeliveryFeeZeroReason(queryDeliverDetailResponse.getData().getDeliveryFeeZeroReason() != null ? queryDeliverDetailResponse.getData().getDeliveryFeeZeroReason() : 0);
return queryDeliverDetailResponse.getData().getDeliveryAmount(); shoppingCartGoodsResponseVo.setDeliveryFeeZeroReason(deliveryDataMsg.getDeliveryFeeZeroReason() != null ? deliveryDataMsg.getDeliveryFeeZeroReason() : 0);
return deliveryDataMsg.getDeliveryAmount();
// // 查询运费详情
// QueryDeliveryRequest queryDeliveryRequest = new QueryDeliveryRequest();
// queryDeliveryRequest.setPartnerId(partnerId);
// queryDeliveryRequest.setStoreCode(storeId);
// queryDeliveryRequest.setUserLatitude(queryReceiveAddressResponse.getData().getLatitude());
// queryDeliveryRequest.setUserLongitude(queryReceiveAddressResponse.getData().getLongitude());
// com.freemud.application.sdk.api.base.BaseResponse<QueryDeliverDetailResponse> queryDeliverDetailResponse = storeCenterService.queryDeliverDetail(queryDeliveryRequest, trackingNo);
// if (queryDeliverDetailResponse == null || !ResponseResult.SUCCESS.getCode().equals(queryDeliverDetailResponse.getCode()) || queryDeliverDetailResponse.getData() == null) {
// throw new ServiceException(ResponseResult.STORE_ITEM_NOT_DELIVERY);
// }
// if(queryDeliverDetailResponse.getData().getDeliveryAmount() == null) {
// throw new ServiceException(ResponseResult.STORE_DELIVERY_AMOUNT_ERROR);
// }
// shoppingCartGoodsResponseVo.setDeliveryFeeZeroReason(queryDeliverDetailResponse.getData().getDeliveryFeeZeroReason() != null ? queryDeliverDetailResponse.getData().getDeliveryFeeZeroReason() : 0);
//
// return queryDeliverDetailResponse.getData().getDeliveryAmount();
} }
@Override @Override
...@@ -95,5 +116,39 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme ...@@ -95,5 +116,39 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme
return queryDeliverDetailResponse.getData().getDeliveryAmount(); return queryDeliverDetailResponse.getData().getDeliveryAmount();
} }
/**
* 获取 配送费 及预计送达时间接口
* @param userLat 用户纬度
* @param userLong 用户经度
* @param partnerId 商户号
* @param storeCode 门店号
* @return
*/
private StoreCBaseResponseDto getDeliveryDataMsg(String userLat,
String userLong,
String partnerId,
String storeCode) {
boolean check = StringUtils.isEmpty(userLat) ||
StringUtils.isEmpty(userLong) ||
StringUtils.isEmpty(partnerId) ||
StringUtils.isEmpty(storeCode);
if (check) {
throw new ServiceException(ResponseResult.PARAMETER_MISSING);
}
// 调用门店接口 获取时间 Fisherman
GetEstimateDeliveryRequest request = GetEstimateDeliveryRequest.builder().latitude(userLat).longitude(userLong).build();
request.setPartnerId(partnerId);
request.setStoreCode(storeCode);
StoreCBaseResponse<StoreCBaseResponseDto> responseDto = storeBaseApiClient.queryDeliverDetail(request);
ApiLog.info("fisherman 获取门店预计送达时间",request,responseDto);
if (responseDto == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR);
}
if(!ResponseResult.SUCCESS.getCode().equals(responseDto.getCode()) || responseDto.getResult() == null){
throw new ServiceException(ResponseResult.STORE_QUERYEXPECTARRIVETIME);
}
return responseDto.getResult();
}
} }
package cn.freemud.service.store;
import cn.freemud.entities.dto.store.StoreCBaseResponse;
import cn.freemud.entities.dto.store.StoreCBaseResponseDto;
import cn.freemud.entities.dto.store.StoreInfoRequestDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/6/4 下午2:04
* @description : 门店基础服务
*/
@FeignClient(name = "store-menu-application-service")
@RequestMapping(value = "/store", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public interface StoreBaseApiClient {
@PostMapping(value = "/delivery/calcDeliveryData")
StoreCBaseResponse<StoreCBaseResponseDto> queryDeliverDetail(@RequestBody StoreInfoRequestDto request);
}
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