Przeglądaj źródła

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

# Conflicts:
#	teacher/src/main/java/com/cooleshow/teacher/bean/SparringCourseHomeworkBean.java
#	teacher/src/main/java/com/cooleshow/teacher/ui/course/PianoRoomCourseDetailActivity.java
邓琴文 3 lat temu
rodzic
commit
47585e263d
38 zmienionych plików z 393 dodań i 50 usunięć
  1. 3 0
      BaseLibrary/src/main/java/com/cooleshow/base/constanst/Constants.java
  2. 2 0
      BaseLibrary/src/main/java/com/cooleshow/base/constanst/RouteConstants.java
  3. 11 0
      BaseLibrary/src/main/java/com/cooleshow/base/utils/JumpUtils.java
  4. 16 10
      BaseLibrary/src/main/res/layout/common_popu.xml
  5. 10 2
      rong_im/kit/src/main/java/io/rong/imkit/utils/helper/OpenChatHelper.java
  6. 1 0
      student/src/main/java/com/cooleshow/student/bean/PianoRoomCourseHomeworkBean.java
  7. 2 2
      student/src/main/java/com/cooleshow/student/bean/SparringCourseHomeworkBean.java
  8. 13 1
      student/src/main/java/com/cooleshow/student/ui/course/PianoRoomCourseDetailActivity.java
  9. 9 1
      student/src/main/java/com/cooleshow/student/ui/course/PracticeCourseDetailActivity.java
  10. 13 4
      student/src/main/java/com/cooleshow/student/ui/course/SparringCourseDetailActivity.java
  11. 34 0
      student/src/main/java/com/cooleshow/student/ui/main/MainActivity.java
  12. 12 0
      student/src/main/java/com/cooleshow/student/ui/message/MessageBoxActivity.java
  13. 9 1
      student/src/main/java/com/cooleshow/student/ui/web/HtmlActivity.java
  14. 3 3
      student/src/main/java/com/cooleshow/student/widgets/helper/JsInterfaceUtils.java
  15. 13 2
      student/src/main/res/layout/activity_piano_room_course_detail_layout.xml
  16. 13 2
      student/src/main/res/layout/activity_practice_course_detail_layout.xml
  17. 14 2
      student/src/main/res/layout/activity_sparring_course_detail_layout.xml
  18. 1 1
      student/src/main/res/layout/layout_item_homework.xml
  19. 1 1
      teacher/src/main/java/com/cooleshow/teacher/bean/SparringCourseHomeworkBean.java
  20. 2 0
      teacher/src/main/java/com/cooleshow/teacher/contract/MyBankCardContract.java
  21. 8 4
      teacher/src/main/java/com/cooleshow/teacher/presenter/mine/MyBankCardPresenter.java
  22. 8 0
      teacher/src/main/java/com/cooleshow/teacher/ui/course/PianoRoomCourseDetailActivity.java
  23. 9 1
      teacher/src/main/java/com/cooleshow/teacher/ui/course/SparringCourseDetailActivity.java
  24. 44 1
      teacher/src/main/java/com/cooleshow/teacher/ui/income/WithdrawalActivity.java
  25. 37 0
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MainActivity.java
  26. 7 1
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java
  27. 18 3
      teacher/src/main/java/com/cooleshow/teacher/ui/message/MessageBoxActivity.java
  28. 8 0
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/BindBankCardActivity.java
  29. 11 1
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/BindCardSuccessActivity.java
  30. 5 0
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/MyBankCardActivity.java
  31. 14 0
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/UnBindBankCardActivity.java
  32. 9 1
      teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java
  33. 1 0
      teacher/src/main/res/layout/activity_piano_room_detail_layout.xml
  34. 14 3
      teacher/src/main/res/layout/activity_sparring_course_detail_layout.xml
  35. 1 0
      teacher/src/main/res/layout/activity_withdrawal.xml
  36. 12 0
      teacher/src/main/res/layout/fragment_mine_layout.xml
  37. 1 0
      teacher/src/main/res/values/strings.xml
  38. 4 3
      usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/CommEmptyActivity.java

+ 3 - 0
BaseLibrary/src/main/java/com/cooleshow/base/constanst/Constants.java

@@ -18,4 +18,7 @@ public class Constants {
     public static final int PAY_ERROR_BY_NOT_INSTALL =2;//支付失败,未安装
     public static final int PAY_ERROR =3;//支付失败
     public static final int PAY_CANCEL =4;//支付取消
+
+
+    public static final String MAIN_PAGE_SELECT_POTION_KEY = "select_position";
 }

+ 2 - 0
BaseLibrary/src/main/java/com/cooleshow/base/constanst/RouteConstants.java

@@ -5,4 +5,6 @@ package com.cooleshow.base.constanst;
  * 路由跳转原生页面标记集合
  */
 public class RouteConstants {
+    public static final String A="homework";
+    public static final String PAGE_TAG_BUY_PRACTICE="buyPractice";//购买陪练课->跳转首页课表
 }

+ 11 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/JumpUtils.java

@@ -5,6 +5,8 @@ import android.text.TextUtils;
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.bean.RouteBean;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.constanst.RouteConstants;
 import com.cooleshow.base.router.RouterPath;
 
 /**
@@ -22,6 +24,15 @@ public class JumpUtils {
 
         if (TextUtils.equals(action, ACTION_APP)) {
             //跳转原生页面
+            if (!TextUtils.isEmpty(routeBean.pageTag)) {
+                if (TextUtils.equals(routeBean.pageTag, RouteConstants.PAGE_TAG_BUY_PRACTICE)) {
+                    //购买陪练课,跳转首页课表
+                    ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME)
+                            .withInt(Constants.MAIN_PAGE_SELECT_POTION_KEY, 1)
+                            .navigation();
+                    return true;
+                }
+            }
         } else {
             //跳转H5页面
             if (TextUtils.isEmpty(routeBean.url)) {

+ 16 - 10
BaseLibrary/src/main/res/layout/common_popu.xml

@@ -7,10 +7,9 @@
     android:orientation="vertical">
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:paddingBottom="14dp"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginStart="@dimen/dp_32"
-        android:layout_marginEnd="@dimen/dp_32"
         android:background="@drawable/bg_white_5dp">
 
 
@@ -28,10 +27,10 @@
             android:id="@+id/tv_title"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
-            android:layout_marginStart="@dimen/dp_16"
+            android:layout_marginStart="@dimen/dp_7"
             android:layout_marginEnd="@dimen/dp_16"
             android:text="确定退课吗?"
-            android:textColor="@color/black_444"
+            android:textColor="@color/color_333333"
             android:textSize="@dimen/dp_18"
             android:textStyle="bold"
             app:layout_constraintBottom_toBottomOf="@id/iv_icon"
@@ -44,10 +43,13 @@
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_marginTop="@dimen/dp_22"
+            android:layout_marginEnd="14dp"
+            android:layout_marginStart="14dp"
             android:lineSpacingExtra="10dp"
             android:text=""
-            android:textColor="@color/black_444"
-            android:textSize="@dimen/dp_16"
+            tools:text="哈哈哈哈哈哈"
+            android:textColor="@color/color_666666"
+            android:textSize="@dimen/dp_14"
             app:layout_constraintEnd_toEndOf="@+id/tv_title"
             app:layout_constraintStart_toStartOf="@+id/iv_icon"
             app:layout_constraintTop_toBottomOf="@+id/iv_icon" />
@@ -79,8 +81,10 @@
         <TextView
             android:id="@+id/btn_cancel"
             android:layout_width="0dp"
-            android:layout_height="@dimen/dp_50"
-            android:background="@drawable/btn_gray_start_bottom_shape"
+            android:layout_height="@dimen/dp_44"
+            android:layout_marginStart="14dp"
+            android:layout_marginEnd="6dp"
+            android:background="@drawable/cancel_btn_bg"
             android:gravity="center"
             android:text="取消"
             android:textColor="@color/colorPrimaryStudent"
@@ -106,8 +110,10 @@
         <TextView
             android:id="@+id/btn_commit"
             android:layout_width="0dp"
-            android:layout_height="@dimen/dp_50"
-            android:background="@drawable/btn_green_end_bottom_shape"
+            android:layout_height="@dimen/dp_44"
+            android:layout_marginStart="6dp"
+            android:layout_marginEnd="14dp"
+            android:background="@drawable/sure_btn_bg"
             android:gravity="center"
             android:text="确定"
             android:textColor="@color/white"

+ 10 - 2
rong_im/kit/src/main/java/io/rong/imkit/utils/helper/OpenChatHelper.java

@@ -1,6 +1,7 @@
 package io.rong.imkit.utils.helper;
 
 import android.content.Context;
+import android.text.TextUtils;
 
 import com.cooleshow.base.utils.Utils;
 
@@ -10,12 +11,19 @@ import io.rong.imkit.RongIM;
  * Author by pq, Date on 2022/7/4.
  */
 public class OpenChatHelper {
+    public static final String SINGLE_CHAT="single";//单聊
 
-    public static void goChat(Context context,String groupId, String groupName) {
-        RongIM.getInstance().startPrivateChat(context, groupId, groupName);
+    public static void goChat(Context context,String targetId, String groupName) {
+        if(TextUtils.isEmpty(targetId)){
+            return;
+        }
+        RongIM.getInstance().startPrivateChat(context, targetId, groupName);
     }
 
     public static void goGroupChat(Context context,String groupId, String groupName) {
+        if(TextUtils.isEmpty(groupId)){
+            return;
+        }
         RongIM.getInstance().startGroupChat(context, groupId, groupName);
     }
 }

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

@@ -59,6 +59,7 @@ public class PianoRoomCourseHomeworkBean {
     public String teacherName;
     public String teacherReplied;
     public String title;
+    public String imGroupId;
     public int homeworkExpire;//作业过期 1:已过期 0:未过期
 
 }

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

@@ -49,13 +49,13 @@ public class SparringCourseHomeworkBean {
     public String studentAttachments;
     public String studentAvatar;
     public int studentHomeworkId;
-    public int studentId;
+    public String studentId;
     public String studentName;
     public String subjectName;
     public int submitHomework;
     public Object submitTime;
     public String teacherAvatar;
-    public int teacherId;
+    public String teacherId;
     public String teacherName;
     public String teacherReplied;
     public String title;

+ 13 - 1
student/src/main/java/com/cooleshow/student/ui/course/PianoRoomCourseDetailActivity.java

@@ -18,6 +18,7 @@ import com.cooleshow.student.presenter.course.PianoRoomCourseDetailPresenter;
 import com.cooleshow.base.widgets.VideoThumbnailView;
 
 import androidx.annotation.NonNull;
+import io.rong.imkit.utils.helper.OpenChatHelper;
 
 /**
  * Author by pq, Date on 2022/4/27.
@@ -27,6 +28,8 @@ import androidx.annotation.NonNull;
 public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPianoRoomCourseDetailLayoutBinding, PianoRoomCourseDetailPresenter> implements PianoRoomCourseDetailContract.PianoRoomCourseDetailView, View.OnClickListener {
     public static final String COURSE_ID = "course_id";
     private String mCourseId;
+    private PianoRoomCourseHomeworkBean mInfoBean;
+
 
     @NonNull
     @Override
@@ -42,6 +45,7 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
             finish();
             return;
         }
+        viewBinding.ivGoChat.setOnClickListener(this);
     }
 
     @Override
@@ -74,6 +78,7 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
         if (infoBean == null) {
             return;
         }
+        this.mInfoBean = infoBean;
         //时间
         viewBinding.tvCourseTime.setText(infoBean.classDate);
         //学生头像
@@ -203,7 +208,14 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
 
     @Override
     public void onClick(View v) {
-
+        int id = v.getId();
+        if (id == R.id.iv_go_chat) {
+            //跳转聊天
+            if (mInfoBean != null) {
+                OpenChatHelper.goGroupChat(PianoRoomCourseDetailActivity.this, mInfoBean.imGroupId, "");
+            }
+            return;
+        }
     }
 
 

+ 9 - 1
student/src/main/java/com/cooleshow/student/ui/course/PracticeCourseDetailActivity.java

@@ -11,6 +11,7 @@ import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
+import io.rong.imkit.utils.helper.OpenChatHelper;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.launcher.ARouter;
@@ -97,6 +98,12 @@ public class PracticeCourseDetailActivity extends BaseMVPActivity<ActivityPracti
                         .withString("course_group_id", mCourseGroupId)
                         .navigation();
                 break;
+            case R.id.iv_go_chat:
+                //聊天
+                if (mInfoBean != null) {
+                    OpenChatHelper.goChat(PracticeCourseDetailActivity.this, mInfoBean.teacherId, mInfoBean.teacherName);
+                }
+                break;
         }
     }
 
@@ -109,6 +116,7 @@ public class PracticeCourseDetailActivity extends BaseMVPActivity<ActivityPracti
         mCourseGroupId = getIntent().getStringExtra(COURSE_GROUP_ID);
         viewBinding.tvDo.setOnClickListener(this);
         viewBinding.tvEvaluate.setOnClickListener(this);
+        viewBinding.ivGoChat.setOnClickListener(this);
 
         rvVideo = viewBinding.rvVideo;
         GridLayoutManager manager = new GridLayoutManager(this, 3);
@@ -154,7 +162,7 @@ public class PracticeCourseDetailActivity extends BaseMVPActivity<ActivityPracti
             return;
         }
         mInfoBean = infoBean;
-        viewBinding.tvCourseTime.setText(UiUtils.getCourseTimeString(infoBean.startTime,infoBean.endTime));
+        viewBinding.tvCourseTime.setText(UiUtils.getCourseTimeString(infoBean.startTime, infoBean.endTime));
 
         //时间
         //老师头像

+ 13 - 4
student/src/main/java/com/cooleshow/student/ui/course/SparringCourseDetailActivity.java

@@ -5,6 +5,7 @@ import android.view.View;
 import android.widget.LinearLayout;
 
 import androidx.annotation.NonNull;
+import io.rong.imkit.utils.helper.OpenChatHelper;
 
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.GlideUtils;
@@ -32,6 +33,7 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
     private String mCourseGroupId;
     private String studentId;
     private CourseSetCommentDialog mSetCommentDialog;
+    private SparringCourseHomeworkBean mInfoBean;
 
     @NonNull
     @Override
@@ -87,6 +89,7 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
         if (infoBean == null) {
             return;
         }
+        this.mInfoBean = infoBean;
         //时间
         viewBinding.tvCourseTime.setText(infoBean.classDate);
         //学生头像
@@ -266,6 +269,12 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
             showSetCommentDialog(CourseSetCommentDialog.TYPE_SET_TEACHER_COMMENT);
             return;
         }
+
+        if (v.getId() == R.id.iv_go_chat) {
+            if (mInfoBean != null) {
+                OpenChatHelper.goChat(SparringCourseDetailActivity.this, mInfoBean.teacherId, mInfoBean.teacherName);
+            }
+        }
     }
 
     private void showSetCommentDialog(int typeSetTeacherComment) {
@@ -273,19 +282,19 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
             mSetCommentDialog = new CourseSetCommentDialog(this);
             mSetCommentDialog.setOnSubmitClickListener(new CourseSetCommentDialog.OnSubmitClickListener() {
                 @Override
-                public void onSubmit(String content,int type) {
+                public void onSubmit(String content, int type) {
                     //提交
                     if (type == CourseSetCommentDialog.TYPE_SET_TEACHER_COMMENT) {
                         //提交老师点评
-                        presenter.submitSparringCourseComment(content,mCourseId,mCourseGroupId,studentId);
+                        presenter.submitSparringCourseComment(content, mCourseId, mCourseGroupId, studentId);
                     }
                     if (type == CourseSetCommentDialog.TYPE_SET_HOMEWORK) {
                         //提交布置作业
-                        presenter.submitSparringCourseHomework(content,mCourseId);
+                        presenter.submitSparringCourseHomework(content, mCourseId);
                     }
                     if (type == CourseSetCommentDialog.TYPE_SET_HOMEWORK_COMMENT) {
                         //提交作业点评
-                        presenter.submitSparringCourseHomeworkComment(content,mCourseId);
+                        presenter.submitSparringCourseHomeworkComment(content, mCourseId);
                     }
                 }
             });

+ 34 - 0
student/src/main/java/com/cooleshow/student/ui/main/MainActivity.java

@@ -1,6 +1,7 @@
 package com.cooleshow.student.ui.main;
 
 import android.Manifest;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.text.TextUtils;
@@ -38,6 +39,8 @@ import java.util.ArrayList;
 
 import io.rong.imlib.RongIMClient;
 
+import static com.cooleshow.base.constanst.Constants.MAIN_PAGE_SELECT_POTION_KEY;
+
 /**
  * 创建日期:2022/5/25 18:02
  *
@@ -46,16 +49,47 @@ import io.rong.imlib.RongIMClient;
  */
 @Route(path = RouterPath.APPCenter.PATH_HOME)
 public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPresenter> implements MainContract.MainView {
+
     private ArrayList<Fragment> mFragments = new ArrayList<>();
     private HomeFragment mHomeFragment;
     private MineFragment mMineFragment;
     private MallFragment shopMallFragment;
 
+    /**
+     * 打开首页并选中指定tab
+     *
+     * @param context
+     * @param pos
+     */
+    public static void openAndSelectPos(Context context, int pos) {
+        Intent intent = new Intent(context, MainActivity.class);
+        intent.putExtra(MAIN_PAGE_SELECT_POTION_KEY, pos);
+        context.startActivity(intent);
+    }
+
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         QMUIStatusBarHelper.setStatusBarLightMode(this);
         EventBus.getDefault().register(this);
+        parseIntent(getIntent());
+    }
+
+    @Override
+    protected void onNewIntent(Intent intent) {
+        super.onNewIntent(intent);
+        parseIntent(intent);
+    }
+
+    private void parseIntent(Intent intent) {
+        if (intent.hasExtra(MAIN_PAGE_SELECT_POTION_KEY)) {
+            //跳转选中某个tab
+            int selectPos = intent.getIntExtra(MAIN_PAGE_SELECT_POTION_KEY, 0);
+            if (selectPos >= mFragments.size()) {
+                return;
+            }
+            setPositionItem(selectPos);
+        }
     }
 
     @Override

+ 12 - 0
student/src/main/java/com/cooleshow/student/ui/message/MessageBoxActivity.java

@@ -1,6 +1,7 @@
 package com.cooleshow.student.ui.message;
 
 import android.os.Bundle;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.ImageView;
@@ -14,10 +15,13 @@ import com.alibaba.android.arouter.facade.annotation.Route;
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.listener.OnItemClickListener;
 import com.chad.library.adapter.base.listener.OnLoadMoreListener;
+import com.cooleshow.base.bean.RouteBean;
 import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 
+import com.cooleshow.base.utils.GsonUtils;
+import com.cooleshow.base.utils.JumpUtils;
 import com.cooleshow.student.R;
 import com.cooleshow.student.adapter.MessageBoxAdapter;
 import com.cooleshow.student.bean.CountOfUnreadBean;
@@ -132,6 +136,14 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
                     if (item.readStatus == 0) {
                         presenter.setCurrentRead(item.id);
                     }
+                    if (!TextUtils.isEmpty(item.memo)) {
+                        try {
+                            RouteBean routeBean = GsonUtils.fromJson(item.memo, RouteBean.class);
+                            JumpUtils.jump(routeBean);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
                 }
             }
         });

+ 9 - 1
student/src/main/java/com/cooleshow/student/ui/web/HtmlActivity.java

@@ -110,6 +110,7 @@ import java.util.Map;
 import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.disposables.Disposable;
 import io.reactivex.rxjava3.schedulers.Schedulers;
+import io.rong.imkit.utils.helper.OpenChatHelper;
 import okhttp3.ResponseBody;
 
 @Route(path = RouterPath.WebCenter.ACTIVITY_HTML)
@@ -543,7 +544,14 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
 
     @Override
     public void joinChatGroup(String type, String id) {
-
+        if (isFinishing() || isDestroyed()) {
+            return;
+        }
+        if (TextUtils.equals(OpenChatHelper.SINGLE_CHAT, type)) {
+            OpenChatHelper.goChat(this, id, "");
+        } else {
+            OpenChatHelper.goGroupChat(this, id, "");
+        }
     }
 
     /**

+ 3 - 3
student/src/main/java/com/cooleshow/student/widgets/helper/JsInterfaceUtils.java

@@ -215,14 +215,14 @@ 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"));
                     }
                 }
                 //进入聊天
                 if ("joinChatGroup".equals(api)) {
                     JSONObject content = jsonObject.getJSONObject("content");
                     if (onListener != null) {
-                        onListener.joinChatGroup(content.getString("type"), content.getString("id"));
+                        onListener.joinChatGroup(content.optString("type"), content.optString("id"));
                     }
                 }
                 //跳转地址页面
@@ -234,7 +234,7 @@ public class JsInterfaceUtils extends Object {
                 if ("paymentOrder".equals(api)) {
                     JSONObject content = jsonObject.getJSONObject("content");
                     if (onListener != null) {
-                        onListener.paymentOrder(content.getString("orderNo"), content.getString("payChannel"), content.getString("payInfo"));
+                        onListener.paymentOrder(content.optString("orderNo"), content.optString("payChannel"), content.getString("payInfo"));
                     }
                 }
                 if ("savePicture".equalsIgnoreCase(api)) {

+ 13 - 2
student/src/main/res/layout/activity_piano_room_course_detail_layout.xml

@@ -96,7 +96,7 @@
 
                 <TextView
                     android:id="@+id/tv_title"
-                    android:layout_width="0dp"
+                    android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginStart="10dp"
                     android:layout_marginEnd="10dp"
@@ -108,11 +108,22 @@
                     android:textStyle="bold"
                     app:layout_constraintBottom_toTopOf="@+id/tv_course_name"
                     app:layout_constraintLeft_toRightOf="@+id/iv_avatar"
-                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintRight_toLeftOf="@+id/iv_go_chat"
                     app:layout_constraintTop_toTopOf="@+id/iv_avatar"
                     app:layout_constraintVertical_chainStyle="packed"
                     tools:text="张豆豆张豆豆张豆豆张豆" />
 
+
+                <ImageView
+                    android:id="@+id/iv_go_chat"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="8dp"
+                    android:src="@drawable/icon_chat_small"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_title"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_title"
+                    app:layout_constraintTop_toTopOf="@+id/tv_title" />
+
                 <TextView
                     android:id="@+id/tv_course_name"
                     android:layout_width="wrap_content"

+ 13 - 2
student/src/main/res/layout/activity_practice_course_detail_layout.xml

@@ -88,7 +88,7 @@
 
                 <TextView
                     android:id="@+id/tv_title"
-                    android:layout_width="0dp"
+                    android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginStart="10dp"
                     android:layout_marginEnd="10dp"
@@ -99,11 +99,22 @@
                     android:textSize="@dimen/sp_16"
                     android:textStyle="bold"
                     app:layout_constraintLeft_toRightOf="@+id/iv_avatar"
-                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintRight_toLeftOf="@+id/iv_go_chat"
                     app:layout_constraintTop_toTopOf="@+id/iv_avatar"
                     app:layout_constraintVertical_chainStyle="packed"
                     tools:text="张豆豆张豆豆张豆豆张豆" />
 
+                <ImageView
+                    android:paddingStart="5dp"
+                    android:id="@+id/iv_go_chat"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="5dp"
+                    android:src="@drawable/icon_chat_small"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_title"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_title"
+                    app:layout_constraintTop_toTopOf="@+id/tv_title" />
+
                 <androidx.recyclerview.widget.RecyclerView
                     android:id="@+id/rv_course_name"
                     android:layout_width="wrap_content"

+ 14 - 2
student/src/main/res/layout/activity_sparring_course_detail_layout.xml

@@ -96,7 +96,7 @@
 
                 <TextView
                     android:id="@+id/tv_title"
-                    android:layout_width="0dp"
+                    android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginStart="10dp"
                     android:layout_marginEnd="10dp"
@@ -108,11 +108,23 @@
                     android:textStyle="bold"
                     app:layout_constraintBottom_toTopOf="@+id/tv_course_name"
                     app:layout_constraintLeft_toRightOf="@+id/iv_avatar"
-                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintRight_toLeftOf="@+id/iv_go_chat"
                     app:layout_constraintTop_toTopOf="@+id/iv_avatar"
                     app:layout_constraintVertical_chainStyle="packed"
                     tools:text="张豆豆张豆豆张豆豆张豆" />
 
+
+                <ImageView
+                    android:paddingStart="5dp"
+                    android:id="@+id/iv_go_chat"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="5dp"
+                    android:src="@drawable/icon_chat_small"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_title"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_title"
+                    app:layout_constraintTop_toTopOf="@+id/tv_title" />
+
                 <TextView
                     android:id="@+id/tv_course_name"
                     android:layout_width="wrap_content"

+ 1 - 1
student/src/main/res/layout/layout_item_homework.xml

@@ -67,7 +67,7 @@
             android:background="@color/color_f2f2f2"
             app:layout_constraintTop_toBottomOf="@+id/im_clock" />
 
-        <com.cooleshow.base.widgets.QMUIRadiusImageView
+        <de.hdodenhof.circleimageview.CircleImageView
             android:id="@+id/im_header"
             android:layout_width="@dimen/dp_47"
             android:layout_height="@dimen/dp_51"

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/bean/SparringCourseHomeworkBean.java

@@ -77,5 +77,5 @@ public class SparringCourseHomeworkBean {
             "content": "11111"
     } */
 
-   
+
 }

+ 2 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/MyBankCardContract.java

@@ -15,6 +15,8 @@ public interface MyBankCardContract {
         void querySuccess(int page, ResponseBankCardBean data);
 
         void unbindBankCard(boolean isSuccess);
+
+        void unbindBankCardError(Throwable throwable);
     }
 
     interface Presenter {

+ 8 - 4
teacher/src/main/java/com/cooleshow/teacher/presenter/mine/MyBankCardPresenter.java

@@ -23,7 +23,7 @@ import org.json.JSONObject;
  * 类说明:
  */
 public class MyBankCardPresenter extends BasePresenter<MyBankCardContract.MyBankCardView> implements MyBankCardContract.Presenter {
-    public void queryUserBankCard( int page) {
+    public void queryUserBankCard(int page) {
         getView().showLoading();
         JSONObject jsonObject = new JSONObject();
         try {
@@ -39,11 +39,13 @@ public class MyBankCardPresenter extends BasePresenter<MyBankCardContract.MyBank
                     getView().querySuccess(page, data);
                 }
             }
+
             @Override
             public void onComplete() {
                 super.onComplete();
                 getView().hideLoading();
             }
+
             @Override
             public void onError(Throwable e) {
                 super.onError(e);
@@ -51,7 +53,7 @@ public class MyBankCardPresenter extends BasePresenter<MyBankCardContract.MyBank
         });
     }
 
-    public void unBindBankCard(String id ,String realName,String realIdCard) {
+    public void unBindBankCard(String id, String realName, String realIdCard) {
         UnBindCardEntry entry = new UnBindCardEntry();
         entry.name = realName;
         entry.id = id;
@@ -68,14 +70,16 @@ public class MyBankCardPresenter extends BasePresenter<MyBankCardContract.MyBank
             @Override
             public void onComplete() {
                 super.onComplete();
-                getView().hideLoading();
+                if (getView() != null) {
+                    getView().hideLoading();
+                }
             }
 
             @Override
             public void onError(Throwable e) {
                 super.onError(e);
                 if (getView() != null) {
-                    getView().unbindBankCard(true);
+                    getView().unbindBankCardError(e);
                 }
             }
         });

+ 8 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/PianoRoomCourseDetailActivity.java

@@ -29,6 +29,7 @@ import java.util.List;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.LinearLayoutManager;
+import io.rong.imkit.utils.helper.OpenChatHelper;
 
 /**
  * Author by pq, Date on 2022/6/24.
@@ -58,6 +59,7 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
         }
 
         viewBinding.tvSetHomework.setOnClickListener(this);
+        viewBinding.ivGoChat.setOnClickListener(this);
     }
 
     @Override
@@ -213,6 +215,12 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
             showSetCommentDialog();
             return;
         }
+        if (id == R.id.iv_go_chat) {
+            //跳转聊天
+            if (mInfoBean != null) {
+                OpenChatHelper.goGroupChat(PianoRoomCourseDetailActivity.this, mInfoBean.imGroupId, mInfoBean.courseGroupName);
+            }
+        }
     }
 
     private void showSetCommentDialog() {

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

@@ -26,6 +26,7 @@ import com.cooleshow.usercenter.helper.UserHelper;
 import com.daya.live_teaching.utils.helper.CourseEnterHelper;
 
 import androidx.annotation.NonNull;
+import io.rong.imkit.utils.helper.OpenChatHelper;
 
 /**
  * Author by pq, Date on 2022/4/27.
@@ -61,6 +62,7 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
         viewBinding.tvHomeworkSetComment.setOnClickListener(this);
         viewBinding.tvSetTeacherComment.setOnClickListener(this);
         viewBinding.tvEnterRoom.setOnClickListener(this);
+        viewBinding.ivGoChat.setOnClickListener(this);
     }
 
     @Override
@@ -101,7 +103,7 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
         viewBinding.tvTitle.setText(UserHelper.getStudentName(infoBean.studentName, studentId));
         //subjectName
         viewBinding.tvCourseName.setText(infoBean.subjectName);
-        viewBinding.tvCourseTime.setText(UiUtils.getCourseTimeString(infoBean.startTime,infoBean.endTime));
+        viewBinding.tvCourseTime.setText(UiUtils.getCourseTimeString(infoBean.startTime, infoBean.endTime));
 
         String status = infoBean.courseStatus;
         if (TextUtils.equals(CourseConstants.COURSE_STATUS_NOT_START, status)) {
@@ -301,6 +303,12 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
             }
             return;
         }
+
+        if (v.getId() == R.id.iv_go_chat) {
+            if (mInfoBean != null) {
+                OpenChatHelper.goChat(SparringCourseDetailActivity.this, mInfoBean.studentId, mInfoBean.studentName);
+            }
+        }
     }
 
     private void showSetCommentDialog(int typeSetTeacherComment) {

+ 44 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/income/WithdrawalActivity.java

@@ -14,6 +14,7 @@ import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtils;
+import com.cooleshow.base.widgets.dialog.CommonDialog;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.bean.WithdrawalInfoBean;
 import com.cooleshow.teacher.contract.WithdrawalContract;
@@ -32,6 +33,9 @@ import io.rong.imkit.utils.StatusBarUtil;
  */
 @Route(path = RouterPath.IncomeCenter.TEACHER_MINE_WITHDRAWAL)
 public class WithdrawalActivity extends BaseMVPActivity<ActivityWithdrawalBinding, WithdrawalPresenter> implements WithdrawalContract.WithdrawalView, View.OnClickListener {
+
+    private CommonDialog mCommonDialog;
+
     @Override
     public void onClick(View view) {
         switch (view.getId()) {
@@ -118,7 +122,15 @@ public class WithdrawalActivity extends BaseMVPActivity<ActivityWithdrawalBindin
     @Override
     public void initData() {
         super.initData();
-        presenter.getWithdrawalInfo();
+
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (presenter != null) {
+            presenter.getWithdrawalInfo();
+        }
     }
 
     private WithdrawalInfoBean mWithdrawalInfo;
@@ -130,7 +142,38 @@ public class WithdrawalActivity extends BaseMVPActivity<ActivityWithdrawalBindin
         viewBinding.tvServiceFee.setText("单次收入结算时,平台将收取" + getTwoDecimal(data.withdrawalServiceFee) + "元手续费");
         if (null != data.userBankCard) {
             viewBinding.tvBankName.setText(data.userBankCard.bankName);
+            viewBinding.tvTip.setVisibility(View.VISIBLE);
+        } else {
+            viewBinding.tvBankName.setText("您未绑定银行卡");
+            viewBinding.tvTip.setVisibility(View.INVISIBLE);
+            showNotBindBankCardTip();
+        }
+    }
+
+    private void showNotBindBankCardTip() {
+        if (mCommonDialog == null) {
+            mCommonDialog = new CommonDialog(this);
         }
+        if (!mCommonDialog.isShowing()) {
+            mCommonDialog.show();
+        }
+        mCommonDialog.setTitle("绑定银行卡");
+        mCommonDialog.setContent("您需要先绑定银行卡后才能结算");
+        mCommonDialog.setOnConfirmClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                ARouter.getInstance().build(RouterPath.MineCenter.MINE_MY_BANKCARD)
+                        .navigation();
+            }
+        });
+        mCommonDialog.setOnCancelClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mCommonDialog != null) {
+                    mCommonDialog.dismiss();
+                }
+            }
+        });
     }
 
     private String getTwoDecimal(double num) {

+ 37 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/main/MainActivity.java

@@ -1,6 +1,8 @@
 package com.cooleshow.teacher.ui.main;
 
 import android.Manifest;
+import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.MenuItem;
@@ -39,6 +41,8 @@ import androidx.fragment.app.Fragment;
 
 import io.rong.imlib.RongIMClient;
 
+import static com.cooleshow.base.constanst.Constants.MAIN_PAGE_SELECT_POTION_KEY;
+
 /**
  * Author by pq, Date on 2022/4/20.
  */
@@ -49,12 +53,25 @@ public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPrese
     private MineFragment mMineFragment;
     private MallFragment shopMallFragment;
 
+    /**
+     * 打开首页并选中指定tab
+     *
+     * @param context
+     * @param pos
+     */
+    public static void openAndSelectPos(Context context, int pos) {
+        Intent intent = new Intent(context, MainActivity.class);
+        intent.putExtra(MAIN_PAGE_SELECT_POTION_KEY, pos);
+        context.startActivity(intent);
+    }
+
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         QMUIStatusBarHelper.setStatusBarLightMode(this);
         EventBus.getDefault().register(this);
+        parseIntent(getIntent());
     }
 
     @NonNull
@@ -64,6 +81,23 @@ public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPrese
     }
 
     @Override
+    protected void onNewIntent(Intent intent) {
+        super.onNewIntent(intent);
+        parseIntent(getIntent());
+    }
+
+    private void parseIntent(Intent intent) {
+        if (intent.hasExtra(MAIN_PAGE_SELECT_POTION_KEY)) {
+            //跳转选中某个tab
+            int selectPos = intent.getIntExtra(MAIN_PAGE_SELECT_POTION_KEY, 0);
+            if (selectPos >= mFragments.size()) {
+                return;
+            }
+            setPositionItem(selectPos);
+        }
+    }
+
+    @Override
     protected void initView() {
         HomePageAdapter homePageAdapter = new HomePageAdapter(this);
         mHomeFragment = new HomeFragment();
@@ -90,6 +124,9 @@ public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPrese
         });
     }
 
+    public void setPositionItem(int position) {
+        viewBinding.navigation.setSelectedItemId(getViewBinding().navigation.getMenu().getItem(position).getItemId());
+    }
 
     @Override
     public void onBackPressed() {

+ 7 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java

@@ -75,7 +75,7 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
             mViewBinding.ratingBar.setVisibility(View.VISIBLE);
             mViewBinding.ratingBar.setRating(teacherUserInfo.starGrade);
             mViewBinding.tvNoScore.setVisibility(View.GONE);
-        } else if(TextUtils.equals(teacherUserInfo.entryStatus, TeacherInfoConstants.ENTRY_STATUS_PASS)){
+        } else if (TextUtils.equals(teacherUserInfo.entryStatus, TeacherInfoConstants.ENTRY_STATUS_PASS)) {
             mViewBinding.ratingBar.setVisibility(View.GONE);
             mViewBinding.tvNoScore.setVisibility(View.VISIBLE);
         }
@@ -123,6 +123,12 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
             mViewBinding.ivTeacherMusicPersonTag.setVisibility(View.GONE);
             mViewBinding.tvMusicStatusTip.setText("审核未通过");
         }
+        //银行卡绑定状态
+        if (teacherUserInfo.isBank == 0) {
+            mViewBinding.tvBankCardBindTip.setText("未绑定");
+        } else {
+            mViewBinding.tvBankCardBindTip.setText("已绑定");
+        }
     }
 
     private void hintCertificationOtherView() {

+ 18 - 3
teacher/src/main/java/com/cooleshow/teacher/ui/message/MessageBoxActivity.java

@@ -1,6 +1,7 @@
 package com.cooleshow.teacher.ui.message;
 
 import android.os.Bundle;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.ImageView;
@@ -14,9 +15,12 @@ import com.alibaba.android.arouter.facade.annotation.Route;
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.listener.OnItemClickListener;
 import com.chad.library.adapter.base.listener.OnLoadMoreListener;
+import com.cooleshow.base.bean.RouteBean;
 import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.GsonUtils;
+import com.cooleshow.base.utils.JumpUtils;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.adapter.MessageBoxAdapter;
 import com.cooleshow.teacher.bean.CountOfUnreadBean;
@@ -24,9 +28,12 @@ import com.cooleshow.teacher.bean.SystemMessageBean;
 import com.cooleshow.teacher.contract.MessageBoxContract;
 import com.cooleshow.teacher.databinding.ActivityMessageBoxBinding;
 import com.cooleshow.teacher.presenter.message.MessageBoxPresenter;
+import com.google.gson.Gson;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
 import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
 
+import org.json.JSONObject;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -47,7 +54,7 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.cl_all:
-                if (group.equals("")){
+                if (group.equals("")) {
                     break;
                 }
                 group = "";
@@ -57,7 +64,7 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
                 queryList(true);
                 break;
             case R.id.cl_course:
-                if (group.equals("COURSE")){
+                if (group.equals("COURSE")) {
                     break;
                 }
                 group = "COURSE";
@@ -67,7 +74,7 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
                 queryList(true);
                 break;
             case R.id.cl_system:
-                if (group.equals("SYSTEM")){
+                if (group.equals("SYSTEM")) {
                     break;
                 }
                 group = "SYSTEM";
@@ -131,6 +138,14 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
                     if (item.readStatus == 0) {
                         presenter.setCurrentRead(item.id);
                     }
+                    if (!TextUtils.isEmpty(item.memo)) {
+                        try {
+                            RouteBean routeBean = GsonUtils.fromJson(item.memo, RouteBean.class);
+                            JumpUtils.jump(routeBean);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
                 }
 
             }

+ 8 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/mine/BindBankCardActivity.java

@@ -1,6 +1,7 @@
 package com.cooleshow.teacher.ui.mine;
 
 import android.content.Intent;
+import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.TextView;
@@ -17,6 +18,7 @@ import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtils;
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.bean.ResponseBindCardBean;
 import com.cooleshow.teacher.bean.ResponseUserBankCardBean;
@@ -40,6 +42,12 @@ import java.util.List;
 public class BindBankCardActivity extends BaseMVPActivity<ActivityBindBankcardBinding, BindBankCardPresenter> implements BindBankCardContract.BindBankCardView, View.OnClickListener {
 
     @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        QMUIStatusBarHelper.setStatusBarLightMode(this);
+    }
+
+    @Override
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.tv_bind:

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

@@ -1,15 +1,19 @@
 package com.cooleshow.teacher.ui.mine;
 
+import android.os.Bundle;
 import android.view.View;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.contract.BindCardSuccessContract;
 import com.cooleshow.teacher.databinding.ActivityBindCardSuccessBinding;
 import com.cooleshow.teacher.presenter.mine.BindCardSuccessPresenter;
 
+import androidx.annotation.Nullable;
+
 /**
  * 创建日期:2022/5/19 14:35
  *
@@ -20,8 +24,14 @@ import com.cooleshow.teacher.presenter.mine.BindCardSuccessPresenter;
 public class BindCardSuccessActivity extends BaseMVPActivity<ActivityBindCardSuccessBinding, BindCardSuccessPresenter> implements BindCardSuccessContract.BindCardSuccessView, View.OnClickListener {
 
     @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        QMUIStatusBarHelper.setStatusBarLightMode(this);
+    }
+
+    @Override
     public void onClick(View view) {
-        switch (view.getId()){
+        switch (view.getId()) {
             case R.id.tv_i_know:
                 finish();
                 break;

+ 5 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/mine/MyBankCardActivity.java

@@ -123,4 +123,9 @@ public class MyBankCardActivity extends BaseMVPActivity<ActivityMyBankCardBindin
     public void unbindBankCard(boolean isSuccess) {
 
     }
+
+    @Override
+    public void unbindBankCardError(Throwable throwable) {
+
+    }
 }

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

@@ -8,6 +8,7 @@ import android.text.TextUtils;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.data.net.ApiException;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.ToastUtil;
@@ -95,4 +96,17 @@ public class UnBindBankCardActivity extends BaseMVPActivity<ActivityUnBindBankCa
                 .navigation();
         if (isSuccess) finish();
     }
+
+    @Override
+    public void unbindBankCardError(Throwable throwable) {
+        if (throwable instanceof ApiException) {
+            ApiException apiException = (ApiException) throwable;
+            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)
+                    .withString(UserConstants.EMPTY_BTN_TEXT, "重新解绑")
+                    .navigation();
+        }
+    }
 }

+ 9 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java

@@ -110,6 +110,7 @@ import java.util.Map;
 import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.disposables.Disposable;
 import io.reactivex.rxjava3.schedulers.Schedulers;
+import io.rong.imkit.utils.helper.OpenChatHelper;
 import okhttp3.ResponseBody;
 
 @Route(path = RouterPath.WebCenter.ACTIVITY_HTML)
@@ -543,7 +544,14 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
 
     @Override
     public void joinChatGroup(String type, String id) {
-
+        if (isFinishing() || isDestroyed()) {
+            return;
+        }
+        if (TextUtils.equals(OpenChatHelper.SINGLE_CHAT, type)) {
+            OpenChatHelper.goChat(this, id, "");
+        } else {
+            OpenChatHelper.goGroupChat(this, id, "");
+        }
     }
 
     public void selectAddress(String addressJson) {

+ 1 - 0
teacher/src/main/res/layout/activity_piano_room_detail_layout.xml

@@ -109,6 +109,7 @@
                     tools:text="张豆豆张豆豆张豆豆张豆" />
 
                 <ImageView
+                    android:id="@+id/iv_go_chat"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginStart="8dp"

+ 14 - 3
teacher/src/main/res/layout/activity_sparring_course_detail_layout.xml

@@ -97,7 +97,7 @@
 
                 <TextView
                     android:id="@+id/tv_title"
-                    android:layout_width="0dp"
+                    android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginStart="10dp"
                     android:layout_marginEnd="10dp"
@@ -109,10 +109,21 @@
                     android:textStyle="bold"
                     app:layout_constraintBottom_toTopOf="@+id/tv_course_name"
                     app:layout_constraintLeft_toRightOf="@+id/iv_avatar"
-                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintRight_toLeftOf="@+id/iv_go_chat"
                     app:layout_constraintTop_toTopOf="@+id/iv_avatar"
                     app:layout_constraintVertical_chainStyle="packed"
-                    tools:text="张豆豆张豆豆张豆豆张豆" />
+                    tools:text="张豆豆张豆豆张豆张张" />
+
+                <ImageView
+                    android:paddingStart="5dp"
+                    android:id="@+id/iv_go_chat"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="5dp"
+                    android:src="@drawable/icon_chat_small"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_title"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_title"
+                    app:layout_constraintTop_toTopOf="@+id/tv_title" />
 
                 <TextView
                     android:id="@+id/tv_course_name"

+ 1 - 0
teacher/src/main/res/layout/activity_withdrawal.xml

@@ -51,6 +51,7 @@
             app:layout_constraintTop_toTopOf="parent" />
 
         <TextView
+            android:id="@+id/tv_tip"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginTop="2dp"

+ 12 - 0
teacher/src/main/res/layout/fragment_mine_layout.xml

@@ -442,6 +442,18 @@
 
 
             <TextView
+                android:id="@+id/tv_bank_card_bind_tip"
+                android:layout_width="wrap_content"
+                android:layout_height="18dp"
+                android:layout_marginEnd="25dp"
+                android:text="@string/no_bind_bank_card_tip"
+                android:textColor="@color/color_999999"
+                android:textSize="@dimen/sp_13"
+                app:layout_constraintBottom_toBottomOf="@+id/tv_authentication"
+                app:layout_constraintRight_toRightOf="@+id/tv_authentication"
+                app:layout_constraintTop_toTopOf="@+id/tv_authentication" />
+
+            <TextView
                 android:id="@+id/tv_network_monitoring"
                 style="@style/me_btn_style"
                 android:drawableLeft="@drawable/icon_net_check"

+ 1 - 0
teacher/src/main/res/values/strings.xml

@@ -47,4 +47,5 @@
     <string name="goto_create">去创建</string>
     <string name="confirm_unbind">确认解绑</string>
     <string name="search">搜索</string>
+    <string name="no_bind_bank_card_tip">未绑定</string>
 </resources>

+ 4 - 3
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/CommEmptyActivity.java

@@ -15,16 +15,17 @@ public class CommEmptyActivity extends BaseActivity<ActivityCommEmptyBinding> {
     protected void initView() {
         QMUIStatusBarHelper.setStatusBarLightMode(this);
         String pageTitle = getIntent().getStringExtra(UserConstants.PAGE_TITLE);
+        String errorTip = getIntent().getStringExtra(UserConstants.PAGE_ERROR_TEXT);
         int emptyResId = getIntent().getIntExtra(UserConstants.EMPTY_ICON_RESID, com.cooleshow.base.R.drawable.icon_empty_course);
         String emptyBtnText = getIntent().getStringExtra(UserConstants.EMPTY_BTN_TEXT);
         viewBinding.emptyBtn.setText(emptyBtnText);
         viewBinding.emptyIcon.setImageResource(emptyResId);
         viewBinding.titleView.setTitleText(pageTitle);
-
-        viewBinding.titleView.setLeftClickListener(v->{
+        viewBinding.emptyText.setText(errorTip);
+        viewBinding.titleView.setLeftClickListener(v -> {
             finish();
         });
-        viewBinding.emptyBtn.setOnClickListener(v->{
+        viewBinding.emptyBtn.setOnClickListener(v -> {
             finish();
         });