瀏覽代碼

修复 null 字段判断bug

龙飞 9 月之前
父節點
當前提交
3a74d39dce
共有 1 個檔案被更改,包括 8 行新增3 行删除
  1. 8
    3
      src/SyncService.php

+ 8
- 3
src/SyncService.php 查看文件

@@ -188,15 +188,20 @@ abstract class SyncService
188 188
         $data = Arr::except($data, $this->filter);
189 189
         // 再替换字段名
190 190
         foreach ($this->mapping_replace as $key_serv => $key_local) {
191
-            if (array_key_exists($key_serv, $data)) {
192
-                $data[$key_local] = Arr::get($data, $key_serv);
193
-                unset($data[$key_serv]);
191
+            if (isset($data[$key_serv])) {
192
+                $data[$key_local] = $data[$key_serv]; // 赋值给本地字段
193
+                unset($data[$key_serv]); // 删除原服务器字段,避免冲突
194 194
             }
195 195
         }
196 196
         // json字符串 => json
197 197
         foreach ($this->json_fields as $field) {
198 198
             if (isset($data[$field]) && is_string($data[$field])) {
199 199
                 $data[$field] = json_decode($data[$field], true);
200
+                // 容错:若JSON解码失败,保留原字符串(避免数据丢失)
201
+                if (json_last_error() !== JSON_ERROR_NONE) {
202
+                    Log::warning("JSON解码失败,字段: {$field},值: {$data[$field]}");
203
+                    $data[$field] = $data[$field]; // 保留原字符串
204
+                }
200 205
             }
201 206
         }
202 207
         return $data;