@@ -341,14 +341,61 @@ func convertDbFieldTypes(data *map[string]interface{}) {
341341 }
342342 }
343343
344+ // 处理时间字段,确保它们是正确的时间格式
345+ timeFields := []string {
346+ "created_at" , "updated_at" , "deleted_at" ,
347+ "last_active" , "last_online" , "last_flow_save_time" ,
348+ "last_db_update_time" , "last_seen" , "last_ping" ,
349+ "CreatedAt" , "UpdatedAt" , "DeletedAt" ,
350+ "LastActive" , "LastOnline" , "LastFlowSaveTime" ,
351+ "LastDBUpdateTime" , "LastSeen" , "LastPing" ,
352+ "token_expired" , "TokenExpired" ,
353+ }
354+ for _ , field := range timeFields {
355+ if val , ok := d [field ]; ok {
356+ switch v := val .(type ) {
357+ case string :
358+ if v == "" || v == "NULL" || v == "0001-01-01T00:00:00Z" {
359+ // 对于空时间或无效时间,设置为当前时间或保持零值
360+ if field == "created_at" || field == "CreatedAt" {
361+ d [field ] = time .Now ().Format (time .RFC3339 )
362+ } else if field == "updated_at" || field == "UpdatedAt" {
363+ d [field ] = time .Now ().Format (time .RFC3339 )
364+ } else {
365+ // 其他时间字段保持零值
366+ d [field ] = "0001-01-01T00:00:00Z"
367+ }
368+ } else {
369+ // 尝试解析时间字符串并重新格式化
370+ if parsedTime , err := parseTimeString (v ); err == nil {
371+ d [field ] = parsedTime .Format (time .RFC3339 )
372+ } else {
373+ log .Printf ("警告:无法解析时间字段 %s 的值 '%s': %v" , field , v , err )
374+ // 如果解析失败,根据字段类型设置默认值
375+ if field == "created_at" || field == "CreatedAt" {
376+ d [field ] = time .Now ().Format (time .RFC3339 )
377+ } else if field == "updated_at" || field == "UpdatedAt" {
378+ d [field ] = time .Now ().Format (time .RFC3339 )
379+ } else {
380+ d [field ] = "0001-01-01T00:00:00Z"
381+ }
382+ }
383+ }
384+ case time.Time :
385+ // 如果已经是 time.Time 类型,转换为字符串
386+ d [field ] = v .Format (time .RFC3339 )
387+ }
388+ }
389+ }
390+
344391 // 处理布尔型字段 (支持多种命名格式)
345392 boolFields := []string {
346393 // Server fields
347394 "is_online" , "is_disabled" , "hide_for_guest" , "show_all" , "tasker" ,
348395 "HideForGuest" , "EnableDDNS" , "enable_ddns" ,
349- // Monitor fields
350- "notify" , "Notify" , "enable_trigger_task" , "EnableTriggerTask" ,
351- "enable_show_in_service" , "EnableShowInService" ,
396+ // Monitor fields
397+ "notify" , "Notify" , "enable_trigger_task" , "EnableTriggerTask" ,
398+ "enable_show_in_service" , "EnableShowInService" ,
352399 "latency_notify" , "LatencyNotify" ,
353400 // User fields
354401 "hireable" , "Hireable" , "super_admin" , "SuperAdmin" ,
0 commit comments