Browse Source

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

邓琴文 3 years ago
parent
commit
c2f181abac
30 changed files with 322 additions and 35 deletions
  1. 49 0
      BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/CourseStatusHelper.java
  2. 1 1
      live_teaching/src/main/res/layout/class_item_conversation_notify_message.xml
  3. 26 4
      rong_im/kit/src/main/java/io/rong/imkit/conversation/RongConversationActivity.java
  4. 1 1
      student/src/main/java/com/cooleshow/student/adapter/CourseTableListAdapter.kt
  5. 12 0
      student/src/main/java/com/cooleshow/student/api/APIService.java
  6. 52 0
      student/src/main/java/com/cooleshow/student/bean/HelpCenterContentBean.java
  7. 2 0
      student/src/main/java/com/cooleshow/student/contract/HomeContract.java
  8. 34 0
      student/src/main/java/com/cooleshow/student/presenter/main/HomePresenter.java
  9. 1 1
      student/src/main/java/com/cooleshow/student/ui/course/LiveCourseFragment.java
  10. 1 1
      student/src/main/java/com/cooleshow/student/ui/main/CourseTableFragment.kt
  11. 31 4
      student/src/main/java/com/cooleshow/student/ui/main/HomeFragment.java
  12. 14 1
      student/src/main/java/com/cooleshow/student/ui/mine/AddressListActivity.java
  13. BIN
      student/src/main/res/drawable-xhdpi/icon_calendar_next_month.png
  14. BIN
      student/src/main/res/drawable-xhdpi/icon_home_bell.png
  15. BIN
      student/src/main/res/drawable-xxhdpi/icon_calendar_next_month.png
  16. BIN
      student/src/main/res/drawable-xxhdpi/icon_home_bell.png
  17. 2 2
      student/src/main/res/layout/activity_address_list.xml
  18. 51 0
      student/src/main/res/layout/fragment_home_layout.xml
  19. 2 0
      teacher/src/main/assets/stacked_line_chart.html
  20. 1 1
      teacher/src/main/java/com/cooleshow/teacher/adapter/CourseTableListAdapter.kt
  21. 1 0
      teacher/src/main/java/com/cooleshow/teacher/bean/LiveCourseListBean.java
  22. 1 1
      teacher/src/main/java/com/cooleshow/teacher/constants/CourseConstants.java
  23. 1 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/main/HomePresenter.java
  24. 1 1
      teacher/src/main/java/com/cooleshow/teacher/ui/course/LiveCourseFragment.java
  25. 3 1
      teacher/src/main/java/com/cooleshow/teacher/ui/course/SparringCourseDetailActivity.java
  26. 4 2
      teacher/src/main/java/com/cooleshow/teacher/ui/income/EarningStatisticsActivity.java
  27. 1 1
      teacher/src/main/java/com/cooleshow/teacher/ui/main/CourseTableFragment.kt
  28. 21 12
      teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt
  29. 8 0
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/AddressListActivity.java
  30. 1 1
      teacher/src/main/res/layout/activity_address_list.xml

+ 49 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/CourseStatusHelper.java

@@ -0,0 +1,49 @@
+package com.cooleshow.base.utils.helper;
+
+import com.cooleshow.base.utils.DateUtil;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.ToastUtils;
+
+import java.util.Date;
+
+/**
+ * Author by pq, Date on 2022/7/3.
+ */
+public class CourseStatusHelper {
+    public static int SPARRING_COURSE_STATUS_NOT_ENTER = -1;
+    public static int SPARRING_COURSE_STATUS_NOT_ENTER_TOO_EARLIER = 1;//早于规定时间
+    public static int SPARRING_COURSE_STATUS_NOT_ENTER_TOO_LATER = 2;//晚于规定时间
+    public static int SPARRING_COURSE_STATUS_CAN_ENTER = 3;//可以进入
+
+    /**
+     * 是否可以进入陪练课
+     *
+     * @return
+     */
+    public static int isCanStartSparringCourse(String startTimeLimit, String endTimeLimit, String startTimeStr, String endTimeStr) {
+        try {
+            long currentTime = DateUtil.now().getTime();
+            Date date = DateUtil.getDate(startTimeStr);
+            Date endDate = DateUtil.getDate(endTimeStr);
+            if (date != null) {
+                long l = Long.parseLong(startTimeLimit);
+                long limitEnterTime = l * 60 * 1000;
+                long startTime = date.getTime();
+                if (startTime - currentTime > limitEnterTime) {
+                    return SPARRING_COURSE_STATUS_NOT_ENTER_TOO_EARLIER;
+                }
+
+                long end = Long.parseLong(endTimeLimit);
+                long limitEndTime = end * 60 * 1000;
+                long endTime = endDate.getTime();
+                if (endTime - currentTime < limitEndTime) {
+                    return SPARRING_COURSE_STATUS_NOT_ENTER_TOO_LATER;
+                }
+                return SPARRING_COURSE_STATUS_CAN_ENTER;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return SPARRING_COURSE_STATUS_NOT_ENTER;
+    }
+}

+ 1 - 1
live_teaching/src/main/res/layout/class_item_conversation_notify_message.xml

@@ -11,6 +11,6 @@
     android:paddingTop="6.5dp"
     android:paddingRight="10dp"
     android:paddingBottom="6.5dp"
-    android:textColor="@color/white"
+    android:textColor="@color/color_666666"
     android:textSize="12dp"
     tools:ignore="MissingDefaultResource" />

+ 26 - 4
rong_im/kit/src/main/java/io/rong/imkit/conversation/RongConversationActivity.java

@@ -22,6 +22,7 @@ import io.rong.imkit.widget.TitleBar;
 import io.rong.imlib.model.Conversation;
 import io.rong.imlib.model.Group;
 import io.rong.imlib.model.UserInfo;
+
 //学生端消息交互界面
 public class RongConversationActivity extends RongBaseActivity {
     protected String mTargetId;
@@ -59,21 +60,42 @@ public class RongConversationActivity extends RongBaseActivity {
     private void setTitle() {
         if (!TextUtils.isEmpty(mTargetId) && mConversationType.equals(Conversation.ConversationType.GROUP)) {
             Group group = RongUserInfoManager.getInstance().getGroupInfo(mTargetId);
-            mTitleBar.setTitle(group == null ? mTargetId : group.getName());
+            String title = mTargetId;
+            if (group != null) {
+                title = group.getName();
+            } else {
+                Bundle extras = getIntent().getExtras();
+                if (extras != null) {
+                    title = (String) extras.get(RouteUtils.TITLE);
+                }
+            }
+            mTitleBar.setTitle(title);
             mTitleBar.getRightImageView().setVisibility(View.VISIBLE);
             mTitleBar.getRightImageView().setImageResource(com.cooleshow.base.R.drawable.icon_group_setting);
             mTitleBar.getRightImageView().setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View view) {
+                    if (group == null) {
+                        return;
+                    }
                     ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_GROUP_SETTING)
-                            .withString("targetId",mTargetId)
-                            .withString("name",group.getName())
+                            .withString("targetId", mTargetId)
+                            .withString("name", group.getName())
                             .navigation();
                 }
             });
         } else {
             UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(mTargetId);
-            mTitleBar.setTitle(userInfo == null ? mTargetId : userInfo.getName());
+            String title = mTargetId;
+            if (userInfo != null) {
+                title = userInfo.getName();
+            } else {
+                Bundle extras = getIntent().getExtras();
+                if (extras != null) {
+                    title = (String) extras.get(RouteUtils.TITLE);
+                }
+            }
+            mTitleBar.setTitle(title);
             mTitleBar.getRightImageView().setVisibility(View.GONE);
         }
         if (mConversationType.equals(Conversation.ConversationType.CUSTOMER_SERVICE)

+ 1 - 1
student/src/main/java/com/cooleshow/student/adapter/CourseTableListAdapter.kt

@@ -18,7 +18,7 @@ import com.cooleshow.student.bean.CourseTableDataBean
 class CourseTableListAdapter(layoutResId: Int) :
     BaseQuickAdapter<CourseTableDataBean.StudentListBean?, BaseViewHolder>(layoutResId) {
     companion object {
-        const val LIVE_COURSE = "LIVE_COURSE"//直播课
+        const val LIVE_COURSE = "LIVE"//直播课
         const val OTHER_COURSE = "PRACTICE"//陪练课
         const val PIANO_ROOM_COURSE = "PIANO_ROOM_CLASS"//琴房课
         const val NOT_START = "NOT_START"

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

@@ -12,6 +12,7 @@ import com.cooleshow.student.bean.AppHomeBean;
 import com.cooleshow.student.bean.CountOfUnreadBean;
 import com.cooleshow.student.bean.CourseTableDataBean;
 import com.cooleshow.student.bean.FriendInfoBean;
+import com.cooleshow.student.bean.HelpCenterContentBean;
 import com.cooleshow.student.bean.HomeLiveAndVideoBean;
 import com.cooleshow.student.bean.HomeStyleBean;
 import com.cooleshow.student.bean.HomeworkListBean;
@@ -202,6 +203,17 @@ public interface APIService {
     @GET(STUDENT_GROUP + "courseSchedule/queryLiveAndVideo")
     Observable<BaseResponse<HomeLiveAndVideoBean>> queryLiveAndVideo(@Query("platform") String platform, @Query("version") String version);
 
+
+
+    /**
+     * 首页统计数据
+     *
+     * @return
+     */
+    @POST(CMS_SERVER + "helpCenterContent/list")
+    Observable<BaseResponse<HelpCenterContentBean>> helpCenterContentList(@Body RequestBody body);
+
+
     /**
      * 首页老师风采-分页
      *

+ 52 - 0
student/src/main/java/com/cooleshow/student/bean/HelpCenterContentBean.java

@@ -0,0 +1,52 @@
+package com.cooleshow.student.bean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/31 17:14
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HelpCenterContentBean {
+    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{
+        /*
+        "status": 0,
+			"order": 0,
+			"title": "测试老师公告",
+			"catalogId": 2,
+			"releaseTime": "2022-05-17 16:20:54",
+			"releaseStatus": 1,
+			"catalogType": "TEACHER",
+			"createOn": "2022-05-17 16:21:04",
+			"modifyOn": "2022-05-17 16:28:31",
+			"createBy": 56,
+			"updateName": "刘俊驰",
+			"updateBy": 56,
+			"id": 24,
+			"content": "\u003Cp\u003E测试老师公告内容\u003C/p\u003E"
+         */
+        public int status;
+        public int order;
+        public String title;
+        public String releaseTime;
+        public int releaseStatus;
+        public String catalogType;
+        public String createOn;
+        public String modifyOn;
+        public long createBy;
+        public String updateName;
+        public long updateBy;
+        public String id;
+        public String content;
+
+    }
+}

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

@@ -3,6 +3,7 @@ package com.cooleshow.student.contract;
 import com.cooleshow.base.presenter.view.BaseView;
 import com.cooleshow.student.bean.AppHomeBean;
 import com.cooleshow.student.bean.CountOfUnreadBean;
+import com.cooleshow.student.bean.HelpCenterContentBean;
 import com.cooleshow.student.bean.HomeLiveAndVideoBean;
 import com.cooleshow.student.bean.HomeStyleBean;
 import com.cooleshow.student.bean.HotAlbumBean;
@@ -29,6 +30,7 @@ public interface HomeContract {
 
         void queryUserInfoSuccess(StudentUserInfo data);
 
+        void helpCenterContentListSuccess(HelpCenterContentBean bean);
 
         void queryCountOfUnreadSuccess(List<CountOfUnreadBean> data);
     }

+ 34 - 0
student/src/main/java/com/cooleshow/student/presenter/main/HomePresenter.java

@@ -7,6 +7,7 @@ import com.cooleshow.base.utils.RequestBodyUtil;
 import com.cooleshow.student.api.APIService;
 import com.cooleshow.student.bean.AppHomeBean;
 import com.cooleshow.student.bean.CountOfUnreadBean;
+import com.cooleshow.student.bean.HelpCenterContentBean;
 import com.cooleshow.student.bean.HomeLiveAndVideoBean;
 import com.cooleshow.student.bean.HomeStyleBean;
 import com.cooleshow.student.bean.HotAlbumBean;
@@ -111,6 +112,39 @@ public class HomePresenter extends BasePresenter<HomeContract.HomeView> implemen
         });
     }
 
+
+    public void helpCenterContentList() {
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.putOpt("catalogIds", "2");
+            jsonObject.putOpt("catalogType", "STUDENT");
+            jsonObject.putOpt("page", 1);
+            jsonObject.putOpt("status", 1);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).helpCenterContentList(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<HelpCenterContentBean>(getView()) {
+            @Override
+            protected void onSuccess(HelpCenterContentBean data) {
+                if (getView() != null) {
+                    getView().helpCenterContentListSuccess(data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+
+            }
+        });
+    }
+
     public void getStylePage() {
 
         JSONObject jsonObject = new JSONObject();

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

@@ -153,7 +153,7 @@ public class LiveCourseFragment extends BaseMVPFragment<FragmentLiveCourseLayout
             LiveCourseListBean.RowsBean item = (LiveCourseListBean.RowsBean) adapter.getItem(position);
             ARouter.getInstance()
                     .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                    .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + item.courseGoupId)
+                    .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + item.courseGoupId + "&classId=" + item.courseId)
                     .navigation();
         });
     }

+ 1 - 1
student/src/main/java/com/cooleshow/student/ui/main/CourseTableFragment.kt

@@ -135,7 +135,7 @@ class CourseTableFragment :
                     .build(RouterPath.WebCenter.ACTIVITY_HTML)
                     .withString(
                         WebConstants.WEB_URL,
-                        WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + data.courseGoupId
+                        WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + data.courseGoupId+"&classId="+data.courseId
                     )
                     .navigation()
             }

+ 31 - 4
student/src/main/java/com/cooleshow/student/ui/main/HomeFragment.java

@@ -41,6 +41,7 @@ import com.cooleshow.student.adapter.HomeVideoCourseAdapter;
 import com.cooleshow.student.adapter.HomeWonderfulInfoAdapter;
 import com.cooleshow.student.bean.AppHomeBean;
 import com.cooleshow.student.bean.CountOfUnreadBean;
+import com.cooleshow.student.bean.HelpCenterContentBean;
 import com.cooleshow.student.bean.HomeLiveAndVideoBean;
 import com.cooleshow.student.bean.HomeStyleBean;
 import com.cooleshow.student.bean.HotAlbumBean;
@@ -72,7 +73,8 @@ import java.util.TreeMap;
  * 类说明:
  */
 public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter> implements HomeContract.HomeView, View.OnClickListener {
-    private boolean isShowFlashPage;
+    private boolean isShowFlashPage =false;
+    private String mCurrentShowNoticeId;
 
     @Override
     public void onClick(View view) {
@@ -126,8 +128,16 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
                         .withString(WebConstants.WEB_URL, WebConstants.STUDENT_TEACHER_ELEGANT)
                         .navigation();
                 break;
-
-
+            case R.id.bg_announcement:
+                if (TextUtils.isEmpty(mCurrentShowNoticeId)) {
+                    return;
+                }
+                //点击单条公告
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.HELP_CENTER_DETAIL + mCurrentShowNoticeId)
+                        .navigation();
+                break;
         }
     }
 
@@ -136,6 +146,7 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
         super.onResume();
         presenter.queryCountOfUnread();
         presenter.queryUserInfo();
+        presenter.helpCenterContentList();
         presenter.queryLiveAndVideo();
     }
 
@@ -169,6 +180,7 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
         mViewBinding.imTeacherStyleMore.setOnClickListener(this);
         mViewBinding.tvName.setOnClickListener(this);
         mViewBinding.ivAvatar.setOnClickListener(this);
+        mViewBinding.bgAnnouncement.setOnClickListener(this);
 
         mViewBinding.scrollLayout.setOnScrollChangeListener((NestedScrollView.OnScrollChangeListener) (v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
             boolean localVisibleRect = getLocalVisibleRect(getActivity(), banner, 10);
@@ -333,6 +345,21 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
         }
     }
 
+    @Override
+    public void helpCenterContentListSuccess(HelpCenterContentBean bean) {
+        if (isDetached()) {
+            return;
+        }
+        if (bean != null && bean.rows != null && bean.rows.size() > 0) {
+            mViewBinding.bgAnnouncement.setVisibility(View.VISIBLE);
+            HelpCenterContentBean.RowsBean rowsBean = bean.rows.get(0);
+            mViewBinding.tvNoticeContent.setText(rowsBean.title);
+            mCurrentShowNoticeId = rowsBean.id;
+        } else {
+            mViewBinding.bgAnnouncement.setVisibility(View.GONE);
+        }
+    }
+
 
     @SuppressLint("SetTextI18n")
     private void initRecentLive(HomeLiveAndVideoBean.RecentCoursesBean recentCourses) {
@@ -366,7 +393,7 @@ public class HomeFragment extends BaseMVPFragment<FragmentHomeLayoutBinding, Hom
             case LIVE_COURSE:
                 ARouter.getInstance()
                         .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + bean.courseGroupId)
+                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + bean.courseGroupId + "&classId=" + bean.courseId)
                         .navigation();
                 break;
             case OTHER_COURSE:

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

@@ -1,7 +1,11 @@
 package com.cooleshow.student.ui.mine;
 
+import android.media.Image;
 import android.os.Bundle;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
 
 import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.LinearLayoutManager;
@@ -11,6 +15,7 @@ import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.widgets.EmptyViewLayout;
 import com.cooleshow.student.R;
 import com.cooleshow.student.adapter.AddressListAdapter;
 import com.cooleshow.student.bean.AddressBean;
@@ -39,11 +44,12 @@ public class AddressListActivity extends BaseMVPActivity<ActivityAddressListBind
         switch (view.getId()) {
             case R.id.tv_add:
                 ARouter.getInstance().build(RouterPath.MineCenter.MINE_EDIT_ADDRESS)
-                        .withBoolean("isAdd",true)
+                        .withBoolean("isAdd", true)
                         .navigation();
                 break;
         }
     }
+
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -60,9 +66,16 @@ public class AddressListActivity extends BaseMVPActivity<ActivityAddressListBind
         LinearLayoutManager manager = new LinearLayoutManager(this);
         rvAddress.setLayoutManager(manager);
         addressListAdapter = new AddressListAdapter(dataList);
+        setEmptyView();
         rvAddress.setAdapter(addressListAdapter);
     }
 
+    private void setEmptyView() {
+        EmptyViewLayout emptyView = new EmptyViewLayout(this);
+        emptyView.setContent(com.cooleshow.base.R.drawable.icon_empty_content,"暂无数据");
+        addressListAdapter.setEmptyView(emptyView);
+    }
+
     @Override
     protected void onResume() {
         super.onResume();

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


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


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


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


+ 2 - 2
student/src/main/res/layout/activity_address_list.xml

@@ -16,8 +16,8 @@
         android:layout_below="@+id/toolbar_include"
         android:layout_width="match_parent"
         android:layout_marginTop="15dp"
-        android:layout_marginBottom="80dp"
-        android:layout_height="wrap_content"/>
+        android:layout_above="@+id/tv_add"
+        android:layout_height="match_parent"/>
 
     <TextView
         android:id="@+id/tv_add"

+ 51 - 0
student/src/main/res/layout/fragment_home_layout.xml

@@ -194,6 +194,57 @@
                         app:layout_constraintTop_toTopOf="parent" />
                 </androidx.constraintlayout.widget.ConstraintLayout>
 
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:visibility="gone"
+                    android:id="@+id/bg_announcement"
+                    android:layout_width="match_parent"
+                    android:layout_height="44dp"
+                    android:layout_marginStart="14dp"
+                    android:layout_marginTop="10dp"
+                    android:layout_marginEnd="14dp"
+                    android:background="@drawable/bg_white_10dp"
+                    android:elevation="2dp"
+                    android:orientation="horizontal"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/cl_live">
+
+                    <ImageView
+                        android:id="@+id/iv_bell"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:src="@drawable/icon_home_bell"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/tv_notice_content"
+                        android:layout_width="wrap_content"
+                        android:layout_height="match_parent"
+                        android:layout_marginStart="2dp"
+                        android:gravity="center"
+                        android:includeFontPadding="false"
+                        android:textColor="@color/color_1a1a1a"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toRightOf="@+id/iv_bell"
+                        app:layout_constraintTop_toTopOf="parent"
+                        tools:text="网络教室升级公告" />
+
+                    <ImageView
+                        android:id="@+id/im_notice_list"
+                        android:layout_width="@dimen/dp_38"
+                        android:layout_height="@dimen/dp_38"
+                        android:layout_marginRight="@dimen/dp_1"
+                        android:padding="@dimen/dp_10"
+                        android:src="@drawable/icon_calendar_next_month"
+                        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"

+ 2 - 0
teacher/src/main/assets/stacked_line_chart.html

@@ -22,6 +22,8 @@
 
              function loadEcharts(echartJson){
                 var option = JSON.parse(echartJson);
+                option.tooltip.confine = true;
+                    myChart.clear();
                     myChart.setOption(option,true);
             }
 

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/adapter/CourseTableListAdapter.kt

@@ -18,7 +18,7 @@ import com.cooleshow.teacher.bean.CourseTableDataBean
 class CourseTableListAdapter(layoutResId: Int) :
     BaseQuickAdapter<CourseTableDataBean.StudentListBean?, BaseViewHolder>(layoutResId) {
     companion object {
-        const val LIVE_COURSE = "LIVE_COURSE"//直播课
+        const val LIVE_COURSE = "LIVE"//直播课
         const val OTHER_COURSE = "PRACTICE"//陪练课
         const val PIANO_ROOM_COURSE = "PIANO_ROOM_CLASS"//琴房课
         const val NOT_START = "NOT_START"

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

@@ -70,6 +70,7 @@ public class LiveCourseListBean {
 
         public String backgroundPic;
         public int courseGroupId;
+        public String courseId;
         public String courseGroupName;
         public String endTime;
         public String startTime;

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/constants/CourseConstants.java

@@ -22,7 +22,7 @@ public class CourseConstants {
     public static final int COURSE_HOMEWORK_STU_SUBMIT = 1;//学员已提交课后作业
     public static final int COURSE_HOMEWORK_STU_NO_SUBMIT = 0;//学员未提交课后作业
 
-    public static final String LIVE_COURSE = "LIVE_COURSE";//直播课
+    public static final String LIVE_COURSE = "LIVE";//直播课
     public static final String OTHER_COURSE = "PRACTICE";//陪练课
     public static final String PIANO_ROOM_COURSE = "PIANO_ROOM_CLASS";//琴房课
 

+ 1 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/main/HomePresenter.java

@@ -79,6 +79,7 @@ public class HomePresenter extends BasePresenter<HomeContract.HomeView> implemen
             jsonObject.putOpt("catalogIds", "2");
             jsonObject.putOpt("catalogType", "TEACHER");
             jsonObject.putOpt("page", 1);
+            jsonObject.putOpt("status", 1);
             jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
         } catch (JSONException e) {
             e.printStackTrace();

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

@@ -149,7 +149,7 @@ public class LiveCourseFragment extends BaseMVPFragment<FragmentLiveCourseLayout
             LiveCourseListBean.RowsBean item = (LiveCourseListBean.RowsBean) adapter.getItem(position);
             ARouter.getInstance()
                     .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                    .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + item.courseGroupId)
+                    .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + item.courseGroupId+ "&classId=" + item.courseId)
                     .navigation();
         });
         buildDefaultCourseStatusFilterList();

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

@@ -12,6 +12,7 @@ import com.cooleshow.base.utils.SizeUtils;
 import com.cooleshow.base.utils.TimeUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.base.utils.helper.CourseStatusHelper;
 import com.cooleshow.base.widgets.VideoThumbnailView;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.bean.SparringCourseCommentBean;
@@ -294,7 +295,8 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
 
         if (v.getId() == R.id.tv_enter_room) {
             //进入教室
-            if (mInfoBean != null && TextUtils.equals(CourseConstants.COURSE_STATUS_ING, mInfoBean.courseStatus)) {
+            if (mInfoBean != null) {
+//                CourseStatusHelper.isCanStartSparringCourse(mInfoBean)
                 CourseEnterHelper.start(this, mInfoBean.courseScheduleId, mInfoBean.subjectName);
             }
             return;

+ 4 - 2
teacher/src/main/java/com/cooleshow/teacher/ui/income/EarningStatisticsActivity.java

@@ -434,9 +434,11 @@ public class EarningStatisticsActivity extends BaseMVPActivity<ActivityEarningSt
 
         for (AccountTotalBean accountTotalBean : data.infoList) {
             if (!isCheckMonth) {
-                xAxisData.add(DateUtil.getCurMonthStr(DateUtil.getDate(accountTotalBean.timeStr)) + "月");
+                Date date = DateUtil.str2Date(accountTotalBean.timeStr,"yyyy-MM");
+                xAxisData.add(DateUtil.getCurMonthStr(date) + "月");
             } else {
-                xAxisData.add(DateUtil.getCurDayStr(DateUtil.getDate(accountTotalBean.timeStr)) + "日");
+                Date date = DateUtil.str2Date(accountTotalBean.timeStr,"yyyy-MM-dd");
+                xAxisData.add(DateUtil.getCurDayStr(date) + "日");
             }
         }
         EarningStackedLineBean.XAxisBean axisBean = new EarningStackedLineBean.XAxisBean();

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/main/CourseTableFragment.kt

@@ -159,7 +159,7 @@ class CourseTableFragment :
                 .build(RouterPath.WebCenter.ACTIVITY_HTML)
                 .withString(
                     WebConstants.WEB_URL,
-                    WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + data.courseGoupId
+                    WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + data.courseGoupId+"&classId="+data.courseId
                 )
                 .navigation()
         }

+ 21 - 12
teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt

@@ -30,6 +30,9 @@ import java.util.*
  */
 class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>(),
     HomeContract.HomeView, View.OnClickListener {
+
+    private var noticeId: Long = 0
+
     override fun getLayoutView(): FragmentHomeLayoutBinding {
         return FragmentHomeLayoutBinding.inflate(layoutInflater)
     }
@@ -48,7 +51,7 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
         mViewBinding.cardAfterClassHomework.setOnClickListener(this)
         mViewBinding.cardMineIncome.setOnClickListener(this)
         mViewBinding.ivChat.setOnClickListener(this)
-        mViewBinding.tvNoticeContent.setOnClickListener(this)
+        mViewBinding.bgAnnouncement.setOnClickListener(this)
         mViewBinding.imNoticeList.setOnClickListener(this)
         mViewBinding.cardKotofusa.setOnClickListener(this)
     }
@@ -185,20 +188,20 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
                 ARouter.getInstance().build(RouterPath.MessageCenter.TEACHER_MESSAGE_MESSAGEBOX)
                     .navigation()
             }
-            R.id.tv_notice_content -> {
+            R.id.bg_announcement -> {
                 //点击单条公告
                 ARouter.getInstance()
                     .build(RouterPath.WebCenter.ACTIVITY_HTML)
                     .withString(WebConstants.WEB_URL, WebConstants.HELP_CENTER_DETAIL + noticeId)
                     .navigation()
             }
-            R.id.im_notice_list -> {
-                //公告列表
-                ARouter.getInstance()
-                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                    .withString(WebConstants.WEB_URL, WebConstants.HELP_CENTER_CATALOGTYPE_2)
-                    .navigation()
-            }
+//            R.id.im_notice_list -> {
+//                //公告列表
+//                ARouter.getInstance()
+//                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
+//                    .withString(WebConstants.WEB_URL, WebConstants.HELP_CENTER_CATALOGTYPE_2)
+//                    .navigation()
+//            }
             R.id.card_Kotofusa -> {
                 //云库琴房
                 ARouter.getInstance()
@@ -308,12 +311,15 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
         )
     }
 
-    private var noticeId: Long = 0
+
     override fun helpCenterContentListSuccess(data: HelpCenterContentBean?) {
 
         if (data?.rows != null && data.rows.size > 0) {
+            mViewBinding.bgAnnouncement.setVisible(true)
             mViewBinding.tvNoticeContent.text = data.rows[0].title
             noticeId = data.rows[0].id
+        } else {
+            mViewBinding.bgAnnouncement.setVisible(false)
         }
 
     }
@@ -370,13 +376,16 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
         when (bean?.courseType) {
             CourseConstants.LIVE_COURSE -> ARouter.getInstance()
                 .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                .withString(WebConstants.WEB_URL, WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + bean.courseGroupId)
+                .withString(
+                    WebConstants.WEB_URL,
+                    WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + bean.courseGroupId + "&classId=" + bean.courseId
+                )
                 .navigation()
             CourseConstants.OTHER_COURSE ->                 //陪练课
                 ARouter.getInstance().build(RouterPath.CourseCenter.SPARRING_COURSE_DETAIL)
                     .withString(CourseConstants.COURSE_ID, bean.courseId.toString())
                     .withString(CourseConstants.COURSE_GROUP_ID, bean.courseGroupId.toString())
-                    .withString(CourseConstants.STUDENT_ID,bean.studentId.toString())
+                    .withString(CourseConstants.STUDENT_ID, bean.studentId.toString())
                     .navigation()
             CourseConstants.PIANO_ROOM_COURSE ->
                 //琴房课 跳转详情页

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

@@ -11,6 +11,7 @@ import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.widgets.EmptyViewLayout;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.adapter.AddressListAdapter;
 import com.cooleshow.teacher.bean.AddressBean;
@@ -60,9 +61,16 @@ public class AddressListActivity extends BaseMVPActivity<ActivityAddressListBind
         LinearLayoutManager manager = new LinearLayoutManager(this);
         rvAddress.setLayoutManager(manager);
         addressListAdapter = new AddressListAdapter(dataList);
+        setEmptyView();
         rvAddress.setAdapter(addressListAdapter);
     }
 
+    private void setEmptyView() {
+        EmptyViewLayout emptyView = new EmptyViewLayout(this);
+        emptyView.setContent(com.cooleshow.base.R.drawable.icon_empty_content,"暂无数据");
+        addressListAdapter.setEmptyView(emptyView);
+    }
+
     @Override
     protected void onResume() {
         super.onResume();

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

@@ -16,7 +16,7 @@
         android:layout_below="@+id/toolbar_include"
         android:layout_width="match_parent"
         android:layout_marginTop="15dp"
-        android:layout_marginBottom="80dp"
+        android:layout_above="@+id/tv_add"
         android:layout_height="wrap_content"/>
 
     <TextView