Browse Source

修改直播消息点击跳转直播间逻辑

Pq 1 year ago
parent
commit
2c7361c241

+ 325 - 0
BaseLibrary/src/main/java/com/cooleshow/base/bean/LiveRoomInfoBean.java

@@ -0,0 +1,325 @@
+package com.cooleshow.base.bean;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * Author by pq, Date on 2022/3/29.
+ */
+public class LiveRoomInfoBean implements Parcelable {
+
+    /**
+     * courseGroupId : 0
+     * courseId : 0
+     * coverPic :
+     * likeNum : 0
+     * liveEndTime :
+     * liveRemark :
+     * liveStartTime :
+     * liveState : 0
+     * lookNum : 0
+     * roomState : 0
+     * roomTitle :
+     * roomUid :
+     * speakerId : 0
+     * speakerName :
+     * subjectId : 0
+     * type :
+     */
+
+    public int courseGroupId;
+    public int courseId;
+    public String coverPic;
+    public int likeNum;
+    public String liveEndTime;
+    public String liveRemark;
+    public String liveStartTime;
+    public int liveState;
+    public int lookNum;
+    public int roomState;
+    public String roomTitle;
+    public String roomUid;
+    public String speakerId;
+    public String speakerImUserId;
+    public String speakerName;
+    public String speakerPic;
+    public int subjectId;
+    public String type;//房间类型 live直播课  temp临时直播间
+    private LiveRoomConfigBean liveRoomConfig;
+    private String userSig;
+    private String os;
+
+    public int blacklistFlag;//当前登录人是否是黑名单用户 0否 1是
+
+    private String shopCarUrl;
+
+    public String getShopCarUrl() {
+        return shopCarUrl;
+    }
+
+    public void setShopCarUrl(String shopCarUrl) {
+        this.shopCarUrl = shopCarUrl;
+    }
+
+    public LiveRoomConfigBean getLiveRoomConfig() {
+        return liveRoomConfig;
+    }
+
+    public void setLiveRoomConfig(LiveRoomConfigBean liveRoomConfig) {
+        this.liveRoomConfig = liveRoomConfig;
+    }
+
+    public String getOs() {
+        return os;
+    }
+
+    public void setOs(String os) {
+        this.os = os;
+    }
+
+
+    public String getRoomId() {
+        return roomUid;
+    }
+    public String getUserSig() {
+        return userSig;
+    }
+
+    public void setUserSig(String userSig) {
+        this.userSig = userSig;
+    }
+
+    public static class LiveRoomConfigBean implements Parcelable {
+        private String appKey;
+        private String appSecret;
+        private String playSecret;
+        private String playUrl;
+        private String pushRecordUrl;
+        private String pushSecret;
+        private String pushUrl;
+
+        public String getAppKey() {
+            return appKey;
+        }
+
+        public void setAppKey(String appKey) {
+            this.appKey = appKey;
+        }
+
+        public String getAppSecret() {
+            return appSecret;
+        }
+
+        public void setAppSecret(String appSecret) {
+            this.appSecret = appSecret;
+        }
+
+        public String getPlaySecret() {
+            return playSecret;
+        }
+
+        public void setPlaySecret(String playSecret) {
+            this.playSecret = playSecret;
+        }
+
+        public String getPlayUrl() {
+            return playUrl;
+        }
+
+        public void setPlayUrl(String playUrl) {
+            this.playUrl = playUrl;
+        }
+
+        public String getPushRecordUrl() {
+            return pushRecordUrl;
+        }
+
+        public void setPushRecordUrl(String pushRecordUrl) {
+            this.pushRecordUrl = pushRecordUrl;
+        }
+
+        public String getPushSecret() {
+            return pushSecret;
+        }
+
+        public void setPushSecret(String pushSecret) {
+            this.pushSecret = pushSecret;
+        }
+
+        public String getPushUrl() {
+            return pushUrl;
+        }
+
+        public void setPushUrl(String pushUrl) {
+            this.pushUrl = pushUrl;
+        }
+
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            dest.writeString(this.appKey);
+            dest.writeString(this.appSecret);
+            dest.writeString(this.playSecret);
+            dest.writeString(this.playUrl);
+            dest.writeString(this.pushRecordUrl);
+            dest.writeString(this.pushSecret);
+            dest.writeString(this.pushUrl);
+        }
+
+        public void readFromParcel(Parcel source) {
+            this.appKey = source.readString();
+            this.appSecret = source.readString();
+            this.playSecret = source.readString();
+            this.playUrl = source.readString();
+            this.pushRecordUrl = source.readString();
+            this.pushSecret = source.readString();
+            this.pushUrl = source.readString();
+        }
+
+        public LiveRoomConfigBean() {
+        }
+
+        protected LiveRoomConfigBean(Parcel in) {
+            this.appKey = in.readString();
+            this.appSecret = in.readString();
+            this.playSecret = in.readString();
+            this.playUrl = in.readString();
+            this.pushRecordUrl = in.readString();
+            this.pushSecret = in.readString();
+            this.pushUrl = in.readString();
+        }
+
+        public static final Creator<LiveRoomConfigBean> CREATOR = new Creator<LiveRoomConfigBean>() {
+            @Override
+            public LiveRoomConfigBean createFromParcel(Parcel source) {
+                return new LiveRoomConfigBean(source);
+            }
+
+            @Override
+            public LiveRoomConfigBean[] newArray(int size) {
+                return new LiveRoomConfigBean[size];
+            }
+        };
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(this.courseGroupId);
+        dest.writeInt(this.courseId);
+        dest.writeString(this.coverPic);
+        dest.writeInt(this.likeNum);
+        dest.writeString(this.liveEndTime);
+        dest.writeString(this.liveRemark);
+        dest.writeString(this.liveStartTime);
+        dest.writeInt(this.liveState);
+        dest.writeInt(this.lookNum);
+        dest.writeInt(this.roomState);
+        dest.writeString(this.roomTitle);
+        dest.writeString(this.roomUid);
+        dest.writeString(this.speakerId);
+        dest.writeString(this.speakerName);
+        dest.writeString(this.speakerPic);
+        dest.writeInt(this.subjectId);
+        dest.writeString(this.type);
+        dest.writeParcelable(this.liveRoomConfig, flags);
+        dest.writeString(this.userSig);
+    }
+
+    public void readFromParcel(Parcel source) {
+        this.courseGroupId = source.readInt();
+        this.courseId = source.readInt();
+        this.coverPic = source.readString();
+        this.likeNum = source.readInt();
+        this.liveEndTime = source.readString();
+        this.liveRemark = source.readString();
+        this.liveStartTime = source.readString();
+        this.liveState = source.readInt();
+        this.lookNum = source.readInt();
+        this.roomState = source.readInt();
+        this.roomTitle = source.readString();
+        this.roomUid = source.readString();
+        this.speakerId = source.readString();
+        this.speakerName = source.readString();
+        this.speakerPic = source.readString();
+        this.subjectId = source.readInt();
+        this.type = source.readString();
+        this.liveRoomConfig = source.readParcelable(LiveRoomConfigBean.class.getClassLoader());
+        this.userSig = source.readString();
+    }
+
+    public LiveRoomInfoBean() {
+    }
+
+    protected LiveRoomInfoBean(Parcel in) {
+        this.courseGroupId = in.readInt();
+        this.courseId = in.readInt();
+        this.coverPic = in.readString();
+        this.likeNum = in.readInt();
+        this.liveEndTime = in.readString();
+        this.liveRemark = in.readString();
+        this.liveStartTime = in.readString();
+        this.liveState = in.readInt();
+        this.lookNum = in.readInt();
+        this.roomState = in.readInt();
+        this.roomTitle = in.readString();
+        this.roomUid = in.readString();
+        this.speakerId = in.readString();
+        this.speakerName = in.readString();
+        this.speakerPic = in.readString();
+        this.subjectId = in.readInt();
+        this.type = in.readString();
+        this.liveRoomConfig = in.readParcelable(LiveRoomConfigBean.class.getClassLoader());
+        this.userSig = in.readString();
+    }
+
+    public static final Creator<LiveRoomInfoBean> CREATOR = new Creator<LiveRoomInfoBean>() {
+        @Override
+        public LiveRoomInfoBean createFromParcel(Parcel source) {
+            return new LiveRoomInfoBean(source);
+        }
+
+        @Override
+        public LiveRoomInfoBean[] newArray(int size) {
+            return new LiveRoomInfoBean[size];
+        }
+    };
+
+
+    @Override
+    public String toString() {
+        return "LiveRoomInfoBean{" +
+                "courseGroupId=" + courseGroupId +
+                ", courseId=" + courseId +
+                ", coverPic='" + coverPic + '\'' +
+                ", likeNum=" + likeNum +
+                ", liveEndTime='" + liveEndTime + '\'' +
+                ", liveRemark='" + liveRemark + '\'' +
+                ", liveStartTime='" + liveStartTime + '\'' +
+                ", liveState=" + liveState +
+                ", lookNum=" + lookNum +
+                ", roomState=" + roomState +
+                ", roomTitle='" + roomTitle + '\'' +
+                ", roomUid='" + roomUid + '\'' +
+                ", speakerId='" + speakerId + '\'' +
+                ", speakerImUserId='" + speakerImUserId + '\'' +
+                ", speakerName='" + speakerName + '\'' +
+                ", speakerPic='" + speakerPic + '\'' +
+                ", subjectId=" + subjectId +
+                ", type='" + type + '\'' +
+                ", liveRoomConfig=" + liveRoomConfig +
+                ", userSig='" + userSig + '\'' +
+                ", os='" + os + '\'' +
+                ", blacklistFlag=" + blacklistFlag +
+                '}';
+    }
+}

+ 10 - 0
BaseLibrary/src/main/java/com/cooleshow/base/data/api/UploadApi.java

@@ -1,6 +1,7 @@
 package com.cooleshow.base.data.api;
 
 import com.cooleshow.base.bean.AddressBean;
+import com.cooleshow.base.bean.LiveRoomInfoBean;
 import com.cooleshow.base.bean.RecentPracticeBean;
 import com.cooleshow.base.bean.ServiceContactBean;
 import com.cooleshow.base.bean.UploadTokenInfoBean;
@@ -128,4 +129,13 @@ public interface UploadApi {
     Observable<BaseResponse<RecentPracticeBean>> queryStuRecentPracticeFromTeacher(@Query("userId") String userId);
     @POST(AUTH_GROUP + "user/queryConfig")
     Observable<BaseResponse<ServiceContactBean>> getCustomerServiceContact();
+
+    /**
+     * 查询直播房间信息
+     *
+     * @param roomUid
+     * @return
+     */
+    @GET("{group_name}" + "/imLiveBroadcastRoom/queryRoom")
+    Observable<BaseResponse<LiveRoomInfoBean>> getLiveRoomInfo(@Path("group_name") String group_name,@Query("roomUid") String roomUid);
 }

+ 70 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/LiveRoomRouter.java

@@ -0,0 +1,70 @@
+package com.cooleshow.base.utils.helper;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.bean.LiveRoomInfoBean;
+import com.cooleshow.base.common.BaseApplication;
+import com.cooleshow.base.common.BaseConstant;
+import com.cooleshow.base.data.api.UploadApi;
+import com.cooleshow.base.data.net.ApiException;
+import com.cooleshow.base.data.net.RetrofitFactory;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.UiUtils;
+
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
+import io.reactivex.rxjava3.schedulers.Schedulers;
+
+/**
+ * Author by pq, Date on 2024/1/3.
+ */
+public class LiveRoomRouter {
+    private LiveRoomRouter() {
+    }
+
+    public static LiveRoomRouter getInstance() {
+        return LiveRoomRouterHolder.mRouter;
+    }
+
+    private static class LiveRoomRouterHolder {
+        private static LiveRoomRouter mRouter = new LiveRoomRouter();
+    }
+
+    public void openLiveRoom(String roomId) {
+        getRoomInfo(roomId);
+    }
+
+    private void getRoomInfo(String roomId) {
+        if (UiUtils.isFastClick(1000)) {
+            return;
+        }
+        String group =  BaseConstant.CLIENT_API_GROUP_NAME;
+        BaseObserver<LiveRoomInfoBean> baseObserver = RetrofitFactory.Companion.getInstance().create(UploadApi.class)
+                .getLiveRoomInfo(group, roomId)
+                .subscribeOn(Schedulers.newThread())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribeWith(new BaseObserver<LiveRoomInfoBean>() {
+                    @Override
+                    protected void onSuccess(LiveRoomInfoBean liveMessage) {
+                        if (BaseApplication.Companion.isTeacherClient()) {
+                            ARouter.getInstance().build(RouterPath.LiveCenter.ACTIVITY_TC_LIVE_ROOM_TEACHER)
+                                    .withString("roomid_key", liveMessage.getRoomId())
+                                    .navigation();
+                        } else {
+                            ARouter.getInstance().build(RouterPath.LiveCenter.ACTIVITY_TT_LIVE_ROOM)
+                                    .withString("roomid_key", liveMessage.getRoomId())
+                                    .navigation();
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        super.onError(e);
+                        if (e instanceof ApiException) {
+                            ApiException apiException = (ApiException) e;
+                            ToastUtil.getInstance().showShort(apiException.getErrmsg());
+                        }
+                    }
+                });
+    }
+}

+ 11 - 10
chatModule/src/main/java/com/cooleshow/chatmodule/message/holder/TUIChatShareLiveMessageHolder.java

@@ -9,6 +9,7 @@ import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.common.BaseApplication;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.base.utils.helper.LiveRoomRouter;
 import com.cooleshow.chatmodule.R;
 import com.cooleshow.chatmodule.message.bean.TUIChatShareLiveMessageBean;
 import com.tencent.qcloud.tuikit.timcommon.bean.TUIMessageBean;
@@ -58,16 +59,16 @@ public class TUIChatShareLiveMessageHolder extends MessageContentHolder {
                     if (TextUtils.isEmpty(liveMessage.getRoomUID())) {
                         return;
                     }
-
-                    if (BaseApplication.Companion.isTeacherClient()) {
-                        ARouter.getInstance().build(RouterPath.LiveCenter.ACTIVITY_TC_LIVE_ROOM_TEACHER)
-                                .withString("roomid_key", liveMessage.getRoomUID())
-                                .navigation();
-                    } else {
-                        ARouter.getInstance().build(RouterPath.LiveCenter.ACTIVITY_TT_LIVE_ROOM)
-                                .withString("roomid_key", liveMessage.getRoomUID())
-                                .navigation();
-                    }
+                    LiveRoomRouter.getInstance().openLiveRoom(liveMessage.getRoomUID());
+//                    if (BaseApplication.Companion.isTeacherClient()) {
+//                        ARouter.getInstance().build(RouterPath.LiveCenter.ACTIVITY_TC_LIVE_ROOM_TEACHER)
+//                                .withString("roomid_key", liveMessage.getRoomUID())
+//                                .navigation();
+//                    } else {
+//                        ARouter.getInstance().build(RouterPath.LiveCenter.ACTIVITY_TT_LIVE_ROOM)
+//                                .withString("roomid_key", liveMessage.getRoomUID())
+//                                .navigation();
+//                    }
                 }
             });