无关风月
2024-07-11 eb6b6dbb35a9f029e0b7d269773685c19fd40976
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
@@ -1,14 +1,31 @@
package com.dsh.guns.modular.system.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.feignClient.course.CoursePackageClient;
import com.dsh.course.feignClient.course.model.QueryCoursePackageLists;
import com.dsh.course.entity.CoursePackageOrderStudent;
import com.dsh.course.feignClient.course.*;
import com.dsh.course.feignClient.course.model.*;
import com.dsh.guns.config.UserExt;
import com.dsh.guns.core.support.HttpKit;
import com.dsh.guns.core.util.ToolUtil;
import com.dsh.guns.modular.system.model.CourseCounsum;
import com.dsh.guns.modular.system.model.TStore;
import com.dsh.guns.modular.system.service.ICoursePackageService;
import com.dsh.guns.modular.system.service.IStoreService;
import com.dsh.guns.modular.system.util.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
@@ -20,6 +37,27 @@
    @Resource
    private CoursePackageClient coursePackageClient;
    @Autowired
    private IStoreService storeService;
    @Resource
    private CoursePackagePaymentConfigClient coursePackagePaymentConfigClient;
    @Resource
    private CoursePackageDiscountClient coursePackageDiscountClient;
    @Resource
    private CoursePackagePaymentClient coursePackagePaymentClient;
    @Resource
    private CoursePackageSchedulingClient coursePackageSchedulingClient;
    @Resource
    private CoursePackageStudentClient coursePackageStudentClient;
    @Resource
    private CancelledClassesClient cancelledClassesClient;
@@ -36,11 +74,12 @@
     * @return
     */
    @Override
    public Page<Map<String, Object>> queryCoursePackageLists(String provinceCode, String cityCode, Integer coursePackageTypeId, String name, Integer status, Integer state) {
    public Page<Map<String, Object>> queryCoursePackageLists(String provinceCode, String cityCode, Integer coursePackageTypeId, List<Integer> storeId, String name, Integer status, Integer state) {
        QueryCoursePackageLists queryCoursePackageLists = new QueryCoursePackageLists();
        queryCoursePackageLists.setProvinceCode(provinceCode);
        queryCoursePackageLists.setCityCode(cityCode);
        queryCoursePackageLists.setCoursePackageTypeId(coursePackageTypeId);
        queryCoursePackageLists.setStoreIds(storeId);
        queryCoursePackageLists.setName(name);
        queryCoursePackageLists.setState(state);
        queryCoursePackageLists.setStatus(status);
@@ -49,6 +88,705 @@
        queryCoursePackageLists.setOffset(Integer.valueOf(request.getParameter("offset")));
        queryCoursePackageLists.setSort(request.getParameter("sort"));
        queryCoursePackageLists.setOrder(request.getParameter("order"));
        return coursePackageClient.queryCoursePackageLists(queryCoursePackageLists);
        Page<Map<String, Object>> mapPage = coursePackageClient.queryCoursePackageLists(queryCoursePackageLists);
        List<Map<String, Object>> records = mapPage.getRecords();
        for (Map<String, Object> record : records) {
            TStore store = storeService.getById(Integer.valueOf(record.get("storeId").toString()));
            record.put("store", store.getName());
        }
        return mapPage;
    }
    /**
     * 添加课包数据
     * @param coursePackage
     * @param coursePackagePaymentConfig
     */
    @Override
    public void addCoursePackage(TCoursePackage coursePackage, String coursePackagePaymentConfig) {
        Integer integer = coursePackageClient.addCoursePackage(coursePackage);
        JSONArray jsonArray = JSON.parseArray(coursePackagePaymentConfig);
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Integer classHours = jsonObject.getInteger("classHours");
            Double cashPayment = jsonObject.getDouble("cashPayment");
            Integer playPaiCoin = jsonObject.getInteger("playPaiCoin");
            String couponIds = jsonObject.getString("couponIds");
            CoursePackagePaymentConfig coursePackagePaymentConfig1 = new CoursePackagePaymentConfig();
            coursePackagePaymentConfig1.setCoursePackageId(integer);
            coursePackagePaymentConfig1.setClassHours(classHours);
            coursePackagePaymentConfig1.setCashPayment(cashPayment);
            coursePackagePaymentConfig1.setPlayPaiCoin(playPaiCoin);
            coursePackagePaymentConfig1.setCouponIds(couponIds);
            coursePackagePaymentConfigClient.addCoursePackagePaymentConfig(coursePackagePaymentConfig1);
        }
    }
    /**
     * 根据id获取数据
     * @param id
     * @return
     */
    @Override
    public TCoursePackage queryById(Integer id) {
        return coursePackageClient.queryById(id);
    }
    /**
     * 编辑数据
     * @param coursePackage
     * @param coursePackagePaymentConfig
     */
    @Override
    public void updateCoursePackage(TCoursePackage coursePackage, String coursePackagePaymentConfig) {
        String holitime = coursePackage.getHolitime();
        if (holitime!=null){
            // 如果为空字符串 则默认未修改
            if (holitime.equals("")){
                TCoursePackage tCoursePackage = coursePackageClient.queryById(coursePackage.getId());
                coursePackage.setStartTime(tCoursePackage.getStartTime());
                coursePackage.setEndTime(tCoursePackage.getEndTime());
            }else{
                String[] split = holitime.split(" - ");
                String startTime = split[0];
                String endTime = split[1];
                SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
                SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
                try {
                    Date parse1 = format1.parse(startTime);
                    parse1.setHours(0);
                    parse1.setMinutes(0);
                    parse1.setSeconds(0);
                    Date parse2 = format2.parse(endTime);
                    parse2.setHours(23);
                    parse2.setMinutes(59);
                    parse2.setSeconds(59);
                    coursePackage.setStartTime(parse1);
                    coursePackage.setEndTime(parse2);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
        }
        coursePackageClient.updateCoursePackage(coursePackage);
        coursePackagePaymentConfigClient.delCoursePackagePaymentConfig(coursePackage.getId());
        List<TCoursePackageDiscount> tCoursePackageDiscounts = coursePackageDiscountClient
                .queryByCoursePackageId(coursePackage.getId());
        JSONArray jsonArray = JSON.parseArray(coursePackagePaymentConfig);
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Integer classHours = jsonObject.getInteger("classHours");
            Double cashPayment = jsonObject.getDouble("cashPayment");
            Integer playPaiCoin = jsonObject.getInteger("playPaiCoin");
            String couponIds = jsonObject.getString("couponIds");
            CoursePackagePaymentConfig coursePackagePaymentConfig1 = new CoursePackagePaymentConfig();
            coursePackagePaymentConfig1.setCoursePackageId(coursePackage.getId());
            coursePackagePaymentConfig1.setClassHours(classHours);
            coursePackagePaymentConfig1.setCashPayment(cashPayment);
            coursePackagePaymentConfig1.setPlayPaiCoin(playPaiCoin);
            coursePackagePaymentConfig1.setCouponIds(couponIds);
            int i1 = coursePackagePaymentConfigClient.addCoursePackagePaymentConfig(coursePackagePaymentConfig1);
//            for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
//                tCoursePackageDiscount.setCoursePackagePaymentConfigId(coursePackagePaymentConfig1.getId());
//                coursePackageDiscountClient.update(tCoursePackageDiscount);
//            }
        }
    }
    /**
     * 修改数据
     * @param coursePackage
     */
    @Override
    public void editCoursePackageState(TCoursePackage coursePackage) {
        coursePackageClient.updateCoursePackage(coursePackage);
    }
    /**
     * 编辑课包折扣
     * @param json
     * @return
     */
    @Override
    public ResultUtil setCoursePackageDiscount(Integer id, String json) {
        List<TCoursePackageDiscount> list = new ArrayList<>();
        JSONArray jsonArray = JSON.parseArray(json);
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Integer coursePackagePaymentConfigId = jsonObject.getInteger("coursePackagePaymentConfigId");
            JSONArray coursePackageDiscount = jsonObject.getJSONArray("coursePackageDiscount");
            if(coursePackageDiscount.size() == 0){
                continue;
            }
            for (int j = 0; j < coursePackageDiscount.size(); j++) {
                JSONObject cpd = coursePackageDiscount.getJSONObject(j);
                Integer type = cpd.getInteger("type");
                switch (type){
                    case 1:
                        JSONObject content1 = cpd.getJSONObject("content");
                        if(null == content1){
                            return ResultUtil.error("请填写有效的会员折扣");
                        }
                        Double discountMember = content1.getDouble("discountMember");
                        if(null == discountMember){
                            return ResultUtil.error("请填写有效的会员折扣价格");
                        }
                        break;
                    case 2:
                        JSONObject content2 = cpd.getJSONObject("content");
                        if(null == content2){
                            return ResultUtil.error("请填写有效的续课优惠");
                        }
                        Double continuingMember = content2.getDouble("continuingMember");
                        if(null == continuingMember){
                            return ResultUtil.error("请填写有效的会员续课价格");
                        }
                        Double continuingUser = content2.getDouble("continuingUser");
                        if(null == continuingUser){
                            return ResultUtil.error("请填写有效的用户续课价格");
                        }
                        break;
                    case 3:
                        JSONArray content3 = cpd.getJSONArray("content");
                        if(content3.size() == 0){
                            return ResultUtil.error("请配置有效的限时折扣");
                        }
                        for (int k = 0; k < content3.size(); k++) {
                            JSONObject jsonObject1 = content3.getJSONObject(k);
                            String startDate = jsonObject1.getString("startDate");
                            String endDate = jsonObject1.getString("endDate");
                            String startTime = jsonObject1.getString("startTime");
                            String endTime = jsonObject1.getString("endTime");
                            JSONArray weeks = jsonObject1.getJSONArray("weeks");
                            Double cashPayment = jsonObject1.getDouble("cashPayment");
                            if(ToolUtil.isEmpty(startDate)){
                                return ResultUtil.error("请填写有效的折扣有效期");
                            }
                            if(ToolUtil.isEmpty(endDate)){
                                return ResultUtil.error("请填写有效的折扣有效期");
                            }
                            if(ToolUtil.isEmpty(startTime)){
                                return ResultUtil.error("请填写有效的折扣时间");
                            }
                            if(ToolUtil.isEmpty(endTime)){
                                return ResultUtil.error("请填写有效的折扣时间");
                            }
                            if(null == weeks || weeks.size() == 0){
                                return ResultUtil.error("请选择有效的折扣时间星期天");
                            }
                            if(null == cashPayment){
                                return ResultUtil.error("请填写有效的折扣金额");
                            }
                        }
                        break;
                    case 4:
                        JSONArray content4 = cpd.getJSONArray("content");
                        if(content4.size() == 0){
                            return ResultUtil.error("请配置有效的赠送课时");
                        }
                        for (int k = 0; k < content4.size(); k++) {
                            JSONObject jsonObject1 = content4.getJSONObject(k);
                            String startDate = jsonObject1.getString("startDate");
                            String endDate = jsonObject1.getString("endDate");
                            String startTime = jsonObject1.getString("startTime");
                            String endTime = jsonObject1.getString("endTime");
                            JSONArray weeks = jsonObject1.getJSONArray("weeks");
                            Double hour = jsonObject1.getDouble("hour");
                            if(ToolUtil.isEmpty(startDate)){
                                return ResultUtil.error("请填写有效的赠送有效期");
                            }
                            if(ToolUtil.isEmpty(endDate)){
                                return ResultUtil.error("请填写有效的赠送有效期");
                            }
                            if(ToolUtil.isEmpty(startTime)){
                                return ResultUtil.error("请填写有效的赠送时间");
                            }
                            if(ToolUtil.isEmpty(endTime)){
                                return ResultUtil.error("请填写有效的赠送时间");
                            }
                            if(null == weeks || weeks.size() == 0){
                                return ResultUtil.error("请选择有效的赠送时间星期天");
                            }
                            if(null == hour){
                                return ResultUtil.error("请填写有效的赠送课时数");
                            }
                        }
                        break;
                }
                TCoursePackageDiscount coursePackageDiscount1 = new TCoursePackageDiscount();
                coursePackageDiscount1.setCoursePackageId(id);
                coursePackageDiscount1.setCoursePackagePaymentConfigId(coursePackagePaymentConfigId);
                coursePackageDiscount1.setType(type);
                coursePackageDiscount1.setContent(cpd.getString("content"));
                if (UserExt.getUser().getObjectType() == 1){
                    coursePackageDiscount1.setAuditStatus(2);
                }else if (UserExt.getUser().getObjectType() == 2){
                    coursePackageDiscount1.setAuditStatus(1);
                }
                coursePackageDiscount1.setInsertTime(new Date());
                list.add(coursePackageDiscount1);
            }
        }
        coursePackageDiscountClient.setCoursePackageDiscount(list);
        return ResultUtil.success();
    }
    /**
     * 获取课程报名信息
     * @param id
     * @param userName
     * @param studentName
     * @return
     */
    @Override
    public Page<Map<String, Object>> queryRegistrationRecord(Integer id, String userName, String studentName) {
        QueryRegistrationRecord queryRegistrationRecord = new QueryRegistrationRecord();
        queryRegistrationRecord.setCoursePackageId(id);
        queryRegistrationRecord.setUserName(userName);
        queryRegistrationRecord.setStudentName(studentName);
        HttpServletRequest request = HttpKit.getRequest();
        queryRegistrationRecord.setLimit(Integer.valueOf(request.getParameter("limit")));
        queryRegistrationRecord.setOffset(Integer.valueOf(request.getParameter("offset")));
        queryRegistrationRecord.setSort(request.getParameter("sort"));
        queryRegistrationRecord.setOrder(request.getParameter("order"));
        Page<Map<String, Object>> mapPage = coursePackagePaymentClient.queryRegistrationRecord(queryRegistrationRecord);
        return mapPage;
    }
    /**
     * 获取课包上课信息
     * @param id
     * @return
     */
    @Override
    public Page<Map<String, Object>> queryCoursePackageSchedulingList(Integer id) {
        QueryCoursePackageSchedulingList queryClassRecord = new QueryCoursePackageSchedulingList();
        queryClassRecord.setCoursePackageId(id);
        HttpServletRequest request = HttpKit.getRequest();
        queryClassRecord.setLimit(Integer.valueOf(request.getParameter("limit")));
        queryClassRecord.setOffset(Integer.valueOf(request.getParameter("offset")));
        queryClassRecord.setSort(request.getParameter("sort"));
        queryClassRecord.setOrder(request.getParameter("order"));
        Page<Map<String, Object>> mapPage = coursePackageSchedulingClient.queryCoursePackageSchedulingList(queryClassRecord);
        return mapPage;
    }
    /**
     * 获取排课对应学员数据
     * @param id
     * @return
     */
    @Override
    public Page<Map<String, Object>> queryCoursePackageStudentList(Long id, String userName, String studentName) {
        QueryCoursePackageStudentList queryCoursePackageStudentList = new QueryCoursePackageStudentList();
        queryCoursePackageStudentList.setCoursePackageSchedulingId(id);
        queryCoursePackageStudentList.setUserName(userName);
        queryCoursePackageStudentList.setStudentName(studentName);
        HttpServletRequest request = HttpKit.getRequest();
        queryCoursePackageStudentList.setLimit(Integer.valueOf(request.getParameter("limit")));
        queryCoursePackageStudentList.setOffset(Integer.valueOf(request.getParameter("offset")));
        queryCoursePackageStudentList.setSort(request.getParameter("sort"));
        queryCoursePackageStudentList.setOrder(request.getParameter("order"));
        return coursePackageStudentClient.queryCoursePackageStudentList(queryCoursePackageStudentList);
    }
    /**
     * 取消预约
     * @param id
     * @return
     */
    @Override
    public ResultUtil cancelReservation(Long id) {
        CoursePackageStudent coursePackageStudent = coursePackageStudentClient.queryCoursePackageStudentById(id);
//        if(coursePackageStudent.getSignInOrNot() == 1){
//            return ResultUtil.error("当前学员已到课不能请假");
//        }
//        TCoursePackagePayment payment = coursePackagePaymentClient.queryCoursePackagePaymentById(coursePackageStudent.getCoursePackagePaymentId());
//        payment.setAbsencesNumber(payment.getAbsencesNumber()+1);
//        coursePackagePaymentClient.editCoursePackagePayment(payment);
        coursePackageStudent = new CoursePackageStudent();
        coursePackageStudent.setId(id);
//        coursePackageStudent.setReservationStatus(0);
        coursePackageStudent.setSignInOrNot(2);
        coursePackageStudent.getCoursePackagePaymentId();
        coursePackageStudentClient.editCoursePackageStudent(coursePackageStudent);
        return ResultUtil.success();
    }
    /**
     * 修改缺席状态
     * @param id
     * @return
     */
    @Override
    public ResultUtil setAbsenceStatus(Long id) {
        CoursePackageStudent coursePackageStudent = coursePackageStudentClient.queryCoursePackageStudentById(id);
        if(coursePackageStudent.getReservationStatus() == 0){
            return ResultUtil.error("该数据已取消预约");
        }
        coursePackageStudent = new CoursePackageStudent();
        coursePackageStudent.setId(id);
        coursePackageStudent.setSignInOrNot(0);
        coursePackageStudentClient.editCoursePackageStudent(coursePackageStudent);
        return ResultUtil.success();
    }
    /**
     * 取消本次排课
     * @param id
     * @return
     */
    @Override
    public ResultUtil cancelClassSchedule(Long id) {
//        List<CoursePackageScheduling> coursePackageSchedulings =  coursePackageSchedulingClient.queryCoursePackageSchedulingsById(id);
//        List<Long> integers = new ArrayList<>();
//        for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
//            integers.add(coursePackageScheduling.getId());
//        }
        List<CoursePackageScheduling> coursePackageSchedulings =  coursePackageSchedulingClient.queryCoursePackageSchedulingsById(id);
        List<Long> integers = new ArrayList<>();
        for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
            integers.add(coursePackageScheduling.getId());
            coursePackageScheduling.setStatus(4);
        }
        coursePackageSchedulingClient.editCoursePackageScheduling(coursePackageSchedulings);
//        CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingClient.queryCoursePackageSchedulingById(id);
//        if(coursePackageScheduling.getStatus() != 1){
//            return ResultUtil.error("不能取消本次");
//        }
//        List<CoursePackageStudent> coursePackageStudents = coursePackageStudentClient.queryByCoursePackageSchedulingId(id);
//        if(coursePackageStudents.size() > 0){
////            return ResultUtil.error("不能取消本次");
//        }
//        coursePackageScheduling = new CoursePackageScheduling();
//        coursePackageScheduling.setId(id);
//        coursePackageScheduling.setStatus(4);
//        coursePackageSchedulingClient.editCoursePackageScheduling(coursePackageScheduling);
        return ResultUtil.success();
    }
    /**
     * 添加课后练习
     * @param id
     * @param courseId
     * @param integral
     * @return
     */
    @Override
    public ResultUtil afterClassExercises(Long id, Integer courseId, Integer integral) {
//        CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingClient.queryCoursePackageSchedulingById(id);
//        List<CoursePackageScheduling> coursePackageSchedulings =  coursePackageSchedulingClient.queryCoursePackageSchedulingsById(id);
        List<CoursePackageScheduling> coursePackageSchedulings =  coursePackageSchedulingClient.queryCoursePackageSchedulingsById(id);
        List<Long> integers = new ArrayList<>();
        for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
            integers.add(coursePackageScheduling.getId());
            coursePackageScheduling.setCourseId(courseId);
            coursePackageScheduling.setIntegral(integral);
        }
        coursePackageSchedulingClient.editCoursePackageScheduling(coursePackageSchedulings);
//        for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
//            integers.add(coursePackageScheduling.getId());
//            if(coursePackageScheduling.getStatus() != 3){
//                return ResultUtil.error("不能发布课后练习");
//            }
//            coursePackageScheduling.setCourseId(courseId);
//            coursePackageScheduling.setIntegral(integral);
//            coursePackageSchedulingClient.editCoursePackageScheduling(coursePackageScheduling);
//        }
//        if(coursePackageScheduling.getStatus() != 3){
//            return ResultUtil.error("不能发布课后练习");
//        }
//        coursePackageScheduling.setCourseId(courseId);
//        coursePackageScheduling.setIntegral(integral);
//        coursePackageSchedulingClient.editCoursePackageScheduling(coursePackageScheduling);
        return ResultUtil.success();
    }
    /**
     * 上传消课凭证
     * @param id
     * @param cancelClasses
     * @param deductClassHour
     * @return
     */
    @Override
    public ResultUtil cancellationRecord(Long id, String cancelClasses, Integer deductClassHour) {
//        CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingClient.queryCoursePackageSchedulingById(id);
        List<CoursePackageScheduling> coursePackageSchedulings =  coursePackageSchedulingClient.queryCoursePackageSchedulingsById(id);
        CoursePackageScheduling coursePackageScheduling1 = coursePackageSchedulings.get(0);
        Date classDate = coursePackageScheduling1.getEndDate();
        if (new Date().before(classDate)){
            return ResultUtil.error("课程未结束,无法消课");
        }
        List<Long> integers = new ArrayList<>();
        for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
            integers.add(coursePackageScheduling.getId());
            coursePackageScheduling.setCancelClasses(cancelClasses);
            coursePackageScheduling.setDeductClassHour(deductClassHour);
            coursePackageScheduling.setStatus(3);
        }
//        for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
//        if(coursePackageScheduling.getStatus() == 1 || coursePackageScheduling.getStatus() == 4){
//            return ResultUtil.error("不能添加消课凭证");
//        }
//        coursePackageScheduling.setCancelClasses(cancelClasses);
//        coursePackageScheduling.setDeductClassHour(deductClassHour);
        coursePackageSchedulingClient.editCoursePackageScheduling(coursePackageSchedulings);
        List<CoursePackageStudent> coursePackageStudents = coursePackageStudentClient.queryByCoursePackageSchedulingId(integers);
        for (CoursePackageStudent coursePackageStudent : coursePackageStudents) {
            if(coursePackageStudent.getSignInOrNot() == 2){
                continue;
            }
//            TCoursePackagePayment tCoursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(coursePackageStudent.getCoursePackagePaymentId());
            CoursePackageOrderStudent coursePackageOrderStudent = coursePackagePaymentClient.queryCoursePackagePaymentById1(coursePackageStudent.getCoursePackagePaymentId());
            if (deductClassHour!=null) {
                if (coursePackageOrderStudent.getLaveClassHours() - deductClassHour < 0) {
                    coursePackageStudentClient.editCoursePackageStudent(coursePackageStudent);
                    continue;
                }
                coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() - deductClassHour);
            }
            if(coursePackageStudent.getReservationStatus() == 0){
                coursePackageOrderStudent.setAbsencesNumber(coursePackageOrderStudent.getAbsencesNumber() + 1);
            }
            System.out.println("====tCoursePackagePayment====="+coursePackageOrderStudent);
            coursePackagePaymentClient.editCoursePackagePayment2(coursePackageOrderStudent);
            CancelledClasses cancelledClasses = new CancelledClasses();
            cancelledClasses.setType(1);
            cancelledClasses.setCoursePackageId(coursePackageStudent.getCoursePackageId());
            cancelledClasses.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
            cancelledClasses.setCoursePackageSchedulingId(coursePackageStudent.getCoursePackageSchedulingId());
            cancelledClasses.setVoucher(cancelClasses);
            if (deductClassHour!=null) {
            cancelledClasses.setCancelledClassesNumber(deductClassHour);}
            cancelledClasses.setInsertTime(new Date());
            cancelledClassesClient.addCancelledClasses(cancelledClasses);
        }
//        }
        return ResultUtil.success();
    }
    /**
     * 获取未预约排课学员列表
     * @param coursePackageSchedulingId
     * @param userName
     * @param studentName
     * @return
     */
    @Override
    public Page<Map<String, Object>> queryWalkInStudentList(Long coursePackageSchedulingId, String userName, String studentName) {
        QueryWalkInStudentList queryWalkInStudentList = new QueryWalkInStudentList();
        queryWalkInStudentList.setCoursePackageSchedulingId(coursePackageSchedulingId);
        queryWalkInStudentList.setUserName(userName);
        queryWalkInStudentList.setStudentName(studentName);
        HttpServletRequest request = HttpKit.getRequest();
        queryWalkInStudentList.setLimit(Integer.valueOf(request.getParameter("limit")));
        queryWalkInStudentList.setOffset(Integer.valueOf(request.getParameter("offset")));
        queryWalkInStudentList.setSort(request.getParameter("sort"));
        queryWalkInStudentList.setOrder(request.getParameter("order"));
        return coursePackagePaymentClient.queryWalkInStudentList(queryWalkInStudentList);
    }
    /**
     * 手动预约课程
     * @param coursePackagePaymentId
     * @param coursePackageSchedulingId
     * @return
     */
    @Override
    public ResultUtil courseReservation(Long coursePackagePaymentId, Long coursePackageSchedulingId) {
        QueryCoursePackageStudent queryCoursePackageStudent = new QueryCoursePackageStudent();
        queryCoursePackageStudent.setCoursePackagePaymentId(coursePackagePaymentId);
        queryCoursePackageStudent.setCoursePackageSchedulingId(coursePackageSchedulingId);
        queryCoursePackageStudent.setReservationStatus(1);
        List<CoursePackageStudent> coursePackageStudents = coursePackageStudentClient.queryCoursePackageStudent(queryCoursePackageStudent);
        if(coursePackageStudents.size() > 0){
            return ResultUtil.error("不能重复预约");
        }
        CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingClient.queryCoursePackageSchedulingById(coursePackageSchedulingId);
        TCoursePackage tCoursePackage = coursePackageClient.queryById(coursePackageScheduling.getCoursePackageId());
        queryCoursePackageStudent = new QueryCoursePackageStudent();
        queryCoursePackageStudent.setCoursePackageId(coursePackageScheduling.getCoursePackageId());
        queryCoursePackageStudent.setReservationStatus(1);
        List<CoursePackageStudent> coursePackageStudents1 = coursePackageStudentClient.queryCoursePackageStudent(queryCoursePackageStudent);
        if(coursePackageStudents1.size() >= tCoursePackage.getMaxSubscribeNumber()){
            return ResultUtil.error("已达到最多预约人数");
        }
        TCoursePackagePayment coursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(coursePackagePaymentId);
        CoursePackageStudent coursePackageStudent = new CoursePackageStudent();
        coursePackageStudent.setAppUserId(coursePackagePayment.getAppUserId());
        coursePackageStudent.setStudentId(coursePackagePayment.getStudentId());
        coursePackageStudent.setCoursePackageId(coursePackagePayment.getCoursePackageId());
        coursePackageStudent.setCoursePackagePaymentId(coursePackagePaymentId);
        coursePackageStudent.setCoursePackageSchedulingId(coursePackageSchedulingId);
        coursePackageStudent.setSignInOrNot(1);
        coursePackageStudent.setReservationStatus(1);
        coursePackageStudent.setInsertTime(new Date());
        coursePackageStudentClient.addCoursePackageStudent(coursePackageStudent);
        return ResultUtil.success();
    }
    /**
     * 退课操作
     * @param coursePackagePaymentId
     * @param certificate
     * @return
     */
    @Override
    public ResultUtil dropTheClass(Long coursePackagePaymentId, String certificate) {
        TCoursePackagePayment coursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(coursePackagePaymentId);
        if(coursePackagePayment.getStatus() == 2){
            return ResultUtil.error("不能重复操作");
        }
        coursePackagePayment.setStatus(2);
        coursePackagePayment.setCertificate(certificate);
        coursePackagePayment.setWithdrawalTime(new Date());
        //修改课时,费用线下自己处理不走线上
        Integer laveClassHours = coursePackagePayment.getLaveClassHours();
        if(laveClassHours == 0){
            return ResultUtil.error("无可退数量");
        }
        coursePackagePayment.setDropoutsNumber(laveClassHours);
        coursePackagePayment.setLaveClassHours(0);
        coursePackagePaymentClient.editCoursePackagePayment(coursePackagePayment);
        return ResultUtil.success();
    }
    /**
     * 补课操作
     * @param coursePackagePaymentId
     * @return
     */
    @Override
    public ResultUtil makeUpMissedLessons(Integer coursePackagePaymentId){
//        try {
            Integer is = coursePackagePaymentClient.consumeCourse(coursePackagePaymentId);
            if (is==1){
                return ResultUtil.error("课时数不足");
            }else {
                return ResultUtil.success("补课成功");
            }
//            return  resultUtil;
//            return  ResultUtil.success("补课成功");
//        }catch (Exception e){
//            return  ResultUtil.success("课时数不足");
//
//        }
//        return resultUtil;
    }
    /**
     * 获取课包审核列表
     * @param provinceCode
     * @param cityCode
     * @param coursePackageTypeId
     * @param name
     * @param auditStatus
     * @return
     */
    @Override
    public Page<Map<String, Object>> queryExamineCoursePackageLists(String provinceCode, String cityCode, Integer coursePackageTypeId, String name, Integer auditStatus) {
        QueryExamineCoursePackageLists queryExamineCoursePackageLists = new QueryExamineCoursePackageLists();
        queryExamineCoursePackageLists.setProvinceCode(provinceCode);
        queryExamineCoursePackageLists.setCityCode(cityCode);
        queryExamineCoursePackageLists.setCoursePackageTypeId(coursePackageTypeId);
        queryExamineCoursePackageLists.setName(name);
        queryExamineCoursePackageLists.setAuditStatus(auditStatus);
        HttpServletRequest request = HttpKit.getRequest();
        queryExamineCoursePackageLists.setLimit(Integer.valueOf(request.getParameter("limit")));
        queryExamineCoursePackageLists.setOffset(Integer.valueOf(request.getParameter("offset")));
        queryExamineCoursePackageLists.setSort(request.getParameter("sort"));
        queryExamineCoursePackageLists.setOrder(request.getParameter("order"));
        Page<Map<String, Object>> mapPage = coursePackageClient.queryExamineCoursePackageLists(queryExamineCoursePackageLists);
        List<Map<String, Object>> records = mapPage.getRecords();
        for (Map<String, Object> record : records) {
            TStore store = storeService.getById(Integer.valueOf(record.get("storeId").toString()));
            record.put("store", store.getName());
        }
        return mapPage;
    }
    /**
     * 审核课包
     * @param id
     * @param auditStatus
     * @param authRemark
     * @return
     */
    @Override
    public ResultUtil setCoursePackageAuditStatus(Integer id, Integer auditStatus, String authRemark) {
        TCoursePackage tCoursePackage = coursePackageClient.queryById(id);
        if(tCoursePackage.getAuditStatus() != 1){
            return ResultUtil.error("不能重复审核");
        }
        tCoursePackage.setAuditStatus(auditStatus);
        tCoursePackage.setAuditUserId(UserExt.getUser().getId());
        tCoursePackage.setAuthRemark(authRemark);
        coursePackageClient.updateCoursePackage(tCoursePackage);
        return ResultUtil.success();
    }
}