Sfoglia il codice sorgente

1,提现页面接口调用,数据显示、 提现成功、提现记录
2.消息盒子 我的乐谱,分享
3.引导页

Ryan8057 3 anni fa
parent
commit
6e4862fd94
100 ha cambiato i file con 2102 aggiunte e 30 eliminazioni
  1. 16 1
      BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt
  2. 9 0
      BaseLibrary/src/main/res/values/colors.xml
  3. 17 1
      teacher/src/main/AndroidManifest.xml
  4. 3 4
      teacher/src/main/java/com/cooleshow/teacher/adapter/IncomeFilterAdapter.java
  5. 110 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MessageBoxAdapter.java
  6. 32 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/ScoreShareListAdapter.java
  7. 56 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/ViewPagerAdapter.java
  8. 44 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/WithdrawalFilterAdapter.java
  9. 68 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/WithdrawalRecordAdapter.java
  10. 70 2
      teacher/src/main/java/com/cooleshow/teacher/api/APIService.java
  11. 2 2
      teacher/src/main/java/com/cooleshow/teacher/bean/IncomeFilterBean.java
  12. 59 0
      teacher/src/main/java/com/cooleshow/teacher/bean/SystemMessageBean.java
  13. 17 0
      teacher/src/main/java/com/cooleshow/teacher/bean/WithdrawalFilterBean.java
  14. 46 0
      teacher/src/main/java/com/cooleshow/teacher/bean/WithdrawalInfoBean.java
  15. 64 0
      teacher/src/main/java/com/cooleshow/teacher/bean/WithdrawalRecordBean.java
  16. 3 0
      teacher/src/main/java/com/cooleshow/teacher/contract/BindBankCardContract.java
  17. 17 0
      teacher/src/main/java/com/cooleshow/teacher/contract/GuideContract.java
  18. 22 0
      teacher/src/main/java/com/cooleshow/teacher/contract/MessageBoxContract.java
  19. 3 0
      teacher/src/main/java/com/cooleshow/teacher/contract/MyBankCardContract.java
  20. 4 0
      teacher/src/main/java/com/cooleshow/teacher/contract/WithdrawalContract.java
  21. 20 0
      teacher/src/main/java/com/cooleshow/teacher/contract/WithdrawalRecordContract.java
  22. 18 0
      teacher/src/main/java/com/cooleshow/teacher/contract/WithdrawalSuccessContract.java
  23. 2 2
      teacher/src/main/java/com/cooleshow/teacher/presenter/homework/HomeWorkPresenter.java
  24. 74 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/income/WithdrawalPresenter.java
  25. 58 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/income/WithdrawalRecordPresenter.java
  26. 13 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/income/WithdrawalSuccessPresenter.java
  27. 110 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/message/MessageBoxPresenter.java
  28. 32 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/mine/MyBankCardPresenter.java
  29. 15 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/splash/GuidePresenter.java
  30. 16 8
      teacher/src/main/java/com/cooleshow/teacher/ui/income/MineIncomeActivity.java
  31. 49 1
      teacher/src/main/java/com/cooleshow/teacher/ui/income/WithdrawalActivity.java
  32. 298 0
      teacher/src/main/java/com/cooleshow/teacher/ui/income/WithdrawalRecordActivity.java
  33. 54 0
      teacher/src/main/java/com/cooleshow/teacher/ui/income/WithdrawalSuccessActivity.java
  34. 9 4
      teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt
  35. 7 0
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java
  36. 225 0
      teacher/src/main/java/com/cooleshow/teacher/ui/message/MessageBoxActivity.java
  37. 29 2
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/MyBankCardActivity.java
  38. 1 2
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/PersonalSettingActivity.java
  39. 16 1
      teacher/src/main/java/com/cooleshow/teacher/ui/score/MineScoreActivity.java
  40. 131 0
      teacher/src/main/java/com/cooleshow/teacher/ui/splash/GuideActivity.java
  41. 4 0
      teacher/src/main/java/com/cooleshow/teacher/ui/splash/SplashActivity.kt
  42. 109 0
      teacher/src/main/java/com/cooleshow/teacher/widgets/DialogUtils.java
  43. 37 0
      teacher/src/main/java/com/cooleshow/teacher/widgets/MyViewPage.java
  44. 39 0
      teacher/src/main/res/anim/modal_in.xml
  45. 18 0
      teacher/src/main/res/anim/modal_out.xml
  46. 7 0
      teacher/src/main/res/anim/slide_in_left.xml
  47. 8 0
      teacher/src/main/res/anim/slide_in_right.xml
  48. BIN
      teacher/src/main/res/drawable-xhdpi/bg_message_list_gradient.png
  49. BIN
      teacher/src/main/res/drawable-xhdpi/bg_score_share_top1.png
  50. BIN
      teacher/src/main/res/drawable-xhdpi/bg_score_share_top2.png
  51. BIN
      teacher/src/main/res/drawable-xhdpi/icon_guid_center_1.png
  52. BIN
      teacher/src/main/res/drawable-xhdpi/icon_guid_center_2.png
  53. BIN
      teacher/src/main/res/drawable-xhdpi/icon_guid_center_3.png
  54. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_course.png
  55. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_evaluate.png
  56. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_group_chat.png
  57. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_homework.png
  58. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_income.png
  59. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_live.png
  60. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_music_auth.png
  61. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_music_sheet.png
  62. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_practice.png
  63. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_read_all.png
  64. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_tab_all.png
  65. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_tab_course.png
  66. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_tab_system.png
  67. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_teacher_auth.png
  68. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_video.png
  69. BIN
      teacher/src/main/res/drawable-xhdpi/icon_message_vip.png
  70. BIN
      teacher/src/main/res/drawable-xhdpi/icon_share_logo.png
  71. BIN
      teacher/src/main/res/drawable-xhdpi/icon_withdrawal_success.png
  72. BIN
      teacher/src/main/res/drawable-xxhdpi/bg_message_list_gradient.png
  73. BIN
      teacher/src/main/res/drawable-xxhdpi/bg_score_share_top1.png
  74. BIN
      teacher/src/main/res/drawable-xxhdpi/bg_score_share_top2.png
  75. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_guid_center_1.png
  76. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_guid_center_2.png
  77. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_guid_center_3.png
  78. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_course.png
  79. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_evaluate.png
  80. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_group_chat.png
  81. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_homework.png
  82. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_income.png
  83. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_live.png
  84. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_music_auth.png
  85. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_music_sheet.png
  86. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_practice.png
  87. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_read_all.png
  88. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_tab_all.png
  89. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_tab_course.png
  90. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_tab_system.png
  91. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_teacher_auth.png
  92. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_video.png
  93. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_message_vip.png
  94. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_share_logo.png
  95. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_withdrawal_success.png
  96. 8 0
      teacher/src/main/res/drawable/bg_guide_top.xml
  97. 5 0
      teacher/src/main/res/drawable/bg_red_ovil.xml
  98. 12 0
      teacher/src/main/res/drawable/bg_score_share.xml
  99. 10 0
      teacher/src/main/res/drawable/bg_unread_red.xml
  100. 6 0
      teacher/src/main/res/drawable/view_guide_point_normal.xml

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

@@ -13,6 +13,14 @@ object RouterPath {
         }
     }
 
+    //splash
+    class SplashCenter {
+        companion object {
+            const val SPLASH_GUIDE = "/splash/GuideActivity"
+
+        }
+    }
+
     class LiveCenter{
         companion object{
             const val PATH_LIVE ="/com/daya/live_teaching/ui/LiveActivity"
@@ -60,9 +68,16 @@ object RouterPath {
         companion object {
             const val TEACHER_MINE_INCOME = "/teacher/ui/income/MineIncomeActivity"
             const val TEACHER_MINE_WITHDRAWAL = "/teacher/ui/income/WithdrawalActivity"
+            const val TEACHER_MINE_WITHDRAWAL_SUCCESS = "/teacher/ui/income/WithdrawalSuccessActivity"
+            const val TEACHER_MINE_WITHDRAWAL_RECORD = "/teacher/ui/income/WithdrawalRecordActivity"
+        }
+    }
+    //消息模块
+    class MessageCenter {
+        companion object {
+            const val TEACHER_MESSAGE_MESSAGEBOX = "/teacher/ui/message/MessageBoxActivity"
         }
     }
-
     //作业模块
     class WorkCenter {
         companion object {

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

@@ -75,4 +75,13 @@
     <color name="color_e0945a">#E0945A</color>
     <color name="color_fff6ee">#FFF6EE</color>
     <color name="color_ffecdd">#FFECDD</color>
+    <color name="color_ff5c5f">#FF5C5F</color>
+    <color name="color_ff1313">#FF1313</color>
+    <color name="color_7a7a7a">#7A7A7A</color>
+    <color name="color_49eccd">#49ECCD</color>
+    <color name="color_1fb095">#1FB095</color>
+    <color name="color_349784">#349784</color>
+    <color name="color_cefbe3">#CEFBE3</color>
+    <color name="color_9e9e9e">#9E9E9E</color>
+    <color name="color_dcebe4">#DCEBE4</color>
 </resources>

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

@@ -24,7 +24,11 @@
         </activity>
         <activity
             android:name="com.cooleshow.teacher.ui.main.MainActivity"
-            android:exported="false"></activity>
+            android:exported="false"/>
+        <activity
+            android:name=".ui.splash.GuideActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
         <activity
             android:name=".ui.course.MineCourseActivity"
             android:configChanges="orientation|screenSize|keyboardHidden"
@@ -171,6 +175,18 @@
             android:name=".ui.income.WithdrawalActivity"
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.income.WithdrawalSuccessActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.income.WithdrawalRecordActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.message.MessageBoxActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
     </application>
 
 </manifest>

+ 3 - 4
teacher/src/main/java/com/cooleshow/teacher/adapter/IncomeFilterAdapter.java

@@ -7,8 +7,7 @@ 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;
+import com.cooleshow.teacher.bean.IncomeFilterBean;
 
 /**
  * 创建日期:2022/5/23 15:03
@@ -16,7 +15,7 @@ import com.cooleshow.teacher.bean.IncomeCourseFilterBean;
  * @author Ryan
  * 类说明:
  */
-public class IncomeFilterAdapter extends BaseQuickAdapter<IncomeCourseFilterBean, BaseViewHolder> {
+public class IncomeFilterAdapter extends BaseQuickAdapter<IncomeFilterBean, BaseViewHolder> {
     private int selectPosition = -1;
 
     public IncomeFilterAdapter(int layoutResId) {
@@ -24,7 +23,7 @@ public class IncomeFilterAdapter extends BaseQuickAdapter<IncomeCourseFilterBean
     }
 
     @Override
-    protected void convert(@NonNull BaseViewHolder holder, IncomeCourseFilterBean bean) {
+    protected void convert(@NonNull BaseViewHolder holder, IncomeFilterBean bean) {
         holder.setText(R.id.tv_title, bean.showText);
         TextView tv_title = holder.getView(R.id.tv_title);
         if (getItemPosition(bean) == selectPosition) {

+ 110 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MessageBoxAdapter.java

@@ -0,0 +1,110 @@
+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.SystemMessageBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/24 13:50
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MessageBoxAdapter extends BaseQuickAdapter<SystemMessageBean.RowsBean, BaseViewHolder> implements LoadMoreModule {
+
+    public MessageBoxAdapter(List<SystemMessageBean.RowsBean> data) {
+        super(R.layout.layout_message_nox_item, data);
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, SystemMessageBean.RowsBean item) {
+        ImageView im_type = helper.getView(R.id.im_type);
+        TextView tv_title=helper.getView(R.id.tv_title);
+        tv_title.setText(item.title);
+        TextView tv_content=helper.getView(R.id.tv_content);
+        tv_content.setText(item.content);
+        TextView tv_date=helper.getView(R.id.tv_date);
+        tv_date.setText(item.sendTime);
+        View view_unread=helper.getView(R.id.view_unread);
+        if (item.readStatus==0){
+            view_unread.setVisibility(View.VISIBLE);
+        }else {
+            view_unread.setVisibility(View.GONE);
+        }
+        switch (item.subType) {
+            case "TEACHER_AUTH":
+                //老师认证
+                im_type.setBackgroundResource(R.drawable.icon_message_teacher_auth);
+                break;
+            case "MUSICIAN_AUTH":
+                //音乐人认证
+                im_type.setBackgroundResource(R.drawable.icon_message_music_auth);
+                break;
+            case "PRACTICE":
+                //陪练课
+                im_type.setBackgroundResource(R.drawable.icon_message_practice);
+                break;
+            case "LIVE":
+                //直播课
+                im_type.setBackgroundResource(R.drawable.icon_message_live);
+                break;
+            case "VIDEO":
+                //视频课
+                im_type.setBackgroundResource(R.drawable.icon_message_video);
+                break;
+            case "MUSIC_SHEET":
+                //乐谱
+                im_type.setBackgroundResource(R.drawable.icon_message_music_sheet);
+                break;
+            case "COURSE":
+                //课程
+                im_type.setBackgroundResource(R.drawable.icon_message_course);
+                break;
+            case "INCOME":
+                //收入
+                im_type.setBackgroundResource(R.drawable.icon_message_income);
+                break;
+            case "HOMEWORK":
+                //作业
+                im_type.setBackgroundResource(R.drawable.icon_message_homework);
+                break;
+            case "EVALUATE":
+                //评价
+                im_type.setBackgroundResource(R.drawable.icon_message_evaluate);
+                break;
+            case "GROUP_CHAT":
+                //群聊
+                im_type.setBackgroundResource(R.drawable.icon_message_group_chat);
+                break;
+            case "VIP":
+                //会员
+                im_type.setBackgroundResource(R.drawable.icon_message_vip);
+                break;
+            case "NOTICE":
+            default:
+                //公告
+//                im_type.setBackgroundResource(R.drawable.icon_message_notice);
+                //TODO 还差公告的图
+                im_type.setBackgroundResource(R.drawable.icon_message_vip);
+                break;
+        }
+    }
+
+    @NonNull
+    @Override
+    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
+        return new BaseLoadMoreModule(baseQuickAdapter);
+    }
+}

+ 32 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/ScoreShareListAdapter.java

@@ -0,0 +1,32 @@
+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 com.cooleshow.teacher.bean.MusicSheetShareBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/24 16:05
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class ScoreShareListAdapter extends BaseQuickAdapter<MusicSheetShareBean.MusicSheetVoBean, BaseViewHolder> {
+
+    public ScoreShareListAdapter(List<MusicSheetShareBean.MusicSheetVoBean> data) {
+        super(R.layout.layout_score_share_item, data);
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, MusicSheetShareBean.MusicSheetVoBean item) {
+        TextView tv_title=helper.getView(R.id.tv_title);
+        tv_title.setText(item.musicSheetName);
+        TextView tv_author_name=helper.getView(R.id.tv_author_name);
+        tv_author_name.setText(item.composer);
+    }
+}

+ 56 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/ViewPagerAdapter.java

@@ -0,0 +1,56 @@
+package com.cooleshow.teacher.adapter;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.viewpager.widget.PagerAdapter;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/24 18:01
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class ViewPagerAdapter extends PagerAdapter {
+    private List<View> views;
+    private Context context;
+
+    public ViewPagerAdapter(List<View> views, Context context) {
+        super();
+        this.views = views;
+        this.context = context;
+    }
+
+    @Override
+    public int getItemPosition(Object object) {
+        return super.getItemPosition(object);
+    }
+
+    @Override
+    public void destroyItem(ViewGroup container, int position, Object object) {
+        container.removeView(views.get(position));
+    }
+
+    @Override
+    public Object instantiateItem(ViewGroup container, int position) {
+        container.addView(views.get(position));
+        return views.get(position);
+    }
+
+    @Override
+    public int getCount() {
+        // TODO Auto-generated method stub
+        return views.size();
+    }
+
+
+    @Override
+    public boolean isViewFromObject(View view, Object arg1) {
+        // TODO Auto-generated method stub
+        return (view == arg1);
+    }
+
+}

+ 44 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/WithdrawalFilterAdapter.java

@@ -0,0 +1,44 @@
+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.WithdrawalFilterBean;
+
+/**
+ * 创建日期:2022/5/24 10:40
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class WithdrawalFilterAdapter extends BaseQuickAdapter<WithdrawalFilterBean, BaseViewHolder> {
+    private int selectPosition = -1;
+
+    public WithdrawalFilterAdapter(int layoutResId) {
+        super(layoutResId);
+    }
+
+    @Override
+    protected void convert(@NonNull BaseViewHolder holder, WithdrawalFilterBean 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();
+    }
+}

+ 68 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/WithdrawalRecordAdapter.java

@@ -0,0 +1,68 @@
+package com.cooleshow.teacher.adapter;
+
+import android.text.TextUtils;
+import android.view.View;
+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.WithdrawalRecordBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/24 10:27
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class WithdrawalRecordAdapter extends BaseQuickAdapter<WithdrawalRecordBean.RowsBean, BaseViewHolder> implements LoadMoreModule {
+
+    public WithdrawalRecordAdapter(List<WithdrawalRecordBean.RowsBean> data) {
+        super(R.layout.layout_withdrawal_record_item, data);
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, WithdrawalRecordBean.RowsBean item) {
+        TextView tv_bank_card = helper.getView(R.id.tv_bank_card);
+        TextView tv_date = helper.getView(R.id.tv_date);
+        TextView tv_price = helper.getView(R.id.tv_price);
+        TextView tv_state = helper.getView(R.id.tv_state);
+        tv_bank_card.setText(item.bankCard);
+        tv_date.setText(item.createTime);
+        tv_price.setText("¥" + item.amount);
+        // pending、交易处理中 succeeded、交易成功 failed、交易失败 ,可用值:pending,succeeded,failed,close
+        if (!TextUtils.isEmpty(item.status)) {
+            tv_state.setVisibility(View.VISIBLE);
+            switch (item.status) {
+                case "pending":
+                    tv_state.setText("审核中");
+                    tv_state.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_666666));
+                    break;
+                case "succeeded":
+                    tv_state.setText("提现成功");
+                    tv_state.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
+                    break;
+                case "failed":
+                    tv_state.setText("提现失败");
+                    tv_state.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_ff5c5f));
+                    break;
+            }
+        } else {
+            tv_state.setVisibility(View.GONE);
+        }
+
+    }
+
+    @NonNull
+    @Override
+    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
+        return new BaseLoadMoreModule(baseQuickAdapter);
+    }
+}

+ 70 - 2
teacher/src/main/java/com/cooleshow/teacher/api/APIService.java

@@ -19,11 +19,14 @@ import com.cooleshow.teacher.bean.ResponseUserBankCardBean;
 import com.cooleshow.teacher.bean.SparringCourseCommentBean;
 import com.cooleshow.teacher.bean.SparringCourseHomeworkBean;
 import com.cooleshow.teacher.bean.SparringCourseListBean;
+import com.cooleshow.teacher.bean.SystemMessageBean;
 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.teacher.bean.WithdrawalInfoBean;
+import com.cooleshow.teacher.bean.WithdrawalRecordBean;
 import com.cooleshow.usercenter.bean.SetDetailBean;
 import com.cooleshow.usercenter.bean.UserInfo;
 
@@ -325,7 +328,6 @@ public interface APIService {
 
     /**
      * 用户绑卡
-     *
      * @param body
      * @return
      */
@@ -333,6 +335,16 @@ public interface APIService {
     Observable<BaseResponse<ResponseBindCardBean>> bindBankCard(@Body RequestBody body);
 
     /**
+     * 用户解绑银行卡
+     * @param body
+     * @return
+     */
+    @POST(TEACHER_GROUP + "userBankCard/unBind")
+    Observable<BaseResponse<ResponseBindCardBean>> unbindBankCard(@Body RequestBody body);
+
+
+
+    /**
      * 查询银行
      *
      * @return
@@ -360,6 +372,7 @@ public interface APIService {
 
     /**
      * 分页查询分页查询
+     *
      * @param body
      * @return
      */
@@ -368,6 +381,7 @@ public interface APIService {
 
     /**
      * 乐谱分享
+     *
      * @return
      */
     @GET(TEACHER_GROUP + "music/sheet/share")
@@ -375,6 +389,7 @@ public interface APIService {
 
     /**
      * 课后作业
+     *
      * @param body
      * @return
      */
@@ -382,7 +397,8 @@ public interface APIService {
     Observable<BaseResponse<HomeworkListBean>> queryHomeworkList(@Body RequestBody body);
 
     /**
-     *我的收入
+     * 我的收入
+     *
      * @return
      */
     @GET(TEACHER_GROUP + "userAccount/detail")
@@ -390,9 +406,61 @@ public interface APIService {
 
     /**
      * 收入列表
+     *
      * @param body
      * @return
      */
     @POST(TEACHER_GROUP + "userAccount/page")
     Observable<BaseResponse<UserAccountBean>> userAccountPage(@Body RequestBody body);
+
+    /**
+     * 查询提现页面信息
+     *
+     * @return
+     */
+    @POST(TEACHER_GROUP + "userWithdrawal/getWithdrawalInfo")
+    Observable<BaseResponse<WithdrawalInfoBean>> getWithdrawalInfo();
+
+    /**
+     * 发起提现
+     *
+     * @param body
+     * @return
+     */
+    @POST(TEACHER_GROUP + "userWithdrawal/withdrawal")
+    Observable<BaseResponse<Object>> doWithdrawal(@Body RequestBody body);
+
+    /**
+     * 提现记录
+     *
+     * @param body
+     * @return
+     */
+    @POST(TEACHER_GROUP + "userWithdrawal/withdrawalPage")
+    Observable<BaseResponse<WithdrawalRecordBean>> getWithdrawalPage(@Body RequestBody body);
+
+    /**
+     * 获取所有消息列表
+     *
+     * @param body
+     * @return
+     */
+    @POST(TEACHER_GROUP + "sysMessage/list")
+    Observable<BaseResponse<SystemMessageBean>> sysMessageList(@Body RequestBody body);
+
+    /**
+     * 一键已读
+     *
+     * @return
+     */
+    @POST(TEACHER_GROUP + "sysMessage/batchSetRead")
+    Observable<BaseResponse<SystemMessageBean>> batchSetRead();
+
+    /**
+     * 设置已读
+     *
+     * @return
+     */
+    @POST(TEACHER_GROUP + "sysMessage/setRead/{id}")
+    Observable<BaseResponse<Object>> setCurrentRead(@Path("id") long id);
 }

+ 2 - 2
teacher/src/main/java/com/cooleshow/teacher/bean/IncomeCourseFilterBean.java → teacher/src/main/java/com/cooleshow/teacher/bean/IncomeFilterBean.java

@@ -6,11 +6,11 @@ package com.cooleshow.teacher.bean;
  * @author Ryan
  * 类说明:
  */
-public class IncomeCourseFilterBean {
+public class IncomeFilterBean {
     public String value;
     public String showText;
 
-    public IncomeCourseFilterBean(String value,String showText) {
+    public IncomeFilterBean(String value, String showText) {
         this.value = value;
         this.showText = showText;
     }

+ 59 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/SystemMessageBean.java

@@ -0,0 +1,59 @@
+package com.cooleshow.teacher.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/24 13:41
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class SystemMessageBean {
+    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 {
+        /*
+        	"clientId": "",
+				"content": "",
+				"createOn": "",
+				"errorMsg": "",
+				"group": "",
+				"id": 0,
+				"memo": "",
+				"messageConfigId": 0,
+				"modifyOn": "",
+				"readStatus": 0,
+				"receiver": "",
+				"sendTime": "",
+				"status": "",
+				"subType": "",
+				"title": "",
+				"type": "",
+				"userId": 0
+         */
+        public String clientId;
+        public String content;
+        public String createOn;
+        public String errorMsg;
+        public String group;
+        public long id;
+        public String memo;
+        public long messageConfigId;
+        public String modifyOn;
+        public int readStatus;
+        public String receiver;
+        public String sendTime;
+        public String status;
+        public String subType;
+        public String title;
+        public String type;
+        public long userId;
+    }
+}

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

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

+ 46 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/WithdrawalInfoBean.java

@@ -0,0 +1,46 @@
+package com.cooleshow.teacher.bean;
+
+/**
+ * 创建日期:2022/5/24 9:31
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class WithdrawalInfoBean {
+    /*
+    "amountWithdrawal": 0,
+		"userBankCard": {
+			"bankCard": "",
+			"bankCode": "",
+			"bankName": "",
+			"createTime": "",
+			"defaultFlag": true,
+			"delFlag": true,
+			"id": 0,
+			"name": "",
+			"phone": "",
+			"updateTime": "",
+			"userId": 0
+		},
+		"withdrawalServiceFee": 0
+
+     */
+    public double amountWithdrawal;
+    public double withdrawalServiceFee;
+    public UserBankCardBean userBankCard;
+
+    public static class UserBankCardBean {
+        public String bankCard;
+        public String bankCode;
+        public String bankName;
+        public String createTime;
+        public boolean defaultFlag;
+        public boolean delFlag;
+        public int id;
+        public String name;
+        public String phone;
+        public String updateTime;
+        public int userId;
+    }
+
+}

+ 64 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/WithdrawalRecordBean.java

@@ -0,0 +1,64 @@
+package com.cooleshow.teacher.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/24 10:29
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class WithdrawalRecordBean {
+    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 {
+        /**
+         * 	"actualAmount": 0,
+         * 				"amount": 0,
+         * 				"bankCard": "",
+         * 				"bankCardId": 0,
+         * 				"bankName": "",
+         * 				"callbackJson": "",
+         * 				"createTime": "",
+         * 				"errorCode": "",
+         * 				"errorMsg": "",
+         * 				"id": 0,
+         * 				"openType": "",
+         * 				"phone": "",
+         * 				"plantformFee": 0,
+         * 				"status": "",
+         * 				"transNo": "",
+         * 				"transferTime": "",
+         * 				"updateTime": "",
+         * 				"userId": 0,
+         * 				"withdrawaUser": ""
+         *
+         */
+        public double actualAmount;
+        public double amount;
+        public String bankCard;
+        public long bankCardId;
+        public String bankName;
+        public String callbackJson;
+        public String createTime;
+        public String errorCode;
+        public String errorMsg;
+        public long id;
+        public String openType;
+        public String phone;
+        public double plantformFee;
+        public String status;
+        public String transNo;
+        public String transferTime;
+        public String updateTime;
+        public long userId;
+        public String withdrawaUser;
+    }
+}

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

@@ -15,8 +15,11 @@ import java.util.List;
 public interface BindBankCardContract {
     interface BindBankCardView extends BaseView {
         void bindBankCardSuccess(ResponseBindCardBean data);
+
         void userBankCardSuccess(List<ResponseUserBankCardBean> data);
+
     }
+
     interface Presenter {
     }
 }

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

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

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

@@ -0,0 +1,22 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.SystemMessageBean;
+
+/**
+ * 创建日期:2022/5/24 11:52
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface MessageBoxContract {
+    interface MessageBoxView extends BaseView {
+        void sysMessageListSuccess(int page, SystemMessageBean data);
+
+        void sysMessageListError(int page);
+        void setCurrentReadSuccess(long id);
+    }
+
+    interface Presenter {
+    }
+}

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

@@ -2,6 +2,7 @@ package com.cooleshow.teacher.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
 import com.cooleshow.teacher.bean.ResponseBankCardBean;
+import com.cooleshow.teacher.bean.ResponseBindCardBean;
 
 /**
  * 创建日期:2022/5/18 17:41
@@ -12,6 +13,8 @@ import com.cooleshow.teacher.bean.ResponseBankCardBean;
 public interface MyBankCardContract {
     interface MyBankCardView extends BaseView {
         void querySuccess(int page, ResponseBankCardBean data);
+        void unbindBankCardSuccess(ResponseBindCardBean data);
+
     }
     interface Presenter {
     }

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

@@ -1,6 +1,7 @@
 package com.cooleshow.teacher.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.WithdrawalInfoBean;
 
 /**
  * 创建日期:2022/5/23 17:31
@@ -10,6 +11,9 @@ import com.cooleshow.base.presenter.view.BaseView;
  */
 public interface WithdrawalContract {
     interface WithdrawalView extends BaseView {
+        void getWithdrawalInfoSuccess(WithdrawalInfoBean data);
+
+        void doWithdrawalSuccess(Object o);
     }
 
     interface Presenter {

+ 20 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/WithdrawalRecordContract.java

@@ -0,0 +1,20 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.WithdrawalRecordBean;
+
+/**
+ * 创建日期:2022/5/24 10:14
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface WithdrawalRecordContract {
+    interface WithdrawalRecordView extends BaseView {
+        void withdrawalPageSuccess(int page, WithdrawalRecordBean data);
+        void withdrawalPageError(int page);
+    }
+
+    interface Presenter {
+    }
+}

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

@@ -0,0 +1,18 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+
+/**
+ * 创建日期:2022/5/24 9:57
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface WithdrawalSuccessContract {
+    interface WithdrawalSuccessView extends BaseView {
+
+    }
+
+    interface Presenter {
+    }
+}

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

@@ -19,14 +19,14 @@ import org.json.JSONObject;
  * 类说明:
  */
 public class HomeWorkPresenter extends BasePresenter<HomeWorkContract.HomeWorkView> implements HomeWorkContract.Presenter {
-    public void queryHomeworkList(boolean isLoading,int page,String decorate,String selectDate){
+    public void queryHomeworkList(boolean isLoading,int page,String decorate,String date){
         if (isLoading && getView() != null) {
             getView().showLoading();
         }
         JSONObject jsonObject = new JSONObject();
         try {
             jsonObject.put("decorate",decorate);
-            jsonObject.put("selectDate",selectDate);
+            jsonObject.put("date",date);
             jsonObject.putOpt("page", page);
             jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
         } catch (JSONException e) {

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

@@ -1,8 +1,18 @@
 package com.cooleshow.teacher.presenter.income;
 
+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.WithdrawalInfoBean;
 import com.cooleshow.teacher.contract.WithdrawalContract;
 
+import org.json.JSONException;
+import org.json.JSONObject;
+
 /**
  * 创建日期:2022/5/23 17:30
  *
@@ -10,4 +20,68 @@ import com.cooleshow.teacher.contract.WithdrawalContract;
  * 类说明:
  */
 public class WithdrawalPresenter extends BasePresenter<WithdrawalContract.WithdrawalView> implements WithdrawalContract.Presenter {
+
+    public void getWithdrawalInfo() {
+        getView().showLoading();
+        addSubscribe(create(APIService.class).getWithdrawalInfo(), new BaseObserver<WithdrawalInfoBean>(getView()) {
+            @Override
+            protected void onSuccess(WithdrawalInfoBean data) {
+                if (getView() != null) {
+                    getView().getWithdrawalInfoSuccess(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(String amountWithdrawal, String bankCardId) {
+        getView().showLoading();
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("amountWithdrawal", amountWithdrawal);
+            jsonObject.put("bankCardId", bankCardId);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).doWithdrawal(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<Object>(getView()) {
+            @Override
+            protected void onSuccess(Object data) {
+                if (getView() != null) {
+                    getView().doWithdrawalSuccess( data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (e instanceof ApiException) {
+                    ErrorParse.getInstance().parseError(e);
+                    ApiException apiException = (ApiException) e;
+                    ToastUtils.showShort(apiException.getErrmsg());
+                }
+            }
+        });
+    }
+
 }

+ 58 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/income/WithdrawalRecordPresenter.java

@@ -0,0 +1,58 @@
+package com.cooleshow.teacher.presenter.income;
+
+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.WithdrawalRecordBean;
+import com.cooleshow.teacher.contract.WithdrawalRecordContract;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * 创建日期:2022/5/24 10:14
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class WithdrawalRecordPresenter extends BasePresenter<WithdrawalRecordContract.WithdrawalRecordView> implements WithdrawalRecordContract.Presenter {
+    public void getWithdrawalPage(boolean isLoading,int page,String searchDate,String status){
+        if (isLoading && getView() != null) {
+            getView().showLoading();
+        }
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("searchDate",searchDate);
+            //状态 DOING、审核中 PASS、通过 UNPASS、不通过
+            jsonObject.put("status",status);
+            jsonObject.putOpt("page", page);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).getWithdrawalPage(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<WithdrawalRecordBean>(getView()) {
+            @Override
+            protected void onSuccess(WithdrawalRecordBean data) {
+                if (getView() != null) {
+                    getView().withdrawalPageSuccess(page, data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().withdrawalPageError(page);
+                }
+            }
+        });
+    }
+}

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

@@ -0,0 +1,13 @@
+package com.cooleshow.teacher.presenter.income;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.teacher.contract.WithdrawalSuccessContract;
+
+/**
+ * 创建日期:2022/5/24 9:56
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class WithdrawalSuccessPresenter extends BasePresenter<WithdrawalSuccessContract.WithdrawalSuccessView> implements WithdrawalSuccessContract.Presenter {
+}

+ 110 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/message/MessageBoxPresenter.java

@@ -0,0 +1,110 @@
+package com.cooleshow.teacher.presenter.message;
+
+import android.text.TextUtils;
+
+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.SystemMessageBean;
+import com.cooleshow.teacher.contract.MessageBoxContract;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * 创建日期:2022/5/24 11:52
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MessageBoxPresenter extends BasePresenter<MessageBoxContract.MessageBoxView> implements MessageBoxContract.Presenter {
+
+
+    public void sysMessageList(boolean isLoading, int page, String group) {
+        if (isLoading && getView() != null) {
+            getView().showLoading();
+        }
+        JSONObject jsonObject = new JSONObject();
+        try {
+            if (!TextUtils.isEmpty(group)) {
+                jsonObject.put("group", group);
+            }
+            //消息类型;1,表示短信;2,表示邮件; 3,app推送消息
+            jsonObject.put("type", 3);
+            jsonObject.putOpt("page", page);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).sysMessageList(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<SystemMessageBean>(getView()) {
+            @Override
+            protected void onSuccess(SystemMessageBean data) {
+                if (getView() != null) {
+                    getView().sysMessageListSuccess(page, data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().sysMessageListError(page);
+                }
+            }
+        });
+    }
+
+    public void batchSetRead() {
+        getView().showLoading();
+        addSubscribe(create(APIService.class).batchSetRead(), new BaseObserver<SystemMessageBean>(getView()) {
+            @Override
+            protected void onSuccess(SystemMessageBean data) {
+
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+
+            }
+        });
+    }
+
+    public void setCurrentRead(long id){
+        getView().showLoading();
+        addSubscribe(create(APIService.class).setCurrentRead(id), new BaseObserver<Object>(getView()) {
+            @Override
+            protected void onSuccess(Object data) {
+                if (getView() != null) {
+                    getView().setCurrentReadSuccess(id);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+
+            }
+        });
+    }
+}

+ 32 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/mine/MyBankCardPresenter.java

@@ -3,12 +3,16 @@ package com.cooleshow.teacher.presenter.mine;
 import android.text.TextUtils;
 
 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.ReceivedCommentListBean;
 import com.cooleshow.teacher.bean.ResponseBankCardBean;
+import com.cooleshow.teacher.bean.ResponseBindCardBean;
 import com.cooleshow.teacher.contract.MyBankCardContract;
 
 import org.json.JSONException;
@@ -48,4 +52,32 @@ public class MyBankCardPresenter extends BasePresenter<MyBankCardContract.MyBank
             }
         });
     }
+
+    public void unBindBankCard(String jsonStr) {
+        getView().showLoading();
+        addSubscribe(create(APIService.class).unbindBankCard(RequestBodyUtil.convertToRequestBodyJson(jsonStr)), new BaseObserver<ResponseBindCardBean>(getView()) {
+            @Override
+            protected void onSuccess(ResponseBindCardBean data) {
+                if (getView() != null) {
+                    getView().unbindBankCardSuccess(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());
+                }
+            }
+        });
+    }
 }

+ 15 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/splash/GuidePresenter.java

@@ -0,0 +1,15 @@
+package com.cooleshow.teacher.presenter.splash;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.teacher.contract.GuideContract;
+import com.cooleshow.teacher.contract.MainContract;
+
+/**
+ * 创建日期:2022/5/24 17:57
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class GuidePresenter extends BasePresenter<GuideContract.GuideView> implements GuideContract.Presenter{
+
+}

+ 16 - 8
teacher/src/main/java/com/cooleshow/teacher/ui/income/MineIncomeActivity.java

@@ -1,5 +1,6 @@
 package com.cooleshow.teacher.ui.income;
 
+import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -8,6 +9,7 @@ import android.widget.PopupWindow;
 import android.widget.TextView;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
@@ -29,9 +31,8 @@ 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.IncomeFilterBean;
 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;
@@ -43,6 +44,8 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
+import io.rong.imkit.utils.StatusBarUtil;
+
 /**
  * 创建日期:2022/5/23 14:06
  *
@@ -71,6 +74,11 @@ public class MineIncomeActivity extends BaseMVPActivity<ActivityMineIncomeBindin
         }
 
     }
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        StatusBarUtil.setStatusBarDarkTheme(this, true);
+    }
 
     private MineIncomeAdapter mineIncomeAdapter;
     List<UserAccountBean.RowsBean> dataList = new ArrayList<>();
@@ -149,15 +157,15 @@ public class MineIncomeActivity extends BaseMVPActivity<ActivityMineIncomeBindin
         queryList(true);
     }
 
-    private ArrayList<IncomeCourseFilterBean> mFilterStatusBeans;
+    private ArrayList<IncomeFilterBean> 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", "乐谱"));
+        mFilterStatusBeans.add(new IncomeFilterBean("WITHDRAWAL", "全部收入"));
+        mFilterStatusBeans.add(new IncomeFilterBean("PRACTICE", "陪练课"));
+        mFilterStatusBeans.add(new IncomeFilterBean("LIVE", "直播课"));
+        mFilterStatusBeans.add(new IncomeFilterBean("VIDEO", "视频课"));
+        mFilterStatusBeans.add(new IncomeFilterBean("MUSIC", "乐谱"));
 
     }
 

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

@@ -1,19 +1,27 @@
 package com.cooleshow.teacher.ui.income;
 
 import android.content.Context;
+import android.os.Bundle;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.EditText;
 
+import androidx.annotation.Nullable;
+
 import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.WithdrawalInfoBean;
 import com.cooleshow.teacher.contract.WithdrawalContract;
 import com.cooleshow.teacher.databinding.ActivityWithdrawalBinding;
 import com.cooleshow.teacher.presenter.income.WithdrawalPresenter;
 
+import io.rong.imkit.utils.StatusBarUtil;
+
 /**
  * 创建日期:2022/5/23 17:29
  *
@@ -26,10 +34,23 @@ public class WithdrawalActivity extends BaseMVPActivity<ActivityWithdrawalBindin
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.tv_right_text:
+                ARouter.getInstance().build(RouterPath.IncomeCenter.TEACHER_MINE_WITHDRAWAL_RECORD)
+                        .navigation();
+                break;
+            case R.id.tv_withdrawal_all:
+                viewBinding.etPrice.setText(mWithdrawalInfo.amountWithdrawal + "");
+                break;
+            case R.id.tv_confirm_withdrawal:
+                String amountWithdrawal = viewBinding.etPrice.getText().toString().trim();
+                presenter.userAccountPage(amountWithdrawal, mWithdrawalInfo.userBankCard.id + "");
                 break;
         }
     }
-
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        StatusBarUtil.setStatusBarDarkTheme(this, true);
+    }
     @Override
     protected void initView() {
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "提现");
@@ -37,6 +58,8 @@ public class WithdrawalActivity extends BaseMVPActivity<ActivityWithdrawalBindin
         viewBinding.toolbarInclude.tvRightText.setVisibility(View.VISIBLE);
         viewBinding.toolbarInclude.tvRightText.setText("提现记录");
         viewBinding.toolbarInclude.tvRightText.setOnClickListener(this);
+        viewBinding.tvWithdrawalAll.setOnClickListener(this);
+        viewBinding.tvConfirmWithdrawal.setOnClickListener(this);
     }
 
     @Override
@@ -84,4 +107,29 @@ public class WithdrawalActivity extends BaseMVPActivity<ActivityWithdrawalBindin
         }
         return false;
     }
+
+    @Override
+    public void initData() {
+        super.initData();
+        presenter.getWithdrawalInfo();
+    }
+
+    private WithdrawalInfoBean mWithdrawalInfo;
+
+    @Override
+    public void getWithdrawalInfoSuccess(WithdrawalInfoBean data) {
+        mWithdrawalInfo = data;
+        viewBinding.tvAvailablePrice.setText("可提现余额 " + data.amountWithdrawal);
+        viewBinding.tvServiceFee.setText("单次收入提现时,平台将收取" + data.withdrawalServiceFee + "元手续费");
+        if (null != data.userBankCard) {
+            viewBinding.tvBankName.setText(data.userBankCard.bankName );
+        }
+    }
+
+    @Override
+    public void doWithdrawalSuccess(Object o) {
+        ARouter.getInstance().build(RouterPath.IncomeCenter.TEACHER_MINE_WITHDRAWAL_SUCCESS)
+                .navigation();
+        finish();
+    }
 }

+ 298 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/income/WithdrawalRecordActivity.java

@@ -0,0 +1,298 @@
+package com.cooleshow.teacher.ui.income;
+
+import android.os.Bundle;
+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.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+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.WithdrawalFilterAdapter;
+import com.cooleshow.teacher.adapter.WithdrawalRecordAdapter;
+import com.cooleshow.teacher.bean.CourseFilterStatusBean;
+import com.cooleshow.teacher.bean.WithdrawalFilterBean;
+import com.cooleshow.teacher.bean.WithdrawalRecordBean;
+import com.cooleshow.teacher.contract.WithdrawalRecordContract;
+import com.cooleshow.teacher.databinding.ActivityWithdrawalRecordBinding;
+import com.cooleshow.teacher.presenter.income.WithdrawalRecordPresenter;
+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;
+
+import io.rong.imkit.utils.StatusBarUtil;
+
+/**
+ * 创建日期:2022/5/24 10:12
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.IncomeCenter.TEACHER_MINE_WITHDRAWAL_RECORD)
+public class WithdrawalRecordActivity extends BaseMVPActivity<ActivityWithdrawalRecordBinding, WithdrawalRecordPresenter> implements WithdrawalRecordContract.WithdrawalRecordView, View.OnClickListener {
+    private String currentWithdrawalFilterStatus = "ALL";
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_date:
+                showTimeSelectPicker();
+                break;
+            case R.id.tv_type:
+                initPop(viewBinding.tvType);
+                break;
+        }
+    }
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        StatusBarUtil.setStatusBarDarkTheme(this, true);
+    }
+    private WithdrawalRecordAdapter withdrawalRecordAdapter;
+    List<WithdrawalRecordBean.RowsBean> dataList = new ArrayList<>();
+
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "提现记录");
+        viewBinding.tvDate.setOnClickListener(this);
+        viewBinding.tvType.setOnClickListener(this);
+
+        RecyclerView rvAddress = viewBinding.recyclerView;
+        LinearLayoutManager manager = new LinearLayoutManager(this);
+        rvAddress.setLayoutManager(manager);
+        withdrawalRecordAdapter = new WithdrawalRecordAdapter(dataList);
+        LayoutInflater inflater = LayoutInflater.from(this);
+        View emptyLayout = inflater.inflate(R.layout.layout_empty_conent, null);
+        withdrawalRecordAdapter.setEmptyView(emptyLayout);
+        rvAddress.setAdapter(withdrawalRecordAdapter);
+        withdrawalRecordAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+
+            }
+        });
+    }
+
+    @Override
+    protected ActivityWithdrawalRecordBinding getLayoutView() {
+        return ActivityWithdrawalRecordBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected WithdrawalRecordPresenter createPresenter() {
+        return new WithdrawalRecordPresenter();
+    }
+
+    private int currentPage;
+
+    @Override
+    public void initData() {
+        super.initData();
+        viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+                currentPage = 1;
+                queryList(true);
+            }
+        });
+        withdrawalRecordAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore() {
+                //上拉加载
+                if (hasNext) {
+                    currentPage++;
+                    queryList(false);
+                } else {
+                    withdrawalRecordAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        });
+        currentPage = 1;
+
+        buildDefaultStatusFilterList();
+        reBuildFilter(null, "ALL");
+        queryList(true);
+    }
+
+    private boolean hasNext = true;
+
+    /**
+     * 检查是否还有下一页
+     *
+     * @param dataSize
+     */
+    private void checkHasNext(int dataSize) {
+        hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
+    }
+
+    private void queryList(boolean isLoading) {
+        presenter.getWithdrawalPage(isLoading, currentPage, currentFilterDate, currentWithdrawalFilterStatus);
+    }
+
+    private ArrayList<WithdrawalFilterBean> mFilterStatusBeans;
+
+    private void buildDefaultStatusFilterList() {
+        mFilterStatusBeans = new ArrayList<>();
+        mFilterStatusBeans.add(new WithdrawalFilterBean("ALL", "全部"));
+        mFilterStatusBeans.add(new WithdrawalFilterBean("DOING", "审核中"));
+        mFilterStatusBeans.add(new WithdrawalFilterBean("PASS", "通过"));
+        mFilterStatusBeans.add(new WithdrawalFilterBean("UNPASS", "不通过"));
+    }
+
+    private TimePickerView pvTime;
+
+    private void showTimeSelectPicker() {
+        if (pvTime == null) {
+            pvTime = new TimePickerBuilder(this, (date, v) -> {//选中事件回调
+                reBuildFilter(date, currentWithdrawalFilterStatus);
+            }).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(currentWithdrawalFilterStatus, status)) {
+            //防止重复条件触发
+            return;
+        }
+        currentFilterDate = targetDateTimeStr;
+        currentWithdrawalFilterStatus = !TextUtils.isEmpty(status) ? status : "WITHDRAWAL";
+        currentPage = 1;
+        viewBinding.tvDate.setText(currentFilterDate);
+        queryList(true);
+    }
+
+    private PopupWindow mPopupWindow;
+    private WithdrawalFilterAdapter withdrawalFilterAdapter;
+
+    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();
+                    }
+                }
+            });
+            withdrawalFilterAdapter = new WithdrawalFilterAdapter(com.cooleshow.base.R.layout.notice_popu_list_item);
+            withdrawalFilterAdapter.setOnItemClickListener(new OnItemClickListener() {
+                @Override
+                public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                    Object object = withdrawalFilterAdapter.getData().get(position);
+                    if (object instanceof CourseFilterStatusBean) {
+                        if (withdrawalFilterAdapter != null) {
+                            withdrawalFilterAdapter.setSelect(position);
+                        }
+                        CourseFilterStatusBean filterStatusBean = (CourseFilterStatusBean) object;
+                        viewBinding.tvType.setText(filterStatusBean.showText);
+                        reBuildFilter(currentSelectDate, filterStatusBean.value);
+                    }
+                    mPopupWindow.dismiss();
+                }
+            });
+            recyclerView.setLayoutManager(new LinearLayoutManager(this));
+            recyclerView.setAdapter(withdrawalFilterAdapter);
+            withdrawalFilterAdapter.setNewInstance(mFilterStatusBeans);
+            mPopupWindow = PopupUtil.createNoBackPopupWindow(popupContentView, this, ViewGroup.LayoutParams.MATCH_PARENT,
+                    ViewGroup.LayoutParams.WRAP_CONTENT, true);
+        }
+        mPopupWindow.showAsDropDown(targetView);
+    }
+
+    @Override
+    public void withdrawalPageSuccess(int page, WithdrawalRecordBean 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);
+                    withdrawalRecordAdapter.notifyDataSetChanged();
+                }
+            } else {
+                if (data.rows != null && data.rows.size() > 0) {
+                    withdrawalRecordAdapter.getLoadMoreModule().loadMoreComplete();
+                    checkHasNext(data.rows.size());
+                } else {
+                    withdrawalRecordAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        }
+    }
+
+    @Override
+    public void withdrawalPageError(int page) {
+        if (page == 1) {
+            viewBinding.refreshLayout.finishRefresh();
+        } else {
+            if (withdrawalRecordAdapter != null) {
+                currentPage--;
+                withdrawalRecordAdapter.getLoadMoreModule().loadMoreFail();
+            }
+        }
+    }
+}

+ 54 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/income/WithdrawalSuccessActivity.java

@@ -0,0 +1,54 @@
+package com.cooleshow.teacher.ui.income;
+
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.annotation.Nullable;
+
+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.WithdrawalSuccessContract;
+import com.cooleshow.teacher.databinding.ActivityWithdrawalSuccessBinding;
+import com.cooleshow.teacher.presenter.income.WithdrawalSuccessPresenter;
+
+import io.rong.imkit.utils.StatusBarUtil;
+
+/**
+ * 创建日期:2022/5/24 9:53
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.IncomeCenter.TEACHER_MINE_WITHDRAWAL_SUCCESS)
+public class WithdrawalSuccessActivity extends BaseMVPActivity<ActivityWithdrawalSuccessBinding, WithdrawalSuccessPresenter> implements WithdrawalSuccessContract.WithdrawalSuccessView, View.OnClickListener {
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_i_know:
+                finish();
+                break;
+        }
+    }
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        StatusBarUtil.setStatusBarDarkTheme(this, true);
+    }
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "申请成功");
+        viewBinding.tvIKnow.setOnClickListener(this);
+    }
+
+    @Override
+    protected ActivityWithdrawalSuccessBinding getLayoutView() {
+        return ActivityWithdrawalSuccessBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected WithdrawalSuccessPresenter createPresenter() {
+        return new WithdrawalSuccessPresenter();
+    }
+}

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

@@ -41,6 +41,7 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
         mViewBinding.cardMineMusicSheet.setOnClickListener(this)
         mViewBinding.cardAfterClassHomework.setOnClickListener(this)
         mViewBinding.cardMineIncome.setOnClickListener(this)
+        mViewBinding.ivChat.setOnClickListener(this)
     }
 
     override fun createPresenter(): HomePresenter {
@@ -117,10 +118,10 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
                 ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_COURSE)
                     .navigation()
             }
-           /* R.id.card_mine_income -> {
-                ARouter.getInstance().build(RouterPath.CourseCenter.SPARRING_COURSE_DETAIL)
-                    .navigation()
-            }*/
+            /* 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()
@@ -147,6 +148,10 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
                 ARouter.getInstance().build(RouterPath.IncomeCenter.TEACHER_MINE_INCOME)
                     .navigation()
             }
+            R.id.iv_chat -> {
+                ARouter.getInstance().build(RouterPath.MessageCenter.TEACHER_MESSAGE_MESSAGEBOX)
+                    .navigation()
+            }
         }
     }
 

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

@@ -44,6 +44,7 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
         mViewBinding.tvAuthentication.setOnClickListener(this);
         mViewBinding.ivOpenLive.setOnClickListener(this);
         mViewBinding.tvOpenLive.setOnClickListener(this);
+        mViewBinding.llFans.setOnClickListener(this);
     }
 
     @Override
@@ -185,6 +186,12 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                 ARouter.getInstance().build(RouterPath.MineCenter.TEACHER_MINE_CREATE_COURSE)
                         .navigation();
                 break;
+            case R.id.ll_fans:
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_MY_FANS)
+                        .navigation();
+                break;
 
         }
     }

+ 225 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/message/MessageBoxActivity.java

@@ -0,0 +1,225 @@
+package com.cooleshow.teacher.ui.message;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemClickListener;
+import com.chad.library.adapter.base.listener.OnLoadMoreListener;
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.MessageBoxAdapter;
+import com.cooleshow.teacher.adapter.MineIncomeAdapter;
+import com.cooleshow.teacher.bean.SystemMessageBean;
+import com.cooleshow.teacher.bean.UserAccountBean;
+import com.cooleshow.teacher.contract.MessageBoxContract;
+import com.cooleshow.teacher.databinding.ActivityMessageBoxBinding;
+import com.cooleshow.teacher.presenter.message.MessageBoxPresenter;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import io.rong.imkit.utils.StatusBarUtil;
+
+/**
+ * 创建日期:2022/5/24 11:14
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.MessageCenter.TEACHER_MESSAGE_MESSAGEBOX)
+public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBinding, MessageBoxPresenter> implements MessageBoxContract.MessageBoxView, View.OnClickListener {
+    //SYSTEM:系统消息 COURSE:课程信息 NOTICE:公告
+    private String group = "";
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.cl_all:
+                group = "";
+                defaultTextColor();
+                viewBinding.tvAll.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_333333));
+                currentPage = 1;
+                queryList(true);
+                break;
+            case R.id.cl_course:
+                group = "COURSE";
+                defaultTextColor();
+                viewBinding.tvCourse.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_333333));
+                currentPage = 1;
+                queryList(true);
+                break;
+            case R.id.cl_system:
+                group = "SYSTEM";
+                defaultTextColor();
+                viewBinding.tvSystem.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_333333));
+                currentPage = 1;
+                queryList(true);
+                break;
+            case R.id.tv_right:
+            case R.id.tv_right_text:
+                presenter.batchSetRead();
+                break;
+        }
+    }
+
+    private void defaultTextColor() {
+        viewBinding.tvAll.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_999999));
+        viewBinding.tvCourse.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_999999));
+        viewBinding.tvSystem.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_999999));
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        StatusBarUtil.setStatusBarDarkTheme(this, true);
+    }
+
+    private MessageBoxAdapter messageBoxAdapter;
+    List<SystemMessageBean.RowsBean> dataList = new ArrayList<>();
+
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "消息盒子");
+        viewBinding.clAll.setOnClickListener(this);
+        viewBinding.clCourse.setOnClickListener(this);
+        viewBinding.clSystem.setOnClickListener(this);
+        viewBinding.tvAll.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_333333));
+        viewBinding.toolbarInclude.tvRightText.setVisibility(View.VISIBLE);
+        viewBinding.toolbarInclude.tvRightText.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_999999));
+        viewBinding.toolbarInclude.tvRightText.setTextSize(11);
+        viewBinding.toolbarInclude.tvRightText.setText("全部已读");
+        viewBinding.toolbarInclude.tvRightText.setOnClickListener(this);
+        viewBinding.toolbarInclude.tvRight.setVisibility(View.VISIBLE);
+        viewBinding.toolbarInclude.tvRight.setBackgroundResource(R.drawable.icon_message_read_all);
+        viewBinding.toolbarInclude.tvRight.setOnClickListener(this);
+        RecyclerView rvAddress = viewBinding.recyclerView;
+        LinearLayoutManager manager = new LinearLayoutManager(this);
+        rvAddress.setLayoutManager(manager);
+        messageBoxAdapter = new MessageBoxAdapter(dataList);
+        LayoutInflater inflater = LayoutInflater.from(this);
+        View emptyLayout = inflater.inflate(R.layout.layout_empty_conent, null);
+        messageBoxAdapter.setEmptyView(emptyLayout);
+        rvAddress.setAdapter(messageBoxAdapter);
+        messageBoxAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                SystemMessageBean.RowsBean item = (SystemMessageBean.RowsBean) adapter.getItem(position);
+                if (item.readStatus==0){
+                    presenter.setCurrentRead(item.id);
+                }
+            }
+        });
+    }
+
+    @Override
+    protected ActivityMessageBoxBinding getLayoutView() {
+        return ActivityMessageBoxBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MessageBoxPresenter createPresenter() {
+        return new MessageBoxPresenter();
+    }
+
+    private int currentPage;
+
+    @Override
+    public void initData() {
+        super.initData();
+        viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+                currentPage = 1;
+                queryList(true);
+            }
+        });
+        messageBoxAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore() {
+                //上拉加载
+                if (hasNext) {
+                    currentPage++;
+                    queryList(false);
+                } else {
+                    messageBoxAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        });
+        currentPage = 1;
+        queryList(true);
+    }
+
+    @Override
+    public void sysMessageListSuccess(int page, SystemMessageBean 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);
+                    messageBoxAdapter.notifyDataSetChanged();
+                }
+            } else {
+                if (data.rows != null && data.rows.size() > 0) {
+                    messageBoxAdapter.getLoadMoreModule().loadMoreComplete();
+                    checkHasNext(data.rows.size());
+                } else {
+                    messageBoxAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        }
+    }
+
+    private boolean hasNext = true;
+
+    /**
+     * 检查是否还有下一页
+     *
+     * @param dataSize
+     */
+    private void checkHasNext(int dataSize) {
+        hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
+    }
+
+    private void queryList(boolean isLoading) {
+        presenter.sysMessageList(isLoading, currentPage, group);
+    }
+
+
+    @Override
+    public void sysMessageListError(int page) {
+        if (page == 1) {
+            viewBinding.refreshLayout.finishRefresh();
+        } else {
+            if (messageBoxAdapter != null) {
+                currentPage--;
+                messageBoxAdapter.getLoadMoreModule().loadMoreFail();
+            }
+        }
+    }
+
+    @Override
+    public void setCurrentReadSuccess(long id) {
+        for (SystemMessageBean.RowsBean rowsBean : dataList) {
+            if (rowsBean.id==id){
+                rowsBean.readStatus=1;
+                break;
+            }
+        }
+        messageBoxAdapter.notifyDataSetChanged();
+    }
+}

+ 29 - 2
teacher/src/main/java/com/cooleshow/teacher/ui/mine/MyBankCardActivity.java

@@ -6,13 +6,18 @@ import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.bean.ResponseBankCardBean;
+import com.cooleshow.teacher.bean.ResponseBindCardBean;
 import com.cooleshow.teacher.contract.MyBankCardContract;
 import com.cooleshow.teacher.databinding.ActivityMyBankCardBinding;
 import com.cooleshow.teacher.databinding.EmptyMyBankCardBinding;
 import com.cooleshow.teacher.presenter.mine.MyBankCardPresenter;
 
+import org.json.JSONException;
+import org.json.JSONObject;
+
 /**
  * 创建日期:2022/5/18 16:57
  *
@@ -26,8 +31,23 @@ public class MyBankCardActivity extends BaseMVPActivity<ActivityMyBankCardBindin
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.tv_right_text:
+                ARouter.getInstance().build(RouterPath.MineCenter.MINE_BIND_BANKCARD)
+                        .navigation();
                 break;
             case R.id.tv_unbind:
+                if (null==rowsBean){
+                    ToastUtils.showShort("还未绑定银行卡");
+                    break;
+                }
+                JSONObject jsonObject = new JSONObject();
+                try {
+                    jsonObject.putOpt("id", rowsBean.id);
+                    jsonObject.putOpt("idCardNo", rowsBean.bankCard);
+                    jsonObject.putOpt("name", rowsBean.name);
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+                presenter.unBindBankCard(jsonObject.toString());
                 break;
             case R.id.tv_bind_card:
                 ARouter.getInstance().build(RouterPath.MineCenter.MINE_BIND_BANKCARD)
@@ -63,16 +83,23 @@ public class MyBankCardActivity extends BaseMVPActivity<ActivityMyBankCardBindin
         return new MyBankCardPresenter();
     }
 
+    private ResponseBankCardBean.RowsBean rowsBean;
     @Override
     public void querySuccess(int page, ResponseBankCardBean data) {
         if (null != data && null != data.rows && data.rows.size() > 0) {
+            rowsBean=data.rows.get(0);
             viewBinding.includeEmpty.getRoot().setVisibility(View.GONE);
             viewBinding.clContent.setVisibility(View.VISIBLE);
-            viewBinding.tvBankName.setText(data.rows.get(0).bankName);
-            viewBinding.tvCardNum.setText(data.rows.get(0).bankCard);
+            viewBinding.tvBankName.setText(rowsBean.bankName);
+            viewBinding.tvCardNum.setText(rowsBean.bankCard);
         }else{
             viewBinding.includeEmpty.getRoot().setVisibility(View.VISIBLE);
             viewBinding.clContent.setVisibility(View.GONE);
         }
     }
+
+    @Override
+    public void unbindBankCardSuccess(ResponseBindCardBean data) {
+
+    }
 }

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

@@ -105,7 +105,7 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
                 break;
             case R.id.tv_login_out:
                 UserHelper.saveUserToken("");
-                ARouter.getInstance().build(RouterPath.UserCenter.PATH_LOGIN)
+                ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN)
                         .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK)
                         .navigation();
                 break;
@@ -320,7 +320,6 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
     @Override
     public void upLoadImageSuccess(String url) {
         hideLoading();
-        Log.e("aksjhkasndfs", "upLoadImageSuccess: " + url);
         SetDetailBean requestBean = new SetDetailBean();
         requestBean.gender = 1;
         requestBean.real = mySetDetailBean.real;

+ 16 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/score/MineScoreActivity.java

@@ -19,6 +19,7 @@ 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.cooleshow.teacher.widgets.DialogUtils;
 import com.google.android.material.tabs.TabLayout;
 
 import java.util.ArrayList;
@@ -99,6 +100,20 @@ public class MineScoreActivity extends BaseMVPActivity<ActivityMineScoreBinding,
 
     @Override
     public void musicSheetShareSuccess(MusicSheetShareBean data) {
-        Log.e("asjhkasdfs", "musicSheetShareSuccess: " );
+        showScoreShareDialog(data);
+    }
+
+    private void showScoreShareDialog(MusicSheetShareBean data) {
+        DialogUtils.showScoreShare(this,data, new DialogUtils.ActionDialogCallback() {
+            @Override
+            public void onConfirmClick() {
+
+            }
+
+            @Override
+            public void onCancelClick() {
+
+            }
+        });
     }
 }

+ 131 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/splash/GuideActivity.java

@@ -0,0 +1,131 @@
+package com.cooleshow.teacher.ui.splash;
+
+import android.content.Context;
+import android.graphics.Point;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.ImageView;
+
+import androidx.viewpager.widget.ViewPager;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.ViewPagerAdapter;
+import com.cooleshow.teacher.databinding.ActivityGuideBinding;
+import com.cooleshow.teacher.presenter.splash.GuidePresenter;
+import com.cooleshow.teacher.widgets.MyViewPage;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/24 17:53
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.SplashCenter.SPLASH_GUIDE)
+public class GuideActivity extends BaseMVPActivity<ActivityGuideBinding, GuidePresenter> {
+    private List<View> views;
+    private MyViewPage vp;
+    private ViewPagerAdapter vpAdapter;
+    private ImageView img_view;
+
+    @Override
+    protected void initView() {
+        LayoutInflater inflater = LayoutInflater.from(this);
+        views = new ArrayList<View>();
+        views.add(inflater.inflate(R.layout.guide_one, null));
+        views.add(inflater.inflate(R.layout.guide_two, null));
+        views.add(inflater.inflate(R.layout.guide_thre, null));
+        vpAdapter = new ViewPagerAdapter(views, this);
+        vp = findViewById(R.id.viewPager);
+        vp.setAdapter(vpAdapter);
+        img_view = views.get(3).findViewById(R.id.tv_go);
+        img_view.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                jumpMain();
+                finish();
+            }
+        });
+    }
+
+    private void jumpMain() {
+        ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME).navigation();
+    }
+
+    @Override
+    protected ActivityGuideBinding getLayoutView() {
+        return ActivityGuideBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected GuidePresenter createPresenter() {
+        return new GuidePresenter();
+    }
+
+
+    private int currentItem = 0;
+
+    /**
+     * 滑动进入主界面
+     */
+    private void addListener() {
+        vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+            @Override
+            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+
+            }
+
+            @Override
+            public void onPageSelected(int position) {
+                currentItem = position;
+                Log.i("Guide", "监听改变" + position);
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int state) {
+
+            }
+        });
+        vp.setOnTouchListener(new View.OnTouchListener() {
+            float startX;
+            float startY;
+            float endX;
+            float endY;
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (event.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                        startX = event.getX();
+                        startY = event.getY();
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        endX = event.getX();
+                        endY = event.getY();
+                        WindowManager windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
+                        //获取屏幕的宽度
+                        Point size = new Point();
+                        windowManager.getDefaultDisplay().getSize(size);
+                        int width = size.x;
+                        //首先要确定的是,是否到了最后一页,然后判断是否向左滑动,并且滑动距离是否符合,我这里的判断距离是屏幕宽度的4分之一(这里可以适当控制)
+                        if (currentItem == (views.size() - 1) && startX - endX > 0 && startX - endX >= (width / 4)) {
+                            Log.e("kasdkfhsjss", "=======页面跳转=====");
+                            jumpMain();
+                            overridePendingTransition(R.anim.slide_in_right, R.anim.slide_in_left);
+                        }
+                        break;
+                }
+                return false;
+            }
+        });
+    }
+}

+ 4 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/splash/SplashActivity.kt

@@ -29,6 +29,10 @@ class SplashActivity : BaseActivity<ActivitySplashLayoutBinding>() {
         finish()
     }
 
+    private fun goGuide() {
+        ARouter.getInstance().build(RouterPath.SplashCenter.SPLASH_GUIDE).navigation()
+    }
+
     private fun jumpMain() {
         ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME).navigation()
     }

+ 109 - 0
teacher/src/main/java/com/cooleshow/teacher/widgets/DialogUtils.java

@@ -0,0 +1,109 @@
+package com.cooleshow.teacher.widgets;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Matrix;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.cooleshow.base.common.BaseApplication;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.MessageBoxAdapter;
+import com.cooleshow.teacher.adapter.ScoreShareListAdapter;
+import com.cooleshow.teacher.bean.MusicSheetShareBean;
+import com.cooleshow.usercenter.utils.SavePicUtil;
+import com.daya.live_teaching.utils.ToastUtils;
+
+/**
+ * 创建日期:2022/5/24 15:22
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class DialogUtils {
+    public interface ActionDialogCallback {
+        /**
+         * Called when left Button is click
+         */
+        void onConfirmClick();
+
+        /**
+         * Called when left Button is click
+         */
+        void onCancelClick();
+
+    }
+
+    public static void showScoreShare(Context context, MusicSheetShareBean data, ActionDialogCallback callback) {
+        LinearLayout.LayoutParams pm = new LinearLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
+        AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.Dialog);
+        LayoutInflater inflater = LayoutInflater.from(context);
+        View view = inflater.inflate(R.layout.dialog_score_share, null);//这里的R.layout.alertdialog即为你自定义的布局文件
+        TextView tv_teacher_name = view.findViewById(R.id.tv_teacher_name);
+        tv_teacher_name.setText(data.name);
+        ImageView im_header = view.findViewById(R.id.im_header);
+        GlideUtils.INSTANCE.loadImage(context, data.avatar, im_header, R.drawable.icon_teacher_default_head);
+        TextView tv_update_count = view.findViewById(R.id.tv_update_count);
+        tv_update_count.setText("我在酷乐秀上传了" + data.musicSheetCount + "支乐谱");
+        TextView tv_save = view.findViewById(R.id.tv_save);
+        TextView tv_share = view.findViewById(R.id.tv_share);
+        ConstraintLayout cl_content=view.findViewById(R.id.cl_content);
+        RecyclerView rv_list = view.findViewById(R.id.rv_list);
+        if (data.musicSheetCount == 0) {
+            rv_list.setVisibility(View.GONE);
+        } else {
+            rv_list.setVisibility(View.VISIBLE);
+            LinearLayoutManager manager = new LinearLayoutManager(context);
+            rv_list.setLayoutManager(manager);
+            ScoreShareListAdapter scoreShareListAdapter = new ScoreShareListAdapter(data.musicSheetVoList);
+            rv_list.setAdapter(scoreShareListAdapter);
+        }
+
+        final AlertDialog mAlertDialog = builder.create();
+        mAlertDialog.getWindow().setBackgroundDrawableResource(com.cooleshow.base.R.color.transparent);
+        mAlertDialog.setCanceledOnTouchOutside(true);
+        mAlertDialog.setCancelable(true);
+        mAlertDialog.show();
+
+        mAlertDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
+        mAlertDialog.getWindow().setContentView(view, pm);
+        tv_save.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                int w = cl_content.getWidth();
+                int h = cl_content.getHeight();
+                Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
+                Canvas c = new Canvas(bmp);
+                cl_content.layout(0, 0, w, h);
+                cl_content.draw(c);
+                // 缩小图片
+                Matrix matrix = new Matrix();
+                matrix.postScale(1.0f, 1.0f); //长和宽放大缩小的比例
+                bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
+                if (SavePicUtil.saveBitmap(BaseApplication.Companion.getContext(), bmp, System.currentTimeMillis() + "")) {
+                    ToastUtils.showToast("保存成功");
+                } else {
+                    ToastUtils.showToast("保存失败");
+                }
+            }
+        });
+        tv_share.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+            }
+        });
+    }
+}

+ 37 - 0
teacher/src/main/java/com/cooleshow/teacher/widgets/MyViewPage.java

@@ -0,0 +1,37 @@
+package com.cooleshow.teacher.widgets;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+import androidx.viewpager.widget.ViewPager;
+
+/**
+ * 创建日期:2022/5/24 17:54
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MyViewPage extends ViewPager {
+    private boolean willIntercept = true;
+
+    public MyViewPage(Context context, AttributeSet attrs) {
+        super(context, attrs);
+// TODO Auto-generated constructor stub
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent arg0) {
+        if (willIntercept) {
+            return super.onInterceptTouchEvent(arg0);
+        } else {
+            return false;
+        }
+
+    }
+
+
+    public void setTouchIntercept(boolean value) {
+        willIntercept = value;
+    }
+}

+ 39 - 0
teacher/src/main/res/anim/modal_in.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:interpolator="@android:anim/linear_interpolator"
+    android:shareInterpolator="true">
+    <alpha
+        android:fromAlpha="0.2"
+        android:toAlpha="1"
+        android:duration="90"/>
+
+    <scale
+        android:fromXScale="0.7"
+        android:toXScale="1.05"
+        android:fromYScale="0.7"
+        android:toYScale="1.05"
+        android:pivotX="50%"
+        android:pivotY="50%"
+        android:duration="135"/>
+
+    <scale
+        android:fromXScale="1.05"
+        android:toXScale="0.95"
+        android:fromYScale="1.05"
+        android:toYScale="0.95"
+        android:pivotX="50%"
+        android:pivotY="50%"
+        android:duration="105"
+        android:startOffset="135"/>
+
+    <scale
+        android:fromXScale="0.95"
+        android:toXScale="1"
+        android:fromYScale="0.95"
+        android:toYScale="1"
+        android:pivotX="50%"
+        android:pivotY="50%"
+        android:duration="60"
+        android:startOffset="240"/>
+</set>

+ 18 - 0
teacher/src/main/res/anim/modal_out.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:interpolator="@android:anim/linear_interpolator"
+    android:shareInterpolator="true">
+    <scale
+        android:fromXScale="1"
+        android:toXScale="0.6"
+        android:fromYScale="1"
+        android:toYScale="0.6"
+        android:pivotX="50%"
+        android:pivotY="50%"
+        android:duration="150"/>
+    <!-- <alpha
+         android:fromAlpha="1"
+         android:toAlpha="0"
+         android:duration="150"/> -->
+</set>

+ 7 - 0
teacher/src/main/res/anim/slide_in_left.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:duration="1000"
+        android:fromXDelta="0%p"
+        android:toXDelta="-100%" />
+</set>

+ 8 - 0
teacher/src/main/res/anim/slide_in_right.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:duration="1000"
+        android:fromXDelta="100%p"
+        android:toXDelta="0"
+        />
+</set>

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient android:type="linear" android:useLevel="true"
+        android:startColor="@color/white"
+        android:endColor="@color/color_cefbe3"
+        android:angle="90" />
+    <corners android:radius="3dp" />
+</shape>

+ 5 - 0
teacher/src/main/res/drawable/bg_red_ovil.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="@color/color_ff1313" />
+</shape>

+ 12 - 0
teacher/src/main/res/drawable/bg_score_share.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <gradient
+        android:angle="45"
+        android:centerColor="@color/color_49eccd"
+        android:endColor="@color/color_2dc7aa"
+        android:startColor="@color/color_1fb095"
+        android:type="linear"
+        android:useLevel="true" />
+    <corners android:radius="11dp" />
+</shape>

+ 10 - 0
teacher/src/main/res/drawable/bg_unread_red.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/color_ff1313" />
+    <corners android:radius="@dimen/dp_7"/>
+    <stroke
+        android:width="1dp"
+        android:color="@color/white" />
+
+</shape>

+ 6 - 0
teacher/src/main/res/drawable/view_guide_point_normal.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="@color/color_dcebe4" />
+
+</shape>

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