Browse Source

写学生端首页

Ryan8057 2 years ago
parent
commit
33804e72f9
37 changed files with 1808 additions and 211 deletions
  1. 2 0
      BaseLibrary/build.gradle
  2. 10 0
      BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java
  3. 19 19
      BaseLibrary/src/main/res/values/attrs.xml
  4. 5 0
      BaseLibrary/src/main/res/values/colors.xml
  5. 33 0
      student/src/main/java/com/cooleshow/student/adapter/HomeHotAlbumAdapter.java
  6. 44 0
      student/src/main/java/com/cooleshow/student/adapter/HomeLiveCourseAdapter.java
  7. 40 0
      student/src/main/java/com/cooleshow/student/adapter/HomeTeacherStyleAdapter.java
  8. 41 0
      student/src/main/java/com/cooleshow/student/adapter/HomeVideoCourseAdapter.java
  9. 37 0
      student/src/main/java/com/cooleshow/student/adapter/HomeWonderfulInfoAdapter.java
  10. 29 0
      student/src/main/java/com/cooleshow/student/api/APIService.java
  11. 2 2
      student/src/main/java/com/cooleshow/student/bean/AppHomeBean.java
  12. 105 0
      student/src/main/java/com/cooleshow/student/bean/HomeLiveAndVideoBean.java
  13. 59 0
      student/src/main/java/com/cooleshow/student/bean/HomeStyleBean.java
  14. 61 0
      student/src/main/java/com/cooleshow/student/bean/HotAlbumBean.java
  15. 9 0
      student/src/main/java/com/cooleshow/student/contract/HomeContract.java
  16. 94 1
      student/src/main/java/com/cooleshow/student/presenter/main/HomePresenter.java
  17. 308 11
      student/src/main/java/com/cooleshow/student/ui/main/HomeFragment.java
  18. 20 2
      student/src/main/java/com/cooleshow/student/ui/main/HomeMenuFragment.java
  19. 11 11
      student/src/main/java/com/cooleshow/student/ui/mine/PayTestActivity.java
  20. 1 1
      student/src/main/java/com/cooleshow/student/ui/mine/PersonalCertificationActivity.java
  21. BIN
      student/src/main/res/drawable-xhdpi/icon_home_live_clock.png
  22. BIN
      student/src/main/res/drawable-xxhdpi/icon_home_live_clock.png
  23. 6 0
      student/src/main/res/drawable/bg_2dc7aa_indicator.xml
  24. 6 0
      student/src/main/res/drawable/bg_434343_raduis.xml
  25. 6 0
      student/src/main/res/drawable/bg_f2f2f2_indicator.xml
  26. 7 0
      student/src/main/res/drawable/bg_white_30dp.xml
  27. 7 0
      student/src/main/res/drawable/bg_white_8_10dp.xml
  28. 1 43
      student/src/main/res/layout/activity_personal_certification.xml
  29. 455 72
      student/src/main/res/layout/fragment_home_layout.xml
  30. 52 0
      student/src/main/res/layout/layout_home_hot_album_item.xml
  31. 115 0
      student/src/main/res/layout/layout_home_live_course_item.xml
  32. 68 0
      student/src/main/res/layout/layout_home_teacher_style_item.xml
  33. 103 0
      student/src/main/res/layout/layout_home_video_course_item.xml
  34. 46 0
      student/src/main/res/layout/layout_home_wonderful_info_item.xml
  35. 4 4
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java
  36. 1 1
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/PersonalCertificationActivity.java
  37. 1 44
      teacher/src/main/res/layout/activity_personal_certification.xml

+ 2 - 0
BaseLibrary/build.gradle

@@ -150,4 +150,6 @@ dependencies {
     api 'com.alipay.sdk:alipaysdk-android:+@aar'
     //微信
     api 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
+    //圆角imageview
+    api 'com.makeramen:roundedimageview:2.3.0'
 }

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

@@ -41,6 +41,16 @@ public abstract class WebConstants {
     public static  final String STUDENT_TEACHER_FOLLOW=getBaseUrlH5() +"/#/teacherFollow";
     //我的乐谱
     public static  final String STUDENT_MUSIC_PERSONAL=getBaseUrlH5() +"/#/music-personal";
+    //资讯详情
+    public static  final String STUDENT_SPECIAL_DETAIL=getBaseUrlH5() +"/#/specialDetail?id=";
+    //精彩资讯
+    public static  final String STUDENT_SPECIAL=getBaseUrlH5() +"/#/special";
+    //热门专辑
+    public static  final String STUDENT_MUSIC_ALBUM=getBaseUrlH5() +"/#/music-album";
+    //专辑详情
+    public static  final String STUDENT_MUSIC_ALBUM_DETAIL=getBaseUrlH5() +"/#/music-album-detail/";
+
+
 
 
     //注册协议

+ 19 - 19
BaseLibrary/src/main/res/values/attrs.xml

@@ -2,34 +2,34 @@
 <resources>
     <!-- HeaderBar自定义属性 -->
     <declare-styleable name="HeaderBar">
-        <attr name="isShowBack" format="boolean"/>
-        <attr name="titleText" format="string"/>
-        <attr name="rightText" format="string"/>
+        <attr name="isShowBack" format="boolean" />
+        <attr name="titleText" format="string" />
+        <attr name="rightText" format="string" />
     </declare-styleable>
 
     <!-- LabelText自定义属性 -->
     <declare-styleable name="LabelText">
-        <attr name="labelText" format="string"/>
-        <attr name="contentText" format="string"/>
+        <attr name="labelText" format="string" />
+        <attr name="contentText" format="string" />
     </declare-styleable>
 
     <declare-styleable name="ColorTextView">
-        <attr name="ctvBackground" format="color"/>
-        <attr name="ctvCornerSize" format="dimension"/>
-        <attr name="ctvBorderColor" format="color"/>
-        <attr name="ctvBorderWidth" format="dimension"/>
+        <attr name="ctvBackground" format="color" />
+        <attr name="ctvCornerSize" format="dimension" />
+        <attr name="ctvBorderColor" format="color" />
+        <attr name="ctvBorderWidth" format="dimension" />
     </declare-styleable>
 
     <declare-styleable name="QMUIRadiusImageView">
-        <attr name="qmui_border_width" format="dimension"/>
-        <attr name="qmui_border_color" format="color"/>
-        <attr name="qmui_selected_mask_color" format="color"/>
-        <attr name="qmui_selected_border_color" format="color"/>
-        <attr name="qmui_selected_border_width" format="dimension"/>
-        <attr name="qmui_corner_radius" format="dimension"/>
-        <attr name="qmui_is_oval" format="boolean"/>
-        <attr name="qmui_is_circle" format="boolean"/>
-        <attr name="qmui_is_touch_select_mode_enabled" format="boolean"/>
+        <attr name="qmui_border_width" format="dimension" />
+        <attr name="qmui_border_color" format="color" />
+        <attr name="qmui_selected_mask_color" format="color" />
+        <attr name="qmui_selected_border_color" format="color" />
+        <attr name="qmui_selected_border_width" format="dimension" />
+        <attr name="qmui_corner_radius" format="dimension" />
+        <attr name="qmui_is_oval" format="boolean" />
+        <attr name="qmui_is_circle" format="boolean" />
+        <attr name="qmui_is_touch_select_mode_enabled" format="boolean" />
     </declare-styleable>
-    <attr name="QMUIRadiusImageViewStyle" format="reference"/>
+    <attr name="QMUIRadiusImageViewStyle" format="reference" />
 </resources>

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

@@ -87,4 +87,9 @@
     <color name="color_fed271">#FED271</color>
     <color name="color_778098">#778098</color>
     <color name="color_ebebeb">#EBEBEB</color>
+    <color name="color_d8d8d8">#D8D8D8</color>
+    <color name="color_4d434343">#4D434343</color>
+    <color name="color_63ffe1">#63FFE1</color>
+    <color name="color_fa6400">#FA6400</color>
+    <color name="color_ff9300">#FF9300</color>
 </resources>

+ 33 - 0
student/src/main/java/com/cooleshow/student/adapter/HomeHotAlbumAdapter.java

@@ -0,0 +1,33 @@
+package com.cooleshow.student.adapter;
+
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.student.R;
+import com.cooleshow.student.bean.HotAlbumBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/27 11:51
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeHotAlbumAdapter extends BaseQuickAdapter<HotAlbumBean.RowsBean, BaseViewHolder> {
+
+    public HomeHotAlbumAdapter(List<HotAlbumBean.RowsBean> data) {
+        super(R.layout.layout_home_hot_album_item, data);
+    }
+
+    @Override
+    protected void convert(BaseViewHolder helper, HotAlbumBean.RowsBean item) {
+        ImageView im_pic=helper.getView(R.id.im_pic);
+        GlideUtils.INSTANCE.loadImage(getContext(),item.albumCoverUrl,im_pic);
+        TextView tv_collect_num=helper.getView(R.id.tv_collect_num);
+        tv_collect_num.setText(item.albumFavoriteCount+"");
+    }
+}

+ 44 - 0
student/src/main/java/com/cooleshow/student/adapter/HomeLiveCourseAdapter.java

@@ -0,0 +1,44 @@
+package com.cooleshow.student.adapter;
+
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.student.R;
+import com.cooleshow.student.bean.HomeLiveAndVideoBean;
+import com.cooleshow.student.bean.HotAlbumBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/27 14:10
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeLiveCourseAdapter extends BaseQuickAdapter<HomeLiveAndVideoBean.CourseBean, BaseViewHolder> {
+
+    public HomeLiveCourseAdapter(List<HomeLiveAndVideoBean.CourseBean> data) {
+        super(R.layout.layout_home_live_course_item, data);
+    }
+
+    @Override
+    protected void convert(BaseViewHolder helper, HomeLiveAndVideoBean.CourseBean item) {
+        ImageView im_pic = helper.getView(R.id.im_pic);
+        GlideUtils.INSTANCE.loadImage(getContext(), item.backgroundPic, im_pic);
+        TextView tv_title = helper.getView(R.id.tv_title);
+        tv_title.setText(item.courseGroupName);
+        TextView tv_teacher_name = helper.getView(R.id.tv_teacher_name);
+        tv_teacher_name.setText("老师:" + item.teacherName);
+        TextView tv_start_time = helper.getView(R.id.tv_start_time);
+        tv_start_time.setText("开课时间:" + item.courseStartTime);
+        TextView tv_price = helper.getView(R.id.tv_price);
+        tv_price.setText(item.courseGroupPrice + "");
+        TextView tv_course_num = helper.getView(R.id.tv_course_num);
+        tv_course_num.setText(item.courseNum + "课时");
+        TextView tv_buy_num = helper.getView(R.id.tv_buy_num);
+        tv_buy_num.setText(item.buyCount + "人已购买");
+    }
+}

+ 40 - 0
student/src/main/java/com/cooleshow/student/adapter/HomeTeacherStyleAdapter.java

@@ -0,0 +1,40 @@
+package com.cooleshow.student.adapter;
+
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.student.R;
+import com.cooleshow.student.bean.HomeStyleBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/27 16:13
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeTeacherStyleAdapter extends BaseQuickAdapter<HomeStyleBean.RowsBean, BaseViewHolder> {
+
+    public HomeTeacherStyleAdapter(List<HomeStyleBean.RowsBean> data) {
+        super(R.layout.layout_home_teacher_style_item, data);
+    }
+
+    @Override
+    protected void convert(BaseViewHolder helper, HomeStyleBean.RowsBean item) {
+        ImageView im_pic = helper.getView(R.id.im_pic);
+        TextView tv_title = helper.getView(R.id.tv_title);
+        ImageView im_teacher_header = helper.getView(R.id.im_teacher_header);
+        TextView tv_teacher_name = helper.getView(R.id.tv_teacher_name);
+        TextView tv_watch_count = helper.getView(R.id.tv_watch_count);
+        GlideUtils.INSTANCE.loadImage(getContext(), item.videoUrl, im_pic);
+        tv_title.setText(item.describe);
+        GlideUtils.INSTANCE.loadImage(getContext(), item.avatar, im_teacher_header);
+        tv_teacher_name.setText(item.username);
+        tv_watch_count.setText(item.browse + "人观看");
+
+    }
+}

+ 41 - 0
student/src/main/java/com/cooleshow/student/adapter/HomeVideoCourseAdapter.java

@@ -0,0 +1,41 @@
+package com.cooleshow.student.adapter;
+
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.student.R;
+import com.cooleshow.student.bean.HomeLiveAndVideoBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/27 14:51
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeVideoCourseAdapter extends BaseQuickAdapter<HomeLiveAndVideoBean.VideoCourseBean, BaseViewHolder> {
+
+    public HomeVideoCourseAdapter(List<HomeLiveAndVideoBean.VideoCourseBean> data) {
+        super(R.layout.layout_home_video_course_item, data);
+    }
+
+    @Override
+    protected void convert(BaseViewHolder helper, HomeLiveAndVideoBean.VideoCourseBean item) {
+        ImageView im_pic = helper.getView(R.id.im_pic);
+        GlideUtils.INSTANCE.loadImage(getContext(), item.lessonCoverUrl, im_pic);
+        TextView tv_title = helper.getView(R.id.tv_title);
+        tv_title.setText(item.videoGroupName);
+        TextView tv_teacher_name = helper.getView(R.id.tv_teacher_name);
+        tv_teacher_name.setText("老师:" + item.teacherName);
+        TextView tv_price = helper.getView(R.id.tv_price);
+        tv_price.setText(item.lessonPrice + "");
+        TextView tv_course_num = helper.getView(R.id.tv_course_num);
+        tv_course_num.setText(item.lessonCount + "课时");
+        TextView tv_buy_num = helper.getView(R.id.tv_buy_num);
+        tv_buy_num.setText(item.buyCount + "人已购买");
+    }
+}

+ 37 - 0
student/src/main/java/com/cooleshow/student/adapter/HomeWonderfulInfoAdapter.java

@@ -0,0 +1,37 @@
+package com.cooleshow.student.adapter;
+
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.student.R;
+import com.cooleshow.student.bean.AppHomeBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/27 10:37
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeWonderfulInfoAdapter extends BaseQuickAdapter<AppHomeBean.ItemBean, BaseViewHolder> {
+
+    public HomeWonderfulInfoAdapter(List<AppHomeBean.ItemBean> data) {
+        super(R.layout.layout_home_wonderful_info_item, data);
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, AppHomeBean.ItemBean item) {
+        ImageView im_pic=helper.getView(R.id.im_pic);
+        GlideUtils.INSTANCE.loadImage(getContext(),item.coverImage,im_pic);
+        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.createTime);
+    }
+
+}

+ 29 - 0
student/src/main/java/com/cooleshow/student/api/APIService.java

@@ -9,6 +9,9 @@ import static com.cooleshow.base.common.BaseConstant.TEACHER_GROUP;
 import com.cooleshow.base.data.net.BaseResponse;
 import com.cooleshow.student.bean.AddressBean;
 import com.cooleshow.student.bean.AppHomeBean;
+import com.cooleshow.student.bean.HomeLiveAndVideoBean;
+import com.cooleshow.student.bean.HomeStyleBean;
+import com.cooleshow.student.bean.HotAlbumBean;
 import com.cooleshow.student.bean.PayTestBean;
 import com.cooleshow.student.bean.StudentUserInfo;
 import com.cooleshow.usercenter.bean.SetDetailBean;
@@ -156,4 +159,30 @@ public interface APIService {
      */
     @POST(CMS_SERVER + "news/app/home")
     Observable<BaseResponse<AppHomeBean>> appHome(@Body RequestBody body);
+
+    /**
+     * 首页热门专辑
+     *
+     * @param body
+     * @return
+     */
+    @POST(STUDENT_GROUP + "music/album/list")
+    Observable<BaseResponse<HotAlbumBean>> hotAlbumList(@Body RequestBody body);
+
+    /**
+     * 学生-首页-直播课&视频课&最近课程
+     * @param platform
+     * @param version
+     * @return
+     */
+    @GET(STUDENT_GROUP + "courseSchedule/queryLiveAndVideo")
+    Observable<BaseResponse<HomeLiveAndVideoBean>> queryLiveAndVideo(@Query("platform") String platform, @Query("version") String version);
+    /**
+     * 首页老师风采-分页
+     *
+     * @param body
+     * @return
+     */
+    @POST(STUDENT_GROUP + "teacher/stylePage")
+    Observable<BaseResponse<HomeStyleBean>> getStylePage(@Body RequestBody body);
 }

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

@@ -12,8 +12,8 @@ import java.util.List;
 public class AppHomeBean {
     public List<ItemBean> appMenu;
     public List<ItemBean> banner;
-    public List<ItemBean> flashPage;
-    public List<ItemBean> information;
+    public List<ItemBean> flashPage;//dialog
+    public List<ItemBean> information;//资讯
 
     public static class ItemBean implements Serializable {
         /*

+ 105 - 0
student/src/main/java/com/cooleshow/student/bean/HomeLiveAndVideoBean.java

@@ -0,0 +1,105 @@
+package com.cooleshow.student.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/27 14:00
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeLiveAndVideoBean {
+    public List<CourseBean> liveList;
+    public List<VideoCourseBean> videoList;
+    public RecentCoursesBean recentCourses;
+
+    public static class CourseBean {
+        /*
+        	"avatar": "",
+				"backgroundPic": "",
+				"buyCount": 0,
+				"courseGroupId": 0,
+				"courseGroupName": "",
+				"courseGroupPrice": 0,
+				"courseNum": 0,
+				"courseStartTime": "",
+				"realName": "",
+				"subjectId": 0,
+				"subjectName": "",
+				"teacherId": 0,
+				"teacherName": ""
+         */
+        public String avatar;
+        public String backgroundPic;
+        public int buyCount;
+        public long courseGroupId;
+        public String courseGroupName;
+        public double courseGroupPrice;
+        public int courseNum;
+        public String courseStartTime;
+        public String realName;
+        public int subjectId;
+        public String subjectName;
+        public long teacherId;
+        public String teacherName;
+
+    }
+
+    public static class VideoCourseBean{
+        /*
+        "avatar": "",
+				"buyCount": 0,
+				"createTime": "",
+				"lessonCount": 0,
+				"lessonCoverUrl": "",
+				"lessonPrice": 0,
+				"realName": "",
+				"subjectId": 0,
+				"subjectName": "",
+				"teacherId": 0,
+				"teacherName": "",
+				"videoGroupId": 0,
+				"videoGroupName": ""
+         */
+        public String avatar;
+        public int buyCount;
+        public String createTime;
+        public int lessonCount;
+        public String lessonCoverUrl;
+        public double lessonPrice;
+        public String realName;
+        public int subjectId;
+        public String subjectName;
+        public long teacherId;
+        public String teacherName;
+        public long videoGroupId;
+        public String videoGroupName;
+
+    }
+
+    public static class RecentCoursesBean {
+        /*
+        	"avatar": "",
+			"courseGroupId": 0,
+			"courseGroupName": "",
+			"courseId": 0,
+			"courseStartTime": "",
+			"courseType": "",
+			"realName": "",
+			"status": "",
+			"teacherId": 0,
+			"teacherName": ""
+         */
+        public String avatar;
+        public long courseGroupId;
+        public String courseGroupName;
+        public long courseId;
+        public String courseStartTime;
+        public String courseType;
+        public String realName;
+        public String status;
+        public long teacherId;
+        public String teacherName;
+
+    }
+}

+ 59 - 0
student/src/main/java/com/cooleshow/student/bean/HomeStyleBean.java

@@ -0,0 +1,59 @@
+package com.cooleshow.student.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/27 16:07
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeStyleBean {
+    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 {
+        /*
+				"auditVersion": "",
+				"authStatus": "",
+				"avatar": "",
+				"browse": 0,
+				"createTime": "",
+				"describe": "",
+				"id": 0,
+				"liveing": "",
+				"phone": "",
+				"realName": "",
+				"reason": "",
+				"updateTime": "",
+				"userId": 0,
+				"username": "",
+				"verifyUser": "",
+				"verifyUserId": 0,
+				"videoUrl": ""
+         */
+        public String auditVersion;
+        public String authStatus;
+        public String avatar;
+        public int browse;
+        public String createTime;
+        public String describe;
+        public long id;
+        public String liveing;
+        public String phone;
+        public String realName;
+        public String reason;
+        public String updateTime;
+        public long userId;
+        public String username;
+        public String verifyUser;
+        public long verifyUserId;
+        public String videoUrl;
+    }
+}

+ 61 - 0
student/src/main/java/com/cooleshow/student/bean/HotAlbumBean.java

@@ -0,0 +1,61 @@
+package com.cooleshow.student.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/27 11:31
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HotAlbumBean {
+    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 {
+        /*
+        	"albumCoverUrl": "",
+				"albumDesc": "",
+				"albumFavoriteCount": 0,
+				"albumName": "",
+				"albumStatus": "",
+				"albumTag": "",
+				"auditVersion": "",
+				"createBy": 0,
+				"createTime": "",
+				"delFlag": true,
+				"hotFlag": "",
+				"id": 0,
+				"musicSheetCount": 0,
+				"musicTagNames": "",
+				"sortNumber": 0,
+				"topFlag": "",
+				"updateBy": 0,
+				"updateTime": ""
+         */
+        public String albumCoverUrl;
+        public String albumDesc;
+        public int albumFavoriteCount;
+        public String albumName;
+        public String albumStatus;
+        public String albumTag;
+        public String auditVersion;
+        public long createBy;
+        public String createTime;
+        public boolean delFlag;
+        public String hotFlag;
+        public long id;
+        public int musicSheetCount;
+        public String musicTagNames;
+        public int sortNumber;
+        public String topFlag;
+        public long updateBy;
+        public String updateTime;
+    }
+}

+ 9 - 0
student/src/main/java/com/cooleshow/student/contract/HomeContract.java

@@ -2,6 +2,9 @@ package com.cooleshow.student.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
 import com.cooleshow.student.bean.AppHomeBean;
+import com.cooleshow.student.bean.HomeLiveAndVideoBean;
+import com.cooleshow.student.bean.HomeStyleBean;
+import com.cooleshow.student.bean.HotAlbumBean;
 
 /**
  * 创建日期:2022/5/26 10:09
@@ -12,6 +15,12 @@ import com.cooleshow.student.bean.AppHomeBean;
 public interface HomeContract {
     interface HomeView extends BaseView {
         void appHomeSuccess(AppHomeBean appHomeBean);
+
+        void hotAlbumListSuccess(HotAlbumBean data);
+
+        void queryLiveAndVideoSuccess(HomeLiveAndVideoBean data);
+
+        void getStylePageSuccess(HomeStyleBean data);
     }
 
     interface Presenter {

+ 94 - 1
student/src/main/java/com/cooleshow/student/presenter/main/HomePresenter.java

@@ -1,11 +1,17 @@
 package com.cooleshow.student.presenter.main;
 
 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.student.api.APIService;
 import com.cooleshow.student.bean.AppHomeBean;
+import com.cooleshow.student.bean.HomeLiveAndVideoBean;
+import com.cooleshow.student.bean.HomeStyleBean;
+import com.cooleshow.student.bean.HotAlbumBean;
 import com.cooleshow.student.bean.PayTestBean;
 import com.cooleshow.student.contract.HomeContract;
 import com.cooleshow.student.contract.MineContract;
@@ -32,7 +38,7 @@ public class HomePresenter extends BasePresenter<HomeContract.HomeView> implemen
         addSubscribe(create(APIService.class).appHome(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<AppHomeBean>(getView()) {
             @Override
             protected void onSuccess(AppHomeBean data) {
-                if (null!=getView()){
+                if (null != getView()) {
                     getView().appHomeSuccess(data);
                 }
             }
@@ -50,4 +56,91 @@ public class HomePresenter extends BasePresenter<HomeContract.HomeView> implemen
             }
         });
     }
+
+
+    public void userAccountPage() {
+
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.putOpt("platform", "android");
+            jsonObject.putOpt("version", "1");
+            jsonObject.putOpt("page", 1);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).hotAlbumList(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<HotAlbumBean>(getView()) {
+            @Override
+            protected void onSuccess(HotAlbumBean data) {
+                if (getView() != null) {
+                    getView().hotAlbumListSuccess(data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+
+            }
+        });
+    }
+
+    public void queryLiveAndVideo() {
+        addSubscribe(create(APIService.class).queryLiveAndVideo("android", "1"), new BaseObserver<HomeLiveAndVideoBean>(getView()) {
+            @Override
+            protected void onSuccess(HomeLiveAndVideoBean data) {
+                if (getView() != null) {
+                    getView().queryLiveAndVideoSuccess(data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+
+            }
+        });
+    }
+
+    public void getStylePage() {
+
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.putOpt("platform", "android");
+            jsonObject.putOpt("version", "1");
+            jsonObject.putOpt("page", 1);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).getStylePage(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<HomeStyleBean>(getView()) {
+            @Override
+            protected void onSuccess(HomeStyleBean data) {
+                if (getView() != null) {
+                    getView().getStylePageSuccess(data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+
+            }
+        });
+    }
 }

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

@@ -1,20 +1,44 @@
 package com.cooleshow.student.ui.main;
 
+import android.text.TextUtils;
 import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
 
+import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.viewpager.widget.ViewPager;
 
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.bumptech.glide.Glide;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemClickListener;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.base.utils.helper.QMUIDisplayHelper;
+import com.cooleshow.student.R;
+import com.cooleshow.student.adapter.HomeHotAlbumAdapter;
+import com.cooleshow.student.adapter.HomeLiveCourseAdapter;
 import com.cooleshow.student.adapter.HomeMenuPagerAdapter;
+import com.cooleshow.student.adapter.HomeTeacherStyleAdapter;
+import com.cooleshow.student.adapter.HomeVideoCourseAdapter;
+import com.cooleshow.student.adapter.HomeWonderfulInfoAdapter;
 import com.cooleshow.student.bean.AppHomeBean;
+import com.cooleshow.student.bean.HomeLiveAndVideoBean;
+import com.cooleshow.student.bean.HomeStyleBean;
+import com.cooleshow.student.bean.HotAlbumBean;
 import com.cooleshow.student.contract.HomeContract;
 import com.cooleshow.student.databinding.FragmentHomeLayoutBinding;
 import com.cooleshow.student.presenter.main.HomePresenter;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
 import com.youth.banner.Banner;
 import com.youth.banner.adapter.BannerImageAdapter;
 import com.youth.banner.holder.BannerImageHolder;
-import com.youth.banner.indicator.CircleIndicator;
 import com.youth.banner.listener.OnBannerListener;
 
 import java.util.ArrayList;
@@ -29,7 +53,52 @@ import java.util.List;
 public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter> implements HomeContract.HomeView, View.OnClickListener {
     @Override
     public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_wonderful_info_more:
+            case R.id.im_wonderful_info_more:
+                //精彩资讯
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.STUDENT_SPECIAL)
+                        .navigation();
+                break;
+            case R.id.tv_hot_album_more:
+            case R.id.im_hot_album_more:
+                //热门专辑
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.STUDENT_MUSIC_ALBUM)
+                        .navigation();
+                break;
+            case R.id.tv_live_course_more:
+            case R.id.im_live_course_more:
+                //直播课
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.STUDENT_LIVE_CLASS)
+                        .navigation();
+                break;
+            case R.id.tv_video_course_more:
+            case R.id.im_video_course_more:
+                //视频课
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.STUDENT_VIDEO_CLASS)
+                        .navigation();
+                break;
+            case R.id.tv_go_live:
+                //进入直播
+                break;
+            case R.id.tv_teacher_style_more:
+            case R.id.im_teacher_style_more:
+                //老师风采
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.STUDENT_TEACHER_ELEGANT)
+                        .navigation();
+                break;
 
+        }
     }
 
     @Override
@@ -43,14 +112,31 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
     }
 
     private Banner banner;
+    private LinearLayout llIndicator;
 
     @Override
     protected void initView(View rootView) {
         banner = mViewBinding.banner;
-
+        llIndicator = mViewBinding.llIndicator;
+        mViewBinding.tvWonderfulInfoMore.setOnClickListener(this);
+        mViewBinding.imWonderfulInfoMore.setOnClickListener(this);
+        mViewBinding.tvHotAlbumMore.setOnClickListener(this);
+        mViewBinding.imHotAlbumMore.setOnClickListener(this);
+        mViewBinding.tvLiveCourseMore.setOnClickListener(this);
+        mViewBinding.imLiveCourseMore.setOnClickListener(this);
+        mViewBinding.tvVideoCourseMore.setOnClickListener(this);
+        mViewBinding.imVideoCourseMore.setOnClickListener(this);
+        mViewBinding.tvGoLive.setOnClickListener(this);
+        mViewBinding.tvTeacherStyleMore.setOnClickListener(this);
+        mViewBinding.imTeacherStyleMore.setOnClickListener(this);
     }
 
     private void initBanner(List<AppHomeBean.ItemBean> bannerList) {
+        if (null == bannerList || bannerList.size() == 0) {
+            banner.setVisibility(View.GONE);
+            return;
+        }
+        banner.setVisibility(View.VISIBLE);
         //banner自带图片轮播的适配器
         banner.setAdapter(new BannerImageAdapter<AppHomeBean.ItemBean>(bannerList) {
 
@@ -61,13 +147,10 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
 //                                .thumbnail(Glide.with(holder.itemView).load(R.drawable.loading))//加载成功前显示一个loading的加载
                                 //.apply(RequestOptions.bitmapTransform(new RoundedCorners(30)))  //设置图片圆角
                                 .into(holder.imageView);
-                        //关于glide的引用添加:
-                        //implementation 'com.github.bumptech.glide:glide:4.11.0'
-                        //annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
 
                     }
                 }).addBannerLifecycleObserver(this)//添加生命周期观察者
-                .setIntercept(false) //是否要拦截事件
+                .setIntercept(true) //是否要拦截事件
                 .setBannerRound(10f) //圆角
                 .isAutoLoop(true)
                 .removeIndicator()
@@ -75,6 +158,13 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
                 .setOnBannerListener(new OnBannerListener() {
                     @Override
                     public void OnBannerClick(Object data, int position) {
+                        AppHomeBean.ItemBean item = (AppHomeBean.ItemBean) data;
+                        if (!TextUtils.isEmpty(item.linkUrl)) {
+                            ARouter.getInstance()
+                                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                                    .withString(WebConstants.WEB_URL, item.linkUrl)
+                                    .navigation();
+                        }
                     }
                 });
     }
@@ -83,30 +173,237 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
     @Override
     protected void initData() {
         presenter.appHome();
+        presenter.userAccountPage();
+        presenter.queryLiveAndVideo();
+        presenter.getStylePage();
+        mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+                mViewBinding.refreshLayout.finishRefresh();
+                presenter.appHome();
+                presenter.userAccountPage();
+                presenter.queryLiveAndVideo();
+                presenter.getStylePage();
+            }
+        });
 
     }
 
+
     @Override
     public void appHomeSuccess(AppHomeBean appHomeBean) {
         initBanner(appHomeBean.banner);
         initMenu(appHomeBean.appMenu);
+        initWonderfulInfo(appHomeBean.information);
+    }
+
+    @Override
+    public void hotAlbumListSuccess(HotAlbumBean data) {
+        if (null == data || null == data.rows || data.rows.size() == 0) {
+            mViewBinding.clHotAlbum.setVisibility(View.GONE);
+            return;
+        }
+        mViewBinding.clHotAlbum.setVisibility(View.VISIBLE);
+        LinearLayoutManager manager = new LinearLayoutManager(getContext());
+        manager.setOrientation(LinearLayoutManager.HORIZONTAL);
+        mViewBinding.rvHotAlbum.setLayoutManager(manager);
+        HomeHotAlbumAdapter albumAdapter = new HomeHotAlbumAdapter(data.rows);
+        mViewBinding.rvHotAlbum.setAdapter(albumAdapter);
+        albumAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                HotAlbumBean.RowsBean item = (HotAlbumBean.RowsBean) adapter.getItem(position);
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.STUDENT_MUSIC_ALBUM_DETAIL + item.id)
+                        .navigation();
+            }
+        });
+
+    }
+
+    @Override
+    public void queryLiveAndVideoSuccess(HomeLiveAndVideoBean data) {
+        initLiveCourse(data.liveList);
+        initVideoCourse(data.videoList);
+        initRecentLive(data.recentCourses);
+    }
+
+    @Override
+    public void getStylePageSuccess(HomeStyleBean data) {
+        if (null == data.rows || data.rows.size() == 0) {
+            mViewBinding.clTeacherStyle.setVisibility(View.GONE);
+            return;
+        }
+        mViewBinding.clTeacherStyle.setVisibility(View.VISIBLE);
+        GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 2);
+        mViewBinding.rvTeacherStyle.setLayoutManager(gridLayoutManager);
+        HomeTeacherStyleAdapter homeTeacherStyleAdapter = new HomeTeacherStyleAdapter(data.rows);
+        mViewBinding.rvTeacherStyle.setAdapter(homeTeacherStyleAdapter);
+        homeTeacherStyleAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                HomeStyleBean.RowsBean item = (HomeStyleBean.RowsBean) adapter.getItem(position);
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.STUDENT_TEACHER_HOME + item.userId)
+                        .navigation();
+
+            }
+        });
+
+    }
+
+    private void initRecentLive(HomeLiveAndVideoBean.RecentCoursesBean recentCourses) {
+        if (null == recentCourses) {
+            mViewBinding.clLive.setVisibility(View.GONE);
+            return;
+        }
+        mViewBinding.clLive.setVisibility(View.VISIBLE);
+        GlideUtils.INSTANCE.loadImage(getContext(), recentCourses.avatar, mViewBinding.imLiveHeader, R.drawable.icon_student_default_head);
+        mViewBinding.tvLiveTitle.setText(recentCourses.courseGroupName);
+        mViewBinding.tvLiveTime.setText(recentCourses.courseStartTime);
+    }
+
+    private void initLiveCourse(List<HomeLiveAndVideoBean.CourseBean> liveList) {
+        if (null == liveList || liveList.size() == 0) {
+            mViewBinding.clLiveCourse.setVisibility(View.GONE);
+            return;
+        }
+        mViewBinding.clLiveCourse.setVisibility(View.VISIBLE);
+
+        LinearLayoutManager manager = new LinearLayoutManager(getContext());
+        manager.setOrientation(LinearLayoutManager.VERTICAL);
+        mViewBinding.rvLiveCourse.setLayoutManager(manager);
+        HomeLiveCourseAdapter homeLiveCourseAdapter = new HomeLiveCourseAdapter(liveList);
+        mViewBinding.rvLiveCourse.setAdapter(homeLiveCourseAdapter);
+        homeLiveCourseAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+    
+            }
+        });
+    }
+
+    private void initVideoCourse(List<HomeLiveAndVideoBean.VideoCourseBean> liveList) {
+        if (null == liveList || liveList.size() == 0) {
+            mViewBinding.clVideoCourse.setVisibility(View.GONE);
+            return;
+        }
+        mViewBinding.clVideoCourse.setVisibility(View.VISIBLE);
+
+        LinearLayoutManager manager = new LinearLayoutManager(getContext());
+        manager.setOrientation(LinearLayoutManager.VERTICAL);
+        mViewBinding.rvVideoCourse.setLayoutManager(manager);
+        HomeVideoCourseAdapter homeLiveCourseAdapter = new HomeVideoCourseAdapter(liveList);
+        mViewBinding.rvVideoCourse.setAdapter(homeLiveCourseAdapter);
+        homeLiveCourseAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                HomeLiveAndVideoBean.VideoCourseBean item = (HomeLiveAndVideoBean.VideoCourseBean) adapter.getItem(position);
+
+            }
+        });
     }
 
+
+    private List<Fragment> fragments = new ArrayList<>();
+
     private void initMenu(List<AppHomeBean.ItemBean> menuList) {
-        List<Fragment> fragments = new ArrayList<>();
-        int count = menuList.size() / 4;
-        if (menuList.size() % 4 > 0) {
+        fragments.clear();
+        int count = menuList.size() / 5;
+        if (menuList.size() % 5 > 0) {
             count++;
         }
 
 //        menuList.
         for (int i = 0; i < count; i++) {
-            List<AppHomeBean.ItemBean> dataList=new ArrayList<>();
-            for (int j = i * 4; j < menuList.size() && j < (i + 1) * 4; j++) {
+            List<AppHomeBean.ItemBean> dataList = new ArrayList<>();
+            for (int j = i * 5; j < menuList.size() && j < (i + 1) * 5; j++) {
                 dataList.add(menuList.get(j));
             }
             fragments.add(HomeMenuFragment.newInstance(dataList));
         }
+        if (fragments.size() == 0) {
+            mViewBinding.viewpagerMenu.setVisibility(View.GONE);
+            return;
+        }
+        mViewBinding.viewpagerMenu.setVisibility(View.VISIBLE);
         mViewBinding.viewpagerMenu.setAdapter(new HomeMenuPagerAdapter(getParentFragmentManager(), fragments));
+        initPoint();
+        mViewBinding.viewpagerMenu.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+            @Override
+            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+                position = position % fragments.size();// 需要对position的值进行重新赋值,否则会造成数组越界
+                // 更新小圆点的显示
+                for (int i = 0; i < fragments.size(); i++) {
+                    ImageView iv = (ImageView) llIndicator.getChildAt(i);
+                    // 当前滑到的是那一页就让第几个小圆点处于选中状态
+                    if (position == i) {
+                        iv.setImageResource(R.drawable.bg_2dc7aa_indicator);
+                    } else {
+                        iv.setImageResource(R.drawable.bg_f2f2f2_indicator);
+                    }
+                }
+            }
+
+            @Override
+            public void onPageSelected(int position) {
+
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int state) {
+
+            }
+        });
+
+    }
+
+    /**
+     * 初始化指示器
+     */
+    private void initPoint() {
+        for (int i = 0; i < fragments.size(); i++) {
+            // 往llContainer添加一个小圆点
+            ImageView iv = new ImageView(getContext());
+            //设置背景
+            iv.setImageResource(R.drawable.bg_f2f2f2_indicator);
+            //设置大小
+            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(QMUIDisplayHelper.dp2px(getContext(), 17), QMUIDisplayHelper.dp2px(getContext(), 4));
+            iv.setLayoutParams(params);
+            // 默认第0个小圆点显示红色
+            if (i == 0) {
+                iv.setEnabled(true);
+            } else {
+                iv.setEnabled(false);
+            }
+            //添加到LinearLayout中
+            llIndicator.addView(iv);
+        }
+    }
+
+    private void initWonderfulInfo(List<AppHomeBean.ItemBean> information) {
+        if (null == information || information.size() == 0) {
+            mViewBinding.clWonderfulInfo.setVisibility(View.GONE);
+            return;
+        }
+        mViewBinding.clWonderfulInfo.setVisibility(View.VISIBLE);
+        LinearLayoutManager manager = new LinearLayoutManager(getContext());
+        manager.setOrientation(LinearLayoutManager.VERTICAL);
+        mViewBinding.rvWonderfulInfo.setLayoutManager(manager);
+        HomeWonderfulInfoAdapter wonderfulInfoAdapter = new HomeWonderfulInfoAdapter(information);
+        mViewBinding.rvWonderfulInfo.setAdapter(wonderfulInfoAdapter);
+        wonderfulInfoAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                AppHomeBean.ItemBean item = (AppHomeBean.ItemBean) adapter.getItem(position);
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.STUDENT_SPECIAL_DETAIL + item.id)
+                        .navigation();
+
+            }
+        });
     }
 }

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

@@ -1,11 +1,18 @@
 package com.cooleshow.student.ui.main;
 
 import android.os.Bundle;
+import android.text.TextUtils;
 import android.view.View;
 
+import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemClickListener;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.student.R;
 import com.cooleshow.student.adapter.HomeMenuItemAdapter;
@@ -54,11 +61,22 @@ public class HomeMenuFragment extends BaseMVPFragment<FragmentHomeMenuBinding, H
     protected void initView(View rootView) {
         itemBeanList = (List<AppHomeBean.ItemBean>) getArguments().getSerializable("itemBeanList");
         RecyclerView rvMenu = mViewBinding.rvMenu;
-        GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 4);
+        GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 5);
         rvMenu.setLayoutManager(gridLayoutManager);
         HomeMenuItemAdapter addPhotoListAdapter = new HomeMenuItemAdapter(itemBeanList);
         rvMenu.setAdapter(addPhotoListAdapter);
-
+        addPhotoListAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                AppHomeBean.ItemBean item = (AppHomeBean.ItemBean) adapter.getItem(position);
+                if (!TextUtils.isEmpty(item.linkUrl)) {
+                    ARouter.getInstance()
+                            .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                            .withString(WebConstants.WEB_URL, item.linkUrl)
+                            .navigation();
+                }
+            }
+        });
     }
 
     @Override

+ 11 - 11
student/src/main/java/com/cooleshow/student/ui/mine/PayTestActivity.java

@@ -11,6 +11,7 @@ import android.view.View;
 import androidx.annotation.Nullable;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alipay.sdk.app.EnvUtils;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
@@ -69,21 +70,18 @@ public class PayTestActivity extends BaseMVPActivity<ActivityPayTestBinding, Pay
                 req.packageValue = weixinPayInfo.getPackageValue();
                 req.sign = weixinPayInfo.getSign();*/
 
-             /*   req.appId="wx149a928c415c137a";
-                req.partnerId="1625930034";
-                req.prepayId="wx261155254861066e2f36eef49c8b970000";
-                req.packageValue="Sign=WXPay";
-                req.nonceStr="ZHAHmiQmqD7E4qKGqcceTHJ1j1vCtuYJ";
-                req.timeStamp="1653537327";
-                req.sign="7364A25C06D2C99774EEFA1D1625E4F4";*/
+            /*
+            {\"packageValue\":\"Sign=WXPay\",\"appid\":\"wx149a928c415c137a\",\"sign\":\"",\"partnerid\":\"1625930034\",\"prepayid\":\"wx2714122960625249e527c060d8fdb50000\",\"noncestr\":\"abBAT62fVYDFooWwkk2W5C1a6p9y4PD6\",\"timestamp\":\"1653631949\"}"
+    },
+             */
 
                      req.appId="wx149a928c415c137a";
                 req.partnerId="1625930034";
-                req.prepayId="wx26160134460852b370615e815a964e0000";
+                req.prepayId="wx2714122960625249e527c060d8fdb50000";
                 req.packageValue="Sign=WXPay";
-                req.nonceStr="BghF8ntwjEWX75cLOprfQBT2aPesy9dN";
-                req.timeStamp="1653552095";
-                req.sign="JU5+1rCjvkIMrtYNsrEt9uRUu53MF51vp/izZV4yhvxIJY1no+L0WBHRTgCfeckgsdcCyn1LJTvcRSCiG4NpgcGahtsuQTMvO5fxgimJ/eSZl20jho11o9rJOcRmGKVSq/nQMUJeRMWy6FUbT857yWIzIQjQVLk0LE0yMe1SlyD0WgDr9Wt0FjaS7mplBk3d6pF2EMsWhgylXna/n5AdLLRs3ZV5x/DO7w/yemuKUgqmmRbVnt2T/ygbHl/p8O+Ggmud6ES7ZyVWH0un7lZt1B1F+g+eunOk5dxfnn/6m8YyEOXXzg+Zzyg+nRzFpT0E4BeDO4dy5wfrLNlImM4keA==";
+                req.nonceStr="abBAT62fVYDFooWwkk2W5C1a6p9y4PD6";
+                req.timeStamp="1653631949";
+                req.sign="RsDZRGgfNjL4FJqwPg1Mp/iLrbSZqaWVG6yX22Nh+EF2qJXkGAqGP1iDU/o7CSVctyg3xfdOzX1Q2vAvBJrf9rVG5H9+1cfPf5UMkn4VWLKn8JloD6XdSp2XRO+nxG16C8FZ13LXCH0O/xD5A48Rl7JduUr3/N8NIheB+Qz/kPWMwZTmZ0E/WVfh4NiJRK5BoBII4Eu0NAAxDMZV+fziXBmgSh5xkQxPcqSL9YWYBr5furqBnjlFXV5Xa7kAQgnxdCUib9FnBCGnSwba9UBQf1KAlsc4hYDV0kPEVTYxUKjASQsMDg9S3OLMpsMxBv+Do1DTAnisxvkT0Ubi5BbaDA==";
 
 
 //                    req.extData			= "app data"; // optional
@@ -105,6 +103,8 @@ public class PayTestActivity extends BaseMVPActivity<ActivityPayTestBinding, Pay
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         StatusBarUtil.setStatusBarDarkTheme(this, true);
+        //沙箱环境支付
+        EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
         api = WXAPIFactory.createWXAPI(this, null);
         api.registerApp("wx149a928c415c137a");
     }

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

@@ -47,7 +47,7 @@ public class PersonalCertificationActivity extends BaseMVPActivity<ActivityPerso
                 try {
                     jsonObjectC.putOpt("realName", name);
                     jsonObjectC.putOpt("idCardNo", certificateNum);
-                    jsonObjectC.putOpt("save", false);
+                    jsonObjectC.putOpt("save", true);
                 } catch (JSONException e) {
                     e.printStackTrace();
                 }

BIN
student/src/main/res/drawable-xhdpi/icon_home_live_clock.png


BIN
student/src/main/res/drawable-xxhdpi/icon_home_live_clock.png


+ 6 - 0
student/src/main/res/drawable/bg_2dc7aa_indicator.xml

@@ -0,0 +1,6 @@
+<?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_2dc7aa" />
+    <corners android:radius="2dp"/>
+</shape>

+ 6 - 0
student/src/main/res/drawable/bg_434343_raduis.xml

@@ -0,0 +1,6 @@
+<?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_4d434343" />
+    <corners android:radius="10dp"/>
+</shape>

+ 6 - 0
student/src/main/res/drawable/bg_f2f2f2_indicator.xml

@@ -0,0 +1,6 @@
+<?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_f2f2f2" />
+    <corners android:radius="2dp"/>
+</shape>

+ 7 - 0
student/src/main/res/drawable/bg_white_30dp.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/white" />
+    <corners
+        android:radius="@dimen/dp_30" />
+</shape>

+ 7 - 0
student/src/main/res/drawable/bg_white_8_10dp.xml

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

+ 1 - 43
student/src/main/res/layout/activity_personal_certification.xml

@@ -54,48 +54,6 @@
             app:layout_constraintLeft_toLeftOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/et_name" />
 
-        <TextView
-            android:id="@+id/tv_certificate_type"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="27dp"
-            android:layout_marginTop="16dp"
-            android:text="证件类型"
-            android:textColor="@color/black"
-            android:textSize="@dimen/sp_18"
-            android:textStyle="bold"
-            app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/view_line1" />
-
-        <TextView
-            android:id="@+id/tv_select_certificate_type"
-            android:layout_width="wrap_content"
-            android:layout_height="45dp"
-            android:layout_marginLeft="27dp"
-            android:gravity="center"
-            android:text="请选择"
-            android:textSize="@dimen/sp_16"
-            app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/tv_certificate_type" />
-
-        <ImageView
-            android:layout_width="@dimen/dp_12"
-            android:layout_height="@dimen/dp_7"
-            android:layout_marginLeft="5dp"
-            android:background="@drawable/icon_go_down"
-            app:layout_constraintBottom_toBottomOf="@+id/tv_select_certificate_type"
-            app:layout_constraintLeft_toRightOf="@+id/tv_select_certificate_type"
-            app:layout_constraintTop_toTopOf="@+id/tv_select_certificate_type" />
-
-        <View
-            android:id="@+id/view_line2"
-            android:layout_width="match_parent"
-            android:layout_height="1dp"
-            android:layout_marginLeft="34dp"
-            android:layout_marginRight="35dp"
-            app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/tv_select_certificate_type" />
-
 
         <TextView
             android:id="@+id/tv_certificate_num"
@@ -108,7 +66,7 @@
             android:textSize="@dimen/sp_18"
             android:textStyle="bold"
             app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/view_line2" />
+            app:layout_constraintTop_toBottomOf="@+id/view_line1" />
 
         <EditText
             android:id="@+id/et_certificate_num"

+ 455 - 72
student/src/main/res/layout/fragment_home_layout.xml

@@ -1,83 +1,466 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:background="@color/color_f7f8f9"
+    android:orientation="vertical">
 
-    <LinearLayout
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical">
+        android:layout_height="@dimen/dp_85">
 
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/dp_85">
-
-            <TextView
-                android:id="@+id/tv_title"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/dp_20"
-                android:layout_marginBottom="@dimen/dp_9"
-                android:text="萨克斯"
-                android:textColor="@color/color_333333"
-                android:textSize="@dimen/sp_18"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintLeft_toLeftOf="parent" />
-
-            <ImageView
-                android:layout_width="@dimen/dp_18"
-                android:layout_height="@dimen/dp_18"
-                android:layout_marginLeft="@dimen/dp_8"
-                android:background="@drawable/icon_black_down"
-                app:layout_constraintBottom_toBottomOf="@+id/tv_title"
-                app:layout_constraintLeft_toRightOf="@+id/tv_title"
-                app:layout_constraintTop_toTopOf="@+id/tv_title" />
-
-
-            <ImageView
-                android:id="@+id/im_message"
-                android:layout_width="@dimen/dp_33"
-                android:layout_height="@dimen/dp_33"
-                android:layout_marginRight="@dimen/dp_17"
-                android:padding="@dimen/dp_5"
-                android:src="@drawable/icon_top_message"
-                app:layout_constraintBottom_toBottomOf="@+id/tv_title"
-                app:layout_constraintRight_toRightOf="parent"
-                app:layout_constraintTop_toTopOf="@+id/tv_title" />
-
-            <View
-                android:id="@+id/view_unread_message"
-                android:layout_width="@dimen/dp_7"
-                android:layout_height="@dimen/dp_7"
-                android:layout_marginTop="5dp"
-                android:layout_marginRight="5dp"
-                android:background="@drawable/bg_red_ovil"
-                android:visibility="gone"
-                app:layout_constraintRight_toRightOf="@+id/im_message"
-                app:layout_constraintTop_toTopOf="@+id/im_message"
-                tools:visibility="visible" />
-        </androidx.constraintlayout.widget.ConstraintLayout>
-
-
-        <com.youth.banner.Banner
-            android:id="@+id/banner"
+        <TextView
+            android:id="@+id/tv_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/dp_20"
+            android:layout_marginBottom="@dimen/dp_9"
+            android:text="萨克斯"
+            android:textColor="@color/color_333333"
+            android:textSize="@dimen/sp_18"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent" />
+
+        <ImageView
+            android:layout_width="@dimen/dp_18"
+            android:layout_height="@dimen/dp_18"
+            android:layout_marginLeft="@dimen/dp_8"
+            android:background="@drawable/icon_black_down"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_title"
+            app:layout_constraintLeft_toRightOf="@+id/tv_title"
+            app:layout_constraintTop_toTopOf="@+id/tv_title" />
+
+
+        <ImageView
+            android:id="@+id/im_message"
+            android:layout_width="@dimen/dp_33"
+            android:layout_height="@dimen/dp_33"
+            android:layout_marginRight="@dimen/dp_17"
+            android:padding="@dimen/dp_5"
+            android:src="@drawable/icon_top_message"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_title"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="@+id/tv_title" />
+
+        <View
+            android:id="@+id/view_unread_message"
+            android:layout_width="@dimen/dp_7"
+            android:layout_height="@dimen/dp_7"
+            android:layout_marginTop="5dp"
+            android:layout_marginRight="5dp"
+            android:background="@drawable/bg_red_ovil"
+            android:visibility="gone"
+            app:layout_constraintRight_toRightOf="@+id/im_message"
+            app:layout_constraintTop_toTopOf="@+id/im_message"
+            tools:visibility="visible" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <com.scwang.smart.refresh.header.ClassicsHeader
             android:layout_width="match_parent"
-            android:layout_height="@dimen/dp_132"
-            android:layout_marginLeft="@dimen/dp_14"
-            android:layout_marginTop="@dimen/dp_10"
-            android:layout_marginRight="@dimen/dp_14"
-            app:banner_indicator_normal_color="@color/transparent"
-            app:banner_indicator_selected_color="@color/transparent" />
-
-        <androidx.viewpager.widget.ViewPager
-            android:id="@+id/viewpager_menu"
+            android:layout_height="wrap_content" />
+
+        <androidx.core.widget.NestedScrollView
             android:layout_width="match_parent"
-            android:layout_height="@dimen/dp_93"
-            android:layout_marginTop="@dimen/dp_8"
-            android:layout_marginBottom="@dimen/dp_2" />
+            android:layout_height="match_parent"
+            android:scrollbars="none">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:descendantFocusability="blocksDescendants"
+                android:orientation="vertical">
+
+
+                <com.youth.banner.Banner
+                    android:id="@+id/banner"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/dp_132"
+                    android:layout_marginLeft="@dimen/dp_14"
+                    android:layout_marginTop="@dimen/dp_10"
+                    android:layout_marginRight="@dimen/dp_14"
+                    app:banner_indicator_normal_color="@color/transparent"
+                    app:banner_indicator_selected_color="@color/transparent" />
+
+
+                <androidx.viewpager.widget.ViewPager
+                    android:id="@+id/viewpager_menu"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/dp_93"
+                    android:layout_marginTop="@dimen/dp_8"
+                    android:layout_marginBottom="@dimen/dp_2" />
+
+
+                <LinearLayout
+                    android:id="@+id/ll_indicator"
+                    android:layout_width="wrap_content"
+                    android:layout_height="@dimen/dp_4"
+                    android:layout_gravity="center_horizontal"
+                    android:layout_marginTop="2dp"
+                    android:background="@drawable/bg_f2f2f2_indicator"
+                    android:gravity="center"
+                    android:orientation="horizontal">
+
+                </LinearLayout>
+
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/cl_live"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/dp_60"
+                    android:layout_marginLeft="@dimen/dp_14"
+                    android:layout_marginTop="@dimen/dp_17"
+                    android:layout_marginRight="@dimen/dp_14"
+                    android:background="@drawable/bg_white_30dp"
+                    android:visibility="visible">
+
+                    <de.hdodenhof.circleimageview.CircleImageView
+                        android:id="@+id/im_live_header"
+                        android:layout_width="@dimen/dp_48"
+                        android:layout_height="@dimen/dp_48"
+                        android:layout_marginLeft="@dimen/dp_7"
+                        android:src="@drawable/icon_student_default_head"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <ImageView
+                        android:layout_width="@dimen/dp_20"
+                        android:layout_height="@dimen/dp_20"
+                        android:layout_marginLeft="@dimen/dp_41"
+                        android:background="@drawable/icon_home_live_clock"
+                        app:layout_constraintBottom_toBottomOf="@+id/im_live_header"
+                        app:layout_constraintLeft_toLeftOf="parent" />
+
+
+                    <TextView
+                        android:id="@+id/tv_live_title"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/dp_74"
+                        android:layout_marginTop="@dimen/dp_5"
+                        android:layout_marginRight="@dimen/dp_120"
+                        android:ellipsize="end"
+                        android:lines="1"
+                        android:text="竖笛直播课即将开始"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="@+id/im_live_header" />
+
+                    <TextView
+                        android:id="@+id/tv_live_time"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/dp_74"
+                        android:layout_marginBottom="@dimen/dp_5"
+                        android:text="今日 16:30-17:05"
+                        android:textColor="@color/color_999999"
+                        android:textSize="@dimen/sp_12"
+                        app:layout_constraintBottom_toBottomOf="@+id/im_live_header"
+                        app:layout_constraintLeft_toLeftOf="parent" />
+
+                    <View
+                        android:id="@+id/view_live_line"
+                        android:layout_width="1dp"
+                        android:layout_height="@dimen/dp_30"
+                        android:layout_marginRight="@dimen/dp_118"
+                        android:background="@color/color_d8d8d8"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/tv_go_live"
+                        android:layout_width="@dimen/dp_72"
+                        android:layout_height="@dimen/dp_32"
+                        android:layout_marginRight="@dimen/dp_19"
+                        android:background="@drawable/shape_course_status_ing"
+                        android:gravity="center"
+                        android:text="进入课堂"
+                        android:textColor="@color/white"
+                        android:textSize="@dimen/sp_13"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/cl_hot_album"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/dp_10"
+                    android:visibility="gone">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="@dimen/dp_37"
+                        android:layout_marginLeft="@dimen/dp_16"
+                        android:gravity="center"
+                        android:text="热门专辑"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_16"
+                        android:textStyle="bold"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/tv_hot_album_more"
+                        android:layout_width="wrap_content"
+                        android:layout_height="@dimen/dp_37"
+                        android:layout_marginRight="@dimen/dp_38"
+                        android:gravity="center"
+                        android:text="更多"
+                        android:textColor="@color/color_999999"
+                        android:textSize="@dimen/sp_12"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <ImageView
+                        android:id="@+id/im_hot_album_more"
+                        android:layout_width="@dimen/dp_10"
+                        android:layout_height="@dimen/dp_10"
+                        android:layout_marginRight="@dimen/dp_20"
+                        android:background="@drawable/icon_next_right"
+                        app:layout_constraintBottom_toBottomOf="@+id/tv_hot_album_more"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="@+id/tv_hot_album_more" />
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/rv_hot_album"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:overScrollMode="never"
+                        android:paddingLeft="@dimen/dp_7"
+                        android:paddingRight="@dimen/dp_7"
+                        android:scrollbars="none"
+                        app:layout_constraintTop_toBottomOf="@+id/tv_hot_album_more" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/cl_live_course"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/dp_10"
+                    android:visibility="gone">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="@dimen/dp_37"
+                        android:layout_marginLeft="@dimen/dp_16"
+                        android:gravity="center"
+                        android:text="直播课"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_16"
+                        android:textStyle="bold"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/tv_live_course_more"
+                        android:layout_width="wrap_content"
+                        android:layout_height="@dimen/dp_37"
+                        android:layout_marginRight="@dimen/dp_38"
+                        android:gravity="center"
+                        android:text="更多"
+                        android:textColor="@color/color_999999"
+                        android:textSize="@dimen/sp_12"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <ImageView
+                        android:id="@+id/im_live_course_more"
+                        android:layout_width="@dimen/dp_10"
+                        android:layout_height="@dimen/dp_10"
+                        android:layout_marginRight="@dimen/dp_20"
+                        android:background="@drawable/icon_next_right"
+                        app:layout_constraintBottom_toBottomOf="@+id/tv_live_course_more"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="@+id/tv_live_course_more" />
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/rv_live_course"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:overScrollMode="never"
+                        android:paddingTop="@dimen/dp_7"
+                        android:scrollbars="none"
+                        app:layout_constraintTop_toBottomOf="@+id/tv_live_course_more" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/cl_video_course"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/dp_10"
+                    android:visibility="gone">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="@dimen/dp_37"
+                        android:layout_marginLeft="@dimen/dp_16"
+                        android:gravity="center"
+                        android:text="视频课"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_16"
+                        android:textStyle="bold"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/tv_video_course_more"
+                        android:layout_width="wrap_content"
+                        android:layout_height="@dimen/dp_37"
+                        android:layout_marginRight="@dimen/dp_38"
+                        android:gravity="center"
+                        android:text="更多"
+                        android:textColor="@color/color_999999"
+                        android:textSize="@dimen/sp_12"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <ImageView
+                        android:id="@+id/im_video_course_more"
+                        android:layout_width="@dimen/dp_10"
+                        android:layout_height="@dimen/dp_10"
+                        android:layout_marginRight="@dimen/dp_20"
+                        android:background="@drawable/icon_next_right"
+                        app:layout_constraintBottom_toBottomOf="@+id/tv_video_course_more"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="@+id/tv_video_course_more" />
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/rv_video_course"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:overScrollMode="never"
+                        android:paddingTop="@dimen/dp_7"
+                        android:scrollbars="none"
+                        app:layout_constraintTop_toBottomOf="@+id/tv_video_course_more" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/cl_teacher_style"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/dp_10"
+                    android:visibility="gone">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="@dimen/dp_37"
+                        android:layout_marginLeft="@dimen/dp_16"
+                        android:gravity="center"
+                        android:text="老师风采"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_16"
+                        android:textStyle="bold"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/tv_teacher_style_more"
+                        android:layout_width="wrap_content"
+                        android:layout_height="@dimen/dp_37"
+                        android:layout_marginRight="@dimen/dp_38"
+                        android:gravity="center"
+                        android:text="更多"
+                        android:textColor="@color/color_999999"
+                        android:textSize="@dimen/sp_12"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <ImageView
+                        android:id="@+id/im_teacher_style_more"
+                        android:layout_width="@dimen/dp_10"
+                        android:layout_height="@dimen/dp_10"
+                        android:layout_marginRight="@dimen/dp_20"
+                        android:background="@drawable/icon_next_right"
+                        app:layout_constraintBottom_toBottomOf="@+id/tv_teacher_style_more"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="@+id/tv_teacher_style_more" />
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/rv_teacher_style"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:overScrollMode="never"
+                        android:paddingLeft="@dimen/dp_8"
+                        android:paddingTop="@dimen/dp_7"
+                        android:paddingRight="@dimen/dp_8"
+                        android:scrollbars="none"
+                        app:layout_constraintTop_toBottomOf="@+id/tv_teacher_style_more" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/cl_wonderful_info"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/dp_10"
+                    android:visibility="gone">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="@dimen/dp_37"
+                        android:layout_marginLeft="@dimen/dp_16"
+                        android:gravity="center"
+                        android:text="精彩资讯"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_16"
+                        android:textStyle="bold"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/tv_wonderful_info_more"
+                        android:layout_width="wrap_content"
+                        android:layout_height="@dimen/dp_37"
+                        android:layout_marginRight="@dimen/dp_38"
+                        android:gravity="center"
+                        android:text="更多"
+                        android:textColor="@color/color_999999"
+                        android:textSize="@dimen/sp_12"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <ImageView
+                        android:id="@+id/im_wonderful_info_more"
+                        android:layout_width="@dimen/dp_10"
+                        android:layout_height="@dimen/dp_10"
+                        android:layout_marginRight="@dimen/dp_20"
+                        android:background="@drawable/icon_next_right"
+                        app:layout_constraintBottom_toBottomOf="@+id/tv_wonderful_info_more"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="@+id/tv_wonderful_info_more" />
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/rv_wonderful_info"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/dp_15"
+                        android:layout_marginRight="@dimen/dp_13"
+                        android:background="@drawable/bg_white_10dp"
+                        android:overScrollMode="never"
+                        android:scrollbars="none"
+                        app:layout_constraintTop_toBottomOf="@+id/tv_wonderful_info_more" />
 
-    </LinearLayout>
+                </androidx.constraintlayout.widget.ConstraintLayout>
 
-</androidx.core.widget.NestedScrollView>
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/dp_100"
+                    android:focusable="true" />
+            </LinearLayout>
+        </androidx.core.widget.NestedScrollView>
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+</LinearLayout>

+ 52 - 0
student/src/main/res/layout/layout_home_hot_album_item.xml

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+
+    <View
+        android:layout_width="@dimen/dp_82"
+        android:layout_height="@dimen/dp_82"
+        android:layout_marginLeft="@dimen/dp_18"
+        android:layout_marginTop="@dimen/dp_6"
+        android:background="@drawable/bg_white_10dp"
+        app:layout_constraintLeft_toLeftOf="@+id/im_pic"
+        app:layout_constraintTop_toTopOf="@+id/im_pic" />
+
+    <ImageView
+        android:id="@+id/im_pic"
+        android:layout_width="@dimen/dp_94"
+        android:layout_height="@dimen/dp_94"
+        android:layout_marginLeft="@dimen/dp_7"
+        android:layout_marginTop="@dimen/dp_4"
+        android:layout_marginRight="@dimen/dp_7"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <LinearLayout
+        android:layout_width="@dimen/dp_66"
+        android:layout_height="@dimen/dp_20"
+        android:layout_marginBottom="@dimen/dp_6"
+        android:background="@drawable/bg_434343_raduis"
+        android:gravity="center"
+        android:orientation="horizontal"
+        app:layout_constraintBottom_toBottomOf="@+id/im_pic"
+        app:layout_constraintLeft_toLeftOf="@+id/im_pic"
+        app:layout_constraintRight_toRightOf="@+id/im_pic">
+
+        <TextView
+            android:id="@+id/tv_collect_num"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@color/color_63ffe1"
+            android:textSize="@dimen/sp_11" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="人收藏"
+            android:textColor="@color/white"
+            android:textSize="@dimen/sp_11" />
+    </LinearLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 115 - 0
student/src/main/res/layout/layout_home_live_course_item.xml

@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/dp_116"
+    android:layout_marginLeft="@dimen/dp_14"
+    android:layout_marginTop="@dimen/dp_5"
+    android:layout_marginRight="@dimen/dp_14"
+    android:layout_marginBottom="@dimen/dp_5"
+    android:background="@drawable/bg_white_10dp">
+
+    <com.cooleshow.base.widgets.QMUIRadiusImageView
+        android:id="@+id/im_pic"
+        android:layout_width="@dimen/dp_130"
+        android:layout_height="@dimen/dp_96"
+        android:layout_marginLeft="@dimen/dp_10"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:qmui_corner_radius="@dimen/dp_10" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_148"
+        android:layout_marginTop="@dimen/dp_4"
+        android:layout_marginRight="@dimen/dp_8"
+        android:ellipsize="end"
+        android:lines="1"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_14"
+        android:textStyle="bold"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/im_pic"
+        tools:text="竖笛基础入门练习" />
+
+    <TextView
+        android:id="@+id/tv_teacher_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_8"
+        android:layout_marginTop="@dimen/dp_3"
+        android:textColor="@color/color_6a6a6a"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintLeft_toRightOf="@+id/im_pic"
+        app:layout_constraintTop_toBottomOf="@+id/tv_title"
+        tools:text="老师:李云磊" />
+
+    <TextView
+        android:id="@+id/tv_start_time"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_8"
+        android:layout_marginTop="@dimen/dp_3"
+        android:textColor="@color/color_6a6a6a"
+        android:textSize="@dimen/sp_11"
+        app:layout_constraintLeft_toRightOf="@+id/im_pic"
+        app:layout_constraintTop_toBottomOf="@+id/tv_teacher_name"
+        tools:text="开课时间:2月28日 19:30" />
+
+    <TextView
+        android:id="@+id/tv_money_unit"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_8"
+        android:layout_marginBottom="@dimen/dp_5"
+        android:text="¥"
+        android:textColor="@color/color_fa6400"
+        android:textSize="@dimen/sp_10"
+        app:layout_constraintBottom_toBottomOf="@+id/im_pic"
+        app:layout_constraintLeft_toRightOf="@+id/im_pic" />
+
+    <TextView
+        android:id="@+id/tv_price"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/dp_5"
+        android:textColor="@color/color_fa6400"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintBottom_toBottomOf="@+id/im_pic"
+        app:layout_constraintLeft_toRightOf="@+id/tv_money_unit"
+        tools:text="299" />
+
+    <TextView
+        android:id="@+id/tv_course_num"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_51"
+        android:background="@drawable/shape_couse_type_text_bg"
+        android:paddingLeft="@dimen/dp_4"
+        android:paddingTop="@dimen/dp_2"
+        android:paddingRight="@dimen/dp_4"
+        android:paddingBottom="@dimen/dp_2"
+        android:textColor="@color/color_ff9300"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintBottom_toBottomOf="@+id/tv_price"
+        app:layout_constraintLeft_toRightOf="@+id/im_pic"
+        app:layout_constraintTop_toTopOf="@+id/tv_price"
+        tools:text="12课时" />
+
+
+    <TextView
+        android:id="@+id/tv_buy_num"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="@dimen/dp_10"
+        android:layout_marginBottom="@dimen/dp_16"
+        android:textColor="@color/color_ff802c"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        tools:text="6人已购买" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 68 - 0
student/src/main/res/layout/layout_home_teacher_style_item.xml

@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/dp_164"
+    android:layout_marginLeft="@dimen/dp_6"
+    android:layout_marginRight="@dimen/dp_6"
+    android:layout_marginTop="@dimen/dp_6"
+    android:layout_marginBottom="@dimen/dp_6"
+    android:background="@drawable/bg_white_10dp">
+
+    <com.makeramen.roundedimageview.RoundedImageView
+        android:id="@+id/im_pic"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_100"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:riv_corner_radius_top_left="@dimen/dp_10"
+        app:riv_corner_radius_top_right="@dimen/dp_10" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_7"
+        android:layout_marginTop="@dimen/dp_6"
+        android:layout_marginRight="@dimen/dp_7"
+        android:ellipsize="end"
+        android:lines="1"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/im_pic" />
+
+    <de.hdodenhof.circleimageview.CircleImageView
+        android:id="@+id/im_teacher_header"
+        android:layout_width="@dimen/dp_18"
+        android:layout_height="@dimen/dp_18"
+        android:layout_marginLeft="@dimen/dp_8"
+        android:layout_marginBottom="@dimen/dp_10"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent" />
+
+    <TextView
+        android:id="@+id/tv_teacher_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_6"
+        android:text="张云磊"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintBottom_toBottomOf="@+id/im_teacher_header"
+        app:layout_constraintLeft_toRightOf="@+id/im_teacher_header"
+        app:layout_constraintTop_toTopOf="@+id/im_teacher_header" />
+
+    <TextView
+        android:id="@+id/tv_watch_count"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="@dimen/dp_8"
+        android:text="120观看"
+        android:textColor="@color/color_999999"
+        android:textSize="@dimen/sp_11"
+        app:layout_constraintBottom_toBottomOf="@+id/im_teacher_header"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/im_teacher_header" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 103 - 0
student/src/main/res/layout/layout_home_video_course_item.xml

@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/dp_116"
+    android:layout_marginLeft="@dimen/dp_14"
+    android:layout_marginTop="@dimen/dp_5"
+    android:layout_marginRight="@dimen/dp_14"
+    android:layout_marginBottom="@dimen/dp_5"
+    android:background="@drawable/bg_white_10dp">
+
+    <com.cooleshow.base.widgets.QMUIRadiusImageView
+        android:id="@+id/im_pic"
+        android:layout_width="@dimen/dp_130"
+        android:layout_height="@dimen/dp_96"
+        android:layout_marginLeft="@dimen/dp_10"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:qmui_corner_radius="@dimen/dp_10" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_148"
+        android:layout_marginTop="@dimen/dp_4"
+        android:layout_marginRight="@dimen/dp_8"
+        android:ellipsize="end"
+        android:lines="1"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_14"
+        android:textStyle="bold"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/im_pic"
+        tools:text="竖笛基础入门练习" />
+
+    <TextView
+        android:id="@+id/tv_teacher_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_8"
+        android:layout_marginTop="@dimen/dp_3"
+        android:textColor="@color/color_6a6a6a"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintLeft_toRightOf="@+id/im_pic"
+        app:layout_constraintTop_toBottomOf="@+id/tv_title"
+        tools:text="老师:李云磊" />
+
+    <TextView
+        android:id="@+id/tv_money_unit"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_8"
+        android:layout_marginBottom="@dimen/dp_5"
+        android:text="¥"
+        android:textColor="@color/color_fa6400"
+        android:textSize="@dimen/sp_10"
+        app:layout_constraintBottom_toBottomOf="@+id/im_pic"
+        app:layout_constraintLeft_toRightOf="@+id/im_pic" />
+
+    <TextView
+        android:id="@+id/tv_price"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/dp_5"
+        android:textColor="@color/color_fa6400"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintBottom_toBottomOf="@+id/im_pic"
+        app:layout_constraintLeft_toRightOf="@+id/tv_money_unit"
+        tools:text="299" />
+
+    <TextView
+        android:id="@+id/tv_course_num"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_51"
+        android:background="@drawable/shape_couse_type_text_bg"
+        android:paddingLeft="@dimen/dp_4"
+        android:paddingTop="@dimen/dp_2"
+        android:paddingRight="@dimen/dp_4"
+        android:paddingBottom="@dimen/dp_2"
+        android:textColor="@color/color_ff9300"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintBottom_toBottomOf="@+id/tv_price"
+        app:layout_constraintLeft_toRightOf="@+id/im_pic"
+        app:layout_constraintTop_toTopOf="@+id/tv_price"
+        tools:text="12课时" />
+
+
+    <TextView
+        android:id="@+id/tv_buy_num"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="@dimen/dp_10"
+        android:layout_marginBottom="@dimen/dp_16"
+        android:textColor="@color/color_ff802c"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        tools:text="6人已购买" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 46 - 0
student/src/main/res/layout/layout_home_wonderful_info_item.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+
+    <com.cooleshow.base.widgets.QMUIRadiusImageView
+        android:id="@+id/im_pic"
+        android:layout_width="@dimen/dp_104"
+        android:layout_height="@dimen/dp_72"
+        android:layout_marginLeft="@dimen/dp_8"
+        android:layout_marginTop="@dimen/dp_5"
+        android:layout_marginBottom="@dimen/dp_5"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:qmui_corner_radius="@dimen/dp_5" />
+
+    <TextView
+        android:id="@+id/tv_content"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_122"
+        android:layout_marginTop="@dimen/dp_1"
+        android:layout_marginRight="@dimen/dp_14"
+        android:ellipsize="end"
+        android:lines="2"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/im_pic"
+        tools:text="多地真题盘点一起看!" />
+
+    <TextView
+        android:id="@+id/tv_date"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/dp_122"
+        android:layout_marginBottom="@dimen/dp_1"
+        android:textColor="@color/color_999999"
+        android:textSize="@dimen/sp_11"
+        app:layout_constraintBottom_toBottomOf="@+id/im_pic"
+        app:layout_constraintLeft_toLeftOf="parent"
+        tools:text="2月28日 19:30" />
+</androidx.constraintlayout.widget.ConstraintLayout>

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

@@ -196,12 +196,12 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                 break;
             case R.id.tv_feedback:
                 //意见反馈
-               /* ARouter.getInstance().build(RouterPath.MineCenter.MINE_FEEDBACK)
-                        .navigation();*/
+                ARouter.getInstance().build(RouterPath.MineCenter.MINE_FEEDBACK)
+                        .navigation();
 
 //                支付测试
-               ARouter.getInstance().build(RouterPath.MineCenter.MINE_PAY_TEST)
-                        .navigation();
+            /*   ARouter.getInstance().build(RouterPath.MineCenter.MINE_PAY_TEST)
+                        .navigation();*/
                 break;
             case R.id.tv_authentication:
                 //银行卡

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

@@ -46,7 +46,7 @@ public class PersonalCertificationActivity extends BaseMVPActivity<ActivityPerso
                 try {
                     jsonObjectC.putOpt("realName", name);
                     jsonObjectC.putOpt("idCardNo", certificateNum);
-                    jsonObjectC.putOpt("save", false);
+                    jsonObjectC.putOpt("save", true);
                 } catch (JSONException e) {
                     e.printStackTrace();
                 }

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

@@ -55,49 +55,6 @@
             app:layout_constraintTop_toBottomOf="@+id/et_name" />
 
         <TextView
-            android:id="@+id/tv_certificate_type"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="27dp"
-            android:layout_marginTop="16dp"
-            android:text="证件类型"
-            android:textColor="@color/black"
-            android:textSize="@dimen/sp_18"
-            android:textStyle="bold"
-            app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/view_line1" />
-
-        <TextView
-            android:id="@+id/tv_select_certificate_type"
-            android:layout_width="wrap_content"
-            android:layout_height="45dp"
-            android:layout_marginLeft="27dp"
-            android:gravity="center"
-            android:text="请选择"
-            android:textSize="@dimen/sp_16"
-            app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/tv_certificate_type" />
-
-        <ImageView
-            android:layout_width="@dimen/dp_12"
-            android:layout_height="@dimen/dp_7"
-            android:layout_marginLeft="5dp"
-            android:background="@drawable/icon_go_down"
-            app:layout_constraintBottom_toBottomOf="@+id/tv_select_certificate_type"
-            app:layout_constraintLeft_toRightOf="@+id/tv_select_certificate_type"
-            app:layout_constraintTop_toTopOf="@+id/tv_select_certificate_type" />
-
-        <View
-            android:id="@+id/view_line2"
-            android:layout_width="match_parent"
-            android:layout_height="1dp"
-            android:layout_marginLeft="34dp"
-            android:layout_marginRight="35dp"
-            app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/tv_select_certificate_type" />
-
-
-        <TextView
             android:id="@+id/tv_certificate_num"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
@@ -108,7 +65,7 @@
             android:textSize="@dimen/sp_18"
             android:textStyle="bold"
             app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/view_line2" />
+            app:layout_constraintTop_toBottomOf="@+id/view_line1" />
 
         <EditText
             android:id="@+id/et_certificate_num"