Merge branch 'develop_new' into develop_home

This commit is contained in:
oujunhui
2020-05-09 19:03:28 +08:00
11 changed files with 181 additions and 85 deletions

View File

@@ -3101,4 +3101,11 @@ public class HomePartyRoomFragment extends BaseMvpFragment<IHomePartyView, HomeP
setActTimerVisibility(View.GONE); setActTimerVisibility(View.GONE);
} }
@Override
public void updateMicView() {
gameBinding.microView.getAdapter().notifyDataSetChanged();
}
} }

View File

@@ -1,12 +1,11 @@
package com.yizhuan.erban.avroom.presenter; package com.yizhuan.erban.avroom.presenter;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import androidx.annotation.NonNull;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import androidx.annotation.NonNull;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.NIMClient;
@@ -31,7 +30,6 @@ import com.yizhuan.xchat_android_core.im.custom.bean.RoomInfoAttachment;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager; import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.manager.RoomEvent; import com.yizhuan.xchat_android_core.manager.RoomEvent;
import com.yizhuan.xchat_android_core.manager.event.HistoryMessageEvent;
import com.yizhuan.xchat_android_core.mentoring_relationship.model.MentoringRelationshipModel; import com.yizhuan.xchat_android_core.mentoring_relationship.model.MentoringRelationshipModel;
import com.yizhuan.xchat_android_core.miniworld.bean.MiniWorldInWorldInfo; import com.yizhuan.xchat_android_core.miniworld.bean.MiniWorldInWorldInfo;
import com.yizhuan.xchat_android_core.miniworld.model.MiniWorldModel; import com.yizhuan.xchat_android_core.miniworld.model.MiniWorldModel;
@@ -46,6 +44,7 @@ import com.yizhuan.xchat_android_core.room.game.AiPlayEndEvent;
import com.yizhuan.xchat_android_core.room.giftvalue.helper.GiftValueMrg; import com.yizhuan.xchat_android_core.room.giftvalue.helper.GiftValueMrg;
import com.yizhuan.xchat_android_core.room.model.AvRoomModel; import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
import com.yizhuan.xchat_android_core.room.model.HomePartyModel; import com.yizhuan.xchat_android_core.room.model.HomePartyModel;
import com.yizhuan.xchat_android_core.room.model.RoomBaseModel;
import com.yizhuan.xchat_android_core.room.model.RoomSettingModel; import com.yizhuan.xchat_android_core.room.model.RoomSettingModel;
import com.yizhuan.xchat_android_core.super_admin.model.SuperAdminModel; import com.yizhuan.xchat_android_core.super_admin.model.SuperAdminModel;
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil; import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil;
@@ -57,7 +56,6 @@ import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
import com.yizhuan.xchat_android_core.utils.net.RxHelper; import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.base.PresenterEvent; import com.yizhuan.xchat_android_library.base.PresenterEvent;
import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack; import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack;
import com.yizhuan.xchat_android_library.rxbus.RxBus;
import com.yizhuan.xchat_android_library.utils.ListUtils; import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil; import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig; import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
@@ -71,14 +69,12 @@ import java.util.Objects;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.Single; import io.reactivex.Single;
import io.reactivex.SingleSource; import io.reactivex.SingleSource;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.BiConsumer; import io.reactivex.functions.BiConsumer;
import io.reactivex.functions.Consumer; import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function; import io.reactivex.functions.Function;
import io.reactivex.functions.Predicate;
import static com.yizhuan.xchat_android_core.manager.RoomEvent.DRAGON_BAR_CANCEL; import static com.yizhuan.xchat_android_core.manager.RoomEvent.DRAGON_BAR_CANCEL;
import static com.yizhuan.xchat_android_core.manager.RoomEvent.DRAGON_BAR_END; import static com.yizhuan.xchat_android_core.manager.RoomEvent.DRAGON_BAR_END;
@@ -306,6 +302,11 @@ public class HomePartyPresenter extends BaseMvpPresenter<IHomePartyView> {
@Override @Override
public void onFail(int code, String error) { public void onFail(int code, String error) {
if (code == RoomBaseModel.CODE_UPDATE_MIC) {
if (getMvpView() != null) {
getMvpView().updateMicView();
}
}
Logger.i("用户%1$s上麦失败%2$s----", uId, error); Logger.i("用户%1$s上麦失败%2$s----", uId, error);
} }
}); });

View File

@@ -59,7 +59,7 @@ public class RoomSettingPresenter extends BaseMvpPresenter<IRoomSettingView> {
} }
public void requestRoomInfo(long uid) { public void requestRoomInfo(long uid) {
model.requestRoomInfoFromService(uid+"", new CallBack<RoomInfo>() { model.requestRoomInfoFromService(uid + "", new CallBack<RoomInfo>() {
@Override @Override
public void onSuccess(RoomInfo data) { public void onSuccess(RoomInfo data) {
if (getMvpView() != null) { if (getMvpView() != null) {
@@ -75,9 +75,9 @@ public class RoomSettingPresenter extends BaseMvpPresenter<IRoomSettingView> {
} }
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
public void updateGiftEffect(RoomInfo roomInfo){ public void updateGiftEffect(RoomInfo roomInfo) {
IMNetEaseManager.get().updateGiftEffect(roomInfo.getRoomId()) IMNetEaseManager.get().updateGiftEffect(roomInfo.getRoomId())
.subscribe((chatRoomMessage,throwable) -> { .subscribe((chatRoomMessage, throwable) -> {
if (!AvRoomDataManager.get().haveSelfChange) { if (!AvRoomDataManager.get().haveSelfChange) {
IMNetEaseManager.get().getChatRoomEventObservable().onNext(new RoomEvent() IMNetEaseManager.get().getChatRoomEventObservable().onNext(new RoomEvent()
.setEvent(RoomEvent.RECEIVE_MSG) .setEvent(RoomEvent.RECEIVE_MSG)
@@ -87,9 +87,9 @@ public class RoomSettingPresenter extends BaseMvpPresenter<IRoomSettingView> {
} }
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
public void updateAudiouality(RoomInfo roomInfo){ public void updateAudiouality(RoomInfo roomInfo) {
IMNetEaseManager.get().updateAudiouality(roomInfo.getRoomId()) IMNetEaseManager.get().updateAudiouality(roomInfo.getRoomId())
.subscribe((chatRoomMessage,throwable) -> { .subscribe((chatRoomMessage, throwable) -> {
IMNetEaseManager.get().getChatRoomEventObservable().onNext(new RoomEvent() IMNetEaseManager.get().getChatRoomEventObservable().onNext(new RoomEvent()
.setEvent(RoomEvent.RECEIVE_MSG) .setEvent(RoomEvent.RECEIVE_MSG)
.setChatRoomMessage(chatRoomMessage)); .setChatRoomMessage(chatRoomMessage));
@@ -226,9 +226,7 @@ public class RoomSettingPresenter extends BaseMvpPresenter<IRoomSettingView> {
if (userInfo != null) if (userInfo != null)
IMNetEaseManager.get().leaveModeMessage(roomInfo1.getRoomId(), userInfo.getNick(), userInfo.getGender(), userInfo.getAvatar()).subscribe(); IMNetEaseManager.get().leaveModeMessage(roomInfo1.getRoomId(), userInfo.getNick(), userInfo.getGender(), userInfo.getAvatar()).subscribe();
}); });
GiftValueModel.get().upMic(AuthModel.get().getCurrentUid(), -1).subscribe();
if (roomInfo1.isShowGiftValue())
GiftValueModel.get().upMic(AuthModel.get().getCurrentUid(), -1).subscribe();
} }
} }

View File

@@ -113,4 +113,5 @@ public interface IHomePartyView extends IMvpBaseView {
*/ */
void onFollowFail(String msg); void onFollowFail(String msg);
void updateMicView();
} }

View File

@@ -17,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.BaseViewHolder;
import com.coorchice.library.utils.LogUtils;
import com.netease.nim.uikit.common.util.log.LogUtil; import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nim.uikit.support.glide.GlideApp; import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R; import com.yizhuan.erban.R;

View File

@@ -6,11 +6,13 @@ import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.os.Bundle; import android.os.Bundle;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import android.text.Editable; import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher; import android.text.TextWatcher;
@@ -25,6 +27,7 @@ import android.widget.PopupWindow;
import android.widget.TextView; import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.coorchice.library.utils.LogUtils;
import com.netease.nim.uikit.StatusBarUtil; import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.business.session.emoji.EmoticonPickerView; import com.netease.nim.uikit.business.session.emoji.EmoticonPickerView;
import com.netease.nim.uikit.business.session.emoji.IEmoticonSelectedListener; import com.netease.nim.uikit.business.session.emoji.IEmoticonSelectedListener;
@@ -124,11 +127,11 @@ public class DynamicDetailActivity extends BaseActivity implements IEmoticonSele
ImageView ivSharePic; ImageView ivSharePic;
TextView tvCommentCountOption; TextView tvCommentCountOption;
// @BindView(R.id.tv_flag_mini_world) // @BindView(R.id.tv_flag_mini_world)
TextView tvFlagMiniWorld; TextView tvFlagMiniWorld;
// @BindView(R.id.layout_root_mini_world) // @BindView(R.id.layout_root_mini_world)
ConstraintLayout layoutRootMiniWorld; ConstraintLayout layoutRootMiniWorld;
// @BindView(R.id.tv_mini_world_name) // @BindView(R.id.tv_mini_world_name)
TextView tvMiniWorldName; TextView tvMiniWorldName;
private View viewLineDetailHeader; private View viewLineDetailHeader;
@@ -198,6 +201,10 @@ public class DynamicDetailActivity extends BaseActivity implements IEmoticonSele
*/ */
public static void start(Context context, long dynamicId, long worldId, int listPosition, public static void start(Context context, long dynamicId, long worldId, int listPosition,
boolean needKeyboard, int event) { boolean needKeyboard, int event) {
if (dynamicId == 0) {
LogUtils.e("-------------------------动态id为0------------------");
return;
}
String label = "其他"; String label = "其他";
switch (event) { switch (event) {
case 1: case 1:
@@ -810,7 +817,7 @@ public class DynamicDetailActivity extends BaseActivity implements IEmoticonSele
} }
/** /**
*header - 更多 * header - 更多
*/ */
private void header_more() { private void header_more() {
List<ButtonItem> list = new ArrayList<>(); List<ButtonItem> list = new ArrayList<>();
@@ -832,9 +839,9 @@ public class DynamicDetailActivity extends BaseActivity implements IEmoticonSele
} }
/** /**
*header - 点赞 * header - 点赞
*/ */
private void header_like(){ private void header_like() {
ivLikePic.setEnabled(false); ivLikePic.setEnabled(false);
int status = bean.isLike() ? 0 : 1; int status = bean.isLike() ? 0 : 1;
DynamicModel.get().like(worldId, dynamicId, bean.getUid(), status, 3) DynamicModel.get().like(worldId, dynamicId, bean.getUid(), status, 3)
@@ -960,7 +967,7 @@ public class DynamicDetailActivity extends BaseActivity implements IEmoticonSele
// drawable.stop(); // drawable.stop();
// drawable.start(); // drawable.start();
// } else { // } else {
ivLikePic.setImageResource(R.drawable.icon_dy_list_like); ivLikePic.setImageResource(R.drawable.icon_dy_list_like);
// } // }
} else { } else {
ivLikePic.setImageResource(R.drawable.icon_dy_list_like_false); ivLikePic.setImageResource(R.drawable.icon_dy_list_like_false);
@@ -983,7 +990,7 @@ public class DynamicDetailActivity extends BaseActivity implements IEmoticonSele
// .append(commentCountStr, // .append(commentCountStr,
// new ForegroundColorSpan(getResources().getColor(R.color.color_333333))) // new ForegroundColorSpan(getResources().getColor(R.color.color_333333)))
// .append(")"); // .append(")");
String comment = "所有评论("+commentCountStr+")"; String comment = "所有评论(" + commentCountStr + ")";
tvCommentCount.setText(comment); tvCommentCount.setText(comment);
tvCommentCountOption.setText(commentCountStr); tvCommentCountOption.setText(commentCountStr);
} }

View File

@@ -63,7 +63,7 @@ public class GiftValueModel extends BaseModel implements IGiftValueModel {
@Override @Override
public Single<String> upMic(long micUid, int position) { public Single<String> upMic(long micUid, int position) {
return api.upMic(AvRoomDataManager.get().getRoomUid(), return api.upMic(AvRoomDataManager.get().getRoomUid(),
micUid, position) micUid, position,AvRoomDataManager.get().isShowGiftValue())
.compose(RxHelper.handleIgnoreData()); .compose(RxHelper.handleIgnoreData());
} }
@@ -119,7 +119,8 @@ public class GiftValueModel extends BaseModel implements IGiftValueModel {
@POST("/room/gift/value/up/mic") @POST("/room/gift/value/up/mic")
Single<ServiceResult<JsonElement>> upMic(@Field("roomUid") long roomUid, Single<ServiceResult<JsonElement>> upMic(@Field("roomUid") long roomUid,
@Field("micUid") long micUid, @Field("micUid") long micUid,
@Field("position") int position); @Field("position") int position,
@Field("showGiftValue") boolean showGiftValue);
/** /**
* 下麦,通知缓存变更 * 下麦,通知缓存变更

View File

@@ -244,9 +244,6 @@ public class GiftValueMrg {
} }
public void requestUpMic(int micPosition, String upMicUid) { public void requestUpMic(int micPosition, String upMicUid) {
if (!AvRoomDataManager.get().isShowGiftValue()) {
return;
}
if (!TextUtils.isEmpty(upMicUid)) { if (!TextUtils.isEmpty(upMicUid)) {
GiftValueModel.get().upMic(JavaUtil.str2long(upMicUid), micPosition).subscribe(); GiftValueModel.get().upMic(JavaUtil.str2long(upMicUid), micPosition).subscribe();
} }

View File

@@ -1,9 +1,13 @@
package com.yizhuan.xchat_android_core.room.model; package com.yizhuan.xchat_android_core.room.model;
import android.annotation.SuppressLint;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.SparseArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonElement; 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.NIMChatRoomSDK;
import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.RequestCallback; import com.netease.nimlib.sdk.RequestCallback;
@@ -45,6 +49,7 @@ import com.yizhuan.xchat_android_library.net.rxnet.RxNet;
import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack; import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack;
import com.yizhuan.xchat_android_library.utils.JavaUtil; import com.yizhuan.xchat_android_library.utils.JavaUtil;
import com.yizhuan.xchat_android_library.utils.ListUtils; import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -80,6 +85,8 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
*/ */
protected static final int ROOM_MEMBER_SIZE = 50; protected static final int ROOM_MEMBER_SIZE = 50;
public static final int CODE_UPDATE_MIC = 110;
protected final Api mRoomService; protected final Api mRoomService;
public RoomBaseModel() { public RoomBaseModel() {
@@ -292,7 +299,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
/** /**
* 邀请上麦 * 邀请上麦
* *
* @param micInfo 上麦用户基础信息至少需要uid * @param micInfo 上麦用户基础信息至少需要uid
* @param position position * @param position position
* @return Single<ChatRoomMessage> * @return Single<ChatRoomMessage>
*/ */
@@ -302,8 +309,8 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
} }
/** /**
* 如果需要上麦用户昵称相关的操作,使用{@link #inviteMicroPhone(BaseInfo, int)} * 如果需要上麦用户昵称相关的操作,使用{@link #inviteMicroPhone(BaseInfo, int)}
* 此方法昵称是空串 * 此方法昵称是空串
*/ */
@Override @Override
public Single<ChatRoomMessage> inviteMicroPhone(long micUid, int position) { public Single<ChatRoomMessage> inviteMicroPhone(long micUid, int position) {
@@ -321,65 +328,140 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
* @param callBack * @param callBack
* @param teamId * @param teamId
*/ */
@SuppressLint("CheckResult")
@Override @Override
public void upMicroPhone(final int micPosition, final String uId, final String roomId, public void upMicroPhone(final int micPosition, final String uId, final String roomId,
boolean isInviteUpMic, final CallBack<String> callBack, int teamId) { boolean isInviteUpMic, final CallBack<String> callBack, int teamId) {
RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(micPosition);
if (roomQueueInfo == null) {
return;
}
ChatRoomMember chatRoomMember = roomQueueInfo.mChatRoomMember;
final RoomMicInfo roomMicInfo = roomQueueInfo.mRoomMicInfo;
//坑上没人且没锁 queryRoomMicInfo(roomId)
if (roomMicInfo != null .map(this::dealMicMemberFromIMNet)
&& ((!roomMicInfo.isMicLock() || AvRoomDataManager.get().isRoomOwner(uId) .flatMap(this::dealMicChatRoomMemberFromIMNet)
|| AvRoomDataManager.get().isRoomAdmin(uId)) .observeOn(AndroidSchedulers.mainThread())
|| isInviteUpMic) .subscribe(roomQueueInfoSparseArray -> {
&& chatRoomMember == null) { RoomQueueInfo roomQueueInfo = roomQueueInfoSparseArray.get(micPosition);
final UserInfo userInfo = UserModel.get().getCacheLoginUserInfo(); if (roomQueueInfo == null) {
if (userInfo != null) { return;
userInfo.setGroupType(teamId);
CallBack<String> callBackTmp = new CallBack<String>() {
@Override
public void onSuccess(String data) {
callBack.onSuccess(data);
} }
ChatRoomMember chatRoomMember = roomQueueInfo.mChatRoomMember;
@Override final RoomMicInfo roomMicInfo = roomQueueInfo.mRoomMicInfo;
public void onFail(int code, String error) { if (chatRoomMember != null) {
callBack.onFail(code, error); SingleToastUtil.showToast("该麦位已经有人了哦~");
callBack.onFail(CODE_UPDATE_MIC,"该麦位已经有人了");
return;
} }
}; //坑上没人且没锁
if (roomMicInfo != null &&
(!roomMicInfo.isMicLock() || AvRoomDataManager.get().isRoomOwner(uId) ||
AvRoomDataManager.get().isRoomAdmin(uId) || isInviteUpMic)) {
final UserInfo userInfo = UserModel.get().getCacheLoginUserInfo();
if (userInfo != null) {
userInfo.setGroupType(teamId);
CallBack<String> callBackTmp = new CallBack<String>() {
@Override
public void onSuccess(String data) {
callBack.onSuccess(data);
}
//先看下这个用户是否在麦上 @Override
if (AvRoomDataManager.get().isOnMic(userInfo.getUid())) { public void onFail(int code, String error) {
int position = AvRoomDataManager.get().getMicPosition(userInfo.getUid()); callBack.onFail(code, error);
//下麦 }
downMicroPhone(position, new CallBack<String>() { };
@Override
public void onSuccess(String data) {
updateQueueEx(micPosition, roomId, callBackTmp, userInfo);
}
public void onFail(int code, String error) { //先看下这个用户是否在麦上
callBackTmp.onFail(-1, "上麦导致下麦失败"); 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, callBackTmp, userInfo);
}
public void onFail(int code, String error) {
callBackTmp.onFail(-1, "上麦导致下麦失败");
}
});
} else {
updateQueueEx(micPosition, roomId, callBackTmp, userInfo);
}
} }
}); }
} else { });
updateQueueEx(micPosition, roomId, callBackTmp, userInfo); }
/**
* 处理网易云信坑位信息
* 这里只有在这个坑位原来没人但是云信队列信息有人,才更新这个坑位,防止挤麦
*/
private List<String> dealMicMemberFromIMNet(List<Entry<String, String>> entries) {
List<String> accounts = new ArrayList<>();
if (!ListUtils.isListEmpty(entries)) {
JsonParser jsonParser = new JsonParser();
ChatRoomMember chatRoomMember;
for (Entry<String, String> entry : entries) {
RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(Integer.parseInt(entry.key));
//当前坑上有人就不要去管了
if (roomQueueInfo != null && roomQueueInfo.mChatRoomMember == null) {
JsonObject valueJsonObj = jsonParser.parse(entry.value).getAsJsonObject();
if (valueJsonObj != null) {
chatRoomMember = new ChatRoomMember();
if (valueJsonObj.has("uid")) {
int uid = valueJsonObj.get("uid").getAsInt();
accounts.add(String.valueOf(uid));
chatRoomMember.setAccount(String.valueOf(uid));
}
if (valueJsonObj.has("nick")) {
chatRoomMember.setNick(valueJsonObj.get("nick").getAsString());
}
if (valueJsonObj.has("avatar")) {
chatRoomMember.setAvatar(valueJsonObj.get("avatar").getAsString());
}
if (valueJsonObj.has("gender")) {
roomQueueInfo.gender = valueJsonObj.get("gender").getAsInt();
}
if (valueJsonObj.has("groupType")) {
roomQueueInfo.groupType = valueJsonObj.get("groupType").getAsInt();
}
roomQueueInfo.mChatRoomMember = chatRoomMember;
}
AvRoomDataManager.get().mMicQueueMemberMap.put(Integer.parseInt(entry.key), roomQueueInfo);
} }
} }
} }
return accounts;
} }
/**
* 处理网易云信队列上人员的信息
*/
private Observable<SparseArray<RoomQueueInfo>> dealMicChatRoomMemberFromIMNet(List<String> accounts) {
if (ListUtils.isListEmpty(accounts))
return Observable.just(AvRoomDataManager.get().mMicQueueMemberMap);
return IMNetEaseManager.get().fetchRoomMembersByIds(accounts)
.observeOn(AndroidSchedulers.mainThread())
.flatMap(chatRoomMembers -> {
for (ChatRoomMember chatRoomMember : chatRoomMembers) {
AvRoomDataManager.get().updateQueueChatRoomMemberExtension(chatRoomMember);
}
//accounts不为空则表示出现了本地队列信息和云信队列信息不一致的情况,更新队列信息后更新下相应的坑位信息
//updateMicView();
return Single.just(AvRoomDataManager.get().mMicQueueMemberMap);
}).toObservable();
}
/** /**
* 上麦 * 上麦
* *
* @param micPosition * @param micPosition
* @param uId 要上麦的用户id * @param uId 要上麦的用户id
* @param roomId * @param roomId
* @param callBack * @param callBack
*/ */
@SuppressLint("CheckResult")
public void upAiMicroPhone(final int micPosition, final String uId, final String roomId, final CallBack<String> callBack) { public void upAiMicroPhone(final int micPosition, final String uId, final String roomId, final CallBack<String> callBack) {
RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(micPosition); RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(micPosition);
if (roomQueueInfo == null) { if (roomQueueInfo == null) {
@@ -391,7 +473,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
//坑上没人且没锁 //坑上没人且没锁
if (roomMicInfo != null if (roomMicInfo != null
&& chatRoomMember == null) { && chatRoomMember == null) {
UserModel.get().getUserInfo(JavaUtil.str2long(uId)) UserModel.get().getUserInfo(JavaUtil.str2long(uId))
.subscribe(userInfo -> { .subscribe(userInfo -> {
if (userInfo != null) { if (userInfo != null) {
//先看下这个用户是否在麦上 //先看下这个用户是否在麦上
@@ -651,7 +733,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) type, tmpTitle, roomDesc, backPic, rewardId)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()); .observeOn(AndroidSchedulers.mainThread());
@@ -659,7 +741,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) type, title, roomDesc, backPic, rewardId)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()); .observeOn(AndroidSchedulers.mainThread());
@@ -702,16 +784,18 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
*/ */
@GET("/room/get") @GET("/room/get")
Single<RoomResult> getRoomInfo(@Query("uid") String uid, @Query("intoUid") long intoUid); Single<RoomResult> getRoomInfo(@Query("uid") String uid, @Query("intoUid") long intoUid);
/** /**
* @param key * @param key
* @return * @return
*/ */
@GET("/search/room") @GET("/search/room")
Single<ServiceResult<List<SearchRoomInfo>>> roomSearch(@Query("key") String key ,@Query("type") int type); Single<ServiceResult<List<SearchRoomInfo>>> roomSearch(@Query("key") String key, @Query("type") int type);
/** /**
* 获取该Uid 所在的房间信息,如果不在房间 返回的房间实体uid==0,或者roomId == 0 * 获取该Uid 所在的房间信息,如果不在房间 返回的房间实体uid==0,或者roomId == 0
*
* @param uid * @param uid
* @return * @return
*/ */
@@ -865,9 +949,10 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
@Field("audioQuality") int audioQuality); @Field("audioQuality") int audioQuality);
/** /**
*关闭公屏 * 关闭公屏
* true是关闭公屏 * true是关闭公屏
* @param uid - *
* @param uid -
* @return - * @return -
*/ */
@POST("room/setCloseScreen") @POST("room/setCloseScreen")
@@ -906,6 +991,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
/** /**
* 查询是否限制进房 * 查询是否限制进房
*
* @param uid - * @param uid -
* @return - * @return -
*/ */
@@ -916,9 +1002,10 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
* 设置聊天室角色, * 设置聊天室角色,
* 用于拉黑用户 * 用于拉黑用户
* 设置管理员 * 设置管理员
* @param roomUid - *
* @param roomUid -
* @param targetUid - * @param targetUid -
* @param opt 1: 设置为管理员;2:设置普通等级用户;-1:设为黑名单用户;-2:设为禁言用户 * @param opt 1: 设置为管理员;2:设置普通等级用户;-1:设为黑名单用户;-2:设为禁言用户
* @return - * @return -
*/ */
@POST("super/set/chatroom/role") @POST("super/set/chatroom/role")
@@ -929,6 +1016,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
/** /**
* 获取嗨聊房间列表 * 获取嗨聊房间列表
*
* @param uid * @param uid
* @return * @return
*/ */
@@ -937,6 +1025,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
/** /**
* 获取房间倒计时 * 获取房间倒计时
*
* @param roomUid 房主Uid * @param roomUid 房主Uid
*/ */
@GET("/activities/draw/getRoomRunawayTime") @GET("/activities/draw/getRoomRunawayTime")

View File

@@ -502,13 +502,7 @@ public class UserInfo implements Serializable {
this.remainDay = remainDay; this.remainDay = remainDay;
} }
public UserLevelVo getUserLevelVo() {
return userLevelVo;
}
public void setUserLevelVo(UserLevelVo userLevelVo) {
this.userLevelVo = userLevelVo;
}
public CarInfo getCarInfo() { public CarInfo getCarInfo() {
return mCarInfo; return mCarInfo;

View File

@@ -11,7 +11,7 @@ import com.yizhuan.xchat_android_core.music.db.dao.LocalMusicDao;
import com.yizhuan.xchat_android_core.music.db.dao.SongDao; import com.yizhuan.xchat_android_core.music.db.dao.SongDao;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig; import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
@Database(entities = {LocalMusicBean.class, SongBean.class}, version = 1, exportSchema = true) @Database(entities = {LocalMusicBean.class, SongBean.class}, version = 1, exportSchema = false)
public abstract class AppDataBase extends RoomDatabase { public abstract class AppDataBase extends RoomDatabase {
private static volatile AppDataBase mInstance; private static volatile AppDataBase mInstance;