puzhibing
2023-12-08 e825aefcd7285facc06fcb5bf69cdd5afc402b2d
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -1210,6 +1210,7 @@
                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
                    coursePackageOrderStudent.setUseTime(calendar.getTime());
                    coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
                    //更新学员课时有效期
                    if(null == student.getValidity()){
                        student.setValidity(calendar.getTime());
@@ -1222,6 +1223,9 @@
                    //开始排课
                    addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent, student.getValidity());
                    //课时记录
                    CourseCounsum courseCounsum = new CourseCounsum();
                    courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
@@ -1315,6 +1319,31 @@
                //上课星期
                String classWeeks = tCoursePackage.getClassWeeks();
                List<Integer> week = week(classWeeks);
                CoursePackageScheduling one = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>()
                        .eq("studentId", sId)
                        .eq("coursePackageId", tCoursePackage.getId())
                        .eq("status", 1)
                        .orderByDesc("classDate")
                        .last(" limit 0, 1")
                );
                if(null != one){
                    //先检测是否需要继续进行排课
                    Calendar calendar1 = Calendar.getInstance();
                    calendar1.setTime(one.getClassDate());
                    int day_week1 = calendar1.get(Calendar.DAY_OF_WEEK);
                    day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1;
                    int week_of_month = calendar1.get(Calendar.WEEK_OF_MONTH);
                    Calendar calendar2 = Calendar.getInstance();
                    calendar2.setTime(new Date());
                    int week_of_month1 = calendar2.get(Calendar.WEEK_OF_MONTH);
                    //最后一次的排课时间不在本周,且是一周的最后一天。(如果是本周则表明已经课时用完了)
                    if(week.get(week.size() - 1).equals(day_week1) && week_of_month == week_of_month1){
                        return;
                    }
                }
                //上课时段
                String[] split = tCoursePackage.getClassStartTime().split(",");
                String[] split1 = tCoursePackage.getClassEndTime().split(",");
@@ -1468,7 +1497,7 @@
    /**
     * 课时有效期更新后-更新历史排课数据
     * 课时有效期更新后-更新历史排课数据(因有效期限制的排课数据,还有剩余课时)
     * @param student
     */
    public void addOldPackageStudent(Student student){
@@ -1493,10 +1522,10 @@
            );
            Calendar calendar = Calendar.getInstance();
            if(null == one){
                calendar.setTime(new Date());
                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
            }else{
            //上课星期
            String classWeeks = coursePackage.getClassWeeks();
            List<Integer> week = week(classWeeks);
                Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
                Integer codeTime = coursePackage.getCodeTime();
                String classStartTime = coursePackage.getClassStartTime();
@@ -1505,6 +1534,14 @@
                String time = format.substring(format.indexOf(" ") + 1);
                String[] split = classStartTime.split(",");
                String[] split1 = classEndTime.split(",");
            if(null == one){
                calendar.setTime(new Date());
                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                calendar.set(Calendar.HOUR_OF_DAY, 0);
                calendar.set(Calendar.MINUTE, 0);
                calendar.set(Calendar.SECOND, 0);
            }else{
                int n = Arrays.asList(split).indexOf(time);
                if(n != split.length - 1){
                    calendar.setTime(one.getClassDate());
@@ -1544,19 +1581,33 @@
                    }
                }else{
                    //先检测是否需要继续进行排课
                    Calendar calendar1 = Calendar.getInstance();
                    calendar1.setTime(one.getClassDate());
                    int day_week1 = calendar1.get(Calendar.DAY_OF_WEEK);
                    day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1;
                    int week_of_month = calendar1.get(Calendar.WEEK_OF_MONTH);
                    Calendar calendar2 = Calendar.getInstance();
                    calendar2.setTime(new Date());
                    int week_of_month1 = calendar2.get(Calendar.WEEK_OF_MONTH);
                    //最后一次的排课时间不在本周,且是一周的最后一天。(如果是本周则表明已经课时用完了)
                    if(week.get(week.size() - 1).equals(day_week1) && week_of_month != week_of_month1){
                        break;
                    }
                }
                    calendar.setTime(one.getClassDate());
                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                    calendar.set(Calendar.HOUR_OF_DAY, 0);
                    calendar.set(Calendar.MINUTE, 0);
                    calendar.set(Calendar.SECOND, 0);
                    int day_week1 = calendar.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);
            int day_week = calendar.get(Calendar.DAY_OF_WEEK);
            day_week = day_week - 1 == 0 ? 7 : day_week - 1;
            int num = 8 - day_week + 7;
                    for (int i = 0; i < num; i++) {
                        Date time1 = calendar.getTime();
@@ -1608,8 +1659,6 @@
                        }
                        //增加日期,用于判断
                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                    }
                }
            }
        }
    }