From e33105b693e33d4bc5b4b7d756c5e6bec3db3812 Mon Sep 17 00:00:00 2001 From: huliyong <2783385703@qq.com> Date: Mon, 14 Jul 2025 13:00:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E5=BE=B7=E9=82=A6=E7=89=A9?= =?UTF-8?q?=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/AppletOrderController.java | 7 +++ .../org/jeecg/api/service/AppletOrderService.java | 2 + .../api/service/impl/AppletOrderServiceImpl.java | 64 +++++++++++++++++++--- .../org/jeecg/api/service/impl/LogisticsUtil.java | 18 +++++- .../dblogistics/config/DBLogisticsConfig.java | 9 +-- .../controller/LogisticsTestController.java | 11 ++++ .../dblogistics/dto/OrderStatusPushRequest.java | 12 ++++ .../modules/commonOrder/entity/CommonOrder.java | 8 +-- .../src/main/resources/application-dev.yml | 22 ++++---- 9 files changed, 120 insertions(+), 33 deletions(-) create mode 100644 module-common/src/main/java/org/jeecg/common/dblogistics/dto/OrderStatusPushRequest.java diff --git a/module-common/src/main/java/org/jeecg/api/controller/AppletOrderController.java b/module-common/src/main/java/org/jeecg/api/controller/AppletOrderController.java index 67fc2e0..53b5478 100644 --- a/module-common/src/main/java/org/jeecg/api/controller/AppletOrderController.java +++ b/module-common/src/main/java/org/jeecg/api/controller/AppletOrderController.java @@ -94,4 +94,11 @@ public class AppletOrderController { return appletOrderService.track(request); } + //接收物流状态推送 + @PostMapping(value = "/wuliu_status") + public Object wuliu_status(String params){ + return appletOrderService.wuliuStatus(params); + } + + } diff --git a/module-common/src/main/java/org/jeecg/api/service/AppletOrderService.java b/module-common/src/main/java/org/jeecg/api/service/AppletOrderService.java index 81158d9..618faf2 100644 --- a/module-common/src/main/java/org/jeecg/api/service/AppletOrderService.java +++ b/module-common/src/main/java/org/jeecg/api/service/AppletOrderService.java @@ -29,4 +29,6 @@ public interface AppletOrderService { Result getCeckoutReasons(String token, String classId, String type); Object track(LogisticsTrackPushRequest request); + + Object wuliuStatus(String params); } diff --git a/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderServiceImpl.java b/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderServiceImpl.java index 6a8e3da..2f7901d 100644 --- a/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderServiceImpl.java +++ b/module-common/src/main/java/org/jeecg/api/service/impl/AppletOrderServiceImpl.java @@ -10,6 +10,7 @@ import org.jeecg.api.bean.PageBean; import org.jeecg.api.service.AppletOrderService; import org.jeecg.common.api.vo.Result; import org.jeecg.common.dblogistics.dto.LogisticsTrackPushRequest; +import org.jeecg.common.dblogistics.dto.OrderStatusPushRequest; import org.jeecg.config.shiro.ShiroRealm; import org.jeecg.modules.commonAddress.entity.CommonAddress; import org.jeecg.modules.commonAddress.service.ICommonAddressService; @@ -110,13 +111,9 @@ public class AppletOrderServiceImpl implements AppletOrderService { //得到集合数据 for (CommonOrder commonOrder : pageList.getRecords()) { - //查询下级 - List children = commonOrderService - .lambdaQuery() - .eq(CommonOrder::getPid,commonOrder.getId()) - .list(); - commonOrder.setCommonOrderList(children); - + commonOrder.setCommonOrderList(getCommonOrderList(commonOrder.getId(), 0)); + + // 设置物流轨迹状态 setLogisticsTrajectoryStatus(commonOrder); } @@ -490,6 +487,38 @@ public class AppletOrderServiceImpl implements AppletOrderService { return map; } + @Override + public Object wuliuStatus(String params) { + HashMap map = new HashMap<>(); + map.put("success", true); + map.put("result", "true"); + map.put("error_msg", null); + map.put("error_code", null); + map.put("logisticCompanyID", "DEPPON"); + + OrderStatusPushRequest request = JSON.parseObject(params, OrderStatusPushRequest.class); + map.put("logisticID", request.getLogisticID()); + + CommonOrder one = commonOrderService.lambdaQuery() + .eq(CommonOrder::getLogisticId, request.getLogisticID()) + .one(); + + if (one == null){ + return map; + } + + if ("RECEIPTING".equals(request.getStatusType())){//送货中 + //拿到快递员手机号 + String phoneNumber = extractPhoneNumber(request.getComments()); + if (StringUtils.isNotBlank(phoneNumber)){ + one.setDeliveryPhone(phoneNumber); + commonOrderService.updateById(one); + } + } + + return map; + } + /** * 计算地址是否包邮 * @param address 收货地址对象 @@ -546,6 +575,27 @@ public class AppletOrderServiceImpl implements AppletOrderService { } } + /** + * 使用正则表达式提取手机号 + * @param text 包含手机号的文本 + * @return 提取到的手机号,如果没有找到则返回空字符串 + */ + private String extractPhoneNumber(String text) { + if (StringUtils.isBlank(text)) { + return ""; + } + + // 匹配11位手机号的正则表达式 + java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("1[3-9]\\d{9}"); + java.util.regex.Matcher matcher = pattern.matcher(text); + + if (matcher.find()) { + return matcher.group(); + } + + return ""; + } + /** * 根据运单号更新订单状态 * @param trackingNumber 运单号 diff --git a/module-common/src/main/java/org/jeecg/api/service/impl/LogisticsUtil.java b/module-common/src/main/java/org/jeecg/api/service/impl/LogisticsUtil.java index 2d40bfc..380448c 100644 --- a/module-common/src/main/java/org/jeecg/api/service/impl/LogisticsUtil.java +++ b/module-common/src/main/java/org/jeecg/api/service/impl/LogisticsUtil.java @@ -12,13 +12,16 @@ import org.jeecg.common.logistics.service.WeChatLogisticsService; import org.jeecg.common.logistics.util.WeChatLogisticsRequestBuilder; import org.jeecg.modules.commonConfig.service.ICommonConfigService; import org.jeecg.modules.commonOrder.entity.CommonOrder; +import org.jeecg.modules.commonOrder.service.ICommonOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.ArrayList; +import java.util.List; import java.util.UUID; +import java.util.stream.Collectors; @Slf4j @Component @@ -36,6 +39,8 @@ public class LogisticsUtil { private WeChatLogisticsService weChatLogisticsService; @Autowired private ICommonConfigService commonConfigService; + @Autowired + private ICommonOrderService orderService; public LogisticsUtil() { // 默认构造函数 @@ -82,6 +87,15 @@ public class LogisticsUtil { try { ArrayList address = getAddress(order.getAddress()); + List titles = orderService + .lambdaQuery() + .eq(CommonOrder::getType, 0) + .eq(CommonOrder::getPid, order.getId()) + .select(CommonOrder::getTitle) + .list().stream().map(n -> n.getTitle()) + .collect(Collectors.toList()); + + DopOrder dto = new DopOrder(); dto.setCustOrderNo(order.getId()); // 客户订单号 @@ -90,10 +104,10 @@ public class LogisticsUtil { // 创建包裹信息 DopPackageInfo packageInfo = new DopPackageInfo(); - packageInfo.setCargoName("货物名"); + packageInfo.setCargoName(String.join(",", titles)); packageInfo.setDeliveryType("4"); packageInfo.setTotalNumber(1); - packageInfo.setTotalVolume(0.01); + packageInfo.setTotalVolume(1); packageInfo.setTotalWeight(10); packageInfo.setPackageService("纸"); dto.setPackageInfo(packageInfo); diff --git a/module-common/src/main/java/org/jeecg/common/dblogistics/config/DBLogisticsConfig.java b/module-common/src/main/java/org/jeecg/common/dblogistics/config/DBLogisticsConfig.java index cf266bc..4ff936e 100644 --- a/module-common/src/main/java/org/jeecg/common/dblogistics/config/DBLogisticsConfig.java +++ b/module-common/src/main/java/org/jeecg/common/dblogistics/config/DBLogisticsConfig.java @@ -67,10 +67,6 @@ public class DBLogisticsConfig { */ @Data public static class Api { - /** - * 基础URL - */ - private String baseUrl; /** * 创建订单接口 @@ -116,9 +112,6 @@ public class DBLogisticsConfig { * @return 完整的API URL */ public String getApiUrl(String apiPath) { - if (api != null && api.getBaseUrl() != null) { - return api.getBaseUrl() + apiPath; - } - return getCurrentApiUrl() + apiPath; + return apiPath; } } \ No newline at end of file diff --git a/module-common/src/main/java/org/jeecg/common/dblogistics/controller/LogisticsTestController.java b/module-common/src/main/java/org/jeecg/common/dblogistics/controller/LogisticsTestController.java index e8cf3f6..d6a62d0 100644 --- a/module-common/src/main/java/org/jeecg/common/dblogistics/controller/LogisticsTestController.java +++ b/module-common/src/main/java/org/jeecg/common/dblogistics/controller/LogisticsTestController.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.jeecg.api.service.impl.LogisticsUtil; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.dblogistics.dto.TraceSubscribeRequest; import org.jeecg.common.dblogistics.service.DBLogisticsService; import org.jeecg.common.logistics.dto.*; import org.jeecg.common.logistics.service.WeChatLogisticsService; @@ -55,4 +56,14 @@ public class LogisticsTestController { return Result.ok(); } + /** + * 测试所有方法 + */ + @ApiOperation(value = "测试所有方法", notes = "使用测试环境数据测试生成微信物流运单 - 仅限测试用途,每天限制10次") + @PostMapping("/test") + public Result test() { + logisticsService.subscribeTrace(new TraceSubscribeRequest("DPK6581308106394")); + return Result.ok(); + } + } \ No newline at end of file diff --git a/module-common/src/main/java/org/jeecg/common/dblogistics/dto/OrderStatusPushRequest.java b/module-common/src/main/java/org/jeecg/common/dblogistics/dto/OrderStatusPushRequest.java new file mode 100644 index 0000000..b39e5d4 --- /dev/null +++ b/module-common/src/main/java/org/jeecg/common/dblogistics/dto/OrderStatusPushRequest.java @@ -0,0 +1,12 @@ +package org.jeecg.common.dblogistics.dto; + +import lombok.Data; + +@Data +public class OrderStatusPushRequest { + + private String comments;//描述 + private String statusType;//状态 RECEIPTING是拿到快递员电话的时候 + private String logisticID;//物流id + +} diff --git a/module-common/src/main/java/org/jeecg/modules/commonOrder/entity/CommonOrder.java b/module-common/src/main/java/org/jeecg/modules/commonOrder/entity/CommonOrder.java index 850d1c3..818cf9d 100644 --- a/module-common/src/main/java/org/jeecg/modules/commonOrder/entity/CommonOrder.java +++ b/module-common/src/main/java/org/jeecg/modules/commonOrder/entity/CommonOrder.java @@ -88,7 +88,7 @@ public class CommonOrder implements Serializable { /**订单标题*/ @Excel(name = "订单标题", width = 15) @ApiModelProperty(value = "订单标题") - private java.lang.String title; + private java.lang.String title;//商品名称 /**客户姓名*/ @Excel(name = "客户姓名", width = 15) @ApiModelProperty(value = "客户姓名") @@ -198,9 +198,9 @@ public class CommonOrder implements Serializable { @Dict(dictTable = "common_vip", dicCode = "id", dicText = "name") private java.lang.String pinId; -// @Excel(name = "快递员电话", width = 15) -// @ApiModelProperty(value = "快递员电话") -// private String deliveryPhone; + @Excel(name = "快递员电话", width = 15) + @ApiModelProperty(value = "快递员电话") + private String deliveryPhone; @Excel(name = "合格数量", width = 15) @ApiModelProperty(value = "合格数量") diff --git a/module-system/src/main/resources/application-dev.yml b/module-system/src/main/resources/application-dev.yml index fad2ce6..c3916ff 100644 --- a/module-system/src/main/resources/application-dev.yml +++ b/module-system/src/main/resources/application-dev.yml @@ -335,10 +335,10 @@ wechat: mpAppId: wx2bd656ae9704dbee # 微信小程序appid mpAppSecret: b07f82b16e9598bc23de604f49c57e23 # 微信小程序密钥 merchantId: 1701841654 # 商户号 - privateKeyPath: module-system/src/main/resources/apiclient_key.pem #本地私钥路径 - publicKeyPath: module-system/src/main/resources/pub_key.pem #本地公钥路径 -# privateKeyPath: /data/app-test/hly/cerFile/apiclient_key.pem #线上私钥路径 -# publicKeyPath: /data/app-test/hly/cerFile/pub_key.pem #线上公钥路径 +# privateKeyPath: module-system/src/main/resources/apiclient_key.pem #本地私钥路径 +# publicKeyPath: module-system/src/main/resources/pub_key.pem #本地公钥路径 + privateKeyPath: /data/app-test/hly/cerFile/apiclient_key.pem #线上私钥路径 + publicKeyPath: /data/app-test/hly/cerFile/pub_key.pem #线上公钥路径 publicKeyId: PUB_KEY_ID_0117018416542025022100395100001649 #公钥 merchantSerialNumber: 525971050851A99F315A970D3055192779652E03 # 商户API证书序列号 apiV3Key: # 商户APIV3密钥 @@ -353,20 +353,18 @@ dblogistics: sign: ZRNR customerCode: 1102311359 api: - # 德邦物流API接口地址配置 - baseUrl: http://dpsanbox.deppon.com/sandbox-web # 创建订单接口 - createOrder: /dop-standard-ewborder/createOrderNotify.action + createOrder: http://dpsanbox.deppon.com/sandbox-web/dop-standard-ewborder/createOrderNotify.action # 轨迹查询接口 - queryTrace: /standard-order/newTraceQuery.action + queryTrace: http://dpsanbox.deppon.com/sandbox-web/standard-order/newTraceQuery.action # 修改订单接口 - updateOrder: /standard-order/updateOrder.action + updateOrder: http://dpsanbox.deppon.com/sandbox-web/standard-order/updateOrder.action # 撤销订单接口 - cancelOrder: /standard-order/cancelOrder.action + cancelOrder: http://dpsanbox.deppon.com/sandbox-web/standard-order/cancelOrder.action # 查询订单接口 - queryOrder: /standard-order/queryOrder.action + queryOrder: http://dpsanbox.deppon.com/sandbox-web/standard-order/queryOrder.action # 轨迹订阅接口 - subscribeTrace: /standard-order/standTraceSubscribe.action + subscribeTrace: http://dpsanbox.deppon.com/sandbox-web/standard-order/standTraceSubscribe.action # 客户编号 1102311359