NetworkManager.swift 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. //
  2. // NetworkManager.swift
  3. // SolarBT
  4. //
  5. // Created by weclouds on 2019/8/12.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. import AFNetworking
  10. //请求类型:
  11. enum HTTPRequestType {
  12. case GET
  13. case POST
  14. }
  15. class NetworkManager: AFHTTPSessionManager {
  16. //单例:
  17. static let shared:NetworkManager = {
  18. let instence = NetworkManager()
  19. instence.requestSerializer = AFJSONRequestSerializer()
  20. instence.responseSerializer = AFHTTPResponseSerializer()
  21. instence.requestSerializer.setValue("application/json,text/html", forHTTPHeaderField: "Accept")
  22. instence.requestSerializer.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
  23. return instence
  24. }()
  25. func request(requestType:HTTPRequestType,urlString:String,parameters:[String:AnyObject]?,complated:@escaping(AnyObject?,Bool)->()){
  26. let success = {
  27. (tasks:URLSessionDataTask,json:Any) ->() in complated(json as AnyObject?,true)
  28. }
  29. let failure = {
  30. (tasks:URLSessionDataTask?,error:Error) ->() in complated(error as AnyObject,false)
  31. log.debug("上传失败---- \(error)")
  32. }
  33. if requestType == .GET {
  34. get(urlString, parameters: parameters, progress: nil, success: success, failure: failure)
  35. }else{
  36. self.post(urlString, parameters: parameters, progress: nil, success: success, failure: failure)
  37. }
  38. }
  39. func updateDeviceInfo(_ type:String,number:String,name:String,model:String?,hardwareVersion:String?,softwareVersion:String?,productionDate:String?,macAddress:String?,productionBatch:String?) {
  40. log.debug("上传设备信息")
  41. //编辑设备
  42. let deviceList = ["type":type, //设备类型
  43. "number":number, //设备序列号
  44. "model":model, //设备型号
  45. "name":name,//设备名称
  46. "hardwareVersion":hardwareVersion, //硬件版本
  47. "softwareVarsion":softwareVersion, //软件版本
  48. "productionDate":productionDate, //生产日期
  49. "productionBatch":productionDate, // 生产批次
  50. "macAddress":macAddress] // mac地址
  51. let parmter = ["deviceList":[deviceList]]
  52. let url = "http://www.solar-bt.com/api/app/save"
  53. NetworkManager.shared.request(requestType: .POST, urlString: url, parameters: parmter as [String : AnyObject]) { (respond,isSuccess) in
  54. if isSuccess == false {
  55. log.debug(respond)
  56. }else{
  57. let dict = try? JSONSerialization.jsonObject(with: respond as! Data, options: .mutableLeaves) as! [String:Any]
  58. log.debug("dict --\(dict)")
  59. let msg = dict!["msg"] as! String
  60. log.debug("msg -- \(msg)")
  61. }
  62. }
  63. }
  64. func uploadlocation(_ number : String) {
  65. log.debug("上传定位信息")
  66. SBTLocation.share.startLocation()
  67. SBTLocation.share.callback = {(lat,long) in
  68. //设备定位
  69. let locationList : NSDictionary = ["number":number, //设备序列号
  70. "longitude":long, //经度
  71. "latitude":lat,//纬度
  72. "type":"1" //经纬度类型 GPS CLLocationManager 为GPS坐标系
  73. ]
  74. let arr : NSArray = [locationList]
  75. let parmter = ["locationList": arr]
  76. let url = "http://www.solar-bt.com/api/app/location"
  77. log.debug("上传的参数 --- \(parmter) ")
  78. NetworkManager.shared.request(requestType: .POST, urlString: url, parameters: parmter as [String : AnyObject]) { (respond,isSuccess) in
  79. /**["locationList": [["latitude": "22.534406863511798", "type": "1", "number": "302448740", "longitude": "114.06280841880522"]]
  80. ] */
  81. if isSuccess == false {
  82. log.debug(respond)
  83. }else{
  84. log.debug("上传的参数 --- \(parmter) ")
  85. let dict = try? JSONSerialization.jsonObject(with: respond as! Data, options: .mutableLeaves) as? [String:Any]
  86. log.debug("dict --\(dict )")
  87. let msg = dict!["msg"] as! String
  88. log.debug("msg -- \(msg)")
  89. }
  90. }
  91. }
  92. }
  93. func uploadtodayData(_ number : String,
  94. solarStatus:String,solarVoltage:String,solarCurrent:String,solarPower:String,
  95. batteryStatus:String,batteryVoltage:String,batteryCurrent:String,batteryTemp:String,batteryPower:String,
  96. loadStatus:String,loadVoltage:String,loadCurrent:String,loadPower:String?,deviceStatus:String,alarmStr:String,
  97. generationCapacity:String,dischargeCapacity:String,totalGenerationCapacity:String,totalDischargeCapacity:String,runTime:String,overTimes:String,fullTimes:String,chargingAmpereHour:String,dischargeAmpereHour:String) {
  98. log.debug("上传实时数据")
  99. let dataList = ["number":number, //设备序列号
  100. "solarStatus":solarStatus, //太阳能状态
  101. "solarVoltage":solarVoltage,//太阳能电压
  102. "solarCurrent":solarCurrent ,//太阳能电流
  103. "solarPower" : solarPower,//太阳能功率
  104. "batteryStatus" : batteryStatus,//蓄电池状态
  105. "batteryVoltage" : batteryVoltage,//蓄电池电压
  106. "batteryCurrent" : batteryCurrent, //蓄电池电流
  107. "batteryTemp" : batteryTemp,//蓄电池温度
  108. "batteryPower": batteryPower,
  109. "loadStatus" : loadStatus,//负载状态
  110. "loadVoltage" :loadVoltage,//负载电压
  111. "loadCurrent" : loadCurrent,//负载电流
  112. "loadPower" : loadPower,//负载功率
  113. "deviceStatus" :deviceStatus,//故障状态
  114. "alarmStr" : alarmStr,//故障信息
  115. "generationCapacity":generationCapacity,//当天发电量
  116. "dischargeCapacity":dischargeCapacity,//当天放电量
  117. "totalGenerationCapacity":totalGenerationCapacity,//k累计发电量
  118. "totalDischargeCapacity" : totalDischargeCapacity,//k累计放电量
  119. "runTime" : runTime,//运行天数
  120. "overTimes" : overTimes,//过放次数
  121. "fullTimes" : fullTimes,//充满次数
  122. "chargingAmpereHour" : chargingAmpereHour,//放电安时数
  123. "dischargeAmpereHour" : dischargeAmpereHour,//充电安时数
  124. ]
  125. let parmter = ["dataList": [dataList]]
  126. let url = "http://www.solar-bt.com/api/app/todayData"
  127. NetworkManager.shared.request(requestType: .POST, urlString: url, parameters: parmter as [String : AnyObject]) { (respond,isSuccess) in
  128. if isSuccess == false {
  129. log.debug(respond)
  130. }else{
  131. let dict = try? JSONSerialization.jsonObject(with: respond as! Data, options: .mutableLeaves) as! [String:Any]
  132. log.debug("dict --\(dict)")
  133. let msg = dict!["msg"] as! String
  134. log.debug("msg -- \(msg)")
  135. }
  136. }
  137. }
  138. func uploadHistoryData(_ number : String ,locationList:[[String:String]]) {
  139. log.debug("上传历史数据")
  140. let parmter = ["number":number,"locationList": locationList] as [String : Any]
  141. let url = "http://www.solar-bt.com/api/app/historyData"
  142. NetworkManager.shared.request(requestType: .POST, urlString: url, parameters: parmter as [String : AnyObject]) { (respond,isSuccess) in
  143. if isSuccess == false {
  144. log.debug(respond)
  145. }else{
  146. let dict = try? JSONSerialization.jsonObject(with: respond as! Data, options: .mutableLeaves) as! [String:Any]
  147. log.debug("dict --\(dict)")
  148. let msg = dict!["msg"] as! String
  149. log.debug("msg -- \(msg)")
  150. }
  151. }
  152. }
  153. }
  154. /*
  155. ["locationList": [["number": "302448740",
  156. "latitude": "22.534364600842725",
  157. "type": "1",
  158. "longitude": "114.0627827640778"]
  159. ]
  160. ]
  161. */