Selaa lähdekoodia

修复 null 字段判断bug

龙飞 9 kuukautta sitten
vanhempi
commit
3a74d39dce
1 muutettua tiedostoa jossa 8 lisäystä ja 3 poistoa
  1. 8
    3
      src/SyncService.php

+ 8
- 3
src/SyncService.php Näytä tiedosto

188
         $data = Arr::except($data, $this->filter);
188
         $data = Arr::except($data, $this->filter);
189
         // 再替换字段名
189
         // 再替换字段名
190
         foreach ($this->mapping_replace as $key_serv => $key_local) {
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
         // json字符串 => json
196
         // json字符串 => json
197
         foreach ($this->json_fields as $field) {
197
         foreach ($this->json_fields as $field) {
198
             if (isset($data[$field]) && is_string($data[$field])) {
198
             if (isset($data[$field]) && is_string($data[$field])) {
199
                 $data[$field] = json_decode($data[$field], true);
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
         return $data;
207
         return $data;