Forráskód Böngészése

Merge remote-tracking branch 'origin/dev' into dev

邓琴文 3 éve
szülő
commit
ddd60a63d3
24 módosított fájl, 184 hozzáadás és 40 törlés
  1. 2 0
      BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java
  2. 2 2
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/InputBar.java
  3. 12 4
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/ImgVerifyCodeDialog.java
  4. 1 1
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/InputBarDialog.java
  5. 5 2
      BaseLibrary/src/main/res/values/styles.xml
  6. 2 0
      rong_im/live/src/main/java/com/rong/io/live/LiveRoomMsgConstants.java
  7. 9 5
      student/src/main/java/com/cooleshow/student/adapter/PracticeCourseListAdapter.java
  8. 2 2
      student/src/main/java/com/cooleshow/student/bean/PianoRoomCourseHomeworkBean.java
  9. 9 0
      student/src/main/java/com/cooleshow/student/ui/course/PianoRoomCourseDetailActivity.java
  10. 2 2
      student/src/main/java/com/cooleshow/student/ui/main/HomeFragment.java
  11. 8 1
      student/src/main/java/com/cooleshow/student/ui/mine/ModifyPasswordActivity.java
  12. 15 0
      student/src/main/res/layout/activity_piano_room_course_detail_layout.xml
  13. 1 6
      teacher/src/main/AndroidManifest.xml
  14. 27 5
      teacher/src/main/java/com/cooleshow/teacher/App.java
  15. 70 1
      teacher/src/main/java/com/cooleshow/teacher/presenter/live/LiveRoomPresenter.java
  16. 1 1
      teacher/src/main/java/com/cooleshow/teacher/ui/course/LiveCourseFragment.java
  17. 0 1
      teacher/src/main/java/com/cooleshow/teacher/ui/live/TeacherLiveRoomActivity.java
  18. 5 1
      teacher/src/main/java/com/cooleshow/teacher/ui/main/CourseTableFragment.kt
  19. 6 2
      teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt
  20. 1 1
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/UnBindBankCardActivity.java
  21. 1 1
      teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceUtils.java
  22. BIN
      teacher/src/main/res/drawable-xhdpi/icon_bind_card_error.png
  23. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_bind_card_error.png
  24. 3 2
      teacher/src/main/res/layout/activity_teacher_live_room_layout.xml

+ 2 - 0
BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java

@@ -90,6 +90,8 @@ public abstract class WebConstants {
     public static final String TEACHER_LIVE_CREATE = getBaseUrlH5() + "/#/liveCreate";
     //直播课详情
     public static final String TEACHER_LIVE_DETAIL = getBaseUrlH5() + "/#/liveDetail";
+
+    public static final String TEACHER_LIVE_DETAIL_NORMAL_COURSE = getBaseUrlH5() + "/#/liveDetail?groupId=%s&classId=%s&joinRoom=1";
     //陪练课设置
     public static final String TEACHER_PRACTICE_SETTING = getBaseUrlH5() + "/#/practiceSetting";
     //我的粉

+ 2 - 2
BaseLibrary/src/main/java/com/cooleshow/base/widgets/InputBar.java

@@ -11,8 +11,8 @@ import android.widget.Space;
 import android.widget.TextView;
 
 import com.cooleshow.base.R;
+import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.base.utils.SizeUtils;
-import com.cooleshow.base.utils.SoftKeyboardUtil;
 import com.cooleshow.base.utils.SoftKeyboardUtils;
 import com.vanniktech.emoji.EmojiEditText;
 import com.vanniktech.emoji.EmojiPopup;
@@ -57,7 +57,7 @@ public class InputBar extends LinearLayout implements OnEmojiPopupShownListener,
         this.setBackgroundColor(getContext().getResources().getColor(R.color.white));
         this.setMinimumHeight(SizeUtils.dp2px(50));
         this.setGravity(Gravity.CENTER_VERTICAL);
-        this.setPadding(SizeUtils.dp2px(12), SizeUtils.dp2px( 7), SizeUtils.dp2px(12), SizeUtils.dp2px(7));
+        this.setPadding(SizeUtils.dp2px(12), SizeUtils.dp2px(7), SizeUtils.dp2px(12), SizeUtils.dp2px(7));
         etInput = (EmojiEditText) findViewById(R.id.et_input);
         space1 = (Space) findViewById(R.id.space1);
         ivEmoji = (ImageView) findViewById(R.id.iv_emoji);

+ 12 - 4
BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/ImgVerifyCodeDialog.java

@@ -2,6 +2,7 @@ package com.cooleshow.base.widgets.dialog;
 
 import android.app.Dialog;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextWatcher;
@@ -78,7 +79,12 @@ public class ImgVerifyCodeDialog extends Dialog {
 
             }
         };
-        etCode.addTextChangedListener(mTextWatcher);
+        setOnDismissListener(new OnDismissListener() {
+            @Override
+            public void onDismiss(DialogInterface dialog) {
+                release();
+            }
+        });
     }
 
     public void setPhone(String phone) {
@@ -113,8 +119,10 @@ public class ImgVerifyCodeDialog extends Dialog {
     }
 
     @Override
-    public void onDetachedFromWindow() {
-        super.onDetachedFromWindow();
-        release();
+    public void show() {
+        super.show();
+        if (etCode != null && mTextWatcher != null) {
+            etCode.addTextChangedListener(mTextWatcher);
+        }
     }
 }

+ 1 - 1
BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/InputBarDialog.java

@@ -61,7 +61,7 @@ public class InputBarDialog extends Dialog {
         super.dismiss();
     }
 
-    public void showInput(){
+    public void showInput() {
         if (inputBar != null) {
             inputBar.showInputBar();
         }

+ 5 - 2
BaseLibrary/src/main/res/values/styles.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<resources>
+<resources xmlns:ns1="http://schemas.android.com/apk/res-auto">
     <!-- 主题样式 -->
     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
         <item name="colorPrimary">@color/colorPrimary</item>
@@ -263,7 +263,10 @@
         <item name="android:windowExitAnimation">@anim/left_exit_anim</item>
     </style>
 
-    <style name="my_emoji_fade_animation_style" parent="emoji_fade_animation_style"/>
+    <style name="my_emoji_fade_animation_style" ns1:ignore="UnusedResources">
+        <item name="android:windowEnterAnimation">@android:anim/fade_in</item>
+        <item name="android:windowExitAnimation">@android:anim/fade_out</item>
+    </style>
 
 
     <style name="picture.daya.style" parent="AppTheme">

+ 2 - 0
rong_im/live/src/main/java/com/rong/io/live/LiveRoomMsgConstants.java

@@ -49,5 +49,7 @@ public class LiveRoomMsgConstants {
     public static final String TAG_LIVE_ON_SNAP_UP = "RC:Chatroom:SnapUp"; //正在抢购
     public static final String TAG_LIVE_ADD_BLACK_USER= "RC:BLOCK_BLACK_USER"; //添加黑名单,禁止聊天,禁止连麦
     public static final String TAG_LIVE_REMOVE_BLACK_USER= "RC:UNBLOCK_BLACK_USER"; //解除黑名单
+    public static final String TAG_LIVE_MEMBER_COUNT_SYNC = "RC:Chatroom:MemberCountUp"; //人员数量同步
+    public static final String TAG_LIVE_FINISH_MSG = "RC:ForcedOffline"; //直播间结束消息
 
 }

+ 9 - 5
student/src/main/java/com/cooleshow/student/adapter/PracticeCourseListAdapter.java

@@ -1,6 +1,7 @@
 package com.cooleshow.student.adapter;
 
 import android.text.TextUtils;
+import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
@@ -30,11 +31,11 @@ public class PracticeCourseListAdapter extends BaseQuickAdapter<PracticeCourseLi
 
     @Override
     protected void convert(@NonNull BaseViewHolder holder, PracticeCourseListBean.RowsBean data) {
-        if(data==null){
+        if (data == null) {
             return;
         }
         //时间
-        holder.setText(R.id.tv_time, UiUtils.getCourseTimeString(data.startTime,data.endTime));
+        holder.setText(R.id.tv_time, UiUtils.getCourseTimeString(data.startTime, data.endTime));
         //title
         holder.setText(R.id.tv_title, data.userName);
         //subjectName
@@ -50,9 +51,10 @@ public class PracticeCourseListAdapter extends BaseQuickAdapter<PracticeCourseLi
             //未开始
             tv_course_status.setText("未开始");
             tv_course_status.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_ff802c));
-            tvCourseStatusBt.setText("调课");
-            tvCourseStatusBt.setBackgroundResource(R.drawable.shape_course_status_normal);
-            tvCourseStatusBt.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
+            tvCourseStatusBt.setVisibility(View.GONE);
+            //            tvCourseStatusBt.setText("调课");
+//            tvCourseStatusBt.setBackgroundResource(R.drawable.shape_course_status_normal);
+//            tvCourseStatusBt.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
         }
 
         if (TextUtils.equals(CourseConstants.COURSE_STATUS_ING, data.status)) {
@@ -60,6 +62,7 @@ public class PracticeCourseListAdapter extends BaseQuickAdapter<PracticeCourseLi
             tv_course_status.setText("进行中");
             tv_course_status.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
             tvCourseStatusBt.setText("进入教室");
+            tvCourseStatusBt.setVisibility(View.VISIBLE);
             tvCourseStatusBt.setBackgroundResource(R.drawable.shape_course_status_ing);
             tvCourseStatusBt.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.white));
         }
@@ -70,6 +73,7 @@ public class PracticeCourseListAdapter extends BaseQuickAdapter<PracticeCourseLi
             tv_course_status.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_999999));
 
             tvCourseStatusBt.setText("评价");
+            tvCourseStatusBt.setVisibility(View.VISIBLE);
             tvCourseStatusBt.setBackgroundResource(R.drawable.shape_course_status_normal);
             tvCourseStatusBt.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
         }

+ 2 - 2
student/src/main/java/com/cooleshow/student/bean/PianoRoomCourseHomeworkBean.java

@@ -36,8 +36,8 @@ public class PianoRoomCourseHomeworkBean {
     public String attachments;
     public String classDate;
     public String content;
-    public int courseGroupId;
-    public int courseScheduleId;
+    public String courseGroupId;
+    public String courseScheduleId;
     public String courseStatus;
     public String courseType;
     public int decorateHomework;

+ 9 - 0
student/src/main/java/com/cooleshow/student/ui/course/PianoRoomCourseDetailActivity.java

@@ -16,6 +16,7 @@ import com.cooleshow.student.contract.PianoRoomCourseDetailContract;
 import com.cooleshow.student.databinding.ActivityPianoRoomCourseDetailLayoutBinding;
 import com.cooleshow.student.presenter.course.PianoRoomCourseDetailPresenter;
 import com.cooleshow.base.widgets.VideoThumbnailView;
+import com.daya.live_teaching.utils.helper.CourseEnterHelper;
 
 import androidx.annotation.NonNull;
 import io.rong.imkit.utils.helper.OpenChatHelper;
@@ -46,6 +47,7 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
             return;
         }
         viewBinding.ivGoChat.setOnClickListener(this);
+        viewBinding.tvEnterRoom.setOnClickListener(this);
     }
 
     @Override
@@ -216,6 +218,13 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
             }
             return;
         }
+        if (v.getId() == R.id.tv_enter_room) {
+            //进入教室
+            if (mInfoBean != null) {
+                CourseEnterHelper.start(this, mInfoBean.courseGroupId, mInfoBean.subjectName);
+            }
+            return;
+        }
     }
 
 

+ 2 - 2
student/src/main/java/com/cooleshow/student/ui/main/HomeFragment.java

@@ -73,7 +73,7 @@ import java.util.TreeMap;
  * 类说明:
  */
 public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter> implements HomeContract.HomeView, View.OnClickListener {
-    private boolean isShowFlashPage =false;
+    private boolean isShowFlashPage = false;
     private String mCurrentShowNoticeId;
 
     @Override
@@ -390,7 +390,7 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
             case LIVE_COURSE:
                 ARouter.getInstance()
                         .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + bean.courseGroupId + "&classId=" + bean.courseId)
+                        .withString(WebConstants.WEB_URL, String.format(WebConstants.TEACHER_LIVE_DETAIL_NORMAL_COURSE, bean.courseGroupId, bean.courseId))
                         .navigation();
                 break;
             case OTHER_COURSE:

+ 8 - 1
student/src/main/java/com/cooleshow/student/ui/mine/ModifyPasswordActivity.java

@@ -144,7 +144,7 @@ public class ModifyPasswordActivity extends BaseMVPActivity<ActivityModifyPasswo
         if (mImgVerifyCodeDialog != null) {
             mImgVerifyCodeDialog.dismiss();
         }
-        Map<String,String> map = new HashMap<>();
+        Map<String, String> map = new HashMap<>();
         map.put("mobile", phone);
         map.put("type", "PASSWD");
         presenter.sendSmsCode(map);
@@ -230,6 +230,13 @@ public class ModifyPasswordActivity extends BaseMVPActivity<ActivityModifyPasswo
     @Override
     public void onDestroy() {
         super.onDestroy();
+        if (timer != null) {
+            timer.cancel();
+            timer = null;
+        }
+        if (timerTask != null) {
+            timerTask = null;
+        }
         if (handler != null) {
             handler.removeCallbacksAndMessages(null);
         }

+ 15 - 0
student/src/main/res/layout/activity_piano_room_course_detail_layout.xml

@@ -378,4 +378,19 @@
         </LinearLayout>
     </androidx.core.widget.NestedScrollView>
 
+    <TextView
+        android:id="@+id/tv_enter_room"
+        android:layout_width="match_parent"
+        android:layout_height="44dp"
+        android:layout_marginStart="27dp"
+        android:layout_marginEnd="27dp"
+        android:layout_marginBottom="30dp"
+        android:background="@drawable/shape_2dc7aa_39dp"
+        android:gravity="center"
+        android:text="进入教室"
+        android:textColor="@color/white"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent" />
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 1 - 6
teacher/src/main/AndroidManifest.xml

@@ -291,12 +291,7 @@
             android:exported="false"
             android:launchMode="singleTask"
             android:screenOrientation="portrait"
-            android:windowSoftInputMode="adjustPan">
-            <intent-filter>
-                <action android:name="com.cooleshow.student.ui.live.LiveRoomActivity" />
-
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
+            android:windowSoftInputMode="adjustNothing">
         </activity> <!-- 分享开始 -->
         <activity
             android:name=".wxapi.WXEntryActivity"

+ 27 - 5
teacher/src/main/java/com/cooleshow/teacher/App.java

@@ -14,6 +14,19 @@ import com.cooleshow.base.utils.ProcessUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.usercenter.helper.UserHelper;
 import com.daya.live_teaching.im.IMManager;
+import com.rong.io.live.message.RCChatJoinRoomMessage;
+import com.rong.io.live.message.RCChatModeMessage;
+import com.rong.io.live.message.RCChatRoomCloseMessage;
+import com.rong.io.live.message.RCChatRoomMemberNumMessage;
+import com.rong.io.live.message.RCChatroomLocationMessage;
+import com.rong.io.live.message.RCOnSnappingUpMessage;
+import com.rong.io.live.message.RCPauseLiveMessage;
+import com.rong.io.live.message.RCUserAddLikeMessage;
+import com.rong.io.live.message.RCUserMicLeaveMessage;
+import com.rong.io.live.message.RCUserSeatApplyMessage;
+import com.rong.io.live.message.RCUserSeatResponseMessage;
+import com.rong.io.live.message.RCUserSeatsCtrlMessage;
+import com.rong.io.live.message.RCUserSyncAddLikeCountMessage;
 import com.tencent.bugly.crashreport.CrashReport;
 import com.rong.io.live.helper.LiveRTCEngineInitHelper;
 import com.umeng.commonsdk.UMConfigure;
@@ -31,6 +44,7 @@ import io.reactivex.rxjava3.core.Scheduler;
 import io.reactivex.rxjava3.functions.Consumer;
 import io.reactivex.rxjava3.schedulers.Schedulers;
 import io.rong.imkit.IMCenter;
+import io.rong.imlib.RongIMClient;
 import io.rong.push.RongPushClient;
 import io.rong.push.pushconfig.PushConfig;
 
@@ -100,12 +114,20 @@ public class App extends BaseApplication {
                 .build();
         RongPushClient.setPushConfig(config);
 
-      /*  if (BuildConfig.DEBUG) {
-            IMManager.init(this, "0vnjpoad0jbdz");////TODO 设置小班课appkey  uwd1c0sxuqp91   c9kqb3rdc451j 6tnym1br6pv07
-        } else {
-            IMManager.init(this, "6tnym1br6pv07");////TODO 设置小班课appkey  uwd1c0sxuqp91   c9kqb3rdc451j 6tnym1br6pv07
-        }*/
         IMManager.init(this, "0vnjpoad0jbdz");
+        RongIMClient.registerMessageType(RCChatJoinRoomMessage.class);//加入直播房间消息
+        RongIMClient.registerMessageType(RCChatModeMessage.class);//直播间聊天模式控制消息
+        RongIMClient.registerMessageType(RCChatroomLocationMessage.class);//本地消息
+        RongIMClient.registerMessageType(RCUserMicLeaveMessage.class);//观众下麦发送消息
+        RongIMClient.registerMessageType(RCUserSeatApplyMessage.class);//申请连麦消息
+        RongIMClient.registerMessageType(RCUserSeatResponseMessage.class);//连麦回复消息
+        RongIMClient.registerMessageType(RCUserSeatsCtrlMessage.class);//连麦控制
+        RongIMClient.registerMessageType(RCUserSyncAddLikeCountMessage.class);//连麦控制
+        RongIMClient.registerMessageType(RCChatRoomCloseMessage.class);//直播间关闭消息
+        RongIMClient.registerMessageType(RCOnSnappingUpMessage.class);//XXX正在抢购
+        RongIMClient.registerMessageType(RCUserAddLikeMessage.class);//点赞数量消息
+        RongIMClient.registerMessageType(RCChatRoomMemberNumMessage.class);//成员数量同步
+        RongIMClient.registerMessageType(RCPauseLiveMessage.class);//暂停直播消息
         LiveRTCEngineInitHelper.initRTC();
         EmojiManager.install(new IosEmojiProvider());
 

+ 70 - 1
teacher/src/main/java/com/cooleshow/teacher/presenter/live/LiveRoomPresenter.java

@@ -23,8 +23,13 @@ import com.rong.io.live.callback.IRoomCallBack;
 import com.rong.io.live.helper.LiveEventHelper;
 import com.rong.io.live.helper.LiveRTCEngineInitHelper;
 import com.rong.io.live.manager.RCChatRoomMessageManager;
+import com.rong.io.live.message.RCChatJoinRoomMessage;
+import com.rong.io.live.message.RCChatRoomMemberNumMessage;
 import com.rong.io.live.message.RCChatroomLocationMessage;
+import com.rong.io.live.message.RCOnSnappingUpMessage;
 import com.rong.io.live.message.RCPauseLiveMessage;
+import com.rong.io.live.message.RCUserAddLikeMessage;
+import com.rong.io.live.message.RCUserSeatApplyMessage;
 import com.rong.io.live.message.RCUserSeatResponseMessage;
 import com.rong.io.live.message.RCUserSyncAddLikeCountMessage;
 
@@ -38,6 +43,7 @@ import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
 import cn.rongcloud.rtc.api.callback.IRCRTCResultDataCallback;
 import cn.rongcloud.rtc.api.callback.IRCRTCRoomEventsListener;
 import cn.rongcloud.rtc.api.stream.RCRTCAudioInputStream;
+import cn.rongcloud.rtc.api.stream.RCRTCCameraOutputStream;
 import cn.rongcloud.rtc.api.stream.RCRTCInputStream;
 import cn.rongcloud.rtc.api.stream.RCRTCLiveInfo;
 import cn.rongcloud.rtc.api.stream.RCRTCOutputStream;
@@ -274,6 +280,10 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
     private void startVideoPreview() {
         // 创建本地视频显示视图
         RCRTCVideoView rcrtcVideoView = new RCRTCVideoView(Utils.getApp().getApplicationContext());
+        RCRTCCameraOutputStream rcrtcCameraOutputStream = RCRTCEngine.getInstance().getDefaultVideoStream();
+        if (rcrtcCameraOutputStream == null) {
+            return;
+        }
         RCRTCEngine.getInstance().getDefaultVideoStream().setVideoView(rcrtcVideoView);
         if (getView() != null) {
             getView().addVideoPreview(rcrtcVideoView);
@@ -538,7 +548,66 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
                 .subscribe(new Consumer<Message>() {
                     @Override
                     public void accept(Message message) {
+                        //将消息显示到列表上
+                        if (LiveEventHelper.getInstance().isShowingMessage(message.getContent())) {
+                            if (null != getView()) {
+                                getView().addMessageContent(message, false);
+                            }
+                        }
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_CHAT_ROOM_ENTER)) {
+                            //加入房间消息
+                            if (null != getView() && message.getContent() != null) {
+                                RCChatJoinRoomMessage joinRoomMessage = (RCChatJoinRoomMessage) message.getContent();
+                                getView().receiveJoinMessage(joinRoomMessage);
+                            }
+                            return;
+                        }
+
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_LIVE_ON_SNAP_UP)) {
+                            //抢购消息
+                            if (null != getView() && message.getContent() != null) {
+                                RCOnSnappingUpMessage rcOnSnappingUpMessage = (RCOnSnappingUpMessage) message.getContent();
+                                getView().receiveSnapUpMessage(rcOnSnappingUpMessage);
+                            }
+                            return;
+                        }
 
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_CHAT_ROOM_ADD_LIKE)) {
+                            if (message.getContent() != null) {
+                                RCUserAddLikeMessage addLikeMessage = (RCUserAddLikeMessage) message.getContent();
+                                if (getView() != null) {
+                                    getView().onAddLikeMessage(addLikeMessage);
+                                }
+                            }
+                            return;
+                        }
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_CHAT_ROOM_SEAT_APPLY)) {
+                            //学生连麦申请
+                            if (message.getContent() != null) {
+                                RCUserSeatApplyMessage rcUserSeatApplyMessage = (RCUserSeatApplyMessage) message.getContent();
+                                if (getView() != null) {
+                                    getView().onSeatApplyMessage(rcUserSeatApplyMessage);
+                                }
+                            }
+                            return;
+                        }
+
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_LIVE_MEMBER_COUNT_SYNC)) {
+                            //同步成员数量
+                            if (message.getContent() != null && null != getView()) {
+                                RCChatRoomMemberNumMessage rcChatRoomMemberNumMessage = (RCChatRoomMemberNumMessage) message.getContent();
+                                getView().syncMemberCount(rcChatRoomMemberNumMessage.getCount());
+                            }
+                            return;
+                        }
+
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_LIVE_FINISH_MSG)) {
+                            //关闭直播间
+                            if (null != getView()) {
+                                getView().liveRoomOffline();
+                            }
+                            return;
+                        }
                     }
                 });
         disposablesManager.add(subscribe);
@@ -648,7 +717,7 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
      * @param userId
      */
     public void notifyOpenOpsLiveVideoAction(String roomId, String type, String userId) {
-        addSubscribe(create(APIService.class).notifyOpenOpsLiveVideoAction(roomId, type, userId,"1080x1920"), new DisposableObserver() {
+        addSubscribe(create(APIService.class).notifyOpenOpsLiveVideoAction(roomId, type, userId, "1080x1920"), new DisposableObserver() {
             @Override
             public void onNext(Object o) {
                 //通知服务端加入成功即可,无须关注结果

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/course/LiveCourseFragment.java

@@ -149,7 +149,7 @@ public class LiveCourseFragment extends BaseMVPFragment<FragmentLiveCourseLayout
             LiveCourseListBean.RowsBean item = (LiveCourseListBean.RowsBean) adapter.getItem(position);
             ARouter.getInstance()
                     .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                    .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + item.courseGroupId+ "&classId=" + item.courseId)
+                    .withString(WebConstants.WEB_URL, String.format(WebConstants.TEACHER_LIVE_DETAIL_NORMAL_COURSE, item.courseGroupId, item.courseId))
                     .navigation();
         });
         buildDefaultCourseStatusFilterList();

+ 0 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/live/TeacherLiveRoomActivity.java

@@ -206,7 +206,6 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 
     @Override
     protected void initView() {
-        setStatusBarColor();
         ivReverseCamera = viewBinding.viewCreateOptions.ivReverseCamera;
         ivLiveBeauty = viewBinding.viewCreateOptions.ivLiveBeauty;
         ivLiveShare = viewBinding.viewCreateOptions.ivLiveShare;

+ 5 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/main/CourseTableFragment.kt

@@ -164,7 +164,11 @@ class CourseTableFragment :
                 .build(RouterPath.WebCenter.ACTIVITY_HTML)
                 .withString(
                     WebConstants.WEB_URL,
-                    WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + data.courseGoupId + "&classId=" + data.courseId
+                    String.format(
+                        WebConstants.TEACHER_LIVE_DETAIL_NORMAL_COURSE,
+                        data.courseGoupId,
+                        data.courseId
+                    )
                 )
                 .navigation()
         }

+ 6 - 2
teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt

@@ -79,7 +79,7 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
         mViewBinding.tvNickname.text =
             UserHelper.getTeacherName(teacherUserInfo.username, teacherUserInfo.userId);
         //星级
-        if (teacherUserInfo.starGrade.toFloat() > 0 ) {
+        if (teacherUserInfo.starGrade.toFloat() > 0) {
             mViewBinding.ratingBar.visibility = View.VISIBLE
             mViewBinding.tvNoScore.visibility = View.GONE
             mViewBinding.ratingBar.rating = teacherUserInfo.starGrade.toFloat()
@@ -371,7 +371,11 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
                 .build(RouterPath.WebCenter.ACTIVITY_HTML)
                 .withString(
                     WebConstants.WEB_URL,
-                    WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + bean.courseGroupId + "&classId=" + bean.courseId
+                    String.format(
+                        WebConstants.TEACHER_LIVE_DETAIL_NORMAL_COURSE,
+                        bean.courseGroupId,
+                        bean.courseId
+                    )
                 )
                 .navigation()
             CourseConstants.OTHER_COURSE ->                 //陪练课

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/mine/UnBindBankCardActivity.java

@@ -104,7 +104,7 @@ public class UnBindBankCardActivity extends BaseMVPActivity<ActivityUnBindBankCa
             ARouter.getInstance().build(RouterPath.UserCenter.COMMON_EMPTY_ACTIVITY)
                     .withString(UserConstants.PAGE_TITLE, "解绑失败")
                     .withString(UserConstants.PAGE_ERROR_TEXT, apiException.getErrmsg())
-                    .withInt(UserConstants.EMPTY_ICON_RESID, R.drawable.icon_bind_card_success)
+                    .withInt(UserConstants.EMPTY_ICON_RESID, R.drawable.icon_bind_card_error)
                     .withString(UserConstants.EMPTY_BTN_TEXT, "重新解绑")
                     .navigation();
         }

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceUtils.java

@@ -237,7 +237,7 @@ public class JsInterfaceUtils extends Object {
                 if ("joinLiveRoom".equals(api)) {
                     JSONObject content = jsonObject.getJSONObject("content");
                     if (onListener != null) {
-                        onListener.joinLiveRoom(content.getString("roomId"), content.getString("teacherId"));
+                        onListener.joinLiveRoom(content.optString("roomId"), content.optString("teacherId"));
                     }
                     return;
                 }

BIN
teacher/src/main/res/drawable-xhdpi/icon_bind_card_error.png


BIN
teacher/src/main/res/drawable-xxhdpi/icon_bind_card_error.png


+ 3 - 2
teacher/src/main/res/layout/activity_teacher_live_room_layout.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -41,4 +42,4 @@
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
-</androidx.constraintlayout.widget.ConstraintLayout>
+</FrameLayout>