diff --git a/yshop-admin/src/main/resources/config/application-prod.yml b/yshop-admin/src/main/resources/config/application-prod.yml index 14d2f22c..ecd484f9 100644 --- a/yshop-admin/src/main/resources/config/application-prod.yml +++ b/yshop-admin/src/main/resources/config/application-prod.yml @@ -93,4 +93,3 @@ file: maxSize: 100 avatarMaxSize: 5 - diff --git a/yshop-app/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java b/yshop-app/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java index 9884b9d7..cca40639 100644 --- a/yshop-app/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java +++ b/yshop-app/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java @@ -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 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()); } diff --git a/yshop-common/src/main/java/co/yixiang/enums/ShipperCodeEnum.java b/yshop-common/src/main/java/co/yixiang/enums/ShipperCodeEnum.java new file mode 100644 index 00000000..3ad3631f --- /dev/null +++ b/yshop-common/src/main/java/co/yixiang/enums/ShipperCodeEnum.java @@ -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; +} diff --git a/yshop-mall/src/main/java/co/yixiang/modules/product/service/impl/YxStoreProductServiceImpl.java b/yshop-mall/src/main/java/co/yixiang/modules/product/service/impl/YxStoreProductServiceImpl.java index 8a0acdd2..db1d60e6 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/product/service/impl/YxStoreProductServiceImpl.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/product/service/impl/YxStoreProductServiceImpl.java @@ -232,8 +232,9 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl getGoodsList(YxStoreProductQueryParam productQueryParam) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + LambdaQueryWrapper 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()) && diff --git a/yshop-shop/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java b/yshop-shop/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java index d4de0df1..bdf00b29 100644 --- a/yshop-shop/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java +++ b/yshop-shop/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java @@ -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()); } diff --git a/yshop-tools/src/main/java/co/yixiang/tools/express/ExpressService.java b/yshop-tools/src/main/java/co/yixiang/tools/express/ExpressService.java index 3c84a1da..0b126352 100644 --- a/yshop-tools/src/main/java/co/yixiang/tools/express/ExpressService.java +++ b/yshop-tools/src/main/java/co/yixiang/tools/express/ExpressService.java @@ -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 params = new HashMap<>(); params.put("RequestData", URLEncoder.encode(requestData, "UTF-8"));