From 0a14a7c1ae38c48659e9b8bbd41c44abae66c039 Mon Sep 17 00:00:00 2001 From: zhuotianyuan Date: Tue, 27 Jan 2026 16:59:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(logistics):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=89=A9=E6=B5=81=E6=9C=8D=E5=8A=A1=E4=B8=AD=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=A4=84=E7=90=86=E5=92=8C=E5=BF=AB=E9=80=92=E5=85=AC?= =?UTF-8?q?=E5=8F=B8=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复freightwaves服务中的错误响应处理,增加错误码检查 添加courierCompany字段到物流DTO以支持不同快递公司 移除订单服务中注释掉的saveOrderSale调用 更新物流服务中使用courierCompany代替硬编码的shipCompany --- src/dto/logistics.dto.ts | 6 ++++++ src/service/freightwaves.service.ts | 14 +++++++++++++- src/service/logistics.service.ts | 7 +++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/dto/logistics.dto.ts b/src/dto/logistics.dto.ts index b49b72c..48841db 100644 --- a/src/dto/logistics.dto.ts +++ b/src/dto/logistics.dto.ts @@ -23,6 +23,10 @@ export class ShipmentBookDTO { @ApiProperty() @Rule(RuleType.string()) shipmentPlatform: string; + + @ApiProperty() + @Rule(RuleType.string()) + courierCompany: string; } export class ShipmentFeeBookDTO { @@ -30,6 +34,8 @@ export class ShipmentFeeBookDTO { @ApiProperty() shipmentPlatform: string; @ApiProperty() + courierCompany: string; + @ApiProperty() stockPointId: number; @ApiProperty() sender: string; diff --git a/src/service/freightwaves.service.ts b/src/service/freightwaves.service.ts index f2bbe0a..3c51bec 100644 --- a/src/service/freightwaves.service.ts +++ b/src/service/freightwaves.service.ts @@ -247,6 +247,9 @@ export class FreightwavesService { }; const response = await this.sendRequest('/shipService/order/rateTry', requestData); + if (response.code !== '00000200') { + throw new Error(response.msg); + } return response.data; } @@ -262,7 +265,10 @@ export class FreightwavesService { }; const response = await this.sendRequest('/shipService/order/createOrder', requestData); - return response; + if (response.code !== '00000200') { + throw new Error(response.msg); + } + return response.data; } /** @@ -295,6 +301,9 @@ export class FreightwavesService { }; const response = await this.sendRequest('/shipService/order/modifyOrder', requestData); + if (response.code !== '00000200') { + throw new Error(response.msg); + } return response.data; } @@ -309,6 +318,9 @@ export class FreightwavesService { partner: this.config.partner, }; const response = await this.sendRequest('/shipService/order/refundOrder', requestData); + if (response.code !== '00000200') { + throw new Error(response.msg); + } return response.data; } diff --git a/src/service/logistics.service.ts b/src/service/logistics.service.ts index 4e472be..cb6738c 100644 --- a/src/service/logistics.service.ts +++ b/src/service/logistics.service.ts @@ -733,7 +733,8 @@ export class LogisticsService { if (data.shipmentPlatform === 'freightwaves') { // 根据TMS系统对接说明文档格式化参数 const reqBody: any = { - shipCompany: 'UPSYYZ7000NEW', + // shipCompany: 'UPSYYZ7000NEW', + shipCompany: data.courierCompany || "", partnerOrderNumber: order.siteId + '-' + order.externalOrderId, warehouseId: '25072621030107400060', shipper: { @@ -798,6 +799,7 @@ export class LogisticsService { }; resShipmentOrder = await this.freightwavesService.createOrder(reqBody); // 创建订单 + //tms只返回了物流订单号,需要查询一次来获取完整的物流信息 const queryRes = await this.freightwavesService.queryOrder({ shipOrderId: resShipmentOrder.shipOrderId }); // 查询订单 resShipmentOrder.push(queryRes); @@ -826,7 +828,8 @@ export class LogisticsService { const address = shipments?.address; // 转换为RateTryRequest格式 const r = { - shipCompany: 'UPSYYZ7000NEW', // 必填,但ShipmentFeeBookDTO中缺少 + //shipCompany: 'UPSYYZ7000NEW', // 必填,但ShipmentFeeBookDTO中缺少 + shipCompany: data.courierCompany || "", partnerOrderNumber: `order-${Date.now()}`, // 必填,使用时间戳生成 warehouseId: '25072621030107400060', // 可选,使用stockPointId转换 shipper: { -- 2.40.1 From 1657b96694f18942f7b14c1f3a00dce29a8ed0f5 Mon Sep 17 00:00:00 2001 From: zhuotianyuan Date: Tue, 27 Jan 2026 19:26:11 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(logistics):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=89=A9=E6=B5=81=E8=AE=A2=E5=8D=95=E7=8A=B6=E6=80=81=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=92=8C=E7=BB=93=E6=9E=9C=E5=90=88=E5=B9=B6=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复 resShipmentOrder 状态检查时的可选链操作问题 修正 partnerOrderNumber 的拼接格式 调整查询结果合并方式,避免直接 push 操作 优化错误处理,使用 Error 对象抛出异常 --- src/service/logistics.service.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/service/logistics.service.ts b/src/service/logistics.service.ts index cb6738c..2a58e59 100644 --- a/src/service/logistics.service.ts +++ b/src/service/logistics.service.ts @@ -464,7 +464,7 @@ export class LogisticsService { } }; } catch (error) { - if (resShipmentOrder.status === 'SUCCESS') { + if (resShipmentOrder?.status === 'SUCCESS') { await this.uniExpressService.deleteShipment(resShipmentOrder.data.tno); } throw new Error(`上游请求错误:${error}`); @@ -735,7 +735,7 @@ export class LogisticsService { const reqBody: any = { // shipCompany: 'UPSYYZ7000NEW', shipCompany: data.courierCompany || "", - partnerOrderNumber: order.siteId + '-' + order.externalOrderId, + partnerOrderNumber: order.siteId + '-1-' + order.externalOrderId, warehouseId: '25072621030107400060', shipper: { name: data.details.origin.contact_name, // 姓名 @@ -802,13 +802,17 @@ export class LogisticsService { //tms只返回了物流订单号,需要查询一次来获取完整的物流信息 const queryRes = await this.freightwavesService.queryOrder({ shipOrderId: resShipmentOrder.shipOrderId }); // 查询订单 - resShipmentOrder.push(queryRes); + return { + ...resShipmentOrder, + ...queryRes + } } return resShipmentOrder; } catch (error) { - console.log('物流订单处理失败:', error); // 使用console.log代替this.log - throw error; + // 处理错误,例如记录日志或抛出异常 + throw new Error(`物流订单处理失败: ${error}`); + } } -- 2.40.1