소스 검색

增加老师端个人主页VIP课程设置列表和删除接口业务流程

Pq 8 달 전
부모
커밋
9743607408

+ 6 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/NumberUtils.java

@@ -208,4 +208,10 @@ public final class NumberUtils {
             return 0;
         }
     }
+
+    public static  String getTwoDecimal(double num) {
+        DecimalFormat df = new DecimalFormat("#,##0.00");
+        String str = df.format(num);
+        return str;
+    }
 }

+ 12 - 3
teacher/src/main/java/com/cooleshow/teacher/adapter/HomePageVipCourseAdapter.java

@@ -1,22 +1,31 @@
 package com.cooleshow.teacher.adapter;
 
+import android.widget.ImageView;
+
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.teacher.R;
-import com.cooleshow.teacher.bean.HomePageVipCourseListBean;
+import com.cooleshow.teacher.bean.CourseOptionListBean;
 
 import androidx.annotation.NonNull;
 
 /**
  * Author by pq, Date on 2024/11/15.
  */
-public class HomePageVipCourseAdapter extends BaseQuickAdapter<HomePageVipCourseListBean, com.chad.library.adapter.base.viewholder.BaseViewHolder> {
+public class HomePageVipCourseAdapter extends BaseQuickAdapter<CourseOptionListBean, com.chad.library.adapter.base.viewholder.BaseViewHolder> {
     public HomePageVipCourseAdapter() {
         super(R.layout.item_hp_vip_course_list_layout);
+        addChildClickViewIds(R.id.fl_del);
     }
 
     @Override
-    protected void convert(@NonNull BaseViewHolder holder, HomePageVipCourseListBean homePageVipCourseListBean) {
+    protected void convert(@NonNull BaseViewHolder holder, CourseOptionListBean bean) {
+        ImageView iv_icon=holder.getView(R.id.iv_icon);
+        GlideUtils.INSTANCE.loadImage(getContext(),bean.getSubjectPic(),iv_icon, com.cooleshow.base.R.drawable.icon_default_head);
+        holder.setText(R.id.tv_title,bean.getSubjectName()+"VIP定制课");
+        holder.setText(R.id.tv_price,bean.getSubjectPrice());
+        holder.setText(R.id.tv_time,"/"+bean.getCourseMinutes());
 
     }
 }

+ 20 - 0
teacher/src/main/java/com/cooleshow/teacher/api/APIService.java

@@ -7,6 +7,7 @@ import com.cooleshow.base.bean.TenantGroupListBean;
 import com.cooleshow.base.data.net.BaseResponse;
 import com.cooleshow.chatmodule.bean.ContactRoomListBean;
 import com.cooleshow.teacher.bean.AwardStatusBean;
+import com.cooleshow.teacher.bean.CourseOptionListBean;
 import com.cooleshow.teacher.bean.HomeHotAlbumListBean;
 import com.cooleshow.teacher.bean.HomeHotMusicSheetBean;
 import com.cooleshow.teacher.bean.HomeLiveAndVideoBean;
@@ -880,4 +881,23 @@ public interface APIService {
      */
     @POST(TEACHER_GROUP + "teacherSubjectPrice/saveOrUpdate")
     Observable<BaseResponse<Object>> submitVIPCourseOptions(@Body SubmitVIPCourseSettingEntry vipCourseSettingEntry);
+
+    /**
+     *
+     *
+     * @param
+     * @return
+     */
+    @POST(TEACHER_GROUP + "teacherSubjectPrice/list")
+    Observable<BaseResponse<ArrayList<CourseOptionListBean>>> getVIPCourseOpetionsList(@Body RequestBody body);
+
+    /**
+     *
+     *
+     * @param
+     * @return
+     */
+    @FormUrlEncoded
+    @POST(TEACHER_GROUP + "teacherSubjectPrice/delete")
+    Observable<BaseResponse<Object>> delVIPCourseOpetions(@FieldMap Map<String, String> map);
 }

+ 111 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/CourseOptionListBean.java

@@ -0,0 +1,111 @@
+package com.cooleshow.teacher.bean;
+
+/**
+ * Author by pq, Date on 2024/11/21.
+ */
+public class CourseOptionListBean {
+
+    /**
+     * courseMinutes : 0
+     * courseType :
+     * freeMinutes : 0
+     * id : 0
+     * subjectId : 0
+     * subjectIds :
+     * subjectName :
+     * subjectPic :
+     * subjectPrice : 0
+     * teacherId : 0
+     */
+
+    private String courseMinutes;
+    private String courseType;
+    private String freeMinutes;
+    private String id;
+    private String subjectId;
+    private String subjectIds;
+    private String subjectName;
+    private String subjectPic;
+    private String subjectPrice;
+    private String teacherId;
+
+    public String getCourseMinutes() {
+        return courseMinutes;
+    }
+
+    public void setCourseMinutes(String courseMinutes) {
+        this.courseMinutes = courseMinutes;
+    }
+
+    public String getCourseType() {
+        return courseType;
+    }
+
+    public void setCourseType(String courseType) {
+        this.courseType = courseType;
+    }
+
+    public String getFreeMinutes() {
+        return freeMinutes;
+    }
+
+    public void setFreeMinutes(String freeMinutes) {
+        this.freeMinutes = freeMinutes;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(String subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public String getSubjectIds() {
+        return subjectIds;
+    }
+
+    public void setSubjectIds(String subjectIds) {
+        this.subjectIds = subjectIds;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getSubjectPic() {
+        return subjectPic;
+    }
+
+    public void setSubjectPic(String subjectPic) {
+        this.subjectPic = subjectPic;
+    }
+
+    public String getSubjectPrice() {
+        return subjectPrice;
+    }
+
+    public void setSubjectPrice(String subjectPrice) {
+        this.subjectPrice = subjectPrice;
+    }
+
+    public String getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(String teacherId) {
+        this.teacherId = teacherId;
+    }
+}

+ 0 - 7
teacher/src/main/java/com/cooleshow/teacher/bean/HomePageVipCourseListBean.java

@@ -1,7 +0,0 @@
-package com.cooleshow.teacher.bean;
-
-/**
- * Author by pq, Date on 2024/11/15.
- */
-public class HomePageVipCourseListBean {
-}

+ 5 - 3
teacher/src/main/java/com/cooleshow/teacher/contract/VIPCustomCoursePageContract.java

@@ -1,9 +1,12 @@
 package com.cooleshow.teacher.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.CourseOptionListBean;
 import com.cooleshow.teacher.bean.VideoCourseListBean;
 import com.cooleshow.usercenter.bean.TeacherUserInfo;
 
+import java.util.ArrayList;
+
 /**
  * 创建日期:2022/6/7 9:41
  *
@@ -13,11 +16,10 @@ import com.cooleshow.usercenter.bean.TeacherUserInfo;
 public interface VIPCustomCoursePageContract {
 
     interface View extends BaseView {
-        void queryVideoCourseGroupSuccess(int page, VideoCourseListBean data);
 
-        void queryVideoCourseGroupError(int page);
+        void queryVIPCourseOptionsSuccess(ArrayList<CourseOptionListBean> data);
 
-        void getTeacherInfoSuccess(TeacherUserInfo data);
+        void delOptionSuccess();
 
     }
 

+ 26 - 13
teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/VIPCustomCoursePagePresenter.java

@@ -5,6 +5,7 @@ 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.CourseOptionListBean;
 import com.cooleshow.teacher.bean.VideoCourseListBean;
 import com.cooleshow.teacher.contract.VIPCustomCoursePageContract;
 import com.cooleshow.teacher.contract.VideoCoursePageContract;
@@ -13,6 +14,9 @@ import com.cooleshow.usercenter.bean.TeacherUserInfo;
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+
 /**
  * 创建日期:2022/6/7 9:40
  *
@@ -20,41 +24,50 @@ import org.json.JSONObject;
  * 类说明:
  */
 public class VIPCustomCoursePagePresenter extends BasePresenter<VIPCustomCoursePageContract.View> implements VIPCustomCoursePageContract.Presenter {
-    public void queryVideoCourseGroup(boolean isLoading) {
+    public void queryVIPCourseOptions(boolean isLoading) {
         if (isLoading && getView() != null) {
             getView().showLoading();
         }
         JSONObject jsonObject = new JSONObject();
         try {
-            jsonObject.putOpt("auditStatus","PASS");
-            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+            jsonObject.putOpt("courseType",Constants.VIP_COURSE_TAG);
+            jsonObject.putOpt("page", 1);
+            jsonObject.putOpt("rows", Integer.MAX_VALUE);
         } catch (JSONException e) {
             e.printStackTrace();
         }
-        addSubscribe(create(APIService.class).getVideoCourses(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<VideoCourseListBean>(getView()) {
+        addSubscribe(create(APIService.class).getVIPCourseOpetionsList(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<ArrayList<CourseOptionListBean>>(getView()) {
             @Override
-            protected void onSuccess(VideoCourseListBean data) {
+            protected void onSuccess(ArrayList<CourseOptionListBean> data) {
                 if (getView() != null) {
-//                    getView().queryVideoCourseGroupSuccess(page, data);
+                    getView().queryVIPCourseOptionsSuccess(data);
                 }
             }
+        });
+    }
 
+    public void getTeacherUserInfo() {
+        addSubscribe(create(APIService.class).getTeacherUserInfo(), new BaseObserver<TeacherUserInfo>(getView()) {
             @Override
-            public void onError(Throwable e) {
-                super.onError(e);
+            protected void onSuccess(TeacherUserInfo data) {
                 if (getView() != null) {
-//                    getView().queryVideoCourseGroupError(page);
+//                    getView().getTeacherInfoSuccess(data);
                 }
             }
         });
     }
 
-    public void getTeacherUserInfo() {
-        addSubscribe(create(APIService.class).getTeacherUserInfo(), new BaseObserver<TeacherUserInfo>(getView()) {
+    public void delCourseOptions(String id) {
+        if (getView() != null) {
+            getView().showLoading();
+        }
+        HashMap<String, String> map = new HashMap<>();
+        map.put("id", id);
+        addSubscribe(create(APIService.class).delVIPCourseOpetions(map), new BaseObserver<Object>(getView()) {
             @Override
-            protected void onSuccess(TeacherUserInfo data) {
+            protected void onSuccess(Object data) {
                 if (getView() != null) {
-                    getView().getTeacherInfoSuccess(data);
+                    getView().delOptionSuccess();
                 }
             }
         });

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

@@ -270,7 +270,7 @@ public class VIPCourseSettingActivity extends BaseMVPActivity<AcVipCourseSetting
         } catch (Exception e) {
             e.printStackTrace();
         }
-        SpannableString string = UiUtils.diffColorStringAndBold(getString(R.string.vip_setting_str1), " " + twoDecimalValue + " ", getString(R.string.vip_setting_str2), getResources().getColor(com.cooleshow.base.R.color.color_999999), getResources().getColor(com.cooleshow.base.R.color.color_ff4e19));
+        SpannableString string = UiUtils.diffColorStringAndBold(getString(R.string.vip_setting_str1), " " + NumberUtils.getTwoDecimal(twoDecimalValue) + " ", getString(R.string.vip_setting_str2), getResources().getColor(com.cooleshow.base.R.color.color_999999), getResources().getColor(com.cooleshow.base.R.color.color_ff4e19));
         viewBinding.tvTip1.setText(string);
     }
 

+ 70 - 10
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/VIPCustomCoursePageFragment.java

@@ -5,15 +5,20 @@ import android.view.View;
 
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemChildClickListener;
 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.ui.fragment.BaseMVPFragment;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.widgets.EmptyViewLayout;
+import com.cooleshow.base.widgets.dialog.CommonDialog;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.adapter.HomePageVipCourseAdapter;
+import com.cooleshow.teacher.bean.CourseOptionListBean;
 import com.cooleshow.teacher.bean.VideoCourseListBean;
 import com.cooleshow.teacher.contract.VIPCustomCoursePageContract;
 import com.cooleshow.teacher.databinding.FragmentVipCustomCoursePageLayoutBinding;
@@ -22,6 +27,8 @@ import com.cooleshow.usercenter.bean.TeacherUserInfo;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
 import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
 
+import java.util.ArrayList;
+
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.LinearLayoutManager;
@@ -33,12 +40,13 @@ import androidx.recyclerview.widget.RecyclerView;
 public class VIPCustomCoursePageFragment extends BaseMVPFragment<FragmentVipCustomCoursePageLayoutBinding, VIPCustomCoursePagePresenter> implements VIPCustomCoursePageContract.View, View.OnClickListener {
     private HomePageVipCourseAdapter mPageVipCourseAdapter;
     public static final String TIP_CACHE_KEY = "vip_course_tip_key";
+    private HomePageVipCourseAdapter mAdapter;
 
 
     @Override
     protected void initView(View rootView) {
 
-        mViewBinding.commonHeader.setDataStyle(TIP_CACHE_KEY,R.drawable.icon_vip_custom_course_des_tag, getString(R.string.vip_course_des_title), getString(R.string.vip_custom_course_des), R.drawable.icon_vip_course_set,getString(R.string.set_vip_course_confirm_text), new View.OnClickListener() {
+        mViewBinding.commonHeader.setDataStyle(TIP_CACHE_KEY, R.drawable.icon_vip_custom_course_des_tag, getString(R.string.vip_course_des_title), getString(R.string.vip_custom_course_des), R.drawable.icon_vip_course_set, getString(R.string.set_vip_course_confirm_text), new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 ARouter.getInstance().build(RouterPath.CourseCenter.VIP_COURSE_SETTING)
@@ -66,6 +74,17 @@ public class VIPCustomCoursePageFragment extends BaseMVPFragment<FragmentVipCust
 
     @Override
     protected void initData() {
+        mAdapter = new HomePageVipCourseAdapter();
+        EmptyViewLayout emptyViewLayout = new EmptyViewLayout(getContext());
+        emptyViewLayout.setContent(com.cooleshow.base.R.drawable.icon_empty_course, "暂无课程");
+        mAdapter.setEmptyView(emptyViewLayout);
+        mViewBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+        mViewBinding.recyclerView.setAdapter(mAdapter);
+
+        initListener();
+    }
+
+    private void initListener() {
         mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
             @Override
             public void onRefresh(@NonNull RefreshLayout refreshLayout) {
@@ -73,10 +92,45 @@ public class VIPCustomCoursePageFragment extends BaseMVPFragment<FragmentVipCust
             }
         });
 
+        mAdapter.setOnItemChildClickListener(new OnItemChildClickListener() {
+            @Override
+            public void onItemChildClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                int id = view.getId();
+                if (UiUtils.isFastClick()) {
+                    return;
+                }
+                if (id == R.id.fl_del) {
+                    CourseOptionListBean courseOptionListBean = mAdapter.getData().get(position);
+                    showConfirmDialog(courseOptionListBean.getId());
+                    return;
+                }
+            }
+        });
+    }
+
+    private void showConfirmDialog(String id) {
+        CommonDialog commonDialog = new CommonDialog(getContext());
+        commonDialog.show();
+        commonDialog.setTitle("提示");
+        commonDialog.setContent("确认删除该课程方案吗?");
+        commonDialog.setConfirmText("确认");
+        commonDialog.setOnCancelClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                commonDialog.dismiss();
+            }
+        });
+        commonDialog.setOnConfirmClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                commonDialog.dismiss();
+                presenter.delCourseOptions(id);
+            }
+        });
     }
 
     private void queryCourse(boolean isLoading) {
-        presenter.queryVideoCourseGroup(isLoading);
+        presenter.queryVIPCourseOptions(isLoading);
     }
 
     @Override
@@ -91,28 +145,34 @@ public class VIPCustomCoursePageFragment extends BaseMVPFragment<FragmentVipCust
 
     @Override
     public void onClick(View view) {
-        switch (view.getId()) {
-        }
-    }
+        int id = view.getId();
 
-    @Override
-    public void queryVideoCourseGroupSuccess(int page, VideoCourseListBean data) {
     }
 
     @Override
     public void onResume() {
         super.onResume();
+        queryCourse(false);
     }
 
+
     @Override
-    public void queryVideoCourseGroupError(int page) {
+    public void queryVIPCourseOptionsSuccess(ArrayList<CourseOptionListBean> data) {
         if (isDetached()) {
             return;
         }
+        if (mAdapter != null) {
+            mViewBinding.refreshLayout.finishRefresh();
+            mAdapter.setNewInstance(data);
+        }
     }
 
     @Override
-    public void getTeacherInfoSuccess(TeacherUserInfo teacherUserInfo) {
-
+    public void delOptionSuccess() {
+        if (isDetached()) {
+            return;
+        }
+        ToastUtil.getInstance().showShort("删除成功");
+        queryCourse(false);
     }
 }

+ 1 - 0
teacher/src/main/res/layout/item_hp_vip_course_list_layout.xml

@@ -4,6 +4,7 @@
     android:layout_width="match_parent"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:paddingBottom="12dp"
+    android:layout_marginBottom="12dp"
     android:background="@drawable/bg_white_6dp"
     android:layout_height="wrap_content">