cleanupDatabaseRecords 清理数据库中的相关记录
(batchID, fileID string)
| 68 | |
| 69 | // cleanupDatabaseRecords 清理数据库中的相关记录 |
| 70 | func (h *ErrorHandler) cleanupDatabaseRecords(batchID, fileID string) error { |
| 71 | batch, err := h.batchManager.GetBatch(batchID) |
| 72 | if err != nil { |
| 73 | return fmt.Errorf("获取批次失败: %v", err) |
| 74 | } |
| 75 | |
| 76 | batch.mu.RLock() |
| 77 | // Fix: Copy struct under lock to avoid data race on fields |
| 78 | var fileUpload FileUpload |
| 79 | var exists bool |
| 80 | if ptr, ok := batch.Files[fileID]; ok { |
| 81 | fileUpload = *ptr |
| 82 | exists = true |
| 83 | } |
| 84 | batch.mu.RUnlock() |
| 85 | if !exists { |
| 86 | return nil |
| 87 | } |
| 88 | |
| 89 | // 清理UploadFile记录 |
| 90 | if fileUpload.DatabaseID != 0 { |
| 91 | uploadFile, err := model.GetUploadFileByID(fileUpload.DatabaseID) |
| 92 | if err == nil && uploadFile != nil { |
| 93 | // 标记为失败状态 |
| 94 | uploadFile.MarkAsFailed("连接异常,已清理记录") |
| 95 | log.Printf("已标记UploadFile为失败: ID=%d", uploadFile.ID) |
| 96 | } |
| 97 | } |
| 98 | |
| 99 | // 清理File记录(如果存在) |
| 100 | if fileUpload.FileID != 0 { |
| 101 | // 使用正确的删除方法 |
| 102 | if err := model.DeleteFile(batch.EID, fileUpload.FileID); err != nil { |
| 103 | log.Printf("删除File记录失败: ID=%d, Error=%v", fileUpload.FileID, err) |
| 104 | } else { |
| 105 | log.Printf("已删除File记录: ID=%d", fileUpload.FileID) |
| 106 | } |
| 107 | } |
| 108 | |
| 109 | return nil |
| 110 | } |
| 111 | |
| 112 | // resetFileForReupload 重置文件状态为可重新上传 |
| 113 | func (h *ErrorHandler) resetFileForReupload(batchID, fileID string) error { |
no test coverage detected