// // NetworkManager.swift // fiveConstant // // Created by 李建 on 2023/1/17. // import Foundation import Moya import HandyJSON import SwiftUI public class HttpRequest { public class func loadData(target: T, success: @escaping ((_ returnData: M) -> Void), failure: @escaping ((Int?, String?) ->Void) = {code, msg in }) { let provider = MoyaProvider(plugins: [ networkPlugin, RequestHandlingPlugin(), NetworkLoggerPlugin(configuration: NetworkLoggerPlugin.Configuration(logOptions: .verbose)) ]) provider.request(target, completion: { result in switch result { case let .success(response): do { guard let json = try response.mapJSON() as? [String: Any] else { failure(-1, "不合法的响应数据") return } let decoder = JSONDecoder() let baseModel = try? decoder.decode(BaseModel.self, from: response.data) guard baseModel != nil else { failure(json["code"] as? Int, json["message"] as? String) let msg = json["message"] as? String ?? "未知错误" let code = json["code"] as? Int HUD.show(title: msg) if code == 9999 || code == 401 { ProgressState.manager.isNeedLogin = true } return } if response.statusCode == 401 { // 跳转登录 ProgressState.manager.isNeedLogin = true return } switch baseModel?.code { case 0: success((baseModel?.data)!) default: HUD.show(title: baseModel!.message) failure(baseModel?.code, baseModel?.message) } } catch { print(error) } case let.failure(error): failure(error.response?.statusCode, "请求出错") } }) } }