feat : 麦位上麦 检测判断接口

This commit is contained in:
eggmanQQQ
2024-12-26 19:42:30 +08:00
parent ce706bf90f
commit fed0acbd61
15 changed files with 332 additions and 161 deletions

View File

@@ -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 {

View File

@@ -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

View File

@@ -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()) {

View File

@@ -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)

View File

@@ -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) {

View File

@@ -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

View File

@@ -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()