diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomInfoResp.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomInfoResp.java index bb84c244..baef1200 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomInfoResp.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomInfoResp.java @@ -40,6 +40,9 @@ public class RoomInfoResp implements Serializable { private SingerInfo singer_info; private SignInfo sign_info; + private String room_id=""; + private String msg=""; + //弹出麦位操作弹出 public boolean isWheatManager() { //是管理员且在1或者9号麦,当时房主模式时,2号麦也有管理权限 diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java b/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java index b655276f..9b66cc1d 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java @@ -137,6 +137,15 @@ public class ConfirmDialog extends Dialog { // 隐藏取消按钮 btnNegative.setVisibility(View.GONE); } + + //判断是否需要显示确认按钮 + if (positiveButtonText != null && !positiveButtonText.isEmpty()) { + btnPositive.setText(positiveButtonText); + btnPositive.setVisibility(View.VISIBLE); + }else { + // 隐藏确认按钮 + btnPositive.setVisibility(View.GONE); + } // 倒计时逻辑 if (isCountdownEnabled && countdownSeconds > 0) { startCountdown(btnNegative); diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java index 7f7bce34..6d0e243b 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java @@ -2249,6 +2249,8 @@ public class RetrofitClient { } else if (roomInfoRespBaseModel.getCode() == 0) { ToastUtils.showShort(roomInfoRespBaseModel.getMsg()); observer.onNext(null); + }else if (roomInfoRespBaseModel.getCode() == 202){ + observer.onNext(roomInfoRespBaseModel.getData()); } else { MessageListenerSingleton.getInstance().quitGroup(roomId); } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt index 0a04cea0..65f9ab94 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt @@ -3198,6 +3198,7 @@ class RoomActivity : BaseMvpActivity(), override fun roomInfo(resp: RoomInfoResp) { if (!isSwitchRoom) return + getHour() mRoomInfoResp = resp isOnline = true password = "" @@ -3555,14 +3556,11 @@ class RoomActivity : BaseMvpActivity(), } is RoomHourBean.RoomListBean -> { - ClickUtils.clearAllClickRecords() - AgoraManager.getInstance().cleanup() - roomId = event.room_id - isSwitchRoom = true - // 重新连接房间相关服务 - resumeRoomState() - publicScreenFragment?.onDestroy() - publicScreenFragment = null + if (event.room_id== CommonAppContext.getInstance().playId){ + return + } + + roomId2=event.room_id MvpPre?.getRoomIn(event.room_id, "") } @@ -3601,6 +3599,19 @@ class RoomActivity : BaseMvpActivity(), } } } + private var roomId2: String? = null //这是点击小时榜后记录的房间id + + private fun getHour(){ + ClickUtils.clearAllClickRecords() + AgoraManager.getInstance().cleanup() + roomId = roomId2 + isSwitchRoom = true + // 重新连接房间相关服务 + resumeRoomState() + publicScreenFragment?.onDestroy() + publicScreenFragment = null + } + private var giftGiveEvent: RoomGiftGiveEvent? = null diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java index d7f480b8..488fed1f 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java @@ -1,7 +1,10 @@ package com.xscm.modulemain.activity.room.presenter; +import static com.liulishuo.okdownload.OkDownloadProvider.context; + import android.content.Context; +import com.blankj.utilcode.util.ActivityUtils; import com.blankj.utilcode.util.LogUtils; import com.xscm.modulemain.activity.room.contacts.RoomContacts; import com.xscm.moduleutil.base.CommonAppContext; @@ -10,6 +13,7 @@ import com.xscm.moduleutil.bean.RoomCharmRankBean; import com.xscm.moduleutil.bean.UserOnlineStatusBean; import com.xscm.moduleutil.bean.room.RoomInfoResp; import com.xscm.moduleutil.bean.room.RoomOnline; +import com.xscm.moduleutil.dialog.ConfirmDialog; import com.xscm.moduleutil.http.APIException; import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.http.RetrofitClient; @@ -43,26 +47,31 @@ public class RoomPresenter extends BasePresenter implements R @Override public void onNext(RoomInfoResp resp) { - String appId = CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId(); - String token = resp.getUser_info().getAgora_token(); // 如果启用了鉴权才需要 - String roomId = resp.getRoom_info().getRoom_id(); // 房间 ID - String rtm_token=resp.getUser_info().getAgora_rtm_token(); - SpUtil.setRtmToken(rtm_token); - int uid = SpUtil.getUserId(); // 0 表示由 Agora 自动生成 UID - boolean enableMic = false; // 是否开启麦克风 - boolean enableJs=false; // 是否开启角色 - if (resp.getUser_info().getPit_number()!=0){ - enableJs=true; - } - LogUtils.e("token",token); - LogUtils.e("roomId:",roomId); - AgoraManager.getInstance() - .joinRoom(token, roomId, uid, enableMic,enableJs); - if (MvpRef==null){ - MvpRef=new WeakReference<>(mView); - } - MvpRef.get().roomInfo(resp); + if(!resp.getRoom_id().isEmpty()){ + queren(resp.getRoom_id(),resp.getMsg()); + }else { + + String appId = CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId(); + String token = resp.getUser_info().getAgora_token(); // 如果启用了鉴权才需要 + String roomId = resp.getRoom_info().getRoom_id(); // 房间 ID + String rtm_token = resp.getUser_info().getAgora_rtm_token(); + SpUtil.setRtmToken(rtm_token); + int uid = SpUtil.getUserId(); // 0 表示由 Agora 自动生成 UID + boolean enableMic = false; // 是否开启麦克风 + boolean enableJs = false; // 是否开启角色 + if (resp.getUser_info().getPit_number() != 0) { + enableJs = true; + } + LogUtils.e("token", token); + LogUtils.e("roomId:", roomId); + AgoraManager.getInstance() + .joinRoom(token, roomId, uid, enableMic, enableJs); + if (MvpRef == null) { + MvpRef = new WeakReference<>(mView); + } + MvpRef.get().roomInfo(resp); + } } @Override public void onError(Throwable e) { @@ -84,6 +93,21 @@ public class RoomPresenter extends BasePresenter implements R }); } + private void queren(String roomId,String msg){ + new ConfirmDialog(ActivityUtils.getTopActivity(), + "提示", + msg, + CommonAppContext.getInstance().playId.equals(roomId) ?"":"去上一个房间", + CommonAppContext.getInstance().playId.equals(roomId) ?"取消":"在想想", + v -> { + // 点击“确认”按钮时执行删除操作 + getRoomIn(roomId,""); + }, + v -> { + // 点击“取消”按钮时什么都不做 + }, false, 0).show(); + } + // TODO: 2025/6/10 在线列表 @Override public void getRoomOnline(String roomId, String page, String page_limit) { diff --git a/MainModule/src/main/java/com/xscm/modulemain/manager/RoomManager.java b/MainModule/src/main/java/com/xscm/modulemain/manager/RoomManager.java index b8e6d6ea..7bc9282c 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/manager/RoomManager.java +++ b/MainModule/src/main/java/com/xscm/modulemain/manager/RoomManager.java @@ -1,5 +1,7 @@ package com.xscm.modulemain.manager; +import static com.liulishuo.okdownload.OkDownloadProvider.context; + import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -19,6 +21,7 @@ import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.bean.room.RoomInfoResp; import com.xscm.moduleutil.bean.room.RoomOnline; import com.xscm.moduleutil.bean.room.RoomOnlineBean; +import com.xscm.moduleutil.dialog.ConfirmDialog; import com.xscm.moduleutil.event.RoomOutEvent; import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.http.RetrofitClient; @@ -49,6 +52,8 @@ public class RoomManager { // 房间数据缓存 private Map roomDataCache = new ConcurrentHashMap<>(); private Map cacheTimestamps = new ConcurrentHashMap<>(); + private String taskId; + private Context context; // 缓存有效期(5分钟) private static final long CACHE_DURATION = 5 * 60 * 1000; @@ -71,6 +76,8 @@ public class RoomManager { * @param password 房间密码 */ public void fetchRoomDataAndEnter(Context context, String roomId, String password, String taskId) { + this.taskId=taskId; + this.context=context; // 显示加载提示 // 这里可以根据需要添加加载对话框 if (CommonAppContext.getInstance().isRoomJoininj) { @@ -85,12 +92,15 @@ public class RoomManager { fetchAndJoinRoom(context, roomId, password, taskId); } else { if (!CommonAppContext.getInstance().playId.equals(roomId)) { - MessageListenerSingleton.getInstance().joinGroup(roomId); - exitRoom(CommonAppContext.getInstance().playId); - CommonAppContext.getInstance().isShow = false; - CommonAppContext.getInstance().isPlaying = false; - CommonAppContext.getInstance().isRoomJoininj = false; - EventBus.getDefault().post(new RoomOutEvent()); +// MessageListenerSingleton.getInstance().joinGroup(roomId); +// exitRoom(CommonAppContext.getInstance().playId); +// CommonAppContext.getInstance().isShow = false; +// CommonAppContext.getInstance().isPlaying = false; +// CommonAppContext.getInstance().isRoomJoininj = false; +// EventBus.getDefault().post(new RoomOutEvent()); + + fetchAndJoinRoom(context, roomId, password, taskId); + return; } else if (CommonAppContext.getInstance().lable_id.equals("6")) { upInfo(context, roomId, password, true, roomInfo, true, taskId); return; @@ -136,24 +146,42 @@ public class RoomManager { @Override public void onNext(RoomInfoResp resp) { if (resp != null) { - String appId = CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId(); - String token = resp.getUser_info().getAgora_token(); // 如果启用了鉴权才需要 - String roomId = resp.getRoom_info().getRoom_id(); // 房间 ID - String rtm_token = resp.getUser_info().getAgora_rtm_token(); - SpUtil.setRtmToken(rtm_token); - int uid = SpUtil.getUserId(); // 0 表示由 Agora 自动生成 UID - boolean enableMic = false; // 是否开启麦克风 - boolean enableJs = false; // 是否开启角色 - if (resp.getUser_info().getPit_number() != 0) { - enableJs = true; + if (ActivityUtils.getTopActivity() instanceof MainActivity){ + ((MainActivity) ActivityUtils.getTopActivity()).isShowLoading(false); + } + if (!resp.getRoom_id().isEmpty()){ + if(CommonAppContext.getInstance().playId==null){ + CommonAppContext.getInstance().playId=""; + } + queren(resp.getRoom_id(),resp.getMsg()); + }else { + + MessageListenerSingleton.getInstance().joinGroup(roomId); + exitRoom(CommonAppContext.getInstance().playId); + CommonAppContext.getInstance().isShow = false; + CommonAppContext.getInstance().isPlaying = false; + CommonAppContext.getInstance().isRoomJoininj = false; + EventBus.getDefault().post(new RoomOutEvent()); + + String appId = CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId(); + String token = resp.getUser_info().getAgora_token(); // 如果启用了鉴权才需要 + String roomId = resp.getRoom_info().getRoom_id(); // 房间 ID + String rtm_token = resp.getUser_info().getAgora_rtm_token(); + SpUtil.setRtmToken(rtm_token); + int uid = SpUtil.getUserId(); // 0 表示由 Agora 自动生成 UID + boolean enableMic = false; // 是否开启麦克风 + boolean enableJs = false; // 是否开启角色 + if (resp.getUser_info().getPit_number() != 0) { + enableJs = true; + } + LogUtils.e("token", token); + LogUtils.e("roomId:", roomId); + // 初始化 Agora 并加入房间 + AgoraManager.getInstance() + .joinRoom(token, roomId, uid, enableMic, enableJs); + cacheRoomData(roomId, resp); + navigateToRoom(context, roomId, password, resp, false, taskId); } - LogUtils.e("token", token); - LogUtils.e("roomId:", roomId); - // 初始化 Agora 并加入房间 - AgoraManager.getInstance() - .joinRoom(token, roomId, uid, enableMic, enableJs); - cacheRoomData(roomId, resp); - navigateToRoom(context, roomId, password, resp, false, taskId); }else { if (ActivityUtils.getTopActivity() instanceof MainActivity){ ((MainActivity) ActivityUtils.getTopActivity()).isShowLoading(false); @@ -342,4 +370,25 @@ public class RoomManager { Logger.d(TAG, "退出房间: " + roomId); } + + private void queren(String roomId,String msg){ + // 检查context是否有效,避免在Activity销毁后显示对话框 +// if (context == null || (context instanceof Activity && ((Activity)context).isFinishing())) { +// Logger.d(TAG, "Context is null or Activity is finishing, cannot show dialog"); +// return; +// } + new ConfirmDialog(ActivityUtils.getTopActivity(), + "提示", + msg, + CommonAppContext.getInstance().playId.equals(roomId) ?"":"去上一个房间", + CommonAppContext.getInstance().playId.equals(roomId) ?"取消":"在想想", + v -> { + // 点击“确认”按钮时执行删除操作 +// MvpPre.deleteComment(String.valueOf(commentId)); + fetchRoomDataAndEnter(ActivityUtils.getTopActivity(),roomId,"",taskId); + }, + v -> { + // 点击“取消”按钮时什么都不做 + }, false, 0).show(); + } } diff --git a/MainModule/src/main/res/layout/activity_my_money.xml b/MainModule/src/main/res/layout/activity_my_money.xml index 49b3f609..6967d85c 100644 --- a/MainModule/src/main/res/layout/activity_my_money.xml +++ b/MainModule/src/main/res/layout/activity_my_money.xml @@ -40,7 +40,7 @@ android:id="@+id/tv_1" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="51" + tools:text="51" android:gravity="left|center" android:textColor="@color/color_FF333333" android:textSize="@dimen/sp_16"/> @@ -83,7 +83,7 @@ android:id="@+id/tv_2" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="51" + tools:text="51" android:gravity="left|center" android:textColor="@color/color_FF333333" android:textSize="@dimen/sp_16"/>