feat : 麦位上麦 检测判断接口
This commit is contained in:
@@ -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<IRoomInviteView, RoomInvitePresenter>
|
||||
implements IRoomInviteView, RoomInviteAdapter.OnItemClickListener, RoomInviteAdapter.OnRoomOnlineNumberChangeListener {
|
||||
|
@@ -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<RoomInviteAdapter.Ro
|
||||
ImageLoadUtils.loadAvatar(mContext, chatRoomMember.getAvatar(), holder.mIvAvatar);
|
||||
holder.mTvMemberName.setText(chatRoomMember.getNick());
|
||||
|
||||
// try {
|
||||
// Map<String, Object> map = (Map<String, Object>) 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<String, Object> map = (Map<String, Object>) 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
|
||||
|
@@ -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<List<QueuingMicMemeberInfo>>, 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()) {
|
||||
|
@@ -1165,9 +1165,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P1 : BaseRoomPresenter<V>?> :
|
||||
}
|
||||
|
||||
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)
|
||||
|
@@ -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) {
|
||||
|
@@ -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<V extends IBaseRoomView> 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<String>() {
|
||||
@Override
|
||||
|
@@ -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<DialogMicSelectBinding>() {
|
||||
|
||||
|
||||
@@ -39,6 +40,7 @@ class MicSelectDialog : BaseDialogFragment<DialogMicSelectBinding>() {
|
||||
var homePartyModel: HomePartyModel? = null
|
||||
|
||||
var mPosition : Int? = null
|
||||
var mBoosMicPos = 7 // 19麦房间的 boss pos
|
||||
|
||||
override fun init() {
|
||||
|
||||
@@ -50,46 +52,28 @@ class MicSelectDialog : BaseDialogFragment<DialogMicSelectBinding>() {
|
||||
|
||||
mAdapter = UpMicAdapter(context, targetUser.uid,
|
||||
Consumer<Int> { 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<String?> {
|
||||
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<DialogMicSelectBinding>() {
|
||||
}
|
||||
}
|
||||
|
||||
//别人上麦
|
||||
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<String?> {
|
||||
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()
|
||||
|
@@ -0,0 +1,9 @@
|
||||
package com.chwl.core.gift.bean;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class RoomLevelChangeBean {
|
||||
public String roomLevelIcon;
|
||||
public int roomLevel;
|
||||
}
|
@@ -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:
|
||||
|
@@ -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;
|
||||
|
||||
|
||||
/**
|
||||
|
@@ -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<RoomLevelChangeBean>(
|
||||
data.toJSONString(),
|
||||
RoomLevelChangeBean::class.java
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun packData(): JSONObject {
|
||||
val data = JSONObject()
|
||||
return data
|
||||
}
|
||||
|
||||
}
|
@@ -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;
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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<String> callBack, int teamId) {
|
||||
public void upMicroPhone(final int micPosition, final String uId, final String roomId, boolean isInviteUpMic, final CallBack<String> 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<String> 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<String> 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<String>() {
|
||||
@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<String> 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<String>() {
|
||||
// @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<String> 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<String> 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<ServiceResult<List<BoomInfo>>> getBoomInfo(@Query("roomUid") long roomUid);
|
||||
|
||||
|
||||
@GET("/room/bossMic/up")
|
||||
Single<ServiceResult<JsonElement>> getRoomBossMicUp(@Query("roomUid") long roomUid,@Query("uid") long uid);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user