From 8050b6f4c162988ff0ae6d3fcc22aa0990ae0e4f Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期五, 01 十二月 2023 18:01:36 +0800
Subject: [PATCH] 12.1

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java     |   40 +
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/trans.html                                 |    3 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java      |   29 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java         |   10 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java                 |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java         |   10 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java                        |  491 +++++++++++++++++---------------
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserListVO.java                         |    2 
 cloud-server-management/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java                      |   12 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java |   65 ++--
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js               |    4 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackageOrder.java                 |  115 +++++++
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java               |    6 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java         |   19 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java        |   26 +
 cloud-server-management/src/main/resources/mapper/UserMapper.xml                                                |    2 
 cloud-server-management/src/main/java/com/dsh/guns/config/AuthFilter.java                                       |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html                       |    6 
 cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java                                               |   22 +
 cloud-server-activity/src/main/resources/mapper/CouponMapper.xml                                                |   16 
 20 files changed, 566 insertions(+), 316 deletions(-)

diff --git a/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
index 91cbbbc..ad7517a 100644
--- a/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
+++ b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
@@ -89,6 +89,7 @@
         where 1 = 1 and distributionMethod = 4
         and auditStatus = 2
         and startTime &lt; now()
+          and state= 1
         <if test="cityCode != null">
             and id in(
             SELECT DISTINCT couponId FROM
@@ -116,8 +117,6 @@
         <if test="state != null">
             and `state` = #{state}
         </if>
-
-
         union all
         SELECT id,
         `name`,
@@ -135,23 +134,12 @@
         from t_coupon
         where 1 = 1 and distributionMethod = 4 and useScope = 1
         and auditStatus = 2
+        and state= 1
         and startTime &lt; now()
         <if test="name != null">
             and `name` like concat('%', #{name}, '%')
         </if>
-        <if test="type != null">
-            and type = #{type}
-        </if>
 
-        <if test="userPopulation != null">
-            and userPopulation = #{userPopulation}
-        </if>
-        <if test="status !=null">
-            and `status` = #{status}
-        </if>
-        <if test="state != null">
-            and `state` = #{state}
-        </if>
 
     </select>
     <select id="queryCouponExamineList" resultType="java.util.Map">
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 7332374..c1453e8 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
@@ -2392,7 +2392,7 @@
     @ResponseBody
     @PostMapping("/coursePackagePayment/CountqueryByClassId")
     public Integer CountqueryByClassId(@RequestBody Integer id) {
-        int coursePackageId = packagePaymentService.count(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", id));
+        int coursePackageId = coursePackageOrderStudentService.count(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", id));
 
 
         return coursePackageId;
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 37dfdee..7b2892a 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
@@ -336,10 +336,15 @@
     }
 
 
+    @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);
@@ -414,6 +419,18 @@
 
         }
         paymentService.updateBatchById(id1);
+    }
+
+
+
+    @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;
     }
 
 
@@ -753,133 +770,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 "报名成功";
 
 
     }
@@ -940,150 +960,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 "转课成功";
     }
-
-
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java b/cloud-server-management/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java
index 52b76d7..9ee8cee 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java
@@ -4,6 +4,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -91,4 +92,15 @@
     @TableField("useTime")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date useTime;
+
+
+    private String name;
+
+    private BigDecimal onePrice;
+
+    private Integer hasHours;
+
+    private BigDecimal restPrice;
+
+    private BigDecimal cashPayment;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java
index 829cf3a..1171eb8 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java
@@ -2,11 +2,13 @@
 
 import com.dsh.course.dto.ClassListDto;
 import com.dsh.course.dto.updateTimeDto;
+import com.dsh.course.entity.CoursePackageOrderStudent;
 import com.dsh.course.feignClient.course.model.TCoursePackagePayment;
 import com.dsh.course.model.MoneyBack;
 import com.dsh.course.model.dto.InsertBackDto;
 import com.dsh.course.model.dto.StudentClassInfo;
 import com.dsh.guns.modular.system.model.CourseCounsum;
+import com.dsh.guns.modular.system.model.CoursePackageOrder;
 import com.dsh.guns.modular.system.model.dto.ConsumeQuery;
 import com.dsh.guns.modular.system.model.dto.SelectDto;
 import com.dsh.guns.modular.system.model.dto.ToClassDto;
@@ -93,7 +95,7 @@
 
 
     @RequestMapping("/courdent/queryByIds")
-    List<TCoursePackagePayment> queryByIds(@RequestParam("ids")String ids);
+    List<CoursePackageOrderStudent> queryByIds(@RequestParam("ids")String ids);
 
 
     @RequestMapping("/courdent/queryCounsum")
@@ -120,4 +122,6 @@
 
     @RequestMapping("/courdent/backStausClass")
     void backStausClass(@RequestParam("id")Integer id);
+    @RequestMapping("/courdent/getOrder")
+    List<CoursePackageOrder> getOrder(@RequestParam("id")Long id);
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/config/AuthFilter.java b/cloud-server-management/src/main/java/com/dsh/guns/config/AuthFilter.java
index fc525bb..c30730c 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/config/AuthFilter.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/config/AuthFilter.java
@@ -31,7 +31,7 @@
     private String[] resource = new String[]{"html", "js", "css","icon","ico","png","img","jpeg","jpg", "gif"};
 
     private String[] releaseApi = new String[]{"/login", "/logout","/systemNotice/querySystemNoticeList","/systemNotice/queryNoReadNoticeNum"
-            ,"/api/hotAddress/queryHotAddress"};
+            ,"/api/hotAddress/queryHotAddress","/kaptcha","/update","/password.html","/getSMSCode"};
 
 
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
index 645571c..e815431 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
@@ -3,6 +3,7 @@
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.course.entity.CoursePackageOrderStudent;
 import com.dsh.course.feignClient.account.*;
 import com.dsh.course.feignClient.account.model.*;
 import com.dsh.course.feignClient.activity.PointMercharsClient;
@@ -485,39 +486,39 @@
         List<MoneyBack> refund = refundCoursePackageClient.getRefund();
 
         for (MoneyBack moneyBack : refund) {
-            List<TCoursePackagePayment> coursePackagePayments =  courseStuddentClient.queryByIds(moneyBack.getIds());
+            List<CoursePackageOrderStudent> coursePackagePayments =  courseStuddentClient.queryByIds(moneyBack.getIds());
             BigDecimal totalAmount = BigDecimal.ZERO;
-            for (TCoursePackagePayment payment : coursePackagePayments){
-                //课包名称
-                TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId());
-                payment.setName(tCoursePackage.getName());
-                payment.setId(Long.valueOf(tCoursePackage.getId()));
-                BigDecimal cashPayment = payment.getCashPayment();
-                if (cashPayment==null){
-                    cashPayment = BigDecimal.ZERO;
-                }
-                Integer totalClassHours = payment.getTotalClassHours();
-                BigDecimal result =  new BigDecimal(0);
-                if (totalClassHours!=0) {
-                    result = cashPayment.divide(BigDecimal.valueOf(totalClassHours), 2, RoundingMode.HALF_UP);
-                }
-                //单价
-                payment.setOnePrice(result);
-                int has = payment.getTotalClassHours() - payment.getLaveClassHours();
-                //剩余课时
-                payment.setHasHours(has);
-                BigDecimal onePrice = payment.getOnePrice();
-                Integer laveClassHours = payment.getLaveClassHours();
-                BigDecimal result1 = onePrice.multiply(BigDecimal.valueOf(laveClassHours));
-                //总价
-                payment.setRestPrice(result1);
-                System.out.println("======="+result1);
-                totalAmount = totalAmount.add(result1);
-                IncomeVO temp = new IncomeVO();
-                temp.setInsertTime(payment.getInsertTime());
-                temp.setAmount(result1);
-                incomeVOS.add(temp);
-            }
+//            for (TCoursePackagePayment payment : coursePackagePayments){
+//                //课包名称
+//                TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId());
+//                payment.setName(tCoursePackage.getName());
+//                payment.setId(Long.valueOf(tCoursePackage.getId()));
+//                BigDecimal cashPayment = payment.getCashPayment();
+//                if (cashPayment==null){
+//                    cashPayment = BigDecimal.ZERO;
+//                }
+//                Integer totalClassHours = payment.getTotalClassHours();
+//                BigDecimal result =  new BigDecimal(0);
+//                if (totalClassHours!=0) {
+//                    result = cashPayment.divide(BigDecimal.valueOf(totalClassHours), 2, RoundingMode.HALF_UP);
+//                }
+//                //单价
+//                payment.setOnePrice(result);
+//                int has = payment.getTotalClassHours() - payment.getLaveClassHours();
+//                //剩余课时
+//                payment.setHasHours(has);
+//                BigDecimal onePrice = payment.getOnePrice();
+//                Integer laveClassHours = payment.getLaveClassHours();
+//                BigDecimal result1 = onePrice.multiply(BigDecimal.valueOf(laveClassHours));
+//                //总价
+//                payment.setRestPrice(result1);
+//                System.out.println("======="+result1);
+//                totalAmount = totalAmount.add(result1);
+//                IncomeVO temp = new IncomeVO();
+//                temp.setInsertTime(payment.getInsertTime());
+//                temp.setAmount(result1);
+//                incomeVOS.add(temp);
+//            }
         }
         // 获取赛事退费记录
         List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery);
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
index f2ee93a..6c65848 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
@@ -40,6 +40,8 @@
 
 import java.math.BigDecimal;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
@@ -977,6 +979,23 @@
                     }
                 }
             }
+
+            if (Integer.parseInt(vo.get("status").toString())==1 ){
+                String dateTimeStr = vo.get("times").toString();
+                String formattedDateTimeStr = dateTimeStr.substring(0, 11) + dateTimeStr.substring(17);
+
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+                try {
+                    Date date = sdf.parse(formattedDateTimeStr);
+                    if (new Date().after(date)){
+                        vo.put("status",4);
+                    }
+
+                    System.out.println(date);
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+            }
         }
         return orders;
     }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java
index fe588af..6dc137d 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java
@@ -25,6 +25,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 部门控制器
@@ -101,7 +102,7 @@
         deptSetPids(dept);
         dept.setObjectType(UserExt.getUser().getObjectType());
         dept.setObjectId(UserExt.getUser().getObjectId());
-
+        dept.setVersion(UserExt.getUser().getId());
         return this.deptService.save(dept);
     }
 
@@ -113,6 +114,13 @@
     @ResponseBody
     public Object list(String condition) {
         List<Map<String, Object>> list = this.deptService.list(condition);
+        if (UserExt.getUser().getObjectType()==2){
+            List<Map<String, Object>> filteredRoles = list.stream()
+                    .filter(role -> role.containsKey("version") && role.get("version").equals(1))
+                    .collect(Collectors.toList());
+            return filteredRoles;
+        }
+
         return super.warpObject(new DeptWarpper(list));
     }
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java
index 8890d96..1842ca3 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java
@@ -32,6 +32,7 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.activation.MailcapCommandMap;
 import javax.annotation.Resource;
@@ -76,10 +77,33 @@
     /**
      * 跳转到修改密码页面
      */
-    @PostMapping("/update")
+    @RequestMapping(value = "/update", method = RequestMethod.GET)
     public String updatePassword(Model model) {
+
+
         return "/password.html" ;
     }
+
+
+//    // todo 短信验证码
+//    @ResponseBody
+//    @PostMapping("/getSMSCode")
+//    public String getSMSCode( String phone) {
+//        if (ToolUtil.isEmpty(phone)) {
+//            return ResultUtil.paranErr("phone");
+//        }
+//        if (ToolUtil.isEmpty(type)) {
+//            return ResultUtil.paranErr("type");
+//        }
+////        try {
+//            String smsCode = appUserClient.getSMSCode(phone);
+//            return smsCode;
+////        } catch (Exception e) {
+////            e.printStackTrace();
+////            return ResultUtil.runErr();
+////        }
+//    }
+
 //    @Autowired
 //    private RedisUtil redisUtil;
 //    /**
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java
index a532422..93c2c75 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java
@@ -31,6 +31,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 角色控制器
@@ -110,6 +111,14 @@
     @ResponseBody
     public Object list(@RequestParam(required = false) String roleName) {
         List<Map<String, Object>> roles = this.roleService.selectRoles(super.getPara("roleName"));
+        //运营商
+        if (UserExt.getUser().getObjectType()==2){
+            List<Map<String, Object>> filteredRoles = roles.stream()
+                    .filter(role -> role.containsKey("version") && role.get("version").equals(UserExt.getUser().getId()))
+                    .collect(Collectors.toList());
+            return super.warpObject(new RoleWarpper(filteredRoles));
+
+        }
         return super.warpObject(new RoleWarpper(roles));
     }
 
@@ -127,6 +136,7 @@
         role.setId(null);
         role.setObjType(UserExt.getUser().getObjectType());
         role.setObjId(UserExt.getUser().getObjectId());
+        role.setVersion(UserExt.getUser().getId());
         this.roleService.save(role);
 
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
index 6abb242..74d03b6 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dsh.course.dto.*;
+import com.dsh.course.entity.CoursePackageOrderStudent;
 import com.dsh.course.entity.EvaluateStudent;
 import com.dsh.course.feignClient.account.AppUserClient;
 import com.dsh.course.feignClient.account.StudentClient;
@@ -198,18 +199,31 @@
         String formattedDate = dateFormat.format(new Date());
         model.addAttribute("reDate", formattedDate);
 
-        List<TCoursePackagePayment> coursePackagePayments =  courseStuddentClient.queryByIds(ids);
+        List<CoursePackageOrderStudent> coursePackagePayments =  courseStuddentClient.queryByIds(ids);
 
         BigDecimal countAll = new BigDecimal(0);
 
-        for (TCoursePackagePayment payment : coursePackagePayments){
+        for (CoursePackageOrderStudent payment : coursePackagePayments){
 
             //课包名称
             TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId());
+             List<CoursePackageOrder> ordes =  courseStuddentClient.getOrder(payment.getId());
+
+
+
             payment.setName(tCoursePackage.getName());
             payment.setId(Long.valueOf(tCoursePackage.getId()));
 
-            BigDecimal cashPayment = payment.getCashPayment();
+
+            BigDecimal cashPayment = BigDecimal.ZERO;
+            for (CoursePackageOrder order : ordes) {
+                BigDecimal cashPayment1 = order.getCashPayment();
+                if (cashPayment1 != null) {
+                    cashPayment = cashPayment.add(cashPayment1);
+                }
+            }
+            payment.setCashPayment(cashPayment);
+//            BigDecimal cashPayment = payment.getCashPayment();
             if (cashPayment==null){
                 cashPayment = BigDecimal.ZERO;
             }
@@ -795,10 +809,10 @@
         System.out.println("========ToHoliDto========="+resultUtil);
 
 
-        if (resultUtil==""||resultUtil==null){
-            return new ResultUtil<>(0,0,"报名成功");
+        if (resultUtil.equals("报名成功")){
+            return new ResultUtil<>(0,0,resultUtil);
         }else{
-        return new ResultUtil<>(0,0,"报名成功,以下学员剩余课时不足"+resultUtil);}
+        return new ResultUtil<>(0,1,resultUtil);}
 
     }
 
@@ -819,12 +833,16 @@
         String resultUtil = courseStuddentClient.toTrans(toHoliDto);
         System.out.println("========ToHoliDto========="+resultUtil);
 
+        if (resultUtil.equals("换课成功")) {
+//            return ResultUtil.success(resultUtil);
+                        return new ResultUtil<>(0,0,resultUtil);
 
-        if (resultUtil==""){
-            return new ResultUtil<>(0,0,"报名成功");
-        }else{
-            return new ResultUtil<>(0,0,"报名成功,以下学员剩余课时不足"+resultUtil);}
-    }
+        }else {
+            return new ResultUtil<>(0,1,resultUtil);}
+        }
+//        if (resultUtil==""){
+//        }else{
+
 
     //赠课
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java
index bf7ce4a..6272ff1 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java
@@ -218,14 +218,20 @@
                 return res;
             case 2:
                 // 运营商查询运营商账号的员工和属于该运营商门店的员工
-                userQuery.setObjectType(2);
-                userQuery.setObjectId(objectId);
-                // 获取属于这个运营商的门店的店长ids
-                List<Integer> storeStaffIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId)
-                        .ne("state", 3)).stream().map(TStore::getStoreStaffId).collect(Collectors.toList());
-                userQuery.setStoreIds(storeStaffIds);
+//                userQuery.setObjectType(2);
+//                userQuery.setObjectId(objectId);
+//                // 获取属于这个运营商的门店的店长ids
+//                List<Integer> storeStaffIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId)
+//                        .ne("state", 3)).stream().map(TStore::getStoreStaffId).collect(Collectors.toList());
+//                userQuery.setStoreIds(storeStaffIds);
+//                List<UserListVO> res1= userService.searchUsers(userQuery);
                 List<UserListVO> res1= userService.searchUsers(userQuery);
-                return res1;
+                List<UserListVO> filteredList = res1.stream()
+                        .filter(vo -> Objects.equals(vo.getVersion(), UserExt.getUser().getId()))
+                        .collect(Collectors.toList());
+
+//                return res1;
+                return filteredList;
             case 3:
                 // 门店只查询门店员工
                 TStore store = storeService.getById(objectId);
@@ -282,7 +288,13 @@
         user.setStatus(ManagerStatus.OK.getCode());
         user.setCreatetime(new Date());
         User objectUser = UserFactory.createUser(user);
-        objectUser.setObjectType(Integer.valueOf(user.getRoleid()));
+
+        if (user.getRoleid().equals("")){
+            objectUser.setObjectType(2);
+        }else {
+            objectUser.setObjectType(Integer.valueOf(user.getRoleid()));
+
+        }
         objectUser.setObjectId(UserExt.getUser().getObjectId());
         objectUser.setRoleid(user.getRoleid());
         objectUser.setAccount(user.getPhone());
@@ -307,6 +319,7 @@
             objectUser.setRoleid("3");
             objectUser.setObjectId(UserExt.getUser().getObjectId());
         }
+        objectUser.setVersion(UserExt.getUser().getId());
         this.userService.save(objectUser);
         return SUCCESS_TIP;
     }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackageOrder.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackageOrder.java
new file mode 100644
index 0000000..1322263
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackageOrder.java
@@ -0,0 +1,115 @@
+package com.dsh.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/11/25 11:45
+ */
+@Data
+@TableName("t_course_package_order")
+public class CoursePackageOrder {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.NONE)
+    private Long id;
+    /**
+     * 业务编号
+     */
+    @TableField("code")
+    private String code;
+    /**
+     * 用户id
+     */
+    @TableField("appUserId")
+    private Integer appUserId;
+    /**
+     * 学员ids
+     */
+    @TableField("studentIds")
+    private String studentIds;
+    /**
+     * 课包id
+     */
+    @TableField("coursePackageId")
+    private Integer coursePackageId;
+    /**
+     * 支付方式(1=微信,2=支付宝,3=玩湃币,4=积分,5=积分+微信,6=积分+支付宝)
+     */
+    @TableField("payType")
+    private Integer payType;
+    /**
+     * 课时数
+     */
+    @TableField("classHours")
+    private Integer classHours;
+    /**
+     * 原价
+     */
+    @TableField("originalPrice")
+    private Double originalPrice;
+    /**
+     * 优惠券id
+     */
+    @TableField("userCouponId")
+    private Long userCouponId;
+    /**
+     * 现金支付价格
+     */
+    @TableField("cashPayment")
+    private BigDecimal cashPayment;
+    /**
+     * 玩湃币价格/积分
+     */
+    @TableField("playPaiCoin")
+    private Integer playPaiCoin;
+    /**
+     * 支付用户类型(1=用户,2=管理员)
+     */
+    @TableField("payUserType")
+    private Integer payUserType;
+    /**
+     * 支付状态(1=待支付,2=已支付)
+     */
+    @TableField("payStatus")
+    private Integer payStatus;
+    /**
+     * 第三方支付流水号
+     */
+    @TableField("orderNumber")
+    private String orderNumber;
+    /**
+     * 支付用户id
+     */
+    @TableField("payUserId")
+    private Integer payUserId;
+    /**
+     * 状态(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("payUserName")
+    private String payUserName;
+    /**
+     * 销售人员(线下购课添加购课订单时使用)
+     */
+    @TableField("salesName")
+    private String salesName;
+
+    private String name;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserListVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserListVO.java
index 74f110c..4a70445 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserListVO.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserListVO.java
@@ -29,4 +29,6 @@
     private String deptName;
     // 状态 1=正常 2=冻结
     private Integer status;
+
+    private Integer version;
 }
diff --git a/cloud-server-management/src/main/resources/mapper/UserMapper.xml b/cloud-server-management/src/main/resources/mapper/UserMapper.xml
index 71b8210..2ade598 100644
--- a/cloud-server-management/src/main/resources/mapper/UserMapper.xml
+++ b/cloud-server-management/src/main/resources/mapper/UserMapper.xml
@@ -116,7 +116,7 @@
 		order by o.id desc
 	</select>
     <select id="searchUsers" resultType="com.dsh.guns.modular.system.model.UserListVO">
-		select t1.id,t1.name ,t1.phone ,t1.avatar,t1.birthday,t1.sex,t1.idCard,t1.status
+		select t1.id,t1.name ,t1.phone ,t1.avatar,t1.birthday,t1.sex,t1.idCard,t1.status,t1.version
 		 ,t2.simplename as deptName from sys_user t1
 		 left join sys_dept t2 on t1.deptid = t2.id
 		<where>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html
index d02be05..3e7bab7 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html
@@ -91,7 +91,8 @@
                   "labelField": "value",
                   "valueField": "id",
                   "size": "md",
-                  "searchable": true
+                  "searchable": true,
+                  "required": true
                 },
                 {
                   "type": "input-text",
@@ -99,7 +100,8 @@
                   "name": "classNum",
                   "id": "u:0333b5c5d05c",
                   "mode": "horizontal",
-                  "size": "md"
+                  "size": "md",
+                  "required": true
                 }
               ],
               "api": {
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/trans.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/trans.html
index f37055a..c403b0b 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/trans.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/trans.html
@@ -92,7 +92,8 @@
                   "labelField": "value",
                   "valueField": "id",
                   "size": "md",
-                  "searchable": true
+                  "searchable": true,
+                  "required": true
                 }
               ],
               "api": {
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js
index 1a7c4d1..6236451 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js
@@ -122,7 +122,7 @@
 RegistrationRecord.holiClass = function () {
     if (this.check1()) {
         var ids = RegistrationRecord.seItem1.map(function(item) {
-            return item.id;
+            return item.studentId;
         }).join(",");
         let index = layer.open({
             type: 2,
@@ -139,7 +139,7 @@
 RegistrationRecord.transClass = function () {
     if (this.check()) {
         var ids = RegistrationRecord.seItem1.map(function(item) {
-            return item.id;
+            return item.studentId;
         }).join(",");
         let index = layer.open({
             type: 2,
diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java
index 4b95453..e05a3f2 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java
@@ -8,6 +8,7 @@
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -29,15 +30,28 @@
     @Scheduled(fixedRate = 60000)
     public void taskMinute() {
         try {
+                Date date = new Date(); // 要增加的日期
+
             List<SiteBooking> siteBookings = siteBookingMapper.
                     selectList(new LambdaQueryWrapper<SiteBooking>().eq(SiteBooking::getStatus, 0));
             for (SiteBooking siteBooking : siteBookings) {
-                long time = siteBooking.getInsertTime().getTime();
-                long l = time + 1800 * 1000;
-                if (System.currentTimeMillis() > l) {
+
+                Date insert = siteBooking.getInsertTime();
+                // 创建 Calendar 对象,并设置为指定的日期
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(insert);
+
+                // 增加 30 分钟
+                calendar.add(Calendar.MINUTE, 30);
+
+                // 获取增加后的日期
+                Date newDate = calendar.getTime();
+
+//                long time = siteBooking.getInsertTime().getTime();
+//                long l = time + 1800 * 1000;
+                if (date.after(newDate)) {
                     siteBooking.setStatus(5);
                     siteBookingMapper.updateById(siteBooking);
-//                    siteBookingMapper.deleteById(siteBooking.getId());
                 }
             }
             //定时修改赛事状态

--
Gitblit v1.7.1