Browse Source

绑定银行卡,绑定银行卡验证码,绑定成功,已绑卡-解绑,解绑银行卡,解绑成功,解绑失败,
视频课(进行中,未上架,销售中,已完成)陪练课设置,直播课,视频课,开启直播,我的乐谱

Ryan8057 2 years ago
parent
commit
b0129d078a
100 changed files with 4675 additions and 9 deletions
  1. 1 1
      BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java
  2. 16 0
      BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt
  3. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_create_course_arrangement_normal.png
  4. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_create_course_conditions_nornal.png
  5. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_create_course_info_select.png
  6. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_create_teach_plan_normal.png
  7. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_create_course_arrangement_normal.png
  8. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_create_course_conditions_nornal.png
  9. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_create_course_info_select.png
  10. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_create_teach_plan_normal.png
  11. 4 1
      BaseLibrary/src/main/res/values/colors.xml
  12. 36 0
      teacher/src/main/AndroidManifest.xml
  13. 55 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineLiveCourseAdapter.java
  14. 41 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineLiveCoursePagerAdapter.java
  15. 43 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineScoreAdapter.java
  16. 55 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineVideoCourseAdapter.java
  17. 41 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineVideoCoursePagerAdapter.java
  18. 48 0
      teacher/src/main/java/com/cooleshow/teacher/api/APIService.java
  19. 66 0
      teacher/src/main/java/com/cooleshow/teacher/bean/MineLiveCourseListBean.java
  20. 56 0
      teacher/src/main/java/com/cooleshow/teacher/bean/MineVideoCourseListBean.java
  21. 106 0
      teacher/src/main/java/com/cooleshow/teacher/bean/MusicSheetListBean.java
  22. 36 0
      teacher/src/main/java/com/cooleshow/teacher/bean/ResponseBindCardBean.java
  23. 35 0
      teacher/src/main/java/com/cooleshow/teacher/bean/ResponseUserBankCardBean.java
  24. 22 0
      teacher/src/main/java/com/cooleshow/teacher/contract/BindBankCardContract.java
  25. 16 0
      teacher/src/main/java/com/cooleshow/teacher/contract/BindCardSuccessContract.java
  26. 16 0
      teacher/src/main/java/com/cooleshow/teacher/contract/CreateLiveContract.java
  27. 17 0
      teacher/src/main/java/com/cooleshow/teacher/contract/CreateLiveCourseArrangementContract.java
  28. 17 0
      teacher/src/main/java/com/cooleshow/teacher/contract/CreateLiveCourseInfoContract.java
  29. 18 0
      teacher/src/main/java/com/cooleshow/teacher/contract/InputBankVCodeContract.java
  30. 19 0
      teacher/src/main/java/com/cooleshow/teacher/contract/MineLiveCourseContract.java
  31. 19 0
      teacher/src/main/java/com/cooleshow/teacher/contract/MineScoreContract.java
  32. 19 0
      teacher/src/main/java/com/cooleshow/teacher/contract/MineVideoCourseContract.java
  33. 14 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/course/CreateLiveCourseArrangementPresenter.java
  34. 13 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/course/CreateLiveCourseInfoPresenter.java
  35. 57 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/course/MineLiveCoursePresenter.java
  36. 58 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/course/MineVideoCoursePresenter.java
  37. 77 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/mine/BindBankCardPresenter.java
  38. 14 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/mine/BindCardSuccessPresenter.java
  39. 14 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/mine/CreateLivePresenter.java
  40. 46 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/mine/InputBankVCodePresenter.java
  41. 58 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/score/MineScorePresenter.java
  42. 40 0
      teacher/src/main/java/com/cooleshow/teacher/ui/course/CreateLiveCourseArrangementActivity.java
  43. 88 0
      teacher/src/main/java/com/cooleshow/teacher/ui/course/CreateLiveCourseInfoActivity.java
  44. 100 0
      teacher/src/main/java/com/cooleshow/teacher/ui/course/MineLiveCourseActivity.java
  45. 185 0
      teacher/src/main/java/com/cooleshow/teacher/ui/course/MineLiveCourseFragment.java
  46. 102 0
      teacher/src/main/java/com/cooleshow/teacher/ui/course/MineVideoCourseActivity.java
  47. 184 0
      teacher/src/main/java/com/cooleshow/teacher/ui/course/MineVideoCourseFragment.java
  48. 5 0
      teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt
  49. 19 0
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java
  50. 215 0
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/BindBankCardActivity.java
  51. 47 0
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/BindCardSuccessActivity.java
  52. 39 0
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/CreateLiveActivity.java
  53. 64 0
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/InputBankVCodeActivity.java
  54. 3 0
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/MyBankCardActivity.java
  55. 10 2
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/PersonalSettingActivity.java
  56. 86 0
      teacher/src/main/java/com/cooleshow/teacher/ui/score/MineScoreActivity.java
  57. 180 0
      teacher/src/main/java/com/cooleshow/teacher/ui/score/MineScoreFragment.java
  58. BIN
      teacher/src/main/res/drawable-xhdpi/icon_bind_card_success.png
  59. BIN
      teacher/src/main/res/drawable-xhdpi/icon_calendar_next_month.png
  60. BIN
      teacher/src/main/res/drawable-xhdpi/icon_calendar_prev_month.png
  61. BIN
      teacher/src/main/res/drawable-xhdpi/icon_create_course_arrangement_select.png
  62. BIN
      teacher/src/main/res/drawable-xhdpi/icon_empty_mine_course.png
  63. BIN
      teacher/src/main/res/drawable-xhdpi/icon_empty_mine_video_course.png
  64. BIN
      teacher/src/main/res/drawable-xhdpi/icon_live_date_item.png
  65. BIN
      teacher/src/main/res/drawable-xhdpi/icon_music_mark.png
  66. BIN
      teacher/src/main/res/drawable-xhdpi/icon_score_demand.png
  67. BIN
      teacher/src/main/res/drawable-xhdpi/icon_upload_score.png
  68. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_bind_card_success.png
  69. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_calendar_next_month.png
  70. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_calendar_prev_month.png
  71. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_create_course_arrangement_select.png
  72. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_empty_mine_course.png
  73. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_empty_mine_video_course.png
  74. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_live_date_item.png
  75. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_music_mark.png
  76. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_score_demand.png
  77. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_upload_score.png
  78. 7 0
      teacher/src/main/res/drawable/bg_border_e5_radius.xml
  79. 7 0
      teacher/src/main/res/drawable/border_corner_2dc7aa.xml
  80. 8 0
      teacher/src/main/res/drawable/shap_gradient_59e5d5.xml
  81. 19 0
      teacher/src/main/res/drawable/tab_indicator.xml
  82. 304 0
      teacher/src/main/res/layout/activity_bind_bankcard.xml
  83. 40 0
      teacher/src/main/res/layout/activity_bind_card_success.xml
  84. 134 0
      teacher/src/main/res/layout/activity_create_live.xml
  85. 316 0
      teacher/src/main/res/layout/activity_create_live_course_arrangment.xml
  86. 619 0
      teacher/src/main/res/layout/activity_create_live_course_info.xml
  87. 82 0
      teacher/src/main/res/layout/activity_input_bank_vcode.xml
  88. 35 0
      teacher/src/main/res/layout/activity_mine_live_course.xml
  89. 65 0
      teacher/src/main/res/layout/activity_mine_score.xml
  90. 35 0
      teacher/src/main/res/layout/activity_mine_video_course.xml
  91. 1 0
      teacher/src/main/res/layout/activity_personal_certification.xml
  92. 21 5
      teacher/src/main/res/layout/activity_personal_setting.xml
  93. 44 0
      teacher/src/main/res/layout/empty_mine_live_course.xml
  94. 44 0
      teacher/src/main/res/layout/empty_mine_video_course.xml
  95. 26 0
      teacher/src/main/res/layout/fragment_mine_live_course.xml
  96. 26 0
      teacher/src/main/res/layout/fragment_mine_score.xml
  97. 28 0
      teacher/src/main/res/layout/fragment_mine_video_course.xml
  98. 122 0
      teacher/src/main/res/layout/layout_mine_live_course_item.xml
  99. 98 0
      teacher/src/main/res/layout/layout_mine_score_item.xml
  100. 74 0
      teacher/src/main/res/layout/layout_mine_video_course_item.xml

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

@@ -40,7 +40,7 @@ public abstract class WebConstants {
     //视频课创建
     public static final String TEACHER_VIDEO_CREATE = getBaseUrlH5() + "/#/videoCreate";
     //视频课详情
-    public static final String TEACHER_VIDEO_DETAIL = getBaseUrlH5() + "/#/videoDetail?groupId=4";
+    public static final String TEACHER_VIDEO_DETAIL = getBaseUrlH5() + "/#/videoDetail";
     //修改视频课
     public static final String TEACHER_VIDEO_MODIFY = getBaseUrlH5() + "/#/videoCreate?groupId=4";
     //创建直播课

+ 16 - 0
BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt

@@ -42,8 +42,20 @@ object RouterPath {
         companion object {
             const val TEACHER_MINE_COURSE = "/teacher/ui/course/MineCourseActivity"
             const val SPARRING_COURSE_DETAIL = "/teacher/ui/course/SparringCourseDetailActivity"
+            const val TEACHER_MINE_LIVE_COURSE = "/teacher/ui/course/MineLiveCourseActivity"
+            const val TEACHER_MINE_CREATE_LIVE_COURSE_INFO = "/teacher/ui/course/CreateLiveCourseInfoActivity"
+            const val TEACHER_MINE_CREATE_LIVE_COURSE_ARRANGEMENT = "/teacher/ui/course/CreateLiveCourseArrangementActivity"
+            const val TEACHER_MINE_VIDEO_COURSE = "/teacher/ui/course/MineVideoCourseActivity"
+
         }
     }
+    //曲谱模块
+    class ScoreCenter {
+        companion object {
+            const val TEACHER_MINE_SCORE = "/teacher/ui/score/MineScoreActivity"
+        }
+    }
+
 
     //评价模块
     class CommentCenter {
@@ -72,6 +84,10 @@ object RouterPath {
             const val MINE_ABOUT = "/teacher/ui/mine/AboutActivity"
             const val MINE_FEEDBACK = "/teacher/ui/mine/FeedBackActivity"
             const val MINE_MY_BANKCARD = "/teacher/ui/mine/MyBankCardActivity"
+            const val MINE_BIND_BANKCARD = "/teacher/ui/mine/BindBankCardActivity"
+            const val MINE_INPUT_BANK_VCODE = "/teacher/ui/mine/InputBankVCodeActivity"
+            const val MINE_BIND_CARD_SUCCESS = "/teacher/ui/mine/BindCardSuccessActivity"
+            const val TEACHER_MINE_CREATE_COURSE = "/teacher/ui/mine/CreateLiveActivity"
         }
     }
 }

BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_create_course_arrangement_normal.png


BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_create_course_conditions_nornal.png


BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_create_course_info_select.png


BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_create_teach_plan_normal.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_create_course_arrangement_normal.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_create_course_conditions_nornal.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_create_course_info_select.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_create_teach_plan_normal.png


+ 4 - 1
BaseLibrary/src/main/res/values/colors.xml

@@ -53,7 +53,7 @@
     <color name="color_ededed">#EDEDED</color>
     <color name="colorPrimaryStudent">#01C1B5</color>
     <color name="color_ff802c">#FF802C</color>
-    <color name="black_333">#494757</color>
+    <color name="black_333">#333333</color>
     <color name="color_f85043">#F85043</color>
     <color name="color_f7f8f9">#F7F8F9</color>
     <color name="color_1ecdac">#1ECDAC</color>
@@ -69,4 +69,7 @@
     <color name="color_ff6253">#FF6253</color>
     <color name="color_ff997b">#FF997B</color>
     <color name="color_ff9178">#FF9178</color>
+    <color name="color_ff4e19">#FF4E19</color>
+    <color name="color_b4b4b4">#B4B4B4</color>
+    <color name="color_59e5d5">#59E5D5</color>
 </resources>

+ 36 - 0
teacher/src/main/AndroidManifest.xml

@@ -123,6 +123,42 @@
             android:name=".ui.mine.MyBankCardActivity"
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.mine.BindBankCardActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.mine.InputBankVCodeActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.mine.BindCardSuccessActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.course.MineLiveCourseActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.course.CreateLiveCourseInfoActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.course.CreateLiveCourseArrangementActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.course.MineVideoCourseActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.mine.CreateLiveActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.score.MineScoreActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
     </application>
 
 </manifest>

+ 55 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineLiveCourseAdapter.java

@@ -0,0 +1,55 @@
+package com.cooleshow.teacher.adapter;
+
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.module.BaseLoadMoreModule;
+import com.chad.library.adapter.base.module.LoadMoreModule;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/19 16:38
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineLiveCourseAdapter extends BaseQuickAdapter<MineLiveCourseListBean.RowsBean, BaseViewHolder> implements LoadMoreModule {
+
+    public MineLiveCourseAdapter(List<MineLiveCourseListBean.RowsBean> data) {
+        super(R.layout.layout_mine_live_course_item, data);
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, MineLiveCourseListBean.RowsBean item) {
+        ImageView im_pic = helper.getView(R.id.im_pic);
+        GlideUtils.INSTANCE.loadImage(getContext(), item.backgroundPic, im_pic);
+        TextView tv_subject_name=helper.getView(R.id.tv_subject_name);
+        tv_subject_name.setText(item.subjectName);
+        ImageView im_header=helper.getView(R.id.im_header);
+        GlideUtils.INSTANCE.loadImage(getContext(), item.avatar, im_header,R.drawable.icon_teacher_default_head);
+        TextView tv_teacher_name=helper.getView(R.id.tv_teacher_name);
+        tv_teacher_name.setText(item.teacherName);
+        TextView tv_student_count=helper.getView(R.id.tv_student_count);
+        tv_student_count.setText(item.studentCount+"人已购买");
+        TextView tv_date=helper.getView(R.id.tv_date);
+        tv_date.setText(item.courseStartTime);
+        TextView tv_price=helper.getView(R.id.tv_price);
+        tv_price.setText("¥"+item.coursePrice+"/"+item.courseNum+"课时");
+    }
+
+    @NonNull
+    @Override
+    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
+        return new BaseLoadMoreModule(baseQuickAdapter);
+    }
+
+}

+ 41 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineLiveCoursePagerAdapter.java

@@ -0,0 +1,41 @@
+package com.cooleshow.teacher.adapter;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/19 15:42
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineLiveCoursePagerAdapter extends FragmentPagerAdapter {
+
+    private List<String> titles;
+
+    private List<Fragment> fragments;
+
+    public MineLiveCoursePagerAdapter(FragmentManager fm, List<Fragment> fragments, List<String> titles) {
+        super(fm);
+        this.titles = titles;
+        this.fragments = fragments;
+    }
+
+    @Override
+    public Fragment getItem(int position) {
+        return fragments != null && fragments.size() > position ? fragments.get(position) : null;
+    }
+
+    @Override
+    public int getCount() {
+        return fragments == null ? 0 : fragments.size();
+    }
+
+    @Override
+    public CharSequence getPageTitle(int position) {
+        return titles != null && titles.size() > position ? titles.get(position) : "";
+    }
+}

+ 43 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineScoreAdapter.java

@@ -0,0 +1,43 @@
+package com.cooleshow.teacher.adapter;
+
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.module.BaseLoadMoreModule;
+import com.chad.library.adapter.base.module.LoadMoreModule;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.bean.MusicSheetListBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/20 17:19
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineScoreAdapter extends BaseQuickAdapter<MusicSheetListBean.RowsBean, BaseViewHolder> implements LoadMoreModule {
+
+    public MineScoreAdapter(List<MusicSheetListBean.RowsBean> data) {
+        super(R.layout.layout_mine_score_item, data);
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, MusicSheetListBean.RowsBean item) {
+
+    }
+
+    @NonNull
+    @Override
+    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
+        return new BaseLoadMoreModule(baseQuickAdapter);
+    }
+
+}

+ 55 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineVideoCourseAdapter.java

@@ -0,0 +1,55 @@
+package com.cooleshow.teacher.adapter;
+
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.module.BaseLoadMoreModule;
+import com.chad.library.adapter.base.module.LoadMoreModule;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.bean.MineVideoCourseListBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/20 14:11
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineVideoCourseAdapter extends BaseQuickAdapter<MineVideoCourseListBean.RowsBean, BaseViewHolder> implements LoadMoreModule {
+
+    public MineVideoCourseAdapter(List<MineVideoCourseListBean.RowsBean> data) {
+        super(R.layout.layout_mine_video_course_item, data);
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, MineVideoCourseListBean.RowsBean item) {
+        ImageView im_pic = helper.getView(R.id.im_pic);
+        GlideUtils.INSTANCE.loadImage(getContext(), item.coverUrl, im_pic);
+        TextView tv_title=helper.getView(R.id.tv_title);
+        tv_title.setText(item.videoTitle);
+        ImageView im_header=helper.getView(R.id.im_header);
+//        GlideUtils.INSTANCE.loadImage(getContext(), item.avatar, im_header,R.drawable.icon_teacher_default_head);
+        TextView tv_price=helper.getView(R.id.tv_price);
+//        tv_price.setText("¥"+item.coursePrice+"/"+item.courseNum+"课时");
+        if (item.chargeFlag==0){
+            tv_price.setText("免费");
+        }else {
+            tv_price.setText("收费");
+        }
+    }
+
+    @NonNull
+    @Override
+    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
+        return new BaseLoadMoreModule(baseQuickAdapter);
+    }
+
+}

+ 41 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineVideoCoursePagerAdapter.java

@@ -0,0 +1,41 @@
+package com.cooleshow.teacher.adapter;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/20 14:12
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineVideoCoursePagerAdapter extends FragmentPagerAdapter {
+
+    private List<String> titles;
+
+    private List<Fragment> fragments;
+
+    public MineVideoCoursePagerAdapter(FragmentManager fm, List<Fragment> fragments, List<String> titles) {
+        super(fm);
+        this.titles = titles;
+        this.fragments = fragments;
+    }
+
+    @Override
+    public Fragment getItem(int position) {
+        return fragments != null && fragments.size() > position ? fragments.get(position) : null;
+    }
+
+    @Override
+    public int getCount() {
+        return fragments == null ? 0 : fragments.size();
+    }
+
+    @Override
+    public CharSequence getPageTitle(int position) {
+        return titles != null && titles.size() > position ? titles.get(position) : "";
+    }
+}

+ 48 - 0
teacher/src/main/java/com/cooleshow/teacher/api/APIService.java

@@ -6,8 +6,13 @@ import com.cooleshow.teacher.bean.CourseCommentListBean;
 import com.cooleshow.teacher.bean.CourseTableDataBean;
 import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
 import com.cooleshow.teacher.bean.LiveCourseListBean;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.bean.MineVideoCourseListBean;
+import com.cooleshow.teacher.bean.MusicSheetListBean;
 import com.cooleshow.teacher.bean.ReceivedCommentListBean;
 import com.cooleshow.teacher.bean.ResponseBankCardBean;
+import com.cooleshow.teacher.bean.ResponseBindCardBean;
+import com.cooleshow.teacher.bean.ResponseUserBankCardBean;
 import com.cooleshow.teacher.bean.SparringCourseCommentBean;
 import com.cooleshow.teacher.bean.SparringCourseHomeworkBean;
 import com.cooleshow.teacher.bean.SparringCourseListBean;
@@ -313,4 +318,47 @@ public interface APIService {
      */
     @POST(TEACHER_GROUP + "userBankCard/page")
     Observable<BaseResponse<ResponseBankCardBean>> queryUserBankCard(@Body RequestBody body);
+
+    /**
+     * 用户绑卡
+     *
+     * @param body
+     * @return
+     */
+    @POST(TEACHER_GROUP + "userBankCard/bankCard")
+    Observable<BaseResponse<ResponseBindCardBean>> bindBankCard(@Body RequestBody body);
+
+    /**
+     * 查询银行
+     *
+     * @return
+     */
+    @POST(TEACHER_GROUP + "userBankCard/bankList")
+    Observable<BaseResponse<List<ResponseUserBankCardBean>>> userBankCard();
+
+    /**
+     * 分页查询直播课课程组列表
+     *
+     * @param body
+     * @return
+     */
+    @POST(TEACHER_GROUP + "courseGroup/queryPageCourseGroup")
+    Observable<BaseResponse<MineLiveCourseListBean>> queryPageCourseGroup(@Body RequestBody body);
+
+    /**
+     * 查询视频课
+     *
+     * @param body
+     * @return
+     */
+    @POST(TEACHER_GROUP + "videoLesson/page")
+    Observable<BaseResponse<MineVideoCourseListBean>> queryVideoCourseGroup(@Body RequestBody body);
+
+    /**
+     * 分页查询分页查询
+     * @param body
+     * @return
+     */
+    @POST(TEACHER_GROUP + "music/sheet/list")
+    Observable<BaseResponse<MusicSheetListBean>> queryMusicList(@Body RequestBody body);
 }

+ 66 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/MineLiveCourseListBean.java

@@ -0,0 +1,66 @@
+package com.cooleshow.teacher.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/19 16:19
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineLiveCourseListBean {
+    public int limit;
+    public int nextPage;
+    public int offset;
+    public int pageNo;
+    public int prePage;
+    public int total;
+    public int totalPage;
+    public List<RowsBean> rows;
+
+
+    public static class RowsBean {
+        /**
+         * "avatar": "",
+         * "backgroundPic": "",
+         * "courseGroupId": 0,
+         * "courseGroupName": "",
+         * "courseIntroduce": "",
+         * "courseNum": 0,
+         * "coursePrice": 0,
+         * "courseStartTime": "",
+         * "existBuy": 0,
+         * "imGroupId": "",
+         * "mixStudentNum": 0,
+         * "salesEndDate": "",
+         * "salesStartDate": "",
+         * "singleCourseMinutes": 0,
+         * "status": "",
+         * "studentCount": 0,
+         * "subjectName": "",
+         * "teacherId": 0,
+         * "teacherName": "",
+         * "userName": ""
+         */
+        public String avatar;
+        public String backgroundPic;
+        public int courseGroupId;
+        public String courseGroupName;
+        public String courseIntroduce;
+        public int  courseNum;
+        public double coursePrice;
+        public String courseStartTime;
+        public int existBuy;
+        public String imGroupId;
+        public int mixStudentNum;
+        public String salesEndDate;
+        public int singleCourseMinutes;
+        public String status;
+        public int studentCount;
+        public String subjectName;
+        public int teacherId;
+        public String teacherName;
+        public String userName;
+
+    }
+}

+ 56 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/MineVideoCourseListBean.java

@@ -0,0 +1,56 @@
+package com.cooleshow.teacher.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/20 14:03
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineVideoCourseListBean {
+    public int limit;
+    public int nextPage;
+    public int offset;
+    public int pageNo;
+    public int prePage;
+    public int total;
+    public int totalPage;
+    public List<RowsBean> rows;
+    public static class RowsBean {
+        /*
+        	"chargeFlag": 0,
+				"coverUrl": "",
+				"createTime": "",
+				"id": 0,
+				"realName": "",
+				"sortNumber": 0,
+				"teacherId": 0,
+				"teacherName": "",
+				"teacherPhone": "",
+				"updateBy": 0,
+				"updateTime": "",
+				"videoContent": "",
+				"videoLessonGroupId": 0,
+				"videoTitle": "",
+				"videoUrl": ""
+
+         */
+
+        public int chargeFlag;
+        public String coverUrl;
+        public String createTime;
+        public int id;
+        public String realName;
+        public int sortNumber;
+        public int teacherId;
+        public String teacherName;
+        public String teacherPhone;
+        public String videoContent;
+        public int videoLessonGroupId;
+        public String videoTitle;
+        public String videoUrl;
+
+    }
+
+}

+ 106 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/MusicSheetListBean.java

@@ -0,0 +1,106 @@
+package com.cooleshow.teacher.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/20 17:07
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MusicSheetListBean {
+
+    public int limit;
+    public int nextPage;
+    public int offset;
+    public int pageNo;
+    public int prePage;
+    public int total;
+    public int totalPage;
+    public List<RowsBean> rows;
+
+    public static class RowsBean {
+        /*
+        {
+				"addName": "",
+				"addUserAvatar": "",
+				"audioFileUrl": "",
+				"audioType": "",
+				"auditStatus": "",
+				"auditVersion": "",
+				"canEvaluate": "",
+				"chargeType": "",
+				"composer": "",
+				"createBy": 0,
+				"createTime": "",
+				"delFlag": true,
+				"favorite": "",
+				"hasBeat": "",
+				"hotFlag": "",
+				"id": 0,
+				"metronomeUrl": "",
+				"midiUrl": "",
+				"mp3Type": "",
+				"musicPrice": 0,
+				"musicSheetName": "",
+				"musicSubject": "",
+				"musicTag": "",
+				"musicTagNames": "",
+				"play": "",
+				"playSpeed": 0,
+				"remark": "",
+				"showFingering": "",
+				"sortNumber": 0,
+				"sourceType": "",
+				"state": "",
+				"subjectNames": "",
+				"submitAuditTime": "",
+				"topFlag": "",
+				"updateBy": 0,
+				"updateTime": "",
+				"url": "",
+				"userId": 0,
+				"xmlFileUrl": ""
+			}
+
+         */
+
+        public String addName;
+        public String addUserAvatar;
+        public String audioFileUrl;
+        public String audioType;
+        public String auditStatus;
+        public String auditVersion;
+        public String canEvaluate;
+        public String chargeType;
+        public String composer;
+        public String createTime;
+        public boolean delFlag;
+        public String favorite;
+        public String hasBeat;
+        public String hotFlag;
+        public int id;
+        public String metronomeUrl;
+        public String midiUrl;
+        public String mp3Type;
+        public double musicPrice;
+        public String musicSheetName;
+        public String musicSubject;
+        public String musicTag;
+        public String musicTagNames;
+        public String play;
+        public int playSpeed;
+        public String remark;
+        public String showFingering;
+        public int sortNumber;
+        public String sourceType;
+        public String state;
+        public String subjectNames;
+        public String submitAuditTime;
+        public String topFlag;
+        public String updateTime;
+        public String url;
+        public int userId;
+        public String xmlFileUrl;
+    }
+}

+ 36 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/ResponseBindCardBean.java

@@ -0,0 +1,36 @@
+package com.cooleshow.teacher.bean;
+
+/**
+ * 创建日期:2022/5/19 11:41
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class ResponseBindCardBean {
+    /*
+    	"bankCard": "",
+		"bankCode": "",
+		"bankName": "",
+		"createTime": "",
+		"defaultFlag": true,
+		"delFlag": true,
+		"id": 0,
+		"name": "",
+		"phone": "",
+		"updateTime": "",
+		"userId": 0
+     */
+
+    public String bankCard;
+    public String bankCode;
+    public String bankName;
+    public String createTime;
+    public boolean defaultFlag;
+    public boolean delFlag;
+    public int id;
+    public String name;
+    public String phone;
+    public String updateTime;
+    public int userId;
+
+}

+ 35 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/ResponseUserBankCardBean.java

@@ -0,0 +1,35 @@
+package com.cooleshow.teacher.bean;
+
+import com.contrarywind.interfaces.IPickerViewData;
+
+/**
+ * 创建日期:2022/5/19 11:46
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class ResponseUserBankCardBean implements IPickerViewData {
+    /*
+    "createOn": "",
+			"description": "",
+			"group": "",
+			"id": 0,
+			"modifyBy": 0,
+			"modifyOn": "",
+			"paramName": "",
+			"paramValue": ""
+     */
+    public String createOn;
+    public String description;
+    public String group;
+    public int id;
+    public int modifyBy;
+    public String modifyOn;
+    public String paramName;
+    public String paramValue;
+
+    @Override
+    public String getPickerViewText() {
+        return paramValue;
+    }
+}

+ 22 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/BindBankCardContract.java

@@ -0,0 +1,22 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.ResponseBindCardBean;
+import com.cooleshow.teacher.bean.ResponseUserBankCardBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/19 9:29
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface BindBankCardContract {
+    interface BindBankCardView extends BaseView {
+        void bindBankCardSuccess(ResponseBindCardBean data);
+        void userBankCardSuccess(List<ResponseUserBankCardBean> data);
+    }
+    interface Presenter {
+    }
+}

+ 16 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/BindCardSuccessContract.java

@@ -0,0 +1,16 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+
+/**
+ * 创建日期:2022/5/19 14:40
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface BindCardSuccessContract {
+    interface BindCardSuccessView extends BaseView {
+    }
+    interface Presenter {
+    }
+}

+ 16 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/CreateLiveContract.java

@@ -0,0 +1,16 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+
+/**
+ * 创建日期:2022/5/20 15:02
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface CreateLiveContract {
+    interface CreateLiveView extends BaseView {
+    }
+    interface Presenter {
+    }
+}

+ 17 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/CreateLiveCourseArrangementContract.java

@@ -0,0 +1,17 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+
+/**
+ * 创建日期:2022/5/20 10:34
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface CreateLiveCourseArrangementContract {
+    interface CreateLiveCourseArrangementView extends BaseView {
+
+    }
+    interface Presenter {
+    }
+}

+ 17 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/CreateLiveCourseInfoContract.java

@@ -0,0 +1,17 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+
+/**
+ * 创建日期:2022/5/20 10:17
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface CreateLiveCourseInfoContract {
+    interface CreateLiveCourseInfoView extends BaseView {
+
+    }
+    interface Presenter {
+    }
+}

+ 18 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/InputBankVCodeContract.java

@@ -0,0 +1,18 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.usercenter.bean.SetDetailBean;
+
+/**
+ * 创建日期:2022/5/19 14:12
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface InputBankVCodeContract {
+    interface InputBankVCodeView extends BaseView {
+        void sendSmsCodeSuccess(SetDetailBean data);
+    }
+    interface Presenter {
+    }
+}

+ 19 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/MineLiveCourseContract.java

@@ -0,0 +1,19 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+
+/**
+ * 创建日期:2022/5/19 15:16
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface MineLiveCourseContract {
+    interface MineLiveCourseView extends BaseView {
+        void queryPageCourseGroupSuccess(int page , MineLiveCourseListBean data);
+        void queryPageCourseGroupError(int page);
+    }
+    interface Presenter {
+    }
+}

+ 19 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/MineScoreContract.java

@@ -0,0 +1,19 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.MusicSheetListBean;
+
+/**
+ * 创建日期:2022/5/20 16:49
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface MineScoreContract {
+    interface MineScoreView extends BaseView {
+        void queryMusicListSuccess(int page , MusicSheetListBean data);
+        void queryMusicListError(int page);
+    }
+    interface Presenter {
+    }
+}

+ 19 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/MineVideoCourseContract.java

@@ -0,0 +1,19 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.MineVideoCourseListBean;
+
+/**
+ * 创建日期:2022/5/20 13:52
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface MineVideoCourseContract {
+    interface MineVideoCourseView extends BaseView {
+        void queryVideoCourseGroupSuccess(int page, MineVideoCourseListBean data);
+        void queryVideoCourseGroupError(int page);
+    }
+    interface Presenter {
+    }
+}

+ 14 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/course/CreateLiveCourseArrangementPresenter.java

@@ -0,0 +1,14 @@
+package com.cooleshow.teacher.presenter.course;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.teacher.contract.CreateLiveCourseArrangementContract;
+import com.cooleshow.teacher.contract.CreateLiveCourseInfoContract;
+
+/**
+ * 创建日期:2022/5/20 10:33
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class CreateLiveCourseArrangementPresenter extends BasePresenter<CreateLiveCourseArrangementContract.CreateLiveCourseArrangementView> implements CreateLiveCourseArrangementContract.Presenter {
+}

+ 13 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/course/CreateLiveCourseInfoPresenter.java

@@ -0,0 +1,13 @@
+package com.cooleshow.teacher.presenter.course;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.teacher.contract.CreateLiveCourseInfoContract;
+
+/**
+ * 创建日期:2022/5/20 10:14
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class CreateLiveCourseInfoPresenter extends BasePresenter<CreateLiveCourseInfoContract.CreateLiveCourseInfoView> implements CreateLiveCourseInfoContract.Presenter {
+}

+ 57 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/course/MineLiveCoursePresenter.java

@@ -0,0 +1,57 @@
+package com.cooleshow.teacher.presenter.course;
+
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.RequestBodyUtil;
+import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.bean.LiveCourseListBean;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.contract.MineLiveCourseContract;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * 创建日期:2022/5/19 15:15
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineLiveCoursePresenter extends BasePresenter<MineLiveCourseContract.MineLiveCourseView> implements MineLiveCourseContract.Presenter {
+    public void queryPageCourseGroup(boolean isLoading,int page,String groupStatus){
+        if (isLoading && getView() != null) {
+            getView().showLoading();
+        }
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("groupStatus",groupStatus);
+            jsonObject.putOpt("page", page);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).queryPageCourseGroup(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<MineLiveCourseListBean>(getView()) {
+            @Override
+            protected void onSuccess(MineLiveCourseListBean data) {
+                if (getView() != null) {
+                    getView().queryPageCourseGroupSuccess(page, data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().queryPageCourseGroupError(page);
+                }
+            }
+        });
+    }
+}

+ 58 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/course/MineVideoCoursePresenter.java

@@ -0,0 +1,58 @@
+package com.cooleshow.teacher.presenter.course;
+
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.RequestBodyUtil;
+import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.bean.MineVideoCourseListBean;
+import com.cooleshow.teacher.contract.MineLiveCourseContract;
+import com.cooleshow.teacher.contract.MineVideoCourseContract;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * 创建日期:2022/5/20 13:50
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineVideoCoursePresenter extends BasePresenter<MineVideoCourseContract.MineVideoCourseView> implements MineVideoCourseContract.Presenter {
+    public void queryVideoCourseGroup(boolean isLoading, int page, String auditStatus) {
+        if (isLoading && getView() != null) {
+            getView().showLoading();
+        }
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("auditStatus", auditStatus);
+            jsonObject.putOpt("page", page);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).queryVideoCourseGroup(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<MineVideoCourseListBean>(getView()) {
+            @Override
+            protected void onSuccess(MineVideoCourseListBean data) {
+                if (getView() != null) {
+                    getView().queryVideoCourseGroupSuccess(page, data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().queryVideoCourseGroupError(page);
+                }
+            }
+        });
+    }
+}

+ 77 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/mine/BindBankCardPresenter.java

@@ -0,0 +1,77 @@
+package com.cooleshow.teacher.presenter.mine;
+
+import com.cooleshow.base.data.net.ApiException;
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.RequestBodyUtil;
+import com.cooleshow.base.utils.ToastUtils;
+import com.cooleshow.base.utils.helper.ErrorParse;
+import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.bean.ResponseBindCardBean;
+import com.cooleshow.teacher.bean.ResponseUserBankCardBean;
+import com.cooleshow.teacher.contract.BindBankCardContract;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/19 9:27
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class BindBankCardPresenter extends BasePresenter<BindBankCardContract.BindBankCardView> implements BindBankCardContract.Presenter {
+    public void bindBankCard(String jsonStr) {
+        getView().showLoading();
+        addSubscribe(create(APIService.class).bindBankCard(RequestBodyUtil.convertToRequestBodyJson(jsonStr)), new BaseObserver<ResponseBindCardBean>(getView()) {
+            @Override
+            protected void onSuccess(ResponseBindCardBean data) {
+                if (getView() != null) {
+                    getView().bindBankCardSuccess(data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (e instanceof ApiException) {
+                    ErrorParse.getInstance().parseError(e);
+                    ApiException apiException = (ApiException) e;
+                    ToastUtils.showShort(apiException.getErrmsg());
+                }
+            }
+        });
+    }
+
+    public void userBankCard() {
+        getView().showLoading();
+        addSubscribe(create(APIService.class).userBankCard(), new BaseObserver<List<ResponseUserBankCardBean>>(getView()) {
+            @Override
+            protected void onSuccess(List<ResponseUserBankCardBean> data) {
+                if (getView() != null) {
+                    getView().userBankCardSuccess(data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (e instanceof ApiException) {
+                    ErrorParse.getInstance().parseError(e);
+                    ApiException apiException = (ApiException) e;
+                    ToastUtils.showShort(apiException.getErrmsg());
+                }
+            }
+        });
+    }
+}

+ 14 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/mine/BindCardSuccessPresenter.java

@@ -0,0 +1,14 @@
+package com.cooleshow.teacher.presenter.mine;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.teacher.contract.BindCardSuccessContract;
+
+/**
+ * 创建日期:2022/5/19 14:38
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class BindCardSuccessPresenter extends BasePresenter<BindCardSuccessContract.BindCardSuccessView> implements BindCardSuccessContract.Presenter {
+
+}

+ 14 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/mine/CreateLivePresenter.java

@@ -0,0 +1,14 @@
+package com.cooleshow.teacher.presenter.mine;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.teacher.contract.CreateLiveContract;
+import com.cooleshow.teacher.contract.FeedBackContract;
+
+/**
+ * 创建日期:2022/5/20 15:01
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class CreateLivePresenter extends BasePresenter<CreateLiveContract.CreateLiveView> implements CreateLiveContract.Presenter {
+}

+ 46 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/mine/InputBankVCodePresenter.java

@@ -0,0 +1,46 @@
+package com.cooleshow.teacher.presenter.mine;
+
+import com.cooleshow.base.data.net.ApiException;
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.RequestBodyUtil;
+import com.cooleshow.base.utils.ToastUtils;
+import com.cooleshow.base.utils.helper.ErrorParse;
+import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.contract.InputBankVCodeContract;
+import com.cooleshow.usercenter.bean.SetDetailBean;
+
+/**
+ * 创建日期:2022/5/19 14:12
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class InputBankVCodePresenter extends BasePresenter<InputBankVCodeContract.InputBankVCodeView> implements InputBankVCodeContract.Presenter {
+    public void sendSmsCode(String jsonStr){
+        getView().showLoading();
+        addSubscribe(create(APIService.class).sendSmsCode(RequestBodyUtil.convertToRequestBodyJson(jsonStr)), new BaseObserver<SetDetailBean>(getView()) {
+            @Override
+            protected void onSuccess(SetDetailBean data) {
+                if (getView() != null) {
+                    getView().sendSmsCodeSuccess(data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (e instanceof ApiException) {
+                    ErrorParse.getInstance().parseError(e);
+                    ApiException apiException = (ApiException) e;
+                    ToastUtils.showShort(apiException.getErrmsg());
+                }
+            }
+        });
+    }
+}

+ 58 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/score/MineScorePresenter.java

@@ -0,0 +1,58 @@
+package com.cooleshow.teacher.presenter.score;
+
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.RequestBodyUtil;
+import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.bean.MusicSheetListBean;
+import com.cooleshow.teacher.contract.MineLiveCourseContract;
+import com.cooleshow.teacher.contract.MineScoreContract;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * 创建日期:2022/5/20 16:48
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineScorePresenter extends BasePresenter<MineScoreContract.MineScoreView> implements MineScoreContract.Presenter {
+    public void queryPageCourseGroup(boolean isLoading,int page,String auditStatus){
+        if (isLoading && getView() != null) {
+            getView().showLoading();
+        }
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("auditStatus",auditStatus);
+            jsonObject.putOpt("page", page);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).queryMusicList(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<MusicSheetListBean>(getView()) {
+            @Override
+            protected void onSuccess(MusicSheetListBean data) {
+                if (getView() != null) {
+                    getView().queryMusicListSuccess(page, data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().queryMusicListError(page);
+                }
+            }
+        });
+    }
+}

+ 40 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/CreateLiveCourseArrangementActivity.java

@@ -0,0 +1,40 @@
+package com.cooleshow.teacher.ui.course;
+
+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.teacher.contract.CreateLiveCourseArrangementContract;
+import com.cooleshow.teacher.databinding.ActivityCreateLiveCourseArrangmentBinding;
+import com.cooleshow.teacher.presenter.course.CreateLiveCourseArrangementPresenter;
+
+/**
+ * 创建日期:2022/5/20 10:28
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.CourseCenter.TEACHER_MINE_CREATE_LIVE_COURSE_ARRANGEMENT)
+public class CreateLiveCourseArrangementActivity extends BaseMVPActivity<ActivityCreateLiveCourseArrangmentBinding, CreateLiveCourseArrangementPresenter> implements CreateLiveCourseArrangementContract.CreateLiveCourseArrangementView, View.OnClickListener {
+    @Override
+    public void onClick(View view) {
+
+    }
+
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "创建直播课");
+
+    }
+
+    @Override
+    protected ActivityCreateLiveCourseArrangmentBinding getLayoutView() {
+        return ActivityCreateLiveCourseArrangmentBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected CreateLiveCourseArrangementPresenter createPresenter() {
+        return new CreateLiveCourseArrangementPresenter();
+    }
+}

+ 88 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/CreateLiveCourseInfoActivity.java

@@ -0,0 +1,88 @@
+package com.cooleshow.teacher.ui.course;
+
+import android.content.Context;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.contract.CreateLiveCourseInfoContract;
+import com.cooleshow.teacher.databinding.ActivityCreateLiveCourseInfoBinding;
+import com.cooleshow.teacher.presenter.course.CreateLiveCourseInfoPresenter;
+
+/**
+ * 创建日期:2022/5/19 17:53
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.CourseCenter.TEACHER_MINE_CREATE_LIVE_COURSE_INFO)
+public class CreateLiveCourseInfoActivity extends BaseMVPActivity<ActivityCreateLiveCourseInfoBinding, CreateLiveCourseInfoPresenter> implements CreateLiveCourseInfoContract.CreateLiveCourseInfoView, View.OnClickListener {
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_next:
+                ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_CREATE_LIVE_COURSE_ARRANGEMENT)
+                        .navigation();
+                break;
+        }
+    }
+
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "创建直播课");
+        viewBinding.tvNext.setOnClickListener(this);
+    }
+
+    @Override
+    protected ActivityCreateLiveCourseInfoBinding getLayoutView() {
+        return ActivityCreateLiveCourseInfoBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected CreateLiveCourseInfoPresenter createPresenter() {
+        return new CreateLiveCourseInfoPresenter();
+    }
+
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+
+            View v = getCurrentFocus();
+            if (isShouldHideInput(v, ev)) {
+
+                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+                if (imm != null) {
+                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
+                }
+            }
+            return super.dispatchTouchEvent(ev);
+        }
+        // 必不可少,否则所有的组件都不会有TouchEvent了
+        if (getWindow().superDispatchTouchEvent(ev)) {
+            return true;
+        }
+        return onTouchEvent(ev);
+    }
+
+    public boolean isShouldHideInput(View v, MotionEvent event) {
+        if (v != null && (v instanceof EditText)) {
+            int[] leftTop = {0, 0};
+            //获取输入框当前的location位置
+            v.getLocationInWindow(leftTop);
+            int left = leftTop[0];
+            int top = leftTop[1];
+            int bottom = top + v.getHeight();
+            int right = left + v.getWidth();
+            return !(event.getX() > left && event.getX() < right
+                    && event.getY() > top && event.getY() < bottom);
+        }
+        return false;
+    }
+}

+ 100 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/MineLiveCourseActivity.java

@@ -0,0 +1,100 @@
+package com.cooleshow.teacher.ui.course;
+
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.viewpager.widget.ViewPager;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.MineLiveCoursePagerAdapter;
+import com.cooleshow.teacher.databinding.ActivityMineLiveCourseBinding;
+import com.cooleshow.teacher.presenter.course.MineLiveCoursePresenter;
+import com.google.android.material.tabs.TabLayout;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import io.rong.imkit.utils.StatusBarUtil;
+
+/**
+ * 创建日期:2022/5/19 15:12
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.CourseCenter.TEACHER_MINE_LIVE_COURSE)
+public class MineLiveCourseActivity extends BaseMVPActivity<ActivityMineLiveCourseBinding, MineLiveCoursePresenter> implements View.OnClickListener {
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_right_text:
+               /* ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_CREATE_LIVE_COURSE_INFO)
+                        .navigation();*/
+
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_CREATE)
+                        .navigation();
+                break;
+        }
+    }
+    private TabLayout tabLayout;
+    private ViewPager viewPager;
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "直播课");
+        viewBinding.toolbarInclude.tvRightText.setTextColor(getResources().getColor(com.cooleshow.base.R.color.common_black));
+        viewBinding.toolbarInclude.tvRightText.setVisibility(View.VISIBLE);
+        viewBinding.toolbarInclude.tvRightText.setText("创建课程");
+        viewBinding.toolbarInclude.tvRightText.setOnClickListener(this);
+        tabLayout=viewBinding.tablayout;
+        viewPager=viewBinding.viewpager;
+        viewPager.setCurrentItem(0);
+
+    }
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        StatusBarUtil.setStatusBarDarkTheme(this, true);
+    }
+    @Override
+    public void initData() {
+        super.initData();
+        initTabLayoutAndViewPager();
+    }
+
+    private List<String> titles = new ArrayList<String>(Arrays.asList("进行中","未上架","销售中","已完成"));
+    private List<String> types = new ArrayList<String>(Arrays.asList("ING","NOT_SALE","APPLY","COMPLETE"));
+    private List<Fragment> fragments = new ArrayList<>();
+
+    private void initTabLayoutAndViewPager() {
+        tabLayout.removeAllTabs();
+        fragments.clear();
+        for (int i = 0; i < titles.size(); i++) {
+            tabLayout.addTab(tabLayout.newTab().setText(titles.get(i)));
+            Fragment adFragment = MineLiveCourseFragment.newInstance(types.get(i));
+            fragments.add(adFragment);
+        }
+        viewPager.setAdapter(new MineLiveCoursePagerAdapter(getSupportFragmentManager(), fragments, titles));
+        tabLayout.setupWithViewPager(viewPager);
+    }
+
+
+    @Override
+    protected ActivityMineLiveCourseBinding getLayoutView() {
+        return ActivityMineLiveCourseBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineLiveCoursePresenter createPresenter() {
+        return new MineLiveCoursePresenter();
+    }
+}

+ 185 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/MineLiveCourseFragment.java

@@ -0,0 +1,185 @@
+package com.cooleshow.teacher.ui.course;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+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.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.AddressListAdapter;
+import com.cooleshow.teacher.adapter.MineLiveCourseAdapter;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.contract.MineLiveCourseContract;
+import com.cooleshow.teacher.databinding.FragmentMineLiveCourseBinding;
+import com.cooleshow.teacher.presenter.course.MineLiveCoursePresenter;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/19 15:38
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineLiveCourseFragment extends BaseMVPFragment<FragmentMineLiveCourseBinding, MineLiveCoursePresenter> implements MineLiveCourseContract.MineLiveCourseView, View.OnClickListener {
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_create:
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_CREATE)
+                        .navigation();
+
+                break;
+        }
+    }
+
+    public static MineLiveCourseFragment newInstance(String type) {
+        Bundle args = new Bundle();
+        MineLiveCourseFragment fragment = new MineLiveCourseFragment();
+        args.putString("type", type);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    protected FragmentMineLiveCourseBinding getLayoutView() {
+        return FragmentMineLiveCourseBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineLiveCoursePresenter createPresenter() {
+        return new MineLiveCoursePresenter();
+    }
+
+    private String type = "";
+    private MineLiveCourseAdapter mineLiveCourseAdapter;
+    List<MineLiveCourseListBean.RowsBean> dataList = new ArrayList<>();
+
+    @Override
+    protected void initView(View rootView) {
+        type = getArguments().getString("type");
+        RecyclerView rvAddress = mViewBinding.recyclerView;
+        LinearLayoutManager manager = new LinearLayoutManager(getContext());
+        rvAddress.setLayoutManager(manager);
+        mineLiveCourseAdapter = new MineLiveCourseAdapter(dataList);
+        LayoutInflater inflater = LayoutInflater.from(getContext());
+        View emptyLayout = inflater.inflate(R.layout.empty_mine_live_course, null);
+        TextView tv_create = emptyLayout.findViewById(R.id.tv_create);
+        tv_create.setOnClickListener(this);
+        mineLiveCourseAdapter.setEmptyView(emptyLayout);
+        rvAddress.setAdapter(mineLiveCourseAdapter);
+        mineLiveCourseAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                MineLiveCourseListBean.RowsBean item = (MineLiveCourseListBean.RowsBean) adapter.getItem(position);
+
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + item.courseGroupId)
+                        .navigation();
+            }
+        });
+
+    }
+
+    private int currentPage;
+
+    @Override
+    protected void initData() {
+        mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+                currentPage = 1;
+                queryCourse(true);
+            }
+        });
+        mineLiveCourseAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore() {
+                //上拉加载
+                if (hasNext) {
+                    currentPage++;
+                    queryCourse(false);
+                } else {
+                    mineLiveCourseAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        });
+        currentPage = 1;
+        queryCourse(true);
+    }
+
+    private boolean hasNext = true;
+
+    /**
+     * 检查是否还有下一页
+     *
+     * @param dataSize
+     */
+    private void checkHasNext(int dataSize) {
+        hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
+    }
+
+    private void queryCourse(boolean isLoading) {
+        presenter.queryPageCourseGroup(isLoading, currentPage, type);
+    }
+
+    @Override
+    public void queryPageCourseGroupSuccess(int page, MineLiveCourseListBean data) {
+        if (isDetached()) {
+            return;
+        }
+        if (data != null) {
+            if (page == 1) {
+                dataList.clear();
+                mViewBinding.refreshLayout.finishRefresh();
+                if (data.rows != null && data.rows.size() > 0) {
+                    checkHasNext(data.rows.size());
+                    dataList.addAll(data.rows);
+                    mineLiveCourseAdapter.notifyDataSetChanged();
+                }
+            } else {
+                if (data.rows != null && data.rows.size() > 0) {
+                    mineLiveCourseAdapter.getLoadMoreModule().loadMoreComplete();
+                    checkHasNext(data.rows.size());
+                } else {
+                    mineLiveCourseAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        }
+
+    }
+
+    @Override
+    public void queryPageCourseGroupError(int page) {
+        if (isDetached()) {
+            return;
+        }
+        if (page == 1) {
+            mViewBinding.refreshLayout.finishRefresh();
+        } else {
+            if (mineLiveCourseAdapter != null) {
+                currentPage--;
+                mineLiveCourseAdapter.getLoadMoreModule().loadMoreFail();
+            }
+        }
+    }
+}

+ 102 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/MineVideoCourseActivity.java

@@ -0,0 +1,102 @@
+package com.cooleshow.teacher.ui.course;
+
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.viewpager.widget.ViewPager;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.MineLiveCoursePagerAdapter;
+import com.cooleshow.teacher.adapter.MineVideoCoursePagerAdapter;
+import com.cooleshow.teacher.databinding.ActivityMineVideoCourseBinding;
+import com.cooleshow.teacher.presenter.course.MineVideoCoursePresenter;
+import com.google.android.material.tabs.TabLayout;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import io.rong.imkit.utils.StatusBarUtil;
+
+/**
+ * 创建日期:2022/5/20 13:47
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.CourseCenter.TEACHER_MINE_VIDEO_COURSE)
+public class MineVideoCourseActivity extends BaseMVPActivity<ActivityMineVideoCourseBinding, MineVideoCoursePresenter> implements View.OnClickListener {
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_right_text:
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_VIDEO_CREATE)
+                        .navigation();
+                break;
+        }
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        StatusBarUtil.setStatusBarDarkTheme(this, true);
+    }
+
+    private TabLayout tabLayout;
+    private ViewPager viewPager;
+
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "视频课");
+        viewBinding.toolbarInclude.tvRightText.setTextColor(getResources().getColor(com.cooleshow.base.R.color.common_black));
+        viewBinding.toolbarInclude.tvRightText.setVisibility(View.VISIBLE);
+        viewBinding.toolbarInclude.tvRightText.setText("创建课程");
+        viewBinding.toolbarInclude.tvRightText.setOnClickListener(this);
+        tabLayout = viewBinding.tablayout;
+        viewPager = viewBinding.viewpager;
+        viewPager.setCurrentItem(0);
+    }
+
+    @Override
+    public void initData() {
+        super.initData();
+        initTabLayoutAndViewPager();
+    }
+
+
+    private List<String> titles = new ArrayList<String>(Arrays.asList("已上架", "审核中", "审核失败"));
+    private List<String> auditStatusList = new ArrayList<String>(Arrays.asList("PASS", "DOING", "UNPASS"));
+    private List<Fragment> fragments = new ArrayList<>();
+
+    private void initTabLayoutAndViewPager() {
+        tabLayout.removeAllTabs();
+        fragments.clear();
+        for (int i = 0; i < titles.size(); i++) {
+            tabLayout.addTab(tabLayout.newTab().setText(titles.get(i)));
+            Fragment adFragment = MineVideoCourseFragment.newInstance(auditStatusList.get(i));
+            fragments.add(adFragment);
+        }
+        viewPager.setAdapter(new MineVideoCoursePagerAdapter(getSupportFragmentManager(), fragments, titles));
+        tabLayout.setupWithViewPager(viewPager);
+    }
+
+
+    @Override
+    protected ActivityMineVideoCourseBinding getLayoutView() {
+        return ActivityMineVideoCourseBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineVideoCoursePresenter createPresenter() {
+        return new MineVideoCoursePresenter();
+    }
+}

+ 184 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/MineVideoCourseFragment.java

@@ -0,0 +1,184 @@
+package com.cooleshow.teacher.ui.course;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+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.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.MineVideoCourseAdapter;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.bean.MineVideoCourseListBean;
+import com.cooleshow.teacher.contract.MineVideoCourseContract;
+import com.cooleshow.teacher.databinding.FragmentMineVideoCourseBinding;
+import com.cooleshow.teacher.presenter.course.MineVideoCoursePresenter;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/20 13:57
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineVideoCourseFragment extends BaseMVPFragment<FragmentMineVideoCourseBinding, MineVideoCoursePresenter> implements MineVideoCourseContract.MineVideoCourseView, View.OnClickListener {
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_create:
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_VIDEO_CREATE)
+                        .navigation();
+
+                break;
+        }
+    }
+
+    public static MineVideoCourseFragment newInstance(String auditStatus) {
+        Bundle args = new Bundle();
+        MineVideoCourseFragment fragment = new MineVideoCourseFragment();
+        args.putString("auditStatus", auditStatus);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    protected FragmentMineVideoCourseBinding getLayoutView() {
+        return FragmentMineVideoCourseBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineVideoCoursePresenter createPresenter() {
+        return new MineVideoCoursePresenter();
+    }
+
+    private String auditStatus = "";
+    private MineVideoCourseAdapter mineVideoCourseAdapter;
+    List<MineVideoCourseListBean.RowsBean> dataList = new ArrayList<>();
+
+    @Override
+    protected void initView(View rootView) {
+        auditStatus = getArguments().getString("auditStatus");
+        RecyclerView rvAddress = mViewBinding.recyclerView;
+        LinearLayoutManager manager = new GridLayoutManager(getContext(), 2);
+        rvAddress.setLayoutManager(manager);
+        mineVideoCourseAdapter = new MineVideoCourseAdapter(dataList);
+        LayoutInflater inflater = LayoutInflater.from(getContext());
+        View emptyLayout = inflater.inflate(R.layout.empty_mine_video_course, null);
+        TextView tv_create = emptyLayout.findViewById(R.id.tv_create);
+        tv_create.setOnClickListener(this);
+        mineVideoCourseAdapter.setEmptyView(emptyLayout);
+        rvAddress.setAdapter(mineVideoCourseAdapter);
+        mineVideoCourseAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                MineVideoCourseListBean.RowsBean item = (MineVideoCourseListBean.RowsBean) adapter.getItem(position);
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_VIDEO_DETAIL + "?groupId=" + item.videoLessonGroupId)
+                        .navigation();
+            }
+        });
+    }
+
+    private int currentPage;
+
+    @Override
+    protected void initData() {
+        mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+                currentPage = 1;
+                queryCourse(true);
+            }
+        });
+        mineVideoCourseAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore() {
+                //上拉加载
+                if (hasNext) {
+                    currentPage++;
+                    queryCourse(false);
+                } else {
+                    mineVideoCourseAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        });
+        currentPage = 1;
+        queryCourse(true);
+    }
+
+    private boolean hasNext = true;
+
+    /**
+     * 检查是否还有下一页
+     *
+     * @param dataSize
+     */
+    private void checkHasNext(int dataSize) {
+        hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
+    }
+
+    private void queryCourse(boolean isLoading) {
+        presenter.queryVideoCourseGroup(isLoading, currentPage, auditStatus);
+    }
+
+    @Override
+    public void queryVideoCourseGroupSuccess(int page, MineVideoCourseListBean data) {
+        if (isDetached()) {
+            return;
+        }
+        if (data != null) {
+            if (page == 1) {
+                dataList.clear();
+                mViewBinding.refreshLayout.finishRefresh();
+                if (data.rows != null && data.rows.size() > 0) {
+                    checkHasNext(data.rows.size());
+                    dataList.addAll(data.rows);
+                    mineVideoCourseAdapter.notifyDataSetChanged();
+                }
+            } else {
+                if (data.rows != null && data.rows.size() > 0) {
+                    mineVideoCourseAdapter.getLoadMoreModule().loadMoreComplete();
+                    checkHasNext(data.rows.size());
+                } else {
+                    mineVideoCourseAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+
+        }
+    }
+
+    @Override
+    public void queryVideoCourseGroupError(int page) {
+        if (isDetached()) {
+            return;
+        }
+        if (page == 1) {
+            mViewBinding.refreshLayout.finishRefresh();
+        } else {
+            if (mineVideoCourseAdapter != null) {
+                currentPage--;
+                mineVideoCourseAdapter.getLoadMoreModule().loadMoreFail();
+            }
+        }
+    }
+}

+ 5 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt

@@ -39,6 +39,7 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
         mViewBinding.cardMineAssess.setOnClickListener(this)
         mViewBinding.cardAfterClassAssess.setOnClickListener(this)
         mViewBinding.ivCertificationStatus.setOnClickListener(this)
+        mViewBinding.cardMineMusicSheet.setOnClickListener(this)
     }
 
     override fun createPresenter(): HomePresenter {
@@ -133,6 +134,10 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
                     .withString(WebConstants.WEB_URL, WebConstants.TEACHER_CERT)
                     .navigation()
             }
+            R.id.card_mine_music_sheet->{
+                ARouter.getInstance().build(RouterPath.ScoreCenter.TEACHER_MINE_SCORE)
+                    .navigation()
+            }
         }
     }
 

+ 19 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java

@@ -42,6 +42,8 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
         mViewBinding.tvHelp.setOnClickListener(this);
         mViewBinding.tvFeedback.setOnClickListener(this);
         mViewBinding.tvAuthentication.setOnClickListener(this);
+        mViewBinding.ivOpenLive.setOnClickListener(this);
+        mViewBinding.tvOpenLive.setOnClickListener(this);
     }
 
     @Override
@@ -143,12 +145,23 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                 break;
             case R.id.iv_sparing_course_set:
             case R.id.tv_sparing_course_set:
+                //陪练课设置
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_PRACTICE_SETTING)
+                        .navigation();
                 break;
             case R.id.iv_live_course:
             case R.id.tv_live_course:
+                //直播课
+                ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_LIVE_COURSE)
+                        .navigation();
                 break;
             case R.id.iv_video_course:
             case R.id.tv_video_course:
+                //视频课
+                ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_VIDEO_COURSE)
+                        .navigation();
                 break;
             case R.id.tv_help:
                 //帮助中心
@@ -167,6 +180,12 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                 ARouter.getInstance().build(RouterPath.MineCenter.MINE_MY_BANKCARD)
                         .navigation();
                 break;
+            case R.id.iv_open_live:
+            case R.id.tv_open_live:
+                ARouter.getInstance().build(RouterPath.MineCenter.TEACHER_MINE_CREATE_COURSE)
+                        .navigation();
+                break;
+
         }
     }
 }

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

@@ -0,0 +1,215 @@
+package com.cooleshow.teacher.ui.mine;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
+import com.bigkoo.pickerview.listener.CustomListener;
+import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
+import com.bigkoo.pickerview.view.OptionsPickerView;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.ToastUtils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.ResponseBindCardBean;
+import com.cooleshow.teacher.bean.ResponseUserBankCardBean;
+import com.cooleshow.teacher.contract.BindBankCardContract;
+import com.cooleshow.teacher.databinding.ActivityBindBankcardBinding;
+import com.cooleshow.teacher.presenter.mine.BindBankCardPresenter;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/19 9:26
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.MineCenter.MINE_BIND_BANKCARD)
+public class BindBankCardActivity extends BaseMVPActivity<ActivityBindBankcardBinding, BindBankCardPresenter> implements BindBankCardContract.BindBankCardView, View.OnClickListener {
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_bind:
+                String realName = viewBinding.etRealName.getText().toString().trim();
+                if (TextUtils.isEmpty(realName)) {
+                    ToastUtils.showShort("请输入您的真实姓名");
+                    break;
+                }
+                String idCardNo = viewBinding.etRealIdcard.getText().toString().trim();
+                if (TextUtils.isEmpty(idCardNo)){
+                    ToastUtils.showShort("请输入您的身份证号");
+                    break;
+                }
+                if (TextUtils.isEmpty(selectBankName)) {
+                    ToastUtils.showShort("请选择开户行");
+                    break;
+                }
+                String bankNum = viewBinding.etBankNum.getText().toString().trim();
+                if (TextUtils.isEmpty(bankNum)) {
+                    ToastUtils.showShort("请输入银行卡号");
+                    break;
+                }
+                String bankPhone = viewBinding.etBankPhone.getText().toString().trim();
+                if (TextUtils.isEmpty(bankPhone)) {
+                    ToastUtils.showShort("请输入手机号");
+                    break;
+                }
+                JSONObject jsonObject = new JSONObject();
+                try {
+                    jsonObject.putOpt("bankCard", bankNum);
+                    jsonObject.putOpt("idCardNo", idCardNo);
+                    jsonObject.putOpt("bankName", selectBankName);
+                    jsonObject.putOpt("bankCode", selectBankCode);
+                    jsonObject.putOpt("name", realName);
+                    jsonObject.putOpt("phone", bankPhone);
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+                presenter.bindBankCard(jsonObject.toString());
+                break;
+            case R.id.cl_bankname:
+                if (bankList.size() > 0) {
+                    selectBank();
+                }
+                break;
+        }
+    }
+
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "绑定银行卡");
+        viewBinding.tvBind.setOnClickListener(this);
+        viewBinding.clBankname.setOnClickListener(this);
+
+
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        presenter.userBankCard();
+    }
+
+    @Override
+    protected ActivityBindBankcardBinding getLayoutView() {
+        return ActivityBindBankcardBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected BindBankCardPresenter createPresenter() {
+        return new BindBankCardPresenter();
+    }
+
+    @Override
+    public void bindBankCardSuccess(ResponseBindCardBean data) {
+        ToastUtils.showShort("绑卡成功");
+        //接口里没有验证码的字段
+        //ARouter.getInstance().build(RouterPath.MineCenter.MINE_INPUT_BANK_VCODE).navigation();
+        finish();
+    }
+
+    private List<ResponseUserBankCardBean> bankList = new ArrayList<>();
+
+    @Override
+    public void userBankCardSuccess(List<ResponseUserBankCardBean> data) {
+        if (null != data) {
+            bankList.clear();
+            bankList.addAll(data);
+        }
+    }
+
+    private OptionsPickerView pvOptions;
+    private String selectBankName = "";
+    private String selectBankCode = "";
+
+    private void selectBank() {
+        pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
+            @Override
+            public void onOptionsSelect(int options1, int options2, int options3, View v) {
+                String opt1tx = bankList.size() > 0 ?
+                        bankList.get(options1).paramValue : "";
+                viewBinding.tvSelectBankname.setText(opt1tx);
+                selectBankName = opt1tx;
+                selectBankCode = bankList.size() > 0 ?
+                        bankList.get(options1).paramName : "";
+                viewBinding.tvSelectBankname.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_1a1a1a));
+
+            }
+        })
+                .setLayoutRes(R.layout.pickerview_address_layout, new CustomListener() {
+                    @Override
+                    public void customLayout(View v) {
+                        //自定义布局中的控件初始化及事件处理
+                        final TextView tvSubmit = (TextView) v.findViewById(com.cooleshow.base.R.id.tv_finish);
+                        TextView ivCancel = (TextView) v.findViewById(com.cooleshow.base.R.id.tv_cancel);
+                        tvSubmit.setOnClickListener(new View.OnClickListener() {
+                            @Override
+                            public void onClick(View v) {
+                                pvOptions.returnData();
+                                pvOptions.dismiss();
+                            }
+                        });
+                        ivCancel.setOnClickListener(new View.OnClickListener() {
+                            @Override
+                            public void onClick(View v) {
+                                pvOptions.dismiss();
+                            }
+                        });
+
+                    }
+                })
+                .isDialog(false)
+                .build();
+        pvOptions.setPicker(bankList);
+        pvOptions.show();
+
+    }
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+
+            View v = getCurrentFocus();
+            if (isShouldHideInput(v, ev)) {
+
+                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+                if (imm != null) {
+                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
+                }
+            }
+            return super.dispatchTouchEvent(ev);
+        }
+        // 必不可少,否则所有的组件都不会有TouchEvent了
+        if (getWindow().superDispatchTouchEvent(ev)) {
+            return true;
+        }
+        return onTouchEvent(ev);
+    }
+
+    public boolean isShouldHideInput(View v, MotionEvent event) {
+        if (v != null && (v instanceof EditText)) {
+            int[] leftTop = {0, 0};
+            //获取输入框当前的location位置
+            v.getLocationInWindow(leftTop);
+            int left = leftTop[0];
+            int top = leftTop[1];
+            int bottom = top + v.getHeight();
+            int right = left + v.getWidth();
+            return !(event.getX() > left && event.getX() < right
+                    && event.getY() > top && event.getY() < bottom);
+        }
+        return false;
+    }
+}

+ 47 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/mine/BindCardSuccessActivity.java

@@ -0,0 +1,47 @@
+package com.cooleshow.teacher.ui.mine;
+
+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.teacher.R;
+import com.cooleshow.teacher.contract.BindCardSuccessContract;
+import com.cooleshow.teacher.databinding.ActivityBindBankcardBinding;
+import com.cooleshow.teacher.databinding.ActivityBindCardSuccessBinding;
+import com.cooleshow.teacher.presenter.mine.BindCardSuccessPresenter;
+
+/**
+ * 创建日期:2022/5/19 14:35
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.MineCenter.MINE_BIND_CARD_SUCCESS)
+public class BindCardSuccessActivity extends BaseMVPActivity<ActivityBindCardSuccessBinding, BindCardSuccessPresenter> implements BindCardSuccessContract.BindCardSuccessView, View.OnClickListener {
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()){
+            case R.id.tv_i_know:
+                finish();
+                break;
+        }
+    }
+
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "绑定成功");
+        viewBinding.tvIKnow.setOnClickListener(this);
+    }
+
+    @Override
+    protected ActivityBindCardSuccessBinding getLayoutView() {
+        return ActivityBindCardSuccessBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected BindCardSuccessPresenter createPresenter() {
+        return null;
+    }
+}

+ 39 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/mine/CreateLiveActivity.java

@@ -0,0 +1,39 @@
+package com.cooleshow.teacher.ui.mine;
+
+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.teacher.contract.CreateLiveContract;
+import com.cooleshow.teacher.databinding.ActivityCreateLiveBinding;
+import com.cooleshow.teacher.presenter.mine.CreateLivePresenter;
+
+/**
+ * 创建日期:2022/5/20 14:45
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.MineCenter.TEACHER_MINE_CREATE_COURSE)
+public class CreateLiveActivity extends BaseMVPActivity<ActivityCreateLiveBinding, CreateLivePresenter> implements CreateLiveContract.CreateLiveView, View.OnClickListener {
+    @Override
+    public void onClick(View view) {
+
+    }
+
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "创建直播");
+    }
+
+    @Override
+    protected ActivityCreateLiveBinding getLayoutView() {
+        return ActivityCreateLiveBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected CreateLivePresenter createPresenter() {
+        return new CreateLivePresenter();
+    }
+}

+ 64 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/mine/InputBankVCodeActivity.java

@@ -0,0 +1,64 @@
+package com.cooleshow.teacher.ui.mine;
+
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.annotation.Nullable;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.contract.InputBankVCodeContract;
+import com.cooleshow.teacher.databinding.ActivityInputBankVcodeBinding;
+import com.cooleshow.teacher.presenter.mine.InputBankVCodePresenter;
+import com.cooleshow.usercenter.bean.SetDetailBean;
+
+import io.rong.imkit.utils.StatusBarUtil;
+
+/**
+ * 创建日期:2022/5/19 14:11
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.MineCenter.MINE_INPUT_BANK_VCODE)
+public class InputBankVCodeActivity extends BaseMVPActivity<ActivityInputBankVcodeBinding, InputBankVCodePresenter> implements InputBankVCodeContract.InputBankVCodeView, View.OnClickListener {
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()){
+            case R.id.tv_resend_code:
+                //跳绑卡成功
+                ARouter.getInstance().build(RouterPath.MineCenter.MINE_BIND_CARD_SUCCESS)
+                        .navigation();
+                break;
+        }
+    }
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        StatusBarUtil.setStatusBarDarkTheme(this, true);
+    }
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "");
+        viewBinding.tvResendCode.setOnClickListener(this);
+    }
+
+    @Override
+    protected ActivityInputBankVcodeBinding getLayoutView() {
+        return ActivityInputBankVcodeBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected InputBankVCodePresenter createPresenter() {
+        return new InputBankVCodePresenter();
+    }
+
+    @Override
+    public void sendSmsCodeSuccess(SetDetailBean data) {
+
+    }
+}

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

@@ -3,6 +3,7 @@ package com.cooleshow.teacher.ui.mine;
 import android.view.View;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.teacher.R;
@@ -29,6 +30,8 @@ public class MyBankCardActivity extends BaseMVPActivity<ActivityMyBankCardBindin
             case R.id.tv_unbind:
                 break;
             case R.id.tv_bind_card:
+                ARouter.getInstance().build(RouterPath.MineCenter.MINE_BIND_BANKCARD)
+                        .navigation();
                 break;
         }
     }

+ 10 - 2
teacher/src/main/java/com/cooleshow/teacher/ui/mine/PersonalSettingActivity.java

@@ -36,6 +36,7 @@ import com.cooleshow.teacher.databinding.ActivityPersonalSettingBinding;
 import com.cooleshow.teacher.presenter.mine.PersonalSettingPresenter;
 import com.cooleshow.teacher.ui.minestyle.MineStylePageActivity;
 import com.cooleshow.usercenter.bean.SetDetailBean;
+import com.cooleshow.usercenter.helper.UserHelper;
 import com.google.gson.Gson;
 import com.luck.picture.lib.tools.MediaUtils;
 import com.tbruyelle.rxpermissions3.RxPermissions;
@@ -67,6 +68,7 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         StatusBarUtil.setStatusBarDarkTheme(this, true);
+
     }
 
     @Override
@@ -101,6 +103,12 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
                 ARouter.getInstance().build(RouterPath.MineCenter.MINE_PERSONAL_CERTIFICATION)
                         .navigation(this, PERSONAL_CERTIFICATION);
                 break;
+            case R.id.tv_login_out:
+                UserHelper.saveUserToken("");
+                ARouter.getInstance().build(RouterPath.UserCenter.PATH_LOGIN)
+                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK)
+                        .navigation();
+                break;
         }
     }
 
@@ -173,7 +181,7 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
                         intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
                         Log.e("asdfasdfasdfadfs", "111111" );
                         ActivityUtils.startActivityForResult(this, intent, REQUEST_CODE_CAMERA);*/
-                        imagePath = Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/" + System.currentTimeMillis()+".jpg";
+                        imagePath = Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/" + System.currentTimeMillis() + ".jpg";
                         requestCamera(imagePath);
                     } else {
                         ToastUtil.getInstance().show(this, "请选择存储和相机权限!");
@@ -220,7 +228,6 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
     private String imagePath = null;//当前图片的路径
 
 
-
     private void toAlbum() {
         new RxPermissions(this)
                 .request(Manifest.permission.CAMERA,
@@ -253,6 +260,7 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
         viewBinding.clPhone.setOnClickListener(this);
         viewBinding.clModifyPsd.setOnClickListener(this);
         viewBinding.clCertification.setOnClickListener(this);
+        viewBinding.tvLoginOut.setOnClickListener(this);
     }
 
     @Override

+ 86 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/score/MineScoreActivity.java

@@ -0,0 +1,86 @@
+package com.cooleshow.teacher.ui.score;
+
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.viewpager.widget.ViewPager;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.teacher.adapter.MineLiveCoursePagerAdapter;
+import com.cooleshow.teacher.databinding.ActivityMineScoreBinding;
+import com.cooleshow.teacher.presenter.score.MineScorePresenter;
+import com.google.android.material.tabs.TabLayout;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import io.rong.imkit.utils.StatusBarUtil;
+
+/**
+ * 创建日期:2022/5/20 16:34
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.ScoreCenter.TEACHER_MINE_SCORE)
+public class MineScoreActivity extends BaseMVPActivity<ActivityMineScoreBinding, MineScorePresenter> implements View.OnClickListener {
+    @Override
+    public void onClick(View view) {
+
+    }
+
+    private TabLayout tabLayout;
+    private ViewPager viewPager;
+
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "我的曲谱");
+        tabLayout = viewBinding.tablayout;
+        viewPager = viewBinding.viewpager;
+        viewPager.setCurrentItem(0);
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        StatusBarUtil.setStatusBarDarkTheme(this, true);
+    }
+
+    @Override
+    public void initData() {
+        super.initData();
+        initTabLayoutAndViewPager();
+    }
+
+    @Override
+    protected ActivityMineScoreBinding getLayoutView() {
+        return ActivityMineScoreBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineScorePresenter createPresenter() {
+        return new MineScorePresenter();
+    }
+
+    private List<String> titles = new ArrayList<String>(Arrays.asList("已上架", "审核中", "审核失败"));
+    private List<String> auditStatusList = new ArrayList<String>(Arrays.asList("DOING", "PASS", "UNPASS"));
+    private List<Fragment> fragments = new ArrayList<>();
+
+    private void initTabLayoutAndViewPager() {
+        tabLayout.removeAllTabs();
+        fragments.clear();
+        for (int i = 0; i < titles.size(); i++) {
+            tabLayout.addTab(tabLayout.newTab().setText(titles.get(i)));
+            Fragment adFragment = MineScoreFragment.newInstance(auditStatusList.get(i));
+            fragments.add(adFragment);
+        }
+        viewPager.setAdapter(new MineLiveCoursePagerAdapter(getSupportFragmentManager(), fragments, titles));
+        tabLayout.setupWithViewPager(viewPager);
+    }
+
+}

+ 180 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/score/MineScoreFragment.java

@@ -0,0 +1,180 @@
+package com.cooleshow.teacher.ui.score;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+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.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.MineScoreAdapter;
+import com.cooleshow.teacher.bean.MusicSheetListBean;
+import com.cooleshow.teacher.contract.MineScoreContract;
+import com.cooleshow.teacher.databinding.FragmentMineScoreBinding;
+import com.cooleshow.teacher.presenter.score.MineScorePresenter;
+import com.cooleshow.teacher.ui.course.MineLiveCourseFragment;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/20 17:00
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineScoreFragment extends BaseMVPFragment<FragmentMineScoreBinding, MineScorePresenter> implements MineScoreContract.MineScoreView, View.OnClickListener {
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_create:
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_CREATE)
+                        .navigation();
+
+                break;
+        }
+    }
+
+    public static MineScoreFragment newInstance(String auditStatus) {
+        Bundle args = new Bundle();
+        MineScoreFragment fragment = new MineScoreFragment();
+        args.putString("auditStatus", auditStatus);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    protected FragmentMineScoreBinding getLayoutView() {
+        return FragmentMineScoreBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineScorePresenter createPresenter() {
+        return new MineScorePresenter();
+    }
+
+    private String auditStatus = "";
+    private MineScoreAdapter mineScoreAdapter;
+    List<MusicSheetListBean.RowsBean> dataList = new ArrayList<>();
+
+    @Override
+    protected void initView(View rootView) {
+        auditStatus = getArguments().getString("auditStatus");
+        RecyclerView rvAddress = mViewBinding.recyclerView;
+        LinearLayoutManager manager = new LinearLayoutManager(getContext());
+        rvAddress.setLayoutManager(manager);
+        mineScoreAdapter = new MineScoreAdapter(dataList);
+        LayoutInflater inflater = LayoutInflater.from(getContext());
+        View emptyLayout = inflater.inflate(R.layout.empty_mine_live_course, null);
+        TextView tv_create = emptyLayout.findViewById(R.id.tv_create);
+        tv_create.setOnClickListener(this);
+        mineScoreAdapter.setEmptyView(emptyLayout);
+        rvAddress.setAdapter(mineScoreAdapter);
+        mineScoreAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+
+            }
+        });
+
+    }
+
+    private int currentPage;
+
+    @Override
+    protected void initData() {
+        mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+                currentPage = 1;
+                queryCourse(true);
+            }
+        });
+        mineScoreAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore() {
+                //上拉加载
+                if (hasNext) {
+                    currentPage++;
+                    queryCourse(false);
+                } else {
+                    mineScoreAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        });
+        currentPage = 1;
+        queryCourse(true);
+    }
+
+    private boolean hasNext = true;
+
+    /**
+     * 检查是否还有下一页
+     *
+     * @param dataSize
+     */
+    private void checkHasNext(int dataSize) {
+        hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
+    }
+
+    private void queryCourse(boolean isLoading) {
+        presenter.queryPageCourseGroup(isLoading, currentPage, auditStatus);
+    }
+
+    @Override
+    public void queryMusicListSuccess(int page, MusicSheetListBean data) {
+        if (isDetached()) {
+            return;
+        }
+        if (data != null) {
+            if (page == 1) {
+                dataList.clear();
+                mViewBinding.refreshLayout.finishRefresh();
+                if (data.rows != null && data.rows.size() > 0) {
+                    checkHasNext(data.rows.size());
+                    dataList.addAll(data.rows);
+                    mineScoreAdapter.notifyDataSetChanged();
+                }
+            } else {
+                if (data.rows != null && data.rows.size() > 0) {
+                    mineScoreAdapter.getLoadMoreModule().loadMoreComplete();
+                    checkHasNext(data.rows.size());
+                } else {
+                    mineScoreAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        }
+
+    }
+
+    @Override
+    public void queryMusicListError(int page) {
+        if (isDetached()) {
+            return;
+        }
+        if (page == 1) {
+            mViewBinding.refreshLayout.finishRefresh();
+        } else {
+            if (mineScoreAdapter != null) {
+                currentPage--;
+                mineScoreAdapter.getLoadMoreModule().loadMoreFail();
+            }
+        }
+    }
+}

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


+ 7 - 0
teacher/src/main/res/drawable/bg_border_e5_radius.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/common_white" />
+    <stroke android:width="1dp" android:color="@color/color_e5e5e5" />
+    <corners android:radius="10dp" />
+</shape>

+ 7 - 0
teacher/src/main/res/drawable/border_corner_2dc7aa.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/common_white" />
+    <stroke android:width="1dp" android:color="@color/color_2dc7aa" />
+    <corners android:radius="25dp" />
+</shape>

+ 8 - 0
teacher/src/main/res/drawable/shap_gradient_59e5d5.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="2dp" />
+    <gradient
+        android:angle="270"
+        android:endColor="@color/color_2dc7aa"
+        android:startColor="@color/color_59e5d5" />
+</shape>

+ 19 - 0
teacher/src/main/res/drawable/tab_indicator.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <item android:gravity="center">
+        <shape>
+
+            <size
+                android:width="16dp"
+                android:height="4dp" />
+
+            <corners android:radius="2dp" />
+
+            <solid android:color="@color/color_2dc7aa" />
+
+        </shape>
+    </item>
+
+</layer-list>

+ 304 - 0
teacher/src/main/res/layout/activity_bind_bankcard.xml

@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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"
+    android:background="@color/color_f6f8f9"
+    android:orientation="vertical">
+
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="14dp"
+        android:layout_marginTop="15dp"
+        android:layout_marginEnd="14dp"
+        android:background="@drawable/bg_white_10dp">
+
+
+        <TextView
+            android:id="@+id/tv_star_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="21dp"
+            android:layout_marginTop="25dp"
+            android:text="*"
+            android:textColor="@color/color_ff4e19"
+            android:textSize="@dimen/sp_17"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="持卡人姓名"
+            android:textColor="@color/black"
+            android:textSize="@dimen/sp_17"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_star_name"
+            app:layout_constraintLeft_toRightOf="@+id/tv_star_name"
+            app:layout_constraintTop_toTopOf="@+id/tv_star_name" />
+
+        <EditText
+            android:id="@+id/et_real_name"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_45"
+            android:layout_marginLeft="21dp"
+            android:layout_marginRight="21dp"
+            android:background="@null"
+            android:gravity="left"
+            android:hint="请输入您的真实姓名"
+            android:inputType="text"
+            android:paddingTop="8dp"
+            android:textColor="@color/black_333"
+            android:textColorHint="@color/color_ffc1c1c1"
+            android:textSize="16sp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tv_star_name" />
+
+        <View
+            android:id="@+id/view_line1"
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginLeft="20dp"
+            android:layout_marginRight="21dp"
+            android:background="@color/divide_color"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/et_real_name" />
+
+
+
+        <TextView
+            android:id="@+id/tv_star_idcard"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="21dp"
+            android:layout_marginTop="13dp"
+            android:text="*"
+            android:textColor="@color/color_ff4e19"
+            android:textSize="@dimen/sp_17"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/view_line1"/>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="持卡人身份证号"
+            android:textColor="@color/black"
+            android:textSize="@dimen/sp_17"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_star_idcard"
+            app:layout_constraintLeft_toRightOf="@+id/tv_star_idcard"
+            app:layout_constraintTop_toTopOf="@+id/tv_star_idcard" />
+
+        <EditText
+            android:id="@+id/et_real_idcard"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_45"
+            android:layout_marginLeft="21dp"
+            android:layout_marginRight="21dp"
+            android:background="@null"
+            android:gravity="left"
+            android:hint="请输入您的身份证号"
+            android:inputType="number"
+            android:paddingTop="8dp"
+            android:textColor="@color/black_333"
+            android:textColorHint="@color/color_ffc1c1c1"
+            android:textSize="16sp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tv_star_idcard" />
+
+
+        <View
+            android:id="@+id/view_line"
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginLeft="20dp"
+            android:layout_marginRight="21dp"
+            android:background="@color/divide_color"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/et_real_idcard" />
+
+
+
+        <TextView
+            android:id="@+id/tv_star_bank_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="21dp"
+            android:layout_marginTop="13dp"
+            android:text="*"
+            android:textColor="@color/color_ff4e19"
+            android:textSize="@dimen/sp_17"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/view_line" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="开户行"
+            android:textSize="@dimen/sp_17"
+            android:textColor="@color/black"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_star_bank_name"
+            app:layout_constraintLeft_toRightOf="@+id/tv_star_bank_name"
+            app:layout_constraintTop_toTopOf="@+id/tv_star_bank_name" />
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/cl_bankname"
+            android:layout_width="wrap_content"
+            android:layout_height="45dp"
+            android:paddingTop="8dp"
+            android:layout_marginLeft="21dp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tv_star_bank_name">
+
+            <TextView
+                android:id="@+id/tv_select_bankname"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="请选择"
+                android:textSize="@dimen/sp_16"
+                android:textColor="@color/color_ffc1c1c1"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <ImageView
+                android:layout_width="12dp"
+                android:layout_height="7dp"
+                android:layout_marginLeft="6dp"
+                android:background="@drawable/icon_go_down"
+                app:layout_constraintBottom_toBottomOf="@+id/tv_select_bankname"
+                app:layout_constraintLeft_toRightOf="@+id/tv_select_bankname"
+                app:layout_constraintTop_toTopOf="@+id/tv_select_bankname" />
+
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <View
+            android:id="@+id/view_line2"
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginLeft="20dp"
+            android:layout_marginRight="21dp"
+            android:background="@color/divide_color"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/cl_bankname" />
+
+        <TextView
+            android:id="@+id/tv_star_bank_num"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="21dp"
+            android:layout_marginTop="13dp"
+            android:text="*"
+            android:textColor="@color/color_ff4e19"
+            android:textSize="@dimen/sp_17"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/view_line2" />
+
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="银行卡号"
+            android:textColor="@color/black"
+            android:textSize="@dimen/sp_17"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_star_bank_num"
+            app:layout_constraintLeft_toRightOf="@+id/tv_star_bank_num"
+            app:layout_constraintTop_toTopOf="@+id/tv_star_bank_num" />
+
+
+        <EditText
+            android:id="@+id/et_bank_num"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_45"
+            android:layout_marginLeft="21dp"
+            android:layout_marginRight="21dp"
+            android:background="@null"
+            android:gravity="left"
+            android:hint="请输入银行卡号"
+            android:inputType="number"
+            android:paddingTop="8dp"
+            android:textColor="@color/black_333"
+            android:textColorHint="@color/color_ffc1c1c1"
+            android:textSize="16sp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tv_star_bank_num" />
+
+        <View
+            android:id="@+id/view_line3"
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginLeft="20dp"
+            android:layout_marginRight="21dp"
+            android:background="@color/divide_color"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/et_bank_num" />
+
+        <TextView
+            android:id="@+id/tv_star_bank_phone"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="21dp"
+            android:layout_marginTop="13dp"
+            android:text="*"
+            android:textColor="@color/color_ff4e19"
+            android:textSize="@dimen/sp_17"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/view_line3" />
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="银行卡预留手机号"
+            android:textColor="@color/black"
+            android:textSize="@dimen/sp_17"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_star_bank_phone"
+            app:layout_constraintLeft_toRightOf="@+id/tv_star_bank_phone"
+            app:layout_constraintTop_toTopOf="@+id/tv_star_bank_phone" />
+        <EditText
+            android:id="@+id/et_bank_phone"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_45"
+            android:layout_marginLeft="21dp"
+            android:layout_marginRight="21dp"
+            android:background="@null"
+            android:gravity="left"
+            android:hint="请输入手机号"
+            android:inputType="phone"
+            android:paddingTop="8dp"
+            android:textColor="@color/black_333"
+            android:textColorHint="@color/color_ffc1c1c1"
+            android:textSize="16sp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tv_star_bank_phone" />
+
+        <View
+            android:id="@+id/view_line4"
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginLeft="20dp"
+            android:layout_marginRight="21dp"
+            android:background="@color/divide_color"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            android:layout_marginBottom="37dp"
+            app:layout_constraintTop_toBottomOf="@+id/et_bank_phone" />
+
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <TextView
+        android:id="@+id/tv_bind"
+        android:layout_width="match_parent"
+        android:layout_height="44dp"
+        android:layout_alignParentBottom="true"
+        android:layout_marginLeft="28dp"
+        android:layout_marginTop="23dp"
+        android:layout_marginRight="28dp"
+        android:background="@drawable/shape_course_status_ing"
+        android:gravity="center"
+        android:text="立即绑卡"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_14" />
+</LinearLayout>

+ 40 - 0
teacher/src/main/res/layout/activity_bind_card_success.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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"
+    android:background="@color/color_f6f8f9"
+    android:orientation="vertical">
+
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <ImageView
+        android:layout_width="@dimen/dp_260"
+        android:layout_height="@dimen/dp_230"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="45dp"
+        android:background="@drawable/icon_bind_card_success" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="12dp"
+        android:text="恭喜您绑定成功!"
+        android:textColor="@color/color_999999"
+        android:textSize="@dimen/sp_15" />
+
+    <TextView
+        android:id="@+id/tv_i_know"
+        android:layout_width="@dimen/dp_196"
+        android:layout_height="44dp"
+        android:layout_marginTop="14dp"
+        android:layout_gravity="center_horizontal"
+        android:background="@drawable/shape_course_status_ing"
+        android:gravity="center"
+        android:text="我知道了"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_14" />
+</LinearLayout>

+ 134 - 0
teacher/src/main/res/layout/activity_create_live.xml

@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout 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"
+    android:background="@color/color_f6f8f9">
+
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/cl_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/toolbar_include"
+        android:layout_marginStart="14dp"
+        android:layout_marginTop="15dp"
+        android:layout_marginEnd="14dp"
+        android:background="@drawable/bg_white_10dp">
+
+
+        <TextView
+            android:id="@+id/tv_star_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="21dp"
+            android:layout_marginTop="20dp"
+            android:text="*"
+            android:textColor="@color/color_ff4e19"
+            android:textSize="@dimen/sp_17"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="直播标题"
+            android:textColor="@color/black"
+            android:textSize="@dimen/sp_17"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_star_title"
+            app:layout_constraintLeft_toRightOf="@+id/tv_star_title"
+            app:layout_constraintTop_toTopOf="@+id/tv_star_title" />
+
+        <EditText
+            android:id="@+id/et_title"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_45"
+            android:layout_marginLeft="21dp"
+            android:layout_marginRight="21dp"
+            android:background="@null"
+            android:gravity="left"
+            android:hint="请输入直播标题"
+            android:inputType="text"
+            android:paddingTop="8dp"
+            android:textColor="@color/black_333"
+            android:textColorHint="@color/color_ffc1c1c1"
+            android:textSize="16sp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tv_star_title" />
+
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/cl_title"
+        android:layout_marginStart="14dp"
+        android:layout_marginTop="15dp"
+        android:layout_marginEnd="14dp"
+        android:background="@drawable/bg_white_10dp">
+
+
+        <TextView
+            android:id="@+id/tv_star_content"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="21dp"
+            android:layout_marginTop="20dp"
+            android:text="*"
+            android:textColor="@color/color_ff4e19"
+            android:textSize="@dimen/sp_17"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="直播内容"
+            android:textColor="@color/black"
+            android:textSize="@dimen/sp_17"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_star_content"
+            app:layout_constraintLeft_toRightOf="@+id/tv_star_content"
+            app:layout_constraintTop_toTopOf="@+id/tv_star_content" />
+
+
+        <EditText
+            android:id="@+id/et_content"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_166"
+            android:layout_marginLeft="21dp"
+            android:layout_marginRight="21dp"
+            android:background="@null"
+            android:gravity="left"
+            android:hint="请输入直播内容"
+            android:inputType="text"
+            android:paddingTop="8dp"
+            android:paddingBottom="8dp"
+            android:textColor="@color/black_333"
+            android:textColorHint="@color/color_ffc1c1c1"
+            android:textSize="16sp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tv_star_content" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <TextView
+        android:id="@+id/tv_confirm"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_44"
+        android:layout_alignParentBottom="true"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginLeft="27dp"
+        android:layout_marginRight="28dp"
+        android:layout_marginBottom="43dp"
+        android:background="@drawable/shape_course_status_ing"
+        android:gravity="center"
+        android:text="确认"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_18" />
+</RelativeLayout>

+ 316 - 0
teacher/src/main/res/layout/activity_create_live_course_arrangment.xml

@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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"
+    android:background="@color/color_f6f8f9"
+    android:orientation="vertical">
+
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scrollbars="none">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="14dp"
+                android:layout_marginTop="15dp"
+                android:layout_marginRight="14dp"
+                android:orientation="horizontal">
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/dp_56"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_white_10dp">
+
+                    <ImageView
+                        android:layout_width="@dimen/dp_24"
+                        android:layout_height="@dimen/dp_24"
+                        android:layout_marginTop="5dp"
+                        android:background="@drawable/icon_create_course_info_select"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="3dp"
+                        android:text="课程信息"
+                        android:textColor="@color/color_2dc7aa"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/dp_56"
+                    android:layout_marginLeft="10dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_white_10dp">
+
+                    <ImageView
+                        android:layout_width="@dimen/dp_24"
+                        android:layout_height="@dimen/dp_24"
+                        android:layout_marginTop="5dp"
+                        android:background="@drawable/icon_create_course_arrangement_select"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="3dp"
+                        android:text="课程安排"
+                        android:textColor="@color/color_2dc7aa"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/dp_56"
+                    android:layout_marginLeft="10dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_white_10dp">
+
+                    <ImageView
+                        android:layout_width="@dimen/dp_24"
+                        android:layout_height="@dimen/dp_24"
+                        android:layout_marginTop="5dp"
+                        android:background="@drawable/icon_create_teach_plan_normal"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="3dp"
+                        android:text="教学计划"
+                        android:textColor="@color/color_b4b4b4"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/dp_56"
+                    android:layout_marginLeft="10dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_white_10dp">
+
+                    <ImageView
+                        android:layout_width="@dimen/dp_24"
+                        android:layout_height="@dimen/dp_24"
+                        android:layout_marginTop="5dp"
+                        android:background="@drawable/icon_create_course_conditions_nornal"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="3dp"
+                        android:text="开课条件"
+                        android:textColor="@color/color_b4b4b4"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+            </LinearLayout>
+
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="14dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginRight="14dp"
+                android:background="@drawable/bg_white_10dp">
+
+                <ImageView
+                    android:id="@+id/im_calendar_prev_month"
+                    android:layout_width="28dp"
+                    android:layout_height="28dp"
+                    android:layout_marginLeft="17dp"
+                    android:layout_marginTop="15dp"
+                    android:padding="5dp"
+                    android:src="@drawable/icon_calendar_prev_month"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+
+                <TextView
+                    android:id="@+id/tv_title_month"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:paddingTop="5dp"
+                    android:text="2021年9月"
+                    android:textColor="@color/black_333"
+                    android:textSize="@dimen/sp_18"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/im_calendar_prev_month" />
+
+                <ImageView
+                    android:id="@+id/im_calendar_next_month"
+                    android:layout_width="28dp"
+                    android:layout_height="28dp"
+                    android:layout_marginTop="15dp"
+                    android:layout_marginRight="17dp"
+                    android:padding="5dp"
+                    android:src="@drawable/icon_calendar_next_month"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <com.haibin.calendarview.CalendarLayout
+                    android:id="@+id/calendarLayout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:layout_marginBottom="13dp"
+                    android:orientation="vertical"
+                    app:calendar_show_mode="both_month_week_view"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_title_month">
+
+                    <com.cooleshow.base.widgets.MyCalenderView
+                        android:id="@+id/calendarView"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:paddingStart="@dimen/dp_8"
+                        android:paddingEnd="@dimen/dp_8"
+                        app:calendar_height="@dimen/dp_56"
+                        app:current_day_text_color="@color/colorPrimary"
+                        app:current_month_text_color="@color/black_444"
+                        app:day_text_size="@dimen/dp_15"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent"
+                        app:max_year="2100"
+                        app:min_year="1990"
+                        app:month_view="com.cooleshow.teacher.widgets.SimpleMonthView"
+                        app:month_view_show_mode="mode_only_current"
+                        app:scheme_text_color="@color/color_ff6363"
+                        app:scheme_theme_color="@color/white"
+                        app:select_mode="single_mode"
+                        app:selected_text_color="@color/white"
+                        app:selected_theme_color="@color/colorPrimary"
+                        app:week_background="@color/white"
+                        app:week_bar_height="@dimen/dp_45"
+                        app:week_line_background="@color/color_f2f2f2"
+                        app:week_start_with="sun"
+                        app:week_text_color="@color/gray_777"
+                        app:week_text_size="@dimen/dp_16"
+                        app:week_view="com.cooleshow.teacher.widgets.SimpleWeekView"
+                        app:year_view_background="@color/white" />
+
+                </com.haibin.calendarview.CalendarLayout>
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="14dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginRight="14dp"
+                android:background="@drawable/bg_white_10dp"
+                android:minHeight="@dimen/dp_115">
+
+                <View
+                    android:id="@+id/view_line"
+                    android:layout_width="4dp"
+                    android:layout_height="14dp"
+                    android:layout_marginLeft="11dp"
+                    android:layout_marginTop="21dp"
+                    android:background="@drawable/shap_gradient_59e5d5"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="7dp"
+                    android:text="已选择课程时间"
+                    android:textColor="@color/black_333"
+                    android:textSize="@dimen/sp_16"
+                    android:textStyle="bold"
+                    app:layout_constraintBottom_toBottomOf="@+id/view_line"
+                    app:layout_constraintLeft_toRightOf="@+id/view_line"
+                    app:layout_constraintTop_toTopOf="@+id/view_line" />
+
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/rv_select_time"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="3dp"
+                    android:layout_marginTop="7dp"
+                    android:layout_marginRight="3dp"
+                    app:layout_constraintTop_toBottomOf="@+id/view_line" />
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="29dp"
+                android:layout_marginTop="82dp"
+                android:layout_marginRight="28dp"
+                android:layout_marginBottom="35dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:id="@+id/tv_prev_step"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/dp_44"
+                    android:layout_marginRight="3dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/border_corner_2dc7aa"
+                    android:gravity="center"
+                    android:text="上一步"
+                    android:textColor="@color/color_2dc7aa"
+                    android:textSize="@dimen/sp_18" />
+
+                <TextView
+                    android:id="@+id/tv_next_step"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/dp_44"
+                    android:layout_marginLeft="3dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/shape_course_status_ing"
+                    android:gravity="center"
+                    android:text="下一步"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/sp_18" />
+            </LinearLayout>
+        </LinearLayout>
+    </ScrollView>
+
+</LinearLayout>

+ 619 - 0
teacher/src/main/res/layout/activity_create_live_course_info.xml

@@ -0,0 +1,619 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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"
+    android:background="@color/color_f6f8f9"
+    android:orientation="vertical">
+
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scrollbars="none">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="14dp"
+                android:layout_marginTop="15dp"
+                android:layout_marginRight="14dp"
+                android:orientation="horizontal">
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/dp_56"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_white_10dp">
+
+                    <ImageView
+                        android:layout_width="@dimen/dp_24"
+                        android:layout_height="@dimen/dp_24"
+                        android:layout_marginTop="5dp"
+                        android:background="@drawable/icon_create_course_info_select"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="3dp"
+                        android:text="课程信息"
+                        android:textColor="@color/color_2dc7aa"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/dp_56"
+                    android:layout_marginLeft="10dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_white_10dp">
+
+                    <ImageView
+                        android:layout_width="@dimen/dp_24"
+                        android:layout_height="@dimen/dp_24"
+                        android:layout_marginTop="5dp"
+                        android:background="@drawable/icon_create_course_arrangement_normal"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="3dp"
+                        android:text="课程安排"
+                        android:textColor="@color/color_b4b4b4"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/dp_56"
+                    android:layout_marginLeft="10dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_white_10dp">
+
+                    <ImageView
+                        android:layout_width="@dimen/dp_24"
+                        android:layout_height="@dimen/dp_24"
+                        android:layout_marginTop="5dp"
+                        android:background="@drawable/icon_create_teach_plan_normal"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="3dp"
+                        android:text="教学计划"
+                        android:textColor="@color/color_b4b4b4"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/dp_56"
+                    android:layout_marginLeft="10dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_white_10dp">
+
+                    <ImageView
+                        android:layout_width="@dimen/dp_24"
+                        android:layout_height="@dimen/dp_24"
+                        android:layout_marginTop="5dp"
+                        android:background="@drawable/icon_create_course_conditions_nornal"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="3dp"
+                        android:text="开课条件"
+                        android:textColor="@color/color_b4b4b4"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintRight_toRightOf="parent" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+            </LinearLayout>
+
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="14dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginRight="14dp"
+                android:background="@drawable/bg_white_10dp">
+
+                <TextView
+                    android:id="@+id/tv_star_course_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginTop="20dp"
+                    android:text="*"
+                    android:textColor="@color/color_ff4e19"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="课程名称"
+                    android:textColor="@color/black"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_star_course_name"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_star_course_name"
+                    app:layout_constraintTop_toTopOf="@+id/tv_star_course_name" />
+
+
+                <EditText
+                    android:id="@+id/et_course_name"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/dp_45"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:background="@null"
+                    android:gravity="left"
+                    android:hint="请输入课程名称"
+                    android:inputType="text"
+                    android:lines="1"
+                    android:paddingTop="8dp"
+                    android:textColor="@color/black_333"
+                    android:textColorHint="@color/color_ffc1c1c1"
+                    android:textSize="@dimen/sp_16"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_star_course_name" />
+
+                <View
+                    android:id="@+id/view_line1"
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:background="@color/divide_color"
+                    app:layout_constraintTop_toBottomOf="@+id/et_course_name" />
+
+                <TextView
+                    android:id="@+id/tv_star_course_parts"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginTop="12dp"
+                    android:text="*"
+                    android:textColor="@color/color_ff4e19"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/view_line1" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="课程声部"
+                    android:textColor="@color/black"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_star_course_parts"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_star_course_parts"
+                    app:layout_constraintTop_toTopOf="@+id/tv_star_course_parts" />
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/cl_course_parts"
+                    android:layout_width="wrap_content"
+                    android:layout_height="@dimen/dp_45"
+                    android:layout_marginLeft="12dp"
+                    android:paddingTop="8dp"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_star_course_parts">
+
+                    <TextView
+                        android:id="@+id/tv_select_course_parts"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="请选择"
+                        android:textSize="@dimen/sp_16"
+                        android:textColor="@color/color_ffc1c1c1"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <ImageView
+                        android:layout_width="12dp"
+                        android:layout_height="7dp"
+                        android:layout_marginLeft="6dp"
+                        android:background="@drawable/icon_go_down"
+                        app:layout_constraintBottom_toBottomOf="@+id/tv_select_course_parts"
+                        app:layout_constraintLeft_toRightOf="@+id/tv_select_course_parts"
+                        app:layout_constraintTop_toTopOf="@+id/tv_select_course_parts" />
+
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <View
+                    android:id="@+id/view_line2"
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:layout_marginBottom="20dp"
+                    android:background="@color/divide_color"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/cl_course_parts" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="14dp"
+                android:layout_marginTop="20dp"
+                android:layout_marginRight="14dp"
+                android:background="@drawable/bg_white_10dp">
+
+                <TextView
+                    android:id="@+id/tv_star_course_introduce"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginTop="20dp"
+                    android:text="*"
+                    android:textColor="@color/color_ff4e19"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="课程名称"
+                    android:textColor="@color/black"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_star_course_introduce"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_star_course_introduce"
+                    app:layout_constraintTop_toTopOf="@+id/tv_star_course_introduce" />
+
+
+                <EditText
+                    android:id="@+id/et_course_introduce"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/dp_108"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:background="@null"
+                    android:gravity="left"
+                    android:hint="请输入课程介绍"
+                    android:inputType="text"
+                    android:lines="1"
+                    android:paddingTop="8dp"
+                    android:textColor="@color/black_333"
+                    android:textColorHint="@color/color_ffc1c1c1"
+                    android:textSize="@dimen/sp_16"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_star_course_introduce" />
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="14dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginRight="14dp"
+                android:background="@drawable/bg_white_10dp">
+
+                <TextView
+                    android:id="@+id/tv_star_course_hour"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginTop="20dp"
+                    android:text="*"
+                    android:textColor="@color/color_ff4e19"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="课时数"
+                    android:textColor="@color/black"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_star_course_hour"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_star_course_hour"
+                    app:layout_constraintTop_toTopOf="@+id/tv_star_course_hour" />
+
+
+                <EditText
+                    android:id="@+id/et_course_hour"
+                    android:layout_width="@dimen/dp_48"
+                    android:layout_height="@dimen/dp_45"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:background="@null"
+                    android:gravity="left"
+                    android:hint="请输入课程名称"
+                    android:inputType="text"
+                    android:lines="1"
+                    android:paddingTop="8dp"
+                    android:textColor="@color/black_333"
+                    android:textColorHint="@color/color_ffc1c1c1"
+                    android:textSize="@dimen/sp_16"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_star_course_hour" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="@dimen/dp_45"
+                    android:layout_marginLeft="8dp"
+                    android:paddingTop="8dp"
+                    android:text="课时"
+                    android:textColor="@color/black_333"
+                    android:textSize="@dimen/sp_16"
+                    app:layout_constraintBottom_toBottomOf="@+id/et_course_hour"
+                    app:layout_constraintLeft_toRightOf="@+id/et_course_hour"
+                    app:layout_constraintTop_toTopOf="@+id/et_course_hour" />
+
+                <View
+                    android:id="@+id/view_line3"
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:background="@color/divide_color"
+                    app:layout_constraintTop_toBottomOf="@+id/et_course_hour" />
+
+
+                <TextView
+                    android:id="@+id/tv_star_course_duration"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginTop="14dp"
+                    android:text="*"
+                    android:textColor="@color/color_ff4e19"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/view_line3" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="单课时时长"
+                    android:textColor="@color/black"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_star_course_duration"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_star_course_duration"
+                    app:layout_constraintTop_toTopOf="@+id/tv_star_course_duration" />
+
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/cl_course_duration"
+                    android:layout_width="wrap_content"
+                    android:layout_height="@dimen/dp_45"
+                    android:layout_marginLeft="12dp"
+                    android:paddingTop="8dp"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_star_course_duration">
+
+                    <TextView
+                        android:id="@+id/tv_select_course_duration"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="请选择"
+                        android:textSize="@dimen/sp_16"
+                        android:textColor="@color/color_ffc1c1c1"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <ImageView
+                        android:layout_width="12dp"
+                        android:layout_height="7dp"
+                        android:layout_marginLeft="6dp"
+                        android:background="@drawable/icon_go_down"
+                        app:layout_constraintBottom_toBottomOf="@+id/tv_select_course_duration"
+                        app:layout_constraintLeft_toRightOf="@+id/tv_select_course_duration"
+                        app:layout_constraintTop_toTopOf="@+id/tv_select_course_duration" />
+
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <View
+                    android:id="@+id/view_line4"
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:background="@color/divide_color"
+                    app:layout_constraintTop_toBottomOf="@+id/cl_course_duration" />
+
+                <TextView
+                    android:id="@+id/tv_star_course_price"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginTop="12dp"
+                    android:text="*"
+                    android:textColor="@color/color_ff4e19"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/view_line4" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="课程组售价"
+                    android:textColor="@color/black"
+                    android:textSize="@dimen/sp_17"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_star_course_price"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_star_course_price"
+                    app:layout_constraintTop_toTopOf="@+id/tv_star_course_price" />
+
+
+                <EditText
+                    android:id="@+id/et_course_price"
+                    android:layout_width="@dimen/dp_48"
+                    android:layout_height="@dimen/dp_45"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:background="@null"
+                    android:gravity="left"
+                    android:hint="请输入"
+                    android:inputType="text"
+                    android:lines="1"
+                    android:paddingTop="8dp"
+                    android:textColor="@color/black_333"
+                    android:textColorHint="@color/color_ffc1c1c1"
+                    android:textSize="@dimen/sp_16"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_star_course_price" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="@dimen/dp_45"
+                    android:layout_marginLeft="8dp"
+                    android:paddingTop="8dp"
+                    android:text="元"
+                    android:textColor="@color/black_333"
+                    android:textSize="@dimen/sp_16"
+                    app:layout_constraintBottom_toBottomOf="@+id/et_course_price"
+                    app:layout_constraintLeft_toRightOf="@+id/et_course_price"
+                    app:layout_constraintTop_toTopOf="@+id/et_course_price" />
+
+                <View
+                    android:id="@+id/view_line5"
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:layout_marginBottom="20dp"
+                    android:background="@color/divide_color"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/et_course_price" />
+
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="14dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginRight="14dp"
+                android:text="扣除手续费后您的课程预计收入为:"
+                android:textColor="@color/color_999999"
+                android:textSize="@dimen/sp_14" />
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="14dp"
+                android:layout_marginTop="8dp"
+                android:layout_marginRight="14dp"
+                android:orientation="horizontal">
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="单课时"
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_14" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="19"
+                    android:layout_marginLeft="5dp"
+                    android:layout_marginRight="5dp"
+                    android:textColor="@color/color_ff4e19"
+                    android:textSize="@dimen/sp_14" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="元/人"
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_14" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="14dp"
+                android:layout_marginTop="8dp"
+                android:layout_marginRight="14dp"
+                android:orientation="horizontal">
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="课程组总收入 "
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_14" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="114"
+                    android:layout_marginLeft="5dp"
+                    android:layout_marginRight="5dp"
+                    android:textColor="@color/color_ff4e19"
+                    android:textSize="@dimen/sp_14" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="元/人"
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_14" />
+            </LinearLayout>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="14dp"
+                android:layout_marginTop="8dp"
+                android:layout_marginRight="14dp"
+                android:text="您的课程收入将在课程结束后结算到您的账户中"
+                android:textColor="@color/color_999999"
+                android:textSize="@dimen/sp_14" />
+            <TextView
+                android:id="@+id/tv_next"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/dp_44"
+                android:layout_marginTop="38dp"
+                android:layout_marginBottom="48dp"
+                android:layout_marginLeft="27dp"
+                android:layout_marginRight="28dp"
+                android:layout_gravity="center_horizontal"
+                android:background="@drawable/shape_course_status_ing"
+                android:gravity="center"
+                android:text="下一步"
+                android:textColor="@color/white"
+                android:textSize="@dimen/sp_18" />
+        </LinearLayout>
+    </ScrollView>
+</LinearLayout>

+ 82 - 0
teacher/src/main/res/layout/activity_input_bank_vcode.xml

@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout 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"
+    android:background="@color/color_f6f8f9"
+    android:orientation="vertical">
+
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="35dp"
+        android:layout_marginTop="85dp"
+        android:text="输入验证码"
+        android:textColor="@color/black"
+        android:textSize="@dimen/sp_26"
+        android:textStyle="bold"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/toolbar_include" />
+
+
+    <TextView
+        android:id="@+id/tv_top_vcode"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="20dp"
+        android:text="已发送6位验证码至 "
+        android:textColor="@color/black"
+        android:textSize="@dimen/sp_16"
+        app:layout_constraintLeft_toLeftOf="@+id/tv_title"
+        app:layout_constraintTop_toBottomOf="@+id/tv_title" />
+
+    <TextView
+        android:id="@+id/tv_phone_num"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="20dp"
+        android:text="1360000000 "
+        android:textColor="@color/color_999999"
+        android:textSize="@dimen/sp_16"
+        app:layout_constraintLeft_toRightOf="@+id/tv_top_vcode"
+        app:layout_constraintTop_toBottomOf="@+id/tv_title" />
+
+    <com.cooleshow.base.widgets.VerifyEditText
+        android:id="@+id/edit_code"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="39dp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tv_phone_num"
+        app:verify_background_normal="@drawable/shape_code_input_bg"
+        app:verify_background_selected="@drawable/shape_code_input_bg_select"
+        app:verify_count="6"
+        app:verify_height="40dp"
+        app:verify_inputType="text"
+        app:verify_margin="15dp"
+        app:verify_textSize="20sp"
+        app:verify_width="38dp" />
+
+    <TextView
+        android:id="@+id/tv_resend_code"
+        android:layout_width="160dp"
+        android:layout_height="50dp"
+        android:layout_marginTop="67dp"
+        android:background="@drawable/shape_login_bt_bg_unselect"
+        android:clickable="false"
+        android:gravity="center"
+        android:text="重新发送"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_17"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/edit_code" />
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 35 - 0
teacher/src/main/res/layout/activity_mine_live_course.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:background="@color/color_f6f8f9"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <com.google.android.material.tabs.TabLayout
+        android:id="@+id/tablayout"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_44"
+        android:scrollbars="none"
+        app:tabBackground="@null"
+        app:tabGravity="fill"
+        app:tabIndicator="@drawable/tab_indicator"
+        app:tabIndicatorColor="@color/color_2dc7aa"
+        app:tabIndicatorFullWidth="false"
+        app:tabIndicatorHeight="4dp"
+        app:tabMode="fixed"
+        app:tabRippleColor="@null"
+        app:tabSelectedTextColor="@color/black_333"
+        app:tabTextAppearance="@style/tab_layout_style"
+        app:tabTextColor="@color/color_666666" />
+
+    <androidx.viewpager.widget.ViewPager
+        android:id="@+id/viewpager"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+</LinearLayout>

+ 65 - 0
teacher/src/main/res/layout/activity_mine_score.xml

@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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"
+    android:background="@color/color_f6f8f9"
+    android:orientation="vertical">
+
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <com.google.android.material.tabs.TabLayout
+        android:id="@+id/tablayout"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_44"
+        android:scrollbars="none"
+        app:tabBackground="@null"
+        app:tabGravity="fill"
+        app:tabIndicator="@drawable/tab_indicator"
+        app:tabIndicatorColor="@color/color_2dc7aa"
+        app:tabIndicatorFullWidth="false"
+        app:tabIndicatorHeight="4dp"
+        app:tabMode="fixed"
+        app:tabRippleColor="@null"
+        app:tabSelectedTextColor="@color/black_333"
+        app:tabTextAppearance="@style/tab_layout_style"
+        app:tabTextColor="@color/color_666666" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_40"
+        android:layout_marginLeft="14dp"
+        android:layout_marginRight="14dp"
+        android:layout_marginTop="14dp"
+        android:background="@drawable/bg_border_e5_radius"
+        android:gravity="center"
+        android:orientation="horizontal">
+
+        <ImageView
+            android:layout_width="@dimen/dp_26"
+            android:layout_height="@dimen/dp_26"
+            android:background="@drawable/icon_upload_score" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="2dp"
+            android:text="上传乐谱"
+            android:textColor="@color/black_333"
+            android:textSize="@dimen/sp_15" />
+
+        <ImageView
+            android:layout_width="6dp"
+            android:layout_height="11dp"
+            android:layout_marginLeft="8dp"
+            android:background="@drawable/icon_go_right"/>
+    </LinearLayout>
+
+    <androidx.viewpager.widget.ViewPager
+        android:id="@+id/viewpager"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+</LinearLayout>

+ 35 - 0
teacher/src/main/res/layout/activity_mine_video_course.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:background="@color/color_f6f8f9"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <com.google.android.material.tabs.TabLayout
+        android:id="@+id/tablayout"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_44"
+        android:scrollbars="none"
+        app:tabBackground="@null"
+        app:tabGravity="fill"
+        app:tabIndicator="@drawable/tab_indicator"
+        app:tabIndicatorColor="@color/color_2dc7aa"
+        app:tabIndicatorFullWidth="false"
+        app:tabIndicatorHeight="4dp"
+        app:tabMode="fixed"
+        app:tabRippleColor="@null"
+        app:tabSelectedTextColor="@color/black_333"
+        app:tabTextAppearance="@style/tab_layout_style"
+        app:tabTextColor="@color/color_666666" />
+
+    <androidx.viewpager.widget.ViewPager
+        android:id="@+id/viewpager"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+</LinearLayout>

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

@@ -74,6 +74,7 @@
             android:layout_marginLeft="27dp"
             android:gravity="center"
             android:text="请选择"
+            android:textSize="@dimen/sp_16"
             app:layout_constraintLeft_toLeftOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/tv_certificate_type" />
 

+ 21 - 5
teacher/src/main/res/layout/activity_personal_setting.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout 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"
@@ -8,15 +8,16 @@
 
     <include
         android:id="@+id/toolbar_include"
-        layout="@layout/common_toolbar_layout"/>
+        layout="@layout/common_toolbar_layout" />
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:layout_below="@+id/toolbar_include"
         android:layout_marginStart="14dp"
         android:layout_marginTop="15dp"
-        android:background="@drawable/bg_white_10dp"
-        android:layout_marginEnd="14dp">
+        android:layout_marginEnd="14dp"
+        android:background="@drawable/bg_white_10dp">
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/cl_header"
@@ -298,4 +299,19 @@
             app:layout_constraintLeft_toLeftOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/cl_certification" />
     </androidx.constraintlayout.widget.ConstraintLayout>
-</LinearLayout>
+
+
+    <TextView
+        android:id="@+id/tv_login_out"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_50"
+        android:layout_alignParentBottom="true"
+        android:layout_marginLeft="14dp"
+        android:layout_marginRight="14dp"
+        android:layout_marginBottom="46dp"
+        android:background="@drawable/bg_white_10dp"
+        android:gravity="center"
+        android:text="退出登录"
+        android:textColor="@color/color_1a1a1a"
+        android:textSize="@dimen/sp_17" />
+</RelativeLayout>

+ 44 - 0
teacher/src/main/res/layout/empty_mine_live_course.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout 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="wrap_content">
+
+
+    <ImageView
+        android:id="@+id/im_empty_logo"
+        android:layout_width="@dimen/dp_260"
+        android:layout_height="@dimen/dp_230"
+        android:layout_marginTop="8dp"
+        android:background="@drawable/icon_empty_mine_course"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/tv_empty_hint"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="14dp"
+        android:gravity="center"
+        android:lineSpacingExtra="4dp"
+        android:text="您尚未创建直播课程"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/im_empty_logo" />
+
+    <TextView
+        android:id="@+id/tv_create"
+        android:layout_width="@dimen/dp_196"
+        android:layout_height="@dimen/dp_44"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="25dp"
+        android:background="@drawable/shape_course_status_ing"
+        android:gravity="center"
+        android:text="立即创建"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tv_empty_hint" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 44 - 0
teacher/src/main/res/layout/empty_mine_video_course.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout 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="wrap_content">
+
+
+    <ImageView
+        android:id="@+id/im_empty_logo"
+        android:layout_width="@dimen/dp_260"
+        android:layout_height="@dimen/dp_230"
+        android:layout_marginTop="8dp"
+        android:background="@drawable/icon_empty_mine_video_course"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/tv_empty_hint"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="14dp"
+        android:gravity="center"
+        android:lineSpacingExtra="4dp"
+        android:text="您尚未创建视频课"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/im_empty_logo" />
+
+    <TextView
+        android:id="@+id/tv_create"
+        android:layout_width="@dimen/dp_196"
+        android:layout_height="@dimen/dp_44"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="25dp"
+        android:background="@drawable/shape_course_status_ing"
+        android:gravity="center"
+        android:text="立即创建"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tv_empty_hint" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 26 - 0
teacher/src/main/res/layout/fragment_mine_live_course.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent">
+
+        <com.scwang.smart.refresh.header.ClassicsHeader
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:overScrollMode="never"
+            android:scrollbars="none" />
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 26 - 0
teacher/src/main/res/layout/fragment_mine_score.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent">
+
+        <com.scwang.smart.refresh.header.ClassicsHeader
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:overScrollMode="never"
+            android:scrollbars="none" />
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 28 - 0
teacher/src/main/res/layout/fragment_mine_video_course.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent">
+
+        <com.scwang.smart.refresh.header.ClassicsHeader
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="8dp"
+            android:layout_marginRight="8dp"
+            android:overScrollMode="never"
+            android:scrollbars="none" />
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 122 - 0
teacher/src/main/res/layout/layout_mine_live_course_item.xml

@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout 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="wrap_content">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_141"
+        android:layout_marginLeft="14dp"
+        android:layout_marginTop="12dp"
+        android:layout_marginRight="14dp"
+        android:background="@drawable/bg_white_10dp">
+
+        <com.cooleshow.base.widgets.QMUIRadiusImageView
+            android:id="@+id/im_pic"
+            android:layout_width="@dimen/dp_105"
+            android:layout_height="@dimen/dp_71"
+            android:layout_marginLeft="11dp"
+            android:layout_marginTop="16dp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:qmui_corner_radius="5dp" />
+
+        <TextView
+            android:id="@+id/tv_subject_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="12dp"
+            android:text="从零开始学竖笛直播课"
+            android:textColor="@color/color_1a1a1a"
+            android:textSize="@dimen/sp_15"
+            app:layout_constraintLeft_toRightOf="@+id/im_pic"
+            app:layout_constraintTop_toTopOf="@+id/im_pic" />
+
+        <de.hdodenhof.circleimageview.CircleImageView
+            android:id="@+id/im_header"
+            android:layout_width="18dp"
+            android:layout_height="18dp"
+            android:layout_marginLeft="14dp"
+            android:src="@drawable/icon_teacher_default_head"
+            app:layout_constraintBottom_toBottomOf="@+id/im_pic"
+            app:layout_constraintLeft_toRightOf="@+id/im_pic" />
+
+        <TextView
+            android:id="@+id/tv_teacher_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="6dp"
+            android:text="李老师"
+            android:textColor="@color/color_999999"
+            android:textSize="@dimen/sp_13"
+            app:layout_constraintBottom_toBottomOf="@+id/im_header"
+            app:layout_constraintLeft_toRightOf="@+id/im_header"
+            app:layout_constraintTop_toTopOf="@+id/im_header" />
+
+        <View
+            android:id="@+id/view_line"
+            android:layout_width="1dp"
+            android:layout_height="@dimen/dp_11"
+            android:layout_marginLeft="10dp"
+            android:background="@color/color_d3d3d3"
+            app:layout_constraintBottom_toBottomOf="@+id/im_header"
+            app:layout_constraintLeft_toRightOf="@+id/tv_teacher_name"
+            app:layout_constraintTop_toTopOf="@+id/im_header" />
+
+        <TextView
+            android:id="@+id/tv_student_count"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dp"
+            android:text="6人已购买"
+            android:textColor="@color/color_ff802c"
+            android:textSize="@dimen/sp_13"
+            app:layout_constraintBottom_toBottomOf="@+id/im_header"
+            app:layout_constraintLeft_toRightOf="@+id/view_line"
+            app:layout_constraintTop_toTopOf="@+id/im_header" />
+
+        <View
+            android:id="@+id/view_line1"
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginTop="15dp"
+            android:layout_marginRight="9dp"
+            android:background="@color/color_f2f2f2"
+            app:layout_constraintTop_toBottomOf="@+id/im_pic" />
+
+        <ImageView
+            android:id="@+id/im_date"
+            android:layout_width="@dimen/dp_16"
+            android:layout_height="@dimen/dp_16"
+            android:layout_marginTop="10dp"
+            android:background="@drawable/icon_live_date_item"
+            app:layout_constraintLeft_toLeftOf="@+id/im_pic"
+            app:layout_constraintTop_toBottomOf="@+id/view_line1" />
+
+        <TextView
+            android:id="@+id/tv_date"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="7dp"
+            android:text="2021/09/17 14:00~14:25"
+            android:textColor="@color/color_666666"
+            android:textSize="@dimen/sp_13"
+            app:layout_constraintBottom_toBottomOf="@+id/im_date"
+            app:layout_constraintLeft_toRightOf="@+id/im_date"
+            app:layout_constraintTop_toTopOf="@+id/im_date" />
+
+        <TextView
+            android:id="@+id/tv_price"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="11dp"
+            android:text="¥120/4课时"
+            android:textColor="@color/color_2dc7aa"
+            android:textSize="@dimen/sp_15"
+            app:layout_constraintBottom_toBottomOf="@+id/im_date"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="@+id/im_date" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</RelativeLayout>

+ 98 - 0
teacher/src/main/res/layout/layout_mine_score_item.xml

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout 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="wrap_content">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="14dp"
+        android:layout_marginTop="12dp"
+        android:layout_marginRight="14dp"
+        android:background="@drawable/bg_white_10dp">
+
+        <ImageView
+            android:id="@+id/im_music_mark"
+            android:layout_width="@dimen/dp_40"
+            android:layout_height="@dimen/dp_40"
+            android:layout_marginLeft="11dp"
+            android:layout_marginTop="10dp"
+            android:background="@drawable/icon_music_mark"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="14dp"
+            android:text="Exodus(出埃及记)"
+            android:textColor="@color/black_333"
+            android:textSize="@dimen/sp_14"
+            android:textStyle="bold"
+            app:layout_constraintLeft_toRightOf="@+id/im_music_mark"
+            app:layout_constraintTop_toTopOf="@+id/im_music_mark" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="14dp"
+            android:text="沃伊切赫·基拉尔"
+            app:layout_constraintBottom_toBottomOf="@+id/im_music_mark"
+            app:layout_constraintLeft_toRightOf="@+id/im_music_mark" />
+
+
+        <ImageView
+            android:layout_width="@dimen/dp_55"
+            android:layout_height="@dimen/dp_22"
+            android:layout_marginRight="12dp"
+            android:background="@drawable/icon_score_demand"
+            app:layout_constraintBottom_toBottomOf="@+id/im_music_mark"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="@+id/im_music_mark" />
+
+        <View
+            android:id="@+id/view_line"
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginRight="9dp"
+            android:background="@color/color_f2f2f2"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/im_music_mark" />
+
+        <de.hdodenhof.circleimageview.CircleImageView
+            android:id="@+id/im_header"
+            android:layout_width="18dp"
+            android:layout_height="18dp"
+            android:layout_marginLeft="14dp"
+            android:layout_marginTop="8dp"
+            android:layout_marginBottom="10dp"
+            android:src="@drawable/icon_teacher_default_head"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="@+id/view_line"
+            app:layout_constraintTop_toBottomOf="@+id/view_line"
+            app:layout_goneMarginLeft="20dp" />
+
+        <TextView
+            android:id="@+id/tv_teacher_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="7dp"
+            android:text="宋倩倩"
+            android:textColor="@color/black_333"
+            android:textSize="@dimen/sp_12"
+            app:layout_constraintBottom_toBottomOf="@+id/im_header"
+            app:layout_constraintLeft_toRightOf="@+id/im_header"
+            app:layout_constraintTop_toTopOf="@+id/im_header" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/rv_"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_teacher_name"
+            app:layout_constraintLeft_toRightOf="@+id/tv_teacher_name"
+            app:layout_constraintTop_toTopOf="@+id/tv_teacher_name" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</RelativeLayout>

+ 74 - 0
teacher/src/main/res/layout/layout_mine_video_course_item.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout 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="wrap_content">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="6dp"
+        android:layout_marginTop="12dp"
+        android:layout_marginRight="6dp"
+        android:background="@drawable/bg_white_top_10dp">
+
+        <com.cooleshow.base.widgets.QMUIRadiusImageView
+            android:id="@+id/im_pic"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_111"
+            android:layout_marginLeft="11dp"
+            android:layout_marginTop="16dp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:qmui_corner_radius="10dp" />
+
+        <TextView
+            android:id="@+id/tv_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="11dp"
+            android:lines="1"
+            android:text="从零开始学竖笛视频课"
+            android:textColor="@color/color_1a1a1a"
+            android:textSize="@dimen/sp_14"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/im_pic" />
+
+        <de.hdodenhof.circleimageview.CircleImageView
+            android:id="@+id/im_header"
+            android:layout_width="18dp"
+            android:layout_height="18dp"
+            android:layout_marginLeft="11dp"
+            android:layout_marginTop="9dp"
+            android:src="@drawable/icon_teacher_default_head"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tv_title" />
+
+
+        <TextView
+            android:id="@+id/tv_teacher_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="6dp"
+            android:text="李老师"
+            android:textColor="@color/color_999999"
+            android:textSize="@dimen/sp_12"
+            app:layout_constraintBottom_toBottomOf="@+id/im_header"
+            app:layout_constraintLeft_toRightOf="@+id/im_header"
+            app:layout_constraintTop_toTopOf="@+id/im_header" />
+
+        <TextView
+            android:id="@+id/tv_price"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="2dp"
+            android:layout_marginLeft="11dp"
+            android:text="¥120/4课时"
+            android:textColor="@color/color_2dc7aa"
+            android:layout_marginBottom="12dp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            android:textSize="@dimen/sp_14"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/im_header" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</RelativeLayout>

Some files were not shown because too many files changed in this diff