From fed0acbd6115e773d9a5a35cd2c8faebcf8e8cc8 Mon Sep 17 00:00:00 2001 From: eggmanQQQ <3671373519@qq.com> Date: Thu, 26 Dec 2024 19:42:30 +0800 Subject: [PATCH] =?UTF-8?q?feat=20:=20=20=E9=BA=A6=E4=BD=8D=E4=B8=8A?= =?UTF-8?q?=E9=BA=A6=20=E6=A3=80=E6=B5=8B=E5=88=A4=E6=96=AD=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avroom/activity/RoomInviteActivity.java | 15 +- .../app/avroom/adapter/RoomInviteAdapter.java | 61 ++++--- .../app/avroom/dialog/MicQueueDialog.java | 6 +- .../app/avroom/fragment/BaseRoomFragment.kt | 4 +- .../avroom/fragment/HomePartyFragment.java | 21 +++ .../avroom/presenter/BaseRoomPresenter.java | 23 ++- .../com/chwl/app/ui/widget/MicSelectDialog.kt | 106 +++++++---- .../core/gift/bean/RoomLevelChangeBean.java | 9 + .../im/custom/bean/CustomAttachParser.java | 3 + .../core/im/custom/bean/CustomAttachment.java | 3 + .../bean/RoomLevelChangeMsgAttachment.kt | 31 ++++ .../chwl/core/manager/IMNetEaseManager.java | 26 +++ .../java/com/chwl/core/manager/RoomEvent.java | 10 + .../chwl/core/room/model/RoomBaseModel.java | 172 +++++++++++------- .../com/chwl/library/common/util/OtherExt.kt | 3 + 15 files changed, 332 insertions(+), 161 deletions(-) create mode 100644 core/src/main/java/com/chwl/core/gift/bean/RoomLevelChangeBean.java create mode 100644 core/src/main/java/com/chwl/core/im/custom/bean/RoomLevelChangeMsgAttachment.kt diff --git a/app/src/main/java/com/chwl/app/avroom/activity/RoomInviteActivity.java b/app/src/main/java/com/chwl/app/avroom/activity/RoomInviteActivity.java index 9cb705aa5..16b8e1c3d 100644 --- a/app/src/main/java/com/chwl/app/avroom/activity/RoomInviteActivity.java +++ b/app/src/main/java/com/chwl/app/avroom/activity/RoomInviteActivity.java @@ -7,13 +7,6 @@ import android.text.TextUtils; import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.RecyclerView; -import com.chwl.core.room.bean.RoomOnlineUserBean; -import com.netease.nim.uikit.StatusBarUtil; -import com.netease.nim.uikit.common.util.sys.NetworkUtil; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnRefreshLoadmoreListener; import com.chwl.app.R; import com.chwl.app.avroom.adapter.RoomInviteAdapter; import com.chwl.app.avroom.presenter.RoomInvitePresenter; @@ -21,11 +14,18 @@ import com.chwl.app.avroom.view.IRoomInviteView; import com.chwl.app.base.BaseMvpActivity; import com.chwl.core.Constants; import com.chwl.core.noble.NobleResourceType; +import com.chwl.core.room.bean.RoomOnlineUserBean; import com.chwl.core.user.bean.UserInfo; import com.chwl.library.base.factory.CreatePresenter; import com.chwl.library.utils.ListUtils; import com.chwl.library.utils.ResUtil; import com.chwl.library.utils.SingleToastUtil; +import com.netease.nim.uikit.StatusBarUtil; +import com.netease.nim.uikit.common.util.sys.NetworkUtil; +import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnRefreshLoadmoreListener; import java.util.List; import java.util.Map; @@ -36,7 +36,6 @@ import java.util.Map; * @author jiahui * @date 2017/12/21 */ -//todo do 上麦逻辑 @CreatePresenter(RoomInvitePresenter.class) public class RoomInviteActivity extends BaseMvpActivity implements IRoomInviteView, RoomInviteAdapter.OnItemClickListener, RoomInviteAdapter.OnRoomOnlineNumberChangeListener { diff --git a/app/src/main/java/com/chwl/app/avroom/adapter/RoomInviteAdapter.java b/app/src/main/java/com/chwl/app/avroom/adapter/RoomInviteAdapter.java index 3a96c89cc..3efa35d2f 100644 --- a/app/src/main/java/com/chwl/app/avroom/adapter/RoomInviteAdapter.java +++ b/app/src/main/java/com/chwl/app/avroom/adapter/RoomInviteAdapter.java @@ -11,23 +11,20 @@ import android.widget.TextView; import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.RecyclerView; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.chwl.core.user.bean.UserInfo; -import com.chwl.library.utils.json.JsonUtils; -import com.netease.nim.uikit.impl.cache.NimUserInfoCache; -import com.netease.nimlib.sdk.RequestCallbackWrapper; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; -import com.netease.nimlib.sdk.uinfo.constant.GenderEnum; -import com.netease.nimlib.sdk.uinfo.model.NimUserInfo; import com.chwl.app.R; import com.chwl.app.avroom.ChatMemberDiffUtilCallback; import com.chwl.app.ui.utils.ImageLoadUtils; import com.chwl.core.manager.AvRoomDataManager; import com.chwl.core.manager.IMNetEaseManager; import com.chwl.core.manager.RoomEvent; +import com.chwl.core.user.bean.UserInfo; +import com.chwl.library.common.util.OtherExtKt; import com.chwl.library.utils.ListUtils; -import com.tencent.cos.xml.crypto.JSONUtils; +import com.netease.nim.uikit.impl.cache.NimUserInfoCache; +import com.netease.nimlib.sdk.RequestCallbackWrapper; +import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; +import com.netease.nimlib.sdk.uinfo.constant.GenderEnum; +import com.netease.nimlib.sdk.uinfo.model.NimUserInfo; import java.util.ArrayList; import java.util.List; @@ -175,25 +172,31 @@ public class RoomInviteAdapter extends RecyclerView.Adapter map = (Map) chatRoomMember.getExtension().get(chatRoomMember.getAccount()); -// String nick = map.get(UserInfo.NICK).toString(); -// String avatar = map.get(UserInfo.AVATAR).toString(); -// boolean enterHide = (boolean) map.get(UserInfo.ENTER_HIDE); -// -// if (enterHide) { -// holder.mIvAvatar.setImageResource(R.drawable.ic_mystery); -// } else { -// if (chatRoomMember.getAvatar() == null || TextUtils.isEmpty(chatRoomMember.getAvatar())) { -// ImageLoadUtils.loadAvatar(mContext, avatar, holder.mIvAvatar); -// } -// } -// if (nick != null && !TextUtils.isEmpty(nick)) { -// holder.mTvMemberName.setText(nick); -// } -// }catch (Exception e){ -// -// } + try { + Map map = (Map) chatRoomMember.getExtension().get(chatRoomMember.getAccount()); + String nick = map.get(UserInfo.NICK).toString(); + String avatar = map.get(UserInfo.AVATAR).toString(); + boolean enterHide = (boolean) map.get(UserInfo.ENTER_HIDE); + + if (enterHide) { + holder.mIvAvatar.setImageResource(R.drawable.ic_mystery); + } else { + if (chatRoomMember.getAvatar() == null || TextUtils.isEmpty(chatRoomMember.getAvatar())) { + ImageLoadUtils.loadAvatar(mContext, avatar, holder.mIvAvatar); + } + + CharSequence nickText = holder.mTvMemberName.getText(); + if (!OtherExtKt.isVerify(nickText)){ + if (OtherExtKt.isVerify(nick)) { + holder.mTvMemberName.setText(nick); + } + } + + } + + }catch (Exception e){ + + } holder.itemView.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/MicQueueDialog.java b/app/src/main/java/com/chwl/app/avroom/dialog/MicQueueDialog.java index db8e3d8a1..20d306e3e 100644 --- a/app/src/main/java/com/chwl/app/avroom/dialog/MicQueueDialog.java +++ b/app/src/main/java/com/chwl/app/avroom/dialog/MicQueueDialog.java @@ -20,10 +20,8 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; import com.chwl.app.R; import com.chwl.app.avroom.adapter.MicQueueAdapter; -import com.chwl.library.common.util.Utils; import com.chwl.app.home.helper.LoadPageDataHelper; import com.chwl.app.ui.widget.dialog.BaseDialog; import com.chwl.app.ui.widget.recyclerview.decoration.ColorDecoration; @@ -40,12 +38,14 @@ import com.chwl.core.room.queuing_mic.bean.QueuingMicMemeberInfo; import com.chwl.core.room.queuing_mic.bean.RespQueuingMicListInfo; import com.chwl.core.user.bean.BaseInfo; import com.chwl.core.utils.net.BeanObserver; +import com.chwl.library.common.util.Utils; import com.chwl.library.net.rxnet.callback.CallBack; import com.chwl.library.utils.CommonUtils; import com.chwl.library.utils.JavaUtil; import com.chwl.library.utils.ListUtils; import com.chwl.library.utils.ResUtil; import com.chwl.library.utils.SingleToastUtil; +import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; import java.util.ArrayList; import java.util.List; @@ -60,7 +60,6 @@ import io.reactivex.disposables.Disposable; * @Description * @Date 2018/12/14 */ -//todo do 上麦逻辑 public class MicQueueDialog extends BaseDialog implements LoadPageDataHelper.LoadData>, View.OnClickListener { @@ -242,6 +241,7 @@ public class MicQueueDialog extends BaseDialog implements break; } } + //todo do 上麦逻辑- 这里限制死了 8个坑位,得改 //房主的坑位key是-1 ,剩下的 8个坑的key从0 - 7 if (micPosition != -1 && micPosition < 8) { if (itemPos < adapter.getItemCount()) { diff --git a/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt b/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt index 9568e8ad4..438f2b637 100644 --- a/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt +++ b/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt @@ -1165,9 +1165,7 @@ open class BaseRoomFragment?> : } override fun onUpMicBtnClick(position: Int, chatRoomMember: MicMemberInfo?) { - if (AvRoomDataManager.get().isDatingVipMic(position) && - !AvRoomDataManager.get().isDatingVip(AuthModel.get().currentUid) - ) { + if (AvRoomDataManager.get().isDatingVipMic(position) && !AvRoomDataManager.get().isDatingVip(AuthModel.get().currentUid)) { DatingVipRuleDialog.newInstance(mContext).show() } else { mvpPresenter?.microPhonePositionClick(position, chatRoomMember) diff --git a/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyFragment.java b/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyFragment.java index 1b49ef71a..3b2fccb92 100644 --- a/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyFragment.java +++ b/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyFragment.java @@ -52,6 +52,7 @@ import com.chwl.core.gift.bean.LuckyGiftMsgSelfBean; import com.chwl.core.gift.bean.MsgSuperLuckyGift; import com.chwl.core.gift.bean.MultiGiftReceiveInfo; import com.chwl.core.gift.bean.RoomBgChangeBean; +import com.chwl.core.gift.bean.RoomLevelChangeBean; import com.chwl.core.gift.bean.RoomNotifyDialogBean; import com.chwl.core.gift.event.GiftComboEvent; import com.chwl.core.gift.toolbox.GiftToolbox; @@ -307,6 +308,8 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe onCpAboutMsg(roomEvent); case RoomEvent.MSG_ROOM_BG_CHANGE: onRoomBgChange(roomEvent); + case RoomEvent.MSG_ROOM_LEVEL_CHANGE: + onRoomLevelChange(roomEvent); break; default: break; @@ -861,6 +864,24 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe } } + /** + * 更新房间等级消息 + */ + private void onRoomLevelChange(RoomEvent roomEvent) { + Object anyData = roomEvent.getAnyData(); + if (anyData instanceof RoomLevelChangeBean ){ + + Object roomLevel = gameMainBinding.roomLevelIcon.getTag(); + if (roomLevel != null && roomLevel instanceof Integer) { + if ((Integer) roomLevel > ((RoomLevelChangeBean) anyData).roomLevel) return; + } + + gameMainBinding.roomLevelIcon.setTag(((RoomLevelChangeBean) anyData).roomLevel); + OtherExtKt.setVis(gameMainBinding.roomLevelIcon,OtherExtKt.isVerify(((RoomLevelChangeBean) anyData).getRoomLevelIcon()),false); + ImageLoadKt.loadImage(gameMainBinding.roomLevelIcon,((RoomLevelChangeBean) anyData).getRoomLevelIcon()); + } + } + @Subscribe(threadMode = ThreadMode.MAIN) public void onFollowRoomEvent(FollowRoomEvent event) { diff --git a/app/src/main/java/com/chwl/app/avroom/presenter/BaseRoomPresenter.java b/app/src/main/java/com/chwl/app/avroom/presenter/BaseRoomPresenter.java index f0e07c53b..69c56b6cf 100644 --- a/app/src/main/java/com/chwl/app/avroom/presenter/BaseRoomPresenter.java +++ b/app/src/main/java/com/chwl/app/avroom/presenter/BaseRoomPresenter.java @@ -6,19 +6,11 @@ import android.util.Log; import androidx.annotation.Nullable; -import com.chwl.app.public_chat.core.ChatRoomClient; -import com.chwl.app.public_chat.core.ChatRoomClientManager; -import com.chwl.core.initial.InitialModel; -import com.google.gson.Gson; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage; -import com.netease.nimlib.sdk.util.Entry; -import com.orhanobut.logger.Logger; import com.chwl.app.R; import com.chwl.app.avroom.view.IBaseRoomView; import com.chwl.app.base.BaseMvpPresenter; +import com.chwl.app.public_chat.core.ChatRoomClient; +import com.chwl.app.public_chat.core.ChatRoomClientManager; import com.chwl.core.auth.AuthModel; import com.chwl.core.bean.RoomQueueInfo; import com.chwl.core.gift.GiftModel; @@ -49,6 +41,13 @@ import com.chwl.library.net.rxnet.callback.CallBack; import com.chwl.library.utils.ListUtils; import com.chwl.library.utils.ResUtil; import com.chwl.library.utils.SingleToastUtil; +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder; +import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage; +import com.netease.nimlib.sdk.util.Entry; +import com.orhanobut.logger.Logger; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -281,8 +280,8 @@ public class BaseRoomPresenter extends BaseMvpPresenter upMicroPhone(micPosition, uId, isInviteUpMic, false); } - public void upMicroPhone(int micPosition, String uId, boolean isInviteUpMic, RoomInfo roomInfo, - boolean isReconnect) { + + public void upMicroPhone(int micPosition, String uId, boolean isInviteUpMic, RoomInfo roomInfo, boolean isReconnect) { mHomePartyMode.upMicroPhone(micPosition, uId, String.valueOf(roomInfo.getRoomId()), isInviteUpMic, new CallBack() { @Override diff --git a/app/src/main/java/com/chwl/app/ui/widget/MicSelectDialog.kt b/app/src/main/java/com/chwl/app/ui/widget/MicSelectDialog.kt index 6b1ebe54e..b02bf262d 100644 --- a/app/src/main/java/com/chwl/app/ui/widget/MicSelectDialog.kt +++ b/app/src/main/java/com/chwl/app/ui/widget/MicSelectDialog.kt @@ -11,17 +11,18 @@ import com.chwl.app.databinding.DialogMicSelectBinding import com.chwl.core.auth.AuthModel import com.chwl.core.manager.AvRoomDataManager import com.chwl.core.manager.IMNetEaseManager +import com.chwl.core.room.bean.RoomInfo import com.chwl.core.room.giftvalue.helper.GiftValueMrg import com.chwl.core.room.model.HomePartyModel import com.chwl.core.user.bean.BaseInfo import com.chwl.core.user.bean.UserInfo import com.chwl.library.common.util.ClickUtils.click +import com.chwl.library.common.util.doToast import com.chwl.library.net.rxnet.callback.CallBack import com.chwl.library.utils.SingleToastUtil import com.example.lib_utils.ktx.getString import io.reactivex.functions.Consumer -//todo do 上麦逻辑 class MicSelectDialog : BaseDialogFragment() { @@ -39,6 +40,7 @@ class MicSelectDialog : BaseDialogFragment() { var homePartyModel: HomePartyModel? = null var mPosition : Int? = null + var mBoosMicPos = 7 // 19麦房间的 boss pos override fun init() { @@ -50,46 +52,28 @@ class MicSelectDialog : BaseDialogFragment() { mAdapter = UpMicAdapter(context, targetUser.uid, Consumer { position: Int -> + //todo do 上麦逻辑- 资料卡上麦 自己和别人 上麦 走这里 ! + val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo ?: return@Consumer mPosition = position - mPosition?.let { - if (AvRoomDataManager.get().isLeaveMode && targetUser.uid == AvRoomDataManager.get().roomUid) { - SingleToastUtil.showToast(R.string.tips_close_leave_mode_first.getString()) - dismiss() - return@Consumer - } + if (AvRoomDataManager.get().is19Room && position == mBoosMicPos && !isMySelf) { + homePartyModel?.getRoomBossMicUp(roomInfo.roomUid, targetUser.uid) + ?.compose(bindToLifecycle()) + ?.doOnSuccess { + upMicOther(roomInfo) + } + ?.doOnError { + it?.message?.doToast() + } + ?.subscribe() + } else { if (isMySelf) { - val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo ?: return@Consumer - //自己抱自己上麦 - AvRoomDataManager.get().haveStartDragon = false - homePartyModel?.upMicroPhone( - it - 1, - targetUser.uid.toString(), - roomInfo.roomId.toString(), - true, - object : CallBack { - override fun onSuccess(data: String?) { - GiftValueMrg.get().requestUpMic(it - 1, targetUser.uid.toString()) - mActionCallBack?.onAction(0,null) //随便通知下外头 - } - - override fun onFail(code: Int, error: String?) { - } - } - ) - dismiss() - return@Consumer + uoMicMySelf(roomInfo) + } else { + upMicOther(roomInfo) } - - if (targetUser.defUser == UserInfo.USER_TYPE_ROBOT) { - SingleToastUtil.showToast(R.string.unable_to_up_mic_by_level.getString()) - return@Consumer - } - - val baseInfo = BaseInfo(targetUser.uid, targetUser.nick) - IMNetEaseManager.get().inviteMicroPhoneBySdk(baseInfo, it - 1).subscribe() - dismiss() } + }) val span = if (AvRoomDataManager.get().isHomeParty) 4 else 5 @@ -110,6 +94,56 @@ class MicSelectDialog : BaseDialogFragment() { } } + //别人上麦 + private fun upMicOther(roomInfo: RoomInfo) : Boolean{ + mPosition?.let { + if (AvRoomDataManager.get().isLeaveMode && targetUser.uid == AvRoomDataManager.get().roomUid) { + SingleToastUtil.showToast(R.string.tips_close_leave_mode_first.getString()) + dismiss() + return false + } + + if (targetUser.defUser == UserInfo.USER_TYPE_ROBOT) { + SingleToastUtil.showToast(R.string.unable_to_up_mic_by_level.getString()) + return false + } + + val baseInfo = BaseInfo(targetUser.uid, targetUser.nick) + IMNetEaseManager.get().inviteMicroPhoneBySdk(baseInfo, it - 1).subscribe() + dismiss() + } + return true + } + + //自己上麦 + private fun uoMicMySelf(roomInfo: RoomInfo) :Boolean{ + mPosition?.let { + if (isMySelf) { + //自己抱自己上麦 + AvRoomDataManager.get().haveStartDragon = false + homePartyModel?.upMicroPhone( + it - 1, + targetUser.uid.toString(), + roomInfo.roomId.toString(), + true, + object : CallBack { + override fun onSuccess(data: String?) { + GiftValueMrg.get().requestUpMic(it - 1, targetUser.uid.toString()) + mActionCallBack?.onAction(0,null) //随便通知下外头 + } + + override fun onFail(code: Int, error: String?) { + + } + } + ) + dismiss() + return true + } + } + return true + } + override fun onDestroy() { homePartyModel = null super.onDestroy() diff --git a/core/src/main/java/com/chwl/core/gift/bean/RoomLevelChangeBean.java b/core/src/main/java/com/chwl/core/gift/bean/RoomLevelChangeBean.java new file mode 100644 index 000000000..b6b0ea64f --- /dev/null +++ b/core/src/main/java/com/chwl/core/gift/bean/RoomLevelChangeBean.java @@ -0,0 +1,9 @@ +package com.chwl.core.gift.bean; + +import lombok.Data; + +@Data +public class RoomLevelChangeBean { + public String roomLevelIcon; + public int roomLevel; +} \ No newline at end of file diff --git a/core/src/main/java/com/chwl/core/im/custom/bean/CustomAttachParser.java b/core/src/main/java/com/chwl/core/im/custom/bean/CustomAttachParser.java index 5bfb2e4eb..d73e08ba6 100644 --- a/core/src/main/java/com/chwl/core/im/custom/bean/CustomAttachParser.java +++ b/core/src/main/java/com/chwl/core/im/custom/bean/CustomAttachParser.java @@ -612,6 +612,9 @@ public class CustomAttachParser implements MsgAttachmentParser { case ROOM_BG_CHANGE_FIRST: attachment = new RoomBgChangeMsgAttachment(first,second); break; + case ROOM_LEVEL_CHANGE_FIRST: + attachment = new RoomLevelChangeMsgAttachment(first,second); + break; case CustomAttachment.CUSTOM_MSG_CRAZY_ZOO: switch (second) { case CustomAttachment.CUSTOM_MSG_CRAZY_ZOO_SUB_ROOM: diff --git a/core/src/main/java/com/chwl/core/im/custom/bean/CustomAttachment.java b/core/src/main/java/com/chwl/core/im/custom/bean/CustomAttachment.java index c9ac41c43..bbb45f7ae 100644 --- a/core/src/main/java/com/chwl/core/im/custom/bean/CustomAttachment.java +++ b/core/src/main/java/com/chwl/core/im/custom/bean/CustomAttachment.java @@ -561,6 +561,9 @@ public class CustomAttachment implements MsgAttachment { //-----房間背景修改消息 public static final int ROOM_BG_CHANGE_FIRST = 113; public static final int ROOM_BG_CHANGE_SECOND = 1131; + //-----房間等级修改消息 + public static final int ROOM_LEVEL_CHANGE_FIRST = 114; + public static final int ROOM_LEVEL_CHANGE_SECOND = 1141; /** diff --git a/core/src/main/java/com/chwl/core/im/custom/bean/RoomLevelChangeMsgAttachment.kt b/core/src/main/java/com/chwl/core/im/custom/bean/RoomLevelChangeMsgAttachment.kt new file mode 100644 index 000000000..b762a7f17 --- /dev/null +++ b/core/src/main/java/com/chwl/core/im/custom/bean/RoomLevelChangeMsgAttachment.kt @@ -0,0 +1,31 @@ +package com.chwl.core.im.custom.bean + +import com.alibaba.fastjson.JSONObject +import com.chwl.core.gift.bean.RoomLevelChangeBean +import com.google.gson.Gson + +class RoomLevelChangeMsgAttachment (first: Int, second: Int) : CustomAttachment(first, second) { + @JvmField + var mLevelChangeBean : RoomLevelChangeBean?=null + + override fun parseData(data: JSONObject?) { + super.parseData(data) + if (data != null) { + try { + mLevelChangeBean = Gson().fromJson( + data.toJSONString(), + RoomLevelChangeBean::class.java + ) + } catch (e: Exception) { + e.printStackTrace() + } + } + } + + + override fun packData(): JSONObject { + val data = JSONObject() + return data + } + +} \ No newline at end of file diff --git a/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java b/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java index 384cbc3b8..1071f751d 100644 --- a/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java +++ b/core/src/main/java/com/chwl/core/manager/IMNetEaseManager.java @@ -67,6 +67,7 @@ import com.chwl.core.im.custom.bean.RoomFreeGiftAttachment; import com.chwl.core.im.custom.bean.RoomFreeGiftMsgBean; import com.chwl.core.im.custom.bean.RoomGiftValueAttachment; import com.chwl.core.im.custom.bean.RoomInfoAttachment; +import com.chwl.core.im.custom.bean.RoomLevelChangeMsgAttachment; import com.chwl.core.im.custom.bean.RoomLuckySeaAttachment; import com.chwl.core.im.custom.bean.RoomLuckySeaMsgBean; import com.chwl.core.im.custom.bean.RoomPKAttachment; @@ -1552,6 +1553,31 @@ public final class IMNetEaseManager { .setEvent(RoomEvent.MSG_ROOM_BG_CHANGE) .setRoomBgChangeBean(roomBgChangeMsgAttachment.bgChangeBean)); break; + + case ROOM_LEVEL_CHANGE_FIRST: + RoomLevelChangeMsgAttachment levelChangeMsgAttachment = (RoomLevelChangeMsgAttachment) attachment; + + // 针对房间最小化时的处理 + if (AvRoomDataManager.get().mCurrentRoomInfo != null && !AvRoomDataManager.get().hasAvRoomAct) { + String fromAccount = msg.getFromAccount(); + String sessionId = msg.getSessionId(); + String roomUid = String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getUid()); + String roomId = String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()); + + if (fromAccount !=null && fromAccount.equals(roomUid)){ + if (sessionId != null && sessionId.equals(roomId)) { + if (levelChangeMsgAttachment.mLevelChangeBean != null && levelChangeMsgAttachment.mLevelChangeBean.roomLevelIcon != null) { + AvRoomDataManager.get().mCurrentRoomInfo.setRoomLevelIcon(levelChangeMsgAttachment.mLevelChangeBean.roomLevelIcon); + } + } + } + } + + IMNetEaseManager.get().getChatRoomEventObservable().onNext(new RoomEvent() + .setEvent(RoomEvent.MSG_ROOM_LEVEL_CHANGE) + .setAnyData(levelChangeMsgAttachment.mLevelChangeBean)); + break; + case CUSTOM_MSG_ROOM_SERIAL_VALUE_CHANGED: if (second == CUSTOM_MSG_ROOM_SERIAL_VALUE_CHANGED_SUB) { RoomSerialValueChangedAttachment serialValueAttachment = (RoomSerialValueChangedAttachment) attachment; diff --git a/core/src/main/java/com/chwl/core/manager/RoomEvent.java b/core/src/main/java/com/chwl/core/manager/RoomEvent.java index c2f704041..a874fd044 100644 --- a/core/src/main/java/com/chwl/core/manager/RoomEvent.java +++ b/core/src/main/java/com/chwl/core/manager/RoomEvent.java @@ -286,6 +286,8 @@ public class RoomEvent { public static final int MSG_SELF_ENTER_ROOM = 116; //房間背景變更 public static final int MSG_ROOM_BG_CHANGE = 117; + //房间等级 变更 + public static final int MSG_ROOM_LEVEL_CHANGE = 119; /** * 收到全服礼物 @@ -324,6 +326,8 @@ public class RoomEvent { private BoomMsgAttachment boomMsg; private RoomBgChangeBean roomBgChangeBean; + private Object anyData; //通用data + /** * 需要透传出去的消息 */ @@ -615,4 +619,10 @@ public class RoomEvent { this.roomBgChangeBean = roomBgChangeBean; return this; } + + public Object getAnyData() {return anyData;} + public RoomEvent setAnyData(Object anyData) { + this.anyData = anyData; + return this; + } } diff --git a/core/src/main/java/com/chwl/core/room/model/RoomBaseModel.java b/core/src/main/java/com/chwl/core/room/model/RoomBaseModel.java index 8ec2102b4..52adc559a 100644 --- a/core/src/main/java/com/chwl/core/room/model/RoomBaseModel.java +++ b/core/src/main/java/com/chwl/core/room/model/RoomBaseModel.java @@ -5,26 +5,6 @@ import android.text.TextUtils; import android.util.SparseArray; import com.alibaba.fastjson.JSONObject; -import com.chwl.core.gift.bean.BoomInfo; -import com.chwl.core.room.bean.RoomBoomInfo; -import com.chwl.core.room.bean.RoomIcon; -import com.chwl.core.room.bean.RoomOnlineUserBean; -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.netease.nimlib.sdk.NIMChatRoomSDK; -import com.netease.nimlib.sdk.NIMClient; -import com.netease.nimlib.sdk.RequestCallback; -import com.netease.nimlib.sdk.chatroom.ChatRoomService; -import com.netease.nimlib.sdk.chatroom.constant.MemberQueryType; -import com.netease.nimlib.sdk.chatroom.constant.MemberType; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomInfo; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage; -import com.netease.nimlib.sdk.chatroom.model.MemberOption; -import com.netease.nimlib.sdk.util.Entry; -import com.orhanobut.logger.Logger; import com.chwl.core.R; import com.chwl.core.auth.AuthModel; import com.chwl.core.base.BaseModel; @@ -33,6 +13,7 @@ import com.chwl.core.bean.RoomQueueInfo; import com.chwl.core.bean.response.ServiceResult; import com.chwl.core.decoration.headwear.bean.HeadWearInfo; import com.chwl.core.exception.ErrorThrowable; +import com.chwl.core.gift.bean.BoomInfo; import com.chwl.core.gift.bean.GiftFreeInfo; import com.chwl.core.gift.bean.GiftInfo; import com.chwl.core.home.bean.BannerInfo; @@ -41,7 +22,10 @@ import com.chwl.core.manager.AvRoomDataManager; import com.chwl.core.manager.IMNetEaseManager; import com.chwl.core.room.activitytimer.TimerBean; import com.chwl.core.room.bean.BroadcastInfo; +import com.chwl.core.room.bean.RoomBoomInfo; +import com.chwl.core.room.bean.RoomIcon; import com.chwl.core.room.bean.RoomInfo; +import com.chwl.core.room.bean.RoomOnlineUserBean; import com.chwl.core.room.bean.RoomResult; import com.chwl.core.room.bean.RoomSettingTabInfo; import com.chwl.core.room.bean.RoomWelcomeConfig; @@ -58,12 +42,28 @@ import com.chwl.core.user.bean.FirstChargeInfo; import com.chwl.core.user.bean.UserInfo; import com.chwl.core.utils.net.RxHelper; import com.chwl.core.vip.bean.UserVipInfo; +import com.chwl.library.common.util.OtherExtKt; import com.chwl.library.net.rxnet.RxNet; import com.chwl.library.net.rxnet.callback.CallBack; -import com.chwl.library.utils.JavaUtil; import com.chwl.library.utils.ListUtils; import com.chwl.library.utils.ResUtil; import com.chwl.library.utils.SingleToastUtil; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.netease.nimlib.sdk.NIMChatRoomSDK; +import com.netease.nimlib.sdk.NIMClient; +import com.netease.nimlib.sdk.RequestCallback; +import com.netease.nimlib.sdk.chatroom.ChatRoomService; +import com.netease.nimlib.sdk.chatroom.constant.MemberQueryType; +import com.netease.nimlib.sdk.chatroom.constant.MemberType; +import com.netease.nimlib.sdk.chatroom.model.ChatRoomInfo; +import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; +import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage; +import com.netease.nimlib.sdk.chatroom.model.MemberOption; +import com.netease.nimlib.sdk.util.Entry; +import com.orhanobut.logger.Logger; import java.util.ArrayList; import java.util.List; @@ -340,11 +340,32 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { * @param callBack * @param teamId */ + //todo do 上麦逻辑- 抱他上麦,主动上麦 ,排麦模式 , 资料卡上麦->自己上麦 走这里 ! @SuppressLint("CheckResult") @Override - public void upMicroPhone(final int micPosition, final String uId, final String roomId, - boolean isInviteUpMic, final CallBack callBack, int teamId) { + public void upMicroPhone(final int micPosition, final String uId, final String roomId, boolean isInviteUpMic, final CallBack callBack, int teamId) { + RoomInfo mCurrentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo; + if (mCurrentRoomInfo != null) { + if (AvRoomDataManager.get().is19Room() && micPosition == 7) { + getRoomBossMicUp(AvRoomDataManager.get().getRoomUid(), AvRoomDataManager.get().getRoomUid()) + .doOnSuccess(s -> { + doUpMicroPhone(micPosition, uId, roomId, isInviteUpMic, callBack, teamId); + }).doOnError(throwable -> { + if (throwable != null) { + OtherExtKt.doToast(throwable.getMessage()); + } + }).subscribe(); + } else { + doUpMicroPhone(micPosition, uId, roomId, isInviteUpMic, callBack, teamId); + } + } else { + doUpMicroPhone(micPosition, uId, roomId, isInviteUpMic, callBack, teamId); + } + + } + + private void doUpMicroPhone(final int micPosition, final String uId, final String roomId, boolean isInviteUpMic, final CallBack callBack, int teamId){ queryRoomMicInfo(roomId) .map(this::dealMicMemberFromIMNet) .flatMap(this::dealMicChatRoomMemberFromIMNet) @@ -448,53 +469,53 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { }).toObservable(); } - /** - * 上麦 - * - * @param micPosition - * @param uId 要上麦的用户id - * @param roomId - * @param callBack - */ - @SuppressLint("CheckResult") - public void upAiMicroPhone(final int micPosition, final String uId, final String roomId, final CallBack callBack) { - RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(micPosition); - if (roomQueueInfo == null) { - return; - } - MicMemberInfo chatRoomMember = roomQueueInfo.mChatRoomMember; - final RoomMicInfo roomMicInfo = roomQueueInfo.mRoomMicInfo; - - //坑上没人且没锁 - if (roomMicInfo != null - && chatRoomMember == null) { - UserModel.get().getUserInfo(JavaUtil.str2long(uId)) - .subscribe(userInfo -> { - if (userInfo != null) { - //先看下这个用户是否在麦上 - if (AvRoomDataManager.get().isOnMic(userInfo.getUid())) { - int position = AvRoomDataManager.get().getMicPosition(userInfo.getUid()); - //下麦 - downMicroPhone(position, new CallBack() { - @Override - public void onSuccess(String data) { - updateQueueEx(micPosition, roomId, callBack, userInfo); - } - - @Override - public void onFail(int code, String error) { - if (callBack != null) { - callBack.onFail(-1, ResUtil.getString(R.string.room_model_roombasemodel_04)); - } - } - }); - } else { - updateQueueEx(micPosition, roomId, callBack, userInfo); - } - } - }); - } - } +// /** +// * 上麦 +// * +// * @param micPosition +// * @param uId 要上麦的用户id +// * @param roomId +// * @param callBack +// */ +// @SuppressLint("CheckResult") +// public void upAiMicroPhone(final int micPosition, final String uId, final String roomId, final CallBack callBack) { +// RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(micPosition); +// if (roomQueueInfo == null) { +// return; +// } +// MicMemberInfo chatRoomMember = roomQueueInfo.mChatRoomMember; +// final RoomMicInfo roomMicInfo = roomQueueInfo.mRoomMicInfo; +// +// //坑上没人且没锁 +// if (roomMicInfo != null +// && chatRoomMember == null) { +// UserModel.get().getUserInfo(JavaUtil.str2long(uId)) +// .subscribe(userInfo -> { +// if (userInfo != null) { +// //先看下这个用户是否在麦上 +// if (AvRoomDataManager.get().isOnMic(userInfo.getUid())) { +// int position = AvRoomDataManager.get().getMicPosition(userInfo.getUid()); +// //下麦 +// downMicroPhone(position, new CallBack() { +// @Override +// public void onSuccess(String data) { +// updateQueueEx(micPosition, roomId, callBack, userInfo); +// } +// +// @Override +// public void onFail(int code, String error) { +// if (callBack != null) { +// callBack.onFail(-1, ResUtil.getString(R.string.room_model_roombasemodel_04)); +// } +// } +// }); +// } else { +// updateQueueEx(micPosition, roomId, callBack, userInfo); +// } +// } +// }); +// } +// } /** * 上麦 @@ -611,6 +632,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { updateQueueEx(micPosition, roomId, callBack, userInfo, false); } + //todo do 填充麦位上的用户信息? protected void updateQueueEx(int micPosition, String roomId, final CallBack callBack, UserInfo userInfo, boolean isNoProhibitMic) { JSONObject contentJsonObj = new JSONObject(); contentJsonObj.put("uid", String.valueOf(userInfo.getUid())); @@ -829,6 +851,12 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { .compose(RxHelper.handleSchedulers()); } + public Single getRoomBossMicUp(long roomUid,long uid) { + return mRoomService.getRoomBossMicUp(roomUid,uid) + .compose(RxHelper.handleIgnoreData()) + .compose(RxHelper.handleSchedulers()); + } + public interface Api { /** @@ -1265,6 +1293,10 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { @GET("/room/boom/level/info") Single>> getBoomInfo(@Query("roomUid") long roomUid); + + @GET("/room/bossMic/up") + Single> getRoomBossMicUp(@Query("roomUid") long roomUid,@Query("uid") long uid); + } } diff --git a/library/src/module_common/java/com/chwl/library/common/util/OtherExt.kt b/library/src/module_common/java/com/chwl/library/common/util/OtherExt.kt index 2c55ff2c8..61de9ccbb 100644 --- a/library/src/module_common/java/com/chwl/library/common/util/OtherExt.kt +++ b/library/src/module_common/java/com/chwl/library/common/util/OtherExt.kt @@ -106,6 +106,9 @@ fun TextView.setString(strId:Int) { fun String?.isVerify() : Boolean { return this?.isBlank() == false } +fun CharSequence?.isVerify() : Boolean { + return this?.isBlank() == false +} fun String.toColor() : Int { return Color.parseColor(this)