Bladeren bron

更新老师端课表小组课显示以及增加小组课课程详情

Pq 9 maanden geleden
bovenliggende
commit
43513889d1

+ 3 - 2
BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt

@@ -87,8 +87,9 @@ object RouterPath {
             const val TEACHER_MINE_COURSE = "/teacher/ui/course/MineCourseActivity"
             const val APPOINTMENT_COURSE = "/teacher/ui/course/AppointmentCourseActivity"
             const val SPARRING_COURSE_DETAIL = "/teacher/ui/course/SparringCourseDetailActivity"
-            const val PIANO_ROOM_COURSE_DETAIL = "/ui/course/PianoRoomCourseDetailActivity"
-            const val PIANO_ROOM_COURSE_HOMEWORK = "/ui/course/PianoRoomCourseHomeWorkActivity"
+            const val PIANO_ROOM_COURSE_DETAIL = "/teacher/ui/course/PianoRoomCourseDetailActivity"
+            const val GROUP_COURSE_DETAIL = "/teacher/ui/course/GroupCourseDetailActivity"
+            const val PIANO_ROOM_COURSE_HOMEWORK = "/teacher/ui/course/PianoRoomCourseHomeWorkActivity"
             const val TEACHER_MINE_LIVE_COURSE = "/teacher/ui/course/MineLiveCourseActivity"
             const val TEACHER_MINE_CREATE_LIVE_COURSE_INFO =
                 "/teacher/ui/course/CreateLiveCourseInfoActivity"

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

@@ -142,6 +142,11 @@
             android:screenOrientation="portrait"
             android:windowSoftInputMode="adjustNothing" />
         <activity
+            android:name=".ui.course.GroupCourseDetailActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden|fontScale|smallestScreenSize|screenLayout|uiMode"
+            android:screenOrientation="portrait"
+            android:windowSoftInputMode="adjustNothing" />
+        <activity
             android:name=".ui.course.PianoRoomCourseHomeWorkActivity"
             android:configChanges="orientation|screenSize|keyboardHidden|fontScale|smallestScreenSize|screenLayout|uiMode"
             android:screenOrientation="portrait" />

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

@@ -9,6 +9,7 @@ import android.widget.TextView
 import androidx.recyclerview.widget.RecyclerView
 import com.chad.library.adapter.base.BaseQuickAdapter
 import com.chad.library.adapter.base.viewholder.BaseViewHolder
+import com.cooleshow.base.constanst.CourseType
 import com.cooleshow.base.ext.setVisible
 import com.cooleshow.base.utils.GlideUtils
 import com.cooleshow.base.utils.SizeUtils
@@ -23,10 +24,10 @@ import com.cooleshow.teacher.helper.CourseHelper
 class CourseTableListAdapter(layoutResId: Int) :
     BaseQuickAdapter<CourseTableDataBean.StudentListBean?, BaseViewHolder>(layoutResId) {
     companion object {
-        const val LIVE_COURSE = "LIVE"//直播课
-        const val OTHER_COURSE = "PRACTICE"//陪练课
-        const val PIANO_ROOM_COURSE = "PIANO_ROOM_CLASS"//琴房课
-        const val VIP_COURSE = "VIP"//VIP课
+//        const val LIVE_COURSE = "LIVE"//直播课
+//        const val OTHER_COURSE = "PRACTICE"//陪练课
+//        const val PIANO_ROOM_COURSE = "PIANO_ROOM_CLASS"//琴房课
+//        const val VIP_COURSE = "VIP"//VIP课
         const val NOT_START = "NOT_START"
         const val ING = "ING"
         const val COMPLETE = "COMPLETE"
@@ -57,7 +58,7 @@ class CourseTableListAdapter(layoutResId: Int) :
         baseViewHolder.setText(R.id.tv_title, data?.courseName);
         //subjectName
         baseViewHolder.setText(R.id.tv_course_name, data?.subjectName);
-        if (TextUtils.equals(OTHER_COURSE, data?.courseType)) {
+        if (TextUtils.equals(CourseType.PRACTICE.id, data?.courseType)) {
             //VIP课
             GlideUtils.loadImage(
                 context,
@@ -70,14 +71,14 @@ class CourseTableListAdapter(layoutResId: Int) :
             tvBuyNum.setVisible(false)
             tv_vip_course_tag.setVisible(true)
             baseViewHolder.setText(R.id.tv_title, data?.name);
-        } else if (TextUtils.equals(PIANO_ROOM_COURSE, data?.courseType)) {
+        } else if (TextUtils.equals(CourseType.PIANO_ROOM_CLASS.id, data?.courseType)) {
             //琴房课
             ivAvatar.setImageResource(R.drawable.icon_piano_room_course)
             tvBuyNum.text = data?.payCount + "人"
             viewLine2.setVisible(true)
             tvBuyNum.setVisible(true)
             tv_vip_course_tag.setVisible(false)
-        } else if (TextUtils.equals(VIP_COURSE, data?.courseType)) {
+        } else if (TextUtils.equals(CourseType.VIP.id, data?.courseType)) {
             //VIP课
             GlideUtils.loadImage(
                 context,
@@ -90,6 +91,13 @@ class CourseTableListAdapter(layoutResId: Int) :
             tvBuyNum.setVisible(false)
             tv_vip_course_tag.setVisible(true)
             baseViewHolder.setText(R.id.tv_title, data?.name);
+        }else if(TextUtils.equals(CourseType.GROUP.id, data?.courseType)){
+            //小组课
+            ivAvatar.setImageResource(R.drawable.icon_group_course_avatar_112_112)
+            tvBuyNum.text = data?.payCount + "人"
+            viewLine2.setVisible(true)
+            tvBuyNum.setVisible(true)
+            tv_vip_course_tag.setVisible(false)
         } else {
             //直播课
             ivAvatar.setImageResource(R.drawable.icon_live_bg)
@@ -115,9 +123,9 @@ class CourseTableListAdapter(layoutResId: Int) :
                     tvCourseStatusBt.setTextColor(context.resources.getColor(R.color.white))
                 } else {
                     //直播课 琴房课 隐藏 20241125与IOS逻辑一致
-                    if (TextUtils.equals(data.courseType, LIVE_COURSE) || TextUtils.equals(
+                    if (TextUtils.equals(data.courseType, CourseType.LIVE.id) || TextUtils.equals(
                             data.courseType,
-                            PIANO_ROOM_COURSE
+                            CourseType.PIANO_ROOM_CLASS.id
                         )
                     ) {
                         tvCourseStatusBt.setVisible(false)
@@ -146,14 +154,14 @@ class CourseTableListAdapter(layoutResId: Int) :
 
             COMPLETE -> {
                 //已完成
-                if (TextUtils.equals(VIP_COURSE, data?.courseType) || TextUtils.equals(
-                        OTHER_COURSE,
+                if (TextUtils.equals(CourseType.VIP.id, data?.courseType) || TextUtils.equals(
+                        CourseType.PRACTICE.id,
                         data?.courseType
                     )
                 ) {
                     tvCourseStatusBt.setVisible(true)
                 } else {
-                    //直播课隐藏
+                    //直播课 琴房课 小组课隐藏
                     tvCourseStatusBt.setVisible(false)
                 }
                 if (data?.teacherReplied == 0) {

+ 308 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/GroupCourseDetailActivity.java

@@ -0,0 +1,308 @@
+package com.cooleshow.teacher.ui.course;
+
+import android.graphics.Color;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.bean.CommonCourseConfigBean;
+import com.cooleshow.base.constanst.CourseStatusType;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.TimeUtils;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
+import com.cooleshow.base.widgets.EmptyViewLayout;
+import com.cooleshow.chatmodule.utils.helper.ChatHelper;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.PianoRoomCourseStudentListAdapter;
+import com.cooleshow.teacher.bean.PianoRoomCourseInfoBean;
+import com.cooleshow.teacher.constants.CourseConstants;
+import com.cooleshow.teacher.constants.TeacherConfig;
+import com.cooleshow.teacher.contract.PianoRoomCourseDetailContract;
+import com.cooleshow.teacher.databinding.ActivityGroupCourseDetailLayoutBinding;
+import com.cooleshow.teacher.databinding.ActivityPianoRoomDetailLayoutBinding;
+import com.cooleshow.teacher.presenter.course.PianoRoomDetailPresenter;
+import com.cooleshow.teacher.widgets.CourseSetCommentDialog;
+import com.dayayuemeng.classroom.helper.OpenClassRoomHelper;
+
+import java.util.List;
+
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+/**
+ * Author by pq, Date on 2022/6/24.
+ * 琴房课详情页面
+ */
+@Route(path = RouterPath.CourseCenter.GROUP_COURSE_DETAIL)
+public class GroupCourseDetailActivity extends BaseMVPActivity<ActivityGroupCourseDetailLayoutBinding, PianoRoomDetailPresenter> implements PianoRoomCourseDetailContract.PianoRoomCourseDetailView, View.OnClickListener {
+    public static final String COURSE_ID = "course_id";
+
+    private String mCourseId;
+    private PianoRoomCourseStudentListAdapter mAdapter;
+    private CourseSetCommentDialog mSetCommentDialog;
+    private PianoRoomCourseInfoBean mInfoBean;
+
+    private CommonCourseConfigBean mConfigBean;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        QMUIStatusBarHelper.setStatusBarLightMode(this);
+    }
+
+    @Override
+    protected void initView() {
+        mCourseId = getIntent().getStringExtra(COURSE_ID);
+        if (TextUtils.isEmpty(mCourseId)) {
+            finish();
+            return;
+        }
+
+        viewBinding.tvSetHomework.setOnClickListener(this);
+        viewBinding.tvEnterRoom.setOnClickListener(this);
+    }
+
+    @Override
+    public void initData() {
+        super.initData();
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "课程详情");
+        viewBinding.toolbarInclude.toolbar.setBackgroundColor(Color.TRANSPARENT);
+        EmptyViewLayout emptyViewLayout = new EmptyViewLayout(this);
+        emptyViewLayout.setContent(com.cooleshow.base.R.drawable.icon_empty_course, "暂无学员");
+        mAdapter = new PianoRoomCourseStudentListAdapter(R.layout.item_piano_room_student_layout);
+        mAdapter.setEmptyView(emptyViewLayout);
+        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
+        viewBinding.recyclerView.setLayoutManager(linearLayoutManager);
+        viewBinding.recyclerView.setAdapter(mAdapter);
+        initListener();
+    }
+
+    private void initListener() {
+        mAdapter.setOnItemClickListener((adapter, view, position) -> {
+            if (mInfoBean == null) {
+                return;
+            }
+            if (mInfoBean.decorateHomework == CourseConstants.COURSE_HOMEWORK_NO_SET) {
+                ToastUtil.getInstance().showShort("您还未布置作业");
+                return;
+            }
+            if (position < mAdapter.getData().size()) {
+                PianoRoomCourseInfoBean.StudentHomeworkListBean.RecordsBean recordsBean = mAdapter.getData().get(position);
+                if(recordsBean.delFlag){
+                    //该账号已注销
+                    return;
+                }
+                ARouter.getInstance().build(RouterPath.WorkCenter.TEACHER_WORK_ASSIGN_HOMEWORK)
+                        .withString(TeacherConfig.STUDENT_ID, recordsBean.studentId)
+                        .withString(TeacherConfig.COURSE_ID, mCourseId)
+                        .navigation();
+            }
+        });
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        refresh();
+    }
+
+    private void refresh() {
+        if (presenter != null) {
+            presenter.getCourseConfig();
+            presenter.getCourseInfo(mCourseId);
+        }
+    }
+
+    @Override
+    protected ActivityPianoRoomDetailLayoutBinding getLayoutView() {
+        return ActivityPianoRoomDetailLayoutBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected PianoRoomDetailPresenter createPresenter() {
+        return new PianoRoomDetailPresenter();
+    }
+
+    @Override
+    public void getCourseInfoSuccess(PianoRoomCourseInfoBean infoBean) {
+        if (!checkActivityExist()) {
+            return;
+        }
+        if (infoBean == null) {
+            return;
+        }
+        mInfoBean = infoBean;
+        //时间
+        viewBinding.tvTime.setText(UiUtils.getCourseTimeString(infoBean.startTime, infoBean.endTime));
+        //title
+        viewBinding.tvTitle.setText(infoBean.courseGroupName);
+        //subjectName
+        viewBinding.tvCourseName.setText(infoBean.subjectName);
+        //学生人数
+        List<PianoRoomCourseInfoBean.StudentHomeworkListBean.RecordsBean> records = infoBean.studentHomeworkList.records;
+        viewBinding.tvName.setText(getStudentNames(records));
+//        viewBinding.tvCoursePeopleNum.setText(String.format("%s人", infoBean.studentNum));
+        String status = infoBean.courseStatus;
+        if (TextUtils.equals(CourseConstants.COURSE_STATUS_NOT_START, status)) {
+            //课程未开始
+            viewBinding.tvCourseStatus.setText(getString(R.string.course_not_start_str));
+            viewBinding.tvCourseStatus.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_ff802c));
+            viewBinding.tvEnterRoom.setVisibility(View.VISIBLE);
+            viewBinding.bottomView.setVisibility(View.VISIBLE);
+        }
+        if (TextUtils.equals(CourseConstants.COURSE_STATUS_ING, status)) {
+            //课程进行中
+            viewBinding.tvCourseStatus.setText(R.string.course_ing_str);
+            viewBinding.tvCourseStatus.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
+            viewBinding.tvEnterRoom.setVisibility(View.VISIBLE);
+            viewBinding.bottomView.setVisibility(View.VISIBLE);
+        }
+        if (TextUtils.equals(CourseConstants.COURSE_STATUS_COMPLETE, status)) {
+            //课程已结束
+            viewBinding.tvCourseStatus.setText(R.string.course_is_completed);
+            viewBinding.tvCourseStatus.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_999999));
+            viewBinding.tvEnterRoom.setVisibility(View.GONE);
+            viewBinding.bottomView.setVisibility(View.GONE);
+        }
+        //课后作业信息
+        handleHomeworkData(infoBean);
+        //学生列表数据
+        handleStudentList(infoBean);
+    }
+
+    private String getStudentNames(List<PianoRoomCourseInfoBean.StudentHomeworkListBean.RecordsBean> list) {
+        if (list == null || list.size() == 0) {
+            return "";
+        }
+        StringBuilder stringBuilder = new StringBuilder();
+        if (list.size() > 1) {
+            stringBuilder.append(list.get(0).getStudentName())
+                    .append("、")
+                    .append(list.get(1).getStudentName())
+                    .append("等")
+                    .append(list.size())
+                    .append("人");
+        } else {
+            stringBuilder.append(list.get(0).getStudentName());
+        }
+        return stringBuilder.toString();
+    }
+
+    /**
+     * 提交布置作业成功
+     */
+    @Override
+    public void submitSparringCourseHomeworkSuccess() {
+        if (!checkActivityExist()) {
+            return;
+        }
+        refresh();
+    }
+
+    @Override
+    public void getCourseConfigSuccess(CommonCourseConfigBean data) {
+        this.mConfigBean = data;
+    }
+
+    /**
+     * 绑定学生列表数据
+     *
+     * @param infoBean
+     */
+    private void handleStudentList(PianoRoomCourseInfoBean infoBean) {
+        if (mAdapter != null && infoBean != null && infoBean.studentHomeworkList != null) {
+            mAdapter.setHomeWordStatus(infoBean.decorateHomework);
+            List<PianoRoomCourseInfoBean.StudentHomeworkListBean.RecordsBean> records = infoBean.studentHomeworkList.records;
+            if (records != null && records.size() > 0) {
+                mAdapter.setNewInstance(records);
+            } else {
+                mAdapter.notifyDataSetChanged();
+            }
+        }
+    }
+
+
+    /**
+     * 课后作业
+     */
+    private void handleHomeworkData(PianoRoomCourseInfoBean bean) {
+        if (bean == null) {
+            return;
+        }
+        if (bean.decorateHomework == CourseConstants.COURSE_HOMEWORK_SET) {
+            //已布置课后作业
+            viewBinding.tvHomeworkEmptyText.setVisibility(View.GONE);
+            viewBinding.tvHomeworkContent.setVisibility(View.VISIBLE);
+            viewBinding.tvHomeworkContent.setText(bean.content);
+            viewBinding.tvSetHomework.setVisibility(View.GONE);
+        } else {
+            //未布置课后作业
+            boolean isCourseEnd = TextUtils.equals(bean.courseStatus, CourseStatusType.COMPLETE.getId());
+            viewBinding.tvHomeworkEmptyText.setVisibility(View.VISIBLE);
+            viewBinding.tvHomeworkEmptyText.setText(CourseConstants.getTeacherHomeworkDefaultTip(bean.courseStatus));
+            viewBinding.tvHomeworkContent.setVisibility(View.GONE);
+            viewBinding.tvSetHomework.setVisibility(isCourseEnd ? View.VISIBLE : View.GONE);
+        }
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.tv_set_homework) {
+            //布置作业
+            showSetCommentDialog();
+            return;
+        }
+        if (id == R.id.iv_go_chat) {
+            //跳转聊天
+            if (mInfoBean != null) {
+                ChatHelper.getInstance().goGroupChat(mInfoBean.imGroupId, mInfoBean.courseGroupName);
+            }
+        }
+        if (v.getId() == R.id.tv_enter_room) {
+            //进入教室
+            if (mInfoBean != null) {
+                if (mConfigBean != null) {
+                    boolean lessThanTargetTime = TimeUtils.isLessThanTargetTime(mConfigBean.getGroupStartTime(), mInfoBean.startTime);
+                    if (!lessThanTargetTime) {
+                        ToastUtil.getInstance().showShort("课程还未开始,请在上课前" + mConfigBean.getGroupStartTime() + "分钟进入");
+                        return;
+                    }
+                    OpenClassRoomHelper.start(this, mCourseId, mInfoBean.subjectName);
+                }
+            }
+            return;
+        }
+    }
+
+    private void showSetCommentDialog() {
+        if (mInfoBean == null) {
+            return;
+        }
+        if (!TextUtils.equals(mInfoBean.courseStatus, CourseConstants.COURSE_FILTER_COMPLETED)) {
+            ToastUtil.getInstance().showShort("课程结束之后才可以布置作业哦~");
+            return;
+        }
+        if (mSetCommentDialog == null) {
+            mSetCommentDialog = new CourseSetCommentDialog(this);
+            mSetCommentDialog.setOnSubmitClickListener((content, type) -> {
+                if (UiUtils.isFastClick()) {
+                    return;
+                }
+                if (type == CourseSetCommentDialog.TYPE_SET_HOMEWORK) {
+                    //提交布置作业
+                    presenter.submitSparringCourseHomework(content, mCourseId);
+                }
+            });
+        }
+        if (!mSetCommentDialog.isShowing()) {
+            mSetCommentDialog.show();
+        }
+        mSetCommentDialog.showMethod(CourseSetCommentDialog.TYPE_SET_HOMEWORK);
+    }
+}

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

@@ -117,7 +117,7 @@ public class GroupCourseGroupDetailFragment extends BaseMVPFragment<FgGroupCours
             public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
                 if (position < mAdapter.getData().size()) {
                     VIPCourseGroupDetailListBean bean = mAdapter.getData().get(position);
-                    ARouter.getInstance().build(RouterPath.CourseCenter.PIANO_ROOM_COURSE_DETAIL)
+                    ARouter.getInstance().build(RouterPath.CourseCenter.GROUP_COURSE_DETAIL)
                             .withString(CourseConstants.COURSE_ID, bean.getCourseId())
                             .navigation();
                 }

+ 5 - 2
teacher/src/main/java/com/cooleshow/teacher/ui/course/PianoRoomCourseDetailActivity.java

@@ -10,6 +10,7 @@ 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.bean.CommonCourseConfigBean;
+import com.cooleshow.base.constanst.CourseStatusType;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.TimeUtils;
@@ -97,7 +98,7 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
             }
             if (position < mAdapter.getData().size()) {
                 PianoRoomCourseInfoBean.StudentHomeworkListBean.RecordsBean recordsBean = mAdapter.getData().get(position);
-                if(recordsBean.delFlag){
+                if (recordsBean.delFlag) {
                     //该账号已注销
                     return;
                 }
@@ -246,9 +247,11 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
             viewBinding.tvSetHomework.setVisibility(View.GONE);
         } else {
             //未布置课后作业
+            boolean isCourseEnd = TextUtils.equals(bean.courseStatus, CourseStatusType.COMPLETE.getId());
             viewBinding.tvHomeworkEmptyText.setVisibility(View.VISIBLE);
+            viewBinding.tvHomeworkEmptyText.setText(CourseConstants.getTeacherHomeworkDefaultTip(bean.courseStatus));
             viewBinding.tvHomeworkContent.setVisibility(View.GONE);
-            viewBinding.tvSetHomework.setVisibility(View.VISIBLE);
+            viewBinding.tvSetHomework.setVisibility(isCourseEnd ? View.VISIBLE : View.GONE);
         }
     }
 

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

@@ -15,6 +15,7 @@ import com.bigkoo.pickerview.listener.CustomListener
 import com.bigkoo.pickerview.listener.OnTimeSelectListener
 import com.bigkoo.pickerview.view.TimePickerView
 import com.cooleshow.base.common.WebConstants
+import com.cooleshow.base.constanst.CourseType
 import com.cooleshow.base.router.RouterPath
 import com.cooleshow.base.ui.fragment.BaseMVPFragment
 import com.cooleshow.base.utils.SizeUtils
@@ -130,13 +131,13 @@ class CourseTableFragment :
             }
             if (view.id == R.id.iv_go_chat) {
                 //目前项目很多这样可成类型的判断,扩展性比较差,增加课程类型的话,判断就不对了,后续想想办法吧
-                if (TextUtils.equals(data.courseType, CourseTableListAdapter.OTHER_COURSE) ||
-                    TextUtils.equals(data.courseType, CourseTableListAdapter.VIP_COURSE)
+                if (TextUtils.equals(data.courseType, CourseType.PRACTICE.id) ||
+                    TextUtils.equals(data.courseType, CourseType.VIP.id)
                 ) {
                     //陪练课
                     ChatHelper.getInstance().goChat(data.imUserId, "")
                 } else {
-                    //琴房课或者直播课
+                    //琴房课或者直播课 小组课
                     ChatHelper.getInstance().goGroupChat(data.imGroupId, "")
                 }
             }
@@ -154,8 +155,8 @@ class CourseTableFragment :
     private fun gotoCourseDetail(position: Int) {
         var data: CourseTableDataBean.StudentListBean =
             adapter.data[position] as CourseTableDataBean.StudentListBean;
-        if (TextUtils.equals(CourseTableListAdapter.OTHER_COURSE, data?.courseType)) {
-            //陪练课 跳转详情页
+        if (TextUtils.equals(CourseType.PRACTICE.id, data?.courseType)) {
+            //趣纠课 跳转详情页
             ARouter.getInstance()
                 .build(RouterPath.CourseCenter.SPARRING_COURSE_DETAIL)
                 .withString(CourseConstants.COURSE_ID, data.courseId)
@@ -166,7 +167,7 @@ class CourseTableFragment :
                 .withString(CourseConstants.STUDENT_ID, data.userId)
                 .navigation()
         } else if (TextUtils.equals(
-                CourseTableListAdapter.PIANO_ROOM_COURSE,
+                CourseType.PIANO_ROOM_CLASS.id,
                 data?.courseType
             )
         ) {
@@ -175,7 +176,16 @@ class CourseTableFragment :
                 .withString("course_id", data.courseId)
                 .navigation()
         } else if (TextUtils.equals(
-                CourseTableListAdapter.VIP_COURSE,
+                CourseType.GROUP.id,
+                data?.courseType
+            )
+        ) {
+            //小组课 跳转详情页
+            ARouter.getInstance().build(RouterPath.CourseCenter.GROUP_COURSE_DETAIL)
+                .withString("course_id", data.courseId)
+                .navigation()
+        } else if (TextUtils.equals(
+                CourseType.VIP.id,
                 data?.courseType
             )
         ) {

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


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


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


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


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


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


+ 328 - 0
teacher/src/main/res/layout/activity_group_course_detail_layout.xml

@@ -0,0 +1,328 @@
+<?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="match_parent">
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:adjustViewBounds="true"
+        android:src="@drawable/bg_appointment_top"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <androidx.core.widget.NestedScrollView
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:overScrollMode="never"
+        android:scrollbars="none"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/toolbar_include">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:paddingStart="14dp"
+            android:paddingTop="12dp"
+            android:paddingEnd="14dp"
+            android:paddingBottom="12dp">
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/cs_top_info"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@drawable/bg_white_10dp"
+                android:paddingStart="12dp"
+                android:paddingEnd="12dp"
+                android:paddingBottom="12dp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/title_view">
+
+                <ImageView
+                    android:id="@+id/iv_clock_icon"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="15dp"
+                    android:src="@drawable/icon_clock"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_time"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="6dp"
+                    android:includeFontPadding="false"
+                    android:textColor="@color/color_666666"
+                    android:textSize="@dimen/sp_13"
+                    app:layout_constraintBottom_toBottomOf="@+id/iv_clock_icon"
+                    app:layout_constraintLeft_toRightOf="@+id/iv_clock_icon"
+                    app:layout_constraintTop_toTopOf="@+id/iv_clock_icon"
+                    tools:text="2021/09/17 14:00~14:25" />
+
+                <View
+                    android:id="@+id/view_line"
+                    android:layout_width="0dp"
+                    android:layout_height="1dp"
+                    android:layout_marginTop="15dp"
+                    android:background="@color/color_f2f2f2"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/iv_clock_icon" />
+
+                <de.hdodenhof.circleimageview.CircleImageView
+                    android:id="@+id/iv_avatar"
+                    android:layout_width="40dp"
+                    android:layout_height="40dp"
+                    android:layout_marginTop="12dp"
+                    android:src="@drawable/icon_group_course_avatar"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/view_line"
+                    app:qmui_corner_radius="5dp" />
+
+                <TextView
+                    android:id="@+id/tv_title"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="10dp"
+                    android:ellipsize="end"
+                    android:includeFontPadding="false"
+                    android:maxLines="1"
+                    android:textColor="@color/color_1a1a1a"
+                    android:textSize="@dimen/sp_15"
+                    app:layout_constraintBottom_toTopOf="@+id/tv_name"
+                    app:layout_constraintHorizontal_bias="0"
+                    app:layout_constraintHorizontal_chainStyle="packed"
+                    app:layout_constraintLeft_toRightOf="@+id/iv_avatar"
+                    app:layout_constraintRight_toLeftOf="@+id/iv_attendance_status"
+                    app:layout_constraintTop_toTopOf="@+id/iv_avatar"
+                    app:layout_constraintVertical_chainStyle="packed"
+                    app:layout_constraintWidth_default="wrap"
+                    tools:text="VIP定制课-张豆豆VIP定制课-张豆豆" />
+
+                <ImageView
+                    android:id="@+id/iv_attendance_status"
+                    android:layout_width="wrap_content"
+                    android:layout_height="17.1dp"
+                    android:layout_marginStart="5dp"
+                    android:layout_marginEnd="5dp"
+                    android:adjustViewBounds="true"
+                    android:src="@drawable/icon_course_attendance_truancy"
+                    android:visibility="gone"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_title"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_title"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/tv_title" />
+
+                <TextView
+                    android:id="@+id/tv_name"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="4dp"
+                    android:ellipsize="middle"
+                    android:includeFontPadding="false"
+                    android:singleLine="true"
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_13"
+                    app:layout_constraintBottom_toBottomOf="@+id/iv_avatar"
+                    app:layout_constraintHorizontal_bias="0"
+                    app:layout_constraintHorizontal_chainStyle="packed"
+                    app:layout_constraintLeft_toLeftOf="@+id/tv_title"
+                    app:layout_constraintRight_toLeftOf="@+id/tv_course_name"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_title"
+                    app:layout_constraintWidth_default="wrap"
+                    tools:text="张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆" />
+
+
+                <TextView
+                    android:id="@+id/tv_course_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="5dp"
+                    android:layout_marginEnd="5dp"
+                    android:background="@drawable/shape_couse_type_text_bg"
+                    android:gravity="center"
+                    android:includeFontPadding="false"
+                    android:paddingStart="4dp"
+                    android:paddingTop="1.5dp"
+                    android:paddingEnd="4dp"
+                    android:paddingBottom="1.5dp"
+                    android:textColor="@color/color_ff8c00"
+                    android:textSize="@dimen/sp_10"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_name"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_name"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/tv_name"
+                    tools:text="单簧管" />
+
+
+                <TextView
+                    android:id="@+id/tv_course_status"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_14"
+                    app:layout_constraintBottom_toTopOf="@+id/view_line"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="parent"
+                    tools:text="未开始" />
+
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="12dp"
+                android:background="@drawable/bg_white_10dp"
+                android:paddingBottom="10dp">
+
+                <View
+                    android:id="@+id/view_title_line_homework"
+                    android:layout_width="4dp"
+                    android:layout_height="14dp"
+                    android:layout_marginStart="12dp"
+                    android:layout_marginTop="13dp"
+                    android:background="@drawable/shape_course_title_tag_bg"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_homework_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:includeFontPadding="false"
+                    android:paddingStart="5dp"
+                    android:text="课后作业"
+                    android:textColor="@color/color_1a1a1a"
+                    android:textSize="@dimen/sp_13"
+                    app:layout_constraintBottom_toBottomOf="@+id/view_title_line_homework"
+                    app:layout_constraintLeft_toRightOf="@+id/view_title_line_homework"
+                    app:layout_constraintTop_toTopOf="@+id/view_title_line_homework" />
+
+                <TextView
+                    android:id="@+id/tv_set_homework"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:drawableLeft="@drawable/icon_set_homework"
+                    android:drawablePadding="3dp"
+                    android:includeFontPadding="false"
+                    android:paddingEnd="11dp"
+                    android:text="@string/set_homework_str"
+                    android:textColor="@color/color_2dc7aa"
+                    android:textSize="@dimen/sp_14"
+                    android:visibility="invisible"
+                    app:layout_constraintBottom_toBottomOf="@+id/view_title_line_homework"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/view_title_line_homework" />
+
+                <FrameLayout
+                    android:id="@+id/view_homework_content_bg"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="11dp"
+                    android:layout_marginTop="11dp"
+                    android:layout_marginEnd="11dp"
+                    android:background="@drawable/shape_bg_f7f8f9_4dp"
+                    android:minHeight="88dp"
+                    android:padding="11dp"
+                    app:layout_constraintTop_toBottomOf="@+id/view_title_line_homework">
+
+                    <TextView
+                        android:id="@+id/tv_homework_empty_text"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center"
+                        android:layout_marginStart="20dp"
+                        android:layout_marginEnd="20dp"
+                        android:drawableLeft="@drawable/icon_homework_empty"
+                        android:drawablePadding="10dp"
+                        android:gravity="center_vertical"
+                        android:text="@string/please_set_homework_tip"
+                        android:textColor="@color/color_999999"
+                        android:textSize="@dimen/sp_13" />
+
+                    <TextView
+                        android:id="@+id/tv_homework_content"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:includeFontPadding="false"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_13"
+                        android:visibility="gone"
+                        tools:text="每个音的指法比较熟练,但是遇到指法变换比较频繁的小节熟练度不足,建议平时可以选择指法变换较大的曲目多加练习!" />
+                </FrameLayout>
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="12dp"
+                android:background="@drawable/bg_white_10dp">
+
+                <View
+                    android:id="@+id/view_title_line_student"
+                    android:layout_width="4dp"
+                    android:layout_height="14dp"
+                    android:layout_marginStart="12dp"
+                    android:layout_marginTop="13dp"
+                    android:background="@drawable/shape_course_title_tag_bg"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_student_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:includeFontPadding="false"
+                    android:paddingStart="5dp"
+                    android:text="上课学生"
+                    android:textColor="@color/color_1a1a1a"
+                    android:textSize="@dimen/sp_13"
+                    app:layout_constraintBottom_toBottomOf="@+id/view_title_line_student"
+                    app:layout_constraintLeft_toRightOf="@+id/view_title_line_student"
+                    app:layout_constraintTop_toTopOf="@+id/view_title_line_student" />
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/recyclerView"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:overScrollMode="never"
+                    android:scrollbars="horizontal"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_student_title" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <View
+                android:id="@+id/bottom_view"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/dp_100"
+                android:visibility="gone" />
+        </LinearLayout>
+    </androidx.core.widget.NestedScrollView>
+
+
+    <TextView
+        android:id="@+id/tv_enter_room"
+        android:layout_width="match_parent"
+        android:layout_height="44dp"
+        android:layout_marginStart="27dp"
+        android:layout_marginEnd="27dp"
+        android:layout_marginBottom="30dp"
+        android:background="@drawable/shape_2dc7aa_39dp"
+        android:gravity="center"
+        android:text="进入教室"
+        android:textColor="@color/white"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent" />
+</androidx.constraintlayout.widget.ConstraintLayout>