邓琴文 3 vuotta sitten
vanhempi
commit
285a284690

+ 3 - 3
BaseLibrary/src/main/java/com/cooleshow/base/utils/ErrorParse.java

@@ -32,15 +32,15 @@ public class ErrorParse {
         if (throwable instanceof ApiException) {
             ApiException apiException = (ApiException) throwable;
             if (apiException.getErrcode() == TOKEN_INVALID_ERROR_CODE) {
-                ToastUtils.showShort("登录状态异常,请重新登录");
+                ToastUtil.getInstance().showShort("登录状态异常,请重新登录");
                 logOut();
                 return;
             } else {
-                ToastUtils.showShort(apiException.getErrmsg());
+                ToastUtil.getInstance().showShort(apiException.getErrmsg());
             }
         } else {
             throwable.printStackTrace();
-            ToastUtils.showShort("网络或服务错误,请重试");
+            ToastUtil.getInstance().showShort("网络或服务错误,请重试");
         }
     }
 

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

@@ -46,6 +46,7 @@ import com.cooleshow.teacher.bean.WithdrawalRecordBean;
 import com.cooleshow.teacher.bean.request.QueryGroupListEntry;
 import com.cooleshow.teacher.bean.request.SheetMusicEntry;
 import com.cooleshow.teacher.bean.request.SysSuggestionEntry;
+import com.cooleshow.teacher.bean.request.TeacherPracticeCourseEntry;
 import com.cooleshow.teacher.bean.request.UnBindCardEntry;
 import com.cooleshow.usercenter.bean.SetDetailBean;
 import com.cooleshow.usercenter.bean.UserInfo;
@@ -112,7 +113,7 @@ public interface APIService {
      * @return
      */
     @POST(TEACHER_GROUP + "courseSchedule/queryTeacherPracticeCourse")
-    Observable<BaseResponse<SparringCourseListBean>> getSparringCourses(@Body RequestBody body);
+    Observable<BaseResponse<SparringCourseListBean>> getSparringCourses(@Body TeacherPracticeCourseEntry body);
     /**
      * 获取声部搜索下拉框
      *

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

@@ -0,0 +1,17 @@
+package com.cooleshow.teacher.bean.request;
+
+/**
+ * @author dengqw
+ * @time 2022/7/4 23:21
+ * @describe:
+ **/
+public class TeacherPracticeCourseEntry {
+    public String classDate;
+    public String classMonth;
+    public String endDate;
+    public int page;
+    public int rows;
+    public String status;
+    public int subjectId;
+
+}

+ 9 - 12
teacher/src/main/java/com/cooleshow/teacher/presenter/course/SparringCoursePresenter.java

@@ -6,6 +6,7 @@ import com.cooleshow.base.rx.BaseObserver;
 import com.cooleshow.base.utils.RequestBodyUtil;
 import com.cooleshow.teacher.api.APIService;
 import com.cooleshow.teacher.bean.SparringCourseListBean;
+import com.cooleshow.teacher.bean.request.TeacherPracticeCourseEntry;
 import com.cooleshow.teacher.contract.SparringCourseContract;
 
 import org.json.JSONException;
@@ -22,19 +23,15 @@ public class SparringCoursePresenter extends BasePresenter<SparringCourseContrac
         if (isShowLoading && getView() != null) {
             getView().showLoading();
         }
-        JSONObject jsonObject = new JSONObject();
-        try {
-            jsonObject.putOpt("classMonth", month);
-            jsonObject.putOpt("status", status);
-            if (subjectId != 0) {
-                jsonObject.putOpt("subjectId", subjectId);
-            }
-            jsonObject.putOpt("page", page);
-            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
-        } catch (JSONException e) {
-            e.printStackTrace();
+        TeacherPracticeCourseEntry entry = new TeacherPracticeCourseEntry();
+        entry.classMonth=month;
+        entry.status=status;
+        entry.page=page;
+        entry.rows= Constants.DEFAULT_DATA_SIZE;
+        if (subjectId != 0) {
+            entry.subjectId = subjectId;
         }
-        addSubscribe(create(APIService.class).getSparringCourses(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<SparringCourseListBean>(getView()) {
+        addSubscribe(create(APIService.class).getSparringCourses(entry), new BaseObserver<SparringCourseListBean>(getView()) {
             @Override
             protected void onSuccess(SparringCourseListBean data) {
                 if (getView() != null) {

+ 9 - 9
teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/SparringCoursePagePresenter.java

@@ -7,6 +7,7 @@ import com.cooleshow.base.utils.RequestBodyUtil;
 import com.cooleshow.teacher.api.APIService;
 import com.cooleshow.teacher.bean.SparringCourseListBean;
 import com.cooleshow.teacher.bean.TeacherUserInfo;
+import com.cooleshow.teacher.bean.request.TeacherPracticeCourseEntry;
 import com.cooleshow.teacher.contract.SparringCoursePageContract;
 
 import org.json.JSONException;
@@ -20,18 +21,17 @@ import org.json.JSONObject;
  */
 public class SparringCoursePagePresenter extends BasePresenter<SparringCoursePageContract.SparringCoursePageView> implements SparringCoursePageContract.Presenter {
 
-    public void querySparringCourse(int page) {
+    public void querySparringCourse(int page,String currentData) {
         if (getView() != null) {
             getView().showLoading();
         }
-        JSONObject jsonObject = new JSONObject();
-        try {
-            jsonObject.putOpt("page", page);
-            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
-        } catch (JSONException e) {
-            e.printStackTrace();
-        }
-        addSubscribe(create(APIService.class).getSparringCourses(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<SparringCourseListBean>(getView()) {
+        TeacherPracticeCourseEntry entry = new TeacherPracticeCourseEntry();
+        entry.page = page;
+        entry.rows = Constants.DEFAULT_DATA_SIZE;
+        entry.classDate= currentData;
+        entry.classMonth= currentData;
+        entry.endDate= currentData;
+        addSubscribe(create(APIService.class).getSparringCourses(entry), new BaseObserver<SparringCourseListBean>(getView()) {
             @Override
             protected void onSuccess(SparringCourseListBean data) {
                 if (getView() != null) {

+ 91 - 34
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/SparringCoursePageFragment.java

@@ -2,17 +2,21 @@ package com.cooleshow.teacher.ui.homepage;
 
 import android.text.TextUtils;
 import android.view.View;
+import android.widget.TextView;
 
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.LinearLayoutManager;
 
 import com.alibaba.android.arouter.launcher.ARouter;
+import com.bigkoo.pickerview.builder.TimePickerBuilder;
+import com.bigkoo.pickerview.view.TimePickerView;
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.listener.OnItemClickListener;
 import com.chad.library.adapter.base.listener.OnLoadMoreListener;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.utils.TimeUtils;
 import com.cooleshow.base.widgets.EmptyViewLayout;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.adapter.SparringCourseListAdapter;
@@ -28,56 +32,56 @@ import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
 import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
 
+import java.util.Calendar;
+import java.util.Date;
+
 /**
  * Author by pq, Date on 2022/5/9.
+ * 个人主页-陪练课
  */
 public class SparringCoursePageFragment extends BaseMVPFragment<FragmentSparringCoursePageLayoutBinding, SparringCoursePagePresenter> implements SparringCoursePageContract.SparringCoursePageView, View.OnClickListener {
     private int currentPage;
     private boolean hasNext = true;
     private SparringCourseListAdapter mAdapter;
     private EmptyViewLayout mEmptyView;
+    private TimePickerView pvTime;
+    private Date currentSelectDate;
+    private String currentFilterDate;
+
     @Override
     protected void initView(View rootView) {
         mViewBinding.llPracticeSet.setOnClickListener(this);
         mViewBinding.tvOpen.setOnClickListener(this);
+        mViewBinding.tvTime.setOnClickListener(this);
     }
 
     @Override
     protected void initData() {
-        mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
-            @Override
-            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
-                currentPage = 1;
-                queryCourse();
-            }
+        mViewBinding.refreshLayout.setOnRefreshListener(refreshLayout -> {
+            currentPage = 1;
+            queryCourse();
         });
 
         mAdapter = new SparringCourseListAdapter(R.layout.item_sparring_course_list_layout);
-        mAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
-            @Override
-            public void onLoadMore() {
-                //上拉加载
-                if (hasNext) {
-                    currentPage++;
-                    queryCourse();
-                } else {
-                    mAdapter.getLoadMoreModule().loadMoreEnd();
-                }
+        mAdapter.getLoadMoreModule().setOnLoadMoreListener(() -> {
+            //上拉加载
+            if (hasNext) {
+                currentPage++;
+                queryCourse();
+            } else {
+                mAdapter.getLoadMoreModule().loadMoreEnd();
             }
         });
-        mAdapter.setOnItemClickListener(new OnItemClickListener() {
-            @Override
-            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
-                if (position < mAdapter.getData().size()) {
-                    SparringCourseListBean.RowsBean rowsBean = mAdapter.getData().get(position);
-                    if (rowsBean != null) {
-                        ARouter.getInstance()
-                                .build(RouterPath.CourseCenter.SPARRING_COURSE_DETAIL)
-                                .withString(CourseConstants.COURSE_ID, rowsBean.courseId)
-                                .withString(CourseConstants.COURSE_GROUP_ID, rowsBean.courseGoupId)
-                                .withString(CourseConstants.STUDENT_ID, rowsBean.userId)
-                                .navigation();
-                    }
+        mAdapter.setOnItemClickListener((adapter, view, position) -> {
+            if (position < mAdapter.getData().size()) {
+                SparringCourseListBean.RowsBean rowsBean = mAdapter.getData().get(position);
+                if (rowsBean != null) {
+                    ARouter.getInstance()
+                            .build(RouterPath.CourseCenter.SPARRING_COURSE_DETAIL)
+                            .withString(CourseConstants.COURSE_ID, rowsBean.courseId)
+                            .withString(CourseConstants.COURSE_GROUP_ID, rowsBean.courseGoupId)
+                            .withString(CourseConstants.STUDENT_ID, rowsBean.userId)
+                            .navigation();
                 }
             }
         });
@@ -95,14 +99,16 @@ public class SparringCoursePageFragment extends BaseMVPFragment<FragmentSparring
     protected SparringCoursePagePresenter createPresenter() {
         return new SparringCoursePagePresenter();
     }
+
     @Override
     public void onResume() {
         super.onResume();
         presenter.getTeacherUserInfo();
     }
+
     @Override
     public void onClick(View view) {
-        switch (view.getId()){
+        switch (view.getId()) {
             case R.id.ll_practice_set:
                 ARouter.getInstance()
                         .build(RouterPath.WebCenter.ACTIVITY_HTML)
@@ -110,11 +116,11 @@ public class SparringCoursePageFragment extends BaseMVPFragment<FragmentSparring
                         .navigation();
                 break;
             case R.id.tv_open:
-                if (mViewBinding.tvOpen.getText().toString().equals("去认证")){
+                if (mViewBinding.tvOpen.getText().toString().equals("去认证")) {
                     ARouter.getInstance().build(RouterPath.WebCenter.ACTIVITY_HTML)
                             .withString(WebConstants.WEB_URL, WebConstants.TEACHER_CERT)
                             .navigation();
-                }else if (mViewBinding.tvOpen.getText().toString().equals("立即开通")){
+                } else if (mViewBinding.tvOpen.getText().toString().equals("立即开通")) {
                     ARouter.getInstance()
                             .build(RouterPath.WebCenter.ACTIVITY_HTML)
                             .withString(WebConstants.WEB_URL, WebConstants.TEACHER_OPEN_LIVE)
@@ -122,11 +128,59 @@ public class SparringCoursePageFragment extends BaseMVPFragment<FragmentSparring
                 }
 
                 break;
+            case R.id.tv_time:
+                //时间筛选
+                showTimeSelectPicker();
+                break;
+        }
+    }
+
+    private void showTimeSelectPicker() {
+        if (pvTime == null) {
+            pvTime = new TimePickerBuilder(requireContext(), (date, v) -> {//选中事件回调
+                reBuildFilter(date);
+            }).setLayoutRes(com.cooleshow.base.R.layout.pickerview_default_layout, v -> {
+                //自定义布局中的控件初始化及事件处理
+                final TextView tvSubmit = (TextView) v.findViewById(com.cooleshow.base.R.id.tv_finish);
+                TextView ivCancel = (TextView) v.findViewById(com.cooleshow.base.R.id.tv_cancel);
+                tvSubmit.setOnClickListener(v1 -> {
+                    pvTime.returnData();
+                    pvTime.dismiss();
+                });
+                ivCancel.setOnClickListener(v12 -> pvTime.dismiss());
+
+            })
+                    .setLineSpacingMultiplier(2.5f)
+                    .setType(new boolean[]{true, true, false, false, false, false})// 默认全部显示
+                    .setTextColorCenter(getResources().getColor(com.cooleshow.base.R.color.color_1a1a1a))//设置选中项的颜色
+                    .isDialog(false)//是否显示为对话框样式
+                    .setLabel("年", "月", "", "", "", "")
+                    .build();
+        }
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(currentSelectDate);
+        pvTime.setDate(calendar);
+        if (!pvTime.isShowing()) {
+            pvTime.show();
+        }
+    }
+
+    private void reBuildFilter(Date date) {
+        currentSelectDate = date != null ? date : TimeUtils.getNowDate();
+        String targetDateTimeStr = TimeUtils.date2String(currentSelectDate, TimeUtils.getSafeDateFormat("yyyy-MM"));
+        if (TextUtils.equals(targetDateTimeStr, currentFilterDate)) {
+            //防止重复条件触发
+            return;
         }
+        currentFilterDate = targetDateTimeStr;
+        currentPage = 1;
+        mViewBinding.tvTime.setText(currentFilterDate);
+        queryCourse();
     }
+
     private void queryCourse() {
         //根据默认筛选条件查询
-        presenter.querySparringCourse( currentPage);
+        presenter.querySparringCourse(currentPage, currentFilterDate);
     }
 
     @Override
@@ -162,6 +216,7 @@ public class SparringCoursePageFragment extends BaseMVPFragment<FragmentSparring
             }
         }
     }
+
     private void showEmptyView() {
         if (mEmptyView == null) {
             mEmptyView = new EmptyViewLayout(getContext());
@@ -169,6 +224,7 @@ public class SparringCoursePageFragment extends BaseMVPFragment<FragmentSparring
         mEmptyView.setContent(com.cooleshow.base.R.drawable.icon_empty_course, "暂无课程~");
         mAdapter.setEmptyView(mEmptyView);
     }
+
     private void checkHasNext(int dataSize) {
         hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
     }
@@ -201,7 +257,8 @@ public class SparringCoursePageFragment extends BaseMVPFragment<FragmentSparring
             mViewBinding.llContent.setVisibility(View.VISIBLE);
             mViewBinding.clEmptyFlag.setVisibility(View.GONE);
             currentPage = 1;
-            queryCourse();
+            mViewBinding.tvTime.setVisibility(View.VISIBLE);
+            reBuildFilter(null);
         } else {
             //未通过或者未申请
             mViewBinding.llContent.setVisibility(View.GONE);

+ 20 - 0
teacher/src/main/res/layout/fragment_sparring_course_page_layout.xml

@@ -43,6 +43,26 @@
                 android:background="@drawable/icon_go_right" />
         </LinearLayout>
 
+        <TextView
+            android:id="@+id/tv_time"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/dp_20"
+            android:drawableRight="@drawable/icon_arrow_down"
+            android:drawablePadding="6dp"
+            android:gravity="center"
+            android:includeFontPadding="false"
+            android:paddingTop="18dp"
+            android:paddingBottom="12dp"
+            android:textColor="@color/color_666666"
+            android:textSize="@dimen/sp_13"
+            android:visibility="gone"
+            app:layout_constraintHorizontal_chainStyle="spread_inside"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toLeftOf="@+id/tv_course_status"
+            app:layout_constraintTop_toTopOf="parent"
+            tools:text="2021年9月" />
+
         <com.scwang.smart.refresh.layout.SmartRefreshLayout
             android:id="@+id/refreshLayout"
             android:layout_width="match_parent"

+ 5 - 4
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/LoginActivity.kt

@@ -16,6 +16,7 @@ import com.cooleshow.base.ext.onClick
 import com.cooleshow.base.router.RouterPath
 import com.cooleshow.base.ui.activity.BaseMVPActivity
 import com.cooleshow.base.utils.SpannableStringUtils
+import com.cooleshow.base.utils.ToastUtil
 import com.cooleshow.base.utils.ToastUtils
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper
 import com.cooleshow.usercenter.R
@@ -62,20 +63,20 @@ class LoginActivity : BaseMVPActivity<ActivityLoginBinding, LoginPresenter>(),
         setPrivacyText()
         mLoginBtn.setOnClickListener {
             if (TextUtils.isEmpty(et_phone_num?.text)) {
-                ToastUtils.showShort("手机号不可为空")
+                ToastUtil.getInstance().showShort("手机号不可为空")
                 return@setOnClickListener;
             }
 
             if (et_phone_num?.text?.length != 11) {
-                ToastUtils.showShort("请输入正确手机号")
+                ToastUtil.getInstance().showShort("请输入正确手机号")
                 return@setOnClickListener;
             }
             if (TextUtils.isEmpty(et_password?.text)) {
-                ToastUtils.showShort("密码不可为空")
+                ToastUtil.getInstance().showShort("密码不可为空")
                 return@setOnClickListener;
             }
             if (!viewBinding.cbPrivacy.isChecked) {
-                ToastUtils.showShort("请勾选用户协议")
+                ToastUtil.getInstance().showShort("请勾选用户协议")
                 return@setOnClickListener
             }
             presenter?.onLoginByPwd(et_phone_num?.text.toString(), et_password?.text.toString());

+ 3 - 2
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/VerifyCodeLoginActivity.java

@@ -20,6 +20,7 @@ import com.cooleshow.base.event.LoginStatusEvent;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.SpannableStringUtils;
+import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.usercenter.R;
@@ -96,13 +97,13 @@ public class VerifyCodeLoginActivity extends BaseMVPActivity<ActivityVerifyCodeL
 
         if (v.getId() == R.id.tv_send_verify_code) {
             if (!viewBinding.cbPrivacy.isChecked()) {
-                ToastUtils.showShort("请勾选用户协议");
+                ToastUtil.getInstance().showShort("请勾选用户协议");
                 return;
             }
             //获取验证码
             String phone = viewBinding.etPhoneNum.getText().toString();
             if (phone.length() != 11) {
-                ToastUtils.showShort("请输入正确手机号");
+                ToastUtil.getInstance().showShort("请输入正确手机号");
                 return;
             }
             if (PhoneCheckHelper.checkPhoneValidity(phone)) {