房间 关闭PK模式 不主动关麦

This commit is contained in:
wzq
2023-10-09 14:45:41 +08:00
parent 24606d7b44
commit 28c2841923
6 changed files with 283 additions and 269 deletions

View File

@@ -651,7 +651,10 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
} else { } else {
val roomQueueInfo = AvRoomDataManager.get() val roomQueueInfo = AvRoomDataManager.get()
.getRoomQueueMemberInfoByAccount(myUid.toString()) .getRoomQueueMemberInfoByAccount(myUid.toString())
if (roomQueueInfo?.mChatRoomMember != null if (roomQueueInfo?.mChatRoomMember?.isNoProhibitMic == true && roomQueueInfo.mRoomMicInfo?.isMicMute == false) {
bottomView.setMicBtnEnable(true)
bottomView.setMicBtnOpen(true)
} else if (roomQueueInfo?.mChatRoomMember != null
&& myUid.toString() == roomQueueInfo.mChatRoomMember.account && myUid.toString() == roomQueueInfo.mChatRoomMember.account
&& roomQueueInfo.mRoomMicInfo?.isMicMute == true && roomQueueInfo.mRoomMicInfo?.isMicMute == true
) { ) {

View File

@@ -1455,7 +1455,8 @@ public final class IMNetEaseManager {
AvRoomModel.get().updateMyMicQueue( AvRoomModel.get().updateMyMicQueue(
AvRoomDataManager.get().getMicPosition(AuthModel.get().getCurrentUid()), AvRoomDataManager.get().getMicPosition(AuthModel.get().getCurrentUid()),
String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()), String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()),
UserModel.get().getCacheLoginUserInfo() UserModel.get().getCacheLoginUserInfo(),
!AudioEngineManager.get().isMute()
) )
.subscribe(); .subscribe();
} }
@@ -2146,7 +2147,9 @@ public final class IMNetEaseManager {
if (AvRoomDataManager.get().isOwner(chatRoomMember.getAccount())) { if (AvRoomDataManager.get().isOwner(chatRoomMember.getAccount())) {
//开麦 //开麦
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER); AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER);
AudioEngineManager.get().setMute(roomQueueInfo.mRoomMicInfo.isMicMute() || AvRoomDataManager.get().mIsNeedOpenMic); if (!roomQueueInfo.mChatRoomMember.isNoProhibitMic()) {
AudioEngineManager.get().setMute(roomQueueInfo.mRoomMicInfo.isMicMute() || AvRoomDataManager.get().mIsNeedOpenMic);
}
} }
noticeUpMic(Integer.parseInt(key), chatRoomMember.getAccount()); noticeUpMic(Integer.parseInt(key), chatRoomMember.getAccount());
} }

View File

@@ -146,33 +146,33 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
if (roomInfo == null) if (roomInfo == null)
return Single.error(new ErrorThrowable(ErrorThrowable.ROOM_INFO_NULL_ERROR)); return Single.error(new ErrorThrowable(ErrorThrowable.ROOM_INFO_NULL_ERROR));
return Single.create( return Single.create(
new SingleOnSubscribe<List<ChatRoomMember>>() { new SingleOnSubscribe<List<ChatRoomMember>>() {
@Override @Override
public void subscribe(SingleEmitter<List<ChatRoomMember>> e) throws Exception { public void subscribe(SingleEmitter<List<ChatRoomMember>> e) throws Exception {
NIMChatRoomSDK.getChatRoomService().fetchRoomMembers( NIMChatRoomSDK.getChatRoomService().fetchRoomMembers(
String.valueOf(roomInfo.getRoomId()), String.valueOf(roomInfo.getRoomId()),
memberType, memberType,
time, time,
limit limit
) )
.setCallback(new RequestCallback<List<ChatRoomMember>>() { .setCallback(new RequestCallback<List<ChatRoomMember>>() {
@Override @Override
public void onSuccess(List<ChatRoomMember> param) { public void onSuccess(List<ChatRoomMember> param) {
e.onSuccess(param); e.onSuccess(param);
} }
@Override @Override
public void onFailed(int code) { public void onFailed(int code) {
e.onError(new Throwable(String.valueOf(code))); e.onError(new Throwable(String.valueOf(code)));
} }
@Override @Override
public void onException(Throwable exception) { public void onException(Throwable exception) {
e.onError(exception); e.onError(exception);
} }
}); });
} }
}) })
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io()); .unsubscribeOn(Schedulers.io());
} }
@@ -262,32 +262,32 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
if (roomInfo == null) if (roomInfo == null)
return Single.error(new ErrorThrowable(ErrorThrowable.ROOM_INFO_NULL_ERROR)); return Single.error(new ErrorThrowable(ErrorThrowable.ROOM_INFO_NULL_ERROR));
return Single.create( return Single.create(
new SingleOnSubscribe<ChatRoomMember>() { new SingleOnSubscribe<ChatRoomMember>() {
@Override @Override
public void subscribe(SingleEmitter<ChatRoomMember> e) throws Exception { public void subscribe(SingleEmitter<ChatRoomMember> e) throws Exception {
NIMClient.getService(ChatRoomService.class).markChatRoomBlackList( NIMClient.getService(ChatRoomService.class).markChatRoomBlackList(
mark, mark,
new MemberOption(String.valueOf(roomInfo), account) new MemberOption(String.valueOf(roomInfo), account)
) )
.setCallback(new RequestCallback<ChatRoomMember>() { .setCallback(new RequestCallback<ChatRoomMember>() {
@Override @Override
public void onSuccess(ChatRoomMember param) { public void onSuccess(ChatRoomMember param) {
e.onSuccess(param); e.onSuccess(param);
} }
@Override @Override
public void onFailed(int code) { public void onFailed(int code) {
e.onError(new Throwable(String.valueOf(code))); e.onError(new Throwable(String.valueOf(code)));
} }
@Override @Override
public void onException(Throwable exception) { public void onException(Throwable exception) {
e.onError(exception); e.onError(exception);
} }
}); });
} }
}) })
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io()); .unsubscribeOn(Schedulers.io());
@@ -507,52 +507,52 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
@Override @Override
public Single<String> updateOrUpMic(RoomPKInvitedUpMicMember roomPKInvitedUpMicMember) { public Single<String> updateOrUpMic(RoomPKInvitedUpMicMember roomPKInvitedUpMicMember) {
return Single.create(new SingleOnSubscribe<String>() { return Single.create(new SingleOnSubscribe<String>() {
@Override @Override
public void subscribe(SingleEmitter<String> e) throws Exception { public void subscribe(SingleEmitter<String> e) throws Exception {
if (AvRoomDataManager.get().isOnMic(roomPKInvitedUpMicMember.getUid())) { if (AvRoomDataManager.get().isOnMic(roomPKInvitedUpMicMember.getUid())) {
//在麦上就更新信息 //在麦上就更新信息
//获取mic 信息 //获取mic 信息
RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(AvRoomDataManager.get().getMicPosition(roomPKInvitedUpMicMember.getUid())); RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(AvRoomDataManager.get().getMicPosition(roomPKInvitedUpMicMember.getUid()));
//更新自己队伍信息 //更新自己队伍信息
UserModel.get().getCacheLoginUserInfo().setGroupType(roomPKInvitedUpMicMember.getGroupType()); UserModel.get().getCacheLoginUserInfo().setGroupType(roomPKInvitedUpMicMember.getGroupType());
updateQueueEx(roomPKInvitedUpMicMember.getPosition(), updateQueueEx(roomPKInvitedUpMicMember.getPosition(),
String.valueOf(AvRoomDataManager.get().getRoomId()), String.valueOf(AvRoomDataManager.get().getRoomId()),
new CallBack<String>() { new CallBack<String>() {
@Override @Override
public void onSuccess(String data) { public void onSuccess(String data) {
e.onSuccess(data); e.onSuccess(data);
} }
@Override @Override
public void onFail(int code, String error) { public void onFail(int code, String error) {
e.onError(new Throwable("code:" + code + " error:" + error)); e.onError(new Throwable("code:" + code + " error:" + error));
} }
}, UserModel.get().getCacheLoginUserInfo()); }, UserModel.get().getCacheLoginUserInfo());
} else { } else {
//不在麦上就去上麦 //不在麦上就去上麦
upMicroPhone(roomPKInvitedUpMicMember.getPosition(), upMicroPhone(roomPKInvitedUpMicMember.getPosition(),
roomPKInvitedUpMicMember.getUid(), roomPKInvitedUpMicMember.getUid(),
String.valueOf(AvRoomDataManager.get().getRoomId()), String.valueOf(AvRoomDataManager.get().getRoomId()),
true, true,
new CallBack<String>() { new CallBack<String>() {
@Override @Override
public void onSuccess(String data) { public void onSuccess(String data) {
//上麦成功 //上麦成功
GiftValueMrg.get().requestUpMic(roomPKInvitedUpMicMember.getPosition(), GiftValueMrg.get().requestUpMic(roomPKInvitedUpMicMember.getPosition(),
roomPKInvitedUpMicMember.getUid()); roomPKInvitedUpMicMember.getUid());
e.onSuccess(data); e.onSuccess(data);
} }
@Override @Override
public void onFail(int code, String error) { public void onFail(int code, String error) {
e.onError(new Throwable("code:" + code + " error:" + error)); e.onError(new Throwable("code:" + code + " error:" + error));
} }
}, roomPKInvitedUpMicMember.getGroupType()); }, roomPKInvitedUpMicMember.getGroupType());
} }
} }
}) })
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread()); .observeOn(AndroidSchedulers.mainThread());
@@ -568,32 +568,32 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
*/ */
@Override @Override
public Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo) { public Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo) {
return updateMyMicQueue(micPosition, roomId, userInfo);
}
@Override
public Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo, boolean isNoProhibitMic) {
if (userInfo.getUid() != AuthModel.get().getCurrentUid()) { if (userInfo.getUid() != AuthModel.get().getCurrentUid()) {
return Single.error(new Throwable("该方法只能更新自己的麦序,不要更新别人的麦序信息。")); return Single.error(new Throwable("该方法只能更新自己的麦序,不要更新别人的麦序信息。"));
} }
return Single.create(new SingleOnSubscribe<String>() { return Single.create((SingleOnSubscribe<String>) e ->
@Override updateQueueEx(micPosition, roomId, new CallBack<String>() {
public void subscribe(SingleEmitter<String> e) throws Exception {
updateQueueEx(micPosition, roomId, new CallBack<String>() {
@Override @Override
public void onSuccess(String param) { public void onSuccess(String param) {
Logger.e("更新麦序额外字段成功 code:" + userInfo.getNick()); Logger.e("更新麦序额外字段成功 code:" + userInfo.getNick());
e.onSuccess("更新成功"); e.onSuccess("更新成功");
} }
@Override @Override
public void onFail(int code, String error) { public void onFail(int code, String error) {
Logger.e("更新麦序额外字段失败 code:" + code); Logger.e("更新麦序额外字段失败 code:" + code);
e.onError(new Throwable("更新麦序额外字段失败 code:" + code)); e.onError(new Throwable("更新麦序额外字段失败 code:" + code));
} }
}, userInfo); }, userInfo, isNoProhibitMic))
}
})
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread()); .observeOn(AndroidSchedulers.mainThread());
} }
@Override @Override
@@ -602,6 +602,10 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
} }
protected void updateQueueEx(int micPosition, String roomId, final CallBack<String> callBack, UserInfo userInfo) { protected void updateQueueEx(int micPosition, String roomId, final CallBack<String> callBack, UserInfo userInfo) {
updateQueueEx(micPosition, roomId, callBack, userInfo, false);
}
protected void updateQueueEx(int micPosition, String roomId, final CallBack<String> callBack, UserInfo userInfo, boolean isNoProhibitMic) {
JSONObject contentJsonObj = new JSONObject(); JSONObject contentJsonObj = new JSONObject();
contentJsonObj.put("uid", String.valueOf(userInfo.getUid())); contentJsonObj.put("uid", String.valueOf(userInfo.getUid()));
contentJsonObj.put("nick", userInfo.getNick()); contentJsonObj.put("nick", userInfo.getNick());
@@ -633,6 +637,8 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
contentJsonObj.put("preventKick", true); contentJsonObj.put("preventKick", true);
} }
contentJsonObj.put("isNoProhibitMic", isNoProhibitMic);
NIMChatRoomSDK.getChatRoomService() NIMChatRoomSDK.getChatRoomService()
.updateQueueEx(roomId, String.valueOf(micPosition), contentJsonObj.toJSONString(), true) .updateQueueEx(roomId, String.valueOf(micPosition), contentJsonObj.toJSONString(), true)
.setCallback(new RequestCallback<Void>() { .setCallback(new RequestCallback<Void>() {
@@ -667,28 +673,28 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
@Override @Override
public Observable<List<Entry<String, String>>> queryRoomMicInfo(final String roomId) { public Observable<List<Entry<String, String>>> queryRoomMicInfo(final String roomId) {
return Observable.create(new ObservableOnSubscribe<List<Entry<String, String>>>() { return Observable.create(new ObservableOnSubscribe<List<Entry<String, String>>>() {
@Override @Override
public void subscribe(ObservableEmitter<List<Entry<String, String>>> e) throws Exception { public void subscribe(ObservableEmitter<List<Entry<String, String>>> e) throws Exception {
NIMChatRoomSDK.getChatRoomService().fetchQueue(roomId) NIMChatRoomSDK.getChatRoomService().fetchQueue(roomId)
.setCallback(new RequestCallback<List<Entry<String, String>>>() { .setCallback(new RequestCallback<List<Entry<String, String>>>() {
@Override @Override
public void onSuccess(List<Entry<String, String>> param) { public void onSuccess(List<Entry<String, String>> param) {
e.onNext(param); e.onNext(param);
e.onComplete(); e.onComplete();
} }
@Override @Override
public void onFailed(int code) { public void onFailed(int code) {
e.onError(new Throwable(String.valueOf(code))); e.onError(new Throwable(String.valueOf(code)));
} }
@Override @Override
public void onException(Throwable exception) { public void onException(Throwable exception) {
e.onError(exception); e.onError(exception);
} }
}); });
} }
}).subscribeOn(Schedulers.computation()) }).subscribeOn(Schedulers.computation())
.unsubscribeOn(Schedulers.computation()); .unsubscribeOn(Schedulers.computation());
} }
@@ -701,28 +707,28 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
@Override @Override
public Observable<ChatRoomInfo> startGetOnlineMemberNumberJob(final long roomId) { public Observable<ChatRoomInfo> startGetOnlineMemberNumberJob(final long roomId) {
return Observable.create(new ObservableOnSubscribe<ChatRoomInfo>() { return Observable.create(new ObservableOnSubscribe<ChatRoomInfo>() {
@Override @Override
public void subscribe(ObservableEmitter<ChatRoomInfo> e) throws Exception { public void subscribe(ObservableEmitter<ChatRoomInfo> e) throws Exception {
NIMChatRoomSDK.getChatRoomService().fetchRoomInfo(String.valueOf(roomId)) NIMChatRoomSDK.getChatRoomService().fetchRoomInfo(String.valueOf(roomId))
.setCallback(new RequestCallback<ChatRoomInfo>() { .setCallback(new RequestCallback<ChatRoomInfo>() {
@Override @Override
public void onSuccess(ChatRoomInfo param) { public void onSuccess(ChatRoomInfo param) {
e.onNext(param); e.onNext(param);
e.onComplete(); e.onComplete();
} }
@Override @Override
public void onFailed(int code) { public void onFailed(int code) {
e.onError(new Throwable("错误码:" + code)); e.onError(new Throwable("错误码:" + code));
} }
@Override @Override
public void onException(Throwable exception) { public void onException(Throwable exception) {
e.onError(exception); e.onError(exception);
} }
}); });
} }
}).subscribeOn(Schedulers.computation()) }).subscribeOn(Schedulers.computation())
.unsubscribeOn(Schedulers.computation()); .unsubscribeOn(Schedulers.computation());
} }
@@ -745,7 +751,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
public SingleSource<RoomResult> apply(UserInfo userInfo) throws Exception { public SingleSource<RoomResult> apply(UserInfo userInfo) throws Exception {
String tmpTitle = userInfo.getNick() + "的房间"; String tmpTitle = userInfo.getNick() + "的房间";
return mRoomService.openRoom(userInfo.getUid(), AuthModel.get().getTicket(), return mRoomService.openRoom(userInfo.getUid(), AuthModel.get().getTicket(),
type, tmpTitle, roomDesc, backPic, rewardId, gameId) type, tmpTitle, roomDesc, backPic, rewardId, gameId)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()); .observeOn(AndroidSchedulers.mainThread());
@@ -753,7 +759,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
}); });
} }
return mRoomService.openRoom(uid, AuthModel.get().getTicket(), return mRoomService.openRoom(uid, AuthModel.get().getTicket(),
type, title, roomDesc, backPic, rewardId, gameId) type, title, roomDesc, backPic, rewardId, gameId)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()); .observeOn(AndroidSchedulers.mainThread());
@@ -761,8 +767,8 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
public Single<RoomInfo> closeScreen(long roomId, boolean isCloseScreen) { public Single<RoomInfo> closeScreen(long roomId, boolean isCloseScreen) {
return mRoomService.closeScreen(roomId, AuthModel.get().getCurrentUid(), isCloseScreen, return mRoomService.closeScreen(roomId, AuthModel.get().getCurrentUid(), isCloseScreen,
AuthModel.get().getTicket() AuthModel.get().getTicket()
) )
.compose(RxHelper.handleBeanData()) .compose(RxHelper.handleBeanData())
.compose(RxHelper.handleSchedulers()); .compose(RxHelper.handleSchedulers());
} }

View File

@@ -140,6 +140,8 @@ public interface IRoomBaseModel extends IModel {
*/ */
Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo); Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo);
Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo, boolean isNoProhibitMic);
void downMicroPhone(int micPosition, final CallBack<String> callBack); void downMicroPhone(int micPosition, final CallBack<String> callBack);
/** /**

View File

@@ -10,6 +10,7 @@ import com.google.gson.Gson;
import com.nnbc123.core.gift.bean.GiftType; import com.nnbc123.core.gift.bean.GiftType;
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder; import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage; import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.nnbc123.core.manager.AudioEngineManager;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
import com.nnbc123.core.auth.AuthModel; import com.nnbc123.core.auth.AuthModel;
import com.nnbc123.core.base.BaseModel; import com.nnbc123.core.base.BaseModel;
@@ -438,9 +439,9 @@ public class PkModel extends BaseModel implements IPkModel {
return Single.error(new Throwable("无当前登录账户uid")); return Single.error(new Throwable("无当前登录账户uid"));
} }
return api.openPKMode( return api.openPKMode(
AvRoomDataManager.get().mCurrentRoomInfo.getUid(), AvRoomDataManager.get().mCurrentRoomInfo.getUid(),
AuthModel.get().getCurrentUid() AuthModel.get().getCurrentUid()
) )
.flatMap(stringServiceResult -> { .flatMap(stringServiceResult -> {
if (stringServiceResult.isSuccess()) { if (stringServiceResult.isSuccess()) {
return Single.just("开启pk模式成功"); return Single.just("开启pk模式成功");
@@ -466,9 +467,9 @@ public class PkModel extends BaseModel implements IPkModel {
return Single.error(new Throwable("无当前登录账户uid")); return Single.error(new Throwable("无当前登录账户uid"));
} }
return api.closePKMode( return api.closePKMode(
AvRoomDataManager.get().mCurrentRoomInfo.getUid(), AvRoomDataManager.get().mCurrentRoomInfo.getUid(),
AuthModel.get().getCurrentUid() AuthModel.get().getCurrentUid()
) )
.flatMap(stringServiceResult -> { .flatMap(stringServiceResult -> {
if (stringServiceResult.isSuccess()) { if (stringServiceResult.isSuccess()) {
//后台发自定义消息通知所有房间内的人关闭了pk //后台发自定义消息通知所有房间内的人关闭了pk
@@ -500,10 +501,10 @@ public class PkModel extends BaseModel implements IPkModel {
} }
return api.joinPK( return api.joinPK(
AvRoomDataManager.get().mCurrentRoomInfo.getUid(), AvRoomDataManager.get().mCurrentRoomInfo.getUid(),
AuthModel.get().getCurrentUid(), AuthModel.get().getCurrentUid(),
groupType groupType
) )
.compose(RxHelper.handleBeanData()) .compose(RxHelper.handleBeanData())
.compose(RxHelper.handleSchedulers()) .compose(RxHelper.handleSchedulers())
@@ -525,9 +526,9 @@ public class PkModel extends BaseModel implements IPkModel {
return Single.error(new Throwable("无当前登录账户uid")); return Single.error(new Throwable("无当前登录账户uid"));
} }
return api.leavePK( return api.leavePK(
AvRoomDataManager.get().mCurrentRoomInfo.getUid(), AvRoomDataManager.get().mCurrentRoomInfo.getUid(),
AuthModel.get().getCurrentUid() AuthModel.get().getCurrentUid()
) )
.compose(RxHelper.handleBeanData()) .compose(RxHelper.handleBeanData())
.compose(RxHelper.handleSchedulers()) .compose(RxHelper.handleSchedulers())
; ;
@@ -563,11 +564,11 @@ public class PkModel extends BaseModel implements IPkModel {
} }
return api.loadPKMicQueueList( return api.loadPKMicQueueList(
AvRoomDataManager.get().mCurrentRoomInfo.getUid(), AvRoomDataManager.get().mCurrentRoomInfo.getUid(),
AuthModel.get().getCurrentUid(), AuthModel.get().getCurrentUid(),
page, page,
pageSize pageSize
) )
.flatMap(respQueuingMicListInfoServiceResult -> { .flatMap(respQueuingMicListInfoServiceResult -> {
if (respQueuingMicListInfoServiceResult.isSuccess()) { if (respQueuingMicListInfoServiceResult.isSuccess()) {
if (respQueuingMicListInfoServiceResult.getData() == null) { if (respQueuingMicListInfoServiceResult.getData() == null) {
@@ -595,10 +596,10 @@ public class PkModel extends BaseModel implements IPkModel {
int page, int page,
int pageSize) { int pageSize) {
return api.loadPKRecordList( return api.loadPKRecordList(
roomUid, roomUid,
page, page,
pageSize pageSize
) )
.flatMap(pkRecordListInfoServiceResult -> { .flatMap(pkRecordListInfoServiceResult -> {
if (pkRecordListInfoServiceResult.isSuccess()) { if (pkRecordListInfoServiceResult.isSuccess()) {
return Single.just(pkRecordListInfoServiceResult.getData()); return Single.just(pkRecordListInfoServiceResult.getData());
@@ -635,12 +636,12 @@ public class PkModel extends BaseModel implements IPkModel {
} }
return api.createPK( return api.createPK(
AvRoomDataManager.get().mCurrentRoomInfo.getUid(), AvRoomDataManager.get().mCurrentRoomInfo.getUid(),
AuthModel.get().getCurrentUid(), AuthModel.get().getCurrentUid(),
pkMode, pkMode,
voteMode, voteMode,
duration duration
) )
.compose(RxHelper.handleSchedulers()) .compose(RxHelper.handleSchedulers())
.flatMap(new Function<ServiceResult<RoomPkData>, SingleSource<? extends String>>() { .flatMap(new Function<ServiceResult<RoomPkData>, SingleSource<? extends String>>() {
@Override @Override
@@ -714,10 +715,10 @@ public class PkModel extends BaseModel implements IPkModel {
pkMemberInfo.getUserInfo().setGroupType(roomQueueInfo.mChatRoomMember.getGroupType()); pkMemberInfo.getUserInfo().setGroupType(roomQueueInfo.mChatRoomMember.getGroupType());
//改变麦状态 //改变麦状态
AvRoomModel.get().updateMyMicQueue( AvRoomModel.get().updateMyMicQueue(
key, key,
String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()), String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()),
pkMemberInfo.getUserInfo() pkMemberInfo.getUserInfo(),
) !AudioEngineManager.get().isMute())
.subscribe(); .subscribe();
} }
} }
@@ -773,10 +774,10 @@ public class PkModel extends BaseModel implements IPkModel {
} }
return api.beginPK( return api.beginPK(
AvRoomDataManager.get().mCurrentRoomInfo.getUid(), AvRoomDataManager.get().mCurrentRoomInfo.getUid(),
curPkInfo.getPkId(), curPkInfo.getPkId(),
new Gson().toJson(createPKMembers) new Gson().toJson(createPKMembers)
) )
.flatMap(new Function<ServiceResult<RoomPkData>, SingleSource<String>>() { .flatMap(new Function<ServiceResult<RoomPkData>, SingleSource<String>>() {
@Override @Override
public SingleSource<String> apply(ServiceResult<RoomPkData> response) throws Exception { public SingleSource<String> apply(ServiceResult<RoomPkData> response) throws Exception {
@@ -836,8 +837,8 @@ public class PkModel extends BaseModel implements IPkModel {
@Override @Override
public Single<RoomPkData> loadPKDataByRoomId(long roomUid) { public Single<RoomPkData> loadPKDataByRoomId(long roomUid) {
return api.loadPKDataByRoomId( return api.loadPKDataByRoomId(
roomUid roomUid
) )
.compose(RxHelper.handleSchedulers()) .compose(RxHelper.handleSchedulers())
.flatMap(new Function<ServiceResult<RespPKData>, SingleSource<RoomPkData>>() { .flatMap(new Function<ServiceResult<RespPKData>, SingleSource<RoomPkData>>() {
@Override @Override
@@ -869,72 +870,61 @@ public class PkModel extends BaseModel implements IPkModel {
@Override @Override
public Single<String> inviteInTeam(List<RoomPKInvitedUpMicMember> roomPKInvitedUpMicMember) { public Single<String> inviteInTeam(List<RoomPKInvitedUpMicMember> roomPKInvitedUpMicMember) {
return Single.create(new SingleOnSubscribe<ChatRoomMessage>() { return Single.create((SingleOnSubscribe<ChatRoomMessage>) e -> {
@Override //发送给自定义消息
public void subscribe(SingleEmitter<ChatRoomMessage> e) throws Exception { RoomPkAttachment roomPkAttachment = new RoomPkAttachment(CustomAttachment.CUSTOM_MESS_SUB_ROOM_PK_INVITE);
//发送给自定义消息 Map<String, RoomPKInvitedUpMicMember> micMemberMap = new HashMap<>();
RoomPkAttachment roomPkAttachment = new RoomPkAttachment(CustomAttachment.CUSTOM_MESS_SUB_ROOM_PK_INVITE); for (RoomPKInvitedUpMicMember pkInvitedUpMicMember : roomPKInvitedUpMicMember) {
Map<String, RoomPKInvitedUpMicMember> micMemberMap = new HashMap<>(); micMemberMap.put(pkInvitedUpMicMember.getUid(), pkInvitedUpMicMember);
for (RoomPKInvitedUpMicMember pkInvitedUpMicMember : roomPKInvitedUpMicMember) {
micMemberMap.put(pkInvitedUpMicMember.getUid(), pkInvitedUpMicMember);
}
roomPkAttachment.setRoomPKInvitedUpMicMember(micMemberMap);
ChatRoomMessage inviteToTeamMsg = ChatRoomMessageBuilder.createChatRoomCustomMessage(
// 聊天室id
AvRoomDataManager.get().mCurrentRoomInfo.getRoomId() + "",
//attachment
roomPkAttachment
);
e.onSuccess(inviteToTeamMsg);
} }
}) roomPkAttachment.setRoomPKInvitedUpMicMember(micMemberMap);
.flatMap(new Function<ChatRoomMessage, SingleSource<? extends ChatRoomMessage>>() { ChatRoomMessage inviteToTeamMsg = ChatRoomMessageBuilder.createChatRoomCustomMessage(
@Override // 聊天室id
public SingleSource<? extends ChatRoomMessage> apply(ChatRoomMessage msg) throws Exception { AvRoomDataManager.get().mCurrentRoomInfo.getRoomId() + "",
return IMNetEaseManager.get().sendChatRoomMessage(msg, false); //attachment
} roomPkAttachment
}) );
.flatMap(new Function<ChatRoomMessage, SingleSource<String>>() {
@Override
public SingleSource<String> apply(ChatRoomMessage chatRoomMessage) throws Exception {
//添加公屏
RoomPkAttachment roomPkAttachment = (RoomPkAttachment) chatRoomMessage.getAttachment();
Map<String, RoomPKInvitedUpMicMember> inviteMap = roomPkAttachment.getRoomPKInvitedUpMicMemberMap();
Iterator<Map.Entry<String, RoomPKInvitedUpMicMember>> iterator = inviteMap.entrySet().iterator();
RoomPKInvitedUpMicMember self = null;
boolean isInTeam = false;
while (iterator.hasNext()) {
RoomPKInvitedUpMicMember value = iterator.next().getValue();
if (String.valueOf(AuthModel.get().getCurrentUid()).equals(value.getUid())) {
self = value;
}
//已经在队伍里面的人就不显示进队伍
if (PkModel.get().getTeamIdInPKMemberList(value.getUid()) > 0) {
continue;
}
if (value.getGroupType() != PKTeamInfo.TEAM_NONE) {
isInTeam = true;
}
}
if (isInTeam) {
IMNetEaseManager.get().addMessagesImmediately(chatRoomMessage);
}
//如果是自己进队伍、出队伍,自己改变自己的麦序信息 e.onSuccess(inviteToTeamMsg);
if (self != null) { })
UserModel.get().getCacheLoginUserInfo().setGroupType(self.getGroupType()); .flatMap(msg -> IMNetEaseManager.get().sendChatRoomMessage(msg, false))
AvRoomModel.get().updateMyMicQueue( .flatMap((Function<ChatRoomMessage, SingleSource<String>>) chatRoomMessage -> {
self.getPosition(), //添加公屏
String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()), RoomPkAttachment roomPkAttachment = (RoomPkAttachment) chatRoomMessage.getAttachment();
UserModel.get().getCacheLoginUserInfo() Map<String, RoomPKInvitedUpMicMember> inviteMap = roomPkAttachment.getRoomPKInvitedUpMicMemberMap();
) Iterator<Map.Entry<String, RoomPKInvitedUpMicMember>> iterator = inviteMap.entrySet().iterator();
.subscribe(); RoomPKInvitedUpMicMember self = null;
boolean isInTeam = false;
while (iterator.hasNext()) {
RoomPKInvitedUpMicMember value = iterator.next().getValue();
if (String.valueOf(AuthModel.get().getCurrentUid()).equals(value.getUid())) {
self = value;
}
//已经在队伍里面的人就不显示进队伍
if (PkModel.get().getTeamIdInPKMemberList(value.getUid()) > 0) {
continue;
}
if (value.getGroupType() != PKTeamInfo.TEAM_NONE) {
isInTeam = true;
} }
return Single.just("邀请上麦成功");
} }
}) if (isInTeam) {
; IMNetEaseManager.get().addMessagesImmediately(chatRoomMessage);
}
//如果是自己进队伍、出队伍,自己改变自己的麦序信息
if (self != null) {
UserModel.get().getCacheLoginUserInfo().setGroupType(self.getGroupType());
AvRoomModel.get().updateMyMicQueue(
self.getPosition(),
String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()),
UserModel.get().getCacheLoginUserInfo(),
!AudioEngineManager.get().isMute()
)
.subscribe();
}
return Single.just("邀请上麦成功");
});
} }
@Override @Override
@@ -1089,12 +1079,12 @@ public class PkModel extends BaseModel implements IPkModel {
return beginPK(); return beginPK();
} else if (curPkInfo.getPkStatus() == RoomPkData.PK_STATUS_IN_PK) { } else if (curPkInfo.getPkStatus() == RoomPkData.PK_STATUS_IN_PK) {
return api.createPK( return api.createPK(
AvRoomDataManager.get().mCurrentRoomInfo.getUid(), AvRoomDataManager.get().mCurrentRoomInfo.getUid(),
AuthModel.get().getCurrentUid(), AuthModel.get().getCurrentUid(),
curPkInfo.getPkMode(), curPkInfo.getPkMode(),
curPkInfo.getVoteMode(), curPkInfo.getVoteMode(),
curPkInfo.getDuration() curPkInfo.getDuration()
) )
.compose(RxHelper.handleSchedulers()) .compose(RxHelper.handleSchedulers())
.flatMap(new Function<ServiceResult<RoomPkData>, SingleSource<? extends String>>() { .flatMap(new Function<ServiceResult<RoomPkData>, SingleSource<? extends String>>() {
@Override @Override
@@ -1113,12 +1103,12 @@ public class PkModel extends BaseModel implements IPkModel {
} }
return api.createPK( return api.createPK(
AvRoomDataManager.get().mCurrentRoomInfo.getUid(), AvRoomDataManager.get().mCurrentRoomInfo.getUid(),
AuthModel.get().getCurrentUid(), AuthModel.get().getCurrentUid(),
curPkInfo.getPkMode(), curPkInfo.getPkMode(),
curPkInfo.getVoteMode(), curPkInfo.getVoteMode(),
curPkInfo.getDuration() curPkInfo.getDuration()
) )
.compose(RxHelper.handleSchedulers()) .compose(RxHelper.handleSchedulers())
.flatMap(new Function<ServiceResult<RoomPkData>, SingleSource<? extends String>>() { .flatMap(new Function<ServiceResult<RoomPkData>, SingleSource<? extends String>>() {
@Override @Override
@@ -1162,8 +1152,8 @@ public class PkModel extends BaseModel implements IPkModel {
@Override @Override
public Single<RoomPkData> loadPKDataById(String pkId) { public Single<RoomPkData> loadPKDataById(String pkId) {
return api.loadPKDataById( return api.loadPKDataById(
pkId pkId
) )
.flatMap(new Function<ServiceResult<RoomPkData>, SingleSource<RoomPkData>>() { .flatMap(new Function<ServiceResult<RoomPkData>, SingleSource<RoomPkData>>() {
@Override @Override
public SingleSource<RoomPkData> apply(ServiceResult<RoomPkData> respPKDataServiceResult) throws Exception { public SingleSource<RoomPkData> apply(ServiceResult<RoomPkData> respPKDataServiceResult) throws Exception {

View File

@@ -49,6 +49,11 @@ public class MicMemberInfo {
private int teamId = 0; private int teamId = 0;
private boolean isSelected = false; private boolean isSelected = false;
/**
* pk模式更新麦位信息, 默认开麦
*/
private boolean isNoProhibitMic = false;
//<editor-fold defaultstate="collapsed" desc="delombok"> //<editor-fold defaultstate="collapsed" desc="delombok">
//非麦序队列字段 end //非麦序队列字段 end
//</editor-fold> //</editor-fold>
@@ -315,4 +320,9 @@ public class MicMemberInfo {
this.isSelected = isSelected; this.isSelected = isSelected;
} }
//</editor-fold> //</editor-fold>
public boolean isNoProhibitMic() {
return isNoProhibitMic;
}
} }