From 3c12858927ce26f277ba758e520c81be599d8df1 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 28 十一月 2023 15:42:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java |  578 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 433 insertions(+), 145 deletions(-)

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 680f6e6..42473f5 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
@@ -16,6 +16,7 @@
 import com.dsh.course.feignclient.other.StoreClient;
 import com.dsh.course.feignclient.other.model.Store;
 import com.dsh.course.mapper.CoursePackageSchedulingMapper;
+import com.dsh.course.mapper.CoursePackageStudentMapper;
 import com.dsh.course.mapper.TCoursePackageMapper;
 import com.dsh.course.model.*;
 import com.dsh.course.model.dto.DiscountJsonDto;
@@ -31,6 +32,7 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import net.sf.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -60,6 +62,8 @@
     @Autowired
     private TCoursePackagePaymentService packagePaymentService;
 
+    @Resource
+    private CoursePackageStudentMapper cpsMapper;
     @Autowired
     private ICoursePackageOrderService coursePackageOrderService;
 
@@ -123,6 +127,8 @@
 
     @Autowired
     private CoursePackageStudentService coursePackageStudentService;
+    @Autowired
+    private TOrderService orderService;
 
     private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
 
@@ -159,124 +165,31 @@
      */
     @RequestMapping("/base/coursePackagePayment/add")
     public Object addCoursePackagePayment(@RequestBody TCoursePackagePayment packagePayment) {
-        packagePayment.setInsertTime(new Date());
-        packagePayment.setInsertTime(new Date());
-        Integer studentId = packagePayment.getStudentId();
-        // 添加学员上课记录
-        CoursePackageStudent coursePackageStudent = new CoursePackageStudent();
-        TCoursePackagePayment one = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", packagePayment.getStudentId())
-                .orderByDesc("insertTime")
-                .last("LIMIT 1"));
-
-        if (one != null) {
-            Integer totalClassHours = one.getTotalClassHours();
-            Integer absencesNumber = one.getAbsencesNumber();
-            // 没有过期
-            if (one.getUseTime().after(new Date())) {
-                if (one.getLaveClassHours() - packagePayment.getClassHours() < 0) {
-                    return 5002;
-                }
-                packagePayment.setTotalClassHours(one.getTotalClassHours());
-                packagePayment.setLaveClassHours(one.getLaveClassHours() - packagePayment.getClassHours());
-                packagePayment.setAbsencesNumber(one.getAbsencesNumber());
+        //校验是否已经报满
+        Integer cpId = Integer.valueOf((int) packagePayment.getCoursePackageId());
+        Integer integer = coursePackagePaymentService.queryCountNumber(cpId);
+        TCoursePackage course = coursePackageService.getById(packagePayment.getCoursePackageId());
+        if (course.getType() != 3) {
+            if (integer + 1 > course.getMaxSubscribeNumber()) {
+                return 5001;
             }
-            packagePayment.setTotalClassHours(packagePayment.getClassHours());
-            packagePayment.setLaveClassHours(packagePayment.getClassHours());
-            packagePayment.setAbsencesNumber(one.getAbsencesNumber());
-        } else {
-            packagePayment.setTotalClassHours(packagePayment.getClassHours());
-            packagePayment.setLaveClassHours(packagePayment.getClassHours());
-            packagePayment.setAbsencesNumber(0);
         }
+        CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
+        coursePackageOrder.setAppUserId(packagePayment.getAppUserId());
+        coursePackageOrder.setStudentIds(String.valueOf(packagePayment.getStudentId()));
+        coursePackageOrder.setCoursePackageId(packagePayment.getCoursePackageId());
+        coursePackageOrder.setClassHours(packagePayment.getClassHours());
+        coursePackageOrder.setOriginalPrice(packagePayment.getOriginalPrice());
+        coursePackageOrder.setCashPayment(packagePayment.getCashPayment());
+        coursePackageOrder.setPlayPaiCoin(packagePayment.getPlayPaiCoin());
+        coursePackageOrder.setPayStatus(1);
+        coursePackageOrder.setState(1);
+        coursePackageOrder.setInsertTime(new Date());
+        coursePackageOrder.setSalesName(packagePayment.getSalesName());
+        coursePackageOrderService.save(coursePackageOrder);
         // 生成排课数据
-        TCoursePackage coursePackage = tcpService.getById(packagePayment.getCoursePackageId());
-        //生成排课数据
-        try {
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            Date date = sdf1.parse(sdf.format(new Date()) + " 00:00:00");
-            List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";"));
-            String value = coursePackage.getClassStartTime();
-            String value1 = coursePackage.getClassEndTime();
+        return 200;
 
-            String[] star = value.split(",");
-            String[] end = value1.split(",");
-            for (int i = 0; i < star.length; i++) {
-                //                int index = star[i].indexOf(",");
-                //                String result = value.substring(0, index).trim();
-                String classStartTime = star[i];
-                String[] split = classStartTime.split(":");
-                //            String value1 = en;
-                int index1 = value1.indexOf(",");
-                //                String result1 = value.substring(0, index1).trim();
-                String classEndTime = end[i];
-                String[] split1 = classEndTime.split(":");
-                Calendar s = Calendar.getInstance();
-                s.setTime(date);
-                s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
-                s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
-                s.set(Calendar.MINUTE, Integer.valueOf(split[1]));
-                s.set(Calendar.SECOND, 0);
-
-                Calendar e = Calendar.getInstance();
-                e.setTime(date);
-                e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 14);
-                long timeInMillis = e.getTimeInMillis();
-
-                while (true) {
-                    int w = s.get(Calendar.DAY_OF_WEEK);
-                    WeekEnum weekEnum = WeekEnum.getWeekEnum(w);
-                    if (list.contains(weekEnum.getChineseName())) {
-                        Calendar classDate = Calendar.getInstance();
-                        classDate.setTime(s.getTime());
-                        classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
-                        classDate.set(Calendar.MINUTE, Integer.valueOf(split[1]));
-                        classDate.set(Calendar.SECOND, 0);
-
-                        Calendar endDate = Calendar.getInstance();
-                        endDate.setTime(s.getTime());
-                        endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
-                        endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
-                        endDate.set(Calendar.SECOND, 0);
-
-                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                        coursePackageScheduling.setCoursePackageId(coursePackage.getId());
-                        coursePackageScheduling.setClassDate(classDate.getTime());
-                        coursePackageScheduling.setEndDate(endDate.getTime());
-                        coursePackageScheduling.setStatus(1);
-                        coursePackageSchedulingService.save(coursePackageScheduling);
-                        coursePackageStudent.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-
-                        List<CoursePackageScheduling> list1 = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>()
-                                .eq("coursePackageId", coursePackage.getId())
-                                .eq("classDate", classDate.getTime())
-                                .eq("endDate", endDate.getTime()));
-                        if (list1.size() + 1 > coursePackage.getMaxSubscribeNumber()) {
-                            // 当前课包预约人数已满
-                            return 5001;
-                        }
-                    }
-                    s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
-                    if (s.getTimeInMillis() > timeInMillis) {
-                        break;
-                    }
-                }
-            }
-        } catch (ParseException e) {
-            e.printStackTrace();
-        }
-
-        coursePackageStudent.setStudentId(packagePayment.getStudentId());
-        coursePackageStudent.setCoursePackageId(packagePayment.getCoursePackageId());
-
-
-        coursePackageStudent.setSignInOrNot(0);
-        coursePackageStudent.setReservationStatus(1);
-        coursePackageStudent.setInsertTime(new Date());
-        coursePackageStudent.setAppUserId(packagePayment.getAppUserId());
-        packagePaymentService.save(packagePayment);
-        coursePackageStudent.setCoursePackagePaymentId(packagePayment.getId());
-        return coursePackageStudentService.save(coursePackageStudent);
     }
 
     /**
@@ -286,13 +199,98 @@
      */
     @RequestMapping("/base/coursePackagePayment/changeState")
     public Object changeState(@RequestBody CoursePackagePayDTO dto) {
+        String ids = dto.getIds();
+        Long aLong = Long.valueOf(ids);
+        CoursePackageOrder byId1 = coursePackageOrderService.getById(aLong);
+        TCoursePackage byId = coursePackageService.getById(byId1.getCoursePackageId());
+        if (byId.getType()==1){
+            // 如果重复购买 累加课时
+            CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService
+                    .getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", Integer.valueOf(byId1.getStudentIds()))
+                            .eq("coursePackageId", byId1.getCoursePackageId()).eq("status", 1).eq("state", 1));
+            if (null == coursePackageOrderStudent) {
+                coursePackageOrderStudent = new CoursePackageOrderStudent();
+                coursePackageOrderStudent.setAppUserId(byId1.getAppUserId());
+                coursePackageOrderStudent.setStudentId(Integer.valueOf(byId1.getStudentIds()));
+                coursePackageOrderStudent.setCoursePackageId(byId1.getCoursePackageId());
+                coursePackageOrderStudent.setTotalClassHours(byId1.getClassHours());
+                coursePackageOrderStudent.setLaveClassHours(byId1.getClassHours());
+                coursePackageOrderStudent.setAbsencesNumber(0);
+                coursePackageOrderStudent.setStatus(1);
+                coursePackageOrderStudent.setState(1);
+                coursePackageOrderStudent.setInsertTime(new Date());
+                // 判断这个订单购买的是哪一个课时规格
+                CoursePackagePaymentConfig one1 = icppcService.getOne(new QueryWrapper<CoursePackagePaymentConfig>()
+                        .eq("coursePackageId", byId.getId())
+                        .eq("classHours", byId1.getClassHours()));
 
+                // 判断当前购买的课包有没有赠送课时
+                TCoursePackageDiscount one = tcpdService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackageId", byId.getId())
+                        .eq("type", 4).eq("auditStatus", 2).eq("status", 1)
+                        .eq("coursePackagePaymentConfigId",one1.getId()));
+                if (one!=null){
+                    Integer giftClassHours = getGiftClassHours(one,null);
+                    coursePackageOrderStudent.setGiftClassHours(giftClassHours);
+                    coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours()+giftClassHours);
+                    coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()+giftClassHours);
+                }else{
+                    coursePackageOrderStudent.setGiftClassHours(0);
+                }
+                Integer validDays = byId.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 studentId = Integer.valueOf(byId1.getStudentIds());
+                //开始排课
+                addPackageStudent1(byId, byId1.getAppUserId(), studentId, coursePackageOrderStudent);
+            } else {
+                Date useTime = coursePackageOrderStudent.getUseTime();
+                coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + byId1.getClassHours());
+                coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + byId1.getClassHours());
+                Integer validDays = byId.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());
+                // 判断这个订单购买的是哪一个课时规格
+                CoursePackagePaymentConfig one1 = icppcService.getOne(new QueryWrapper<CoursePackagePaymentConfig>()
+                        .eq("coursePackageId", byId.getId())
+                        .eq("classHours", byId1.getClassHours()));
+                // 判断当前购买的课包有没有赠送课时
+                TCoursePackageDiscount one = tcpdService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackageId", byId.getId())
+                        .eq("type", 4).eq("auditStatus", 2).eq("status", 1)
+                        .eq("coursePackagePaymentConfigId",one1.getId()));
+                if (one!=null){
+                    Integer giftClassHours = getGiftClassHours(one,null);
+                    coursePackageOrderStudent.setGiftClassHours(giftClassHours);
+                }else{
+                    coursePackageOrderStudent.setGiftClassHours(0);
+                }
+                // 获取常规课的有效期 计算是哪一天
+                Calendar calendar9 = Calendar.getInstance();
+                calendar9.add(Calendar.DAY_OF_MONTH, byId.getValidDays());
+                Date time = calendar9.getTime();
+                coursePackageOrderStudent.setUseTime(time);
+                coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
+                Integer studentId = Integer.valueOf(byId1.getStudentIds());
+                //中间断课,没有连续续费的情况需要重新排课
+                if (useTime.compareTo(new Date()) < 0) {
+                    addPackageStudent1(byId, byId1.getAppUserId(), studentId, coursePackageOrderStudent);
+                }
+            }
+        }
+            if(byId.getType() == 2){
+                addPackageStudent1(byId, byId1.getAppUserId(), Integer.valueOf(byId1.getStudentIds()), null);
+            }
         return packagePaymentService.changeState(dto);
     }
 
     @GetMapping("/coursePackagePayment/courseStore/{appUserId}/{coursePackageId}")
-    public List<TCoursePackagePayment> getByUserIdAndCoursePackageId(@PathVariable("appUserId") Integer appUserId, @PathVariable("coursePackageId") Integer coursePackageId) {
-        List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
+    public List<CoursePackageOrderStudent> getByUserIdAndCoursePackageId(@PathVariable("appUserId") Integer appUserId, @PathVariable("coursePackageId") Integer coursePackageId) {
+        List<CoursePackageOrderStudent> list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                 .eq("appUserId", appUserId)
                 .eq("coursePackageId", coursePackageId));
         return list;
@@ -307,17 +305,46 @@
         List<CoursePackagePaymentVO> res = packagePaymentService.listAll(query);
         List<CoursePackagePaymentVO> result = new ArrayList<>();
         for (CoursePackagePaymentVO re : res) {
+            // 判断这条记录有没有赠送课时
+            Integer coursePackageId = re.getCoursePackageId();
+            Integer classHours = re.getClassHours();
+            CoursePackagePaymentConfig one = icppcService.getOne(new QueryWrapper<CoursePackagePaymentConfig>()
+                    .eq("coursePackageId", coursePackageId)
+                    .eq("classHours", classHours));
+            if (one!=null){
+                TCoursePackageDiscount one1 = discountService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackageId", coursePackageId)
+                        .eq("coursePackagePaymentConfigId", one.getId())
+                        .eq("auditStatus",2).eq("status",1).eq("type",4));
+                if (one1 == null){
+                    re.setGiftClassHours(0);
+                }else{
+                    Integer giftClassHours = getGiftClassHours(one1,re.getInsertTime());
+                    re.setGiftClassHours(giftClassHours);
+                }
+            }else{
+                re.setGiftClassHours(0);
+            }
             if (re.getCashPayment() == null) {
                 if (re.getPlayPaiCoin() != null) {
                     String value = String.valueOf(re.getPlayPaiCoin());
                     re.setCashPayment(new BigDecimal(value));
                 }
             }
-
             Store store = storeClient.queryStoreById(re.getStoreId());
             TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId());
-            Student student = studentClient.queryStudentById(re.getStudentId());
-            re.setPayStudent(student.getName());
+            String studentId = re.getStudentId();
+            String[] split = studentId.split(",");
+            StringBuilder stringBuilder = new StringBuilder("");
+
+            for (String s : split) {
+                Student student = studentClient.queryStudentById(Integer.valueOf(s));
+                stringBuilder.append(student.getName()+",");
+            }
+            String string = stringBuilder.toString();
+            if (string.length() > 0) {
+                String stringWithoutLastCharacter = string.substring(0, string.length() - 1);
+                re.setPayStudent(stringWithoutLastCharacter);
+            }
             re.setPayUser(appUser.getName());
             re.setPhone(appUser.getPhone());
             re.setStoreName(store.getName());
@@ -330,7 +357,7 @@
                         } else {
                             List<Student> students = studentClient.queryStudentListByName(query.getPayStudent());
                             for (Student student1 : students) {
-                                if (student.getName().equals(student1.getName())) {
+                                if (string.contains(student1.getName())) {
                                     result.add(re);
                                 }
                             }
@@ -338,7 +365,6 @@
                     }
                 }
             }
-
             if (re.getPayType() != null) {
                 if (re.getPayType() == 1) {
                     re.setBuyTypeName("微信支付");
@@ -366,7 +392,7 @@
                     if (discountService.list(new QueryWrapper<TCoursePackageDiscount>()
                             .eq("coursePackageId", re.getCoursePackageId()).eq("auditStatus", 2)).size() > 0) {
                         re.setBuyType(3);
-                        re.setDiscountAmount(re.getOriginalPrice().subtract(re.getPayMoney()));
+                        re.setDiscountAmount(re.getOriginalPrice().subtract(re.getCashPayment()));
                     } else {
                         re.setBuyType(2);
                     }
@@ -661,18 +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)
-                .in("studentId", recordTimeRequest.getStuId())
+                .eq("studentId", recordTimeRequest.getStuId())
                 .eq("coursePackageId", recordTimeRequest.getLessionId())
                 .eq("state", 1)
         );
@@ -828,9 +853,6 @@
         }
         return videoVos;
     }
-
-
-
 
     @PostMapping("/base/coursePack/allPaymentCourseList")
     @ResponseBody
@@ -1092,7 +1114,6 @@
     }
 
 
-
     /**
      * 已报名课程详情
      */
@@ -1107,7 +1128,7 @@
             @ApiImplicitParam(name = "orderId", value = "订单id", dataType = "int")
 
     })
-    public ResultUtil<CourseDetailsResponse> getRegisteredData(Long coursePayId, String lon, String lat, Integer orderId) {
+    public ResultUtil<CourseDetailsResponse> getRegisteredData(Long coursePayId, String lon, String lat) {
         try {
             Integer appUserId = tokenUtil.getUserIdFormRedis();
             if (null == appUserId) {
@@ -1115,9 +1136,7 @@
             }
             CourseDetailsResponse courseDetailsResponse = packagePaymentService.queryRegisteredCourseDetails(coursePayId, appUserId, lon, lat);
 
-
-
-
+//
 //            if (orderId != null) {
 //                TOrder byId = orderService.getById(orderId);
 //                courseDetailsResponse.setAmount(byId.getPrice());
@@ -1765,9 +1784,265 @@
         return dateList.toArray(new Date[0]);
     }
 
+    public Integer getGiftClassHours(TCoursePackageDiscount one,Date insertTime){
+        if (insertTime!=null){
+            // 判断购买时间 是否满足折扣规则
+            char c = one.getContent().charAt(0);
+            String value1 = String.valueOf(c);
+            JSONObject jsonObject ;
+            if (value1.equals("[")){
+                jsonObject = JSONObject.fromObject(one.getContent()
+                        .substring(1,one.getContent().length() - 1));
+            }else{
+                jsonObject = JSONObject.fromObject(one.getContent());
+            }
+            // 赠送课时 判断当前课包有没有赠送课时
+            String weeks = jsonObject.getString("weeks");
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(insertTime);
+            // 获取星期几,星期日是1,星期一是2,以此类推
+            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
+            // 将星期日(Calendar定义为1)转换为7
+            if (dayOfWeek == Calendar.SUNDAY) {
+                dayOfWeek = 7;
+            } else {
+                // 其他星期减一即可得到1-6的数字表示
+                dayOfWeek -= 1;
+            }
+            // todo
+            if (weeks.contains(String.valueOf(dayOfWeek))){
+                // 限时折扣判断是否在有效期
+                try {
+                    // 判断当日时间是否能享受到折扣
+                    String startTime = jsonObject.getString("startTime");
+                    String endTime = jsonObject.getString("endTime");
+
+                    // 定义时间格式
+                    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+                    // 解析开始时间和结束时间为Date对象
+                    Date startTime1 = sdf.parse(startTime);
+                    Date endTime1 = sdf.parse(endTime);
+                    Date date1 = new Date();
+                    date1.setHours(startTime1.getHours());
+                    date1.setMinutes(startTime1.getMinutes());
+                    date1.setSeconds(startTime1.getSeconds());
+                    Date date2 = new Date();
+                    date2.setHours(endTime1.getHours());
+                    date2.setMinutes(endTime1.getMinutes());
+                    date2.setSeconds(endTime1.getSeconds());
+                    // 检查当前时间是否在开始时间和结束时间之间
+                    if (insertTime.after(date1) && insertTime.before(date2)) {
+                        System.out.println("当前时间在开始时间和结束时间之间。");
+                        String hour = jsonObject.getString("hour");
+                        return Integer.valueOf(hour);
+                    } else {
+                        System.out.println("当前时间不在开始时间和结束时间之间。");
+                        return 0;
+                    }
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        // 判断购买时间 是否满足折扣规则
+        char c = one.getContent().charAt(0);
+        String value1 = String.valueOf(c);
+        JSONObject jsonObject ;
+        if (value1.equals("[")){
+            jsonObject = JSONObject.fromObject(one.getContent()
+                    .substring(1,one.getContent().length() - 1));
+        }else{
+            jsonObject = JSONObject.fromObject(one.getContent());
+        }
+        // 赠送课时 判断当前课包有没有赠送课时
+        String weeks = jsonObject.getString("weeks");
+        // 判断当前周几 是否满足折扣规则
+        // 获取当前日期
+        LocalDate currentDate = LocalDate.now();
+        // 获取当前日期是星期几的数字表示
+        int dayOfWeekAsNumber = currentDate.getDayOfWeek().getValue();
+        if (weeks.contains(String.valueOf(dayOfWeekAsNumber))){
+            // 限时折扣判断是否在有效期
+            try {
+                // 判断当日时间是否能享受到折扣
+                String startTime = jsonObject.getString("startTime");
+                String endTime = jsonObject.getString("endTime");
+                // 获取当前时间
+                Date currentTime = new Date();
+                // 定义时间格式
+                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+                // 解析开始时间和结束时间为Date对象
+                Date startTime1 = sdf.parse(startTime);
+                Date endTime1 = sdf.parse(endTime);
+                Date date1 = new Date();
+                date1.setHours(startTime1.getHours());
+                date1.setMinutes(startTime1.getMinutes());
+                date1.setSeconds(startTime1.getSeconds());
+                Date date2 = new Date();
+                date2.setHours(endTime1.getHours());
+                date2.setMinutes(endTime1.getMinutes());
+                date2.setSeconds(endTime1.getSeconds());
+                // 检查当前时间是否在开始时间和结束时间之间
+                if (currentTime.after(date1) && currentTime.before(date2)) {
+                    System.out.println("当前时间在开始时间和结束时间之间。");
+                    String hour = jsonObject.getString("hour");
+
+                    return Integer.valueOf(hour);
+                } else {
+                    System.out.println("当前时间不在开始时间和结束时间之间。");
+                    return 0;
+                }
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+            return 0;
+    }
+
     @Autowired
     private TCoursePackageService coursePackageService;
+    private void addPackageStudent1(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(time) + " " + split[j]);
+                        Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
+                        coursePackageScheduling.setClassDate(parse);
+                        coursePackageScheduling.setEndDate(parse1);
+                        coursePackageScheduling.setStatus(1);
+                        coursePackageSchedulingService.save(coursePackageScheduling);
+                        CoursePackageStudent student1 = new CoursePackageStudent();
+                        student1.setAppUserId(userId);
+                        student1.setStudentId(sId);
+                        student1.setCoursePackageId(tCoursePackage.getId());
+                        student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
+                        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);
+                }
+            }
+
+            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.save(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();
+        }
+    }
     private void addPackageStudent(Integer courseId, Integer userId, Integer sId, Long paymentId) throws ParseException {
         // 课包
         TCoursePackage tCoursePackage = coursePackageService.getById(courseId);
@@ -1903,8 +2178,6 @@
                 }
             }
         }
-
-
         // 2.0
         TCourseInfoRecord tCourseInfoRecord = new TCourseInfoRecord();
         tCourseInfoRecord.setUserId(userId);
@@ -1914,8 +2187,6 @@
         tCourseInfoRecord.setTime(new Date());
         tCourseInfoRecord.setType(2);
         appUserClient.addCourseInfoRecord(tCourseInfoRecord);
-
-
     }
 
     @ResponseBody
@@ -2083,6 +2354,12 @@
         return packagePaymentService.getById(id);
     }
 
+    @ResponseBody
+    @PostMapping("/coursePackagePayment/queryCoursePackagePaymentById1")
+    public CoursePackageOrderStudent queryCoursePackagePaymentById1(@RequestParam("id") Long id) {
+        return coursePackageOrderStudentService.getById(id);
+    }
+
 
 //    @Autowired
 //    private ICoursePackageOrderStudentService orderStudentService;
@@ -2145,6 +2422,16 @@
         System.out.println("editCoursePackagePayment1====coursePackagePayment" + coursePackagePayment);
 //        coursePackagePayment.setCoursePackageId(null);
         packagePaymentService.updateBytime(coursePackagePayment);
+    }
+
+    @ResponseBody
+    @PostMapping("/coursePackagePayment/editCoursePackagePayment2")
+    public void editCoursePackagePayment2(@RequestBody CoursePackageOrderStudent coursePackageOrderStudent) {
+        System.out.println("editCoursePackagePayment1====coursePackagePayment" + coursePackageOrderStudent);
+//        coursePackagePayment.setCoursePackageId(null);
+//        packagePaymentService.updateBytime(coursePackagePayment);
+
+        coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
     }
 
 
@@ -2477,7 +2764,8 @@
         List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.listOne(userPt);
         int sum = tCoursePackagePayments.stream().mapToInt(TCoursePackagePayment::getTotalClassHours).sum();
         int sum1 = tCoursePackagePayments.stream().mapToInt(TCoursePackagePayment::getLaveClassHours).sum();
-        map.put("allCourse", sum - sum1);
+        // 查询介绍有礼课时数量
+        map.put("allCourse",sum-sum1);
 
         //所有课包
         List<TCoursePackage> coursePackages = tcpService.list();

--
Gitblit v1.7.1