From e825aefcd7285facc06fcb5bf69cdd5afc402b2d Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 08 十二月 2023 16:58:02 +0800
Subject: [PATCH] 11.27,9

---
 cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml                        |    4 
 cloud-server-other/src/main/resources/logback-spring.xml                                                  |    2 
 cloud-server-course/pom.xml                                                                               |    1 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java           |    9 
 cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml                             |   61 ++---
 cloud-server-activity/src/main/resources/logback-spring.xml                                               |    4 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java                  |   14 -
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java |    6 
 cloud-server-other/pom.xml                                                                                |    2 
 cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java               |    4 
 cloud-server-activity/pom.xml                                                                             |    1 
 cloud-server-account/src/main/resources/sharding-jdbc.properties                                          |   13 +
 cloud-server-management/pom.xml                                                                           |    1 
 cloud-server-account/src/main/resources/logback-spring.xml                                                |    2 
 cloud-server-activity/src/main/resources/sharding-jdbc.properties                                         |   13 +
 cloud-server-course/src/main/resources/sharding-jdbc.properties                                           |   13 +
 cloud-server-competition/src/main/resources/sharding-jdbc.properties                                      |   13 +
 cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java                                         |    6 
 cloud-server-competition/pom.xml                                                                          |    1 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java              |  189 ++++++++++------
 cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java                  |    3 
 cloud-server-gateway/pom.xml                                                                              |    1 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/paike.html                               |    4 
 cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java                    |    1 
 cloud-server-account/pom.xml                                                                              |    1 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java     |    7 
 cloud-server-course/src/main/resources/logback-spring.xml                                                 |    2 
 cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java                                  |    2 
 cloud-server-gateway/src/main/resources/logback-spring.xml                                                |    2 
 cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java                                 |    2 
 cloud-server-competition/src/main/resources/logback-spring.xml                                            |    2 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java       |  205 +++++++-----------
 cloud-server-auth/pom.xml                                                                                 |    1 
 cloud-server-auth/src/main/resources/logback-spring.xml                                                   |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java   |   25 ++
 cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderVO.java                               |    2 
 36 files changed, 348 insertions(+), 273 deletions(-)

diff --git a/cloud-server-account/pom.xml b/cloud-server-account/pom.xml
index 50581f7..1fe293d 100644
--- a/cloud-server-account/pom.xml
+++ b/cloud-server-account/pom.xml
@@ -129,6 +129,7 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.3.4.RELEASE</version>
                 <executions>
                     <execution>
                         <goals>
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java b/cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java
index 81fecae..2fae339 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java
@@ -1,6 +1,7 @@
 package com.dsh.account.model.dto;
 
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -107,6 +108,7 @@
     /**
      * 添加时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date insertTime;
     /**
      * 封面图
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
index 1133e92..0f8df47 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
@@ -76,7 +76,7 @@
 
     private String key = "";//微信商户号
 
-    private String callbackPath = "http://221.182.45.100:56666/account";//支付回调网关地址
+    private String callbackPath = "http://8.137.22.229:56666/account";//支付回调网关地址
 
     private String app_cert_path = "C:/cert/alipay/user/app_cert_path.crt";//应用公钥证书路径
 
diff --git a/cloud-server-account/src/main/resources/logback-spring.xml b/cloud-server-account/src/main/resources/logback-spring.xml
index dd3f878..eb725a2 100644
--- a/cloud-server-account/src/main/resources/logback-spring.xml
+++ b/cloud-server-account/src/main/resources/logback-spring.xml
@@ -7,7 +7,7 @@
     <contextName>logback</contextName>
 
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/Users/java/logs"/>
+    <property name="log.path" value="/usr/playpai/server/logs"/>
 
     <!--0. 日志格式和颜色渲染 -->
     <!-- 彩色日志依赖的渲染类 -->
diff --git a/cloud-server-account/src/main/resources/sharding-jdbc.properties b/cloud-server-account/src/main/resources/sharding-jdbc.properties
index 8b2c49d..5542eb0 100644
--- a/cloud-server-account/src/main/resources/sharding-jdbc.properties
+++ b/cloud-server-account/src/main/resources/sharding-jdbc.properties
@@ -11,3 +11,16 @@
 
 
 
+#datasource.names=master0
+#datasource.master0.type=com.alibaba.druid.pool.DruidDataSource
+#datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver
+#datasource.master0.url=jdbc:mysql://127.0.0.1:3306/playpai_account?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
+#datasource.master0.username=root
+#datasource.master0.password=playpai2023!
+#datasource.master0.maxActive=20
+#datasource.master0.maxWait=60000
+#datasource.master0.minIdle=5
+#datasource.master0.initialSize=2
+
+
+
diff --git a/cloud-server-activity/pom.xml b/cloud-server-activity/pom.xml
index f09891d..f9a0ec0 100644
--- a/cloud-server-activity/pom.xml
+++ b/cloud-server-activity/pom.xml
@@ -96,6 +96,7 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.3.4.RELEASE</version>
                 <executions>
                     <execution>
                         <goals>
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java
index 12d5793..a9096e4 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java
@@ -69,6 +69,7 @@
      * 领取时间
      */
     @TableField("insertTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date insertTime;
     /**
      * 现金支付方式(1=微信2支付宝)
diff --git a/cloud-server-activity/src/main/resources/logback-spring.xml b/cloud-server-activity/src/main/resources/logback-spring.xml
index dd3f878..37d854d 100644
--- a/cloud-server-activity/src/main/resources/logback-spring.xml
+++ b/cloud-server-activity/src/main/resources/logback-spring.xml
@@ -7,7 +7,7 @@
     <contextName>logback</contextName>
 
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/Users/java/logs"/>
+    <property name="log.path" value="/usr/playpai/server/logs"/>
 
     <!--0. 日志格式和颜色渲染 -->
     <!-- 彩色日志依赖的渲染类 -->
@@ -223,7 +223,7 @@
             <appender-ref ref="ERROR_FILE"/>
             <appender-ref ref="ALL_FILE"/>
         </root>
-        <logger name="com.dsh.course.mapper" level="error"/>
+        <logger name="com.dsh.course.mapper" level="debug"/>
         <logger name="business-log" level="warn"/>
     </springProfile>
 
diff --git a/cloud-server-activity/src/main/resources/sharding-jdbc.properties b/cloud-server-activity/src/main/resources/sharding-jdbc.properties
index d0f2143..a8273e2 100644
--- a/cloud-server-activity/src/main/resources/sharding-jdbc.properties
+++ b/cloud-server-activity/src/main/resources/sharding-jdbc.properties
@@ -11,4 +11,17 @@
 
 
 
+#datasource.names=master0
+#datasource.master0.type=com.alibaba.druid.pool.DruidDataSource
+#datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver
+#datasource.master0.url=jdbc:mysql://127.0.0.1:3306/playpai_activity?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
+#datasource.master0.username=root
+#datasource.master0.password=playpai2023!
+#datasource.master0.maxActive=20
+#datasource.master0.maxWait=60000
+#datasource.master0.minIdle=5
+#datasource.master0.initialSize=2
+
+
+
 
diff --git a/cloud-server-auth/pom.xml b/cloud-server-auth/pom.xml
index d627d86..057d696 100644
--- a/cloud-server-auth/pom.xml
+++ b/cloud-server-auth/pom.xml
@@ -112,6 +112,7 @@
 			<plugin>
 				<groupId>org.springframework.boot</groupId>
 				<artifactId>spring-boot-maven-plugin</artifactId>
+				<version>2.3.4.RELEASE</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/cloud-server-auth/src/main/resources/logback-spring.xml b/cloud-server-auth/src/main/resources/logback-spring.xml
index b13e9b3..4ad3892 100644
--- a/cloud-server-auth/src/main/resources/logback-spring.xml
+++ b/cloud-server-auth/src/main/resources/logback-spring.xml
@@ -7,7 +7,7 @@
     <contextName>logback</contextName>
 
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/Users/java/logs"/>
+    <property name="log.path" value="/usr/playpai/server/logs"/>
 
     <!--0. 日志格式和颜色渲染 -->
     <!-- 彩色日志依赖的渲染类 -->
diff --git a/cloud-server-competition/pom.xml b/cloud-server-competition/pom.xml
index 1bdab18..81dc2e7 100644
--- a/cloud-server-competition/pom.xml
+++ b/cloud-server-competition/pom.xml
@@ -101,6 +101,7 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.3.4.RELEASE</version>
                 <executions>
                     <execution>
                         <goals>
diff --git a/cloud-server-competition/src/main/resources/logback-spring.xml b/cloud-server-competition/src/main/resources/logback-spring.xml
index dd3f878..eb725a2 100644
--- a/cloud-server-competition/src/main/resources/logback-spring.xml
+++ b/cloud-server-competition/src/main/resources/logback-spring.xml
@@ -7,7 +7,7 @@
     <contextName>logback</contextName>
 
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/Users/java/logs"/>
+    <property name="log.path" value="/usr/playpai/server/logs"/>
 
     <!--0. 日志格式和颜色渲染 -->
     <!-- 彩色日志依赖的渲染类 -->
diff --git a/cloud-server-competition/src/main/resources/sharding-jdbc.properties b/cloud-server-competition/src/main/resources/sharding-jdbc.properties
index 59b5d2e..2346d3e 100644
--- a/cloud-server-competition/src/main/resources/sharding-jdbc.properties
+++ b/cloud-server-competition/src/main/resources/sharding-jdbc.properties
@@ -11,3 +11,16 @@
 
 
 
+#datasource.names=master0
+#datasource.master0.type=com.alibaba.druid.pool.DruidDataSource
+#datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver
+#datasource.master0.url=jdbc:mysql://127.0.0.1:3306/playpai_competition?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
+#datasource.master0.username=root
+#datasource.master0.password=playpai2023!
+#datasource.master0.maxActive=20
+#datasource.master0.maxWait=60000
+#datasource.master0.minIdle=5
+#datasource.master0.initialSize=2
+
+
+
diff --git a/cloud-server-course/pom.xml b/cloud-server-course/pom.xml
index 5b0d712..46b3c21 100644
--- a/cloud-server-course/pom.xml
+++ b/cloud-server-course/pom.xml
@@ -144,6 +144,7 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.3.4.RELEASE</version>
                 <executions>
                     <execution>
                         <goals>
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java
index 0f9a839..bbf7b1d 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java
@@ -115,7 +115,9 @@
             cancelClassesVO.setStartAndEnd(temp);
             TCoursePackagePayment byId = coursePackagePaymentService.getById(cancelClassesVO.getCoursePackagePaymentId());
             cancelClassesVO.setStoreName(storeClient.queryStoreById(cancelClassesVO.getStoreId()).getName());
-            cancelClassesVO.setStudentName(studentClient.queryStudentById(byId.getStudentId()).getName());
+            if(null != byId){
+                cancelClassesVO.setStudentName(studentClient.queryStudentById(byId.getStudentId()).getName());
+            }
             cancelClassesVO.setCoachName(coachClient.queryCoachById(cancelClassesVO.getCoachId()).getName());
 
         }
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 565114e..387fc1d 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
@@ -180,7 +180,6 @@
         coursePackageOrder.setStudentIds(String.valueOf(packagePayment.getStudentId()));
         coursePackageOrder.setCoursePackageId(packagePayment.getCoursePackageId());
         coursePackageOrder.setClassHours(packagePayment.getClassHours());
-        coursePackageOrder.setLaveClassHours(packagePayment.getClassHours());
         coursePackageOrder.setOriginalPrice(packagePayment.getOriginalPrice());
         coursePackageOrder.setCashPayment(packagePayment.getCashPayment());
         coursePackageOrder.setPlayPaiCoin(packagePayment.getPlayPaiCoin());
@@ -471,7 +470,8 @@
                 }
             }
             TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId());
-            Student student = studentClient.queryStudentById(re.getStudentId());
+            String[] split = re.getStudentIds().split(",");
+            Student student = studentClient.queryStudentById(Integer.valueOf(split[0]));
             re.setPayStudent(student.getName());
             re.setPayUser(appUser.getName());
             re.setPhone(appUser.getPhone());
@@ -1962,7 +1962,6 @@
                         coursePackageScheduling.setAppUserId(userId);
                         coursePackageScheduling.setStudentId(sId);
                         coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        coursePackageScheduling.setCoursePackagePaymentIds(coursePackageOrder.getId().toString());
                         Date parse = format1.parse(format.format(time) + " " + split[j]);
                         Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
                         coursePackageScheduling.setClassDate(parse);
@@ -2023,7 +2022,6 @@
                         coursePackageScheduling.setAppUserId(userId);
                         coursePackageScheduling.setStudentId(sId);
                         coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        coursePackageScheduling.setCoursePackagePaymentIds(coursePackageOrder.getId().toString());
                         Date parse = format1.parse(format.format(time) + " " + split[j]);
                         Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
                         coursePackageScheduling.setClassDate(parse);
@@ -2100,7 +2098,6 @@
                         }
                         CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                         coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        coursePackageScheduling.setCoursePackagePaymentIds(coursePackagePayment.getId().toString());
                         Date parse = format1.parse(format.format(date) + " " + split[i1]);
                         Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
                         coursePackageScheduling.setClassDate(parse);
@@ -2164,7 +2161,6 @@
                         }
                         CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                         coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        coursePackageScheduling.setCoursePackagePaymentIds(coursePackagePayment.getId().toString());
                         Date parse = format1.parse(format.format(date) + " " + split[i1]);
                         Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
                         coursePackageScheduling.setClassDate(parse);
@@ -2277,7 +2273,6 @@
                     }
                     CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                     coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                    coursePackageScheduling.setCoursePackagePaymentIds(pay.getId().toString());
                     Date parse = format1.parse(format.format(date) + " " + split[i1]);
                     Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
                     coursePackageScheduling.setClassDate(parse);
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 4d355e3..4e064b4 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
@@ -76,18 +76,7 @@
     @RequestMapping("/bypac")
     @ResponseBody
     public List<Map<String, Object>> bypac(@RequestBody PacQueryDto pacQueryDto) {
-        System.out.println("-====studentQeryDto=========" + pacQueryDto);
-        if (pacQueryDto.getStoreIds() != null && pacQueryDto.getStoreIds().size() != 0) {
-            // 根据门店id 查询课包ids
-            List<Integer> coursePackageIds = coursePackageService.list(new QueryWrapper<TCoursePackage>()
-                    .in("storeId", pacQueryDto.getStoreIds())).stream()
-                    .map(TCoursePackage::getId).collect(Collectors.toList());
-            pacQueryDto.setStoreIds(coursePackageIds);
-        }
         List<Map<String, Object>> pays = paymentService.bypac(pacQueryDto);
-
-        System.out.println("=========pays======" + pays);
-
         return pays;
 
     }
@@ -688,7 +677,6 @@
                         coursePackageScheduling.setAppUserId(userId);
                         coursePackageScheduling.setStudentId(sId);
                         coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        coursePackageScheduling.setCoursePackagePaymentId();
                         Date parse = format1.parse(format.format(time) + " " + split[j]);
                         Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
                         coursePackageScheduling.setClassDate(parse);
@@ -749,7 +737,6 @@
                         coursePackageScheduling.setAppUserId(userId);
                         coursePackageScheduling.setStudentId(sId);
                         coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        coursePackageScheduling.setCoursePackagePaymentId();
                         Date parse = format1.parse(format.format(time) + " " + split[j]);
                         Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
                         coursePackageScheduling.setClassDate(parse);
@@ -879,7 +866,6 @@
                     coursePackageScheduling.setAppUserId(student.getAppUserId());
                     coursePackageScheduling.setStudentId(Integer.valueOf(stuId));
                     coursePackageScheduling.setCoursePackageId(coursePackage1.getId());
-                    coursePackageScheduling.setCoursePackagePaymentId();
                     Date parse = format1.parse(format.format(time) + " " + split[j]);
                     Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
                     coursePackageScheduling.setClassDate(parse);
diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
index b0faf43..1d3a63f 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
@@ -79,7 +79,8 @@
     List<Map<String, Object>> getStudentTotal(@Param("appUserIds") List<Integer> appUserIds, @Param("start") String start,
                                               @Param("end") String end);
 
-    List<Map<String, Object>> pacQueryDto(PacQueryDto pacQueryDto);
+    List<Map<String, Object>> pacQueryDto(@Param("start") String start, @Param("end") String end,
+                                          @Param("storeIds") List<Integer> storeIds, @Param("name") String name);
 
     List<TCoursePackagePayment> listOne(@Param("ids") List<Integer> ids);
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderVO.java b/cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderVO.java
index b30bdee..3de0fba 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderVO.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/RegisterOrderVO.java
@@ -39,7 +39,7 @@
     private String payUser;
     private String phone;
     // 学员id
-    private Integer studentId;
+    private String studentIds;
     private String payStudent;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date insertTime;
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
index 42a3aad..61331ad 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
@@ -216,9 +216,12 @@
                     .eq("status", 1)
                     .eq("type", 1)
             );
-            laveClassHours -= count;
-
             Integer codeTime = coursePackage.getCodeTime();
+            laveClassHours -= count;
+            //剩余数量不足以排课
+            if (laveClassHours.compareTo(codeTime) < 0) {
+                break;
+            }
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             //生成一周的排课数据
             for (int i = 0; i < num; i++) {
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 25b9b3e..6ba5f76 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
@@ -49,6 +49,7 @@
 import javax.annotation.Resource;
 import javax.persistence.criteria.CriteriaBuilder;
 import java.math.BigDecimal;
+import java.math.MathContext;
 import java.math.RoundingMode;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -152,140 +153,96 @@
 
     @Override
     public List<Map<String, Object>> getStudentTotal(StudentQeryDto studentQeryDto) {
-//        String cityCode = studentQeryDto.getCityCode();
-//        String start = studentQeryDto.getStart();
-//        String end = studentQeryDto.getEnd();
-//        //获取用户数据
-//        List<Integer> appUserIds = null;
-//        if(ToolUtil.isNotEmpty(cityCode)){
-//            List<AppUser> appUsers = appuClient.queryAppUserByCityCode(cityCode);
-//            if(appUsers.size() > 0){
-//                appUserIds = appUsers.stream().map(AppUser::getId).collect(Collectors.toList());
-//            }
-//        }
-//        QueryWrapper<CoursePackageStudent> status = new QueryWrapper<CoursePackageStudent>().eq("payStatus", 2).eq("status", 1);
-//        if(null != appUserIds){
-//            status.in("appUserId", appUserIds);
-//        }
-//        List<Map<String, Object>> maps = this.baseMapper.getStudentTotal(appUserIds, studentQeryDto.getStart(), studentQeryDto.getEnd());
-//        List<Map<String, Object>> list = new ArrayList<>();
-//        for (Map<String, Object> objectMap : maps) {
-//            Integer studentId = Integer.valueOf(objectMap.get("studentId").toString());
-//            Integer appUserId = Integer.valueOf(objectMap.get("appUserId").toString());
-//            Integer coursePackageId = Integer.valueOf(objectMap.get("coursePackageId").toString());
-//            Integer number = Integer.valueOf(objectMap.get("number").toString());
-//            Map<String, Object> map = new HashMap<>();
-//            Student student = studentClient.queryStudentById(studentId);
-//            map.put("studentName", student.getName());
-//            AppUser appUser = appuClient.queryAppUser(appUserId);
-//            map.put("province", appUser.getProvince());
-//            map.put("provinceCode", appUser.getProvinceCode());
-//            map.put("city", appUser.getCity());
-//            map.put("cityCode", appUser.getCityCode());
-//            TCoursePackage coursePackage = coursePackageService.getById(coursePackageId);
-//            map.put("courseName", coursePackage.getName());
-//            map.put("totalClassHours", number);
-//            map.put("cashPayment", coursePackageOrder.getCashPayment());
-//            map.put("hasHours", )
-//
-//
-//        }
+        String cityCode = studentQeryDto.getCityCode();
+        //获取用户数据
+        List<Integer> appUserIds = null;
+        if(ToolUtil.isNotEmpty(cityCode)){
+            List<AppUser> appUsers = appuClient.queryAppUserByCityCode(cityCode);
+            if(appUsers.size() > 0){
+                appUserIds = appUsers.stream().map(AppUser::getId).collect(Collectors.toList());
+            }
+        }
+        QueryWrapper<CoursePackageStudent> status = new QueryWrapper<CoursePackageStudent>().eq("payStatus", 2).eq("status", 1);
+        if(null != appUserIds){
+            status.in("appUserId", appUserIds);
+        }
+        List<Map<String, Object>> maps = this.baseMapper.getStudentTotal(appUserIds, studentQeryDto.getStart(), studentQeryDto.getEnd());
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (Map<String, Object> objectMap : maps) {
+            if(null == objectMap.get("studentId")){
+                continue;
+            }
+            Integer studentId = Integer.valueOf(objectMap.get("studentId").toString());
+            Integer appUserId = Integer.valueOf(objectMap.get("appUserId").toString());
+            Integer coursePackageId = Integer.valueOf(objectMap.get("coursePackageId").toString());
+            Integer number = Integer.valueOf(objectMap.get("number").toString());
+            Map<String, Object> map = new HashMap<>();
+            Student student = studentClient.queryStudentById(studentId);
+            if(null == student){
+                continue;
+            }
+            map.put("studentName", student.getName());
+            AppUser appUser = appuClient.queryAppUser(appUserId);
+            if(null == appUser){
+                continue;
+            }
+            map.put("province", appUser.getProvince());
+            map.put("provinceCode", appUser.getProvinceCode());
+            map.put("city", appUser.getCity());
+            map.put("cityCode", appUser.getCityCode());
+            TCoursePackage coursePackage = coursePackageService.getById(coursePackageId);
+            map.put("courseName", coursePackage.getName());
+            map.put("totalClassHours", number);
 
+            CoursePackageOrder coursePackageOrder = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>().eq("appUserId", appUserId)
+                    .eq("coursePackageId", coursePackageId).eq("payStatus", 2).eq("state", 1)
+                    .gt("cashPayment", 0).last(" and studentIds like '%" + studentId + "%' order by insertTime desc limit 0, 1"));
+            Double cashPayment = 0D;
+            if(null != coursePackageOrder && coursePackageOrder.getClassHours() > 0){
+                cashPayment = coursePackageOrder.getCashPayment().divide(new BigDecimal(coursePackageOrder.getClassHours()), new MathContext(2, RoundingMode.HALF_EVEN)).doubleValue();
+            }
+            map.put("cashPayment", cashPayment * number);
 
-//        List<Map<String, Object>> studentTotal = this.baseMapper.getStudentTotal(studentQeryDto);
-//        for (Map<String, Object> student : studentTotal) {
-//            Integer appUserId = (Integer) student.get("appUserId");
-//            AppUser appUser = appuClient.queryAppUser(appUserId);
-//            student.put("province", appUser.getProvince());
-//            student.put("provinceCode", appUser.getProvinceCode());
-//
-//            student.put("city", appUser.getCity());
-//            student.put("cityCode", appUser.getCityCode());
-//
-//            Student studentId = studentClient.queryStudentById((Integer) student.get("studentId"));
-//            student.put("studentName", studentId.getName());
-//            BigDecimal cashPayment = (BigDecimal) student.get("cashPayment");
-//            BigDecimal totalClassHours = (BigDecimal) student.get("totalClassHours");
-//            BigDecimal hasHours = (BigDecimal) student.get("hasHours");
-//            if (cashPayment == null) {
-//                continue;
-//            }
-//            if (totalClassHours.compareTo(BigDecimal.ZERO) == 0) {
-//                totalClassHours = totalClassHours.add(new BigDecimal("1"));
-//            }
-//            BigDecimal hasPayment = cashPayment.divide(totalClassHours, 2, RoundingMode.HALF_UP)
-//                    .multiply(hasHours).setScale(2, RoundingMode.HALF_UP);
-//            student.put("hasPayment", hasPayment);
-//        }
-//
-//        if (studentQeryDto.getCityCode() != null && studentQeryDto.getCityCode() != "") {
-//            String value = studentQeryDto.getCityCode();
-//            boolean allZeros = value.substring(value.length() - 4).endsWith("0000");
-//            System.out.println(allZeros); // Output: true
-//            if (allZeros) {
-//                Iterator<Map<String, Object>> iterator = studentTotal.iterator();
-//                while (iterator.hasNext()) {
-//                    Map<String, Object> student = iterator.next();
-//                    String cityCode = (String) student.get("provinceCode");
-//                    if (!cityCode.equals(studentQeryDto.getCityCode())) {
-//                        iterator.remove(); // Remove the element from the list
-//                    }
-//                }
-//            } else {
-//                Iterator<Map<String, Object>> iterator = studentTotal.iterator();
-//                while (iterator.hasNext()) {
-//                    Map<String, Object> student = iterator.next();
-//                    String cityCode = (String) student.get("cityCode");
-//                    if (!cityCode.equals(studentQeryDto.getCityCode())) {
-//                        iterator.remove(); // Remove the element from the list
-//                    }
-//                }
-//            }
-//        }
-//
-//        if (studentQeryDto.getStudentName() != null && studentQeryDto.getStudentName() != "") {
-//            List<Map<String, Object>> totallike = new ArrayList<>();
-//            for (Map<String, Object> student : studentTotal) {
-//                String studentName = (String) student.get("studentName");
-//                if (studentName.contains(studentQeryDto.getStudentName())) {
-//                    totallike.add(student);
-//                }
-//
-//            }
-//            return totallike;
-//        }
-//        return studentTotal;
-        return null;
+            int count = coursePackageSchedulingService.count(new QueryWrapper<CoursePackageScheduling>().eq("studentId", studentId)
+                    .eq("coursePackageId", coursePackageId).eq("status", 3));
+            map.put("hasHours", count);
+            map.put("hasPayment", count * cashPayment);
+
+            list.add(map);
+        }
+        return list;
     }
 
     @Override
     public List<Map<String, Object>> bypac(PacQueryDto pacQueryDto) {
-        if (pacQueryDto.getCityCode() != null && pacQueryDto.getCityCode() != "") {
-            String value = pacQueryDto.getCityCode();
-            boolean allZeros = value.substring(value.length() - 4).endsWith("0000");
-            System.out.println(allZeros); // Output: true
+        List<Map<String, Object>> maps = this.baseMapper.pacQueryDto(pacQueryDto.getStart(), pacQueryDto.getEnd(), pacQueryDto.getStoreIds(), pacQueryDto.getName());
+        for (Map<String, Object> map : maps) {
+            Integer id = Integer.valueOf(map.get("id").toString());
+            Integer storeId = Integer.valueOf(map.get("storeId").toString());
+            Integer number = Integer.valueOf(map.get("number").toString());
+            Store store = storeClient.queryStoreById(storeId);
+            map.put("store", store.getName());
+            map.put("totalClassHours", number);
 
-            if (allZeros) {
-                pacQueryDto.setProvinceCode(pacQueryDto.getCityCode());
-                pacQueryDto.setCityCode(null);
+            List<CoursePackageOrder> list = coursePackageOrderService.list(new QueryWrapper<CoursePackageOrder>()
+                    .eq("coursePackageId", id).eq("payStatus", 2).eq("state", 1)
+                    .gt("cashPayment", 0));
+
+
+            Double cashPayment = 0D;
+            BigDecimal p = new BigDecimal(0);
+            for (CoursePackageOrder coursePackageOrder : list) {
+                p = p.add(coursePackageOrder.getCashPayment());
             }
-
-        }
-        List<Map<String, Object>> maps = this.baseMapper.pacQueryDto(pacQueryDto);
-
-        if (pacQueryDto.getName() != null && pacQueryDto.getName() != "") {
-            List<Map<String, Object>> totallike = new ArrayList<>();
-            for (Map<String, Object> student : maps) {
-                String studentName = (String) student.get("name");
-                if (studentName.contains(pacQueryDto.getName())) {
-                    totallike.add(student);
-                }
-
+            if(list.size() > 0){
+                cashPayment = p.divide(new BigDecimal(list.size()), new MathContext(2, RoundingMode.HALF_EVEN)).doubleValue();
             }
-            return totallike;
+            map.put("cashPayment", cashPayment * number);
+
+            int count = coursePackageSchedulingService.count(new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", id).eq("status", 3));
+            map.put("hasHours", count);
+            map.put("lavePay", count * cashPayment);
         }
-
-
         return maps;
     }
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
index e148d1e..899fbcf 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -1210,6 +1210,7 @@
                     calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
                     coursePackageOrderStudent.setUseTime(calendar.getTime());
                     coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
+
                     //更新学员课时有效期
                     if(null == student.getValidity()){
                         student.setValidity(calendar.getTime());
@@ -1222,6 +1223,9 @@
 
                     //开始排课
                     addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent, student.getValidity());
+
+
+
                     //课时记录
                     CourseCounsum courseCounsum = new CourseCounsum();
                     courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
@@ -1315,6 +1319,31 @@
                 //上课星期
                 String classWeeks = tCoursePackage.getClassWeeks();
                 List<Integer> week = week(classWeeks);
+                CoursePackageScheduling one = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>()
+                        .eq("studentId", sId)
+                        .eq("coursePackageId", tCoursePackage.getId())
+                        .eq("status", 1)
+                        .orderByDesc("classDate")
+                        .last(" limit 0, 1")
+                );
+                if(null != one){
+                    //先检测是否需要继续进行排课
+                    Calendar calendar1 = Calendar.getInstance();
+                    calendar1.setTime(one.getClassDate());
+                    int day_week1 = calendar1.get(Calendar.DAY_OF_WEEK);
+                    day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1;
+                    int week_of_month = calendar1.get(Calendar.WEEK_OF_MONTH);
+
+                    Calendar calendar2 = Calendar.getInstance();
+                    calendar2.setTime(new Date());
+                    int week_of_month1 = calendar2.get(Calendar.WEEK_OF_MONTH);
+
+                    //最后一次的排课时间不在本周,且是一周的最后一天。(如果是本周则表明已经课时用完了)
+                    if(week.get(week.size() - 1).equals(day_week1) && week_of_month == week_of_month1){
+                        return;
+                    }
+                }
+
                 //上课时段
                 String[] split = tCoursePackage.getClassStartTime().split(",");
                 String[] split1 = tCoursePackage.getClassEndTime().split(",");
@@ -1468,7 +1497,7 @@
 
 
     /**
-     * 课时有效期更新后-更新历史排课数据
+     * 课时有效期更新后-更新历史排课数据(因有效期限制的排课数据,还有剩余课时)
      * @param student
      */
     public void addOldPackageStudent(Student student){
@@ -1493,18 +1522,26 @@
             );
 
             Calendar calendar = Calendar.getInstance();
+            //上课星期
+            String classWeeks = coursePackage.getClassWeeks();
+            List<Integer> week = week(classWeeks);
+
+            Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
+            Integer codeTime = coursePackage.getCodeTime();
+            String classStartTime = coursePackage.getClassStartTime();
+            String classEndTime = coursePackage.getClassEndTime();
+            String format = sdf1.format(one.getClassDate());
+            String time = format.substring(format.indexOf(" ") + 1);
+            String[] split = classStartTime.split(",");
+            String[] split1 = classEndTime.split(",");
+
             if(null == one){
                 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);
             }else{
-                Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
-                Integer codeTime = coursePackage.getCodeTime();
-                String classStartTime = coursePackage.getClassStartTime();
-                String classEndTime = coursePackage.getClassEndTime();
-                String format = sdf1.format(one.getClassDate());
-                String time = format.substring(format.indexOf(" ") + 1);
-                String[] split = classStartTime.split(",");
-                String[] split1 = classEndTime.split(",");
                 int n = Arrays.asList(split).indexOf(time);
                 if(n != split.length - 1){
                     calendar.setTime(one.getClassDate());
@@ -1544,72 +1581,84 @@
                     }
 
                 }else{
-                    calendar.setTime(one.getClassDate());
-                    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_week1 = calendar.get(Calendar.DAY_OF_WEEK);
+                    //先检测是否需要继续进行排课
+                    Calendar calendar1 = Calendar.getInstance();
+                    calendar1.setTime(one.getClassDate());
+                    int day_week1 = calendar1.get(Calendar.DAY_OF_WEEK);
                     day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1;
-                    int num = 8 - day_week1 + 7;
+                    int week_of_month = calendar1.get(Calendar.WEEK_OF_MONTH);
 
-                    //上课星期
-                    String classWeeks = coursePackage.getClassWeeks();
-                    List<Integer> week = week(classWeeks);
+                    Calendar calendar2 = Calendar.getInstance();
+                    calendar2.setTime(new Date());
+                    int week_of_month1 = calendar2.get(Calendar.WEEK_OF_MONTH);
 
-                    for (int i = 0; i < num; i++) {
-                        Date time1 = 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() >= validity.getTime()) {
-                            break;
-                        }
-                        for (int j = 0; j < split.length; j++) {
-                            //剩余数量不足以排课
-                            if (laveClassHours.compareTo(codeTime) < 0) {
-                                break;
-                            }
-
-                            laveClassHours -= codeTime;
-
-                            CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
-                            packageScheduling.setType(coursePackage.getType());
-                            packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
-                            packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId());
-                            packageScheduling.setCoursePackageId(coursePackage.getId());
-                            try {
-                                Date parse = sdf.parse(sdf1.format(time1) + " " + split[j]);
-                                Date parse1 = sdf.parse(sdf1.format(time1) + " " + split1[j]);
-                                packageScheduling.setClassDate(parse);
-                                packageScheduling.setEndDate(parse1);
-                            }catch (Exception e){
-                                e.printStackTrace();
-                            }
-                            packageScheduling.setStatus(1);
-                            coursePackageSchedulingService.save(packageScheduling);
-                            CoursePackageStudent student1 = new CoursePackageStudent();
-                            student1.setAppUserId(coursePackageOrderStudent.getAppUserId());
-                            student1.setStudentId(coursePackageOrderStudent.getStudentId());
-                            student1.setCoursePackageId(coursePackage.getId());
-                            student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
-                            student1.setCoursePackageSchedulingId(packageScheduling.getId());
-                            student1.setSignInOrNot(1);
-                            student1.setReservationStatus(1);
-                            student1.setInsertTime(new Date());
-                            coursePackageStudentMapper.insert(student1);
-                        }
-                        //增加日期,用于判断
-                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                    //最后一次的排课时间不在本周,且是一周的最后一天。(如果是本周则表明已经课时用完了)
+                    if(week.get(week.size() - 1).equals(day_week1) && week_of_month != week_of_month1){
+                        break;
                     }
                 }
+
+                calendar.setTime(one.getClassDate());
+                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;
+            for (int i = 0; i < num; i++) {
+                Date time1 = 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() >= validity.getTime()) {
+                    break;
+                }
+                for (int j = 0; j < split.length; j++) {
+                    //剩余数量不足以排课
+                    if (laveClassHours.compareTo(codeTime) < 0) {
+                        break;
+                    }
+
+                    laveClassHours -= codeTime;
+
+                    CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
+                    packageScheduling.setType(coursePackage.getType());
+                    packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
+                    packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId());
+                    packageScheduling.setCoursePackageId(coursePackage.getId());
+                    try {
+                        Date parse = sdf.parse(sdf1.format(time1) + " " + split[j]);
+                        Date parse1 = sdf.parse(sdf1.format(time1) + " " + split1[j]);
+                        packageScheduling.setClassDate(parse);
+                        packageScheduling.setEndDate(parse1);
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                    packageScheduling.setStatus(1);
+                    coursePackageSchedulingService.save(packageScheduling);
+                    CoursePackageStudent student1 = new CoursePackageStudent();
+                    student1.setAppUserId(coursePackageOrderStudent.getAppUserId());
+                    student1.setStudentId(coursePackageOrderStudent.getStudentId());
+                    student1.setCoursePackageId(coursePackage.getId());
+                    student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
+                    student1.setCoursePackageSchedulingId(packageScheduling.getId());
+                    student1.setSignInOrNot(1);
+                    student1.setReservationStatus(1);
+                    student1.setInsertTime(new Date());
+                    coursePackageStudentMapper.insert(student1);
+                }
+                //增加日期,用于判断
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
             }
         }
     }
diff --git a/cloud-server-course/src/main/resources/logback-spring.xml b/cloud-server-course/src/main/resources/logback-spring.xml
index dd3f878..eb725a2 100644
--- a/cloud-server-course/src/main/resources/logback-spring.xml
+++ b/cloud-server-course/src/main/resources/logback-spring.xml
@@ -7,7 +7,7 @@
     <contextName>logback</contextName>
 
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/Users/java/logs"/>
+    <property name="log.path" value="/usr/playpai/server/logs"/>
 
     <!--0. 日志格式和颜色渲染 -->
     <!-- 彩色日志依赖的渲染类 -->
diff --git a/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml b/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
index d5b02bd..51e74da 100644
--- a/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
@@ -63,11 +63,11 @@
     </select>
     <select id="listAllRegister" resultType="com.dsh.course.model.RegisterOrderVO">
         select
-        t1.id,t1.studentId,t1.payUserType,t1.payStatus,t1.payType,t1.originalPrice,t1.userCouponId,t1.payUserId,t1.giftClassHours,t1.appUserId,t1.cashPayment
+        t1.id,t1.studentIds,t1.payUserType,t1.payStatus,t1.payType,t1.originalPrice,t1.userCouponId,t1.payUserId,t1.appUserId,t1.cashPayment
         as money,t1.playPaiCoin,
         t1.insertTime,
         CONCAT(t2.province,t2.city) as provinceAndCity,t2.coursePackageTypeId,t2.storeId,t2.name as coursePackageName
-        from t_course_package_payment t1
+        from t_course_package_order t1
         left join t_course_package t2 on t1.coursePackageId = t2.id
         <where>
             <if test="query.amount!=null and query.amount!= ''">
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
index 1024ba2..3b96861 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -191,48 +191,37 @@
         group by a.appUserId, a.studentId, a.coursePackageId
     </select>
     <select id="pacQueryDto" resultType="map">
-
-        SELECT
-        coursePackageId,
-        SUM( cashPayment ) AS cashPayment,
-        SUM( totalClassHours ) AS totalClassHours,
-        SUM( totalClassHours - laveClassHours ) AS hasHours,
-        ROUND( SUM(( totalClassHours - laveClassHours ) * ( cashPayment / totalClassHours )), 2 ) AS lavePay,
-        cp.`name` ,
-        cp.province,
-        cp.city,
-        cp.storeId,cp.cityCode,cp.provinceCode,py.insertTime
-        FROM
-        t_course_package_payment py
-        LEFT JOIN t_course_package cp ON py.coursePackageId = cp.id
-        <where>
-            <if test="storeIds != null and storeIds.size()>0">
-                AND cp.id IN
-                <foreach collection="storeIds" separator="," item="id" open="(" close=")">
-                    #{id}
+        select
+        id,
+        name,
+        province,
+        city,
+        storeId,
+        count(1) as number
+        from (
+            select
+            b.id,
+            b.`name`,
+            b.province,
+            b.city,
+            b.storeId
+            from t_course_package_scheduling a
+            left join t_course_package b on (a.coursePackageId = b.id)
+            where a.`status` != 4 and b.status != 4 and b.auditStatus = 2 and b.state = 1
+            <if test="null != storeIds and storeIds.size() > 0">
+                and b.storeId in
+                <foreach collection="storeIds" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
                 </foreach>
             </if>
             <if test="null != start and '' != start and null != end and '' != end">
-                py.insertTime between #{start} and #{end}
+                and DATE_FORMAT(a.classDate, '%Y-%m-%d') between #{start} and #{end}
             </if>
-            <if test="null != cityCode and '' != cityCode">
-                and cityCode =#{cityCode}
-            </if>
-
-            <if test="null != provinceCode and '' != provinceCode">
-                and provinceCode =#{provinceCode}
-            </if>
-
             <if test="null != name and '' != name">
-                and name like CONCAT('%', #{name}, '%')
+                and b.name like CONCAT('%', #{name}, '%')
             </if>
-
-
-        </where>
-        GROUP BY
-        coursePackageId
-
-
+            order by classDate
+        ) as aa group by aa.id, aa.name, aa.province, aa.city, aa.storeId
     </select>
 
     <select id="listOne" resultType="com.dsh.course.entity.TCoursePackagePayment">
diff --git a/cloud-server-course/src/main/resources/sharding-jdbc.properties b/cloud-server-course/src/main/resources/sharding-jdbc.properties
index 73a7a9a..d34043a 100644
--- a/cloud-server-course/src/main/resources/sharding-jdbc.properties
+++ b/cloud-server-course/src/main/resources/sharding-jdbc.properties
@@ -11,3 +11,16 @@
 
 
 
+#datasource.names=master0
+#datasource.master0.type=com.alibaba.druid.pool.DruidDataSource
+#datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver
+#datasource.master0.url=jdbc:mysql://127.0.0.1:3306/playpai_course?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
+#datasource.master0.username=root
+#datasource.master0.password=playpai2023!
+#datasource.master0.maxActive=20
+#datasource.master0.maxWait=60000
+#datasource.master0.minIdle=5
+#datasource.master0.initialSize=2
+
+
+
diff --git a/cloud-server-gateway/pom.xml b/cloud-server-gateway/pom.xml
index 1d58e08..65e4004 100644
--- a/cloud-server-gateway/pom.xml
+++ b/cloud-server-gateway/pom.xml
@@ -52,6 +52,7 @@
 			<plugin>
 				<groupId>org.springframework.boot</groupId>
 				<artifactId>spring-boot-maven-plugin</artifactId>
+				<version>2.3.4.RELEASE</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/cloud-server-gateway/src/main/resources/logback-spring.xml b/cloud-server-gateway/src/main/resources/logback-spring.xml
index e98de73..a7d03bc 100644
--- a/cloud-server-gateway/src/main/resources/logback-spring.xml
+++ b/cloud-server-gateway/src/main/resources/logback-spring.xml
@@ -7,7 +7,7 @@
     <contextName>logback</contextName>
 
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/Users/java/logs"/>
+    <property name="log.path" value="/usr/playpai/server/logs"/>
 
     <!--0. 日志格式和颜色渲染 -->
     <!-- 彩色日志依赖的渲染类 -->
diff --git a/cloud-server-management/pom.xml b/cloud-server-management/pom.xml
index 1da1675..1446650 100644
--- a/cloud-server-management/pom.xml
+++ b/cloud-server-management/pom.xml
@@ -261,6 +261,7 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.3.4.RELEASE</version>
                 <executions>
                     <execution>
                         <goals>
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
index ba075d2..98ae1de 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
@@ -411,6 +411,9 @@
                         IncomeVO temp = new IncomeVO();
                         TAppUser tAppUser = appUserClient.queryById(competition.getAppUserId());
                         Competition competition1 = competitionClient.queryById(competition.getCompetitionId());
+                        if(null == competition1){
+                            continue;
+                        }
                         if (!competition1.getStoreId().equals("")){
                             String[] split = competition1.getStoreId().split(",");
                             List<Integer> list = new ArrayList<>();
@@ -663,6 +666,9 @@
                     IncomeVO temp = new IncomeVO();
                     TAppUser tAppUser = appUserClient.queryById(competition.getAppUserId());
                     Competition competition1 = competitionClient.queryById(competition.getCompetitionId());
+                    if(null == competition1){
+                        continue;
+                    }
                     if (!competition1.getStoreId().equals("")){
                         String[] split = competition1.getStoreId().split(",");
                         List<Integer> list = new ArrayList<>();
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 9fcfc58..0789e41 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
@@ -22,6 +22,7 @@
 import com.dsh.course.service.TGameConfigService;
 import com.dsh.guns.config.UserExt;
 import com.dsh.guns.core.base.controller.BaseController;
+import com.dsh.guns.core.util.ToolUtil;
 import com.dsh.guns.modular.system.controller.util.MD5;
 import com.dsh.guns.modular.system.model.*;
 import com.dsh.guns.modular.system.model.dto.*;
@@ -899,19 +900,37 @@
     @RequestMapping("/bypac")
     @ResponseBody
     public List<Map<String, Object>>bypac(@RequestBody PacQueryDto pacQueryDto) {
-        System.out.println("========ballQueryDto======"+pacQueryDto);
         if (pacQueryDto.getTimes()!=null&& pacQueryDto.getTimes()!=""){
             String[] split = pacQueryDto.getTimes().split(",");
             pacQueryDto.setStart(split[0]);
             pacQueryDto.setEnd(split[1]);
         }
         if (UserExt.getUser().getObjectType() == 2){
-            List<Integer> storeIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", UserExt.getUser().getObjectId()))
+            QueryWrapper<TStore> queryWrapper = new QueryWrapper<TStore>().eq("operatorId", UserExt.getUser().getObjectId()).eq("state", 1);
+            if(ToolUtil.isNotEmpty(pacQueryDto.getCityCode())){
+                queryWrapper.eq("cityCode", pacQueryDto.getCityCode());
+            }
+            if(ToolUtil.isNotEmpty(pacQueryDto.getName())){
+                queryWrapper.like("name", pacQueryDto.getName());
+            }
+            List<Integer> storeIds = storeService.list(queryWrapper)
                     .stream().map(TStore::getId).collect(Collectors.toList());
+            storeIds.add(-1);
+            pacQueryDto.setStoreIds(storeIds);
+        }else{
+            QueryWrapper<TStore> queryWrapper = new QueryWrapper<TStore>().eq("state", 1);
+            if(ToolUtil.isNotEmpty(pacQueryDto.getCityCode())){
+                queryWrapper.eq("cityCode", pacQueryDto.getCityCode());
+            }
+            if(ToolUtil.isNotEmpty(pacQueryDto.getName())){
+                queryWrapper.like("name", pacQueryDto.getName());
+            }
+            List<Integer> storeIds = storeService.list(queryWrapper)
+                    .stream().map(TStore::getId).collect(Collectors.toList());
+            storeIds.add(-1);
             pacQueryDto.setStoreIds(storeIds);
         }
         List<Map<String, Object>>  pays = coursePackageClient.bypac(pacQueryDto);
-        System.out.println("=========getStudentTotal======="+pays);
         return pays;
     }
 
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/paike.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/paike.html
index 0be472f..f1d659e 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/paike.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/paike.html
@@ -62,7 +62,7 @@
                   "columns": [
                     {
                       "name": "studentName",
-                      "label": "学院姓名",
+                      "label": "学员姓名",
                       "type": "text",
                       "id": "u:631a38f8ab8f"
                     },
@@ -232,7 +232,7 @@
                   "perPageField": "",
                   "alwaysShowPagination": true,
                   "loadDataOnce": true,
-                  "perPage": 5,
+                  "perPage": 10,
                   "combineNum": 3
                 }
               ],
diff --git a/cloud-server-other/pom.xml b/cloud-server-other/pom.xml
index 0e4e55e..a0a4e2b 100644
--- a/cloud-server-other/pom.xml
+++ b/cloud-server-other/pom.xml
@@ -113,6 +113,7 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.3.4.RELEASE</version>
                 <executions>
                     <execution>
                         <goals>
@@ -121,7 +122,6 @@
                     </execution>
                 </executions>
             </plugin>
-
         </plugins>
     </build>
     <repositories>
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 e05a3f2..426dcd2 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
@@ -67,6 +67,9 @@
             List<SiteBooking> siteBookings = siteBookingMapper.selectList
                     (new LambdaQueryWrapper<SiteBooking>().eq(SiteBooking::getStatus, 1));
             for (SiteBooking siteBooking : siteBookings) {
+                if(null == siteBooking.getEndTime()){
+                    continue;
+                }
                 long time = siteBooking.getEndTime().getTime();
                 if (System.currentTimeMillis() > time) {
                     siteBooking.setStatus(4);
@@ -87,6 +90,9 @@
             List<SiteBooking> siteBookings = siteBookingMapper.selectList(new LambdaQueryWrapper<SiteBooking>()
                     .eq(SiteBooking::getStatus, 1));
             for (SiteBooking siteBooking : siteBookings) {
+                if(null == siteBooking.getEndTime()){
+                    continue;
+                }
                 long time = siteBooking.getEndTime().getTime();
                 if (System.currentTimeMillis() > time) {
                     siteBooking.setStatus(4);
diff --git a/cloud-server-other/src/main/resources/logback-spring.xml b/cloud-server-other/src/main/resources/logback-spring.xml
index dd3f878..eb725a2 100644
--- a/cloud-server-other/src/main/resources/logback-spring.xml
+++ b/cloud-server-other/src/main/resources/logback-spring.xml
@@ -7,7 +7,7 @@
     <contextName>logback</contextName>
 
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/Users/java/logs"/>
+    <property name="log.path" value="/usr/playpai/server/logs"/>
 
     <!--0. 日志格式和颜色渲染 -->
     <!-- 彩色日志依赖的渲染类 -->

--
Gitblit v1.7.1