From bdb44a4edf520d6d559c18f9969c2d70de671a61 Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期二, 28 十一月 2023 14:27:30 +0800
Subject: [PATCH] 11.27,7

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java |   18 +-
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java                    |    3 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java    |    2 
 cloud-server-course/pom.xml                                                                                 |    7 +
 cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java                          |    1 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java             |   18 +-
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java         |    8 +
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java       |    2 
 cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageSchedulingService.java               |    2 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java                    |  349 ++++++++++++++++++++++++++++---------------------
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java                |    2 
 11 files changed, 242 insertions(+), 170 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
index 17ea143..3f390b1 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
@@ -607,6 +607,7 @@
                                         Date time = sdf.parse(substring);
                                         return !time.before(lastWeekStartDate) && !time.after(lastOfDate);
                                     } catch (ParseException e) {
+                                        e.printStackTrace();
                                         return false;
                                     }
                                 })
@@ -621,6 +622,7 @@
                                         Date time = sdf.parse(record.getTimeFrame().substring(11));
                                         return !time.before(lastMonthStartDate) && !time.after(lastOfDate);
                                     } catch (ParseException e) {
+                                        e.printStackTrace();
                                         return false;
                                     }
                                 })
@@ -635,6 +637,7 @@
                                         Date time = sdf.parse(record.getTimeFrame().substring(11));
                                         return !time.before(lastYearStartDate) && !time.after(lastOfDate);
                                     } catch (ParseException e) {
+                                        e.printStackTrace();
                                         return false;
                                     }
                                 })
diff --git a/cloud-server-course/pom.xml b/cloud-server-course/pom.xml
index 20a5b50..5b0d712 100644
--- a/cloud-server-course/pom.xml
+++ b/cloud-server-course/pom.xml
@@ -130,6 +130,13 @@
             <version>3.23.5</version>
             <scope>compile</scope>
         </dependency>
+
+        <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <version>2.4</version>
+            <classifier>jdk15</classifier>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
index 1845076..9bc7408 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -687,17 +687,17 @@
 
     @PostMapping("/base/coursePack/getRecord")
     public List<PurchaseRecordVo> getRecord(@RequestBody RecordTimeRequest recordTimeRequest) {
-        List<CoursePackageOrderStudent> list = new ArrayList<>();
+//        List<CoursePackageOrderStudent> list = new ArrayList<>();
         Integer[] changes = {1, 0};
-        if (recordTimeRequest.getType() == null) {
-            list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
-        } else {
-
-            list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
-        }
-        List<Integer> appUserIds = list.stream().map(CoursePackageOrderStudent::getAppUserId).collect(Collectors.toList());
+//        if (recordTimeRequest.getType() == null) {
+//            list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
+//        } else {
+//
+//            list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
+//        }
+//        List<Integer> appUserIds = list.stream().map(CoursePackageOrderStudent::getAppUserId).collect(Collectors.toList());
         List<CoursePackageOrderStudent> list1 = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
-                .in("appUserId", appUserIds)
+                .eq("studentId", recordTimeRequest.getStuId())
                 .eq("coursePackageId", recordTimeRequest.getLessionId())
                 .eq("state", 1)
         );
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
index 3cdcbf9..2f81863 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -174,15 +174,29 @@
     @Resource
     private AppUserClient appUserClient;
 
+
+    @Autowired
+    private ICoursePackageOrderStudentService orderStudentService;
     //获取可转移学员
     @RequestMapping("/getSelect")
     @ResponseBody
     public List<SelectDto> getSelect(@RequestParam("payId") Long payId) {
 
-        TCoursePackagePayment byId = paymentService.getById(payId);
+//        TCoursePackagePayment byId = paymentService.getById(payId);
+//
+//        List<Integer> studentIds = paymentService.getStudentIds(payId, byId.getCoursePackageId(), byId.getAppUserId());
+//        System.out.println("=========studentIds=================>" + studentIds);
 
-        List<Integer> studentIds = paymentService.getStudentIds(payId, byId.getCoursePackageId(), byId.getAppUserId());
-        System.out.println("=========studentIds=================>" + studentIds);
+        CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(payId);
+
+
+        List<CoursePackageOrderStudent> orderStudent = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("appUserId", coursePackageOrderStudent.getAppUserId()).eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()).ne("id",payId));
+
+        List<Integer> studentIds = new ArrayList<>();
+        for (CoursePackageOrderStudent packageOrderStudent : orderStudent) {
+            studentIds.add(packageOrderStudent.getStudentId());
+        }
+
 
         if (studentIds.size() > 0) {
             List<SelectDto> selectDtos = appUserClient.getSelects(studentIds);
@@ -269,8 +283,7 @@
     }
 
 
-    @Autowired
-    private ICoursePackageOrderStudentService orderStudentService;
+
 
     @RequestMapping("/insertBack")
     @ResponseBody
@@ -416,39 +429,47 @@
         return moneyBacksck;
     }
 
+    
+
+    @Autowired
+    private ICoursePackageSchedulingService schedulingService;
+    
     //课程转移
     @RequestMapping("/toClass")
     @ResponseBody
     public void toClass(@RequestBody ToClassDto toClassDto) throws ParseException {
-        System.out.println("===========到达getSelect=======" + toClassDto);
-        TCoursePackagePayment orinPay =
-                paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", toClassDto.getId()));
-        TCoursePackagePayment studentPay = paymentService.getOne
-                (new QueryWrapper<TCoursePackagePayment>()
-                        .eq("studentId", toClassDto.getToStudentId())
-                        .eq("coursePackageId", orinPay.getCoursePackageId()));
+//        System.out.println("===========到达getSelect=======" + toClassDto);
+//        TCoursePackagePayment orinPay =
+//                paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", toClassDto.getId()));
+//        TCoursePackagePayment studentPay = paymentService.getOne
+//                (new QueryWrapper<TCoursePackagePayment>()
+//                        .eq("studentId", toClassDto.getToStudentId())
+//                        .eq("coursePackageId", orinPay.getCoursePackageId()));
+
+
+        CoursePackageOrderStudent orinPay = orderStudentService.getById(toClassDto.getId());
+
+        CoursePackageOrderStudent studentPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()));
+
+        TCoursePackage coursePackage = packageService.getById(orinPay.getCoursePackageId());
+
         if (studentPay != null) {
+            //转移
             System.out.println("======orinPay=====>" + orinPay);
             System.out.println("======studentPay=====>" + studentPay);
             Integer laveClassHours = orinPay.getLaveClassHours();
             Integer totalClassHours = orinPay.getTotalClassHours();
             orinPay.setTotalClassHours(0);
             orinPay.setLaveClassHours(0);
-            orinPay.setStatus(1);
+            orinPay.setStatus(5);
             orinPay.setAppUserId(null);
-            paymentService.updateById(orinPay);
-            //删除orin的排课记录
-            List<CoursePackageStudent> studentCourse1 = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()));
-            List<Long> collect1 = studentCourse1.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
-            //拿到最后一天的排课记录
-            if (collect1.size() > 0) {
-                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect1));
-                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            }
+            orderStudentService.updateById(orinPay);
+
+
             CourseCounsum courseCounsum = new CourseCounsum();
             courseCounsum.setInsertTime(new Date());
             if (orinPay.getAppUserId() != studentPay.getAppUserId()) {
-                courseCounsum.setReason("课时转移");
+                courseCounsum.setReason("课时赠送");
             } else {
                 courseCounsum.setReason("课时转移");
             }
@@ -465,12 +486,12 @@
             studentPay.setAppUserId(null);
             studentPay.setLaveClassHours(lave);
             studentPay.setTotalClassHours(total);
-            paymentService.updateById(studentPay);
+            orderStudentService.updateById(studentPay);
 
             CourseCounsum courseCounsum1 = new CourseCounsum();
             courseCounsum1.setInsertTime(new Date());
             if (orinPay.getAppUserId() != studentPay.getAppUserId()) {
-                courseCounsum1.setReason("课时转移");
+                courseCounsum1.setReason("课时赠送");
             } else {
                 courseCounsum1.setReason("课时转移");
             }
@@ -480,112 +501,47 @@
             counsumService.save(courseCounsum1);
 
 
-            //排课
-            TCoursePackage tCoursePackage = packageService.getById(studentPay.getCoursePackageId());
-            String classWeeks = tCoursePackage.getClassWeeks();
-            List<Integer> week = week(classWeeks);
-
-            String[] split = tCoursePackage.getClassStartTime().split(",");
-            String[] split1 = tCoursePackage.getClassEndTime().split(",");
-            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-            // 本周周几
-
-            List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
-            //拿到最后一天的排课记录
-            if (collect.size() > 0) {
-                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
-                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            }
-
-            Student student = studentClient.queryStudentById(toClassDto.getToStudentId());
-
-            Date today = new Date();
-
-
-            TCoursePackagePayment pay = coursePackagePaymentService.getById(studentPay.getId());
-            Integer laveClassHours2 = pay.getLaveClassHours();
-            Integer codeTime = tCoursePackage.getCodeTime();
-            Integer can = 0;
-            int count = 0;
-            // 本周周几
-//        int i = DateUtil.dayOfWeek(new Date())-1;
-
-            Date[] dates = generateDateArray(14, today);
-            can = laveClassHours2 / codeTime;
-
-            for (Date date : dates) {
-                if (count == can) {
-                    break;
-                }
-                int wei = DateUtil.dayOfWeek(date);
-                if (week.contains(wei)) {
-                    for (int i1 = 0; i1 < split.length; i1++) {
-                        if (count == can) {
-                            break;
-                        }
-                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        Date parse = format1.parse(format.format(date) + " " + split[i1]);
-                        Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
-                        coursePackageScheduling.setClassDate(parse);
-                        coursePackageScheduling.setEndDate(parse1);
-                        coursePackageScheduling.setStatus(1);
-                        coursePackageSchedulingService.insert(coursePackageScheduling);
-                        CoursePackageStudent student1 = new CoursePackageStudent();
-                        student1.setAppUserId(student.getAppUserId());
-                        student1.setStudentId(student.getId());
-                        student1.setCoursePackageId(tCoursePackage.getId());
-                        student1.setCoursePackagePaymentId(studentPay.getId());
-                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                        student1.setSignInOrNot(1);
-                        student1.setReservationStatus(1);
-                        student1.setInsertTime(new Date());
-                        cpsMapper.insert(student1);
-                        count++;
-                    }
-                }
-            }
+            schedulingService.addNewCoursePackageScheduling(studentPay.getId(),laveClassHours);
 
 
         } else {
 
 
+
+
             Student student = studentClient.queryStudentById(toClassDto.getToStudentId());
-            TCoursePackagePayment to = new TCoursePackagePayment();
+            CoursePackageOrderStudent to = new CoursePackageOrderStudent();
             to.setStudentId(toClassDto.getToStudentId());
             to.setTotalClassHours(orinPay.getTotalClassHours());
             to.setLaveClassHours(orinPay.getLaveClassHours());
             to.setCoursePackageId(orinPay.getCoursePackageId());
             to.setState(1);
             to.setAppUserId(student.getAppUserId());
-            to.setPayStatus(2);
             to.setStatus(1);
             to.setInsertTime(new Date());
-            paymentService.save(to);
+
+            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);
+            to.setUseTime(calendar.getTime());
+
+            orderStudentService.save(to);
 
 
             orinPay.setTotalClassHours(0);
             orinPay.setLaveClassHours(0);
             orinPay.setAppUserId(null);
-            orinPay.setStatus(1);
-            paymentService.updateById(orinPay);
+            orinPay.setStatus(6);
+            orderStudentService.updateById(orinPay);
 
 
-            //删除orin的排课记录
-            List<CoursePackageStudent> studentCourse1 = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()));
-            List<Long> collect1 = studentCourse1.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
-            //拿到最后一天的排课记录
-            if (collect1.size() > 0) {
-                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect1));
-                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            }
+
 
 
             CourseCounsum courseCounsum = new CourseCounsum();
             courseCounsum.setInsertTime(new Date());
-            courseCounsum.setReason("课时转移");
+            courseCounsum.setReason("课时赠送");
             courseCounsum.setNum(orinPay.getLaveClassHours());
             courseCounsum.setChangeType(0);
             courseCounsum.setPaymentId(orinPay.getId());
@@ -594,82 +550,177 @@
 
             CourseCounsum courseCounsum1 = new CourseCounsum();
             courseCounsum1.setInsertTime(new Date());
-            courseCounsum1.setReason("课时转移");
+            courseCounsum1.setReason("课时赠送");
             courseCounsum1.setNum(orinPay.getLaveClassHours());
             courseCounsum1.setChangeType(1);
             courseCounsum1.setPaymentId(to.getId());
             counsumService.save(courseCounsum);
 
 
-            TCoursePackage tCoursePackage = packageService.getById(studentPay.getCoursePackageId());
-            String classWeeks = tCoursePackage.getClassWeeks();
-            List<Integer> week = week(classWeeks);
 
-            String[] split = tCoursePackage.getClassStartTime().split(",");
-            String[] split1 = tCoursePackage.getClassEndTime().split(",");
-            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-            // 本周周几
-
-            List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
-            //拿到最后一天的排课记录
-            if (collect.size() > 0) {
-                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
-                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            }
+                //开始排课
+                addPackageStudent(coursePackage, to.getAppUserId(), to.getStudentId(), to);
 
 
-            Date today = new Date();
 
 
-            TCoursePackagePayment pay = coursePackagePaymentService.getById(studentPay.getId());
-            Integer laveClassHours2 = pay.getLaveClassHours();
-            Integer codeTime = tCoursePackage.getCodeTime();
-            Integer can = 0;
-            int count = 0;
-            // 本周周几
-//        int i = DateUtil.dayOfWeek(new Date())-1;
+        }
 
-            Date[] dates = generateDateArray(14, today);
-            can = laveClassHours2 / codeTime;
 
-            for (Date date : dates) {
-                if (count == can) {
-                    break;
-                }
-                int wei = DateUtil.dayOfWeek(date);
-                if (week.contains(wei)) {
-                    for (int i1 = 0; i1 < split.length; i1++) {
-                        if (count == can) {
+    }
+
+
+
+    /**
+     * 新购买课程后的排课
+     *
+     * @param userId
+     * @param sId
+     * @throws ParseException
+     */
+    private void addPackageStudent(TCoursePackage tCoursePackage, Integer userId, Integer sId, CoursePackageOrderStudent coursePackageOrderStudent) {
+        try {
+            //1常规 2假期 3体验
+            if (tCoursePackage.getType() == 1) {
+                //上课星期
+                String classWeeks = tCoursePackage.getClassWeeks();
+                List<Integer> week = week(classWeeks);
+                //上课时段
+                String[] split = tCoursePackage.getClassStartTime().split(",");
+                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();
+                //扣除课时数
+                Integer codeTime = tCoursePackage.getCodeTime();
+                //排课 本周+下周,课时不够扣则直接剩余不排课
+                Calendar calendar = Calendar.getInstance();
+                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);
+                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;
+                Date useTime = coursePackageOrderStudent.getUseTime();
+
+                for (int i = 0; i < num; i++) {
+                    Date time = calendar.getTime();
+
+                    //判断当天是否在排课星期内
+                    int day = calendar.get(Calendar.DAY_OF_WEEK);
+                    day = day - 1 == 0 ? 7 : day - 1;
+                    if (!week.contains(day)) {
+                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                        continue;
+                    }
+
+
+                    //大于有效期不进行排课
+                    if (calendar.getTimeInMillis() >= useTime.getTime()) {
+                        break;
+                    }
+                    for (int j = 0; j < split.length; j++) {
+                        //剩余数量不足以排课
+                        if (laveClassHours.compareTo(codeTime) < 0) {
                             break;
                         }
+
+                        laveClassHours -= codeTime;
+
                         CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+                        coursePackageScheduling.setType(tCoursePackage.getType());
+                        coursePackageScheduling.setAppUserId(userId);
+                        coursePackageScheduling.setStudentId(sId);
                         coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        Date parse = format1.parse(format.format(date) + " " + split[i1]);
-                        Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
+                        Date parse = format1.parse(format.format(time) + " " + split[j]);
+                        Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
                         coursePackageScheduling.setClassDate(parse);
                         coursePackageScheduling.setEndDate(parse1);
                         coursePackageScheduling.setStatus(1);
                         coursePackageSchedulingService.insert(coursePackageScheduling);
                         CoursePackageStudent student1 = new CoursePackageStudent();
-                        student1.setAppUserId(student.getAppUserId());
-                        student1.setStudentId(student.getId());
+                        student1.setAppUserId(userId);
+                        student1.setStudentId(sId);
                         student1.setCoursePackageId(tCoursePackage.getId());
-                        student1.setCoursePackagePaymentId(studentPay.getId());
+                        student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                         student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
                         student1.setSignInOrNot(1);
                         student1.setReservationStatus(1);
                         student1.setInsertTime(new Date());
                         cpsMapper.insert(student1);
-                        count++;
                     }
+                    //增加日期,用于判断
+                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                 }
             }
 
+            if (tCoursePackage.getType() == 2) {
+                //上课星期
+                String classWeeks = tCoursePackage.getClassWeeks();
+                List<Integer> week = week(classWeeks);
+                //上课时段
+                String[] split = tCoursePackage.getClassStartTime().split(",");
+                String[] split1 = tCoursePackage.getClassEndTime().split(",");
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+
+                Date startTime = tCoursePackage.getStartTime();
+                Date endTime = tCoursePackage.getEndTime();
+                //排课 本周+下周,课时不够扣则直接剩余不排课
+                Calendar calendar = Calendar.getInstance();
+                //假期开始使用当前时间为起始时间进行排课
+                calendar.setTime(startTime.getTime() > System.currentTimeMillis() ? startTime : new Date());
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                while (true) {
+                    Date time = calendar.getTime();
+
+                    //判断当天是否在排课星期内
+                    int day = calendar.get(Calendar.DAY_OF_WEEK);
+                    day = day - 1 == 0 ? 7 : day - 1;
+                    if (!week.contains(day)) {
+                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                        continue;
+                    }
+
+                    //大于有效期不进行排课
+                    if (calendar.getTimeInMillis() > endTime.getTime()) {
+                        break;
+                    }
+                    for (int j = 0; j < split.length; j++) {
+                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+                        coursePackageScheduling.setType(tCoursePackage.getType());
+                        coursePackageScheduling.setAppUserId(userId);
+                        coursePackageScheduling.setStudentId(sId);
+                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+                        Date parse = format1.parse(format.format(time) + " " + split[j]);
+                        Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
+                        coursePackageScheduling.setClassDate(parse);
+                        coursePackageScheduling.setEndDate(parse1);
+                        coursePackageScheduling.setStatus(1);
+                        coursePackageSchedulingService.insert(coursePackageScheduling);
+                        CoursePackageStudent student1 = new CoursePackageStudent();
+                        student1.setAppUserId(userId);
+                        student1.setStudentId(sId);
+                        student1.setCoursePackageId(tCoursePackage.getId());
+                        student1.setCoursePackagePaymentId(null);
+                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+                        student1.setSignInOrNot(1);
+                        student1.setReservationStatus(1);
+                        student1.setInsertTime(new Date());
+                        cpsMapper.insert(student1);
+                    }
+                    //增加日期,用于判断
+                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
-
-
     }
 
     @Resource
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
index bae2cab..96b44df 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
@@ -195,5 +195,6 @@
     @TableField("giftClassHours")
     private Integer giftClassHours;
     // 所选课时规格id
+    @TableField(exist = false)
     private Integer coursePackageConfigId;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageSchedulingService.java b/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageSchedulingService.java
index d9b43d5..ee9dd41 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageSchedulingService.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageSchedulingService.java
@@ -47,5 +47,5 @@
      * 处理剩余课时已经全部排完课后临时增加课时后添加排课
      * @param coursePackageOrderStudentId
      */
-    void addNewCoursePackageScheduling(Integer coursePackageOrderStudentId, Integer classNumber);
+    void addNewCoursePackageScheduling(Long coursePackageOrderStudentId, Integer classNumber);
 }
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 c4797d5..2288be4 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
@@ -319,7 +319,7 @@
      * @param coursePackageOrderStudentId
      */
     @Override
-    public void addNewCoursePackageScheduling(Integer coursePackageOrderStudentId, Integer classNumber) {
+    public void addNewCoursePackageScheduling(Long coursePackageOrderStudentId, Integer classNumber) {
         CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(coursePackageOrderStudentId);
         CoursePackageScheduling coursePackageScheduling = this.getOne(new QueryWrapper<CoursePackageScheduling>()
                 .eq("appUserId", coursePackageOrderStudent.getAppUserId())
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
index 9e13e0d..baa80c1 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -511,6 +511,14 @@
         AppUser appUser = appuClient.queryAppUser(appUserId);
         CourseDetailsResponse response = new CourseDetailsResponse();
         CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(coursePayId);
+        if (coursePackageOrder==null){
+//             student = coursePackageStudentService.getById(coursePayId);
+            CoursePackageOrderStudent student = coursePackageOrderStudentService.getById(coursePayId);
+
+            coursePackageOrder = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>().eq("appUserId", student.getAppUserId()).like("studentIds", student.getStudentId()).eq("coursePackageId", student.getCoursePackageId()).orderByDesc("insertTime").last("limit 1"));
+
+        }
+
 
 
         response.setChooseHours(coursePackageOrder.getClassHours());
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 3226306..56c305a 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
@@ -1219,6 +1219,8 @@
                 courseCounsum.setInsertTime(new Date());
                 courseCounsum.setReason("购买课包");
                 courseCounsumService.save(courseCounsum);
+
+
             }
             if(coursePackage.getType() == 2){
                 addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), null);
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
index 3e8d1a9..6b15485 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
@@ -698,15 +698,15 @@
 
         List<SelectDto>  selectDtos =  appUserClient.giftSelect(giftSearchDto);
         // 只查询当前用户下 同时也报名了该课程的学员
-        for (SelectDto selectDto : selectDtos) {
-            // 获取课包id
-            TCoursePackagePayment tCoursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(giftSearchDto.getId());
-
-            Integer coursePackageId = tCoursePackagePayment.getCoursePackageId();
-            // 学员id 拿到学员id 判断当前学员是否报名了这门课程
-            Long id = selectDto.getId();
-            //
-        }
+//        for (SelectDto selectDto : selectDtos) {
+//            // 获取课包id
+//            TCoursePackagePayment tCoursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(giftSearchDto.getId());
+//
+//            Integer coursePackageId = tCoursePackagePayment.getCoursePackageId();
+//            // 学员id 拿到学员id 判断当前学员是否报名了这门课程
+//            Long id = selectDto.getId();
+//            //
+//        }
         Map<String,List<SelectDto>> map = new HashMap<>();
         map.put("options",selectDtos);
 //        Map<String,List<SelectDto>> map = new HashMap<>();
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
index 05b26cf..f8034c5 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
@@ -570,7 +570,7 @@
 
         List<CoursePackageStudent> coursePackageStudents = coursePackageStudentClient.queryByCoursePackageSchedulingId(integers);
         for (CoursePackageStudent coursePackageStudent : coursePackageStudents) {
-            if(coursePackageStudent.getReservationStatus() == 0){
+            if(coursePackageStudent.getSignInOrNot() == 2){
                 continue;
             }
 //            TCoursePackagePayment tCoursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(coursePackageStudent.getCoursePackagePaymentId());

--
Gitblit v1.7.1