From 3ad6b6ba2ba56fc0bcd2130e47190779c6e15acc Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 04 十二月 2023 14:59:32 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai

---
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java |  579 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 325 insertions(+), 254 deletions(-)

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 d0db8ce..93d5fdf 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
@@ -107,6 +107,21 @@
     }
 
 
+
+
+    @ResponseBody
+    @PostMapping("/queryAble")
+    public Integer queryAble(@RequestBody Integer id) {
+
+        int coursePackageId = orderStudentService.count(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", id));
+        if (coursePackageId>0){
+            return 1;
+        }else {
+            return 0;
+        }
+
+    }
+
     //获取学员课时数信息
     @RequestMapping("/getInfo")
     @ResponseBody
@@ -126,6 +141,8 @@
         studentClassInfo.setInDate(minDate);
         System.out.println("===========>" + studentClassInfo);
 
+//        appUserClient.queryGift(tStudentId);
+
         return studentClassInfo;
     }
 
@@ -136,7 +153,9 @@
         System.out.println("==========getClassList===tStudentId====" + tStudentId);
         List<ClassListDto> listDtos = studentService.getClassList(tStudentId);
         for (ClassListDto dto : listDtos) {
-            dto.setHasClassHours(dto.getTotalClassHours() - dto.getLaveClassHours());
+            if (dto.getClassType()!=2) {
+                dto.setHasClassHours(dto.getTotalClassHours() - dto.getLaveClassHours());
+            }
         }
         System.out.println("======listDtos======" + listDtos);
         return listDtos;
@@ -287,7 +306,14 @@
 
     @RequestMapping("/insertBack")
     @ResponseBody
-    public void insertBack(@RequestBody InsertBackDto insertBackDto) {
+    public Integer insertBack(@RequestBody InsertBackDto insertBackDto) {
+
+        List<MoneyBack> ids = moneyBackService.list(new QueryWrapper<MoneyBack>().eq("ids", insertBackDto.getIds()));
+
+        if (!ids.isEmpty()){
+            return 1 ;
+        }
+
 
         MoneyBack moneyBack = new MoneyBack();
         moneyBack.setStudentId(insertBackDto.getId());
@@ -303,16 +329,34 @@
         for (CoursePackageOrderStudent o : pays) {
             o.setStatus(4);
             o.setAppUserId(null);
+            List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>().eq("studentId", o.getStudentId()).eq("coursePackageId", o.getCoursePackageId()).ge("classDate", new Date()));
+            List<Long> scs = new ArrayList<>();
+            for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
+                scs.add(coursePackageScheduling.getId());
+            }
+            coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().in("coursePackageSchedulingId",scs));
+            coursePackageSchedulingService.deleteBatchIds(scs);
+
+
+
         }
 
+
+
         orderStudentService.updateBatchById(pays);
+        return 0;
     }
 
 
+    @Autowired
+    private ICoursePackageOrderService coursePackageOrderService;
+
+    @Autowired
+    private ICoursePackageOrderStudentService coursePackageOrderStudentService;
     @RequestMapping("/queryByIds")
     @ResponseBody
-    public List<TCoursePackagePayment> queryByIds(@RequestParam("ids") String ids) {
-        List<TCoursePackagePayment> paymentList = paymentService.list(new QueryWrapper<TCoursePackagePayment>()
+    public List<CoursePackageOrderStudent> queryByIds(@RequestParam("ids") String ids) {
+        List<CoursePackageOrderStudent> paymentList = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                 .in("id", Arrays.asList(ids.split(","))));
 
         System.out.println("========client==>" + paymentList);
@@ -328,6 +372,8 @@
 
     }
 
+
+
     @RequestMapping("/noStatus")
     @ResponseBody
     public void noStatus(@RequestParam("id") Integer id) {
@@ -339,6 +385,7 @@
         for (CoursePackageOrderStudent o : pays) {
             o.setStatus(1);
             o.setAppUserId(null);
+            schedulingService.addNewCoursePackageScheduling(o.getId(),o.getLaveClassHours());
         }
         orderStudentService.updateBatchById(pays);
 
@@ -390,18 +437,30 @@
     }
 
 
+
+    @RequestMapping("/getOrder")
+    @ResponseBody
+    public List<CoursePackageOrder> getOrder(@RequestParam("id") Long id) {
+
+        CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(id);
+
+        List<CoursePackageOrder> list = coursePackageOrderService.list(new QueryWrapper<CoursePackageOrder>().eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()).like("studentIds", coursePackageOrderStudent.getStudentId()));
+            return  list;
+    }
+
+
     @RequestMapping("/backStausClass")
     @ResponseBody
     public void backStausClass(@RequestParam("id") Integer id) {
-        MoneyBack byId = moneyBackService.getById(id);
-        String[] split = byId.getIds().split(",");
-        System.out.println("========split===>" + split);
-        List<TCoursePackagePayment> id1 = paymentService.list(new QueryWrapper<TCoursePackagePayment>().in("id", split));
-        for (TCoursePackagePayment o : id1) {
-            o.setStatus(1);
-            o.setAppUserId(null);
-        }
-        paymentService.updateBatchById(id1);
+//        MoneyBack byId = moneyBackService.getById(id);
+//        String[] split = byId.getIds().split(",");
+//        System.out.println("========split===>" + split);
+//        List<CoursePackageOrderStudent> id1 = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().in("id", split));
+//        for (CoursePackageOrderStudent o : id1) {
+//            o.setStatus(1);
+//            o.setAppUserId(null);
+//        }
+//        coursePackageOrderStudentService.updateBatchById(id1);
     }
 
     @RequestMapping("/cancel")
@@ -453,7 +512,7 @@
             Integer appUserId = orinPay.getAppUserId();
             Integer appUserId1 = studentPay.getAppUserId();
             if (appUserId.compareTo(appUserId1) != 0) {
-                courseCounsum.setReason("课时赠送");
+                courseCounsum.setReason("赠课");
             } else {
                 courseCounsum.setReason("课时转移");
             }
@@ -471,7 +530,7 @@
             CourseCounsum courseCounsum1 = new CourseCounsum();
             courseCounsum1.setInsertTime(new Date());
             if (appUserId.compareTo(appUserId1) != 0) {
-                courseCounsum1.setReason("课时赠送");
+                courseCounsum1.setReason("赠课");
             } else {
                 courseCounsum1.setReason("课时转移");
             }
@@ -513,7 +572,15 @@
             calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
             to.setUseTime(calendar.getTime());
             orderStudentService.save(to);
+            if(null == student.getValidity()){
+                student.setValidity(calendar.getTime());
+            }else if(student.getValidity().getTime() < calendar.getTime().getTime()){
+                student.setValidity(calendar.getTime());
+            }
+            studentClient.frozen(student);
 
+
+            Integer laveClassHours1 = orinPay.getLaveClassHours();
             Integer appUserId = orinPay.getAppUserId();
             orinPay.setLaveClassHours(0);
             orinPay.setAppUserId(null);
@@ -523,8 +590,8 @@
 
             CourseCounsum courseCounsum = new CourseCounsum();
             courseCounsum.setInsertTime(new Date());
-            courseCounsum.setReason("课时赠送");
-            courseCounsum.setNum(orinPay.getLaveClassHours());
+            courseCounsum.setReason("赠课");
+            courseCounsum.setNum(laveClassHours1);
             courseCounsum.setChangeType(0);
             courseCounsum.setPaymentId(orinPay.getId());
             counsumService.save(courseCounsum);
@@ -532,8 +599,8 @@
 
             CourseCounsum courseCounsum1 = new CourseCounsum();
             courseCounsum1.setInsertTime(new Date());
-            courseCounsum1.setReason("课时赠送");
-            courseCounsum1.setNum(orinPay.getLaveClassHours());
+            courseCounsum1.setReason("赠课");
+            courseCounsum1.setNum(laveClassHours1);
             courseCounsum1.setChangeType(1);
             courseCounsum1.setPaymentId(to.getId());
             counsumService.save(courseCounsum1);
@@ -591,7 +658,9 @@
                 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();
+
+                Student student = studentClient.queryStudentById(coursePackageOrderStudent.getStudentId());
+                Date useTime = student.getValidity();
 
                 for (int i = 0; i < num; i++) {
                     Date time = calendar.getTime();
@@ -716,133 +785,136 @@
     @RequestMapping(value = "/toHoli", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
     @ResponseBody
     public String toHoli(@RequestBody ToHoliDto toHoliDto) throws ParseException {
-
-        String[] ids = toHoliDto.getIds();
-        List<String> strings = new ArrayList<>();
-
-
-        for (String id : ids) {
-            //扣除课时
-            TCoursePackagePayment payment = paymentService.getById(id);
-            System.out.println("=====byId=========" + payment);
-
-
-            Integer laveClassHours = payment.getLaveClassHours();
-
-            Integer classNum = toHoliDto.getClassNum();
-            Integer totalClassHours = payment.getTotalClassHours();
-            Student student = studentClient.queryStudentById(payment.getStudentId());
-
-            if (laveClassHours < classNum) {
-                strings.add(student.getName());
-                continue;
+        String[] stuIds = toHoliDto.getIds();
+        //查询出学员ids对应的棵树,判断剩余课时数是否够
+        List<CoursePackageOrderStudent> list = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", toHoliDto.getClassId()).in("studentId", stuIds));
+        List<String> notStudent = new ArrayList<>();
+        for (CoursePackageOrderStudent coursePackageOrderStudent : list) {
+            if (coursePackageOrderStudent.getLaveClassHours() < toHoliDto.getClassNum()) {
+                notStudent.add(studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()).getName());
             }
+        }
+        if (!notStudent.isEmpty()) {
+            String notStudentStr = String.join(",", notStudent);
+            return notStudentStr+":课时数不足";
+        }
 
-            Integer laveClassHoursnew = laveClassHours - classNum;
-            Integer totalClassHoursnew = totalClassHours - classNum;
-            payment.setLaveClassHours(laveClassHoursnew);
-            payment.setTotalClassHours(totalClassHoursnew);
-            payment.setAppUserId(null);
-//            payment.setStatus(3);
+        for (String stuId : stuIds) {
+            Student student = studentClient.queryStudentById(Integer.valueOf(stuId));
 
-            paymentService.updateById(payment);
+            // 扣除 原来的课时数
+        // 添加购买课时 paytyoe为7
+        // 排课可期  判断课程时间段  添加排课表  添加上课记录表
+        // 找到原来的课包 扣课时
+//        CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(toHoliDto.getId());
+        CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId",toHoliDto.getId()).eq("studentId",stuId));
 
-            //获取student信息
+        TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
+        TCoursePackage coursePackage1 = coursePackageService.getById(toHoliDto.getClassId());
+        //判断剩余课时是否已经全部进行排课,如果排课需要删除已经排好的记录
+        List<CoursePackageScheduling> list1 = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
+                .eq("studentId", coursePackageOrderStudent.getStudentId()).eq("status", 1)
+                .eq("type", 1).orderByDesc("classDate"));
+        //已经排课但没有使用的课时数量
+        int number = list1.size() * coursePackage.getNeedNum();
+        Integer laveClassHours1 = coursePackageOrderStudent.getLaveClassHours();
+        laveClassHours1 -= number;
+        //需要购买使用的课时数
+        Integer num = toHoliDto.getClassNum();
+        //需要删除多余的排课记录
+        if(num.compareTo(laveClassHours1) > 0){
+            //课时数差额
+            int number1 = num - laveClassHours1;
+            double o = number1 % coursePackage.getNeedNum();
+            int l = 0;
+            if(0 != o){
+                l = 1;
+            }
+            int n = Double.valueOf(number1 / coursePackage.getNeedNum()).intValue() + l;
+            for (int i = 0; i < n; i++) {
+                CoursePackageScheduling coursePackageScheduling = list1.get(i);
+                coursePackageSchedulingService.deleteById(coursePackageScheduling.getId());
 
-            //新增课时
+                coursePackageStudentService.getBaseMapper().delete(new QueryWrapper<CoursePackageStudent>()
+                        .eq("coursePackageSchedulingId", coursePackageScheduling.getId()));
+            }
+        }
+            coursePackageOrderStudent.setAppUserId(null);
+        coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()-toHoliDto.getClassNum());
+            orderStudentService.updateById(coursePackageOrderStudent);
 
-            TCoursePackagePayment holi = new TCoursePackagePayment();
-            holi.setAppUserId(student.getAppUserId());
-            holi.setStudentId(student.getId());
-            holi.setCoursePackageId(toHoliDto.getClassId());
-            holi.setTotalClassHours(toHoliDto.getClassNum());
-            holi.setLaveClassHours(toHoliDto.getClassNum());
-            holi.setState(1);
-            holi.setInsertTime(new Date());
-            holi.setPayStatus(2);
-            paymentService.save(holi);
-
-
-            CourseCounsum courseCounsum = new CourseCounsum();
-            courseCounsum.setPaymentId(holi.getId());
-            courseCounsum.setChangeType(0);
-            courseCounsum.setNum(classNum);
-            courseCounsum.setInsertTime(new Date());
-            courseCounsum.setReason("报名假期班");
-            courseCounsumService.save(courseCounsum);
-
-            //排假期课
-
-            TCoursePackage tCoursePackage = packageService.getById(toHoliDto.getClassId());
-            String classWeeks = tCoursePackage.getClassWeeks();
+            //上课星期
+            String classWeeks = coursePackage1.getClassWeeks();
             List<Integer> week = week(classWeeks);
-
-            Date today = new Date();
-
-            Date startTime = tCoursePackage.getStartTime();
-            Date endTime = tCoursePackage.getEndTime();
-            LocalDate startDate = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-            LocalDate endDate = endTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-            Period period = Period.between(startDate, endDate);
-            int days = period.getDays() + 1;
-            Integer can = 999;
-            int count = 0;
-            String[] split = tCoursePackage.getClassStartTime().split(",");
-            String[] split1 = tCoursePackage.getClassEndTime().split(",");
+            //上课时段
+            String[] split = coursePackage1.getClassStartTime().split(",");
+            String[] split1 = coursePackage1.getClassEndTime().split(",");
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
             SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
 
+            Date startTime = coursePackage1.getStartTime();
+            Date endTime = coursePackage1.getEndTime();
+            //排课 本周+下周,课时不够扣则直接剩余不排课
             Calendar calendar = Calendar.getInstance();
-            calendar.setTime(startTime);
-            calendar.add(Calendar.DAY_OF_MONTH, -1);
+            //假期开始使用当前时间为起始时间进行排课
+            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();
 
-            Date[] dates = generateDateArray(days, calendar.getTime());
-            for (Date date : dates) {
-                if (count == can) {
+                //判断当天是否在排课星期内
+                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;
                 }
-                int wei = cn.hutool.core.date.DateUtil.dayOfWeek(date) - 1;
-                if (wei == 0) {
-                    wei = 7;
+                for (int j = 0; j < split.length; j++) {
+                    CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+                    coursePackageScheduling.setType(coursePackage1.getType());
+                    coursePackageScheduling.setAppUserId(student.getAppUserId());
+                    coursePackageScheduling.setStudentId(Integer.valueOf(stuId));
+                    coursePackageScheduling.setCoursePackageId(coursePackage1.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(student.getAppUserId());
+                    student1.setStudentId(Integer.valueOf(stuId));
+                    student1.setCoursePackageId(coursePackage1.getId());
+                    student1.setCoursePackagePaymentId(null);
+                    student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+                    student1.setSignInOrNot(1);
+                    student1.setReservationStatus(1);
+                    student1.setInsertTime(new Date());
+                    cpsMapper.insert(student1);
                 }
-                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(toHoliDto.getClassId());
-                        student1.setCoursePackagePaymentId(holi.getId());
-                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                        student1.setSignInOrNot(1);
-                        student1.setReservationStatus(1);
-                        student1.setInsertTime(new Date());
-                        studentService.save(student1);
-                        count++;
-                    }
-                }
+                //增加日期,用于判断
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
             }
 
 
-            System.out.println("保存成功=============》=" + holi);
 
 
+        CourseCounsum courseCounsum = new CourseCounsum();
+        courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
+        courseCounsum.setChangeType(0);
+        courseCounsum.setNum(toHoliDto.getClassNum());
+        courseCounsum.setInsertTime(new Date());
+        courseCounsum.setReason("报名假期班");
+//        courseCounsum.setAppUserId(userId);
+        courseCounsumService.save(courseCounsum);
         }
-        String[] stringArray = strings.toArray(new String[strings.size()]);
 
-        String join = StringUtils.join(stringArray, ",");
-        System.out.println("==========join========" + join);
-        return join;
+        return "报名成功";
 
 
     }
@@ -903,150 +975,149 @@
     @RequestMapping(value = "/toTrans", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
     @ResponseBody
     public String toTrans(@RequestBody ToHoliDto toHoliDto) throws ParseException {
-
-        String[] ids = toHoliDto.getIds();
-        List<String> strings = new ArrayList<>();
-
-
-        for (String id : ids) {
-            //扣除课时
-            TCoursePackagePayment payment = paymentService.getById(id);
-            System.out.println("=====byId=========" + payment);
-
-
-            Integer laveClassHours = payment.getLaveClassHours();
-
-            Integer classNum = toHoliDto.getClassNum();
-            Integer totalClassHours = payment.getTotalClassHours();
-            Student student = studentClient.queryStudentById(payment.getStudentId());
-
-//            if (laveClassHours < classNum){
-//                strings.add(student.getName()); continue;
+        String[] stuIds = toHoliDto.getIds();
+//        //查询出学员ids对应的棵树,判断剩余课时数是否够
+//        List<CoursePackageOrderStudent> list = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", toHoliDto.getClassId()).in("studentId", stuIds));
+//        List<String> notStudent = new ArrayList<>();
+//        for (CoursePackageOrderStudent coursePackageOrderStudent : list) {
+//            if (coursePackageOrderStudent.getLaveClassHours() < toHoliDto.getClassNum()) {
+//                notStudent.add(studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()).getName());
 //            }
-//
-//            Integer laveClassHoursnew = laveClassHours - classNum;
-//            Integer totalClassHoursnew = totalClassHours - classNum;
-            payment.setLaveClassHours(0);
-            payment.setTotalClassHours(0);
-            payment.setAppUserId(null);
+//        }
+//        if (!notStudent.isEmpty()) {
+//            String notStudentStr = String.join(",", notStudent);
+//            return notStudentStr+":课时数不足";
+//        }
 
-            paymentService.updateById(payment);
 
-            //获取student信息
+        //转移课程
+        for (String stuId : stuIds) {
+//            CoursePackageOrderStudent orinPay = orderStudentService.getById(toHoliDto.getId());
+            CoursePackageOrderStudent orinPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>()
+                    .eq("studentId", stuId)
+                    .eq("coursePackageId", toHoliDto.getId()));
+            CoursePackageOrderStudent studentPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>()
+                    .eq("studentId", stuId)
+                    .eq("coursePackageId", toHoliDto.getClassId()));
+            TCoursePackage coursePackage = packageService.getById(toHoliDto.getClassId());
+            if (studentPay != null) {
+                //转移
+                Integer laveClassHours = orinPay.getLaveClassHours();
+                Integer totalClassHours = orinPay.getTotalClassHours();
 
-            //新增课时
+                CourseCounsum courseCounsum = new CourseCounsum();
+                courseCounsum.setInsertTime(new Date());
+                Integer appUserId = orinPay.getAppUserId();
+                Integer appUserId1 = studentPay.getAppUserId();
 
-            TCoursePackagePayment one = paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId()));
+                    courseCounsum.setReason("换课");
 
-            TCoursePackagePayment holi = new TCoursePackagePayment();
-            if (one == null) {
-                holi.setAppUserId(student.getAppUserId());
-                holi.setStudentId(student.getId());
-                holi.setCoursePackageId(toHoliDto.getClassId());
-                holi.setTotalClassHours(laveClassHours);
-                holi.setLaveClassHours(laveClassHours);
-                holi.setState(1);
-                holi.setInsertTime(new Date());
-                holi.setPayStatus(2);
-                holi.setStatus(1);
-                paymentService.save(holi);
 
+                orinPay.setLaveClassHours(0);
+                orinPay.setStatus(3);
+                orinPay.setAppUserId(null);
+                orderStudentService.updateById(orinPay);
+
+                courseCounsum.setNum(laveClassHours);
+                courseCounsum.setChangeType(0);
+                courseCounsum.setPaymentId(orinPay.getId());
+                counsumService.save(courseCounsum);
+
+                CourseCounsum courseCounsum1 = new CourseCounsum();
+                courseCounsum1.setInsertTime(new Date());
+//                if (appUserId.compareTo(appUserId1) != 0) {
+//                    courseCounsum1.setReason("赠课");
+//                } else {
+                    courseCounsum1.setReason("换课");
+//                }
+                courseCounsum1.setNum(laveClassHours);
+                courseCounsum1.setChangeType(1);
+                courseCounsum1.setPaymentId(studentPay.getId());
+                counsumService.save(courseCounsum1);
+
+                schedulingService.addNewCoursePackageScheduling(studentPay.getId(), laveClassHours);
+                //删除原排课数据
+                List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
+                        .eq("type", 1).eq("appUserId", appUserId)
+                        .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId())
+                        .orderByAsc("classDate"));
+                int num = totalClassHours - laveClassHours;
+                for (int i = num; i < coursePackageSchedulings.size(); i++) {
+                    CoursePackageScheduling packageScheduling = coursePackageSchedulings.get(i);
+                    coursePackageSchedulingService.deleteById(packageScheduling.getId());
+                    coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId()));
+                }
             } else {
-                one.setTotalClassHours(one.getTotalClassHours() + laveClassHours);
-                one.setLaveClassHours(one.getLaveClassHours() + laveClassHours);
-                one.setAppUserId(null);
-                paymentService.updateById(one);
-                holi = one;
-            }
-            System.out.println("保存成功=============》=" + holi);
 
+                Integer totalClassHours = orinPay.getTotalClassHours();
+                Integer laveClassHours = orinPay.getLaveClassHours();
+                Student student = studentClient.queryStudentById(Integer.valueOf(stuId));
+                CoursePackageOrderStudent to = new CoursePackageOrderStudent();
+                to.setStudentId(Integer.valueOf(stuId));
+                to.setTotalClassHours(laveClassHours);
+                to.setLaveClassHours(laveClassHours);
+                to.setCoursePackageId(toHoliDto.getClassId());
+                to.setState(1);
+                to.setAppUserId(student.getAppUserId());
+                to.setStatus(1);
+                to.setInsertTime(new Date());
 
-            CourseCounsum courseCounsum = new CourseCounsum();
-            courseCounsum.setPaymentId(holi.getId());
-            courseCounsum.setChangeType(1);
-            courseCounsum.setNum(laveClassHours);
-            courseCounsum.setInsertTime(new Date());
-            courseCounsum.setReason("换课");
-            courseCounsumService.save(courseCounsum);
-
-
-            TCoursePackage tCoursePackage = packageService.getById(toHoliDto.getClassId());
-            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", student.getId()).eq("coursePackageId", toHoliDto.getClassId()));
-            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", student.getId()).eq("coursePackageId", toHoliDto.getClassId()));
-            }
-
-
-            Date today = new Date();
-
-
-            TCoursePackagePayment pay = coursePackagePaymentService.getById(holi.getId());
-            Integer laveClassHours1 = 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 = laveClassHours1 / codeTime;
-
-            for (Date date : dates) {
-                if (count == can) {
-                    break;
+                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);
+                if (null == student.getValidity()) {
+                    student.setValidity(calendar.getTime());
+                } else if (student.getValidity().getTime() < calendar.getTime().getTime()) {
+                    student.setValidity(calendar.getTime());
                 }
-                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(holi.getId());
-                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                        student1.setSignInOrNot(1);
-                        student1.setReservationStatus(1);
-                        student1.setInsertTime(new Date());
-                        cpsMapper.insert(student1);
-                        count++;
-                    }
+                studentClient.frozen(student);
+
+
+                Integer laveClassHours1 = orinPay.getLaveClassHours();
+                Integer appUserId = orinPay.getAppUserId();
+                orinPay.setLaveClassHours(0);
+                orinPay.setAppUserId(null);
+                orinPay.setStatus(3);
+                orderStudentService.updateById(orinPay);
+
+
+                CourseCounsum courseCounsum = new CourseCounsum();
+                courseCounsum.setInsertTime(new Date());
+                courseCounsum.setReason("换课");
+                courseCounsum.setNum(laveClassHours1);
+                courseCounsum.setChangeType(0);
+                courseCounsum.setPaymentId(orinPay.getId());
+                counsumService.save(courseCounsum);
+
+
+                CourseCounsum courseCounsum1 = new CourseCounsum();
+                courseCounsum1.setInsertTime(new Date());
+                courseCounsum1.setReason("换课");
+                courseCounsum1.setNum(laveClassHours1);
+                courseCounsum1.setChangeType(1);
+                courseCounsum1.setPaymentId(to.getId());
+                counsumService.save(courseCounsum1);
+
+                //开始排课
+                addPackageStudent(coursePackage, to.getAppUserId(), to.getStudentId(), to);
+                //删除原排课数据
+                List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
+                        .eq("type", 1).eq("appUserId", appUserId)
+                        .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId())
+                        .orderByAsc("classDate"));
+                int num = totalClassHours - laveClassHours;
+                for (int i = num; i < coursePackageSchedulings.size(); i++) {
+                    CoursePackageScheduling packageScheduling = coursePackageSchedulings.get(i);
+                    coursePackageSchedulingService.deleteById(packageScheduling.getId());
+                    coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId()));
                 }
             }
-
 
         }
-        String[] stringArray = strings.toArray(new String[strings.size()]);
+    return "换课成功";
 
-        String join = StringUtils.join(stringArray, ",");
-        System.out.println("==========join========" + join);
-        return "转课成功";
     }
-
-
 }

--
Gitblit v1.7.1