QSLCentralNetwork.swift 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. //
  2. // QSLCentralNetwork.swift
  3. // QuickSearchLocation
  4. //
  5. // Created by Destiny on 2025/10/11.
  6. //
  7. import UIKit
  8. import Foundation
  9. import Moya
  10. import MoyaMapper
  11. enum QSLCentralNetworkAPI {
  12. case getEventPushToken(dict: [String : Any])
  13. case eventPush(dict: [String : Any])
  14. }
  15. let QSLCentralNetworkProvider = MoyaProvider<QSLCentralNetworkAPI>(plugins: [networkLoggerPlugin, MoyaMapperPlugin(NetParameter())])
  16. extension QSLCentralNetworkAPI: TargetType {
  17. // 地址
  18. public var baseURL: URL {
  19. return URL(string: QSLCentralEventManager.centralUrl)!
  20. }
  21. var path: String {
  22. switch self {
  23. case .eventPush: return QSLCentralEventManager.event_push
  24. case .getEventPushToken: return QSLCentralEventManager.ssid_detail
  25. }
  26. }
  27. var method: Moya.Method { return .post }
  28. var task: Task {
  29. var parameters : [String:Any] = [:]
  30. switch self {
  31. case let .eventPush(Dict):
  32. for (key, value) in Dict {
  33. parameters[key] = value
  34. }
  35. case let .getEventPushToken(Dict):
  36. for (key, value) in Dict {
  37. parameters[key] = value
  38. }
  39. }
  40. debugPrint(parameters)
  41. return .requestParameters(parameters: parameters, encoding: JSONEncoding.default)
  42. }
  43. var sampleData: Data { return "".data(using: String.Encoding.utf8)! }
  44. var headers: [String : String]? {
  45. return ["AppKey": QSLCentralEventManager.appKey]
  46. }
  47. }
  48. struct QSLCentralNetwork {
  49. ///先添加一个闭包用于成功时后台返回数据的回调
  50. typealias completeCallback = ((Response) -> (Void))
  51. typealias failCallback = ((Int, String) -> (Void))
  52. func request(_ target: QSLCentralNetworkAPI, success: @escaping completeCallback, fail: @escaping failCallback){
  53. QSLCentralNetworkProvider.request(target) { (result) in
  54. switch result {
  55. case let .success(response):
  56. if response.statusCode == 200 {
  57. if response.toJSON(modelKey: "code") == 0 {
  58. success(response)
  59. } else {
  60. fail(response.toJSON(modelKey: "code").intValue, response.toJSON(modelKey: "msg").stringValue)
  61. }
  62. } else if response.statusCode == 1006 {
  63. if QSLBaseManager.shared.isLogin() {
  64. QSLBaseManager.shared.logOut()
  65. }
  66. UIApplication.keyWindow?.toast(text: "登录状态失效")
  67. } else {
  68. fail(response.statusCode, response.toJSON(modelKey: "msg").stringValue)
  69. }
  70. #if DEBUG
  71. print("data:\(response.fetchJSONString())")
  72. #endif
  73. break
  74. case let .failure(error):
  75. fail(error.errorCode, "网络错误,请检查后重试")
  76. //网络连接失败,提示用户
  77. UIApplication.keyWindow?.toast(text: "网络错误,请检查后重试")
  78. break
  79. }
  80. }
  81. }
  82. }