// // NetworkManager.swift // SolarBT // // Created by weclouds on 2019/8/12. // Copyright © 2019 weclouds. All rights reserved. // import UIKit import AFNetworking //请求类型: enum HTTPRequestType { case GET case POST } class NetworkManager: AFHTTPSessionManager { //单例: static let shared:NetworkManager = { let instence = NetworkManager() instence.requestSerializer = AFJSONRequestSerializer() instence.responseSerializer = AFHTTPResponseSerializer() instence.requestSerializer.setValue("application/json,text/html", forHTTPHeaderField: "Accept") instence.requestSerializer.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") return instence }() func request(requestType:HTTPRequestType,urlString:String,parameters:[String:AnyObject]?,complated:@escaping(AnyObject?,Bool)->()){ let success = { (tasks:URLSessionDataTask,json:Any) ->() in complated(json as AnyObject?,true) } let failure = { (tasks:URLSessionDataTask?,error:Error) ->() in complated(error as AnyObject,false) log.debug("上传失败---- \(error)") } if requestType == .GET { get(urlString, parameters: parameters, progress: nil, success: success, failure: failure) }else{ self.post(urlString, parameters: parameters, progress: nil, success: success, failure: failure) } } func updateDeviceInfo(_ type:String,number:String,name:String,model:String?,hardwareVersion:String?,softwareVersion:String?,productionDate:String?,macAddress:String?,productionBatch:String?) { log.debug("上传设备信息") //编辑设备 let deviceList = ["type":type, //设备类型 "number":number, //设备序列号 "model":model, //设备型号 "name":name,//设备名称 "hardwareVersion":hardwareVersion, //硬件版本 "softwareVarsion":softwareVersion, //软件版本 "productionDate":productionDate, //生产日期 "productionBatch":productionDate, // 生产批次 "macAddress":macAddress] // mac地址 let parmter = ["deviceList":[deviceList]] let url = "http://www.solar-bt.com/api/app/save" NetworkManager.shared.request(requestType: .POST, urlString: url, parameters: parmter as [String : AnyObject]) { (respond,isSuccess) in if isSuccess == false { log.debug(respond) }else{ let dict = try? JSONSerialization.jsonObject(with: respond as! Data, options: .mutableLeaves) as! [String:Any] log.debug("dict --\(dict)") let msg = dict!["msg"] as! String log.debug("msg -- \(msg)") } } } func uploadlocation(_ number : String) { log.debug("上传定位信息") SBTLocation.share.startLocation() SBTLocation.share.callback = {(lat,long) in //设备定位 let locationList : NSDictionary = ["number":number, //设备序列号 "longitude":long, //经度 "latitude":lat,//纬度 "type":"1" //经纬度类型 GPS CLLocationManager 为GPS坐标系 ] let arr : NSArray = [locationList] let parmter = ["locationList": arr] let url = "http://www.solar-bt.com/api/app/location" log.debug("上传的参数 --- \(parmter) ") NetworkManager.shared.request(requestType: .POST, urlString: url, parameters: parmter as [String : AnyObject]) { (respond,isSuccess) in /**["locationList": [["latitude": "22.534406863511798", "type": "1", "number": "302448740", "longitude": "114.06280841880522"]] ] */ if isSuccess == false { log.debug(respond) }else{ log.debug("上传的参数 --- \(parmter) ") let dict = try? JSONSerialization.jsonObject(with: respond as! Data, options: .mutableLeaves) as? [String:Any] log.debug("dict --\(dict )") let msg = dict!["msg"] as! String log.debug("msg -- \(msg)") } } } } func uploadtodayData(_ number : String, solarStatus:String,solarVoltage:String,solarCurrent:String,solarPower:String, batteryStatus:String,batteryVoltage:String,batteryCurrent:String,batteryTemp:String,batteryPower:String, loadStatus:String,loadVoltage:String,loadCurrent:String,loadPower:String?,deviceStatus:String,alarmStr:String, generationCapacity:String,dischargeCapacity:String,totalGenerationCapacity:String,totalDischargeCapacity:String,runTime:String,overTimes:String,fullTimes:String,chargingAmpereHour:String,dischargeAmpereHour:String) { log.debug("上传实时数据") let dataList = ["number":number, //设备序列号 "solarStatus":solarStatus, //太阳能状态 "solarVoltage":solarVoltage,//太阳能电压 "solarCurrent":solarCurrent ,//太阳能电流 "solarPower" : solarPower,//太阳能功率 "batteryStatus" : batteryStatus,//蓄电池状态 "batteryVoltage" : batteryVoltage,//蓄电池电压 "batteryCurrent" : batteryCurrent, //蓄电池电流 "batteryTemp" : batteryTemp,//蓄电池温度 "batteryPower": batteryPower, "loadStatus" : loadStatus,//负载状态 "loadVoltage" :loadVoltage,//负载电压 "loadCurrent" : loadCurrent,//负载电流 "loadPower" : loadPower,//负载功率 "deviceStatus" :deviceStatus,//故障状态 "alarmStr" : alarmStr,//故障信息 "generationCapacity":generationCapacity,//当天发电量 "dischargeCapacity":dischargeCapacity,//当天放电量 "totalGenerationCapacity":totalGenerationCapacity,//k累计发电量 "totalDischargeCapacity" : totalDischargeCapacity,//k累计放电量 "runTime" : runTime,//运行天数 "overTimes" : overTimes,//过放次数 "fullTimes" : fullTimes,//充满次数 "chargingAmpereHour" : chargingAmpereHour,//放电安时数 "dischargeAmpereHour" : dischargeAmpereHour,//充电安时数 ] let parmter = ["dataList": [dataList]] let url = "http://www.solar-bt.com/api/app/todayData" NetworkManager.shared.request(requestType: .POST, urlString: url, parameters: parmter as [String : AnyObject]) { (respond,isSuccess) in if isSuccess == false { log.debug(respond) }else{ let dict = try? JSONSerialization.jsonObject(with: respond as! Data, options: .mutableLeaves) as! [String:Any] log.debug("dict --\(dict)") let msg = dict!["msg"] as! String log.debug("msg -- \(msg)") } } } func uploadHistoryData(_ number : String ,locationList:[[String:String]]) { log.debug("上传历史数据") let parmter = ["number":number,"locationList": locationList] as [String : Any] let url = "http://www.solar-bt.com/api/app/historyData" NetworkManager.shared.request(requestType: .POST, urlString: url, parameters: parmter as [String : AnyObject]) { (respond,isSuccess) in if isSuccess == false { log.debug(respond) }else{ let dict = try? JSONSerialization.jsonObject(with: respond as! Data, options: .mutableLeaves) as! [String:Any] log.debug("dict --\(dict)") let msg = dict!["msg"] as! String log.debug("msg -- \(msg)") } } } } /* ["locationList": [["number": "302448740", "latitude": "22.534364600842725", "type": "1", "longitude": "114.0627827640778"] ] ] */