nickchange
2023-11-28 7c109728a00564a841b7aceb6103e32ba7852243
11.27,9
5个文件已修改
439 ■■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java 329 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
@@ -48,6 +48,9 @@
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;
@@ -603,9 +606,17 @@
                                .filter(record -> {
                                    try {
                                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                                        String substring = record.getTimeFrame().substring(11);
                                        String substring = record.getTimeFrame().substring(0,16);
                                        Date time = sdf.parse(substring);
                                        return !time.before(lastWeekStartDate) && !time.after(lastOfDate);
                                        Instant instant = time.toInstant();
                                        LocalDate dateToCheck = instant.atZone(ZoneId.systemDefault()).toLocalDate();
                                        // 获取今天的日期
                                        LocalDate today = LocalDate.now();
                                        // 计算一周前的日期
                                        LocalDate oneWeekAgo = today.minusWeeks(1);
                                        // 计算一周后的日期
                                        LocalDate oneWeekLater = today.plusWeeks(1);
                                        return dateToCheck.isAfter(oneWeekAgo) && dateToCheck.isBefore(oneWeekLater);
                                    } catch (ParseException e) {
                                        e.printStackTrace();
                                        return false;
@@ -618,9 +629,18 @@
                        recordAppoints = recordAppoints.stream()
                                .filter(record -> {
                                    try {
                                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                                        Date time = sdf.parse(record.getTimeFrame().substring(11));
                                        return !time.before(lastMonthStartDate) && !time.after(lastOfDate);
                                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                                        String substring = record.getTimeFrame().substring(0,16);
                                        Date time = sdf.parse(substring);
                                        Instant instant = time.toInstant();
                                        LocalDate dateToCheck = instant.atZone(ZoneId.systemDefault()).toLocalDate();
                                        // 获取今天的日期
                                        LocalDate today = LocalDate.now();
                                        // 计算一周前的日期
                                        LocalDate oneWeekAgo = today.minusMonths(1);
                                        // 计算一周后的日期
                                        LocalDate oneWeekLater = today.plusMonths(1);
                                        return dateToCheck.isAfter(oneWeekAgo) && dateToCheck.isBefore(oneWeekLater);
                                    } catch (ParseException e) {
                                        e.printStackTrace();
                                        return false;
@@ -634,8 +654,17 @@
                                .filter(record -> {
                                    try {
                                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                                        Date time = sdf.parse(record.getTimeFrame().substring(11));
                                        return !time.before(lastYearStartDate) && !time.after(lastOfDate);
                                        String substring = record.getTimeFrame().substring(0,16);
                                        Date time = sdf.parse(substring);
                                        Instant instant = time.toInstant();
                                        LocalDate dateToCheck = instant.atZone(ZoneId.systemDefault()).toLocalDate();
                                        // 获取今天的日期
                                        LocalDate today = LocalDate.now();
                                        // 计算一周前的日期
                                        LocalDate oneWeekAgo = today.minusYears(1);
                                        // 计算一周后的日期
                                        LocalDate oneWeekLater = today.plusYears(1);
                                        return dateToCheck.isAfter(oneWeekAgo) && dateToCheck.isBefore(oneWeekLater);
                                    } catch (ParseException e) {
                                        e.printStackTrace();
                                        return false;
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -450,7 +450,9 @@
            CourseCounsum courseCounsum = new CourseCounsum();
            courseCounsum.setInsertTime(new Date());
            if (orinPay.getAppUserId().compareTo(studentPay.getAppUserId()) != 0) {
            Integer appUserId = orinPay.getAppUserId();
            Integer appUserId1 = studentPay.getAppUserId();
            if (appUserId.compareTo(appUserId1) != 0) {
                courseCounsum.setReason("课时赠送");
            } else {
                courseCounsum.setReason("课时转移");
@@ -466,19 +468,9 @@
            courseCounsum.setPaymentId(orinPay.getId());
            counsumService.save(courseCounsum);
            Integer laveClassHours1 = studentPay.getLaveClassHours();
            Integer totalClassHours1 = studentPay.getTotalClassHours();
            int total = totalClassHours + totalClassHours1;
            int lave = laveClassHours + laveClassHours1;
            studentPay.setAppUserId(null);
            studentPay.setLaveClassHours(lave);
            studentPay.setTotalClassHours(total);
            orderStudentService.updateById(studentPay);
            CourseCounsum courseCounsum1 = new CourseCounsum();
            courseCounsum1.setInsertTime(new Date());
            if (orinPay.getAppUserId().compareTo(studentPay.getAppUserId()) != 0) {
            if (appUserId.compareTo(appUserId1) != 0) {
                courseCounsum1.setReason("课时赠送");
            } else {
                courseCounsum1.setReason("课时转移");
@@ -488,10 +480,10 @@
            courseCounsum1.setPaymentId(studentPay.getId());
            counsumService.save(courseCounsum1);
            schedulingService.addNewCoursePackageScheduling(studentPay.getId(),laveClassHours);
            schedulingService.addNewCoursePackageScheduling(studentPay.getId(), laveClassHours);
            //删除原排课数据
            List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
                    .eq("type", 1).eq("appUserId", orinPay.getAppUserId())
                    .eq("type", 1).eq("appUserId", appUserId)
                    .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId())
                    .orderByAsc("classDate"));
            int num = totalClassHours - laveClassHours;
@@ -501,12 +493,13 @@
                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId()));
            }
        } else {
            Integer totalClassHours = orinPay.getTotalClassHours();
            Integer laveClassHours = orinPay.getLaveClassHours();
            Student student = studentClient.queryStudentById(toClassDto.getToStudentId());
            CoursePackageOrderStudent to = new CoursePackageOrderStudent();
            to.setStudentId(toClassDto.getToStudentId());
            to.setTotalClassHours(totalClassHours);
            to.setTotalClassHours(laveClassHours);
            to.setLaveClassHours(laveClassHours);
            to.setCoursePackageId(orinPay.getCoursePackageId());
            to.setState(1);
@@ -519,10 +512,9 @@
            calendar.setTime(new Date());
            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
            to.setUseTime(calendar.getTime());
            orderStudentService.save(to);
            Integer appUserId = orinPay.getAppUserId();
            orinPay.setLaveClassHours(0);
            orinPay.setAppUserId(null);
            orinPay.setStatus(6);
@@ -544,13 +536,13 @@
            courseCounsum1.setNum(orinPay.getLaveClassHours());
            courseCounsum1.setChangeType(1);
            courseCounsum1.setPaymentId(to.getId());
            counsumService.save(courseCounsum);
            counsumService.save(courseCounsum1);
            //开始排课
             addPackageStudent(coursePackage, to.getAppUserId(), to.getStudentId(), to);
            //删除原排课数据
            List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
                    .eq("type", 1).eq("appUserId", orinPay.getAppUserId())
                    .eq("type", 1).eq("appUserId", appUserId)
                    .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId())
                    .orderByAsc("classDate"));
            int num = totalClassHours - laveClassHours;
cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
@@ -300,159 +300,232 @@
     */
    @Override
    public void addNewCoursePackageScheduling(Long coursePackageOrderStudentId, Integer classNumber) {
        CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(coursePackageOrderStudentId);
        CoursePackageScheduling coursePackageScheduling = this.getOne(new QueryWrapper<CoursePackageScheduling>()
                .eq("appUserId", coursePackageOrderStudent.getAppUserId())
                .eq("studentId", coursePackageOrderStudent.getStudentId())
                .eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId())
                .eq("status", 1)
                .orderByDesc("classDate")
                .last(" limit 0, 1")
        );
        TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
        Integer codeTime = coursePackage.getCodeTime();
        Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
        Date classDate = coursePackageScheduling.getClassDate();
        try {
            CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(coursePackageOrderStudentId);
            CoursePackageScheduling coursePackageScheduling = this.getOne(new QueryWrapper<CoursePackageScheduling>()
                    .eq("appUserId", coursePackageOrderStudent.getAppUserId())
                    .eq("studentId", coursePackageOrderStudent.getStudentId())
                    .eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId())
                    .eq("status", 1)
                    .orderByDesc("classDate")
                    .last(" limit 0, 1")
            );
            TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
            Integer codeTime = coursePackage.getCodeTime();
            Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        int day_week = calendar.get(Calendar.DAY_OF_WEEK);
        day_week = day_week - 1 == 0 ? 7 : day_week - 1;
        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 7 - day_week);
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date());
            int day_week = calendar.get(Calendar.DAY_OF_WEEK);
            day_week = day_week - 1 == 0 ? 7 : day_week - 1;
            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 7 - day_week);
            calendar.set(Calendar.HOUR_OF_DAY, 23);
            calendar.set(Calendar.MINUTE, 59);
            calendar.set(Calendar.SECOND, 59);
        //剩余课时已不足以继续排课,且最后一次的排课时间是在本周(因为定时任务会周一凌晨去继续进行排课处理
        // 如果最后一次排课时间不是本周,则直接增加剩余课时,剩余排课逻辑交由定时任务处理)
        if(codeTime.compareTo(laveClassHours) > 0 && calendar.getTimeInMillis() > classDate.getTime()){
            //从第二天开始
            Calendar startTime = Calendar.getInstance();
            startTime.setTime(new Date());
            startTime.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
            startTime.set(Calendar.HOUR_OF_DAY, 0);
            startTime.set(Calendar.MINUTE, 0);
            startTime.set(Calendar.SECOND, 0);
            int day_week1 = startTime.get(Calendar.DAY_OF_WEEK);
            day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1;
            int num = 8 - day_week1 + 7;
            //上课星期
            String classWeeks = coursePackage.getClassWeeks();
            List<Integer> week = week(classWeeks);
            //新剩余课时
            laveClassHours += classNumber;
            //新有效期
            Calendar calendar1 = Calendar.getInstance();
            calendar1.setTime(coursePackageOrderStudent.getUseTime());
            calendar1.set(Calendar.DAY_OF_YEAR, calendar1.get(Calendar.DAY_OF_YEAR) + classNumber);
            Date useTime = calendar1.getTime();
            //判断最后一天是否所有时段都已排完
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
            String format = sdf.format(coursePackageScheduling.getClassDate());
            String time = format.substring(format.indexOf(" "));
            String classStartTime = coursePackage.getClassStartTime();
            String classEndTime = coursePackage.getClassEndTime();
            String[] split = classStartTime.split(",");
            String[] split1 = classEndTime.split(",");
            int n = Arrays.asList(split).indexOf(time);
            if(n != split.length - 1){
                //单独处理剩余没排课的时段
                n++;
                for (int i = n; i < split.length; i++) {
                    //剩余数量不足以排课
                    if (laveClassHours.compareTo(codeTime) < 0) {
            //剩余课时已不足以继续排课,且最后一次的排课时间是在本周(因为定时任务会周一凌晨去继续进行排课处理
            // 如果最后一次排课时间不是本周,则直接增加剩余课时,剩余排课逻辑交由定时任务处理)
            if(0 == laveClassHours){
                //从第二天开始
                Calendar startTime = Calendar.getInstance();
                startTime.setTime(new Date());
                startTime.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                startTime.set(Calendar.HOUR_OF_DAY, 0);
                startTime.set(Calendar.MINUTE, 0);
                startTime.set(Calendar.SECOND, 0);
                int day_week1 = startTime.get(Calendar.DAY_OF_WEEK);
                day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1;
                int num = 8 - day_week1 + 7;
                //上课星期
                String classWeeks = coursePackage.getClassWeeks();
                List<Integer> week = week(classWeeks);
                //新剩余课时
                laveClassHours += classNumber;
                String classStartTime = coursePackage.getClassStartTime();
                String classEndTime = coursePackage.getClassEndTime();
                String[] split = classStartTime.split(",");
                String[] split1 = classEndTime.split(",");
                for (int i = 0; i < num; i++) {
                    Date time1 = startTime.getTime();
                    //判断当天是否在排课星期内
                    int day = startTime.get(Calendar.DAY_OF_WEEK);
                    day = day - 1 == 0 ? 7 : day - 1;
                    if (!week.contains(day)) {
                        startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
                        continue;
                    }
                    //大于有效期不进行排课
                    if (startTime.getTimeInMillis() >= useTime.getTime()) {
                        break;
                    }
                    laveClassHours -= codeTime;
                    CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
                    packageScheduling.setType(coursePackage.getType());
                    packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
                    packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId());
                    packageScheduling.setCoursePackageId(coursePackage.getId());
                    try {
                        Date parse = sdf.parse(format.format(time) + " " + split[i]);
                        Date parse1 = sdf.parse(format.format(time) + " " + split1[i]);
                        packageScheduling.setClassDate(parse);
                        packageScheduling.setEndDate(parse1);
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                    packageScheduling.setStatus(1);
                    this.save(packageScheduling);
                    CoursePackageStudent student1 = new CoursePackageStudent();
                    student1.setAppUserId(coursePackageOrderStudent.getAppUserId());
                    student1.setStudentId(coursePackageOrderStudent.getStudentId());
                    student1.setCoursePackageId(coursePackage.getId());
                    student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                    student1.setCoursePackageSchedulingId(packageScheduling.getId());
                    student1.setSignInOrNot(1);
                    student1.setReservationStatus(1);
                    student1.setInsertTime(new Date());
                    coursePackageStudentMapper.insert(student1);
                }
            }
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
                    for (int j = 0; j < split.length; j++) {
                        //剩余数量不足以排课
                        if (laveClassHours.compareTo(codeTime) < 0) {
                            break;
                        }
            for (int i = 0; i < num; i++) {
                Date time1 = startTime.getTime();
                        laveClassHours -= codeTime;
                //判断当天是否在排课星期内
                int day = startTime.get(Calendar.DAY_OF_WEEK);
                day = day - 1 == 0 ? 7 : day - 1;
                if (!week.contains(day)) {
                    startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
                    continue;
                }
                //大于有效期不进行排课
                if (startTime.getTimeInMillis() >= useTime.getTime()) {
                    break;
                }
                for (int j = 0; j < split.length; j++) {
                    //剩余数量不足以排课
                    if (laveClassHours.compareTo(codeTime) < 0) {
                        break;
                    }
                    laveClassHours -= codeTime;
                    CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
                    packageScheduling.setType(coursePackage.getType());
                    packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
                    packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId());
                    packageScheduling.setCoursePackageId(coursePackage.getId());
                    try {
                        CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
                        packageScheduling.setType(coursePackage.getType());
                        packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
                        packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId());
                        packageScheduling.setCoursePackageId(coursePackage.getId());
                        Date parse = sdf.parse(sdf1.format(time1) + " " + split[j]);
                        Date parse1 = sdf.parse(sdf1.format(time1) + " " + split1[j]);
                        packageScheduling.setClassDate(parse);
                        packageScheduling.setEndDate(parse1);
                    }catch (Exception e){
                        e.printStackTrace();
                        packageScheduling.setStatus(1);
                        this.save(packageScheduling);
                        CoursePackageStudent student1 = new CoursePackageStudent();
                        student1.setAppUserId(coursePackageOrderStudent.getAppUserId());
                        student1.setStudentId(coursePackageOrderStudent.getStudentId());
                        student1.setCoursePackageId(coursePackage.getId());
                        student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                        student1.setCoursePackageSchedulingId(packageScheduling.getId());
                        student1.setSignInOrNot(1);
                        student1.setReservationStatus(1);
                        student1.setInsertTime(new Date());
                        coursePackageStudentMapper.insert(student1);
                    }
                    packageScheduling.setStatus(1);
                    this.save(packageScheduling);
                    CoursePackageStudent student1 = new CoursePackageStudent();
                    student1.setAppUserId(coursePackageOrderStudent.getAppUserId());
                    student1.setStudentId(coursePackageOrderStudent.getStudentId());
                    student1.setCoursePackageId(coursePackage.getId());
                    student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                    student1.setCoursePackageSchedulingId(packageScheduling.getId());
                    student1.setSignInOrNot(1);
                    student1.setReservationStatus(1);
                    student1.setInsertTime(new Date());
                    coursePackageStudentMapper.insert(student1);
                    //增加日期,用于判断
                    startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
                }
                //增加日期,用于判断
                startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
            }else{
                Date classDate = coursePackageScheduling.getClassDate();
                if(codeTime.compareTo(laveClassHours) > 0 && calendar.getTimeInMillis() > classDate.getTime()){
                    //从第二天开始
                    Calendar startTime = Calendar.getInstance();
                    startTime.setTime(new Date());
                    startTime.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                    startTime.set(Calendar.HOUR_OF_DAY, 0);
                    startTime.set(Calendar.MINUTE, 0);
                    startTime.set(Calendar.SECOND, 0);
                    int day_week1 = startTime.get(Calendar.DAY_OF_WEEK);
                    day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1;
                    int num = 8 - day_week1 + 7;
                    //上课星期
                    String classWeeks = coursePackage.getClassWeeks();
                    List<Integer> week = week(classWeeks);
                    //新剩余课时
                    laveClassHours += classNumber;
                    //判断最后一天是否所有时段都已排完
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
                    String format = sdf.format(coursePackageScheduling.getClassDate());
                    String time = format.substring(format.indexOf(" "));
                    String classStartTime = coursePackage.getClassStartTime();
                    String classEndTime = coursePackage.getClassEndTime();
                    String[] split = classStartTime.split(",");
                    String[] split1 = classEndTime.split(",");
                    int n = Arrays.asList(split).indexOf(time);
                    if(n != split.length - 1){
                        //单独处理剩余没排课的时段
                        n++;
                        for (int i = n; i < split.length; i++) {
                            //剩余数量不足以排课
                            if (laveClassHours.compareTo(codeTime) < 0) {
                                break;
                            }
                            laveClassHours -= codeTime;
                            CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
                            packageScheduling.setType(coursePackage.getType());
                            packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
                            packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId());
                            packageScheduling.setCoursePackageId(coursePackage.getId());
                            Date parse = sdf.parse(format.format(time) + " " + split[i]);
                            Date parse1 = sdf.parse(format.format(time) + " " + split1[i]);
                            packageScheduling.setClassDate(parse);
                            packageScheduling.setEndDate(parse1);
                            packageScheduling.setStatus(1);
                            this.save(packageScheduling);
                            CoursePackageStudent student1 = new CoursePackageStudent();
                            student1.setAppUserId(coursePackageOrderStudent.getAppUserId());
                            student1.setStudentId(coursePackageOrderStudent.getStudentId());
                            student1.setCoursePackageId(coursePackage.getId());
                            student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                            student1.setCoursePackageSchedulingId(packageScheduling.getId());
                            student1.setSignInOrNot(1);
                            student1.setReservationStatus(1);
                            student1.setInsertTime(new Date());
                            coursePackageStudentMapper.insert(student1);
                        }
                    }
                    for (int i = 0; i < num; i++) {
                        Date time1 = startTime.getTime();
                        //判断当天是否在排课星期内
                        int day = startTime.get(Calendar.DAY_OF_WEEK);
                        day = day - 1 == 0 ? 7 : day - 1;
                        if (!week.contains(day)) {
                            startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
                            continue;
                        }
                        //大于有效期不进行排课
                        if (startTime.getTimeInMillis() >= useTime.getTime()) {
                            break;
                        }
                        for (int j = 0; j < split.length; j++) {
                            //剩余数量不足以排课
                            if (laveClassHours.compareTo(codeTime) < 0) {
                                break;
                            }
                            laveClassHours -= codeTime;
                            CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
                            packageScheduling.setType(coursePackage.getType());
                            packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
                            packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId());
                            packageScheduling.setCoursePackageId(coursePackage.getId());
                            Date parse = sdf.parse(sdf1.format(time1) + " " + split[j]);
                            Date parse1 = sdf.parse(sdf1.format(time1) + " " + split1[j]);
                            packageScheduling.setClassDate(parse);
                            packageScheduling.setEndDate(parse1);
                            packageScheduling.setStatus(1);
                            this.save(packageScheduling);
                            CoursePackageStudent student1 = new CoursePackageStudent();
                            student1.setAppUserId(coursePackageOrderStudent.getAppUserId());
                            student1.setStudentId(coursePackageOrderStudent.getStudentId());
                            student1.setCoursePackageId(coursePackage.getId());
                            student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                            student1.setCoursePackageSchedulingId(packageScheduling.getId());
                            student1.setSignInOrNot(1);
                            student1.setReservationStatus(1);
                            student1.setInsertTime(new Date());
                            coursePackageStudentMapper.insert(student1);
                        }
                        //增加日期,用于判断
                        startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
                    }
                }
            }
            //开始更新剩余课时和有效期
            coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + classNumber);
            coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + classNumber);
            coursePackageOrderStudent.setUseTime(useTime);
            coursePackageOrderStudent.setStatus(1);
            coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -1176,7 +1176,7 @@
        for (String id : split) {
            if(coursePackage.getType() == 1){
                CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", id)
                        .eq("coursePackageId", coursePackageOrder.getCoursePackageId()).eq("status", 1).eq("state", 1));
                        .eq("coursePackageId", coursePackageOrder.getCoursePackageId()).eq("state", 1));
                if (null == coursePackageOrderStudent) {
                    coursePackageOrderStudent = new CoursePackageOrderStudent();
                    coursePackageOrderStudent.setAppUserId(coursePackageOrder.getAppUserId());
@@ -1208,18 +1208,22 @@
                    courseCounsum.setReason("购买课包");
                    courseCounsumService.save(courseCounsum);
                    //账单记录
                    CourseCounsum courseCounsum1 = new CourseCounsum();
                    courseCounsum1.setPaymentId(coursePackageOrder.getId());
                    courseCounsum1.setChangeType(3);
                    courseCounsum1.setInsertTime(new Date());
                    courseCounsum1.setReason("报名课程;"+coursePackageOrder.getCashPayment());
                    courseCounsum1.setAppUserId(coursePackageOrder.getAppUserId());
                    courseCounsumService.save(courseCounsum1);
                    if(coursePackageOrder.getPayType() != 3){
                        CourseCounsum courseCounsum1 = new CourseCounsum();
                        courseCounsum1.setPaymentId(coursePackageOrder.getId());
                        courseCounsum1.setChangeType(3);
                        courseCounsum1.setInsertTime(new Date());
                        courseCounsum1.setReason("报名课程;"+coursePackageOrder.getCashPayment());
                        courseCounsum1.setAppUserId(coursePackageOrder.getAppUserId());
                        courseCounsumService.save(courseCounsum1);
                    }
                } else {
                    Date useTime = coursePackageOrderStudent.getUseTime();
                    coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + coursePackagePaymentConfig.getClassHours());
                    coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + coursePackagePaymentConfig.getClassHours());
                    coursePackageOrderStudent.setStatus(1);
                    Integer validDays = coursePackage.getValidDays();
                    Calendar calendar = Calendar.getInstance();
                    calendar.setTime(useTime.compareTo(new Date()) < 0 ? new Date() : useTime);
@@ -1240,13 +1244,15 @@
                    courseCounsum.setReason("续课");
                    courseCounsumService.save(courseCounsum);
                    //账单记录
                    CourseCounsum courseCounsum1 = new CourseCounsum();
                    courseCounsum1.setPaymentId(coursePackageOrder.getId());
                    courseCounsum1.setChangeType(3);
                    courseCounsum1.setInsertTime(new Date());
                    courseCounsum1.setReason("续课;"+coursePackageOrder.getCashPayment());
                    courseCounsum1.setAppUserId(coursePackageOrder.getAppUserId());
                    courseCounsumService.save(courseCounsum1);
                    if(coursePackageOrder.getPayType() != 3){
                        CourseCounsum courseCounsum1 = new CourseCounsum();
                        courseCounsum1.setPaymentId(coursePackageOrder.getId());
                        courseCounsum1.setChangeType(3);
                        courseCounsum1.setInsertTime(new Date());
                        courseCounsum1.setReason("续课;"+coursePackageOrder.getCashPayment());
                        courseCounsum1.setAppUserId(coursePackageOrder.getAppUserId());
                        courseCounsumService.save(courseCounsum1);
                    }
                }
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
@@ -556,6 +556,7 @@
            integers.add(coursePackageScheduling.getId());
            coursePackageScheduling.setCancelClasses(cancelClasses);
            coursePackageScheduling.setDeductClassHour(deductClassHour);
            coursePackageScheduling.setStatus(3);
        }