Browse Source

增加老师端我的课程小组课tab

Pq 3 months ago
parent
commit
c8eed7921e

+ 2 - 1
BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/CourseTipDialog.java

@@ -35,9 +35,10 @@ import androidx.recyclerview.widget.RecyclerView;
  */
 public class CourseTipDialog extends Dialog implements View.OnClickListener {
     private ArrayList<CourseTipBean> list;
-    private int[] titles = new int[]{R.string.vip_course_tip_title, R.string.interest_course_tip_title, R.string.live_course_tip_title, R.string.video_course_tip_title};
+    private int[] titles = new int[]{R.string.vip_course_tip_title, R.string.interest_course_tip_title,R.string.group_course_tip_title, R.string.live_course_tip_title, R.string.video_course_tip_title};
     private int[] desDatas = new int[]{R.string.vip_course_tip_str,
             R.string.interest_course_tip_str,
+            R.string.group_course_tip_str,
             R.string.live_course_tip_str,
             R.string.video_course_tip_str};
     private Banner mBanner;

+ 1 - 0
BaseLibrary/src/main/res/values/strings.xml

@@ -40,6 +40,7 @@
     <string name="piano_course_tip_str_student">琴房课是专为教师和他们的私有学生设计的1对多线上课程。通过教师分享的云酷琴房链接,学生可以与教师绑定,从而进入专属的线上琴房。在琴房中,教师可以为学生安排和管理线上课程,提供个性化的教学体验。</string>
     <string name="vip_course_tip_title">什么是VIP定制课?</string>
     <string name="interest_course_tip_title">什么是趣纠课?</string>
+    <string name="group_course_tip_title">什么是小组课?</string>
     <string name="live_course_tip_title">什么是直播课?</string>
     <string name="video_course_tip_title">什么是视频课?</string>
     <string name="piano_course_tip_title">什么是琴房课?</string>

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

@@ -49,7 +49,7 @@ public class GroupCourseListAdapter extends BaseQuickAdapter<MineLiveCourseListB
         //subjectName
         holder.setText(R.id.tv_course_name, data.subjectName);
         //购买人数
-        String tip = "剩余" + (data.getMaxStudentNum() - data.getStudentCount()) + "个名额";
+        String tip = tip = String.format("剩余%d个名额", data.getMaxStudentNum() - data.getStudentCount());
         holder.setText(R.id.tv_buy_num, tip);
         //课程封面
         ImageView iv_bg = holder.getView(R.id.iv_bg);

+ 81 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineGroupCourseListAdapter.java

@@ -0,0 +1,81 @@
+package com.cooleshow.teacher.adapter;
+
+import android.text.TextUtils;
+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.constanst.CourseGroupStatusType;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.base.utils.StringUtils;
+import com.cooleshow.base.utils.TimeUtils;
+import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.base.utils.Utils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.LiveCourseListBean;
+import com.cooleshow.teacher.constants.CourseConstants;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2022/4/25.
+ */
+public class MineGroupCourseListAdapter extends BaseQuickAdapter<LiveCourseListBean.RowsBean, BaseViewHolder> {
+
+    public MineGroupCourseListAdapter() {
+        super(R.layout.item_live_course_list_layout);
+        addChildClickViewIds(R.id.iv_chat);
+    }
+
+    @Override
+    protected void convert(@NonNull BaseViewHolder holder, LiveCourseListBean.RowsBean data) {
+        String timeStr = TextUtils.isEmpty(data.startTime) ? "" : TimeUtils.date2String(TimeUtils.string2Date(data.startTime), "yyyy-MM-dd HH:mm");
+        //时间
+        holder.setText(R.id.tv_time, "开课时间:" + timeStr);
+        //title
+        holder.setText(R.id.tv_title, data.courseGroupName);
+        //subjectName
+        holder.setText(R.id.tv_course_name, data.subjectName);
+        //封面
+        ImageView iv_cover = holder.getView(R.id.iv_bg);
+        GlideUtils.INSTANCE.loadImage(getContext(), data.backgroundPic, iv_cover, com.cooleshow.base.R.drawable.bg_video_placeholder);
+        //老师名称
+        String courseIntroduce = data.getCourseIntroduce();
+        if (TextUtils.isEmpty(courseIntroduce)) {
+            courseIntroduce = "暂无介绍";
+        }
+        courseIntroduce = StringUtils.replaceSpace(courseIntroduce);
+        holder.setText(R.id.tv_des, courseIntroduce);
+
+        TextView tvCourseStatusBt = holder.getView(R.id.tv_course_status);
+        String tip = "";
+        if (TextUtils.equals(CourseConstants.COURSE_STATUS_NOT_START, data.status)) {
+            //未开始
+            holder.setText(R.id.tv_course_status, CourseGroupStatusType.NOT_START.getValue());
+            tvCourseStatusBt.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_ff802c));
+            tip = String.format("剩余%d个名额", data.getMaxStudentNum() - data.getStudentCount());
+        }
+
+        if (TextUtils.equals(CourseConstants.COURSE_STATUS_ING, data.status)) {
+            //进行中
+            holder.setText(R.id.tv_course_status, CourseGroupStatusType.ING.getValue());
+            tvCourseStatusBt.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
+            tip = UiUtils.getBuyNumTip2("", String.valueOf(data.studentCount));
+        }
+
+        if (TextUtils.equals(CourseConstants.COURSE_STATUS_COMPLETE, data.status)) {
+            //已结束
+            holder.setText(R.id.tv_course_status, CourseGroupStatusType.COMPLETE.getValue());
+            tvCourseStatusBt.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_999999));
+            tip = UiUtils.getBuyNumTip2("", String.valueOf(data.studentCount));
+        }
+        //购买人数
+        holder.setText(R.id.tv_buy_num, tip);
+
+        //已上课时
+        holder.setText(R.id.tv_course_completed_value, data.getCompleteCourseNum());
+        //总课时
+        holder.setText(R.id.tv_course_total_value, data.getCourseNum());
+    }
+}

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

@@ -83,7 +83,7 @@ public class LiveCourseListBean {
         public String endTime;
         public String startTime;
         public String status;
-        public String studentCount;
+        public int studentCount;
         public String subjectName;
         public String avatar;
         public String username;
@@ -92,6 +92,7 @@ public class LiveCourseListBean {
         public String courseIntroduce;
         public String courseNum;
         public String completeCourseNum;
+        public int maxStudentNum;
 
         public String getCourseIntroduce() {
             return courseIntroduce;
@@ -116,5 +117,117 @@ public class LiveCourseListBean {
         public void setCompleteCourseNum(String completeCourseNum) {
             this.completeCourseNum = completeCourseNum;
         }
+
+        public String getBackgroundPic() {
+            return backgroundPic;
+        }
+
+        public void setBackgroundPic(String backgroundPic) {
+            this.backgroundPic = backgroundPic;
+        }
+
+        public int getCourseGroupId() {
+            return courseGroupId;
+        }
+
+        public void setCourseGroupId(int courseGroupId) {
+            this.courseGroupId = courseGroupId;
+        }
+
+        public String getCourseId() {
+            return courseId;
+        }
+
+        public void setCourseId(String courseId) {
+            this.courseId = courseId;
+        }
+
+        public String getCourseGroupName() {
+            return courseGroupName;
+        }
+
+        public void setCourseGroupName(String courseGroupName) {
+            this.courseGroupName = courseGroupName;
+        }
+
+        public String getEndTime() {
+            return endTime;
+        }
+
+        public void setEndTime(String endTime) {
+            this.endTime = endTime;
+        }
+
+        public String getStartTime() {
+            return startTime;
+        }
+
+        public void setStartTime(String startTime) {
+            this.startTime = startTime;
+        }
+
+        public String getStatus() {
+            return status;
+        }
+
+        public void setStatus(String status) {
+            this.status = status;
+        }
+
+        public int getStudentCount() {
+            return studentCount;
+        }
+
+        public void setStudentCount(int studentCount) {
+            this.studentCount = studentCount;
+        }
+
+        public String getSubjectName() {
+            return subjectName;
+        }
+
+        public void setSubjectName(String subjectName) {
+            this.subjectName = subjectName;
+        }
+
+        public String getAvatar() {
+            return avatar;
+        }
+
+        public void setAvatar(String avatar) {
+            this.avatar = avatar;
+        }
+
+        public String getUsername() {
+            return username;
+        }
+
+        public void setUsername(String username) {
+            this.username = username;
+        }
+
+        public String getUserId() {
+            return userId;
+        }
+
+        public void setUserId(String userId) {
+            this.userId = userId;
+        }
+
+        public String getImGroupId() {
+            return imGroupId;
+        }
+
+        public void setImGroupId(String imGroupId) {
+            this.imGroupId = imGroupId;
+        }
+
+        public int getMaxStudentNum() {
+            return maxStudentNum;
+        }
+
+        public void setMaxStudentNum(int maxStudentNum) {
+            this.maxStudentNum = maxStudentNum;
+        }
     }
 }

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

@@ -0,0 +1,18 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.LiveCourseListBean;
+
+/**
+ * Author by pq, Date on 2022/4/20.
+ */
+public interface GroupCourseContract {
+
+    interface CourseView extends BaseView {
+        void onGetGroupCourseSuccess(int page, LiveCourseListBean liveCourseListBean);
+        void onGetCourseError(int page);
+    }
+
+    interface Presenter {
+    }
+}

+ 61 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/course/GroupCoursePresenter.java

@@ -0,0 +1,61 @@
+package com.cooleshow.teacher.presenter.course;
+
+import android.text.TextUtils;
+
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.constanst.CourseType;
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.RequestBodyUtil;
+import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.bean.LiveCourseListBean;
+import com.cooleshow.teacher.contract.GroupCourseContract;
+import com.cooleshow.teacher.contract.LiveCourseContract;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * 陪练课presenter
+ * Author by pq, Date on 2022/4/20.
+ */
+public class GroupCoursePresenter extends BasePresenter<GroupCourseContract.CourseView> implements GroupCourseContract.Presenter {
+
+    public void queryGroupCourse(boolean isShowLoading, String status, String subjectId, String search, int page) {
+        if (isShowLoading && getView() != null) {
+            getView().showLoading();
+        }
+        JSONObject jsonObject = new JSONObject();
+        try {
+//            jsonObject.putOpt("classDate", month);
+            if (!TextUtils.isEmpty(status)) {
+                jsonObject.putOpt("courseState", status);
+            }
+            if (!TextUtils.isEmpty(subjectId)) {
+                jsonObject.putOpt("subjectId", subjectId);
+            }
+            jsonObject.putOpt("courseType", CourseType.GROUP.getId());
+            jsonObject.putOpt("search", search);
+            jsonObject.putOpt("page", page);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        addSubscribe(create(APIService.class).getLiveCourses(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<LiveCourseListBean>(getView()) {
+            @Override
+            protected void onSuccess(LiveCourseListBean data) {
+                if (getView() != null) {
+                    getView().onGetGroupCourseSuccess(page, data);
+                }
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().onGetCourseError(page);
+                }
+            }
+        });
+    }
+}

+ 2 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/course/LiveCoursePresenter.java

@@ -3,6 +3,7 @@ package com.cooleshow.teacher.presenter.course;
 import android.text.TextUtils;
 
 import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.constanst.CourseType;
 import com.cooleshow.base.presenter.BasePresenter;
 import com.cooleshow.base.rx.BaseObserver;
 import com.cooleshow.base.utils.RequestBodyUtil;
@@ -32,6 +33,7 @@ public class LiveCoursePresenter extends BasePresenter<LiveCourseContract.LiveCo
             if (!TextUtils.isEmpty(subjectId)) {
                 jsonObject.putOpt("subjectId", subjectId);
             }
+            jsonObject.putOpt("courseType", CourseType.LIVE.getId());
             jsonObject.putOpt("search", search);
             jsonObject.putOpt("page", page);
             jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);

+ 303 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/GroupCourseGroupFragment.java

@@ -0,0 +1,303 @@
+package com.cooleshow.teacher.ui.course;
+
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.PopupWindow;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemChildClickListener;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.constanst.CourseGroupStatusType;
+import com.cooleshow.base.interfaces.IFilterViewData;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.base.utils.LOG;
+import com.cooleshow.base.utils.PopupUtil;
+import com.cooleshow.base.utils.SizeUtils;
+import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.base.utils.helper.QMUIDeviceHelper;
+import com.cooleshow.base.widgets.CourseGroupFilterView;
+import com.cooleshow.base.widgets.EmptyViewLayout;
+import com.cooleshow.base.widgets.GridItemDecoration;
+import com.cooleshow.chatmodule.utils.helper.ChatHelper;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.LiveCourseListAdapter;
+import com.cooleshow.teacher.adapter.MineGroupCourseListAdapter;
+import com.cooleshow.teacher.bean.LiveCourseListBean;
+import com.cooleshow.teacher.bean.QuerySubjectBean;
+import com.cooleshow.teacher.constants.CourseConstants;
+import com.cooleshow.teacher.contract.GroupCourseContract;
+import com.cooleshow.teacher.contract.LiveCourseContract;
+import com.cooleshow.teacher.databinding.FragmentLiveCourseLayoutBinding;
+import com.cooleshow.teacher.presenter.course.GroupCoursePresenter;
+import com.cooleshow.teacher.presenter.course.LiveCoursePresenter;
+import com.scwang.smart.refresh.footer.ClassicsFooter;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+/**
+ * Author by pq, Date on 2022/4/25.
+ */
+public class GroupCourseGroupFragment extends BaseMVPFragment<FragmentLiveCourseLayoutBinding, GroupCoursePresenter> implements GroupCourseContract.CourseView, View.OnClickListener {
+    private String currentCourseFilterStatus = CourseConstants.COURSE_FILTER_ALL;
+    private String currentSubjectId;
+    private String searchCondition;
+    private int currentPage;
+    private MineGroupCourseListAdapter mAdapter;
+    private EmptyViewLayout mEmptyView;
+    private ArrayList<IFilterViewData> mCourseFilterStatusBeans;
+    private List<IFilterViewData> subjectBeanList = new ArrayList<>();
+    private boolean hasNext = true;
+    private CourseGroupFilterView mCourseGroupFilterView;
+    private PopupWindow mPopupWindow;
+
+    @Override
+    protected FragmentLiveCourseLayoutBinding getLayoutView() {
+        return FragmentLiveCourseLayoutBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected GroupCoursePresenter createPresenter() {
+        return new GroupCoursePresenter();
+    }
+
+    @Override
+    protected void initView(View rootView) {
+        mViewBinding.refreshLayout.setRefreshFooter(new ClassicsFooter(getContext()));
+    }
+
+
+    @Override
+    public void onResume() {
+        super.onResume();
+    }
+
+    private void buildDefaultCourseStatusFilterList() {
+        CourseGroupStatusType[] values = CourseGroupStatusType.values();
+        List<CourseGroupStatusType> courseGroupStatusTypes = Arrays.asList(values);
+        mCourseFilterStatusBeans = new ArrayList<IFilterViewData>(courseGroupStatusTypes);
+    }
+
+    private void reBuildFilter(String status, String subjectId) {
+        if (!TextUtils.isEmpty(currentCourseFilterStatus) &&
+                !TextUtils.isEmpty(currentSubjectId) &&
+                TextUtils.equals(currentCourseFilterStatus, status) &&
+                TextUtils.equals(currentSubjectId, subjectId)) {
+            //防止重复条件触发
+            return;
+        }
+        currentCourseFilterStatus = !TextUtils.isEmpty(status) ? status : CourseConstants.COURSE_FILTER_ALL;
+        GroupCourseGroupFragment.this.currentSubjectId = subjectId;
+        currentPage = 1;
+        getData(true);
+    }
+
+    @Override
+    protected void initData() {
+        mAdapter = new MineGroupCourseListAdapter();
+        initListener();
+        if (mEmptyView == null) {
+            mEmptyView = new EmptyViewLayout(getContext());
+        }
+        mEmptyView.setContent(com.cooleshow.base.R.drawable.icon_empty_course, "暂无课程~");
+        mAdapter.setEmptyView(mEmptyView);
+//        mAdapter.getLoadMoreModule().setEnableLoadMoreIfNotFullPage(false);
+        RecyclerView.LayoutManager layoutManager;
+        if(QMUIDeviceHelper.isTablet(getContext())){
+            layoutManager = new GridLayoutManager(getContext(),2);
+            GridItemDecoration itemDecoration =new GridItemDecoration(2,0,0, SizeUtils.dp2px(6));
+            mViewBinding.recyclerViewList.addItemDecoration(itemDecoration);
+        }else{
+            layoutManager =new LinearLayoutManager(getContext());
+        }
+        mViewBinding.recyclerViewList.setLayoutManager(layoutManager);
+        mViewBinding.recyclerViewList.setAdapter(mAdapter);
+        buildDefaultCourseStatusFilterList();
+        reBuildFilter(CourseConstants.COURSE_FILTER_ALL, null);
+    }
+
+    private void initListener() {
+        mViewBinding.tvFilter.setOnClickListener(this);
+        mViewBinding.tvSearch.setOnClickListener(this);
+        mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+                currentPage = 1;
+                getData(true);
+            }
+        });
+
+        mViewBinding.refreshLayout.setOnLoadMoreListener(new com.scwang.smart.refresh.layout.listener.OnLoadMoreListener() {
+            @Override
+            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
+                //上拉加载
+                if (hasNext) {
+                    currentPage++;
+                    getData(false);
+                } else {
+                    mViewBinding.refreshLayout.finishLoadMoreWithNoMoreData();
+                }
+            }
+        });
+
+        mAdapter.setOnItemClickListener((adapter, view, position) -> {
+            LiveCourseListBean.RowsBean item = (LiveCourseListBean.RowsBean) adapter.getItem(position);
+//            ARouter.getInstance()
+//                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
+//                    .withString(WebConstants.WEB_URL, String.format(WebConstants.TEACHER_LIVE_DETAIL_NORMAL_COURSE, item.courseGroupId, item.courseId))
+//                    .navigation();
+        });
+        mAdapter.setOnItemChildClickListener(new OnItemChildClickListener() {
+            @Override
+            public void onItemChildClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                int id = view.getId();
+                if (id == R.id.iv_chat) {
+                    LiveCourseListBean.RowsBean item = (LiveCourseListBean.RowsBean) adapter.getItem(position);
+                    if (item != null) {
+                        ChatHelper.getInstance().goGroupChat(item.imGroupId, "");
+                    }
+                }
+            }
+        });
+    }
+
+
+    private void getData(boolean isShowLoading) {
+        //根据默认筛选条件查询
+        if (currentPage == 1) {
+            mViewBinding.refreshLayout.resetNoMoreData();
+        }
+        presenter.queryGroupCourse(isShowLoading, currentCourseFilterStatus, currentSubjectId, searchCondition, currentPage);
+    }
+
+    private void checkHasNext(int dataSize) {
+        hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
+        mViewBinding.refreshLayout.setNoMoreData(!hasNext);
+    }
+
+
+    @Override
+    public void onGetGroupCourseSuccess(int page, LiveCourseListBean dataList) {
+        if (isDetached()) {
+            return;
+        }
+        LOG.i("pq", "onGetLiveCourseSuccess:" + dataList);
+        if (dataList != null) {
+            if (page == 1) {
+                //第一页
+                mViewBinding.refreshLayout.finishRefresh();
+                if (mAdapter != null) {
+                    mAdapter.getData().clear();
+                    mAdapter.notifyDataSetChanged();
+                    if (dataList.getRows() != null && dataList.getRows().size() > 0) {
+                        checkHasNext(dataList.getRows().size());
+                        mAdapter.setNewInstance(dataList.getRows());
+                    }
+                }
+            } else {
+                //加载更多
+                if (mAdapter != null) {
+                    if (dataList.getRows() != null && dataList.getRows().size() > 0) {
+                        mViewBinding.refreshLayout.finishLoadMore();
+                        checkHasNext(dataList.getRows().size());
+                        mAdapter.addData(dataList.getRows());
+                    } else {
+                        mViewBinding.refreshLayout.finishLoadMoreWithNoMoreData();
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public void onGetCourseError(int page) {
+        if (isDetached()) {
+            return;
+        }
+        if (page == 1) {
+            mViewBinding.refreshLayout.finishRefresh();
+        } else {
+            if (mAdapter != null) {
+                currentPage--;
+                mViewBinding.refreshLayout.finishLoadMore(false);
+            }
+        }
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.tv_filter) {
+            //筛选
+            showFilterView();
+            return;
+        }
+
+        if (id == R.id.tv_search) {
+            currentPage = 1;
+            searchCondition = mViewBinding.etTargetName.getText().toString().trim();
+            getData(false);
+            return;
+        }
+    }
+
+
+    private void showFilterView() {
+        if (mCourseGroupFilterView == null) {
+            mCourseGroupFilterView = new CourseGroupFilterView(getContext());
+            mCourseGroupFilterView.setOnEventListener(new CourseGroupFilterView.OnEventListener() {
+                @Override
+                public void onDismiss() {
+                    if (mPopupWindow != null) {
+                        mPopupWindow.dismiss();
+                    }
+                }
+
+                @Override
+                public void onQuery(String obj, String obj2) {
+                    if (mPopupWindow != null) {
+                        mPopupWindow.dismiss();
+                    }
+                    currentPage = 1;
+                    reBuildFilter(obj, obj2);
+                }
+            });
+        }
+        mCourseGroupFilterView.setData(mCourseFilterStatusBeans, subjectBeanList);
+        ViewGroup parent = (ViewGroup) mCourseGroupFilterView.getParent();
+        if (parent != null) {
+            parent.removeView(mCourseGroupFilterView);
+        }
+        mPopupWindow = PopupUtil.showInDropWrapNObg(getContext(), mCourseGroupFilterView, mViewBinding.viewTopLine, new PopupUtil.ShowListener() {
+            @Override
+            public void onShow(View view, PopupWindow popupWindow) {
+                UiUtils.refreshFilterTextStyle(true, mViewBinding.tvFilter);
+            }
+        });
+        mPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                UiUtils.refreshFilterTextStyle(false, mViewBinding.tvFilter);
+            }
+        });
+    }
+
+
+    public void querySubjectItemSuccess(List<QuerySubjectBean> data) {
+        subjectBeanList.clear();
+        subjectBeanList.add(new QuerySubjectBean("全部", ""));
+        subjectBeanList.addAll(data);
+    }
+}

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

@@ -39,7 +39,7 @@ import androidx.viewpager2.widget.ViewPager2;
  */
 @Route(path = RouterPath.CourseCenter.TEACHER_MINE_COURSE)
 public class MineCourseActivity extends BaseMVPActivity<ActivityMineCourseLayoutBinding, MineCoursePresenter> implements MineCourseContract.MineCourseView, View.OnClickListener {
-    private List<String> titles = new ArrayList<String>(Arrays.asList("VIP定制课", "趣纠课", "直播课", "视频课", "琴房课"));
+    private List<String> titles = new ArrayList<String>(Arrays.asList("VIP定制课", "趣纠课", "小组课", "直播课", "视频课", "琴房课"));
     private ArrayList<Fragment> mFragments = new ArrayList<>();
     private LiveCourseGroupFragment mLiveCourseFragment;
     private VideoCourseGroupFragment mVideoCourseFragment;
@@ -48,6 +48,7 @@ public class MineCourseActivity extends BaseMVPActivity<ActivityMineCourseLayout
     private InterestCourseGroupFragment mInterestCourseGroupFragment;
     private CourseTipDialog mCourseTipDialog;
     private ArrayList<CourseTipBean> courseTipList;
+    private GroupCourseGroupFragment mGroupCourseGroupFragment;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -85,11 +86,13 @@ public class MineCourseActivity extends BaseMVPActivity<ActivityMineCourseLayout
 
         mVipCourseFragment = new VIPCourseGroupFragment();
         mInterestCourseGroupFragment = new InterestCourseGroupFragment();
+        mGroupCourseGroupFragment = new GroupCourseGroupFragment();
         mLiveCourseFragment = new LiveCourseGroupFragment();
         mVideoCourseFragment = new VideoCourseGroupFragment();
         mPianoRoomCourseGroupFragment = new PianoCourseGroupFragment();
         mFragments.add(mVipCourseFragment);
         mFragments.add(mInterestCourseGroupFragment);
+        mFragments.add(mGroupCourseGroupFragment);
         mFragments.add(mLiveCourseFragment);
         mFragments.add(mVideoCourseFragment);
         mFragments.add(mPianoRoomCourseGroupFragment);
@@ -113,11 +116,13 @@ public class MineCourseActivity extends BaseMVPActivity<ActivityMineCourseLayout
         courseTipList = new ArrayList<>();
         int[] titles = new int[]{com.cooleshow.base.R.string.vip_course_tip_title,
                 com.cooleshow.base.R.string.interest_course_tip_title,
+                com.cooleshow.base.R.string.group_course_tip_title,
                 com.cooleshow.base.R.string.live_course_tip_title,
                 com.cooleshow.base.R.string.video_course_tip_title,
                 com.cooleshow.base.R.string.piano_course_tip_title};
         int[] desDatas = new int[]{com.cooleshow.base.R.string.vip_course_tip_str,
                 com.cooleshow.base.R.string.interest_course_tip_str,
+                com.cooleshow.base.R.string.group_course_tip_str,
                 com.cooleshow.base.R.string.live_course_tip_str,
                 com.cooleshow.base.R.string.video_course_tip_str,
                 com.cooleshow.base.R.string.piano_course_tip_str};
@@ -189,6 +194,9 @@ public class MineCourseActivity extends BaseMVPActivity<ActivityMineCourseLayout
         if (mInterestCourseGroupFragment != null) {
             mInterestCourseGroupFragment.querySubjectItemSuccess(data);
         }
+        if (mGroupCourseGroupFragment != null) {
+            mGroupCourseGroupFragment.querySubjectItemSuccess(data);
+        }
         if (mLiveCourseFragment != null) {
             mLiveCourseFragment.querySubjectItemSuccess(data);
         }

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

@@ -47,6 +47,7 @@ import androidx.recyclerview.widget.RecyclerView;
 /**
  * Author by pq, Date on 2024/11/15.
  */
+@Deprecated
 @Route(path = RouterPath.CourseCenter.VIP_COURSE_SETTING)
 public class VIPCourseSettingActivity extends BaseMVPActivity<AcVipCourseSettingLayoutBinding, VIPCourseSettingPresenter> implements View.OnClickListener, VIPCourseSettingContract.View {
     private String days = "0";//课程结束后多少天到账