// // IHAreaApi.swift // Inhealth // // Created by weclouds on 2019/12/9. // Copyright © 2019 weclouds. All rights reserved. // import UIKit import Moya import Alamofire //import RxSwift //import RxCocoa struct JSONArrayEncoding: ParameterEncoding { static let `default` = JSONArrayEncoding() func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { var request = try urlRequest.asURLRequest() guard let json = parameters?["deviceList"] else { return request } let data = try JSONSerialization.data(withJSONObject: json, options: []) if request.value(forHTTPHeaderField: "Content-Type") == nil { request.setValue("application/json", forHTTPHeaderField: "Content-Type") } request.httpBody = data return request } } class ArrayEncode { static let share = ArrayEncode() func dataTypeTurnJson(element:Any) -> String { let jsonData = try! JSONSerialization.data(withJSONObject: element, options: .prettyPrinted) var str = String(data: jsonData, encoding: .utf8) log.debug("测试 数组转json -\(str!)") str = str?.replacingOccurrences(of: "\n", with: "") str = str?.replacingOccurrences(of: " ", with: "") return str ?? "" } } let AreaProvider = MoyaProvider(plugins: [NetworkLoggerPlugin(verbose: true, responseDataFormatter: JSONResponseDataFormatter), networkActivityPlugin]) enum AreaApi { //楼房下拉列表 case room_build_nav(username:String,client_key:String,os:String,version:String,token:String,hotelId:String?) //房间列表 case room_room_list(username:String,client_key:String,os:String,version:String,token:String,buildId:String,keywords:String?) //添加酒店国家下拉列表 case common_get_country(username:String,client_key:String,os:String,version:String,token:String) //添加酒店省份下拉列表 case common_get_province(username:String,client_key:String,os:String,version:String,token:String,countryId:String) //添加酒店城市下拉列表 case common_get_city(username:String,client_key:String,os:String,version:String,token:String,provinceId:String) //添加编辑酒店 case area_save_hotel(username:String,client_key:String,os:String,version:String,token:String,cityId:String,name:String,hotelId:String?) //删除酒店 case area_del_hotel(username:String,client_key:String,os:String,version:String,token:String,hotelId:String) //添加编辑楼房 case area_save_build(username:String,client_key:String,os:String,version:String,token:String,hotelId:String,name:String,floorCount:Int,buildId:String?) //删除楼房 case area_del_build(username:String,client_key:String,os:String,version:String,token:String,buildId:String) //酒店详情 case area_hotel_info(username:String,client_key:String,os:String,version:String,token:String,hotelId:String) //楼房详情 case area_build_info(username:String,client_key:String,os:String,version:String,token:String,buildId:String) //添加编辑房间 case room_save_room(username:String,client_key:String,os:String,version:String,token:String,buildId:String,floor:String,number:String,sn:String,image:String,roomId:String?,optionalDict:[[String:String]]?) //获取房间详细信息 case room_room_info(username:String,client_key:String,os:String,version:String,token:String,roomId:String) //删除房间 case room_del_room(username:String,client_key:String,os:String,version:String,token:String,roomId:String) //楼层下拉列表 case area_floor_nav(username:String,client_key:String,os:String,version:String,token:String,buildId:String?) //房间下拉列表 case room_room_nav(username:String,client_key:String,os:String,version:String,token:String,floorId:String) //获取楼层跟楼房概览图片 case area_floor_build_image(username:String,client_key:String,os:String,version:String,token:String,floorId:String) //房间指令 case room_room_cmd(username:String,client_key:String,os:String,version:String,token:String,roomId:String,light:String,color:String,colorR:String,colorG:String,colorB:String) //酒店/楼房二级下拉列表 //cityId : 城市id(没有城市使用省份id,没有省份使用国家id) case area_hotel_list(username:String,client_key:String,os:String,version:String,token:String,cityId:String) //获取学校房间-设备 case school_dev_list(username:String,client_key:String,os:String,version:String,token:String,roomId:String) //添加学校房间--编辑设备 case school_save_light(username:String,client_key:String,os:String,version:String,token:String,lightId:String?,name:String,deviceId:String,floorId:String,roomId:String,image:String,type:String,model:String) //修改学校房间--灯位置信息 case school_charge_location(username:String,client_key:String,os:String,version:String,token:String,infoList:[[String:String]]) //修改学校房间--开关窗帘 case school_set_curtain(username:String,client_key:String,os:String,version:String,token:String,id:String,status:String,clientId:String) //修改学校房间--灯的色温 case school_set_color(username:String,client_key:String,os:String,version:String,token:String,id:String,color:String,clientId:String) //修改学校房间--设备信息列表 case school_light_list(username:String,client_key:String,os:String,version:String,token:String,hotelId:String?,buildId:String?,floorId:String?,roomId:String?,page:String,count:String,type:String,keywords:String?) //修改学校房间--删除设备 case school_del_light(username:String,client_key:String,os:String,version:String,token:String,lightId:String,clientId:String) //修改学校房间--设置亮度值 case school_set_light(username:String,client_key:String,os:String,version:String,token:String,id:String,light:String,clientId:String) //修改学校房间--全部灯的开关 case charge_mode(username:String,client_key:String,os:String,version:String,token:String,roomId :String,type:String,clientId:String) //修改学校房间--单个灯的开关 case set_on_off(username:String,client_key:String,os:String,version:String,token:String,id :String,status:String,clientId:String) } extension AreaApi: TargetType{ var base :String { return moyaBase } var baseURL: URL { return URL(string:base)! } var path: String { switch self { case .room_build_nav: return "room/build_nav" case .room_room_list: return "room/room_list" case .common_get_country: return "common/get_country" case .common_get_province: return "common/get_province" case .common_get_city: return "common_get_city" case .area_save_hotel: return "area/save_hotel" case .area_del_hotel: return "area/del_hotel" case .area_save_build: return "area/save_build" case .area_del_build: return "area/del_build" case .area_hotel_info: return "area/hotel_info" case .area_build_info: return "area/build_info" case .room_save_room: return "room/save_room" case .room_room_info: return "room/room_info" case .room_del_room: return "room/del_room" case .area_floor_nav: return "area/floor_nav" case .room_room_nav: return "room/room_nav" case .area_floor_build_image: return "area/floor_build_image" case .room_room_cmd: return "room/room_cmd" case .area_hotel_list: return "area/hotel_list" case .school_dev_list: return "school/dev_list" case .school_save_light: return "school/save_light" case .school_charge_location: return "school/charge_location" case .school_set_curtain: return "school/set_curtain" case .school_set_color: return "school/set_color" case .school_light_list: return "school/light_list" case .school_del_light: return "school/del_light" case .school_set_light: return "school/set_light" case .charge_mode: return "school/charge_mode" case .set_on_off: return "school/set_on_off" } } var method: Moya.Method { return .post } var sampleData: Data { switch self { case .room_build_nav: return stubbedResponse("room_build_nav") case .room_room_list: return stubbedResponse("room_room_list") case .common_get_country: return stubbedResponse("common_get_country") case .common_get_province: return stubbedResponse("common_get_province") case .common_get_city: return stubbedResponse("commonget_city") case .area_save_hotel: return stubbedResponse("area_save_hotel") case .area_del_hotel: return stubbedResponse("area_del_hotel") case .area_save_build: return stubbedResponse("area_save_build") case .area_del_build: return stubbedResponse("area_del_build") case .area_hotel_info: return stubbedResponse("area_hotel_info") case .area_build_info: return stubbedResponse("area_build_info") case .room_save_room: return stubbedResponse("room_save_room") case .room_room_info: return stubbedResponse("room_room_info") case .room_del_room: return stubbedResponse("room_del_room") case .area_floor_nav: return stubbedResponse("area_floor_nav") case .room_room_nav: return stubbedResponse("room_room_nav") case .area_floor_build_image: return stubbedResponse("area_floor_build_image") case .room_room_cmd: return stubbedResponse("room_room_cmd") case .area_hotel_list: return stubbedResponse("area_hotel_list") case .school_dev_list: return stubbedResponse("school_dev_list") case .school_save_light: return stubbedResponse("school_save_light") case .school_charge_location: return stubbedResponse("school_charge_location") case .school_set_curtain: return stubbedResponse("school_set_curtain") case .school_set_color: return stubbedResponse("school_set_color") case .school_light_list: return stubbedResponse("school_light_list") case .school_del_light: return stubbedResponse("school_del_light") case .school_set_light: return stubbedResponse("school_set_light") case .charge_mode: return stubbedResponse("charge_mode") case .set_on_off: return stubbedResponse("set_on_off") } } var task: Task { switch self { case .room_build_nav(let username, let client_key, let os, let version,let token, let hotelId): var p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, ] if let hotelId = hotelId{ p["hotelId"] = hotelId } return .requestParameters(parameters: p, encoding: URLEncoding.default) case .room_room_list(let username, let client_key, let os, let version,let token, let buildId, let keywords): var p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "buildId":buildId] if let keywords = keywords{ p["keywords"] = keywords } return .requestParameters(parameters: p, encoding: URLEncoding.default) case .common_get_country(let username, let client_key, let os, let version,let token): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .common_get_province(let username, let client_key, let os, let version,let token, let countryId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "countryId" : countryId] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .common_get_city(let username, let client_key, let os, let version,let token, let provinceId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "provinceId":provinceId] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .area_save_hotel(let username, let client_key, let os, let version,let token, let cityId, let name, let hotelId): var p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "cityId":cityId, "name":name] if let hotelId = hotelId{ p["hotelId"] = hotelId } return .requestParameters(parameters: p, encoding: URLEncoding.default) case .area_del_hotel(let username, let client_key, let os, let version,let token, let hotelId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "hotelId":hotelId, ] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .area_save_build(let username, let client_key, let os, let version,let token, let hotelId, let name, let floorCount,let buildId): var p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "hotelId":hotelId, "name":name, "floorCount":floorCount] as [String : Any] if let buildId = buildId{ p["buildId"] = buildId } return .requestParameters(parameters: p, encoding: URLEncoding.default) case .area_del_build(let username, let client_key, let os, let version,let token, let buildId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "buildId":buildId ] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .area_hotel_info(let username, let client_key, let os, let version,let token, let hotelId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "hotelId":hotelId ] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .area_build_info(let username, let client_key, let os, let version,let token, let buildId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "buildId":buildId ] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .room_room_info(let username, let client_key, let os, let version,let token, let roomId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "roomId":roomId ] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .room_del_room(let username, let client_key, let os, let version,let token, let roomId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "roomId":roomId ] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .area_floor_nav(let username, let client_key, let os, let version,let token, let buildId): var p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token] if let buildId = buildId{ p["buildId"] = buildId } return .requestParameters(parameters: p, encoding: URLEncoding.default) case .room_room_nav(let username, let client_key, let os, let version,let token, let floorId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "floorId":floorId] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .room_save_room(let username, let client_key, let os, let version, let token, let buildId, let floor, let number, let sn, let image, let roomId, let optionalDict): var p : [String:Any] = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "buildId":buildId, "floorId":floor, "number":number, "sn":sn, "image":image] if let roomId = roomId { p["roomId"] = roomId } if let optionalDict = optionalDict { p["deviceList"] = ArrayEncode.share.dataTypeTurnJson(element: optionalDict) } return .requestParameters(parameters: p, encoding: URLEncoding.default) case .area_floor_build_image(let username, let client_key, let os, let version, let token, let floorId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "floorId":floorId] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .room_room_cmd(let username, let client_key, let os, let version, let token, let roomId, let light, let color, let colorR, let colorG, let colorB): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "roomId":roomId, "light":light, "color":color, "colorR":colorR, "colorG":colorG, "colorB":colorB] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .area_hotel_list(let username, let client_key, let os, let version, let token, let cityId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "cityId":cityId] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .school_dev_list(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, roomId: let roomId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "roomId":roomId] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .school_save_light(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, lightId: let lightId, name: let name, deviceId: let deviceId, floorId: let floorId, roomId: let roomId, image: let image, type: let type, model: let model): var p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "name":name, "deviceId":deviceId, "floorId": floorId, "roomId":roomId, "image":image, "type" : type, "model" : model] if let lightId = lightId { p["lightId"] = lightId } return .requestParameters(parameters: p, encoding: URLEncoding.default) case .school_charge_location(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, infoList: let infoList): var p : [String : Any] = ["username":username, "client_key":client_key, "os":os, "version":version, "token":token ] p["infoList"] = ArrayEncode.share.dataTypeTurnJson(element: infoList) return .requestParameters(parameters: p, encoding: URLEncoding.default) case .school_set_curtain(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, id: let id, status: let status, clientId: let clientId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "id":id, "status":status, "clientId": clientId] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .school_set_color(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, id: let id, color: let color, clientId: let clientId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "id":id, "color":color, "clientId": clientId] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .school_light_list(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, hotelId: let hotelId, buildId: let buildId, floorId: let floorId, roomId: let roomId, page: let page, count: let count, type: let type, keywords: let keywords): var p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "page":page, "count":count, "type": type] if let hotelId = hotelId { p["hotelId"] = hotelId } if let buildId = buildId { p["buildId"] = buildId } if let floorId = floorId { p["floorId"] = floorId } if let roomId = roomId { p["roomId"] = roomId } if let keywords = keywords { p["keywords"] = keywords } return .requestParameters(parameters: p, encoding: URLEncoding.default) case .school_del_light(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, lightId: let lightId, clientId: let clientId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "lightId":lightId, "clientId":clientId] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .school_set_light(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, id: let id, light: let light, clientId: let clientId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "id":id, "light":light, "clientId":clientId] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .charge_mode(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, roomId: let roomId, type: let type, clientId: let clientId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "roomId":roomId, "type":type, "clientId":clientId] return .requestParameters(parameters: p, encoding: URLEncoding.default) case .set_on_off(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, id: let id, status: let status, clientId: let clientId): let p = ["username" :username, "client_key":client_key, "os":os, "version":version, "token":token, "id":id, "status":status, "clientId":clientId] return .requestParameters(parameters: p, encoding: URLEncoding.default) } } var headers: [String : String]? { return nil } }