From fade481769731552d9a16c79c9a5323e6f015b36 Mon Sep 17 00:00:00 2001
From: 44323 <443237572@qq.com>
Date: 星期二, 28 十一月 2023 06:07:11 +0800
Subject: [PATCH] 后台bug修改

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java |   13 
 cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml                                    |   16 
 cloud-server-course/pom.xml                                                                                           |    6 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackageOrderStudent.java          |   96 +++++++++
 cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java                                    |    2 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java                       |  340 ++++++++++++++++++++++++++++++---
 cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java                                       |    2 
 cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js                             |    5 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java                 |   13 +
 cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java                                    |    2 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java               |    9 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java                   |    9 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java                    |    2 
 cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js                                  |   19 -
 cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java                         |    2 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java         |    7 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java                      |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java                   |    2 
 18 files changed, 467 insertions(+), 80 deletions(-)

diff --git a/cloud-server-course/pom.xml b/cloud-server-course/pom.xml
index dd0d09c..20a5b50 100644
--- a/cloud-server-course/pom.xml
+++ b/cloud-server-course/pom.xml
@@ -15,6 +15,12 @@
     <description>课程</description>
     <dependencies>
         <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <version>2.4</version>
+            <classifier>jdk15</classifier>
+        </dependency>
+        <dependency>
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper</artifactId>
             <version>5.2.1</version>
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java
index f21af93..b1482d2 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java
@@ -55,6 +55,19 @@
     public List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList(@RequestBody Integer coursePackageId) {
         return coursePackagePaymentConfigService.list(new QueryWrapper<CoursePackagePaymentConfig>().eq("coursePackageId", coursePackageId));
     }
+    /**
+     * 根据课时规格id获取价格配置
+     *
+     * @param
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/coursePackagePaymentConfig/queryCoursePackagePaymentConfigList1")
+    public List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList1(@RequestBody Integer coursePackagePaymentConfigId) {
+        return coursePackagePaymentConfigService.
+                list(new QueryWrapper<CoursePackagePaymentConfig>()
+                        .eq("id", coursePackagePaymentConfigId));
+    }
 
 
     /**
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 2097da1..7831e10 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;
 
@@ -161,17 +165,15 @@
      */
     @RequestMapping("/base/coursePackagePayment/add")
     public Object addCoursePackagePayment(@RequestBody TCoursePackagePayment packagePayment) {
-
         //校验是否已经报满
         Integer cpId = Integer.valueOf((int) packagePayment.getCoursePackageId());
         Integer integer = coursePackagePaymentService.queryCountNumber(cpId);
-        TCoursePackage course = coursePackageService.getById(packagePayment.getId());
+        TCoursePackage course = coursePackageService.getById(packagePayment.getCoursePackageId());
         if (course.getType() != 3) {
             if (integer + 1 > course.getMaxSubscribeNumber()) {
                 return 5001;
             }
         }
-        // 如果重复购买 累加课时
         CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
         coursePackageOrder.setAppUserId(packagePayment.getAppUserId());
         coursePackageOrder.setStudentIds(String.valueOf(packagePayment.getStudentId()));
@@ -185,29 +187,9 @@
         coursePackageOrder.setInsertTime(new Date());
         coursePackageOrder.setSalesName(packagePayment.getSalesName());
         coursePackageOrderService.save(coursePackageOrder);
-        TCoursePackage byId = coursePackageService.getById(packagePayment.getCoursePackageId());
-        if (byId.getType()==1){
-            CoursePackageOrderStudent coursePackageOrderStudent = new CoursePackageOrderStudent();
-            coursePackageOrderStudent.setAppUserId(packagePayment.getAppUserId());
-            coursePackageOrderStudent.setStudentId(packagePayment.getStudentId());
-            coursePackageOrderStudent.setCoursePackageId(packagePayment.getCoursePackageId());
-            coursePackageOrderStudent.setTotalClassHours(packagePayment.getClassHours());
-            coursePackageOrderStudent.setLaveClassHours(packagePayment.getClassHours());
-            coursePackageOrderStudent.setAbsencesNumber(0);
-            coursePackageOrderStudent.setDropoutsNumber(0);
-            coursePackageOrderStudent.setStatus(1);
-            coursePackageOrderStudent.setState(1);
-            coursePackageOrderStudent.setInsertTime(new Date());
-            coursePackageOrderStudent.setGiftClassHours(packagePayment.getGiftClassHours());
-            // 获取常规课的有效期 计算是哪一天
-            Calendar calendar = Calendar.getInstance();
-            calendar.add(Calendar.DAY_OF_MONTH, byId.getValidDays());
-            Date time = calendar.getTime();
-            coursePackageOrderStudent.setUseTime(time);
-            return coursePackageOrderStudentService.save(coursePackageOrderStudent);
-        }
+
         // 生成排课数据
-        return null;
+        return 200;
 
     }
 
@@ -218,13 +200,95 @@
      */
     @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);
+                    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);
+                    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);
+                }
+            }
+        }
         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;
@@ -245,11 +309,21 @@
                     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());
@@ -262,7 +336,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);
                                 }
                             }
@@ -270,7 +344,6 @@
                     }
                 }
             }
-
             if (re.getPayType() != null) {
                 if (re.getPayType() == 1) {
                     re.setBuyTypeName("微信支付");
@@ -1717,9 +1790,208 @@
         return dateList.toArray(new Date[0]);
     }
 
+    public Integer getGiftClassHours(TCoursePackageDiscount one){
+        // 判断购买时间 是否满足折扣规则
+        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);
@@ -1855,8 +2127,6 @@
                 }
             }
         }
-
-
         // 2.0
         TCourseInfoRecord tCourseInfoRecord = new TCourseInfoRecord();
         tCourseInfoRecord.setUserId(userId);
@@ -1866,8 +2136,6 @@
         tCourseInfoRecord.setTime(new Date());
         tCourseInfoRecord.setType(2);
         appUserClient.addCourseInfoRecord(tCourseInfoRecord);
-
-
     }
 
     @ResponseBody
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 1174608..bae2cab 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
@@ -194,4 +194,6 @@
     private Integer orderId;
     @TableField("giftClassHours")
     private Integer giftClassHours;
+    // 所选课时规格id
+    private Integer coursePackageConfigId;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java
index bddf0c5..6d3ba0b 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java
@@ -15,7 +15,7 @@
 public interface CoursePackagePaymentConfigMapper extends BaseMapper<CoursePackagePaymentConfig> {
     List<CoursePackagePaymentVO> listAll(@Param("query") CoursePackagePaymentQuery query);
 
-    int changeState(@Param("ids") List<Long> ids, @Param("payUserName") String payUserName, @Param("payUserId") Integer payUserId);
+    int changeState(@Param("ids") Long ids, @Param("payUserName") String payUserName, @Param("payUserId") Integer payUserId);
 
     List<RegisterOrderVO> listAllRegister(@Param("query") RegisterOrderQuery query, @Param("sTime") String sTime, @Param("eTime") String eTime, @Param("amount") BigDecimal amount);
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java
index bd6b0e5..1559c5c 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java
@@ -9,7 +9,7 @@
  */
 @Data
 public class CoursePackagePayDTO {
-    private List<String> ids;
+    private String ids;
     private String payUserName;
     // 操作人id
     private Integer userId;
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java
index 55a9003..d0080af 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java
@@ -43,7 +43,7 @@
     private String payUser;
     private String phone;
     // 学员id
-    private Integer studentId;
+    private String studentId;
     private String payStudent;
     private Integer payType;
     private BigDecimal originalPrice;
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 624cee3..de2b00e 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
@@ -130,13 +130,8 @@
 
     @Override
     public int changeState(CoursePackagePayDTO dto) {
-        List<String> ids = dto.getIds();
-        List<Long> list = new ArrayList<>();
-        for (String id : ids) {
-            long value = Long.parseLong(id);
-            list.add(value);
-        }
-        return cpConfigMapper.changeState(list, dto.getPayUserName(), dto.getUserId());
+
+        return cpConfigMapper.changeState(Long.valueOf(dto.getIds()), dto.getPayUserName(), dto.getUserId());
     }
 
     @Override
diff --git a/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml b/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
index 3d9fe23..cce8880 100644
--- a/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
@@ -12,25 +12,23 @@
         <result column="playPaiCoin" property="playPaiCoin"/>
     </resultMap>
     <update id="changeState">
-        update t_course_package_payment set
-        payStatus = 2,payUserName = #{payUserName},payType = 7,payUserId=#{payUserId}
+        update t_course_package_order set
+        payStatus = 2,payUserName = #{payUserName},payType = 7,payUserId=#{payUserId},
+        payUserType = 2
         <where>
-            <if test="ids != null and ids.size()>0">
-                AND t_course_package_payment.id IN
-                <foreach collection="ids" separator="," item="id" open="(" close=")">
-                    #{id}
-                </foreach>
+            <if test="ids!=null and ids!= ''">
+                and t_course_package_order.id = #{ids}
             </if>
         </where>
     </update>
 
     <select id="listAll" resultType="com.dsh.course.model.CoursePackagePaymentVO">
         select
-        t1.id,t1.studentId,t1.payUserType,t1.payStatus,t1.payType,t1.originalPrice,t1.userCouponId,t1.payUserId,t1.giftClassHours,t1.studentId,t1.appUserId,t1.cashPayment,t1.playPaiCoin,
+        t1.id,t1.payUserType,t1.payStatus,t1.payType,t1.originalPrice,t1.userCouponId,t1.payUserId,t1.studentIds as studentId,t1.appUserId,t1.cashPayment,t1.playPaiCoin,
         t1.payUserName as buyTypeName,
         CONCAT(t2.province,t2.city) as provinceAndCity,t2.coursePackageTypeId,t2.storeId,t2.name as coursePackage,
         t3.name as coursePackageType
-        from t_course_package_payment t1
+        from t_course_package_order t1
         left join t_course_package t2 on t1.coursePackageId = t2.id
         left join t_course_package_type t3 on t2.coursePackageTypeId = t3.id
         <where>
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
index 5c5d4e3..ebe104f 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
@@ -1,12 +1,10 @@
 package com.dsh.course.feignClient.course;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.dsh.course.feignClient.course.model.QueryRegistrationRecord;
-import com.dsh.course.feignClient.course.model.QueryWalkInStudentList;
-import com.dsh.course.feignClient.course.model.TCoursePackage;
+import com.dsh.course.feignClient.course.model.*;
 import com.dsh.course.feignClient.course.model.TCoursePackagePayment;
 import com.dsh.guns.modular.system.model.*;
-import com.dsh.guns.modular.system.model.dto.CoursePackage;
+
 import com.dsh.guns.modular.system.util.ResultUtil;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
@@ -112,5 +110,6 @@
     HashMap<String, Object> courseStore(@RequestBody List<Integer> userPt);
 
     @GetMapping("/coursePackagePayment/courseStore/{appUserId}/{coursePackageId}")
-    List<TCoursePackagePayment> getByUserIdAndCoursePackageId(@PathVariable("appUserId") Integer appUserId,@PathVariable("coursePackageId") Integer coursePackageId);
+    List<CoursePackageOrderStudent> getByUserIdAndCoursePackageId
+            (@PathVariable("appUserId") Integer appUserId, @PathVariable("coursePackageId") Integer coursePackageId);
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java
index 8318f02..1c36fca 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java
@@ -37,6 +37,13 @@
      */
     @PostMapping("/coursePackagePaymentConfig/queryCoursePackagePaymentConfigList")
     List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList(Integer coursePackageId);
+    /**
+     * 根据课包id获取价格配置
+     * @param
+     * @return
+     */
+    @PostMapping("/coursePackagePaymentConfig/queryCoursePackagePaymentConfigList1")
+    List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList1(Integer coursePackagePaymentConfigId);
 
 
     /**
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackageOrderStudent.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackageOrderStudent.java
new file mode 100644
index 0000000..b5f4377
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackageOrderStudent.java
@@ -0,0 +1,96 @@
+package com.dsh.course.feignClient.course.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/11/25 11:59
+ */
+@Data
+@TableName("t_course_package_order_student")
+public class CoursePackageOrderStudent {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    /**
+     * 用户id
+     */
+    @TableField("appUserId")
+    private Integer appUserId;
+    /**
+     * 学员id
+     */
+    @TableField("studentId")
+    private Integer studentId;
+    /**
+     * 课包id
+     */
+    @TableField("coursePackageId")
+    private Integer coursePackageId;
+    /**
+     * 总课时
+     */
+    @TableField("totalClassHours")
+    private Integer totalClassHours;
+    /**
+     * 剩余课时
+     */
+    @TableField("laveClassHours")
+    private Integer laveClassHours;
+    /**
+     * 缺课次数
+     */
+    @TableField("absencesNumber")
+    private Integer absencesNumber;
+    /**
+     * 退课课时
+     */
+    @TableField(exist = false)
+    private Integer dropoutsNumber;
+    /**
+     * 课程状态(1=正常,2=已退课)
+     */
+    @TableField("status")
+    private Integer status;
+    /**
+     * 退课时间
+     */
+    @TableField("withdrawalTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date withdrawalTime;
+    /**
+     * 退课凭证
+     */
+    @TableField("certificate")
+    private String certificate;
+    /**
+     * 状态(1=正常,2=冻结,3=删除)
+     */
+    @TableField("state")
+    private Integer state;
+    /**
+     * 添加时间
+     */
+    @TableField("insertTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date insertTime;
+    /**
+     * 赠送课时
+     */
+    @TableField("giftClassHours")
+    private Integer giftClassHours;
+    /**
+     * 课程有效期
+     */
+    @TableField("useTime")
+    private Date useTime;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
index 5b6bc0a..9b70316 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
@@ -135,6 +135,7 @@
         for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
             char c = tCoursePackageDiscount.getContent().charAt(0);
             String value1 = String.valueOf(c);
+
             JSONObject jsonObject ;
             if (value1.equals("[")){
                 jsonObject = JSONObject.fromObject(tCoursePackageDiscount.getContent()
@@ -142,10 +143,10 @@
             }else{
                 jsonObject = JSONObject.fromObject(tCoursePackageDiscount.getContent());
             }
-            // 获取当前课包价格配置
-            Integer coursePackageId1 = tCoursePackagePayment.getCoursePackageId();
-            List<CoursePackagePaymentConfig> coursePackagePaymentConfigs = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(coursePackageId1);
-
+            // 获取所选课时的课包价格配置
+            List<CoursePackagePaymentConfig> coursePackagePaymentConfigs =
+                    coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList1
+                            (tCoursePackagePayment.getCoursePackageConfigId());
             if (coursePackagePaymentConfigs.size()!=0){
                 CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigs.get(0);
                 tCoursePackagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
@@ -174,7 +175,9 @@
                     break;
                 case 2:
                     // 判断当前用户是否已经购买过当前课包
-                    List<com.dsh.course.feignClient.course.model.TCoursePackagePayment> result= coursePackagePaymentClient.getByUserIdAndCoursePackageId(tCoursePackagePayment.getAppUserId(),tCoursePackagePayment.getCoursePackageId());
+                    List<CoursePackageOrderStudent> result=
+                            coursePackagePaymentClient.getByUserIdAndCoursePackageId(tCoursePackagePayment.getAppUserId(),
+                                    tCoursePackagePayment.getCoursePackageId());
                     // 已经购买了
                     if (result.size()!=0){
                         // 会员续课折扣
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java
index f096587..28b00b3 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java
@@ -9,7 +9,7 @@
  */
 @Data
 public class CoursePackagePayDTO {
-    private List<String> ids;
+    private String ids;
     private String payUserName;
     // 操作人id
     private Integer userId;
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java
index be14510..a24303a 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java
@@ -45,7 +45,7 @@
     private String payUser;
     private String phone;
     // 学员id
-    private Integer studentId;
+    private String studentId;
     private String payStudent;
     private Integer payType;
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java
index 58a1646..f6bfdc0 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java
@@ -174,4 +174,6 @@
     private Integer hasHours;
     private BigDecimal laveCashPayment;
     private BigDecimal cashPayment1;
+    // 所选课时规格id
+    private Integer coursePackageConfigId;
 }
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
index aadbb71..c9f6f43 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
@@ -14,7 +14,7 @@
  */
 TQuestion.initColumn = function () {
     return [
-        {field: 'selectItem', checkbox: true},
+        {field: 'selectItem', radio: true},
         {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
         {title: '所在省市', field: 'provinceAndCity', visible: role==1?true:false, align: 'center', valign: 'middle'},
         {title:  '门店名称', field: 'storeName', visible: true, align: 'center', valign: 'middle'},
@@ -538,23 +538,16 @@
 TQuestion.unfreeze = function () {
     if (this.check()) {
         var selected = $('#' + this.id).bootstrapTable('getSelections');
-
         console.log("看看选择")
         console.log(selected)
         const data1 = {
-            ids:[],
+            ids:TQuestion.seItem.id,
             payUserName:""
         };
-        selected.forEach(function(obj) {
-            if (obj.payStatus == 2){
-                Feng.error("订单已支付!不能再手动支付了")
-                return;
-            }
-            var id = "";
-             id = obj.id;
-            console.log(obj.id);
-            data1.ids.push(id);
-        });
+        if (TQuestion.seItem.payStatus == 2){
+            Feng.error("订单已支付!不能再手动支付了")
+            return;
+        }
         console.log(data1)
         $.ajax({
             url: Feng.ctxPath + "/cpPayment/pay",
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
index 53fc429..155328e 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
@@ -260,8 +260,12 @@
         giftClassHours:null,
         useTime:"",
         payUserName:"",
+        coursePackageConfigId:null
     };
     data.appUserId            = appUserId;
+    console.log("我看看规格id")
+    console.log($("#courseTime").val())
+    data.coursePackageConfigId            = $("#courseTime").val();
     data.studentId                = $("#student").val()
     data.coursePackageId       = $("#coursePackageName").val()
     data.cashPayment             = $("#cashPayment").val()
@@ -312,6 +316,7 @@
     var courseTimeId= $("#courseTime").val()
     console.log("看看课时")
     console.log(courseTimeId)
+    data.coursePackageConfigId            = courseTimeId;
     if(typeof courseTimeId === 'undefined'){
         console.log("进入")
         courseTimeId=0;

--
Gitblit v1.7.1