From b0da58b53f3828a5ce7f0f1344a4c01c87181808 Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期一, 27 十一月 2023 19:23:39 +0800
Subject: [PATCH] 修改假期课排课bug

---
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java |   97 +++++++++++++++++++++++++-----------------------
 1 files changed, 50 insertions(+), 47 deletions(-)

diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
index 5d772cf..2e4c389 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -1192,53 +1192,57 @@
         TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrder.getCoursePackageId());
         String[] split = coursePackageOrder.getStudentIds().split(";");
         for (String id : split) {
-            CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", id)
-                    .eq("coursePackageId", coursePackageOrder.getCoursePackageId()).eq("status", 1).eq("state", 1));
-            if (null == coursePackageOrderStudent) {
-                coursePackageOrderStudent = new CoursePackageOrderStudent();
-                coursePackageOrderStudent.setAppUserId(coursePackageOrder.getAppUserId());
-                coursePackageOrderStudent.setStudentId(Integer.valueOf(id));
-                coursePackageOrderStudent.setCoursePackageId(coursePackageOrder.getCoursePackageId());
-                coursePackageOrderStudent.setTotalClassHours(coursePackagePaymentConfig.getClassHours());
-                coursePackageOrderStudent.setLaveClassHours(coursePackagePaymentConfig.getClassHours());
-                coursePackageOrderStudent.setAbsencesNumber(0);
-                coursePackageOrderStudent.setStatus(1);
-                coursePackageOrderStudent.setState(1);
-                coursePackageOrderStudent.setInsertTime(new Date());
-                coursePackageOrderStudent.setGiftClassHours(0);
+            if(coursePackage.getType() == 1){
+                CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", id)
+                        .eq("coursePackageId", coursePackageOrder.getCoursePackageId()).eq("status", 1).eq("state", 1));
+                if (null == coursePackageOrderStudent) {
+                    coursePackageOrderStudent = new CoursePackageOrderStudent();
+                    coursePackageOrderStudent.setAppUserId(coursePackageOrder.getAppUserId());
+                    coursePackageOrderStudent.setStudentId(Integer.valueOf(id));
+                    coursePackageOrderStudent.setCoursePackageId(coursePackageOrder.getCoursePackageId());
+                    coursePackageOrderStudent.setTotalClassHours(coursePackagePaymentConfig.getClassHours());
+                    coursePackageOrderStudent.setLaveClassHours(coursePackagePaymentConfig.getClassHours());
+                    coursePackageOrderStudent.setAbsencesNumber(0);
+                    coursePackageOrderStudent.setStatus(1);
+                    coursePackageOrderStudent.setState(1);
+                    coursePackageOrderStudent.setInsertTime(new Date());
+                    coursePackageOrderStudent.setGiftClassHours(0);
 
-                Integer validDays = coursePackage.getValidDays();
-                Calendar calendar = Calendar.getInstance();
-                calendar.setTime(new Date());
-                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
-                coursePackageOrderStudent.setUseTime(calendar.getTime());
-                coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
+                    Integer validDays = coursePackage.getValidDays();
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.setTime(new Date());
+                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
+                    coursePackageOrderStudent.setUseTime(calendar.getTime());
+                    coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
 
-                //开始排课
-                addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent);
-            } else {
-                Date useTime = coursePackageOrderStudent.getUseTime();
-                coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + coursePackagePaymentConfig.getClassHours());
-                coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + coursePackagePaymentConfig.getClassHours());
-                Integer validDays = coursePackage.getValidDays();
-                Calendar calendar = Calendar.getInstance();
-                calendar.setTime(useTime.compareTo(new Date()) < 0 ? new Date() : useTime);
-                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
-                coursePackageOrderStudent.setUseTime(calendar.getTime());
-                coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
-                //中间断课,没有连续续费的情况需要重新排课
-                if (useTime.compareTo(new Date()) < 0) {
+                    //开始排课
                     addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent);
+                } else {
+                    Date useTime = coursePackageOrderStudent.getUseTime();
+                    coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + coursePackagePaymentConfig.getClassHours());
+                    coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + coursePackagePaymentConfig.getClassHours());
+                    Integer validDays = coursePackage.getValidDays();
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.setTime(useTime.compareTo(new Date()) < 0 ? new Date() : useTime);
+                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
+                    coursePackageOrderStudent.setUseTime(calendar.getTime());
+                    coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
+                    //中间断课,没有连续续费的情况需要重新排课
+                    if (useTime.compareTo(new Date()) < 0) {
+                        addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent);
+                    }
                 }
+                CourseCounsum courseCounsum = new CourseCounsum();
+                courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
+                courseCounsum.setChangeType(1);
+                courseCounsum.setNum(coursePackagePaymentConfig.getClassHours());
+                courseCounsum.setInsertTime(new Date());
+                courseCounsum.setReason("购买课包");
+                courseCounsumService.save(courseCounsum);
             }
-
-            CourseCounsum courseCounsum = new CourseCounsum();
-            courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
-            courseCounsum.setChangeType(1);
-            courseCounsum.setNum(coursePackagePaymentConfig.getClassHours());
-            courseCounsum.setInsertTime(new Date());
-            courseCounsum.setReason("购买课包");
-            courseCounsumService.save(courseCounsum);
+            if(coursePackage.getType() == 2){
+                addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), null);
+            }
         }
     }
 
@@ -1262,6 +1266,7 @@
                 String[] split1 = tCoursePackage.getClassEndTime().split(",");
                 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                 SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+
 
                 //剩余课时
                 Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
@@ -1346,10 +1351,8 @@
                 Calendar calendar = Calendar.getInstance();
                 //假期开始使用当前时间为起始时间进行排课
                 calendar.setTime(startTime.getTime() > System.currentTimeMillis() ? startTime : new Date());
-                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++) {
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                while (true) {
                     Date time = calendar.getTime();
 
                     //判断当天是否在排课星期内
@@ -1361,7 +1364,7 @@
                     }
 
                     //大于有效期不进行排课
-                    if (calendar.getTimeInMillis() >= endTime.getTime()) {
+                    if (calendar.getTimeInMillis() > endTime.getTime()) {
                         break;
                     }
                     for (int j = 0; j < split.length; j++) {

--
Gitblit v1.7.1