67 lines
2.0 KiB
Swift
67 lines
2.0 KiB
Swift
import Foundation
|
||
|
||
// MARK: - 数据模型
|
||
struct MaterialRequest: Codable {
|
||
let fileId: String
|
||
let previewFileId: String
|
||
|
||
enum CodingKeys: String, CodingKey {
|
||
case fileId = "file_id"
|
||
case previewFileId = "preview_file_id"
|
||
}
|
||
}
|
||
|
||
struct AddMaterialResponse: Codable {
|
||
let code: Int
|
||
let data: [String]?
|
||
}
|
||
|
||
// MARK: - 素材上传工具类
|
||
class MaterialUpload {
|
||
static let shared = MaterialUpload()
|
||
|
||
private init() {}
|
||
|
||
/// 添加素材到服务器
|
||
/// - Parameters:
|
||
/// - fileId: 文件ID
|
||
/// - previewFileId: 预览文件ID
|
||
/// - completion: 完成回调,返回结果ID数组或错误
|
||
func addMaterial(
|
||
fileId: String,
|
||
previewFileId: String,
|
||
completion: @escaping (Result<[String]?, Error>) -> Void
|
||
) {
|
||
// 创建请求数据
|
||
let materials: [[String: String]] = [[
|
||
"file_id": fileId,
|
||
"preview_file_id": previewFileId
|
||
]]
|
||
|
||
// 调试信息:检查参数是否为有效的JSON对象
|
||
print("🔍 准备发送的参数: \(materials)")
|
||
|
||
|
||
// 使用NetworkService发送请求
|
||
NetworkService.shared.post(
|
||
path: "/material",
|
||
parameters: materials,
|
||
completion: { (result: Result<AddMaterialResponse, NetworkError>) in
|
||
DispatchQueue.main.async {
|
||
switch result {
|
||
case .success(let response):
|
||
if response.code == 0 {
|
||
completion(.success(response.data))
|
||
} else {
|
||
completion(.failure(NetworkError.serverError("服务器返回错误码: \(response.code)")))
|
||
}
|
||
case .failure(let error):
|
||
print("❌ 素材上传失败: \(error.localizedDescription)")
|
||
completion(.failure(error))
|
||
}
|
||
}
|
||
}
|
||
)
|
||
}
|
||
}
|