IHAreaApi.swift 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621
  1. //
  2. // IHAreaApi.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2019/12/9.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. import Moya
  10. import Alamofire
  11. //import RxSwift
  12. //import RxCocoa
  13. struct JSONArrayEncoding: ParameterEncoding {
  14. static let `default` = JSONArrayEncoding()
  15. func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
  16. var request = try urlRequest.asURLRequest()
  17. guard let json = parameters?["deviceList"] else {
  18. return request
  19. }
  20. let data = try JSONSerialization.data(withJSONObject: json, options: [])
  21. if request.value(forHTTPHeaderField: "Content-Type") == nil {
  22. request.setValue("application/json", forHTTPHeaderField: "Content-Type")
  23. }
  24. request.httpBody = data
  25. return request
  26. }
  27. }
  28. class ArrayEncode {
  29. static let share = ArrayEncode()
  30. func dataTypeTurnJson(element:Any) -> String {
  31. let jsonData = try! JSONSerialization.data(withJSONObject: element, options: .prettyPrinted)
  32. var str = String(data: jsonData, encoding: .utf8)
  33. log.debug("测试 数组转json -\(str!)")
  34. str = str?.replacingOccurrences(of: "\n", with: "")
  35. str = str?.replacingOccurrences(of: " ", with: "")
  36. return str ?? ""
  37. }
  38. }
  39. let AreaProvider = MoyaProvider<AreaApi>(plugins: [NetworkLoggerPlugin(verbose: true, responseDataFormatter: JSONResponseDataFormatter),
  40. networkActivityPlugin])
  41. enum AreaApi {
  42. //楼房下拉列表
  43. case room_build_nav(username:String,client_key:String,os:String,version:String,token:String,hotelId:String?)
  44. //房间列表
  45. case room_room_list(username:String,client_key:String,os:String,version:String,token:String,buildId:String,keywords:String?)
  46. //添加酒店国家下拉列表
  47. case common_get_country(username:String,client_key:String,os:String,version:String,token:String)
  48. //添加酒店省份下拉列表
  49. case common_get_province(username:String,client_key:String,os:String,version:String,token:String,countryId:String)
  50. //添加酒店城市下拉列表
  51. case common_get_city(username:String,client_key:String,os:String,version:String,token:String,provinceId:String)
  52. //添加编辑酒店
  53. case area_save_hotel(username:String,client_key:String,os:String,version:String,token:String,cityId:String,name:String,hotelId:String?)
  54. //删除酒店
  55. case area_del_hotel(username:String,client_key:String,os:String,version:String,token:String,hotelId:String)
  56. //添加编辑楼房
  57. case area_save_build(username:String,client_key:String,os:String,version:String,token:String,hotelId:String,name:String,floorCount:Int,buildId:String?)
  58. //删除楼房
  59. case area_del_build(username:String,client_key:String,os:String,version:String,token:String,buildId:String)
  60. //酒店详情
  61. case area_hotel_info(username:String,client_key:String,os:String,version:String,token:String,hotelId:String)
  62. //楼房详情
  63. case area_build_info(username:String,client_key:String,os:String,version:String,token:String,buildId:String)
  64. //添加编辑房间
  65. 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]]?)
  66. //获取房间详细信息
  67. case room_room_info(username:String,client_key:String,os:String,version:String,token:String,roomId:String)
  68. //删除房间
  69. case room_del_room(username:String,client_key:String,os:String,version:String,token:String,roomId:String)
  70. //楼层下拉列表
  71. case area_floor_nav(username:String,client_key:String,os:String,version:String,token:String,buildId:String?)
  72. //房间下拉列表
  73. case room_room_nav(username:String,client_key:String,os:String,version:String,token:String,floorId:String)
  74. //获取楼层跟楼房概览图片
  75. case area_floor_build_image(username:String,client_key:String,os:String,version:String,token:String,floorId:String)
  76. //房间指令
  77. 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)
  78. //酒店/楼房二级下拉列表
  79. //cityId : 城市id(没有城市使用省份id,没有省份使用国家id)
  80. case area_hotel_list(username:String,client_key:String,os:String,version:String,token:String,cityId:String)
  81. //获取学校房间-设备
  82. case school_dev_list(username:String,client_key:String,os:String,version:String,token:String,roomId:String)
  83. //添加学校房间--编辑设备
  84. 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)
  85. //修改学校房间--灯位置信息
  86. case school_charge_location(username:String,client_key:String,os:String,version:String,token:String,infoList:[[String:String]])
  87. //修改学校房间--开关窗帘
  88. case school_set_curtain(username:String,client_key:String,os:String,version:String,token:String,id:String,status:String,clientId:String)
  89. //修改学校房间--灯的色温
  90. case school_set_color(username:String,client_key:String,os:String,version:String,token:String,id:String,color:String,clientId:String)
  91. //修改学校房间--设备信息列表
  92. 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?)
  93. //修改学校房间--删除设备
  94. case school_del_light(username:String,client_key:String,os:String,version:String,token:String,lightId:String,clientId:String)
  95. //修改学校房间--设置亮度值
  96. case school_set_light(username:String,client_key:String,os:String,version:String,token:String,id:String,light:String,clientId:String)
  97. //修改学校房间--全部灯的开关
  98. case charge_mode(username:String,client_key:String,os:String,version:String,token:String,roomId :String,type:String,clientId:String)
  99. //修改学校房间--单个灯的开关
  100. case set_on_off(username:String,client_key:String,os:String,version:String,token:String,id :String,status:String,clientId:String)
  101. }
  102. extension AreaApi: TargetType{
  103. var base :String {
  104. return moyaBase
  105. }
  106. var baseURL: URL {
  107. return URL(string:base)!
  108. }
  109. var path: String {
  110. switch self {
  111. case .room_build_nav:
  112. return "room/build_nav"
  113. case .room_room_list:
  114. return "room/room_list"
  115. case .common_get_country:
  116. return "common/get_country"
  117. case .common_get_province:
  118. return "common/get_province"
  119. case .common_get_city:
  120. return "common_get_city"
  121. case .area_save_hotel:
  122. return "area/save_hotel"
  123. case .area_del_hotel:
  124. return "area/del_hotel"
  125. case .area_save_build:
  126. return "area/save_build"
  127. case .area_del_build:
  128. return "area/del_build"
  129. case .area_hotel_info:
  130. return "area/hotel_info"
  131. case .area_build_info:
  132. return "area/build_info"
  133. case .room_save_room:
  134. return "room/save_room"
  135. case .room_room_info:
  136. return "room/room_info"
  137. case .room_del_room:
  138. return "room/del_room"
  139. case .area_floor_nav:
  140. return "area/floor_nav"
  141. case .room_room_nav:
  142. return "room/room_nav"
  143. case .area_floor_build_image:
  144. return "area/floor_build_image"
  145. case .room_room_cmd:
  146. return "room/room_cmd"
  147. case .area_hotel_list:
  148. return "area/hotel_list"
  149. case .school_dev_list:
  150. return "school/dev_list"
  151. case .school_save_light:
  152. return "school/save_light"
  153. case .school_charge_location:
  154. return "school/charge_location"
  155. case .school_set_curtain:
  156. return "school/set_curtain"
  157. case .school_set_color:
  158. return "school/set_color"
  159. case .school_light_list:
  160. return "school/light_list"
  161. case .school_del_light:
  162. return "school/del_light"
  163. case .school_set_light:
  164. return "school/set_light"
  165. case .charge_mode:
  166. return "school/charge_mode"
  167. case .set_on_off:
  168. return "school/set_on_off"
  169. }
  170. }
  171. var method: Moya.Method {
  172. return .post
  173. }
  174. var sampleData: Data {
  175. switch self {
  176. case .room_build_nav:
  177. return stubbedResponse("room_build_nav")
  178. case .room_room_list:
  179. return stubbedResponse("room_room_list")
  180. case .common_get_country:
  181. return stubbedResponse("common_get_country")
  182. case .common_get_province:
  183. return stubbedResponse("common_get_province")
  184. case .common_get_city:
  185. return stubbedResponse("commonget_city")
  186. case .area_save_hotel:
  187. return stubbedResponse("area_save_hotel")
  188. case .area_del_hotel:
  189. return stubbedResponse("area_del_hotel")
  190. case .area_save_build:
  191. return stubbedResponse("area_save_build")
  192. case .area_del_build:
  193. return stubbedResponse("area_del_build")
  194. case .area_hotel_info:
  195. return stubbedResponse("area_hotel_info")
  196. case .area_build_info:
  197. return stubbedResponse("area_build_info")
  198. case .room_save_room:
  199. return stubbedResponse("room_save_room")
  200. case .room_room_info:
  201. return stubbedResponse("room_room_info")
  202. case .room_del_room:
  203. return stubbedResponse("room_del_room")
  204. case .area_floor_nav:
  205. return stubbedResponse("area_floor_nav")
  206. case .room_room_nav:
  207. return stubbedResponse("room_room_nav")
  208. case .area_floor_build_image:
  209. return stubbedResponse("area_floor_build_image")
  210. case .room_room_cmd:
  211. return stubbedResponse("room_room_cmd")
  212. case .area_hotel_list:
  213. return stubbedResponse("area_hotel_list")
  214. case .school_dev_list:
  215. return stubbedResponse("school_dev_list")
  216. case .school_save_light:
  217. return stubbedResponse("school_save_light")
  218. case .school_charge_location:
  219. return stubbedResponse("school_charge_location")
  220. case .school_set_curtain:
  221. return stubbedResponse("school_set_curtain")
  222. case .school_set_color:
  223. return stubbedResponse("school_set_color")
  224. case .school_light_list:
  225. return stubbedResponse("school_light_list")
  226. case .school_del_light:
  227. return stubbedResponse("school_del_light")
  228. case .school_set_light:
  229. return stubbedResponse("school_set_light")
  230. case .charge_mode:
  231. return stubbedResponse("charge_mode")
  232. case .set_on_off:
  233. return stubbedResponse("set_on_off")
  234. }
  235. }
  236. var task: Task {
  237. switch self {
  238. case .room_build_nav(let username, let client_key, let os, let version,let token, let hotelId):
  239. var p = ["username" :username,
  240. "client_key":client_key,
  241. "os":os,
  242. "version":version,
  243. "token":token, ]
  244. if let hotelId = hotelId{
  245. p["hotelId"] = hotelId
  246. }
  247. return .requestParameters(parameters: p,
  248. encoding: URLEncoding.default)
  249. case .room_room_list(let username, let client_key, let os, let version,let token, let buildId, let keywords):
  250. var p = ["username" :username,
  251. "client_key":client_key,
  252. "os":os,
  253. "version":version,
  254. "token":token,
  255. "buildId":buildId]
  256. if let keywords = keywords{
  257. p["keywords"] = keywords
  258. }
  259. return .requestParameters(parameters: p,
  260. encoding: URLEncoding.default)
  261. case .common_get_country(let username, let client_key, let os, let version,let token):
  262. let p = ["username" :username,
  263. "client_key":client_key,
  264. "os":os,
  265. "version":version,
  266. "token":token]
  267. return .requestParameters(parameters: p,
  268. encoding: URLEncoding.default)
  269. case .common_get_province(let username, let client_key, let os, let version,let token, let countryId):
  270. let p = ["username" :username,
  271. "client_key":client_key,
  272. "os":os,
  273. "version":version,
  274. "token":token,
  275. "countryId" : countryId]
  276. return .requestParameters(parameters: p,
  277. encoding: URLEncoding.default)
  278. case .common_get_city(let username, let client_key, let os, let version,let token, let provinceId):
  279. let p = ["username" :username,
  280. "client_key":client_key,
  281. "os":os,
  282. "version":version,
  283. "token":token,
  284. "provinceId":provinceId]
  285. return .requestParameters(parameters: p,
  286. encoding: URLEncoding.default)
  287. case .area_save_hotel(let username, let client_key, let os, let version,let token, let cityId, let name, let hotelId):
  288. var p = ["username" :username,
  289. "client_key":client_key,
  290. "os":os,
  291. "version":version,
  292. "token":token,
  293. "cityId":cityId,
  294. "name":name]
  295. if let hotelId = hotelId{
  296. p["hotelId"] = hotelId
  297. }
  298. return .requestParameters(parameters: p,
  299. encoding: URLEncoding.default)
  300. case .area_del_hotel(let username, let client_key, let os, let version,let token, let hotelId):
  301. let p = ["username" :username,
  302. "client_key":client_key,
  303. "os":os,
  304. "version":version,
  305. "token":token,
  306. "hotelId":hotelId,
  307. ]
  308. return .requestParameters(parameters: p,
  309. encoding: URLEncoding.default)
  310. case .area_save_build(let username, let client_key, let os, let version,let token, let hotelId, let name, let floorCount,let buildId):
  311. var p = ["username" :username,
  312. "client_key":client_key,
  313. "os":os,
  314. "version":version,
  315. "token":token,
  316. "hotelId":hotelId,
  317. "name":name,
  318. "floorCount":floorCount] as [String : Any]
  319. if let buildId = buildId{
  320. p["buildId"] = buildId
  321. }
  322. return .requestParameters(parameters: p,
  323. encoding: URLEncoding.default)
  324. case .area_del_build(let username, let client_key, let os, let version,let token, let buildId):
  325. let p = ["username" :username,
  326. "client_key":client_key,
  327. "os":os,
  328. "version":version,
  329. "token":token,
  330. "buildId":buildId ]
  331. return .requestParameters(parameters: p,
  332. encoding: URLEncoding.default)
  333. case .area_hotel_info(let username, let client_key, let os, let version,let token, let hotelId):
  334. let p = ["username" :username,
  335. "client_key":client_key,
  336. "os":os,
  337. "version":version,
  338. "token":token,
  339. "hotelId":hotelId ]
  340. return .requestParameters(parameters: p,
  341. encoding: URLEncoding.default)
  342. case .area_build_info(let username, let client_key, let os, let version,let token, let buildId):
  343. let p = ["username" :username,
  344. "client_key":client_key,
  345. "os":os,
  346. "version":version,
  347. "token":token,
  348. "buildId":buildId ]
  349. return .requestParameters(parameters: p,
  350. encoding: URLEncoding.default)
  351. case .room_room_info(let username, let client_key, let os, let version,let token, let roomId):
  352. let p = ["username" :username,
  353. "client_key":client_key,
  354. "os":os,
  355. "version":version,
  356. "token":token,
  357. "roomId":roomId ]
  358. return .requestParameters(parameters: p,
  359. encoding: URLEncoding.default)
  360. case .room_del_room(let username, let client_key, let os, let version,let token, let roomId):
  361. let p = ["username" :username,
  362. "client_key":client_key,
  363. "os":os,
  364. "version":version,
  365. "token":token,
  366. "roomId":roomId ]
  367. return .requestParameters(parameters: p,
  368. encoding: URLEncoding.default)
  369. case .area_floor_nav(let username, let client_key, let os, let version,let token, let buildId):
  370. var p = ["username" :username,
  371. "client_key":client_key,
  372. "os":os,
  373. "version":version,
  374. "token":token]
  375. if let buildId = buildId{
  376. p["buildId"] = buildId
  377. }
  378. return .requestParameters(parameters: p,
  379. encoding: URLEncoding.default)
  380. case .room_room_nav(let username, let client_key, let os, let version,let token, let floorId):
  381. let p = ["username" :username,
  382. "client_key":client_key,
  383. "os":os,
  384. "version":version,
  385. "token":token,
  386. "floorId":floorId]
  387. return .requestParameters(parameters: p,
  388. encoding: URLEncoding.default)
  389. 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):
  390. var p : [String:Any] = ["username" :username,
  391. "client_key":client_key,
  392. "os":os,
  393. "version":version,
  394. "token":token,
  395. "buildId":buildId,
  396. "floorId":floor,
  397. "number":number,
  398. "sn":sn,
  399. "image":image]
  400. if let roomId = roomId {
  401. p["roomId"] = roomId
  402. }
  403. if let optionalDict = optionalDict {
  404. p["deviceList"] = ArrayEncode.share.dataTypeTurnJson(element: optionalDict)
  405. }
  406. return .requestParameters(parameters: p,
  407. encoding: URLEncoding.default)
  408. case .area_floor_build_image(let username, let client_key, let os, let version, let token, let floorId):
  409. let p = ["username" :username,
  410. "client_key":client_key,
  411. "os":os,
  412. "version":version,
  413. "token":token,
  414. "floorId":floorId]
  415. return .requestParameters(parameters: p,
  416. encoding: URLEncoding.default)
  417. 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):
  418. let p = ["username" :username,
  419. "client_key":client_key,
  420. "os":os,
  421. "version":version,
  422. "token":token,
  423. "roomId":roomId,
  424. "light":light,
  425. "color":color,
  426. "colorR":colorR,
  427. "colorG":colorG,
  428. "colorB":colorB]
  429. return .requestParameters(parameters: p,
  430. encoding: URLEncoding.default)
  431. case .area_hotel_list(let username, let client_key, let os, let version, let token, let cityId):
  432. let p = ["username" :username,
  433. "client_key":client_key,
  434. "os":os,
  435. "version":version,
  436. "token":token,
  437. "cityId":cityId]
  438. return .requestParameters(parameters: p,
  439. encoding: URLEncoding.default)
  440. case .school_dev_list(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, roomId: let roomId):
  441. let p = ["username" :username,
  442. "client_key":client_key,
  443. "os":os,
  444. "version":version,
  445. "token":token,
  446. "roomId":roomId]
  447. return .requestParameters(parameters: p, encoding: URLEncoding.default)
  448. 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):
  449. var p = ["username" :username,
  450. "client_key":client_key,
  451. "os":os,
  452. "version":version,
  453. "token":token,
  454. "name":name,
  455. "deviceId":deviceId,
  456. "floorId": floorId,
  457. "roomId":roomId,
  458. "image":image,
  459. "type" : type,
  460. "model" : model]
  461. if let lightId = lightId {
  462. p["lightId"] = lightId
  463. }
  464. return .requestParameters(parameters: p, encoding: URLEncoding.default)
  465. case .school_charge_location(username: let username, client_key: let client_key, os: let os, version: let version, token: let token, infoList: let infoList):
  466. var p : [String : Any] = ["username":username,
  467. "client_key":client_key,
  468. "os":os,
  469. "version":version,
  470. "token":token
  471. ]
  472. p["infoList"] = ArrayEncode.share.dataTypeTurnJson(element: infoList)
  473. return .requestParameters(parameters: p, encoding: URLEncoding.default)
  474. 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):
  475. let p = ["username" :username,
  476. "client_key":client_key,
  477. "os":os,
  478. "version":version,
  479. "token":token,
  480. "id":id,
  481. "status":status,
  482. "clientId": clientId]
  483. return .requestParameters(parameters: p, encoding: URLEncoding.default)
  484. 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):
  485. let p = ["username" :username,
  486. "client_key":client_key,
  487. "os":os,
  488. "version":version,
  489. "token":token,
  490. "id":id,
  491. "color":color,
  492. "clientId": clientId]
  493. return .requestParameters(parameters: p, encoding: URLEncoding.default)
  494. 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):
  495. var p = ["username" :username,
  496. "client_key":client_key,
  497. "os":os,
  498. "version":version,
  499. "token":token,
  500. "page":page,
  501. "count":count,
  502. "type": type]
  503. if let hotelId = hotelId {
  504. p["hotelId"] = hotelId
  505. }
  506. if let buildId = buildId {
  507. p["buildId"] = buildId
  508. }
  509. if let floorId = floorId {
  510. p["floorId"] = floorId
  511. }
  512. if let roomId = roomId {
  513. p["roomId"] = roomId
  514. }
  515. if let keywords = keywords {
  516. p["keywords"] = keywords
  517. }
  518. return .requestParameters(parameters: p, encoding: URLEncoding.default)
  519. 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):
  520. let p = ["username" :username,
  521. "client_key":client_key,
  522. "os":os,
  523. "version":version,
  524. "token":token,
  525. "lightId":lightId,
  526. "clientId":clientId]
  527. return .requestParameters(parameters: p, encoding: URLEncoding.default)
  528. 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):
  529. let p = ["username" :username,
  530. "client_key":client_key,
  531. "os":os,
  532. "version":version,
  533. "token":token,
  534. "id":id,
  535. "light":light,
  536. "clientId":clientId]
  537. return .requestParameters(parameters: p, encoding: URLEncoding.default)
  538. 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):
  539. let p = ["username" :username,
  540. "client_key":client_key,
  541. "os":os,
  542. "version":version,
  543. "token":token,
  544. "roomId":roomId,
  545. "type":type,
  546. "clientId":clientId]
  547. return .requestParameters(parameters: p, encoding: URLEncoding.default)
  548. 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):
  549. let p = ["username" :username,
  550. "client_key":client_key,
  551. "os":os,
  552. "version":version,
  553. "token":token,
  554. "id":id,
  555. "status":status,
  556. "clientId":clientId]
  557. return .requestParameters(parameters: p, encoding: URLEncoding.default)
  558. }
  559. }
  560. var headers: [String : String]? {
  561. return nil
  562. }
  563. }