顺丰轨迹查询处理

This commit is contained in:
taozi
2020-12-17 21:44:34 +08:00
committed by xuwenbo
parent 62ef709ca6
commit 8f3ebf0560
6 changed files with 60 additions and 8 deletions

View File

@ -93,4 +93,3 @@ file:
maxSize: 100
avatarMaxSize: 5

View File

@ -13,6 +13,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import co.yixiang.api.ApiResult;
import co.yixiang.api.YshopException;
import co.yixiang.enums.ShipperCodeEnum;
import co.yixiang.logging.aop.log.AppLog;
import co.yixiang.common.aop.NoRepeatSubmit;
import co.yixiang.common.bean.LocalUser;
@ -33,6 +34,7 @@ import co.yixiang.modules.order.param.ProductOrderParam;
import co.yixiang.modules.order.param.ProductReplyParam;
import co.yixiang.modules.order.param.RefundParam;
import co.yixiang.modules.order.service.YxStoreOrderService;
import co.yixiang.modules.order.service.dto.YxStoreOrderDto;
import co.yixiang.modules.order.vo.ComputeVo;
import co.yixiang.modules.order.vo.ConfirmOrderVo;
import co.yixiang.modules.order.vo.OrderCartInfoVo;
@ -384,9 +386,21 @@ public class StoreOrderController {
@PostMapping("/order/express")
@ApiOperation(value = "获取物流信息",notes = "获取物流信息")
public ApiResult<ExpressInfo> express( @RequestBody ExpressParam expressInfoDo){
//顺丰轨迹查询处理
String lastFourNumber = "";
if (expressInfoDo.getShipperCode().equals(ShipperCodeEnum.SF.getValue())) {
YxStoreOrderDto yxStoreOrderDto;
yxStoreOrderDto = storeOrderService.getOrderDetail(Long.valueOf(expressInfoDo.getOrderCode()));
lastFourNumber = yxStoreOrderDto.getUserPhone();
if (lastFourNumber.length()==11) {
lastFourNumber = StrUtil.sub(lastFourNumber,lastFourNumber.length(),-4);
}
}
ExpressService expressService = ExpressAutoConfiguration.expressService();
ExpressInfo expressInfo = expressService.getExpressInfo(expressInfoDo.getOrderCode(),
expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode());
expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode(),lastFourNumber);
if(!expressInfo.isSuccess()) {
throw new YshopException(expressInfo.getReason());
}

View File

@ -0,0 +1,18 @@
package co.yixiang.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author hupeng
* 快递公司编码相关枚举
*/
@Getter
@AllArgsConstructor
public enum ShipperCodeEnum {
SF("SF","顺丰速运");
private String value;
private String desc;
}

View File

@ -232,8 +232,9 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl<StoreProductMappe
@Override
public List<YxStoreProductQueryVo> getGoodsList(YxStoreProductQueryParam productQueryParam) {
LambdaQueryWrapper<YxStoreProduct> wrapper = new LambdaQueryWrapper<>();
LambdaQueryWrapper<YxStoreProduct> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(YxStoreProduct::getIsShow, CommonEnum.SHOW_STATUS_1.getValue());
wrapper.eq(YxStoreProduct::getIsDel, CommonEnum.DEL_STATUS_0.getValue());
//多字段模糊查询分类搜索
if (StrUtil.isNotBlank(productQueryParam.getSid()) &&

View File

@ -16,6 +16,7 @@ import co.yixiang.annotation.AnonymousAccess;
import co.yixiang.dozer.service.IGenerator;
import co.yixiang.enums.OrderInfoEnum;
import co.yixiang.enums.OrderLogEnum;
import co.yixiang.enums.ShipperCodeEnum;
import co.yixiang.enums.ShopCommonEnum;
import co.yixiang.exception.BadRequestException;
import co.yixiang.logging.aop.log.Log;
@ -317,9 +318,21 @@ public class StoreOrderController {
@PostMapping("/yxStoreOrder/express")
@ApiOperation(value = "获取物流信息",notes = "获取物流信息",response = ExpressParam.class)
public ResponseEntity express( @RequestBody ExpressParam expressInfoDo){
//顺丰轨迹查询处理
String lastFourNumber = "";
if (expressInfoDo.getShipperCode().equals(ShipperCodeEnum.SF.getValue())) {
YxStoreOrderDto yxStoreOrderDto;
yxStoreOrderDto = yxStoreOrderService.getOrderDetail(Long.valueOf(expressInfoDo.getOrderCode()));
lastFourNumber = yxStoreOrderDto.getUserPhone();
if (lastFourNumber.length()==11) {
lastFourNumber = StrUtil.sub(lastFourNumber,lastFourNumber.length(),-4);
}
}
ExpressService expressService = ExpressAutoConfiguration.expressService();
ExpressInfo expressInfo = expressService.getExpressInfo(expressInfoDo.getOrderCode(),
expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode());
expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode(),lastFourNumber);
if(!expressInfo.isSuccess()) {
throw new BadRequestException(expressInfo.getReason());
}

View File

@ -6,6 +6,7 @@
package co.yixiang.tools.express;
import cn.hutool.http.HttpUtil;
import co.yixiang.enums.ShipperCodeEnum;
import co.yixiang.tools.express.config.ExpressProperties;
import co.yixiang.tools.express.dao.ExpressInfo;
import com.fasterxml.jackson.databind.ObjectMapper;
@ -62,9 +63,9 @@ public class ExpressService implements Serializable {
* @param ShipperCode
* @return
*/
public ExpressInfo getExpressInfo(String OrderCode,String ShipperCode, String LogisticCode) {
public ExpressInfo getExpressInfo(String OrderCode,String ShipperCode, String LogisticCode,String lastFourNumber) {
try {
String result = getOrderTracesByJson(OrderCode,ShipperCode, LogisticCode);
String result = getOrderTracesByJson(OrderCode,ShipperCode, LogisticCode,lastFourNumber);
ObjectMapper objMap = new ObjectMapper();
ExpressInfo ei = objMap.readValue(result, ExpressInfo.class);
ei.setShipperName(getVendorName(ShipperCode));
@ -81,12 +82,18 @@ public class ExpressService implements Serializable {
*
* @throws Exception
*/
private String getOrderTracesByJson(String OrderCode,String ShipperCode, String LogisticCode) throws Exception {
private String getOrderTracesByJson(String OrderCode,String ShipperCode, String LogisticCode,String lastFourNumber) throws Exception {
if (!properties.isEnable()) {
return null;
}
String requestData = "{'OrderCode':'"+OrderCode+"','ShipperCode':'" + ShipperCode + "','LogisticCode':'" + LogisticCode + "'}";
//处理顺丰查询轨迹需手机号码后4位
String requestData;
if (ShipperCode.equals(ShipperCodeEnum.SF.getValue())) {
requestData = "{'OrderCode':'" + OrderCode + "','ShipperCode':'" + ShipperCode + "','LogisticCode':'" + LogisticCode + "','CustomerName':'" + lastFourNumber + "'}";
} else {
requestData = "{'OrderCode':'" + OrderCode + "','ShipperCode':'" + ShipperCode + "','LogisticCode':'" + LogisticCode + "'}";
}
Map<String, Object> params = new HashMap<>();
params.put("RequestData", URLEncoder.encode(requestData, "UTF-8"));