Browse Source

fix(payment): 优化物流快递公司匹配逻辑

- 当无法通过 delivery_name 找到物流公司时,尝试从历史支付记录中查找
- 增加 express_company 字段回填逻辑,提升数据完整性
- 完善日志记录,包含 transaction_id 和 express_company_name 便于追踪
- 保留原有 delivery_name 匹配逻辑,确保兼容性
- 调整代码结构,提高可读性和维护性
runphp 4 months ago
parent
commit
449b5bb6ee
1 changed files with 20 additions and 5 deletions
  1. 20 5
      src/Service/PaymentRecordService.php

+ 20 - 5
src/Service/PaymentRecordService.php

@@ -109,12 +109,27 @@ class PaymentRecordService
             if ($wechatPayment->express_company == null) {
                 $delivery = WechatDeliveryEntity::where(['delivery_name' => $order['express_name']])->findOrEmpty();
                 if ($delivery->isEmpty()) {
-                    Log::warning('未找到物流公司{transaction_id}', ['transaction_id' => $wechatPayment->wechat_transaction_id]);
-                    return;
+                    // 未找到从历史记录查找
+                    $wechatPayment->express_company_name = $order['express_name'];
+                    $successPayment = LakalaWechatPaymentModel::where('express_company_name', $order['express_name'])
+                        ->whereNotNull('express_company')
+                        ->findOrEmpty();
+                    if (!$successPayment->isEmpty()) {
+                        $wechatPayment->express_company = $successPayment->express_company;
+                    }
+                    $wechatPayment->save();
+                    if ($successPayment->isEmpty()) {
+                        Log::warning('未找到物流公司 {transaction_id} {express_company_name}', [
+                            'transaction_id' => $wechatPayment->wechat_transaction_id,
+                            'express_company_name' => $order['express_name'],
+                        ]);
+                        return;
+                    }
+                } else {
+                    $wechatPayment->express_company = $delivery['delivery_id'];
+                    $wechatPayment->express_company_name = $delivery['delivery_name'];
+                    $wechatPayment->save();
                 }
-                $wechatPayment->express_company = $delivery['delivery_id'];
-                $wechatPayment->express_company_name = $delivery['delivery_name'];
-                $wechatPayment->save();
             }
             try {
                 $this->expressService->uploadShippingInfo(