Browse Source

“我的乐谱(部分)”、“课后作业”、“我的收入”

Ryan8057 2 years ago
parent
commit
d7212967ae
73 changed files with 2624 additions and 64 deletions
  1. 2 0
      BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java
  2. 13 0
      BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt
  3. 3 0
      BaseLibrary/src/main/res/values/colors.xml
  4. 2 1
      teacher/.gitignore
  5. 12 0
      teacher/src/main/AndroidManifest.xml
  6. 41 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/HomeWorkPagerAdapter.java
  7. 75 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/HomeworkAdapter.java
  8. 45 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/IncomeFilterAdapter.java
  9. 30 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/ItemMarkAdapter.java
  10. 75 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineIncomeAdapter.java
  11. 48 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineScoreAdapter.java
  12. 34 0
      teacher/src/main/java/com/cooleshow/teacher/api/APIService.java
  13. 26 0
      teacher/src/main/java/com/cooleshow/teacher/bean/AccountDetailBean.java
  14. 57 0
      teacher/src/main/java/com/cooleshow/teacher/bean/HomeworkListBean.java
  15. 17 0
      teacher/src/main/java/com/cooleshow/teacher/bean/IncomeCourseFilterBean.java
  16. 95 0
      teacher/src/main/java/com/cooleshow/teacher/bean/MusicSheetShareBean.java
  17. 53 0
      teacher/src/main/java/com/cooleshow/teacher/bean/UserAccountBean.java
  18. 18 0
      teacher/src/main/java/com/cooleshow/teacher/contract/HomeWorkActContract.java
  19. 21 0
      teacher/src/main/java/com/cooleshow/teacher/contract/HomeWorkContract.java
  20. 25 0
      teacher/src/main/java/com/cooleshow/teacher/contract/MineIncomeContract.java
  21. 19 0
      teacher/src/main/java/com/cooleshow/teacher/contract/MineScoreActContract.java
  22. 17 0
      teacher/src/main/java/com/cooleshow/teacher/contract/ShopMallContract.java
  23. 17 0
      teacher/src/main/java/com/cooleshow/teacher/contract/WithdrawalContract.java
  24. 13 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/homework/HomeWorkActPresenter.java
  25. 60 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/homework/HomeWorkPresenter.java
  26. 94 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/income/MineIncomePresenter.java
  27. 13 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/income/WithdrawalPresenter.java
  28. 14 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/main/ShopMallPresenter.java
  29. 49 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/score/MineScoreActPresenter.java
  30. 2 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/score/MineScorePresenter.java
  31. 322 0
      teacher/src/main/java/com/cooleshow/teacher/ui/income/MineIncomeActivity.java
  32. 87 0
      teacher/src/main/java/com/cooleshow/teacher/ui/income/WithdrawalActivity.java
  33. 13 4
      teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt
  34. 2 2
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MainActivity.java
  35. 165 0
      teacher/src/main/java/com/cooleshow/teacher/ui/main/ShopMallFragment.java
  36. 21 3
      teacher/src/main/java/com/cooleshow/teacher/ui/score/MineScoreActivity.java
  37. 9 18
      teacher/src/main/java/com/cooleshow/teacher/ui/score/MineScoreFragment.java
  38. 87 0
      teacher/src/main/java/com/cooleshow/teacher/ui/work/HomeWorkActivity.java
  39. 237 0
      teacher/src/main/java/com/cooleshow/teacher/ui/work/HomeWorkFragment.java
  40. BIN
      teacher/src/main/res/drawable-xhdpi/icon_empty_content.png
  41. BIN
      teacher/src/main/res/drawable-xhdpi/icon_income_top_bg.png
  42. BIN
      teacher/src/main/res/drawable-xhdpi/icon_item_live.png
  43. BIN
      teacher/src/main/res/drawable-xhdpi/icon_item_music.png
  44. BIN
      teacher/src/main/res/drawable-xhdpi/icon_item_practice.png
  45. BIN
      teacher/src/main/res/drawable-xhdpi/icon_item_video.png
  46. BIN
      teacher/src/main/res/drawable-xhdpi/icon_score_free.png
  47. BIN
      teacher/src/main/res/drawable-xhdpi/icon_score_vip.png
  48. BIN
      teacher/src/main/res/drawable-xhdpi/icon_toolbar_share.png
  49. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_bank_card.png
  50. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_empty_content.png
  51. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_income_top_bg.png
  52. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_item_live.png
  53. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_item_music.png
  54. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_item_practice.png
  55. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_item_video.png
  56. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_score_free.png
  57. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_score_vip.png
  58. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_toolbar_share.png
  59. 9 0
      teacher/src/main/res/drawable/bg_white_border.xml
  60. 10 0
      teacher/src/main/res/drawable/bg_withdrawal_tips.xml
  61. 37 0
      teacher/src/main/res/layout/activity_homework.xml
  62. 103 0
      teacher/src/main/res/layout/activity_mine_income.xml
  63. 0 28
      teacher/src/main/res/layout/activity_mine_score.xml
  64. 1 1
      teacher/src/main/res/layout/activity_mine_style_page.xml
  65. 176 0
      teacher/src/main/res/layout/activity_withdrawal.xml
  66. 35 0
      teacher/src/main/res/layout/fragment_homework.xml
  67. 33 6
      teacher/src/main/res/layout/fragment_mine_score.xml
  68. 45 0
      teacher/src/main/res/layout/fragment_shopmal.xml
  69. 30 0
      teacher/src/main/res/layout/layout_empty_conent.xml
  70. 99 0
      teacher/src/main/res/layout/layout_item_homework.xml
  71. 22 0
      teacher/src/main/res/layout/layout_mark_item.xml
  72. 85 0
      teacher/src/main/res/layout/layout_mine_income_item.xml
  73. 6 1
      teacher/src/main/res/layout/layout_mine_score_item.xml

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

@@ -51,5 +51,7 @@ public abstract class WebConstants {
     public static final String TEACHER_PRACTICE_SETTING = getBaseUrlH5() + "/#/practiceSetting";
     //我的粉
     public static final String TEACHER_MY_FANS = getBaseUrlH5() + "/#/myFans";
+    //商城
+    public static final String TEACHER_SHOPMALL = getBaseUrlH5() + "/#/shopMall";
 
 }

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

@@ -55,7 +55,20 @@ object RouterPath {
             const val TEACHER_MINE_SCORE = "/teacher/ui/score/MineScoreActivity"
         }
     }
+    //收入模块
+    class IncomeCenter {
+        companion object {
+            const val TEACHER_MINE_INCOME = "/teacher/ui/income/MineIncomeActivity"
+            const val TEACHER_MINE_WITHDRAWAL = "/teacher/ui/income/WithdrawalActivity"
+        }
+    }
 
+    //作业模块
+    class WorkCenter {
+        companion object {
+            const val TEACHER_WORK_HOMEWORK = "/teacher/ui/work/HomeWorkActivity"
+        }
+    }
 
     //评价模块
     class CommentCenter {

+ 3 - 0
BaseLibrary/src/main/res/values/colors.xml

@@ -72,4 +72,7 @@
     <color name="color_ff4e19">#FF4E19</color>
     <color name="color_b4b4b4">#B4B4B4</color>
     <color name="color_59e5d5">#59E5D5</color>
+    <color name="color_e0945a">#E0945A</color>
+    <color name="color_fff6ee">#FFF6EE</color>
+    <color name="color_ffecdd">#FFECDD</color>
 </resources>

+ 2 - 1
teacher/.gitignore

@@ -1 +1,2 @@
-/build
+/build
+/release/

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

@@ -159,6 +159,18 @@
             android:name=".ui.score.MineScoreActivity"
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.work.HomeWorkActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.income.MineIncomeActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.income.WithdrawalActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
     </application>
 
 </manifest>

+ 41 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/HomeWorkPagerAdapter.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/23 10:53
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeWorkPagerAdapter extends FragmentPagerAdapter {
+
+    private List<String> titles;
+
+    private List<Fragment> fragments;
+
+    public HomeWorkPagerAdapter(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) : "";
+    }
+}

+ 75 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/HomeworkAdapter.java

@@ -0,0 +1,75 @@
+package com.cooleshow.teacher.adapter;
+
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+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.HomeworkListBean;
+import com.cooleshow.teacher.bean.MusicSheetListBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/23 11:13
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeworkAdapter extends BaseQuickAdapter<HomeworkListBean.RowsBean, BaseViewHolder> implements LoadMoreModule {
+
+    public HomeworkAdapter(List<HomeworkListBean.RowsBean> data) {
+        super(R.layout.layout_item_homework, data);
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, HomeworkListBean.RowsBean item) {
+        TextView tv_date=helper.getView(R.id.tv_date);
+        TextView tv_state=helper.getView(R.id.tv_state);
+        ImageView im_header=helper.getView(R.id.im_header);
+        TextView tv_name=helper.getView(R.id.tv_name);
+        RecyclerView rv_mark=helper.getView(R.id.rv_mark);
+        GlideUtils.INSTANCE.loadImage(getContext(), item.teacherAvatar, im_header, R.drawable.icon_teacher_default_head);
+        tv_name.setText(item.teacherName);
+        if (!TextUtils.isEmpty(item.subjectName)) {
+            rv_mark.setVisibility(View.VISIBLE);
+            List<String> markList = new ArrayList<>();
+            if (item.subjectName.contains(",")) {
+                String[] split = item.subjectName.split(",");
+                for (String s : split) {
+                    markList.add(s);
+                }
+            } else {
+                markList.add(item.subjectName);
+            }
+            LinearLayoutManager manager = new LinearLayoutManager(getContext());
+            manager.setOrientation(LinearLayoutManager.HORIZONTAL);
+            rv_mark.setLayoutManager(manager);
+            ItemMarkAdapter itemMarkAdapter = new ItemMarkAdapter(markList);
+            rv_mark.setAdapter(itemMarkAdapter);
+        } else {
+            rv_mark.setVisibility(View.GONE);
+        }
+        tv_date.setText(item.classDate);
+
+    }
+
+    @NonNull
+    @Override
+    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
+        return new BaseLoadMoreModule(baseQuickAdapter);
+    }
+
+}

+ 45 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/IncomeFilterAdapter.java

@@ -0,0 +1,45 @@
+package com.cooleshow.teacher.adapter;
+
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.CourseFilterStatusBean;
+import com.cooleshow.teacher.bean.IncomeCourseFilterBean;
+
+/**
+ * 创建日期:2022/5/23 15:03
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class IncomeFilterAdapter extends BaseQuickAdapter<IncomeCourseFilterBean, BaseViewHolder> {
+    private int selectPosition = -1;
+
+    public IncomeFilterAdapter(int layoutResId) {
+        super(layoutResId);
+    }
+
+    @Override
+    protected void convert(@NonNull BaseViewHolder holder, IncomeCourseFilterBean bean) {
+        holder.setText(R.id.tv_title, bean.showText);
+        TextView tv_title = holder.getView(R.id.tv_title);
+        if (getItemPosition(bean) == selectPosition) {
+            tv_title.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
+        } else {
+            tv_title.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.black_333));
+        }
+    }
+
+    public int getSelectPosition() {
+        return selectPosition;
+    }
+
+    public void setSelect(int selectPosition) {
+        this.selectPosition = selectPosition;
+        notifyDataSetChanged();
+    }
+}

+ 30 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/ItemMarkAdapter.java

@@ -0,0 +1,30 @@
+package com.cooleshow.teacher.adapter;
+
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.teacher.R;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/23 11:54
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class ItemMarkAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
+
+    public ItemMarkAdapter(List<String> data) {
+        super(R.layout.layout_mark_item, data);
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, String item) {
+        TextView tv_content = helper.getView(R.id.tv_content);
+        tv_content.setText(item);
+    }
+
+}

+ 75 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineIncomeAdapter.java

@@ -0,0 +1,75 @@
+package com.cooleshow.teacher.adapter;
+
+import android.view.View;
+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.teacher.R;
+import com.cooleshow.teacher.bean.MusicSheetListBean;
+import com.cooleshow.teacher.bean.UserAccountBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/23 14:49
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineIncomeAdapter extends BaseQuickAdapter<UserAccountBean.RowsBean, BaseViewHolder> implements LoadMoreModule {
+
+    public MineIncomeAdapter(List<UserAccountBean.RowsBean> data) {
+        super(R.layout.layout_mine_income_item, data);
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, UserAccountBean.RowsBean item) {
+        TextView tv_time = helper.getView(R.id.tv_time);
+        ImageView im_state = helper.getView(R.id.im_state);
+        TextView tv_name = helper.getView(R.id.tv_name);
+        TextView tv_date = helper.getView(R.id.tv_date);
+        TextView tv_price = helper.getView(R.id.tv_price);
+        if (getItemPosition(item) > 0) {
+            int lastPosition = getItemPosition(item) - 1;
+            if (getData().get(lastPosition).timeDay.equals(item.timeDay)) {
+                tv_time.setVisibility(View.GONE);
+            } else {
+                tv_time.setVisibility(View.VISIBLE);
+                tv_time.setText(item.timeDay);
+            }
+        } else {
+            tv_time.setVisibility(View.VISIBLE);
+            tv_time.setText(item.timeDay);
+        }
+        switch (item.bizType) {
+            case "PRACTICE":
+                im_state.setBackgroundResource(R.drawable.icon_item_practice);
+                break;
+            case "LIVE":
+                im_state.setBackgroundResource(R.drawable.icon_item_live);
+                break;
+            case "VIDEO":
+                im_state.setBackgroundResource(R.drawable.icon_item_video);
+                break;
+            case "MUSIC":
+                im_state.setBackgroundResource(R.drawable.icon_item_music);
+                break;
+        }
+        tv_name.setText(item.bizName);
+        tv_price.setText(item.transAmount + "");
+        tv_date.setText(item.endTime);
+    }
+
+    @NonNull
+    @Override
+    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
+        return new BaseLoadMoreModule(baseQuickAdapter);
+    }
+}

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

@@ -1,9 +1,14 @@
 package com.cooleshow.teacher.adapter;
 
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
 import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
 
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.module.BaseLoadMoreModule;
@@ -14,6 +19,7 @@ import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.bean.MineLiveCourseListBean;
 import com.cooleshow.teacher.bean.MusicSheetListBean;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -31,6 +37,48 @@ public class MineScoreAdapter extends BaseQuickAdapter<MusicSheetListBean.RowsBe
 
     @Override
     protected void convert(BaseViewHolder helper, MusicSheetListBean.RowsBean item) {
+        TextView tv_name = helper.getView(R.id.tv_name);
+        TextView tv_author_name = helper.getView(R.id.tv_author_name);
+        ImageView im_state = helper.getView(R.id.im_state);
+        ImageView im_header = helper.getView(R.id.im_header);
+        TextView tv_teacher_name = helper.getView(R.id.tv_teacher_name);
+        RecyclerView rv_mark = helper.getView(R.id.rv_mark);
+
+        switch (item.chargeType) {
+            case "FREE":
+                im_state.setBackgroundResource(R.drawable.icon_score_free);
+                break;
+            case "VIP":
+                im_state.setBackgroundResource(R.drawable.icon_score_vip);
+                break;
+            case "CHARGE":
+                im_state.setBackgroundResource(R.drawable.icon_score_demand);
+                break;
+        }
+        tv_name.setText(item.musicSheetName);
+        tv_author_name.setText(item.composer);
+        GlideUtils.INSTANCE.loadImage(getContext(), item.addUserAvatar, im_header, R.drawable.icon_teacher_default_head);
+        tv_teacher_name.setText(item.addName);
+
+        if (!TextUtils.isEmpty(item.musicSubject)) {
+            rv_mark.setVisibility(View.VISIBLE);
+            List<String> markList = new ArrayList<>();
+            if (item.musicSubject.contains(",")) {
+                String[] split = item.musicSheetName.split(",");
+                for (String s : split) {
+                    markList.add(s);
+                }
+            } else {
+                markList.add(item.musicSheetName);
+            }
+            LinearLayoutManager manager = new LinearLayoutManager(getContext());
+            manager.setOrientation(LinearLayoutManager.HORIZONTAL);
+            rv_mark.setLayoutManager(manager);
+            ItemMarkAdapter itemMarkAdapter = new ItemMarkAdapter(markList);
+            rv_mark.setAdapter(itemMarkAdapter);
+        } else {
+            rv_mark.setVisibility(View.GONE);
+        }
 
     }
 

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

@@ -1,14 +1,17 @@
 package com.cooleshow.teacher.api;
 
 import com.cooleshow.base.data.net.BaseResponse;
+import com.cooleshow.teacher.bean.AccountDetailBean;
 import com.cooleshow.teacher.bean.AddressBean;
 import com.cooleshow.teacher.bean.CourseCommentListBean;
 import com.cooleshow.teacher.bean.CourseTableDataBean;
 import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
+import com.cooleshow.teacher.bean.HomeworkListBean;
 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.MusicSheetShareBean;
 import com.cooleshow.teacher.bean.ReceivedCommentListBean;
 import com.cooleshow.teacher.bean.ResponseBankCardBean;
 import com.cooleshow.teacher.bean.ResponseBindCardBean;
@@ -19,6 +22,7 @@ import com.cooleshow.teacher.bean.SparringCourseListBean;
 import com.cooleshow.teacher.bean.TeachableInstrumentBean;
 import com.cooleshow.teacher.bean.TeacherSelfStyleInfoBean;
 import com.cooleshow.teacher.bean.TeacherUserInfo;
+import com.cooleshow.teacher.bean.UserAccountBean;
 import com.cooleshow.teacher.bean.VideoCourseListBean;
 import com.cooleshow.usercenter.bean.SetDetailBean;
 import com.cooleshow.usercenter.bean.UserInfo;
@@ -361,4 +365,34 @@ public interface APIService {
      */
     @POST(TEACHER_GROUP + "music/sheet/list")
     Observable<BaseResponse<MusicSheetListBean>> queryMusicList(@Body RequestBody body);
+
+    /**
+     * 乐谱分享
+     * @return
+     */
+    @GET(TEACHER_GROUP + "music/sheet/share")
+    Observable<BaseResponse<MusicSheetShareBean>> musicSheetShare();
+
+    /**
+     * 课后作业
+     * @param body
+     * @return
+     */
+    @POST(TEACHER_GROUP + "homework/list")
+    Observable<BaseResponse<HomeworkListBean>> queryHomeworkList(@Body RequestBody body);
+
+    /**
+     *我的收入
+     * @return
+     */
+    @GET(TEACHER_GROUP + "userAccount/detail")
+    Observable<BaseResponse<AccountDetailBean>> getUserAccountDetail();
+
+    /**
+     * 收入列表
+     * @param body
+     * @return
+     */
+    @POST(TEACHER_GROUP + "userAccount/page")
+    Observable<BaseResponse<UserAccountBean>> userAccountPage(@Body RequestBody body);
 }

+ 26 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/AccountDetailBean.java

@@ -0,0 +1,26 @@
+package com.cooleshow.teacher.bean;
+
+/**
+ * 创建日期:2022/5/23 14:27
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class AccountDetailBean {
+    /*
+    	"amountFrozen": 0,
+		"amountTotal": 0,
+		"amountUsable": 0,
+		"createTime": "",
+		"status": 0,
+		"updateTime": "",
+		"userId": 0
+     */
+    public double amountFrozen;
+    public double amountTotal;
+    public double amountUsable;
+    public String createTime;
+    public int status;
+    public String updateTime;
+    public int userId;
+}

+ 57 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/HomeworkListBean.java

@@ -0,0 +1,57 @@
+package com.cooleshow.teacher.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/23 11:09
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeworkListBean {
+    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 {
+        /*
+
+
+        	"absenteeism": "",
+                    "classDate": "",
+                    "courseGroupId": 0,
+                    "courseId": 0,
+                    "decorateTime": "",
+                    "endTime": "",
+                    "startTime": "",
+                    "studentAvatar": "",
+                    "studentId": 0,
+                    "studentName": "",
+                    "subjectName": "",
+                    "submitTime": "",
+                    "teacherAvatar": "",
+                    "teacherId": 0,
+                    "teacherName": ""
+         */
+        public String absenteeism;
+        public String classDate;
+        public int courseGroupId;
+        public int courseId;
+        public String decorateTime;
+        public String endTime;
+        public String studentAvatar;
+        public int studentId;
+        public String studentName;
+        public String subjectName;
+        public String submitTime;
+        public String teacherAvatar;
+        public int teacherId;
+        public String teacherName;
+
+    }
+}

+ 17 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/IncomeCourseFilterBean.java

@@ -0,0 +1,17 @@
+package com.cooleshow.teacher.bean;
+
+/**
+ * 创建日期:2022/5/23 14:59
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class IncomeCourseFilterBean {
+    public String value;
+    public String showText;
+
+    public IncomeCourseFilterBean(String value,String showText) {
+        this.value = value;
+        this.showText = showText;
+    }
+}

+ 95 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/MusicSheetShareBean.java

@@ -0,0 +1,95 @@
+package com.cooleshow.teacher.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/23 10:28
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MusicSheetShareBean {
+    public String avatar;
+    public int musicSheetCount;
+    public String name;
+    public List<MusicSheetVoBean> musicSheetVoList;
+
+    /*
+    "avatar": "",
+		"musicSheetCount": 0,
+				"name": ""
+		"musicSheetVoList": [
+			{
+				"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 static class MusicSheetVoBean {
+        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 favorite;
+        public String hasBeat;
+        public String hotFlag;
+        public int id;
+        public String metronomeUrl;
+        public String midiUrl;
+        public String mp3Type;
+        public String musicSheetName;
+        public String musicSubject;
+        public String musicTag;
+        public String musicTagNames;
+        public String url;
+        public String play;
+        public String showFingering;
+        public String sourceType;
+        public String xmlFileUrl;
+        public int userId;
+    }
+
+
+}

+ 53 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/UserAccountBean.java

@@ -0,0 +1,53 @@
+package com.cooleshow.teacher.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/23 14:34
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class UserAccountBean {
+    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 {
+        /*
+        	"accountBalance": 0,
+				"accountId": 0,
+				"bizId": 0,
+				"bizName": "",
+				"bizType": "",
+				"createTime": "",
+				"endTime": "",
+				"id": 0,
+				"inOrOut": "",
+				"orderNo": "",
+				"startTime": "",
+				"timeDay": "",
+				"transAmount": 0
+         */
+        public double accountBalance;
+        public int accountId;
+        public int bizId;
+        public String bizName;
+        public String bizType;
+        public String createTime;
+        public String endTime;
+        public int id;
+        public String inOrOut;
+        public String orderNo;
+        public String startTime;
+        public String timeDay;
+        public double transAmount;
+
+
+    }
+}

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

@@ -0,0 +1,18 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.MusicSheetShareBean;
+
+/**
+ * 创建日期:2022/5/23 10:50
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface HomeWorkActContract {
+    interface HomeWorkActView extends BaseView {
+    }
+
+    interface Presenter {
+    }
+}

+ 21 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/HomeWorkContract.java

@@ -0,0 +1,21 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.HomeworkListBean;
+
+/**
+ * 创建日期:2022/5/23 11:00
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface HomeWorkContract {
+    interface HomeWorkView extends BaseView {
+        void queryHomeworkListSuccess(int page, HomeworkListBean data);
+
+        void queryHomeworkListError(int page);
+    }
+
+    interface Presenter {
+    }
+}

+ 25 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/MineIncomeContract.java

@@ -0,0 +1,25 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.AccountDetailBean;
+import com.cooleshow.teacher.bean.UserAccountBean;
+
+/**
+ * 创建日期:2022/5/23 14:22
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface MineIncomeContract {
+    interface MineIncomeView extends BaseView {
+        void userAccountDetailSuccess(AccountDetailBean data);
+
+        void userAccountPageSuccess(int page, UserAccountBean data);
+
+        void userAccountPageError(int page);
+    }
+
+    interface Presenter {
+        void getUserAccountDetail();
+    }
+}

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

@@ -0,0 +1,19 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.MusicSheetShareBean;
+
+/**
+ * 创建日期:2022/5/23 10:24
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface MineScoreActContract {
+    interface MineScoreActView extends BaseView {
+        void musicSheetShareSuccess(MusicSheetShareBean data);
+    }
+
+    interface Presenter {
+    }
+}

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

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

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

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

+ 13 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/homework/HomeWorkActPresenter.java

@@ -0,0 +1,13 @@
+package com.cooleshow.teacher.presenter.homework;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.teacher.contract.HomeWorkActContract;
+
+/**
+ * 创建日期:2022/5/23 10:49
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeWorkActPresenter extends BasePresenter<HomeWorkActContract.HomeWorkActView> implements HomeWorkActContract.Presenter {
+}

+ 60 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/homework/HomeWorkPresenter.java

@@ -0,0 +1,60 @@
+package com.cooleshow.teacher.presenter.homework;
+
+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.HomeworkListBean;
+import com.cooleshow.teacher.bean.MusicSheetListBean;
+import com.cooleshow.teacher.contract.HomeWorkContract;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * 创建日期:2022/5/23 10:59
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeWorkPresenter extends BasePresenter<HomeWorkContract.HomeWorkView> implements HomeWorkContract.Presenter {
+    public void queryHomeworkList(boolean isLoading,int page,String decorate,String selectDate){
+        if (isLoading && getView() != null) {
+            getView().showLoading();
+        }
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("decorate",decorate);
+            jsonObject.put("selectDate",selectDate);
+            jsonObject.putOpt("page", page);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).queryHomeworkList(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<HomeworkListBean>(getView()) {
+            @Override
+            protected void onSuccess(HomeworkListBean data) {
+                if (getView() != null) {
+                    getView().queryHomeworkListSuccess(page, data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().queryHomeworkListError(page);
+                }
+            }
+        });
+    }
+
+
+}

+ 94 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/income/MineIncomePresenter.java

@@ -0,0 +1,94 @@
+package com.cooleshow.teacher.presenter.income;
+
+import com.cooleshow.base.constanst.Constants;
+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.AccountDetailBean;
+import com.cooleshow.teacher.bean.HomeworkListBean;
+import com.cooleshow.teacher.bean.MusicSheetShareBean;
+import com.cooleshow.teacher.bean.UserAccountBean;
+import com.cooleshow.teacher.contract.MineIncomeContract;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * 创建日期:2022/5/23 14:21
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineIncomePresenter extends BasePresenter<MineIncomeContract.MineIncomeView> implements MineIncomeContract.Presenter {
+    @Override
+    public void getUserAccountDetail() {
+        getView().showLoading();
+        addSubscribe(create(APIService.class).getUserAccountDetail(), new BaseObserver<AccountDetailBean>(getView()) {
+            @Override
+            protected void onSuccess(AccountDetailBean data) {
+                if (getView() != null) {
+                    getView().userAccountDetailSuccess(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 userAccountPage(boolean isLoading,int page,String bizType,String searchDate){
+        if (isLoading && getView() != null) {
+            getView().showLoading();
+        }
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("bizType",bizType);
+            jsonObject.put("searchDate",searchDate);
+            jsonObject.putOpt("page", page);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).userAccountPage(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<UserAccountBean>(getView()) {
+            @Override
+            protected void onSuccess(UserAccountBean data) {
+                if (getView() != null) {
+                    getView().userAccountPageSuccess(page, data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().userAccountPageError(page);
+                }
+            }
+        });
+    }
+
+
+}

+ 13 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/income/WithdrawalPresenter.java

@@ -0,0 +1,13 @@
+package com.cooleshow.teacher.presenter.income;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.teacher.contract.WithdrawalContract;
+
+/**
+ * 创建日期:2022/5/23 17:30
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class WithdrawalPresenter extends BasePresenter<WithdrawalContract.WithdrawalView> implements WithdrawalContract.Presenter {
+}

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

@@ -0,0 +1,14 @@
+package com.cooleshow.teacher.presenter.main;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.teacher.contract.HomeContract;
+import com.cooleshow.teacher.contract.ShopMallContract;
+
+/**
+ * 创建日期:2022/5/23 16:01
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class ShopMallPresenter extends BasePresenter< ShopMallContract. ShopMallView> implements  ShopMallContract.Presenter{
+}

+ 49 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/score/MineScoreActPresenter.java

@@ -0,0 +1,49 @@
+package com.cooleshow.teacher.presenter.score;
+
+import com.cooleshow.base.data.net.ApiException;
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.ToastUtils;
+import com.cooleshow.base.utils.helper.ErrorParse;
+import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.bean.AddressBean;
+import com.cooleshow.teacher.bean.MusicSheetShareBean;
+import com.cooleshow.teacher.contract.MineScoreActContract;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/23 10:24
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineScoreActPresenter extends BasePresenter<MineScoreActContract.MineScoreActView> implements MineScoreActContract.Presenter {
+
+    public void musicSheetShare() {
+        getView().showLoading();
+        addSubscribe(create(APIService.class).musicSheetShare(), new BaseObserver<MusicSheetShareBean>(getView()) {
+            @Override
+            protected void onSuccess(MusicSheetShareBean data) {
+                if (getView() != null) {
+                    getView().musicSheetShareSuccess(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());
+                }
+            }
+        });
+    }
+}

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

@@ -55,4 +55,6 @@ public class MineScorePresenter extends BasePresenter<MineScoreContract.MineScor
             }
         });
     }
+
+
 }

+ 322 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/income/MineIncomeActivity.java

@@ -0,0 +1,322 @@
+package com.cooleshow.teacher.ui.income;
+
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.bigkoo.pickerview.builder.TimePickerBuilder;
+import com.bigkoo.pickerview.listener.CustomListener;
+import com.bigkoo.pickerview.view.TimePickerView;
+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.constanst.Constants;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.PopupUtil;
+import com.cooleshow.base.utils.TimeUtils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.IncomeFilterAdapter;
+import com.cooleshow.teacher.adapter.MineIncomeAdapter;
+import com.cooleshow.teacher.bean.AccountDetailBean;
+import com.cooleshow.teacher.bean.CourseFilterStatusBean;
+import com.cooleshow.teacher.bean.IncomeCourseFilterBean;
+import com.cooleshow.teacher.bean.UserAccountBean;
+import com.cooleshow.teacher.constants.CourseConstants;
+import com.cooleshow.teacher.contract.MineIncomeContract;
+import com.cooleshow.teacher.databinding.ActivityMineIncomeBinding;
+import com.cooleshow.teacher.presenter.income.MineIncomePresenter;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/23 14:06
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.IncomeCenter.TEACHER_MINE_INCOME)
+public class MineIncomeActivity extends BaseMVPActivity<ActivityMineIncomeBinding, MineIncomePresenter> implements MineIncomeContract.MineIncomeView, View.OnClickListener {
+    private String currentIncomeFilterStatus = "WITHDRAWAL";
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_right_text:
+                break;
+            case R.id.tv_date:
+                showTimeSelectPicker();
+                break;
+            case R.id.tv_income_type:
+                initPop(viewBinding.tvIncomeType);
+                break;
+            case R.id.tv_withdrawal:
+                ARouter.getInstance().build(RouterPath.IncomeCenter.TEACHER_MINE_WITHDRAWAL)
+                        .navigation();
+                break;
+        }
+
+    }
+
+    private MineIncomeAdapter mineIncomeAdapter;
+    List<UserAccountBean.RowsBean> dataList = new ArrayList<>();
+
+    @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);
+        viewBinding.tvDate.setOnClickListener(this);
+        viewBinding.tvIncomeType.setOnClickListener(this);
+        viewBinding.tvWithdrawal.setOnClickListener(this);
+        RecyclerView rvAddress = viewBinding.recyclerView;
+        LinearLayoutManager manager = new LinearLayoutManager(this);
+        rvAddress.setLayoutManager(manager);
+        mineIncomeAdapter = new MineIncomeAdapter(dataList);
+        LayoutInflater inflater = LayoutInflater.from(this);
+        View emptyLayout = inflater.inflate(R.layout.layout_empty_conent, null);
+        mineIncomeAdapter.setEmptyView(emptyLayout);
+        rvAddress.setAdapter(mineIncomeAdapter);
+        mineIncomeAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+
+            }
+        });
+    }
+
+    @Override
+    protected ActivityMineIncomeBinding getLayoutView() {
+        return ActivityMineIncomeBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineIncomePresenter createPresenter() {
+        return new MineIncomePresenter();
+    }
+
+    private int currentPage;
+
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        presenter.getUserAccountDetail();
+    }
+
+    @Override
+    public void initData() {
+        super.initData();
+        viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+                currentPage = 1;
+                queryList(true);
+            }
+        });
+        mineIncomeAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore() {
+                //上拉加载
+                if (hasNext) {
+                    currentPage++;
+                    queryList(false);
+                } else {
+                    mineIncomeAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        });
+        currentPage = 1;
+
+        buildDefaultStatusFilterList();
+        reBuildFilter(null, "WITHDRAWAL");
+        queryList(true);
+    }
+
+    private ArrayList<IncomeCourseFilterBean> mFilterStatusBeans;
+
+    private void buildDefaultStatusFilterList() {
+        mFilterStatusBeans = new ArrayList<>();
+        mFilterStatusBeans.add(new IncomeCourseFilterBean("WITHDRAWAL", "全部收入"));
+        mFilterStatusBeans.add(new IncomeCourseFilterBean("PRACTICE", "陪练课"));
+        mFilterStatusBeans.add(new IncomeCourseFilterBean("LIVE", "直播课"));
+        mFilterStatusBeans.add(new IncomeCourseFilterBean("VIDEO", "视频课"));
+        mFilterStatusBeans.add(new IncomeCourseFilterBean("MUSIC", "乐谱"));
+
+    }
+
+    private boolean hasNext = true;
+
+    /**
+     * 检查是否还有下一页
+     *
+     * @param dataSize
+     */
+    private void checkHasNext(int dataSize) {
+        hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
+    }
+
+    private void queryList(boolean isLoading) {
+        presenter.userAccountPage(isLoading, currentPage, currentIncomeFilterStatus, currentFilterDate);
+    }
+
+
+    @Override
+    public void userAccountDetailSuccess(AccountDetailBean data) {
+        if (null == data) {
+            return;
+        }
+        viewBinding.tvBalance.setText(data.amountTotal + "");
+    }
+
+    @Override
+    public void userAccountPageSuccess(int page, UserAccountBean data) {
+        if (data != null) {
+            if (page == 1) {
+                dataList.clear();
+                viewBinding.refreshLayout.finishRefresh();
+                if (data.rows != null && data.rows.size() > 0) {
+                    checkHasNext(data.rows.size());
+                    dataList.addAll(data.rows);
+                    mineIncomeAdapter.notifyDataSetChanged();
+                }
+            } else {
+                if (data.rows != null && data.rows.size() > 0) {
+                    mineIncomeAdapter.getLoadMoreModule().loadMoreComplete();
+                    checkHasNext(data.rows.size());
+                } else {
+                    mineIncomeAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        }
+    }
+
+    @Override
+    public void userAccountPageError(int page) {
+        if (page == 1) {
+            viewBinding.refreshLayout.finishRefresh();
+        } else {
+            if (mineIncomeAdapter != null) {
+                currentPage--;
+                mineIncomeAdapter.getLoadMoreModule().loadMoreFail();
+            }
+        }
+    }
+
+    private TimePickerView pvTime;
+
+    private void showTimeSelectPicker() {
+        if (pvTime == null) {
+            pvTime = new TimePickerBuilder(this, (date, v) -> {//选中事件回调
+                reBuildFilter(date, currentIncomeFilterStatus);
+            }).setLayoutRes(com.cooleshow.base.R.layout.pickerview_default_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) {
+                                    pvTime.returnData();
+                                    pvTime.dismiss();
+                                }
+                            });
+                            ivCancel.setOnClickListener(new View.OnClickListener() {
+                                @Override
+                                public void onClick(View v) {
+                                    pvTime.dismiss();
+                                }
+                            });
+
+                        }
+                    })
+                    .setLineSpacingMultiplier(2.5f)
+                    .setType(new boolean[]{true, true, false, false, false, false})// 默认全部显示
+                    .setTextColorCenter(getResources().getColor(com.cooleshow.base.R.color.color_1a1a1a))//设置选中项的颜色
+                    .isDialog(false)//是否显示为对话框样式
+                    .setLabel("年", "月", "", "", "", "")
+                    .build();
+        }
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(currentSelectDate);
+        pvTime.setDate(calendar);
+        if (!pvTime.isShowing()) {
+            pvTime.show();
+        }
+    }
+
+    private Date currentSelectDate;
+    private String currentFilterDate;
+
+    private void reBuildFilter(Date date, String status) {
+        currentSelectDate = date != null ? date : TimeUtils.getNowDate();
+        String targetDateTimeStr = TimeUtils.date2String(currentSelectDate, TimeUtils.getSafeDateFormat("yyyy-MM"));
+        if (TextUtils.equals(targetDateTimeStr, currentFilterDate) && TextUtils.equals(currentIncomeFilterStatus, status)) {
+            //防止重复条件触发
+            return;
+        }
+        currentFilterDate = targetDateTimeStr;
+        currentIncomeFilterStatus = !TextUtils.isEmpty(status) ? status : "WITHDRAWAL";
+        currentPage = 1;
+        viewBinding.tvDate.setText(currentFilterDate);
+        queryList(true);
+    }
+
+    private PopupWindow mPopupWindow;
+    private IncomeFilterAdapter incomeFilterAdapter;
+
+    private void initPop(View targetView) {
+        if (mPopupWindow == null) {
+            View popupContentView = LayoutInflater.from(this).inflate(com.cooleshow.base.R.layout.list_popu_layout, null);
+            RecyclerView recyclerView = popupContentView.findViewById(R.id.recyclerView);
+            View bg = popupContentView.findViewById(com.cooleshow.base.R.id.view);
+            bg.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    if (mPopupWindow != null) {
+                        mPopupWindow.dismiss();
+                    }
+                }
+            });
+            incomeFilterAdapter = new IncomeFilterAdapter(com.cooleshow.base.R.layout.notice_popu_list_item);
+            incomeFilterAdapter.setOnItemClickListener(new OnItemClickListener() {
+                @Override
+                public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                    Object object = incomeFilterAdapter.getData().get(position);
+                    if (object instanceof CourseFilterStatusBean) {
+                        if (incomeFilterAdapter != null) {
+                            incomeFilterAdapter.setSelect(position);
+                        }
+                        CourseFilterStatusBean filterStatusBean = (CourseFilterStatusBean) object;
+                        viewBinding.tvIncomeType.setText(filterStatusBean.showText);
+                        reBuildFilter(currentSelectDate, filterStatusBean.value);
+                    }
+                    mPopupWindow.dismiss();
+                }
+            });
+            recyclerView.setLayoutManager(new LinearLayoutManager(this));
+            recyclerView.setAdapter(incomeFilterAdapter);
+            incomeFilterAdapter.setNewInstance(mFilterStatusBeans);
+            mPopupWindow = PopupUtil.createNoBackPopupWindow(popupContentView, this, ViewGroup.LayoutParams.MATCH_PARENT,
+                    ViewGroup.LayoutParams.WRAP_CONTENT, true);
+        }
+        mPopupWindow.showAsDropDown(targetView);
+    }
+}

+ 87 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/income/WithdrawalActivity.java

@@ -0,0 +1,87 @@
+package com.cooleshow.teacher.ui.income;
+
+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.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.contract.WithdrawalContract;
+import com.cooleshow.teacher.databinding.ActivityWithdrawalBinding;
+import com.cooleshow.teacher.presenter.income.WithdrawalPresenter;
+
+/**
+ * 创建日期:2022/5/23 17:29
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.IncomeCenter.TEACHER_MINE_WITHDRAWAL)
+public class WithdrawalActivity extends BaseMVPActivity<ActivityWithdrawalBinding, WithdrawalPresenter> implements WithdrawalContract.WithdrawalView, View.OnClickListener {
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_right_text:
+                break;
+        }
+    }
+
+    @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);
+    }
+
+    @Override
+    protected ActivityWithdrawalBinding getLayoutView() {
+        return ActivityWithdrawalBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected WithdrawalPresenter createPresenter() {
+        return new WithdrawalPresenter();
+    }
+
+    @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;
+    }
+}

+ 13 - 4
teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt

@@ -35,11 +35,12 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
     override fun initData() {
         mViewBinding.cardMineCourse.setOnClickListener(this)
         mViewBinding.ivUnCertificationTip.setOnClickListener(this)
-        mViewBinding.cardMineIncome.setOnClickListener(this)
         mViewBinding.cardMineAssess.setOnClickListener(this)
         mViewBinding.cardAfterClassAssess.setOnClickListener(this)
         mViewBinding.ivCertificationStatus.setOnClickListener(this)
         mViewBinding.cardMineMusicSheet.setOnClickListener(this)
+        mViewBinding.cardAfterClassHomework.setOnClickListener(this)
+        mViewBinding.cardMineIncome.setOnClickListener(this)
     }
 
     override fun createPresenter(): HomePresenter {
@@ -116,10 +117,10 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
                 ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_COURSE)
                     .navigation()
             }
-            R.id.card_mine_income -> {
+           /* R.id.card_mine_income -> {
                 ARouter.getInstance().build(RouterPath.CourseCenter.SPARRING_COURSE_DETAIL)
                     .navigation()
-            }
+            }*/
             R.id.card_mine_assess -> {
                 ARouter.getInstance().build(RouterPath.CommentCenter.TEACHER_RECEIVED_COMMENT)
                     .navigation()
@@ -134,10 +135,18 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
                     .withString(WebConstants.WEB_URL, WebConstants.TEACHER_CERT)
                     .navigation()
             }
-            R.id.card_mine_music_sheet->{
+            R.id.card_mine_music_sheet -> {
                 ARouter.getInstance().build(RouterPath.ScoreCenter.TEACHER_MINE_SCORE)
                     .navigation()
             }
+            R.id.card_after_class_homework -> {
+                ARouter.getInstance().build(RouterPath.WorkCenter.TEACHER_WORK_HOMEWORK)
+                    .navigation()
+            }
+            R.id.card_mine_income -> {
+                ARouter.getInstance().build(RouterPath.IncomeCenter.TEACHER_MINE_INCOME)
+                    .navigation()
+            }
         }
     }
 

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

@@ -60,12 +60,12 @@ public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPrese
         mHomeFragment = new HomeFragment();
         CourseTableFragment courseTableFragment = new CourseTableFragment();
         MessageFragment messageFragment = new MessageFragment();
-        HomeFragment homeFragment3 = new HomeFragment();
+        ShopMallFragment shopMallFragment = new ShopMallFragment();
         mMineFragment = new MineFragment();
         mFragments.add(mHomeFragment);
         mFragments.add(courseTableFragment);
         mFragments.add(messageFragment);
-        mFragments.add(homeFragment3);
+        mFragments.add(shopMallFragment);
         mFragments.add(mMineFragment);
         homePageAdapter.setFragments(mFragments);
         getViewBinding().viewPager.setAdapter(homePageAdapter);

+ 165 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/main/ShopMallFragment.java

@@ -0,0 +1,165 @@
+package com.cooleshow.teacher.ui.main;
+
+import android.os.Build;
+import android.view.View;
+import android.webkit.GeolocationPermissions;
+import android.webkit.WebChromeClient;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.widget.FrameLayout;
+
+import com.cooleshow.base.BuildConfig;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.base.utils.LogUtils;
+import com.cooleshow.base.widgets.LollipopFixedWebView;
+import com.cooleshow.base.widgets.WebClient;
+import com.cooleshow.teacher.databinding.FragmentShopmalBinding;
+import com.cooleshow.teacher.presenter.main.ShopMallPresenter;
+import com.cooleshow.usercenter.helper.UserHelper;
+
+/**
+ * 创建日期:2022/5/23 15:59
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class ShopMallFragment extends BaseMVPFragment<FragmentShopmalBinding, ShopMallPresenter> {
+    private WebView webView;
+    private String url;
+    private WebClient mWebClient;
+    @Override
+    protected FragmentShopmalBinding getLayoutView() {
+        return FragmentShopmalBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected ShopMallPresenter createPresenter() {
+        return new ShopMallPresenter();
+    }
+
+    @Override
+    protected void initView(View rootView) {
+        try {
+            if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT < 23) {
+                webView = new LollipopFixedWebView(getContext());
+            } else {
+                webView = new WebView(getContext());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        if (null == webView) {
+
+            return;
+        }
+        url = WebConstants.TEACHER_SHOPMALL;
+
+        mViewBinding.viewParent.addView(webView, new FrameLayout.LayoutParams(
+                FrameLayout.LayoutParams.MATCH_PARENT,
+                FrameLayout.LayoutParams.MATCH_PARENT));
+        initWebView();
+        mWebClient = new WebClient();
+        webView.setWebViewClient(mWebClient);
+        webView.setWebChromeClient(new MyWebChromeClient());
+        loadUrl();
+    }
+    private void loadUrl() {
+        String userToken = UserHelper.getUserToken();
+        mWebClient.setAuthorization(userToken);
+        boolean status = url.contains("?");
+        if (status) {
+            url = (url + "&Authorization=" + userToken);
+        } else {
+            url = (url + "?Authorization=" + userToken);
+        }
+        webView.loadUrl(url);
+    }
+
+    private void initWebView() {
+        //声明WebSettings子类
+        WebSettings webSettings = webView.getSettings();
+        webSettings.setUserAgentString(webSettings.getUserAgentString() + WebConstants.WEB_UA_PARAMS);
+        webSettings.setGeolocationDatabasePath(getActivity().getApplicationContext().getFilesDir().getPath());
+        webSettings.setGeolocationEnabled(true);
+        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
+        //如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
+        webSettings.setJavaScriptEnabled(true);
+        webSettings.setMediaPlaybackRequiresUserGesture(false);//false允许自动播放音视频
+        //是否启用缓存
+        webSettings.setAppCacheEnabled(true);
+
+        // 开启DOM缓存,默认状态下是不支持LocalStorage的
+        webSettings.setDomStorageEnabled(true);
+        // 开启数据库缓存
+        webSettings.setDatabaseEnabled(true);
+        // 地址跨域导致视频预览图片加载不出来 无法播放:
+        webSettings.setAllowUniversalAccessFromFileURLs(false);
+        webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
+
+        //设置自适应屏幕,两者合用
+        webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小
+        webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
+        //缩放操作
+        webSettings.setSupportZoom(false); //支持缩放,默认为true。是下面那个的前提。
+        // 设置允许JS弹窗
+        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
+        //其他细节操作
+        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); //关闭webview中缓存
+        webSettings.setAllowFileAccess(true); //设置可以访问文件
+        webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
+        webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
+        webSettings.setDefaultTextEncodingName("UTF-8");//设置编码格式
+
+        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);  //富文本适配
+        webSettings.setAppCacheMaxSize(Long.MAX_VALUE);
+        webSettings.setAppCachePath(getContext().getDir("appcache", 0).getPath());
+        webSettings.setDatabasePath(getContext().getDir("databases", 0).getPath());
+        webSettings.setGeolocationDatabasePath(getContext().getDir("geolocation", 0)
+                .getPath());
+        webSettings.setPluginState(WebSettings.PluginState.ON_DEMAND);
+        if (BuildConfig.DEBUG) {
+            webView.setWebContentsDebuggingEnabled(true);
+        }
+        webSettings.setTextZoom(100);//设置字体默认的缩放比例,以避免手机系统的字体修改对页面字体及布局造成影响。
+        webView.setHorizontalScrollBarEnabled(false);
+        webView.setVerticalScrollBarEnabled(false);
+        webView.setDownloadListener((url, userAgent, contentDisposition, mimetype, contentLength) -> {
+//            downloadFile(url);
+        });
+    }
+
+
+    private class MyWebChromeClient extends WebChromeClient {
+        public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
+            callback.invoke(origin, true, false);
+        }
+
+        @Override
+        public void onProgressChanged(WebView view, int newProgress) {
+            LogUtils.e(newProgress + "");
+            if (newProgress == 100 && null != mViewBinding.progressBar) {
+                mViewBinding.progressBar.setVisibility(View.GONE);//加载完网页进度条消失
+            } else {
+                if (null != mViewBinding.progressBar) {
+                    mViewBinding.progressBar.setVisibility(View.VISIBLE);//开始加载网页时显示进度条
+                    mViewBinding.progressBar.setProgress(newProgress);//设置进度值
+                }
+
+            }
+        }
+
+        @Override
+        public void onReceivedTitle(WebView view, String title) {
+            super.onReceivedTitle(view, title);
+
+
+        }
+
+    }
+
+    @Override
+    protected void initData() {
+
+    }
+}

+ 21 - 3
teacher/src/main/java/com/cooleshow/teacher/ui/score/MineScoreActivity.java

@@ -1,7 +1,9 @@
 package com.cooleshow.teacher.ui.score;
 
 import android.os.Bundle;
+import android.util.Log;
 import android.view.View;
+import android.widget.ImageView;
 
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
@@ -10,8 +12,12 @@ 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.R;
 import com.cooleshow.teacher.adapter.MineLiveCoursePagerAdapter;
+import com.cooleshow.teacher.bean.MusicSheetShareBean;
+import com.cooleshow.teacher.contract.MineScoreActContract;
 import com.cooleshow.teacher.databinding.ActivityMineScoreBinding;
+import com.cooleshow.teacher.presenter.score.MineScoreActPresenter;
 import com.cooleshow.teacher.presenter.score.MineScorePresenter;
 import com.google.android.material.tabs.TabLayout;
 
@@ -28,9 +34,14 @@ import io.rong.imkit.utils.StatusBarUtil;
  * 类说明:
  */
 @Route(path = RouterPath.ScoreCenter.TEACHER_MINE_SCORE)
-public class MineScoreActivity extends BaseMVPActivity<ActivityMineScoreBinding, MineScorePresenter> implements View.OnClickListener {
+public class MineScoreActivity extends BaseMVPActivity<ActivityMineScoreBinding, MineScoreActPresenter> implements MineScoreActContract.MineScoreActView, View.OnClickListener {
     @Override
     public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_right:
+                presenter.musicSheetShare();
+                break;
+        }
 
     }
 
@@ -40,6 +51,9 @@ public class MineScoreActivity extends BaseMVPActivity<ActivityMineScoreBinding,
     @Override
     protected void initView() {
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "我的曲谱");
+        viewBinding.toolbarInclude.tvRight.setBackgroundResource(R.drawable.icon_toolbar_share);
+        viewBinding.toolbarInclude.tvRight.setVisibility(View.VISIBLE);
+        viewBinding.toolbarInclude.tvRight.setOnClickListener(this);
         tabLayout = viewBinding.tablayout;
         viewPager = viewBinding.viewpager;
         viewPager.setCurrentItem(0);
@@ -63,8 +77,8 @@ public class MineScoreActivity extends BaseMVPActivity<ActivityMineScoreBinding,
     }
 
     @Override
-    protected MineScorePresenter createPresenter() {
-        return new MineScorePresenter();
+    protected MineScoreActPresenter createPresenter() {
+        return new MineScoreActPresenter();
     }
 
     private List<String> titles = new ArrayList<String>(Arrays.asList("已上架", "审核中", "审核失败"));
@@ -83,4 +97,8 @@ public class MineScoreActivity extends BaseMVPActivity<ActivityMineScoreBinding,
         tabLayout.setupWithViewPager(viewPager);
     }
 
+    @Override
+    public void musicSheetShareSuccess(MusicSheetShareBean data) {
+        Log.e("asjhkasdfs", "musicSheetShareSuccess: " );
+    }
 }

+ 9 - 18
teacher/src/main/java/com/cooleshow/teacher/ui/score/MineScoreFragment.java

@@ -3,27 +3,23 @@ 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.base.utils.helper.WebStartHelper;
 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;
 
@@ -41,12 +37,8 @@ public class MineScoreFragment extends BaseMVPFragment<FragmentMineScoreBinding,
     @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();
-
+            case R.id.ll_upload_score:
+                WebStartHelper.startUploadSheetMusicPage();
                 break;
         }
     }
@@ -77,13 +69,12 @@ public class MineScoreFragment extends BaseMVPFragment<FragmentMineScoreBinding,
     protected void initView(View rootView) {
         auditStatus = getArguments().getString("auditStatus");
         RecyclerView rvAddress = mViewBinding.recyclerView;
+        mViewBinding.llUploadScore.setOnClickListener(this);
         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);
+        View emptyLayout = inflater.inflate(R.layout.layout_empty_conent, null);
         mineScoreAdapter.setEmptyView(emptyLayout);
         rvAddress.setAdapter(mineScoreAdapter);
         mineScoreAdapter.setOnItemClickListener(new OnItemClickListener() {
@@ -103,7 +94,7 @@ public class MineScoreFragment extends BaseMVPFragment<FragmentMineScoreBinding,
             @Override
             public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                 currentPage = 1;
-                queryCourse(true);
+                queryScore(true);
             }
         });
         mineScoreAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -112,14 +103,14 @@ public class MineScoreFragment extends BaseMVPFragment<FragmentMineScoreBinding,
                 //上拉加载
                 if (hasNext) {
                     currentPage++;
-                    queryCourse(false);
+                    queryScore(false);
                 } else {
                     mineScoreAdapter.getLoadMoreModule().loadMoreEnd();
                 }
             }
         });
         currentPage = 1;
-        queryCourse(true);
+        queryScore(true);
     }
 
     private boolean hasNext = true;
@@ -133,7 +124,7 @@ public class MineScoreFragment extends BaseMVPFragment<FragmentMineScoreBinding,
         hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
     }
 
-    private void queryCourse(boolean isLoading) {
+    private void queryScore(boolean isLoading) {
         presenter.queryPageCourseGroup(isLoading, currentPage, auditStatus);
     }
 

+ 87 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/work/HomeWorkActivity.java

@@ -0,0 +1,87 @@
+package com.cooleshow.teacher.ui.work;
+
+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.HomeWorkPagerAdapter;
+import com.cooleshow.teacher.adapter.MineLiveCoursePagerAdapter;
+import com.cooleshow.teacher.contract.HomeWorkActContract;
+import com.cooleshow.teacher.databinding.ActivityHomeworkBinding;
+import com.cooleshow.teacher.presenter.homework.HomeWorkActPresenter;
+import com.cooleshow.teacher.ui.score.MineScoreFragment;
+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/23 10:47
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.WorkCenter.TEACHER_WORK_HOMEWORK)
+public class HomeWorkActivity extends BaseMVPActivity<ActivityHomeworkBinding, HomeWorkActPresenter> implements HomeWorkActContract.HomeWorkActView, View.OnClickListener {
+    @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, "课后作业");
+        tabLayout = viewBinding.tablayout;
+        viewPager = viewBinding.viewpager;
+        viewPager.setCurrentItem(0);
+    }
+
+    @Override
+    protected ActivityHomeworkBinding getLayoutView() {
+        return ActivityHomeworkBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    public void onClick(View view) {
+
+    }
+
+    @Override
+    protected HomeWorkActPresenter createPresenter() {
+        return new HomeWorkActPresenter();
+    }
+    @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("NO", "YES"));
+    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 = HomeWorkFragment.newInstance(auditStatusList.get(i));
+            fragments.add(adFragment);
+        }
+        viewPager.setAdapter(new HomeWorkPagerAdapter(getSupportFragmentManager(), fragments, titles));
+        tabLayout.setupWithViewPager(viewPager);
+    }
+
+}

+ 237 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/work/HomeWorkFragment.java

@@ -0,0 +1,237 @@
+package com.cooleshow.teacher.ui.work;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+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.bigkoo.pickerview.builder.TimePickerBuilder;
+import com.bigkoo.pickerview.listener.CustomListener;
+import com.bigkoo.pickerview.view.TimePickerView;
+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.constanst.Constants;
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.base.utils.TimeUtils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.HomeworkAdapter;
+import com.cooleshow.teacher.bean.HomeworkListBean;
+import com.cooleshow.teacher.constants.CourseConstants;
+import com.cooleshow.teacher.contract.HomeWorkContract;
+import com.cooleshow.teacher.databinding.FragmentHomeworkBinding;
+import com.cooleshow.teacher.presenter.homework.HomeWorkPresenter;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/23 10:54
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeWorkFragment extends BaseMVPFragment<FragmentHomeworkBinding, HomeWorkPresenter> implements HomeWorkContract.HomeWorkView, View.OnClickListener {
+
+    public static HomeWorkFragment newInstance(String decorate) {
+        Bundle args = new Bundle();
+        HomeWorkFragment fragment = new HomeWorkFragment();
+        args.putString("decorate", decorate);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()){
+            case R.id.tv_date:
+                showTimeSelectPicker();
+                break;
+        }
+    }
+
+    @Override
+    protected FragmentHomeworkBinding getLayoutView() {
+        return FragmentHomeworkBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected HomeWorkPresenter createPresenter() {
+        return new HomeWorkPresenter();
+    }
+
+    private String decorate = "";
+    private HomeworkAdapter homeworkAdapter;
+    List<HomeworkListBean.RowsBean> dataList = new ArrayList<>();
+
+    @Override
+    protected void initView(View rootView) {
+        decorate = getArguments().getString("decorate");
+        mViewBinding.tvDate.setOnClickListener(this);
+        RecyclerView rvAddress = mViewBinding.recyclerView;
+        LinearLayoutManager manager = new LinearLayoutManager(getContext());
+        rvAddress.setLayoutManager(manager);
+        homeworkAdapter = new HomeworkAdapter(dataList);
+        LayoutInflater inflater = LayoutInflater.from(getContext());
+        View emptyLayout = inflater.inflate(R.layout.layout_empty_conent, null);
+        homeworkAdapter.setEmptyView(emptyLayout);
+        rvAddress.setAdapter(homeworkAdapter);
+        homeworkAdapter.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);
+            }
+        });
+        homeworkAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore() {
+                //上拉加载
+                if (hasNext) {
+                    currentPage++;
+                    queryCourse(false);
+                } else {
+                    homeworkAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        });
+        currentPage = 1;
+        reBuildFilter(null);
+        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.queryHomeworkList(isLoading, currentPage, decorate, currentFilterDate);
+    }
+
+    @Override
+    public void queryHomeworkListSuccess(int page, HomeworkListBean 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);
+                    homeworkAdapter.notifyDataSetChanged();
+                }
+            } else {
+                if (data.rows != null && data.rows.size() > 0) {
+                    homeworkAdapter.getLoadMoreModule().loadMoreComplete();
+                    checkHasNext(data.rows.size());
+                } else {
+                    homeworkAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        }
+
+    }
+
+    @Override
+    public void queryHomeworkListError(int page) {
+        if (isDetached()) {
+            return;
+        }
+        if (page == 1) {
+            mViewBinding.refreshLayout.finishRefresh();
+        } else {
+            if (homeworkAdapter != null) {
+                currentPage--;
+                homeworkAdapter.getLoadMoreModule().loadMoreFail();
+            }
+        }
+    }
+
+    private TimePickerView pvTime;
+
+    private void showTimeSelectPicker() {
+        if (pvTime == null) {
+            pvTime = new TimePickerBuilder(requireContext(), (date, v) -> {//选中事件回调
+                reBuildFilter(date);
+            }).setLayoutRes(com.cooleshow.base.R.layout.pickerview_default_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) {
+                                    pvTime.returnData();
+                                    pvTime.dismiss();
+                                }
+                            });
+                            ivCancel.setOnClickListener(new View.OnClickListener() {
+                                @Override
+                                public void onClick(View v) {
+                                    pvTime.dismiss();
+                                }
+                            });
+
+                        }
+                    })
+                    .setLineSpacingMultiplier(2.5f)
+                    .setType(new boolean[]{true, true, false, false, false, false})// 默认全部显示
+                    .setTextColorCenter(getResources().getColor(com.cooleshow.base.R.color.color_1a1a1a))//设置选中项的颜色
+                    .isDialog(false)//是否显示为对话框样式
+                    .setLabel("年", "月", "", "", "", "")
+                    .build();
+        }
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(currentSelectDate);
+        pvTime.setDate(calendar);
+        if (!pvTime.isShowing()) {
+            pvTime.show();
+        }
+    }
+    private Date currentSelectDate;
+    private String currentFilterDate;
+    private void reBuildFilter(Date date) {
+        currentSelectDate = date != null ? date : TimeUtils.getNowDate();
+        String targetDateTimeStr = TimeUtils.date2String(currentSelectDate, TimeUtils.getSafeDateFormat("yyyy-MM"));
+        if (TextUtils.equals(targetDateTimeStr, currentFilterDate)) {
+            //防止重复条件触发
+            return;
+        }
+        currentFilterDate = targetDateTimeStr;
+        currentPage = 1;
+        mViewBinding.tvDate.setText(currentFilterDate);
+        queryCourse(true);
+    }
+}

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


+ 9 - 0
teacher/src/main/res/drawable/bg_white_border.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/transparent" />
+    <corners
+        android:radius="16dp" />
+    <stroke android:width="1dp" android:color="@color/white"/>
+
+</shape>

+ 10 - 0
teacher/src/main/res/drawable/bg_withdrawal_tips.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/white" />
+    <corners android:radius="10dp" />
+    <gradient
+        android:angle="135"
+        android:endColor="@color/color_fff6ee"
+        android:startColor="@color/color_ffecdd" />
+</shape>

+ 37 - 0
teacher/src/main/res/layout/activity_homework.xml

@@ -0,0 +1,37 @@
+<?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" />
+
+
+
+    <androidx.viewpager.widget.ViewPager
+        android:id="@+id/viewpager"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+</LinearLayout>

+ 103 - 0
teacher/src/main/res/layout/activity_mine_income.xml

@@ -0,0 +1,103 @@
+<?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: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="@dimen/dp_140"
+        android:layout_marginLeft="14dp"
+        android:layout_marginTop="15dp"
+        android:layout_marginRight="12dp"
+        android:background="@drawable/icon_income_top_bg">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="21dp"
+            android:layout_marginTop="40dp"
+            android:text="钱包余额(元)"
+            android:textColor="@color/white"
+            android:textSize="@dimen/sp_15"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+
+        <TextView
+            android:id="@+id/tv_balance"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="21dp"
+            android:layout_marginBottom="40dp"
+            android:text="1,230.00"
+            android:textColor="@color/white"
+            android:textSize="@dimen/sp_30"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent" />
+
+        <TextView
+            android:id="@+id/tv_withdrawal"
+            android:layout_width="@dimen/dp_80"
+            android:layout_height="@dimen/dp_32"
+            android:layout_marginTop="51dp"
+            android:layout_marginRight="22dp"
+            android:background="@drawable/bg_white_border"
+            android:gravity="center"
+            android:text="提现"
+            android:textColor="@color/white"
+            android:textSize="@dimen/sp_16"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <TextView
+            android:id="@+id/tv_date"
+            android:layout_width="wrap_content"
+            android:layout_height="@dimen/dp_50"
+            android:layout_marginLeft="14dp"
+            android:drawableRight="@drawable/icon_arrow_down"
+            android:gravity="center"
+            android:text="2021年9月"
+            android:textColor="@color/black_333"
+            android:textSize="@dimen/sp_14" />
+
+        <TextView
+            android:id="@+id/tv_income_type"
+            android:layout_width="wrap_content"
+            android:layout_height="@dimen/dp_50"
+            android:layout_marginLeft="145dp"
+            android:drawableRight="@drawable/icon_arrow_down"
+            android:gravity="center"
+            android:text="全部收入"
+            android:textColor="@color/black_333"
+            android:textSize="@dimen/sp_14" />
+    </RelativeLayout>
+
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_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>
+
+</LinearLayout>

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

@@ -27,35 +27,7 @@
         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"

+ 1 - 1
teacher/src/main/res/layout/activity_mine_style_page.xml

@@ -205,7 +205,7 @@
             <TextView
                 android:id="@+id/tv_save"
                 android:layout_width="match_parent"
-                android:layout_height="44dp"
+                android:layout_height="@dimen/dp_44"
                 android:layout_marginLeft="27dp"
                 android:layout_marginTop="29dp"
                 android:layout_marginRight="27dp"

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

@@ -0,0 +1,176 @@
+<?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="wrap_content"
+    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="@dimen/dp_117"
+        android:layout_marginStart="14dp"
+        android:layout_marginTop="15dp"
+        android:layout_marginEnd="14dp"
+        android:background="@drawable/bg_white_10dp">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="12dp"
+            android:layout_marginTop="12dp"
+            android:text="到账银行卡"
+            android:textColor="@color/black"
+            android:textSize="@dimen/sp_16"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <ImageView
+            android:layout_width="@dimen/dp_30"
+            android:layout_height="@dimen/dp_30"
+            android:layout_marginLeft="10dp"
+            android:layout_marginTop="49dp"
+            android:background="@drawable/icon_my_bank_card"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/tv_bank_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="47dp"
+            android:layout_marginTop="51dp"
+            android:text="中国工商银行储蓄卡(****1917)"
+            android:textColor="@color/black"
+            android:textSize="@dimen/sp_16"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="2dp"
+            android:text="预计2小时内到账"
+            android:textColor="@color/color_999999"
+            android:textSize="@dimen/sp_14"
+            app:layout_constraintLeft_toLeftOf="@+id/tv_bank_name"
+            app:layout_constraintTop_toBottomOf="@+id/tv_bank_name" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="14dp"
+        android:layout_marginTop="14dp"
+        android:layout_marginEnd="14dp"
+        android:background="@drawable/bg_white_10dp">
+
+        <TextView
+            android:id="@+id/tv_content_money"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="11dp"
+            android:layout_marginTop="10dp"
+            android:text="提现金额"
+            android:textColor="@color/black"
+            android:textSize="@dimen/sp_16"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/tv_unit"
+            android:layout_width="wrap_content"
+            android:layout_height="@dimen/dp_80"
+            android:gravity="bottom"
+            android:paddingBottom="10dp"
+            android:text="¥"
+            android:textColor="@color/black"
+            android:textSize="@dimen/sp_26"
+            android:textStyle="bold"
+            app:layout_constraintLeft_toLeftOf="@+id/tv_content_money"
+            app:layout_constraintTop_toBottomOf="@+id/tv_content_money" />
+
+
+        <EditText
+            android:id="@+id/et_price"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_80"
+            android:layout_marginLeft="30dp"
+            android:background="@null"
+            android:gravity="bottom"
+            android:inputType="numberDecimal"
+            android:paddingLeft="14dp"
+            android:paddingBottom="10dp"
+            android:text="11111"
+            android:textColor="@color/black"
+            android:textSize="@dimen/sp_32"
+            android:textStyle="bold"
+            app:layout_constraintTop_toBottomOf="@+id/tv_content_money" />
+
+        <View
+            android:id="@+id/view_line"
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:background="@color/color_f2f2f2"
+            app:layout_constraintTop_toBottomOf="@+id/et_price" />
+
+        <TextView
+            android:id="@+id/tv_available_price"
+            android:layout_width="wrap_content"
+            android:layout_height="@dimen/dp_43"
+            android:layout_marginLeft="12dp"
+            android:gravity="center"
+            android:text="可提现余额 ¥400.00"
+            android:textColor="@color/color_999999"
+            android:textSize="@dimen/sp_14"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/view_line" />
+
+        <TextView
+            android:id="@+id/tv_withdrawal_all"
+            android:layout_width="wrap_content"
+            android:layout_height="@dimen/dp_43"
+            android:layout_marginRight="10dp"
+            android:gravity="center"
+            android:text="全部提现"
+            android:textColor="@color/color_2dc7aa"
+            android:textSize="@dimen/sp_14"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/view_line" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_37"
+        android:layout_marginLeft="14dp"
+        android:layout_marginTop="12dp"
+        android:layout_marginRight="14dp"
+        android:background="@drawable/bg_withdrawal_tips"
+        android:gravity="center_vertical"
+        android:paddingLeft="11dp"
+        android:text="单次收入提现时,平台将收取2元手续费"
+        android:textColor="@color/color_e0945a" />
+
+    <TextView
+        android:id="@+id/tv_confirm_withdrawal"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_44"
+        android:layout_marginLeft="28dp"
+        android:layout_marginTop="29dp"
+        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>

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

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/tv_date"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/dp_50"
+        android:layout_marginLeft="14dp"
+        android:drawableRight="@drawable/icon_arrow_down"
+        android:gravity="center"
+        android:text="2021年9月"
+        android:textColor="@color/black_333"
+        android:textSize="@dimen/sp_14" />
+
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_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>
+</LinearLayout>

+ 33 - 6
teacher/src/main/res/layout/fragment_mine_score.xml

@@ -1,16 +1,43 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout 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">
+    android:orientation="vertical">
+    <LinearLayout
+        android:id="@+id/ll_upload_score"
+        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>
 
     <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">
+        android:layout_height="match_parent">
 
         <com.scwang.smart.refresh.header.ClassicsHeader
             android:layout_width="match_parent"
@@ -23,4 +50,4 @@
             android:overScrollMode="never"
             android:scrollbars="none" />
     </com.scwang.smart.refresh.layout.SmartRefreshLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
+</LinearLayout>

+ 45 - 0
teacher/src/main/res/layout/fragment_shopmal.xml

@@ -0,0 +1,45 @@
+<?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:id="@+id/rl_activity_html"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+    <View
+        android:id="@+id/view_status_bar"
+        android:layout_width="match_parent"
+        android:layout_height="20dp"
+        app:layout_constrainedHeight="true"
+        android:background="@color/color_59e5d5"
+        app:layout_constraintHeight_default="wrap"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <LinearLayout
+        android:id="@+id/ll_activity_html"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <View
+            android:id="@+id/view_statusbar"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:background="@color/white"
+            android:visibility="gone" />
+
+        <ProgressBar
+            android:id="@+id/progressBar"
+            style="?android:attr/progressBarStyleHorizontal"
+            android:layout_width="match_parent"
+            android:layout_height="2dip"
+            android:progressDrawable="@drawable/pg_stu" />
+    </LinearLayout>
+
+    <FrameLayout
+        android:id="@+id/view_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@+id/ll_activity_html"
+        android:scrollbars="none" />
+</LinearLayout>

+ 30 - 0
teacher/src/main/res/layout/layout_empty_conent.xml

@@ -0,0 +1,30 @@
+<?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_content"
+        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" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 99 - 0
teacher/src/main/res/layout/layout_item_homework.xml

@@ -0,0 +1,99 @@
+<?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_clock"
+            android:layout_width="@dimen/dp_16"
+            android:layout_height="@dimen/dp_16"
+            android:layout_marginLeft="11dp"
+            android:background="@drawable/icon_clock"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <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~15:00"
+            android:textColor="@color/color_666666"
+            android:textSize="@dimen/sp_13"
+            app:layout_constraintBottom_toBottomOf="@+id/im_clock"
+            app:layout_constraintLeft_toRightOf="@+id/im_clock"
+            app:layout_constraintTop_toTopOf="@+id/im_clock" />
+
+        <TextView
+            android:id="@+id/tv_state"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="11dp"
+            android:text="已结束"
+            android:textColor="@color/color_999999"
+            android:textSize="@dimen/sp_14"
+            app:layout_constraintBottom_toBottomOf="@+id/im_clock"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="@+id/im_clock" />
+
+        <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_constraintTop_toBottomOf="@+id/im_clock" />
+
+        <com.cooleshow.base.widgets.QMUIRadiusImageView
+            android:id="@+id/im_header"
+            android:layout_width="@dimen/dp_47"
+            android:layout_height="@dimen/dp_51"
+            android:layout_marginLeft="11dp"
+            android:layout_marginTop="17dp"
+            android:layout_marginBottom="20dp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/view_line"
+            app:qmui_corner_radius="5dp" />
+
+        <TextView
+            android:id="@+id/tv_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="10dp"
+            android:text="张豆豆"
+            android:textColor="@color/color_1a1a1a"
+            android:textSize="@dimen/sp_16"
+            app:layout_constraintLeft_toRightOf="@+id/im_header"
+            app:layout_constraintTop_toTopOf="@+id/im_header" />
+
+        <ImageView
+            android:layout_width="@dimen/dp_19"
+            android:layout_height="@dimen/dp_18"
+            android:layout_marginLeft="5dp"
+            android:background="@drawable/icon_chat_small"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_name"
+            app:layout_constraintLeft_toRightOf="@+id/tv_name"
+            app:layout_constraintTop_toTopOf="@+id/tv_name" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/rv_mark"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="10dp"
+            android:visibility="gone"
+            app:layout_constraintBottom_toBottomOf="@+id/im_header"
+            app:layout_constraintLeft_toRightOf="@+id/im_header" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</RelativeLayout>

+ 22 - 0
teacher/src/main/res/layout/layout_mark_item.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+
+    <TextView
+        android:id="@+id/tv_content"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="@drawable/shape_couse_type_text_bg"
+        android:paddingLeft="4dp"
+        android:paddingTop="2dp"
+        android:paddingRight="4dp"
+        android:layout_marginRight="6dp"
+        android:paddingBottom="2dp"
+        android:text="--"
+        android:textColor="@color/color_ff8c00"
+        android:textSize="@dimen/sp_11"
+
+        />
+
+</RelativeLayout>

+ 85 - 0
teacher/src/main/res/layout/layout_mine_income_item.xml

@@ -0,0 +1,85 @@
+<?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="wrap_content"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/tv_time"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="14dp"
+        android:layout_marginTop="11dp"
+        android:text="--"
+        android:textColor="@color/color_999999"
+        android:textSize="@dimen/sp_14"
+        android:visibility="gone" />
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_82"
+        android:layout_marginLeft="14dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginRight="14dp"
+        android:layout_marginBottom="2dp"
+        android:background="@drawable/bg_white_10dp">
+
+        <ImageView
+            android:id="@+id/im_state"
+            android:layout_width="@dimen/dp_42"
+            android:layout_height="@dimen/dp_42"
+            android:layout_marginLeft="13dp"
+            android:background="@drawable/icon_item_practice"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/tv_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="13dp"
+            android:text="李晓明"
+            android:textColor="@color/color_1a1a1a"
+            android:textSize="@dimen/sp_16"
+            app:layout_constraintLeft_toRightOf="@+id/im_state"
+            app:layout_constraintTop_toTopOf="@+id/im_state" />
+
+
+        <ImageView
+            android:id="@+id/im_clock"
+            android:layout_width="@dimen/dp_16"
+            android:layout_height="@dimen/dp_16"
+            android:layout_marginLeft="13dp"
+            android:background="@drawable/icon_clock"
+            app:layout_constraintBottom_toBottomOf="@+id/im_state"
+            app:layout_constraintLeft_toRightOf="@+id/im_state" />
+
+        <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_clock"
+            app:layout_constraintLeft_toRightOf="@+id/im_clock"
+            app:layout_constraintTop_toTopOf="@+id/im_clock" />
+
+
+        <TextView
+            android:id="@+id/tv_price"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="18dp"
+            android:layout_marginRight="13dp"
+            android:text="¥20"
+            android:textColor="@color/color_ff4e19"
+            android:textSize="@dimen/sp_18"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</LinearLayout>

+ 6 - 1
teacher/src/main/res/layout/layout_mine_score_item.xml

@@ -23,6 +23,7 @@
             app:layout_constraintTop_toTopOf="parent" />
 
         <TextView
+            android:id="@+id/tv_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginLeft="14dp"
@@ -34,6 +35,7 @@
             app:layout_constraintTop_toTopOf="@+id/im_music_mark" />
 
         <TextView
+            android:id="@+id/tv_author_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginLeft="14dp"
@@ -43,6 +45,7 @@
 
 
         <ImageView
+            android:id="@+id/im_state"
             android:layout_width="@dimen/dp_55"
             android:layout_height="@dimen/dp_22"
             android:layout_marginRight="12dp"
@@ -88,9 +91,11 @@
             app:layout_constraintTop_toTopOf="@+id/im_header" />
 
         <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/rv_"
+            android:id="@+id/rv_mark"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_marginLeft="8dp"
+            android:visibility="gone"
             app:layout_constraintBottom_toBottomOf="@+id/tv_teacher_name"
             app:layout_constraintLeft_toRightOf="@+id/tv_teacher_name"
             app:layout_constraintTop_toTopOf="@+id/tv_teacher_name" />