顺丰轨迹查询处理

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 maxSize: 100
avatarMaxSize: 5 avatarMaxSize: 5

View File

@ -13,6 +13,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import co.yixiang.api.ApiResult; import co.yixiang.api.ApiResult;
import co.yixiang.api.YshopException; import co.yixiang.api.YshopException;
import co.yixiang.enums.ShipperCodeEnum;
import co.yixiang.logging.aop.log.AppLog; import co.yixiang.logging.aop.log.AppLog;
import co.yixiang.common.aop.NoRepeatSubmit; import co.yixiang.common.aop.NoRepeatSubmit;
import co.yixiang.common.bean.LocalUser; 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.ProductReplyParam;
import co.yixiang.modules.order.param.RefundParam; import co.yixiang.modules.order.param.RefundParam;
import co.yixiang.modules.order.service.YxStoreOrderService; 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.ComputeVo;
import co.yixiang.modules.order.vo.ConfirmOrderVo; import co.yixiang.modules.order.vo.ConfirmOrderVo;
import co.yixiang.modules.order.vo.OrderCartInfoVo; import co.yixiang.modules.order.vo.OrderCartInfoVo;
@ -384,9 +386,21 @@ public class StoreOrderController {
@PostMapping("/order/express") @PostMapping("/order/express")
@ApiOperation(value = "获取物流信息",notes = "获取物流信息") @ApiOperation(value = "获取物流信息",notes = "获取物流信息")
public ApiResult<ExpressInfo> express( @RequestBody ExpressParam expressInfoDo){ 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(); ExpressService expressService = ExpressAutoConfiguration.expressService();
ExpressInfo expressInfo = expressService.getExpressInfo(expressInfoDo.getOrderCode(), ExpressInfo expressInfo = expressService.getExpressInfo(expressInfoDo.getOrderCode(),
expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode()); expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode(),lastFourNumber);
if(!expressInfo.isSuccess()) { if(!expressInfo.isSuccess()) {
throw new YshopException(expressInfo.getReason()); 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 @Override
public List<YxStoreProductQueryVo> getGoodsList(YxStoreProductQueryParam productQueryParam) { 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::getIsShow, CommonEnum.SHOW_STATUS_1.getValue());
wrapper.eq(YxStoreProduct::getIsDel, CommonEnum.DEL_STATUS_0.getValue());
//多字段模糊查询分类搜索 //多字段模糊查询分类搜索
if (StrUtil.isNotBlank(productQueryParam.getSid()) && 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.dozer.service.IGenerator;
import co.yixiang.enums.OrderInfoEnum; import co.yixiang.enums.OrderInfoEnum;
import co.yixiang.enums.OrderLogEnum; import co.yixiang.enums.OrderLogEnum;
import co.yixiang.enums.ShipperCodeEnum;
import co.yixiang.enums.ShopCommonEnum; import co.yixiang.enums.ShopCommonEnum;
import co.yixiang.exception.BadRequestException; import co.yixiang.exception.BadRequestException;
import co.yixiang.logging.aop.log.Log; import co.yixiang.logging.aop.log.Log;
@ -317,9 +318,21 @@ public class StoreOrderController {
@PostMapping("/yxStoreOrder/express") @PostMapping("/yxStoreOrder/express")
@ApiOperation(value = "获取物流信息",notes = "获取物流信息",response = ExpressParam.class) @ApiOperation(value = "获取物流信息",notes = "获取物流信息",response = ExpressParam.class)
public ResponseEntity express( @RequestBody ExpressParam expressInfoDo){ 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(); ExpressService expressService = ExpressAutoConfiguration.expressService();
ExpressInfo expressInfo = expressService.getExpressInfo(expressInfoDo.getOrderCode(), ExpressInfo expressInfo = expressService.getExpressInfo(expressInfoDo.getOrderCode(),
expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode()); expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode(),lastFourNumber);
if(!expressInfo.isSuccess()) { if(!expressInfo.isSuccess()) {
throw new BadRequestException(expressInfo.getReason()); throw new BadRequestException(expressInfo.getReason());
} }

View File

@ -6,6 +6,7 @@
package co.yixiang.tools.express; package co.yixiang.tools.express;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import co.yixiang.enums.ShipperCodeEnum;
import co.yixiang.tools.express.config.ExpressProperties; import co.yixiang.tools.express.config.ExpressProperties;
import co.yixiang.tools.express.dao.ExpressInfo; import co.yixiang.tools.express.dao.ExpressInfo;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
@ -62,9 +63,9 @@ public class ExpressService implements Serializable {
* @param ShipperCode * @param ShipperCode
* @return * @return
*/ */
public ExpressInfo getExpressInfo(String OrderCode,String ShipperCode, String LogisticCode) { public ExpressInfo getExpressInfo(String OrderCode,String ShipperCode, String LogisticCode,String lastFourNumber) {
try { try {
String result = getOrderTracesByJson(OrderCode,ShipperCode, LogisticCode); String result = getOrderTracesByJson(OrderCode,ShipperCode, LogisticCode,lastFourNumber);
ObjectMapper objMap = new ObjectMapper(); ObjectMapper objMap = new ObjectMapper();
ExpressInfo ei = objMap.readValue(result, ExpressInfo.class); ExpressInfo ei = objMap.readValue(result, ExpressInfo.class);
ei.setShipperName(getVendorName(ShipperCode)); ei.setShipperName(getVendorName(ShipperCode));
@ -81,12 +82,18 @@ public class ExpressService implements Serializable {
* *
* @throws Exception * @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()) { if (!properties.isEnable()) {
return null; 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<>(); Map<String, Object> params = new HashMap<>();
params.put("RequestData", URLEncoder.encode(requestData, "UTF-8")); params.put("RequestData", URLEncoder.encode(requestData, "UTF-8"));