LNHttpManager+Room.swift 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. //
  2. // LNHttpManager+Room.swift
  3. // Gami
  4. //
  5. // Created by OneeChan on 2026/3/11.
  6. //
  7. import Foundation
  8. private let kNetPath_Room_Ability = "/live/host/info"
  9. private let kNetPath_Room_Create = "/live/room/create"
  10. private let kNetPath_Room_Update = "/live/room/update"
  11. private let kNetPath_Room_Mic_Invite_Send = "/live/mic/invite/send"
  12. private let kNetPath_Room_Mic_Apply_Submit = "/live/mic/apply/submit"
  13. private let kNetPath_Room_Mic_Apply_List = "/live/mic/apply/list"
  14. private let kNetPath_Room_Mic_Apply_Clear = "/live/mic/apply/clear"
  15. private let kNetPath_Room_Mic_Apply_Cancel = "/live/mic/apply/cancel"
  16. private let kNetPath_Room_Mic_Apply_Audit = "/live/mic/apply/audit"
  17. private let kNetPath_Room_Mic_Apply_category = "/live/mic/apply/category"
  18. private let kNetPath_Room_User_List = "/live/viewer/list"
  19. private let kNetPath_Room_User_Category = "/live/viewer/category"
  20. private let kNetPath_Room_Entrance = "/live/room/alive"
  21. private let kNetPath_Room_Random = "/live/room/random"
  22. private let kNetPath_Room_Cur = "/live/view/watching"
  23. private let kNetPath_Room_Search = "/live/room/search"
  24. private let kNetPath_Room_List = "/live/room/list"
  25. private let kNetPath_Room_Unavailable = "/live/room/unavailable"
  26. // MARK: 房间管理
  27. extension LNHttpManager {
  28. func getCreateRoomAbility(completion: @escaping (LNRoomAbilityVO?, LNHttpError?) -> Void) {
  29. post(path: kNetPath_Room_Ability, completion: completion)
  30. }
  31. func createRoom(roomTitle: String, roomCover: String, forbidAudio: Bool,
  32. completion: @escaping (LNRoomCreateResponse?, LNHttpError?) -> Void)
  33. {
  34. post(path: kNetPath_Room_Create, params: [
  35. "roomTitle": roomTitle,
  36. "roomCover": roomCover,
  37. "forbidAudio": forbidAudio
  38. ], completion: completion)
  39. }
  40. func updateRoom(roomId: String, roomTitle: String, roomCover: String,
  41. forbidAudio: Bool, completion: @escaping (LNHttpError?) -> Void) {
  42. post(path: kNetPath_Room_Update, params: [
  43. "roomId": roomId,
  44. "roomTitle": roomTitle,
  45. "roomCover": roomCover,
  46. "forbidAudio": forbidAudio
  47. ], completion: completion)
  48. }
  49. }
  50. // MARK: 麦位管理
  51. extension LNHttpManager {
  52. func applySeat(roomId: String, index: Int,
  53. completion: @escaping (LNHttpError?) -> Void)
  54. {
  55. var params: [String: Any] = [
  56. "roomId": roomId
  57. ]
  58. params["index"] = index
  59. post(path: kNetPath_Room_Mic_Apply_Submit, params: params, completion: completion)
  60. }
  61. func getApplySeatList(roomId: String, searchType: LNRoomApplySeatType, filter: String?, size: Int, next: String,
  62. completion: @escaping (LNRoomMicApplyListResponse?, LNHttpError?) -> Void)
  63. {
  64. var params: [String: Any] = [
  65. "roomId": roomId,
  66. "searchType": searchType.rawValue,
  67. "page": [
  68. "size": size,
  69. "next": next
  70. ]
  71. ]
  72. if let filter, !filter.isEmpty {
  73. params["skillCategories"] = [filter]
  74. }
  75. post(path: kNetPath_Room_Mic_Apply_List, params: params, completion: completion)
  76. }
  77. func getApplySeatCategory(roomId: String, completion: @escaping (LNRoomGameCategoryResponse?, LNHttpError?) -> Void) {
  78. post(path: kNetPath_Room_Mic_Apply_category, params: [
  79. "id": roomId
  80. ], completion: completion)
  81. }
  82. func clearApplySeatList(roomId: String, searchType: LNRoomApplySeatType,
  83. completion: @escaping (LNHttpError?) -> Void)
  84. {
  85. post(path: kNetPath_Room_Mic_Apply_Clear, params: [
  86. "roomId": roomId,
  87. "searchType": searchType.rawValue
  88. ], completion: completion)
  89. }
  90. func cancelApplySeat(roomId: String,
  91. completion: @escaping (LNHttpError?) -> Void)
  92. {
  93. post(path: kNetPath_Room_Mic_Apply_Cancel, params: [
  94. "roomId": roomId
  95. ], completion: completion)
  96. }
  97. func handleApplySeat(roomId: String, applyId: String, accept: Bool = true,
  98. completion: @escaping (LNHttpError?) -> Void)
  99. {
  100. post(path: kNetPath_Room_Mic_Apply_Audit, params: [
  101. "roomId": roomId,
  102. "applyId": applyId,
  103. "pass": accept
  104. ], completion: completion)
  105. }
  106. }
  107. // MARK: 观众
  108. extension LNHttpManager {
  109. func getRoomUserList(roomId: String, size: Int, next: String, playmete: Bool,
  110. filter: String?, completion: @escaping (LNRoomUserListResponse?, LNHttpError?) -> Void) {
  111. var param: [String: Any] = [
  112. "roomId": roomId,
  113. "page": [
  114. "size": size,
  115. "next": next
  116. ],
  117. "playmete": playmete
  118. ]
  119. if let filter, !filter.isEmpty {
  120. param["skillCategories"] = [filter]
  121. }
  122. post(path: kNetPath_Room_User_List, params: param, completion: completion)
  123. }
  124. func getRoomPlaymateCategory(roomId: String, completion: @escaping (LNRoomGameCategoryResponse?, LNHttpError?) -> Void) {
  125. post(path: kNetPath_Room_User_Category, params: [
  126. "roomId": roomId
  127. ], completion: completion)
  128. }
  129. func inviteUserToSeat(roomId: String, uid: String, index: Int, completion: @escaping (LNHttpError?) -> Void) {
  130. post(path: kNetPath_Room_Mic_Invite_Send, params: [
  131. "roomId": roomId,
  132. "userId": uid,
  133. "micIndex": index,
  134. ], completion: completion)
  135. }
  136. func getUserCurRoom(uid: String, completion: @escaping (LNUserCurRoomResponse?, LNHttpError?) -> Void) {
  137. post(path: kNetPath_Room_Cur, params: [
  138. "id": uid
  139. ], completion: completion)
  140. }
  141. }
  142. // MARK: 入口
  143. extension LNHttpManager {
  144. func getHallEntrance(completion: @escaping (LNRoomEntranceResponse?, LNHttpError?) -> Void) {
  145. post(path: kNetPath_Room_Entrance, completion: completion)
  146. }
  147. func getRandomRoom(completion: @escaping (LNRandomRoomResponse?, LNHttpError?) -> Void) {
  148. post(path: kNetPath_Room_Random, params: [
  149. "roomTypes": LNRoomType.availableType.map({ $0.rawValue }),
  150. ], completion: completion)
  151. }
  152. func searchRoom(keyword: String, size: Int,
  153. next: String, completion: @escaping (LNSearchRoomResponse?, LNHttpError?) -> Void) {
  154. post(path: kNetPath_Room_Search, params: [
  155. "keyword": keyword,
  156. "roomTypes": LNRoomType.availableType.map({ $0.rawValue }),
  157. "page": [
  158. "size": size,
  159. "next": next
  160. ]
  161. ], completion: completion)
  162. }
  163. func getRoomList(size: Int, next: String, completion: @escaping (LNSearchRoomResponse?, LNHttpError?) -> Void) {
  164. post(path: kNetPath_Room_List, params: [
  165. "roomTypes": LNRoomType.availableType.map({ $0.rawValue }),
  166. "page": [
  167. "size": size,
  168. "next": next
  169. ]
  170. ], completion: completion)
  171. }
  172. func reportRoomUnavailable(id: String, code: String, reason: String, completion: @escaping (LNHttpError?) -> Void) {
  173. post(path: kNetPath_Room_Unavailable, params: [
  174. "id": id,
  175. "supplier": 1,
  176. "errorCode": code,
  177. "errorReson": reason
  178. ], completion: completion)
  179. }
  180. }