Преглед изворни кода

fix(AlibabaAgent): 修复退款退货原因列表格式化逻辑

- 简化了数据解析逻辑,直接从 result.result.reasons 路径获取数据
- 修正了字段映射,将 reasonId 和 reasonText 改为 id 和 name
- 移除了冗余的嵌套结构处理和不必要的 refundList 包装
- 更新了返回数据结构,只返回实际的原因列表数组
- 添加了详细的返回数据结构注释说明
shichen пре 2 месеци
родитељ
комит
3cd0417408
1 измењених фајлова са 19 додато и 25 уклоњено
  1. 19 25
      app/services/ThirdParty/AlibabaAgent/OrderService.php

+ 19 - 25
app/services/ThirdParty/AlibabaAgent/OrderService.php

@@ -583,39 +583,33 @@ class OrderService extends AlibabaAgentBaseService
583 583
     /**
584 584
      * 格式化退款退货原因列表返回结果
585 585
      *
586
+     * 实际返回数据结构:
587
+     * {
588
+     *   "result": {
589
+     *     "result": {
590
+     *       "reasons": [
591
+     *         {"id": 20006, "name": "不想买了", "needVoucher": false, "noRefundCarriage": false, "tip": ""}
592
+     *       ]
593
+     *     },
594
+     *     "success": true
595
+     *   }
596
+     * }
597
+     *
586 598
      * @param array $result API原始返回数据
587 599
      * @return array
588 600
      */
589 601
     protected function formatRefundReasonListResult(array $result): array
590 602
     {
591
-        $success = $result['success'] ?? false;
592
-        $refundList = [];
593
-
594
-        if (isset($result['result']) && is_array($result['result'])) {
595
-            foreach ($result['result'] as $item) {
596
-                $reasons = [];
597
-                if (isset($item['refundReasonList']) && is_array($item['refundReasonList'])) {
598
-                    foreach ($item['refundReasonList'] as $reason) {
599
-                        $reasons[] = [
600
-                            'reasonId'   => $reason['reasonId'] ?? '',
601
-                            'reasonText' => $reason['reasonText'] ?? '',
602
-                        ];
603
-                    }
604
-                }
605
-
606
-                $refundList[] = [
607
-                    'refundId'         => $item['refundId'] ?? '',
608
-                    'refundType'       => $item['refundType'] ?? '',
609
-                    'refundStatus'     => $item['refundStatus'] ?? '',
610
-                    'refundReasonList' => $reasons,
603
+        $reasons = [];
604
+        if (isset($result['result']['result']['reasons']) && is_array($result['result']['result']['reasons'])) {
605
+            foreach ($result['result']['result']['reasons'] as $reason) {
606
+                $reasons[] = [
607
+                    'id'   => $reason['id'] ?? '',
608
+                    'name' => $reason['name'] ?? '',
611 609
                 ];
612 610
             }
613 611
         }
614 612
 
615
-        return [
616
-            'success'    => $success,
617
-            'refundList' => $refundList,
618
-            'rawData'    => $result,
619
-        ];
613
+        return $reasons;
620 614
     }
621 615
 }