From b3bf5a0b4fac7ba6bc85b2bdce5e05d55cdeb69f Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期二, 28 十一月 2023 21:46:50 +0800
Subject: [PATCH] 11.27,9

---
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java |   39 +++++++++++++++++++++++++--------------
 1 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
index 17df637..e24d614 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
@@ -172,6 +172,8 @@
                     .orderByDesc("classDate")
                     .last(" limit 0, 1")
             );
+            Student student = studentClient.queryStudentById(coursePackageScheduling.getStudentId());
+            Date validity = student.getValidity();
             TCoursePackage coursePackage = coursePackageService.getById(coursePackageScheduling.getCoursePackageId());
             //上课星期
             String classWeeks = coursePackage.getClassWeeks();
@@ -221,7 +223,7 @@
                     continue;
                 }
                 //大于有效期不进行排课
-                if (start.getTimeInMillis() >= useTime.getTime()) {
+                if (start.getTimeInMillis() >= validity.getTime()) {
                     break;
                 }
                 for (int j = 0; j < split.length; j++) {
@@ -318,6 +320,8 @@
             TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
             Integer codeTime = coursePackage.getCodeTime();
             Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
+            Student student = studentClient.queryStudentById(coursePackageOrderStudent.getStudentId());
+            Date validity = student.getValidity();
 
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(new Date());
@@ -340,7 +344,7 @@
                 //从第二天开始
                 Calendar startTime = Calendar.getInstance();
                 startTime.setTime(new Date());
-                startTime.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
                 startTime.set(Calendar.HOUR_OF_DAY, 0);
                 startTime.set(Calendar.MINUTE, 0);
                 startTime.set(Calendar.SECOND, 0);
@@ -370,7 +374,7 @@
                     }
 
                     //大于有效期不进行排课
-                    if (startTime.getTimeInMillis() >= useTime.getTime()) {
+                    if (startTime.getTimeInMillis() >= validity.getTime()) {
                         break;
                     }
                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -411,11 +415,19 @@
 
             }else{
                 Date classDate = coursePackageScheduling.getClassDate();
-                if(codeTime.compareTo(laveClassHours) > 0 && calendar.getTimeInMillis() > classDate.getTime()){
+                int count = this.count(new QueryWrapper<CoursePackageScheduling>()
+                        .eq("appUserId", coursePackageOrderStudent.getAppUserId())
+                        .eq("studentId", coursePackageOrderStudent.getStudentId())
+                        .eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId())
+                        .eq("status", 1)
+                );
+
+                Integer number = laveClassHours - count;
+                if(codeTime.compareTo(number) > 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.setTime(coursePackageScheduling.getClassDate());
+                    startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
                     startTime.set(Calendar.HOUR_OF_DAY, 0);
                     startTime.set(Calendar.MINUTE, 0);
                     startTime.set(Calendar.SECOND, 0);
@@ -427,13 +439,13 @@
                     String classWeeks = coursePackage.getClassWeeks();
                     List<Integer> week = week(classWeeks);
                     //新剩余课时
-                    laveClassHours += classNumber;
+                    number += 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 time = format.substring(format.indexOf(" ") + 1);
                     String classStartTime = coursePackage.getClassStartTime();
                     String classEndTime = coursePackage.getClassEndTime();
                     String[] split = classStartTime.split(",");
@@ -444,10 +456,10 @@
                         n++;
                         for (int i = n; i < split.length; i++) {
                             //剩余数量不足以排课
-                            if (laveClassHours.compareTo(codeTime) < 0) {
+                            if (number.compareTo(codeTime) < 0) {
                                 break;
                             }
-                            laveClassHours -= codeTime;
+                            number -= codeTime;
                             CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
                             packageScheduling.setType(coursePackage.getType());
                             packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
@@ -484,16 +496,16 @@
                         }
 
                         //大于有效期不进行排课
-                        if (startTime.getTimeInMillis() >= useTime.getTime()) {
+                        if (startTime.getTimeInMillis() >= validity.getTime()) {
                             break;
                         }
                         for (int j = 0; j < split.length; j++) {
                             //剩余数量不足以排课
-                            if (laveClassHours.compareTo(codeTime) < 0) {
+                            if (number.compareTo(codeTime) < 0) {
                                 break;
                             }
 
-                            laveClassHours -= codeTime;
+                            number -= codeTime;
 
                             CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
                             packageScheduling.setType(coursePackage.getType());
@@ -529,7 +541,6 @@
             coursePackageOrderStudent.setUseTime(useTime);
             coursePackageOrderStudent.setStatus(1);
             coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
-            Student student = studentClient.queryStudentById(coursePackageOrderStudent.getStudentId());
             if(null == student.getValidity()){
                 student.setValidity(useTime);
             }else if(student.getValidity().getTime() < useTime.getTime()){

--
Gitblit v1.7.1