MsgVm.kt 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799
  1. package com.swago.room.vm
  2. import android.app.Application
  3. import android.widget.Toast
  4. import com.swago.baseswago.baseroom.IRoomInfo
  5. import com.swago.baseswago.baseroom.RoleType
  6. import com.swago.baseswago.baseroom.SwagoRoomManager
  7. import com.swago.baseswago.baseroom.viewmodel.AbsMsgVm
  8. import com.swago.baseswago.im.IRoomChat
  9. import com.swago.baseswago.im.ImConstant
  10. import com.swago.baseswago.im.ImConstant.anchor_close_room
  11. import com.swago.baseswago.im.ImConstant.cancel_forbid_speak
  12. import com.swago.baseswago.im.ImConstant.delete_room_admin
  13. import com.swago.baseswago.im.ImConstant.follow_anchor_success
  14. import com.swago.baseswago.im.ImConstant.forbid_speak
  15. import com.swago.baseswago.im.ImConstant.force_close_live_room
  16. import com.swago.baseswago.im.ImConstant.game_win_big_prize
  17. import com.swago.baseswago.im.ImConstant.house_open_live
  18. import com.swago.baseswago.im.ImConstant.invite_user_on_mic
  19. import com.swago.baseswago.im.ImConstant.jifen_change
  20. import com.swago.baseswago.im.ImConstant.jifen_clear
  21. import com.swago.baseswago.im.ImConstant.level_up
  22. import com.swago.baseswago.im.ImConstant.lock_un_lock_mic
  23. import com.swago.baseswago.im.ImConstant.lucky_gift
  24. import com.swago.baseswago.im.ImConstant.lucky_gift_prize
  25. import com.swago.baseswago.im.ImConstant.modify_wish_gift
  26. import com.swago.baseswago.im.ImConstant.multi_jifen_change
  27. import com.swago.baseswago.im.ImConstant.multi_send_gift
  28. import com.swago.baseswago.im.ImConstant.notice_update
  29. import com.swago.baseswago.im.ImConstant.open_close_mic
  30. import com.swago.baseswago.im.ImConstant.red_envelope
  31. import com.swago.baseswago.im.ImConstant.red_envelope_broadcast
  32. import com.swago.baseswago.im.ImConstant.remove_room
  33. import com.swago.baseswago.im.ImConstant.room_chat_text
  34. import com.swago.baseswago.im.ImConstant.room_dan_mu
  35. import com.swago.baseswago.im.ImConstant.send_wish_gift
  36. import com.swago.baseswago.im.ImConstant.set_room_admin
  37. import com.swago.baseswago.im.ImConstant.svg_gift
  38. import com.swago.baseswago.im.ImConstant.update_audience
  39. import com.swago.baseswago.im.ImConstant.update_mic_list_data
  40. import com.swago.baseswago.im.ImConstant.user_agree_invite_by_anchor
  41. import com.swago.baseswago.im.ImConstant.user_down_mic
  42. import com.swago.baseswago.im.ImConstant.user_exit_room
  43. import com.swago.baseswago.im.ImConstant.user_join_room
  44. import com.swago.baseswago.im.ImConstant.user_like
  45. import com.swago.baseswago.im.ImConstant.user_refuse_invite_by_anchor
  46. import com.swago.baseswago.model.RedEnvelope
  47. import com.swago.baseswago.model.im.*
  48. import com.swago.baseswago.model.live.ForceCloseModel
  49. import com.swago.baseswago.model.live.ReceiveModel
  50. import com.swago.baseswago.model.im.GamePrize
  51. import com.swago.baseswago.model.live.IMWishGiftModel
  52. import com.swago.baseswago.model.live.RoomUserChangeModel
  53. import com.swago.baseswago.model.live.RoomUserModel
  54. import com.swago.baseswago.model.live.WishGift
  55. import com.swago.baseswago.model.live.audio.*
  56. import com.swago.baseswago.model.live.gift.IMGiftModel
  57. import com.swago.baseswago.util.AppContext
  58. import com.swago.baseswago.util.BitmapUtils
  59. import com.swago.baseswago.util.UserInfo
  60. import com.swago.room.audio.AudioRoomManager
  61. import com.swago.room.audio.IAudioRoomListener
  62. import com.swago.room.bean.UserRoomModel
  63. import com.swago.room.enum.RoomType
  64. import com.swago.room.manager.JoinRoomManager
  65. import java.util.concurrent.CopyOnWriteArrayList
  66. /**
  67. *@date 2021/10/10 10:00
  68. *description:
  69. */
  70. class MsgVm(application: Application) : AbsMsgVm(application) {
  71. var isReady = false
  72. var newChatMsgFun: ((iRoomChat: IRoomChat?) -> Unit)? = null
  73. var anchorRoomClosed: ((data: AnchorRoomClosedBean?) -> Unit)? = null
  74. //强制关播
  75. var forceCloseAnchorRoom: ((forceCloseModel: ForceCloseModel) -> Unit)? = null
  76. var inComeChange: ((income: String) -> Unit)? = null
  77. var updateHotValue: ((hotValue: String) -> Unit)? = null
  78. var kickFromRoom: (() -> Unit)? = null
  79. var forbidSpeakOrCancel: ((cancel: Boolean) -> Unit)? = null
  80. var addAudioGiftAnimFun: ((audioSendGiftModel:AudioSendGiftModel) -> Unit)? = null
  81. var updateUserRoom: ((data: ArrayList<RoomUserModel.ListBean>, count: Int) -> Unit)? = null
  82. var newRedEnvelopeCome: ((redEnvelope: RedEnvelope) -> Unit)? = null
  83. var multiJiFenChangeFun:((data: List<Jifen>) -> Unit)? = null
  84. var changeWishGiftFun:((data:CopyOnWriteArrayList<WishGift>)->Unit)? = null
  85. //设置或者取消房间管理员
  86. var setOrDeleteRoomAdmin: ((isSet: Int) -> Unit)? = null
  87. //红包传送门
  88. var openRedEnvelopPortal: ((redEnvelope: RedEnvelope) -> Unit)? = null
  89. /**
  90. * 播放svg动画
  91. */
  92. var playSvgUrl: ((data: IMGiftModel,isShowDanDaoView:Boolean) -> Unit)? = null
  93. /**
  94. * 礼物飘条
  95. */
  96. var waftFun: ((data: IPiaoTiao) -> Unit)? = null
  97. /**
  98. * 礼物弹道展示
  99. */
  100. var showGiftDanDao: ((data: IMGiftModel) -> Unit)? = null
  101. /**
  102. * 被邀请的用户展示被邀请弹窗
  103. */
  104. var openInviteByAnchorFun: ((imAudioModel: IMAudioModel) -> Unit)? = null
  105. /**
  106. * 更新语音房公告
  107. */
  108. var updateAudioNotice:((notice:String)->Unit)? = null
  109. /**
  110. * 弹幕
  111. */
  112. var addDanMuFun:((danMuBean:DanMuBean)->Unit)? = null
  113. /**
  114. * 红包飘条
  115. */
  116. var addHongbaoPiaotiao:((redEnvelop:RedEnvelope)->Unit)? = null
  117. /**
  118. * 弹出主播升级弹窗
  119. */
  120. var openLevelUpHostDialog:((imLevelUpMsgBean: IMLevelUpMsgBean)->Unit)? = null
  121. /**
  122. * 点赞
  123. */
  124. var likeActionFun:((url:String,value:String)->Unit)? = null
  125. /**
  126. * 开播(小黑屋)
  127. */
  128. var openHouseOpenLiveFun:((houseOpenLiveData: HouseOpenLiveData)->Unit)? = null
  129. var changeNameChangeFun:((data: ChangeNameData) -> Unit)? = null
  130. val joinRoomManager by lazy {
  131. JoinRoomManager()
  132. }
  133. override fun receiveMsg() {
  134. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<RoomChatMsgBean>>(room_chat_text) {
  135. if (it.getGroupId() == (SwagoRoomManager.iRoomInfo?.getRoomGroupId() ?: "")) {
  136. it.data?.let {
  137. newChatMsgFun?.invoke(it)
  138. }
  139. }
  140. }
  141. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<UserJoinRoomBean>>(user_join_room) {
  142. if (isReady && it.getGroupId() == (SwagoRoomManager.iRoomInfo?.getRoomGroupId()
  143. ?: "")
  144. ) {
  145. if (SwagoRoomManager.roleType == RoleType.user || it.data?.senderCode != UserInfo.getUserInfo()?.user_account) {
  146. it.data?.let {
  147. updateHotValue?.invoke(it.hotValue)
  148. joinRoomManager.addJoinRoomData(it)
  149. BitmapUtils.loadFile(AppContext.getContext() , it.androidBadgeSpecial){ bitmap ->
  150. newChatMsgFun?.invoke(it)
  151. }
  152. }
  153. }
  154. }
  155. }
  156. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<UserJoinRoomBean>>(user_exit_room) {
  157. if (it.getGroupId() == (SwagoRoomManager.iRoomInfo?.getRoomGroupId() ?: "")) {
  158. if (SwagoRoomManager.roleType == RoleType.user || it.data?.senderCode != UserInfo.getUserInfo()?.user_account) {
  159. it.data?.let {
  160. updateHotValue?.invoke(it.hotValue)
  161. }
  162. }
  163. }
  164. }
  165. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<RoomUserChangeModel>>(update_audience) {
  166. it.data?.let { model ->
  167. if (model.room_id == (SwagoRoomManager.iRoomInfo?.getRoomId() ?: "")) {
  168. updateUserRoom?.invoke(model.users, model.count)
  169. }
  170. }
  171. }
  172. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<AnchorRoomClosedBean>>(anchor_close_room) {
  173. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  174. if (iRoomInfo.getRoomId() == (it.data?.roomId ?: "")) {
  175. anchorRoomClosed?.invoke(it.data)
  176. }
  177. }
  178. }
  179. //后台强制关播
  180. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<ForceCloseModel>>(force_close_live_room) {
  181. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  182. it.data?.let {
  183. if (iRoomInfo.getRoomId() == (it.roomId)) {
  184. forceCloseAnchorRoom?.invoke(it)
  185. }
  186. }
  187. }
  188. }
  189. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMGiftModel>>(svg_gift) {
  190. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  191. if (isReady) {
  192. it.data?.let {
  193. if (iRoomInfo.getRoomId() == (it.roomId ?: "")) {
  194. playSvgUrl?.invoke(it,true)
  195. inComeChange?.invoke(it.incomeCount)
  196. }
  197. waftFun?.invoke(it)
  198. }
  199. }
  200. }
  201. }
  202. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMGiftModel>>(lucky_gift) {
  203. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  204. if (isReady) {
  205. it.data?.let {
  206. if (iRoomInfo.getRoomId() == (it.roomId ?: "")) {
  207. UserInfo.getUserInfo()?.let { userInfoModel ->
  208. if (userInfoModel.id != it.senderId) {
  209. showGiftDanDao?.invoke(it)
  210. inComeChange?.invoke(it.incomeCount)
  211. }
  212. }
  213. }
  214. }
  215. }
  216. }
  217. }
  218. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMGiftModel>>(lucky_gift_prize) {
  219. if (isReady) {
  220. it.data?.let {
  221. if (it.multiple >= 500) {
  222. waftFun?.invoke(it)
  223. }
  224. }
  225. }
  226. }
  227. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<FollowSuccessMsgBean>>(
  228. follow_anchor_success
  229. ) {
  230. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  231. if (isReady) {
  232. it.data?.let {
  233. if (iRoomInfo.getRoomId() == (it.roomId ?: "")) {
  234. newChatMsgFun?.invoke(it)
  235. }
  236. }
  237. }
  238. }
  239. }
  240. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<ReceiveModel>>(remove_room) {
  241. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  242. UserInfo.getUserInfo()?.let { userInfo ->
  243. it.data?.let {
  244. if (it.roomId == iRoomInfo.getRoomId() && it.receiverId == userInfo.id) {
  245. kickFromRoom?.invoke()
  246. }
  247. }
  248. }
  249. }
  250. }
  251. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<ReceiveModel>>(forbid_speak) {
  252. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  253. UserInfo.getUserInfo()?.let { userInfo ->
  254. it.data?.let {
  255. if (it.roomId == iRoomInfo.getRoomId() && it.receiverId == userInfo.id) {
  256. forbidSpeakOrCancel?.invoke(true)
  257. }
  258. }
  259. }
  260. }
  261. }
  262. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<ReceiveModel>>(cancel_forbid_speak) {
  263. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  264. UserInfo.getUserInfo()?.let { userInfo ->
  265. it.data?.let {
  266. if (it.roomId == iRoomInfo.getRoomId() && it.receiverId == userInfo.id) {
  267. forbidSpeakOrCancel?.invoke(false)
  268. }
  269. }
  270. }
  271. }
  272. }
  273. //红包
  274. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<RedEnvelope>>(red_envelope) {
  275. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  276. it.data?.let {
  277. if (it.roomId == iRoomInfo.getRoomId()) {
  278. newRedEnvelopeCome?.invoke(it)
  279. newChatMsgFun?.invoke(it)
  280. it.bigNotice = 0
  281. addHongbaoPiaotiao?.invoke(it)
  282. }
  283. }
  284. }
  285. }
  286. //红包全局通知
  287. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<RedEnvelope>>(red_envelope_broadcast) {
  288. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  289. it.data?.let {
  290. if (isReady && it.roomId != iRoomInfo.getRoomId()) {
  291. //其他直播间用户收到这个全局红包的通知触发弹窗
  292. openRedEnvelopPortal?.invoke(it)
  293. it.bigNotice = 1
  294. addHongbaoPiaotiao?.invoke(it)
  295. }
  296. }
  297. }
  298. }
  299. //游戏中奖飘条
  300. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<GamePrize>>(game_win_big_prize) {
  301. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  302. it.data?.let {
  303. if (isReady) {
  304. //游戏飘条
  305. waftFun?.invoke(it)
  306. }
  307. }
  308. }
  309. }
  310. //设置管理员
  311. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<BecomeManagerBean>>(set_room_admin) {
  312. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  313. UserInfo.getUserInfo()?.let { userInfo ->
  314. it.data?.let {
  315. if (it.roomId == iRoomInfo.getRoomId()) {
  316. if (it.receiverId == userInfo.id) {
  317. setOrDeleteRoomAdmin?.invoke(1)
  318. }
  319. newChatMsgFun?.invoke(it)
  320. }
  321. }
  322. }
  323. }
  324. }
  325. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<ReceiveModel>>(delete_room_admin) {
  326. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  327. UserInfo.getUserInfo()?.let { userInfo ->
  328. it.data?.let {
  329. if (it.roomId == iRoomInfo.getRoomId() && it.receiverId == userInfo.id) {
  330. setOrDeleteRoomAdmin?.invoke(0)
  331. }
  332. }
  333. }
  334. }
  335. }
  336. /**
  337. * 弹幕
  338. */
  339. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<DanMuBean>>(
  340. room_dan_mu
  341. ) {
  342. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  343. it.data?.let {
  344. if (it.roomId == iRoomInfo.getRoomId()) {
  345. addDanMuFun?.invoke(it)
  346. }
  347. }
  348. }
  349. }
  350. /**
  351. * 升级
  352. */
  353. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMLevelUpMsgBean>>(
  354. level_up
  355. ) {
  356. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  357. it.data?.let {
  358. if (it.roomId == iRoomInfo.getRoomId()) {
  359. //如果是主播那么弹升级弹窗 如果是用户那么公聊显示消息
  360. if (it.getSenderId()==iRoomInfo.getAnchorId()){
  361. openLevelUpHostDialog?.invoke(it)
  362. }else{
  363. newChatMsgFun?.invoke(it)
  364. }
  365. }
  366. }
  367. }
  368. }
  369. /**
  370. * 点赞
  371. */
  372. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMLevelUpMsgBean>>(
  373. user_like
  374. ) {
  375. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  376. it.data?.let {
  377. if (it.roomId == iRoomInfo.getRoomId()) {
  378. UserInfo.getUserInfo()?.let { userInfo ->
  379. if (it.getSenderId() == userInfo.id){
  380. likeActionFun?.invoke(userInfo.user_head_img_url,it.giveVal)
  381. }else{
  382. likeActionFun?.invoke("",it.giveVal)
  383. }
  384. }
  385. }
  386. }
  387. }
  388. }
  389. /**
  390. * 送心愿礼物
  391. */
  392. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMWishGiftModel>>(
  393. send_wish_gift
  394. ) {
  395. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  396. it.data?.let {
  397. if (it.roomId == iRoomInfo.getRoomId()) {
  398. changeWishGiftFun?.invoke(it.list)
  399. }
  400. }
  401. }
  402. }
  403. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMWishGiftModel>>(
  404. modify_wish_gift
  405. ) {
  406. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  407. it.data?.let {
  408. if (it.roomId == iRoomInfo.getRoomId()) {
  409. changeWishGiftFun?.invoke(it.list)
  410. }
  411. }
  412. }
  413. }
  414. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMAudioModel>>(lock_un_lock_mic) {
  415. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  416. it.data?.let {
  417. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  418. AudioRoomManager.dispatchLockOrUnlockSeat(it)
  419. }
  420. }
  421. }
  422. }
  423. //邀请用户上麦
  424. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMAudioModel>>(invite_user_on_mic) {
  425. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  426. it.data?.let {
  427. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  428. UserInfo.getUserInfo()?.let { userInfoModel ->
  429. if (userInfoModel.id == it.receiverId) {
  430. //被邀请的用户弹窗
  431. openInviteByAnchorFun?.invoke(it)
  432. }
  433. }
  434. }
  435. }
  436. }
  437. }
  438. //用户同意主播邀请
  439. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMAudioModel>>(user_agree_invite_by_anchor) {
  440. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  441. it.data?.let {
  442. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  443. UserInfo.getUserInfo()?.let { userInfoModel ->
  444. if (userInfoModel.id == it.receiverId) {
  445. Toast.makeText(
  446. AppContext.getContext(),
  447. "用户同意了您的邀请",
  448. Toast.LENGTH_SHORT
  449. ).show()
  450. }
  451. }
  452. }
  453. }
  454. }
  455. }
  456. //用户拒绝主播邀请
  457. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMAudioModel>>(
  458. user_refuse_invite_by_anchor
  459. ) {
  460. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  461. it.data?.let {
  462. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  463. UserInfo.getUserInfo()?.let { userInfoModel ->
  464. if (userInfoModel.id == it.receiverId) {
  465. //被邀请的用户弹窗
  466. Toast.makeText(
  467. AppContext.getContext(),
  468. "用户拒绝了您的邀请",
  469. Toast.LENGTH_SHORT
  470. ).show()
  471. }
  472. }
  473. }
  474. }
  475. }
  476. }
  477. //麦位数据更新
  478. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMAudioSeatUpdateModel>>(
  479. update_mic_list_data
  480. ) {
  481. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  482. it.data?.let {
  483. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  484. //列表有数据更新
  485. val audioSeatModel = AudioSeatModel(
  486. it.maiSeatInfo.userName,
  487. it.maiSeatInfo.userAvatar,
  488. it.maiSeatInfo.userId,
  489. it.maiSeatInfo.maiStatus,
  490. it.maiSeatInfo.lock,
  491. it.maiSeatInfo.integration,
  492. it.maiSeatInfo.voiceUserId,
  493. it.maiSeatInfo.maiIndex,
  494. 0,
  495. it.maiSeatInfo.head_special
  496. )
  497. AudioRoomManager.dispatchUpdateData(audioSeatModel)
  498. UserInfo.getUserInfo()?.let { userInfoModel ->
  499. if (userInfoModel.id == it.maiSeatInfo.userId) {
  500. AudioRoomManager.isOnMic = true
  501. AudioRoomManager.maiIndex = it.maiSeatInfo.maiIndex
  502. }
  503. }
  504. }
  505. }
  506. }
  507. }
  508. //用户被主播下麦
  509. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMAudioModel>>(
  510. user_down_mic
  511. ) {
  512. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  513. it.data?.let {
  514. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  515. UserInfo.getUserInfo()?.let { userInfoModel ->
  516. if (userInfoModel.id == it.receiverId) {
  517. AudioRoomManager.resetData()
  518. AudioRoomManager.dispatchDownSeatMic()
  519. }
  520. }
  521. }
  522. }
  523. }
  524. }
  525. //闭麦和开麦
  526. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMAudioModel>>(
  527. open_close_mic
  528. ) {
  529. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  530. it.data?.let {
  531. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  532. UserInfo.getUserInfo()?.let { userInfoModel ->
  533. if (userInfoModel.id == it.receiverId) {
  534. if (it.action == 1) {
  535. AudioRoomManager.dispatchOpenSeatMic()
  536. } else if (it.action == 2) {
  537. AudioRoomManager.dispatchMuteSeatMic()
  538. }
  539. }
  540. }
  541. }
  542. }
  543. }
  544. }
  545. /**
  546. * 积分清零
  547. */
  548. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMAudioModel>>(
  549. jifen_clear
  550. ) {
  551. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  552. it.data?.let {
  553. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  554. AudioRoomManager.dispatchClearJiFen()
  555. }
  556. }
  557. }
  558. }
  559. /**
  560. * 积分变更
  561. */
  562. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMAudioModel>>(
  563. jifen_change
  564. ) {
  565. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  566. it.data?.let {
  567. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  568. AudioRoomManager.dispatchChangeJiFen(it)
  569. }
  570. }
  571. }
  572. }
  573. /**
  574. * 公告更新
  575. */
  576. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<IMAudioModel>>(
  577. notice_update
  578. ) {
  579. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  580. it.data?.let {
  581. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  582. updateAudioNotice?.invoke(it.notice)
  583. SwagoRoomManager.iRoomInfo?.let {iRoomInfo ->
  584. (iRoomInfo as UserRoomModel).roomModel?.yuying_notice_content = it.notice
  585. }
  586. }
  587. }
  588. }
  589. }
  590. /**
  591. * 多人送礼
  592. */
  593. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<AudioSendGiftModel>>(
  594. multi_send_gift
  595. ) {
  596. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  597. it.data?.let {
  598. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  599. inComeChange?.invoke(it.incomeCount)
  600. if (it.isSvga == 1){
  601. val imGiftModel = IMGiftModel()
  602. imGiftModel.svga = it.svgaUrl
  603. imGiftModel.senderName = it.senderName
  604. val stringBuffer = StringBuffer()
  605. it.receivers.forEach { receiver ->
  606. stringBuffer.append(receiver.receiverName)
  607. }
  608. imGiftModel.receiverName = stringBuffer.toString()
  609. imGiftModel.giftName = it.giftName
  610. imGiftModel.giftIdName = it.giftIdName
  611. imGiftModel.giftArName = it.giftArName
  612. imGiftModel.giftEnName = it.giftEnName
  613. playSvgUrl?.invoke(imGiftModel,true)
  614. }
  615. //多人送礼动画
  616. if (it.senderId != UserInfo.getUserInfo()?.id){
  617. if (it.giftType == 3) {
  618. val imGiftModel = IMGiftModel()
  619. imGiftModel.giftIcon = it.giftIcon
  620. imGiftModel.senderName = it.senderName
  621. val receiverName = StringBuffer()
  622. val receiverUserId =StringBuffer()
  623. it.receivers.forEach {
  624. receiverName.append("${it.receiverName} ,")
  625. receiverUserId.append("{${it.receiverId},}")
  626. }
  627. if (it.receivers.isNotEmpty())
  628. receiverName.deleteCharAt(receiverName.length - 1)
  629. imGiftModel.receiverName = receiverName.toString()
  630. imGiftModel.giftNum = it.giftNum
  631. imGiftModel.multiple = it.multiple
  632. imGiftModel.senderId = it.senderId
  633. imGiftModel.giftId = it.giftId
  634. imGiftModel.giftOneceNum = it.giftOneceNum
  635. imGiftModel.senderAvatar = it.senderAvatar
  636. imGiftModel.isCombo = it.isCombo
  637. imGiftModel.senderCode = it.senderCode
  638. imGiftModel.receiverUserId = receiverUserId.toString()
  639. showGiftDanDao?.invoke(imGiftModel)
  640. } else {
  641. if (it.giftType == 1 || it.giftType == 5){
  642. val imGiftModel = IMGiftModel()
  643. imGiftModel.giftIcon = it.giftIcon
  644. imGiftModel.giftNum = it.giftNum
  645. imGiftModel.senderId = it.senderId
  646. imGiftModel.giftId = it.giftId
  647. imGiftModel.giftOneceNum = it.giftOneceNum
  648. imGiftModel.senderAvatar = it.senderAvatar
  649. imGiftModel.giftIdName = it.giftIdName
  650. imGiftModel.giftName = it.giftName
  651. imGiftModel.giftArName = it.giftArName
  652. imGiftModel.giftEnName = it.giftEnName
  653. imGiftModel.senderName = it.senderName
  654. imGiftModel.multiple = it.multiple
  655. val receiverName = StringBuffer()
  656. it.receivers.forEach {
  657. receiverName.append("${it.receiverName} ,")
  658. }
  659. if (it.receivers.isNotEmpty())
  660. receiverName.deleteCharAt(receiverName.length - 1)
  661. imGiftModel.receiverName = receiverName.toString()
  662. playSvgUrl?.invoke(imGiftModel ,true)
  663. }
  664. addAudioGiftAnimFun?.invoke(it)
  665. }
  666. }
  667. }
  668. }
  669. }
  670. }
  671. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<MultiJiFenModel>>(
  672. multi_jifen_change
  673. ) {
  674. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  675. it.data?.let {
  676. if (it.roomId == iRoomInfo.getRoomId() && it.roomSessionId == iRoomInfo.getBroadcastId()) {
  677. multiJiFenChangeFun?.invoke(it.jifenList)
  678. }
  679. }
  680. }
  681. }
  682. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<HouseOpenLiveData>>(
  683. house_open_live
  684. ){
  685. SwagoRoomManager.iRoomInfo?.let { iRoomInfo ->
  686. it.data?.let {
  687. if (it.roomId == iRoomInfo.getRoomId() && iRoomInfo.getRoomType() == RoomType.HOUSE.type && it.anchorId == iRoomInfo.getAnchorId()){
  688. openHouseOpenLiveFun?.invoke(it)
  689. }
  690. }
  691. }
  692. }
  693. imGroupNewMsgListener.handleMsgType<CusNewMsgBean<ChangeNameData>>(
  694. ImConstant.change_user_name
  695. ){
  696. it.data?.let {
  697. UserInfo.getUserInfo()?.let { userInfo ->
  698. if (it.userId == userInfo.id){
  699. changeNameChangeFun?.invoke(it)
  700. }
  701. }
  702. }
  703. }
  704. }
  705. override fun changeRoom(iRoomInfo: IRoomInfo) {
  706. }
  707. override fun leaveRoom(iRoomInfo: IRoomInfo) {
  708. }
  709. override fun joinedRoom(iRoomInfo: IRoomInfo) {
  710. }
  711. override fun endRoom(iRoomInfo: IRoomInfo?) {
  712. }
  713. override fun closeRoomed() {
  714. }
  715. }