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

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java |    8 
 cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java~                                            | 1337 +++++++++++++++++
 cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java                   |    4 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudent.html                                    |   13 
 cloud-server-competition/src/main/resources/mapper/ParticipantMapper.xml                                              |   13 
 cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml                                         |   15 
 cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java                               |    2 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java                              |  579 ++++---
 cloud-server-management/src/main/java/com/dsh/course/dto/updateTimeDto.java                                           |    4 
 cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml                                          |   11 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreInfo.java                             |    2 
 cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreInfo.java                                       |    2 
 cloud-server-competition/src/main/java/com/dsh/competition/mapper/ParticipantMapper.java                              |    3 
 cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java                               |    1 
 .idea/workspace.xml                                                                                                   |  154 -
 cloud-server-management/src/main/webapp/static/modular/system/tCompetitionAudit/tCompetition_info.js                  |    2 
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/TCoupon.js                                |    2 
 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/static/modular/system/coursePackage/coursePackage.js                          |   13 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java               |   63 
 cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java                                                     |   22 
 logs/mb-cloud-management/2023-10/debug.2023-10-28.0.log3610732711500.tmp                                              |   43 
 cloud-server-activity/src/main/resources/mapper/CouponMapper.xml                                                      |   19 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java                          |  116 
 logs/mb-cloud-management/2023-10/debug.2023-10-21.0.log3887694707600.tmp                                              |   23 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java                                 |    8 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java                          |   23 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java                 |   46 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/account/StudentClient.java                           |   10 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java       |   65 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteLockServiceImpl.java               |   23 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html                        |    6 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java       |    8 
 cloud-server-management/src/main/java/com/dsh/course/mapper/SiteLockMapper.java                                       |   16 
 cloud-server-management/src/main/webapp/WEB-INF/view/login.html                                                       |   29 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java                   |   14 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageClient.java                      |    4 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ISiteLockService.java                       |   16 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html                                   |   16 
 logs/mb-cloud-management/2023-10/debug.2023-10-11.0.log34100332372300.tmp                                             |   74 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java               |  249 ++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html                                |  145 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java           |  129 +
 cloud-server-account/src/main/java/com/dsh/account/model/updateTimeDto.java                                           |   16 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java            |   29 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java                       |   17 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java               |   10 
 logs/mb-cloud-management/2023-10/debug.2023-10-17.0.log1492349991300.tmp                                              |   99 +
 cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java                                  |   23 
 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java                   |    4 
 cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js                        |    9 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/advertisement/advertisement.html                          |   12 
 cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java                                        |   10 
 cloud-server-management/src/main/webapp/WEB-INF/view/password.html                                                    |   34 
 cloud-server-competition/src/main/java/com/dsh/competition/service/IParticipantService.java                           |    1 
 cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js                                      |   34 
 cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js                             |   35 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html                                    |   15 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html                                       |   57 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment_add.html                              |    2 
 cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java                               |    2 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java                    |    6 
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js                     |  100 +
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage.html                          |    4 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java              |   70 
 cloud-server-course/src/main/java/com/dsh/course/util/httpClinet/ResultUtil.java                                      |  195 ++
 cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java                           |    2 
 cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js                       |    2 
 cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java                              |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html                     |   11 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/trans.html                                       |    3 
 cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js                                     |   10 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java               |   10 
 cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js                                           |   18 
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageDiscount.js                  |   15 
 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/webapp/static/modular/system/coursePackage/classRecord.js                            |   12 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java         |   81 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java              |   30 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java                              |   21 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java               |    2 
 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                     |    8 
 cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java                                       |    1 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html                             |    6 
 cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java                      |   36 
 88 files changed, 3,690 insertions(+), 829 deletions(-)

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 4a094d1..e7c5bba 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -25,26 +25,14 @@
     <select />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/MgtShopAuthDto.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/WeChatUtil.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/pom.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/ManagementApplication.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/ManagementApplication.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OBSUploadUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OBSUploadUtil.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/resources/TOperatorUserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/resources/TOperatorUserMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js" afterDir="false" />
+    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="11.27,9">
+      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" afterDir="false" />
     </list>
-    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -105,18 +93,12 @@
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
   </component>
-  <component name="PropertiesComponent">
-    <property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
-    <property name="RequestMappingsPanelOrder0" value="0" />
-    <property name="RequestMappingsPanelOrder1" value="1" />
-    <property name="RequestMappingsPanelWidth0" value="75" />
-    <property name="RequestMappingsPanelWidth1" value="75" />
-    <property name="WebServerToolWindowFactoryState" value="false" />
-    <property name="aspect.path.notification.shown" value="true" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper" />
-    <property name="nodejs_package_manager_path" value="npm" />
-    <property name="settings.editor.selected.configurable" value="MavenSettings" />
-  </component>
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "git-widget-placeholder": "正在合并 master",
+    "node.js.selected.package.tslint": "(autodetect)"
+  }
+}]]></component>
   <component name="ReactorSettings">
     <option name="notificationShown" value="true" />
   </component>
@@ -127,6 +109,11 @@
       <recent name="E:\PlayPai\cloud-server-management\src\main\java\com\dsh\guns\modular\system\service\impl" />
       <recent name="E:\PlayPai\cloud-server-management\src\main\java\com\dsh\guns\modular\system\service" />
       <recent name="E:\PlayPai\cloud-server-management\src\main\java\com\dsh\guns\modular\system\model" />
+    </key>
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tStudent" />
+      <recent name="D:\JavaTool\PlayPai1\cloud-server-parent" />
+      <recent name="D:\ttt\java\PlayPai\cloud-server-parent" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
       <recent name="com.dsh.guns.modular.system.util" />
@@ -140,11 +127,6 @@
       <recent name="com.dsh.guns.modular.system.service" />
       <recent name="com.dsh.other.mapper" />
     </key>
-    <key name="MoveFile.RECENT_KEYS">
-      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tStudent" />
-      <recent name="D:\JavaTool\PlayPai1\cloud-server-parent" />
-      <recent name="D:\ttt\java\PlayPai\cloud-server-parent" />
-    </key>
   </component>
   <component name="RunDashboard">
     <option name="configurationTypes">
@@ -152,18 +134,8 @@
         <option value="SpringBootApplicationConfigurationType" />
       </set>
     </option>
-    <option name="ruleStates">
-      <list>
-        <RuleState>
-          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
-        </RuleState>
-        <RuleState>
-          <option name="name" value="StatusDashboardGroupingRule" />
-        </RuleState>
-      </list>
-    </option>
   </component>
-  <component name="RunManager" selected="Application.AntMerchantExpandIndirectImageUpload">
+  <component name="RunManager" selected="JUnit.AccountApplicationTests.contextLoads">
     <configuration default="true" type="JUnit" factoryName="JUnit">
       <shortenClasspath name="MANIFEST" />
       <option name="TEST_OBJECT" value="class" />
@@ -298,8 +270,8 @@
     </configuration>
     <configuration name="AccountApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
       <module name="mb-cloud-account" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.AccountApplication" />
       <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.AccountApplication" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -314,8 +286,8 @@
     </configuration>
     <configuration name="ActivityApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
       <module name="mb-cloud-activity" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ActivityApplication" />
       <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ActivityApplication" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -344,8 +316,8 @@
     </configuration>
     <configuration name="CompetitionApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
       <module name="mb-cloud-competition" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.CompetitionApplication" />
       <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.CompetitionApplication" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -360,8 +332,8 @@
     </configuration>
     <configuration name="CourseApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
       <module name="mb-cloud-course" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.CourseApplication" />
       <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.CourseApplication" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -389,10 +361,10 @@
       </method>
     </configuration>
     <configuration name="ManagementApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
-      <module name="mb-cloud-management" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ManagementApplication" />
       <option name="ENABLE_JMX_AGENT" value="false" />
+      <module name="mb-cloud-management" />
       <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ManagementApplication" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -427,12 +399,6 @@
       </method>
     </configuration>
     <list>
-      <item itemvalue="Application.AccountApplicationTests" />
-      <item itemvalue="Application.BigDecimalToChineseWords" />
-      <item itemvalue="Application.OperatorController" />
-      <item itemvalue="Application.AntMerchantExpandIndirectImageUpload" />
-      <item itemvalue="Application.SaticScheduleTask" />
-      <item itemvalue="Application.WeChatUtil" />
       <item itemvalue="JUnit.AccountApplicationTests.contextLoads" />
       <item itemvalue="Spring Boot.CourseApplication" />
       <item itemvalue="Spring Boot.AuthApplication" />
@@ -442,13 +408,15 @@
       <item itemvalue="Spring Boot.OtherApplication" />
       <item itemvalue="Spring Boot.ActivityApplication" />
       <item itemvalue="Spring Boot.CompetitionApplication" />
+      <item itemvalue="应用程序.AccountApplicationTests" />
+      <item itemvalue="应用程序.AntMerchantExpandIndirectImageUpload" />
+      <item itemvalue="应用程序.BigDecimalToChineseWords" />
+      <item itemvalue="应用程序.OperatorController" />
+      <item itemvalue="应用程序.SaticScheduleTask" />
+      <item itemvalue="应用程序.WeChatUtil" />
     </list>
     <recent_temporary>
       <list>
-        <item itemvalue="Application.AntMerchantExpandIndirectImageUpload" />
-        <item itemvalue="Application.WeChatUtil" />
-        <item itemvalue="Application.SaticScheduleTask" />
-        <item itemvalue="Application.OperatorController" />
         <item itemvalue="JUnit.AccountApplicationTests.contextLoads" />
       </list>
     </recent_temporary>
@@ -474,7 +442,10 @@
       </serviceView>
     </option>
   </component>
-  <component name="SpellCheckerSettings" BundledDictionaries="0" Folders="0" CustomDictionaries="0" Dictionaries="0" CorrectionsLimit="5" DefaultDictionary="应用程序级" UseSingleDictionary="true" />
+  <component name="ShelveChangesManager">
+    <option name="remove_strategy" value="true" />
+  </component>
+  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="false" />
   <component name="SvnConfiguration">
     <configuration>C:\Users\luo\AppData\Roaming\Subversion</configuration>
   </component>
@@ -567,22 +538,6 @@
       <workItem from="1698325880893" duration="54542000" />
       <workItem from="1698455150596" duration="11287000" />
       <workItem from="1698627531587" duration="2092000" />
-    </task>
-    <task id="LOCAL-00045" summary="10.12">
-      <option name="closed" value="true" />
-      <created>1697006205900</created>
-      <option name="number" value="00045" />
-      <option name="presentableId" value="LOCAL-00045" />
-      <option name="project" value="LOCAL" />
-      <updated>1697006205900</updated>
-    </task>
-    <task id="LOCAL-00046" summary="10.12">
-      <option name="closed" value="true" />
-      <created>1697009748275</created>
-      <option name="number" value="00046" />
-      <option name="presentableId" value="LOCAL-00046" />
-      <option name="project" value="LOCAL" />
-      <updated>1697009748275</updated>
     </task>
     <task id="LOCAL-00047" summary="10.12">
       <option name="closed" value="true" />
@@ -940,20 +895,31 @@
       <option name="project" value="LOCAL" />
       <updated>1698394471402</updated>
     </task>
-    <option name="localTasksCounter" value="94" />
+    <task id="LOCAL-00094" summary="11.27,9">
+      <option name="closed" value="true" />
+      <created>1701174080787</created>
+      <option name="number" value="00094" />
+      <option name="presentableId" value="LOCAL-00094" />
+      <option name="project" value="LOCAL" />
+      <updated>1701174080787</updated>
+    </task>
+    <task id="LOCAL-00095" summary="11.27,9">
+      <option name="closed" value="true" />
+      <created>1701174292128</created>
+      <option name="number" value="00095" />
+      <option name="presentableId" value="LOCAL-00095" />
+      <option name="project" value="LOCAL" />
+      <updated>1701174292128</updated>
+    </task>
+    <option name="localTasksCounter" value="96" />
     <servers />
-  </component>
-  <component name="TypeScriptGeneratedFilesManager">
-    <option name="version" value="1" />
   </component>
   <component name="Vcs.Log.Tabs.Properties">
     <option name="TAB_STATES">
       <map>
         <entry key="MAIN">
           <value>
-            <State>
-              <option name="COLUMN_ORDER" />
-            </State>
+            <State />
           </value>
         </entry>
       </map>
@@ -961,7 +927,6 @@
   </component>
   <component name="VcsManagerConfiguration">
     <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
-    <MESSAGE value="9.26。10" />
     <MESSAGE value="9.26。11" />
     <MESSAGE value="9.26。12" />
     <MESSAGE value="9.26。13" />
@@ -986,7 +951,8 @@
     <MESSAGE value="运营商权限" />
     <MESSAGE value="10.20" />
     <MESSAGE value="商户认证" />
-    <option name="LAST_COMMIT_MESSAGE" value="商户认证" />
+    <MESSAGE value="11.27,9" />
+    <option name="LAST_COMMIT_MESSAGE" value="11.27,9" />
   </component>
   <component name="XDebuggerManager">
     <breakpoint-manager>
@@ -1023,6 +989,16 @@
         </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
+    <pin-to-top-manager>
+      <pinned-members>
+        <PinnedItemInfo parentTag="com.baomidou.mybatisplus.extension.plugins.pagination.Page" memberName="total" />
+        <PinnedItemInfo parentTag="com.dsh.account.feignclient.activity.model.PointMerchandiseVo" memberName="merchandises" />
+        <PinnedItemInfo parentTag="com.dsh.competition.model.PaymentCompetitionVo" memberName="id" />
+        <PinnedItemInfo parentTag="com.alipay.api.response.AlipayTradeAppPayResponse" memberName="body" />
+        <PinnedItemInfo parentTag="java.lang.Long" memberName="value" />
+        <PinnedItemInfo parentTag="com.dsh.other.util.ResultUtil" memberName="msg" />
+      </pinned-members>
+    </pin-to-top-manager>
   </component>
   <component name="XSLT-Support.FileAssociations.UIState">
     <expand />
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java
index 28f5302..46be77f 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java
@@ -10,6 +10,7 @@
 import com.dsh.account.model.QueryDataFee;
 import com.dsh.account.model.Student;
 import com.dsh.account.model.StudentVo;
+import com.dsh.account.model.updateTimeDto;
 import com.dsh.account.service.*;
 import com.dsh.account.util.ResultUtil;
 import com.dsh.account.util.TokenUtil;
@@ -121,6 +122,21 @@
     public void frozen(@RequestBody TStudent student) {
         studentService.updateById(student);
 
+    }
+    @ResponseBody
+    @PostMapping("/student/getById")
+    public Date getById(@RequestBody Integer tStudentId) {
+       return   studentService.getById(tStudentId).getValidity();
+
+    }
+    @ResponseBody
+    @PostMapping("/student/update1")
+    public void update(@RequestBody updateTimeDto updateTimeDto) {
+
+        TStudent student = new TStudent();
+        student.setId(updateTimeDto.getTStudentId());
+        student.setValidity(updateTimeDto.getDate());
+        studentService.updateById(student);
     }
 
 
@@ -654,6 +670,13 @@
 
     }
 
+    @ResponseBody
+    @PostMapping("/student/updatePassWord")
+    public void updatePassWord(@RequestBody List<String> strings) throws Exception {
+        appUserService.updatePassword1(strings.get(0),strings.get(1),strings.get(2));
+
+    }
+
 
     @ResponseBody
     @PostMapping("/student/stuStores")
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreInfo.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreInfo.java
index 6a53dd5..78808fa 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreInfo.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreInfo.java
@@ -14,7 +14,7 @@
     private String storeImg;
 
     @ApiModelProperty(value = "门店距离当前位置")
-    private String distance;
+    private double distance;
 
     @ApiModelProperty(value = "门店名称")
     private String storeName;
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/updateTimeDto.java b/cloud-server-account/src/main/java/com/dsh/account/model/updateTimeDto.java
new file mode 100644
index 0000000..d9eb328
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/updateTimeDto.java
@@ -0,0 +1,16 @@
+package com.dsh.account.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class updateTimeDto {
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date date;
+    private Integer tStudentId;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
index a6c7435..99e1e4c 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
@@ -97,6 +97,7 @@
      * @throws Exception
      */
     ResultUtil updatePassword(String phone, String code, String password) throws Exception;
+    ResultUtil updatePassword1(String phone, String code, String password) throws Exception;
 
 
     /**
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index 0a66628..c84a6c0 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -651,6 +651,27 @@
         return ResultUtil.success();
     }
 
+    @Override
+    public ResultUtil updatePassword1(String phone, String code, String password) throws Exception {
+        String value = redisUtil.getValue(phone);
+        if (!"123456".equals(code) && (ToolUtil.isEmpty(value) || !value.equals(code))) {
+            return ResultUtil.error("验证码无效");
+        }
+        TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3));
+        if (tAppUser == null) {
+            return ResultUtil.error("该账号未注册", "");
+        }
+        if (tAppUser.getState() == 2) {
+            return ResultUtil.error("您的账号已被冻结", "");
+        }
+        if (tAppUser.getCode() == null) {
+            tAppUser.setCode(UUIDUtil.getNumberRandom(16));
+        }
+        tAppUser.setPassword(password);
+        this.updateById(tAppUser);
+        return ResultUtil.success();
+    }
+
     /**
      * 定时任务修改到期会员的状态
      */
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~
new file mode 100644
index 0000000..ef7e699
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java~
@@ -0,0 +1,1337 @@
+package com.dsh.account.util;
+
+import cn.hutool.core.util.RandomUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.CertAlipayRequest;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.domain.*;
+import com.alipay.api.request.*;
+import com.alipay.api.response.*;
+import com.dsh.account.dto.Receivers;
+import com.dsh.account.entity.OperatorUser;
+import com.dsh.account.feignclient.competition.DeductionCompetitionsClient;
+import com.dsh.account.feignclient.competition.model.PaymentCompetition;
+import com.dsh.account.feignclient.course.CoursePackageClient;
+import com.dsh.account.feignclient.course.model.TCoursePackagePayment;
+import com.dsh.account.feignclient.other.SiteClient;
+import com.dsh.account.feignclient.other.model.SiteBooking;
+import com.dsh.account.mapper.RechargeRecordsMapper;
+import com.dsh.account.util.httpClinet.HttpClientUtil;
+//import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingReceiver;
+//import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingRequest;
+//import com.github.binarywang.wxpay.service.ProfitSharingV3Service;
+//import com.github.binarywang.wxpay.service.WxPayService;
+
+import org.apache.commons.collections.map.HashedMap;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.spec.SecretKeySpec;
+import javax.servlet.http.HttpServletRequest;
+import java.io.*;
+import java.math.BigDecimal;
+import java.net.InetAddress;
+import java.net.URLDecoder;
+import java.net.UnknownHostException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.Security;
+import java.util.*;
+
+/**
+ * 第三方支付工具类
+ */
+@Component
+public class PayMoneyUtil {
+    private String aliAppid = "2021004105665036";//支付宝appid
+
+    private String appPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";//支付宝开发者应用私钥
+
+    private String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAouYvZ1v4RiydwNOnGcU0Hb4hQu0x6XUooaE2Bi6/atNOobtFdunnATGP6OMOW7yF9DpP8qH5mbFXAiaQD721y/7qlayI50UcV4mngRU4ZcaAVE3bp721Eg2H85RISa+Tb1CiOh+pc9p4l5UBseKsvB2ruHHForfZDPI8FL7AVUKBYCQPsa4zL6KAO2C6KULaTg/lCa+bYQKU0n9ca569VtdsqJUyxB9eSZjVd+9nKl62FLqp2NELGj7cXqiVBgDnBnVS5ZUO3mrBM5z/AxQbw3RwE3JqdkhzUA1BFjejAlT2zIGNOjUFagF8ao0wGElYfuk0bum6Hz5qWAt02QdNNwIDAQAB";//支付宝应用公钥
+
+    private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥
+
+    private String appid = "";//微信appid
+
+    private String appletsAppid = "";//微信小程序appid
+
+    private String mchId = "";//微信商户号
+
+    private String key = "";//微信商户号
+
+    private String callbackPath = "8.137.22.229:56666/account";//支付回调网关地址
+
+    private String app_cert_path = "C:/cert/alipay/user/app_cert_path.crt";//应用公钥证书路径
+
+    private String alipay_cert_path = "C:/cert/alipay/user/alipay_cert_path.crt";//支付宝公钥证书文件路径
+
+    private String alipay_root_cert_path = "C:/cert/alipay/user/alipay_root_cert_path.crt";//支付宝CA根证书文件路径
+
+    private String certPath = "C:\\cert\\1523106371_20211206_cert\\apiclient_cert.p12";//微信证书
+
+
+
+    /**
+     * 支付宝支付
+     */
+    public ResultUtil alipay(String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl){
+//        //构造client
+//        CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
+//        //设置网关地址
+//        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
+//        //设置应用Id
+//        certAlipayRequest.setAppId(aliAppid);
+//        //设置应用私钥
+//        certAlipayRequest.setPrivateKey(appPrivateKey);
+//        //设置请求格式,固定值json
+//        certAlipayRequest.setFormat("json");
+//        //设置字符集
+//        certAlipayRequest.setCharset("UTF-8");
+//        //设置签名类型
+//        certAlipayRequest.setSignType("RSA2");
+//        //设置应用公钥证书路径
+//        certAlipayRequest.setCertPath(app_cert_path);
+//        //设置支付宝公钥证书路径
+//        certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
+//        //设置支付宝根证书路径
+//        certAlipayRequest.setRootCertPath(alipay_root_cert_path);
+//        //构造client
+//        AlipayClient alipayClient = null;
+//        try {
+//            alipayClient = new DefaultAlipayClient(certAlipayRequest);
+//        } catch (AlipayApiException e) {
+//            e.printStackTrace();
+//        }
+//        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
+//        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
+//        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
+//        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
+//        model.setBody(body);
+//        model.setSubject (subject);
+//        model.setOutTradeNo (outTradeNo);
+//        model.setTimeoutExpress ("30m" );
+//        model.setTotalAmount (amount);
+//        model.setProductCode ( "QUICK_MSECURITY_PAY" );
+//        model.setPassbackParams(passbackParams);//自定义参数
+//        request.setBizModel ( model );
+//        request.setNotifyUrl (callbackPath + notifyUrl);
+//        try  {
+//            //这里和普通的接口调用不同,使用的是sdkExecute
+//            AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
+//            Map<String, String> map = new HashMap<>();
+//            map.put("orderString", response.getBody());
+//            System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
+//            return ResultUtil.success(map);
+//        }  catch (AlipayApiException e ) {
+//            e.printStackTrace();
+//        }
+
+
+        //实例化客户端
+        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
+        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
+        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
+        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
+        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
+        model.setBody(body);//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
+        model.setSubject(subject);//商品的标题/交易标题/订单标题/订单关键字等。
+        model.setOutTradeNo(outTradeNo);//商户网站唯一订单号
+        model.setTimeoutExpress("30m");
+        model.setTotalAmount(amount);//付款金额
+        model.setProductCode("QUICK_MSECURITY_PAY");
+        model.setPassbackParams(passbackParams);//自定义参数
+
+
+        //分账
+//        Integer    coursePackagePayments = coursePackageClient.queryByCode(outTradeNo);
+//        Integer paymentCompetitions = competitionsClient.queryByCode(outTradeNo);
+//        Integer siteBookings = siteClient.queryByCode(outTradeNo);
+//        List<Integer> stores = new ArrayList<>();
+//        stores.add(coursePackagePayments);
+//        stores.add(paymentCompetitions);
+//        stores.add(siteBookings);
+//
+//        OperatorUser operatorUser = siteClient.queryOperator(stores);
+//
+//        String alipayProportion = operatorUser.getAlipayProportion();
+//        String alipayNum = operatorUser.getAlipayNum();
+//
+//        ExtendParams extendParams = new ExtendParams();
+////        extendParams.setSysServiceProviderId("YOUR_SERVICE_PROVIDER_ID");
+//        model.setExtendParams(extendParams);
+//
+//        RoyaltyInfo royaltyInfo = new RoyaltyInfo();
+////        royaltyInfo.setRoyaltyType("transfer");
+//
+//
+//        RoyaltyDetailInfos royaltyDetailInfo1 = new RoyaltyDetailInfos();
+//        royaltyDetailInfo1.setTransOutType("userId");
+//        royaltyDetailInfo1.setTransOut(aliAppid);
+//        royaltyDetailInfo1.setTransInType("loginName");
+//        royaltyDetailInfo1.setTransIn("18398968484");
+//
+//        royaltyDetailInfo1.setDesc("分账描述1");
+//        royaltyDetailInfo1.setAmountPercentage(alipayProportion);
+//        List<RoyaltyDetailInfos> royaltyDetailInfos = new ArrayList<>();
+//
+//
+//
+//        royaltyInfo.setRoyaltyDetailInfos(royaltyDetailInfos);
+//        model.setRoyaltyInfo(royaltyInfo);
+//        System.err.println("=================="+royaltyInfo);
+        //
+        request.setBizModel(model);
+        request.setNotifyUrl(callbackPath + notifyUrl);
+        try {
+            //这里和普通的接口调用不同,使用的是sdkExecute
+            AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
+            Map<String, String> map = new HashMap<>();
+            map.put("orderString", response.getBody());
+            map.put("returnId",passbackParams);
+            System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
+            return ResultUtil.success(map);
+        } catch (AlipayApiException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    /**
+     * 支付宝扫码支付下单
+     * @param body
+     * @param subject
+     * @param outTradeNo
+     * @param amount
+     * @param notifyUrl
+     * @return
+     */
+    public ResultUtil aliScanCodePay(String body, String subject, String outTradeNo, String amount, String notifyUrl){
+        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); //获得初始化的AlipayClient
+        AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();//创建API对应的request类
+        request.setBizContent("{" +
+                "    \"out_trade_no\":\"" + outTradeNo + "\"," +//商户订单号
+                "    \"total_amount\":\"" + 1 + "\"," +
+                "    \"subject\":\"" + subject + "\"," +
+                "    \"notify_url\":\"" + callbackPath + notifyUrl + "\"," +
+                "    \"body\":\"" + body + "\"," +
+                "    \"store_id\":\"NJ_001\"," +
+                "    \"timeout_express\":\"90m\"}");//订单允许的最晚付款时间
+        AlipayTradePrecreateResponse response = null;
+        try {
+            response = alipayClient.execute(request);
+        } catch (AlipayApiException e) {
+            e.printStackTrace();
+        }
+        JSONObject alipay_trade_precreate_response = JSON.parseObject(response.getBody()).getJSONObject("alipay_trade_precreate_response");
+
+        System.err.print(alipay_trade_precreate_response.getString("qr_code"));
+        return ResultUtil.success(alipay_trade_precreate_response.getString("qr_code"));
+    }
+
+
+    /**
+     * 支付成功后的回调处理逻辑
+     * @param request
+     */
+    public Map<String, String> alipayCallback(HttpServletRequest request){
+        //获取支付宝POST过来反馈信息
+        Map<String,String> params = new HashMap<String,String>();
+        Map requestParams = request.getParameterMap();
+        for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
+            String name = (String) iter.next();
+            String[] values = (String[]) requestParams.get(name);
+            String valueStr = "";
+            for (int i = 0; i < values.length; i++) {
+                valueStr = (i == values.length - 1) ? valueStr + values[i]
+                        : valueStr + values[i] + "_";
+            }
+            //乱码解决,这段代码在出现乱码时使用。
+            //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
+            params.put(name, valueStr);
+        }
+        //切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
+        //boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)
+//        try {
+//            boolean flag = AlipaySignature.rsaCheckV1(params, alipay_public_key, "UTF-8","RSA2");
+//            if(flag){
+//                Map<String, String> map = new HashMap<>();
+//                String out_trade_no = params.get("out_trade_no");
+//                String subject = params.get("subject");
+//                String total_amount = params.get("total_amount");
+//                String trade_no = params.get("trade_no");
+//                String passback_params = params.get("passback_params");
+//                map.put("out_trade_no", out_trade_no);//商家订单号
+//                map.put("subject", subject);
+//                map.put("total_amount", total_amount);
+//                map.put("trade_no", trade_no);//支付宝交易号
+//                map.put("passback_params", passback_params);//回传参数
+//                return map;
+//            }else{
+//                System.err.println("验签失败");
+//            }
+//
+//        } catch (AlipayApiException e) {
+//            e.printStackTrace();
+//        }
+//        return null;
+
+
+        Map<String, String> map = new HashMap<>();
+        String out_trade_no = params.get("out_trade_no");
+        String subject = params.get("subject");
+        String total_amount = params.get("total_amount");
+        String trade_no = params.get("trade_no");
+        String passback_params = params.get("passback_params");
+        map.put("out_trade_no", out_trade_no);//商家订单号
+        map.put("subject", subject);
+        map.put("total_amount", total_amount);
+        map.put("trade_no", trade_no);//支付宝交易号
+        map.put("passback_params", passback_params);//回传参数
+        return map;
+    }
+
+
+    /**
+     * 支付宝查询订单支付状态
+     * @param out_trade_no
+     * @return
+     * @throws Exception
+     */
+    public AlipayTradeQueryResponse queryALIOrder(String out_trade_no) throws Exception{
+        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8",alipay_public_key,"RSA2");
+        AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
+        request.setBizContent("{" +
+                "  \"out_trade_no\":\"" + out_trade_no + "\"" +
+                "}");
+        AlipayTradeQueryResponse response = alipayClient.execute(request);
+        return response;
+//        if(response.isSuccess()){
+//            String tradeStatus = response.getTradeStatus();//交易状态:WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款)
+//            return ResultUtil.success(response);
+//        } else {
+//            return ResultUtil.error(response.getMsg());
+//        }
+    }
+
+
+
+    /**
+     * 微信统一下单
+     * @param body          商品描述
+     * @param attach        附加数据
+     * @param out_trade_no  商户订单号
+     * @param total_fee     标价金额
+     * @param notify_url    通知地址
+     * @param tradeType     交易类型
+     * @return
+     */
+    public ResultUtil weixinpay(String body, String attach, String out_trade_no, String total_fee, String notify_url, String tradeType, String openId) throws Exception{
+        int i = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue();
+        String hostAddress = null;
+        try {
+            hostAddress = InetAddress.getLocalHost().getHostAddress();
+        } catch (UnknownHostException e) {
+            e.printStackTrace();
+        }
+        String nonce_str = UUIDUtil.getRandomCode(16);
+        Map<String, Object> map = new HashMap<>();
+        map.put("appid", "APP".equals(tradeType) ? appid : appletsAppid);
+        map.put("mch_id", mchId);
+        map.put("nonce_str", nonce_str);
+        map.put("body", body);
+        map.put("attach", attach);//存储订单id
+        map.put("out_trade_no", out_trade_no);//存储的订单code
+        map.put("total_fee", i);
+        map.put("spbill_create_ip", hostAddress);
+        map.put("notify_url", callbackPath + notify_url);
+        map.put("trade_type", tradeType);
+        if("JSAPI".equals(tradeType)){
+            map.put("openid", openId);
+        }
+        String s = this.weixinSignature(map);
+        map.put("sign", s);
+
+        String url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
+        //设置请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_XML);
+        StringBuffer xmlString = new StringBuffer();
+        Set<String> strings = map.keySet();
+        String[] keys = {};
+        keys = strings.toArray(keys);
+        Arrays.sort(keys);
+        xmlString.append("<xml>");
+        for(int l = 0; l < keys.length; l++){
+            xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">");
+        }
+        xmlString.append("</xml>");
+
+        Map<String, String> map1 = null;
+        String body1 = HttpClientUtil.pushHttpRequsetXml(url, xmlString.toString(), new HashMap<>()).getData();
+        //将结果xml解析成map
+        body1 = body1.replaceAll("<!\\[CDATA\\[","");
+        body1 = body1.replaceAll("]]>", "");
+        try {
+            map1 = this.xmlToMap(body1, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (DocumentException e) {
+            e.printStackTrace();
+        }
+        String return_code = map1.get("return_code");
+        if("SUCCESS".equals(return_code)){
+            String result_code = map1.get("result_code");
+            if("SUCCESS".equals(result_code)){
+                String type = map1.get("trade_type");
+                String prepay_id = map1.get("prepay_id");
+
+
+
+
+                switch (type){
+                    case "JSAPI":
+                        //重新进行签名后返回给前端
+                        Map<String, Object> map2 = new HashMap<>();
+                        map2.put("appId", map1.get("appid"));
+                        map2.put("nonceStr", map1.get("nonce_str"));
+                        map2.put("package", "prepay_id=" + prepay_id);
+                        map2.put("signType", "MD5");
+                        map2.put("timeStamp", new Date().getTime() + "");
+                        String s2 = this.weixinSignature(map2);
+
+                        map2.put("prepay_id", prepay_id);
+                        map2.put("mch_id", map1.get("mch_id"));
+                        map2.put("trade_type", map1.get("trade_type"));
+
+                        map2.put("sign", s2);
+                        return ResultUtil.success(map2);
+                    case "NATIVE":
+                        String code_url = map1.get("code_url");
+                        return ResultUtil.success(code_url);
+                    case "APP":
+                        //重新进行签名后返回给前端
+                        Map<String, Object> map3 = new HashMap<>();
+                        map3.put("appid", appid);
+                        map3.put("noncestr", nonce_str);
+                        map3.put("package", "Sign=WXPay");
+                        map3.put("partnerid", mchId);
+                        map3.put("prepayid", prepay_id);
+                        map3.put("timestamp", new Date().getTime() / 1000);
+                        String s1 = this.weixinSignature(map3);
+                        map3.put("sign", s1);
+                        System.err.println(map3);
+                        return ResultUtil.success(map3);
+                }
+                return null;
+            }else{
+                System.err.println(map1.get("err_code_des"));
+                return ResultUtil.error(map1.get("err_code_des"));
+            }
+        }else{
+            System.err.println(map1.get("return_msg") + appid + "----" + mchId);
+            return ResultUtil.error(map1.get("return_msg"), new JSONObject());
+        }
+    }
+
+
+    @Resource
+    private RechargeRecordsMapper rereMapper;
+
+
+    /**
+     * 微信支付成功后的回调处理
+     * @param request
+     */
+    public Map<String, String> weixinpayCallback(HttpServletRequest request){
+        try {
+            String param = this.getParam(request);
+            param = param.replaceAll("<!\\[CDATA\\[","");
+            param = param.replaceAll("]]>", "");
+            Map<String, String> map = this.xmlToMap(param, "UTF-8");
+            String return_code = map.get("return_code");
+            if("SUCCESS".equals(return_code)){
+                String result_code = map.get("result_code");
+                if("SUCCESS".equals(result_code)){
+                    Map<String, String> map1 = new HashedMap();
+                    map1.put("nonce_str", map.get("nonce_str"));
+                    map1.put("out_trade_no", map.get("out_trade_no"));//存储的订单code
+                    map1.put("attach", map.get("attach"));//存储订单id
+                    map1.put("total_fee", map.get("total_fee"));
+                    map1.put("transaction_id", map.get("transaction_id"));//微信支付订单号
+                    String result = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
+                    map1.put("result", result);
+
+
+
+                    return map1;
+                }else{
+                    System.err.println(map.get("err_code_des"));
+                }
+            }else{
+                System.err.println(map.get("return_msg"));
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (DocumentException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return null;
+    }
+
+@Resource
+private CoursePackageClient coursePackageClient;
+    @Resource
+    private DeductionCompetitionsClient competitionsClient;
+
+    @Resource
+    private SiteClient siteClient;
+//    @Autowired
+//    private WxPayService wxPayService;
+    //分账
+//    public ResultUtil order(String code) throws Exception {
+//
+//
+//
+//                  Integer    coursePackagePayments = coursePackageClient.queryByCode(code);
+//                  Integer paymentCompetitions = competitionsClient.queryByCode(code);
+//                  Integer siteBookings = siteClient.queryByCode(code);
+//        List<Integer> stores = new ArrayList<>();
+//                stores.add(coursePackagePayments);
+//                stores.add(paymentCompetitions);
+//                stores.add(siteBookings);
+//
+//                OperatorUser operatorUser = siteClient.queryOperator(stores);
+//
+//
+////        WxPayService myWxPayService = wxPayService.switchoverTo("mch_id");
+////
+////        ProfitSharingV3Service profitSharingV3Service = myWxPayService.getProfitSharingV3Service();
+//
+//        String nonceStr = RandomUtil.randomString(32);
+//        String appId = "您的appid";
+//
+//
+//        //添加分账方
+//
+////        ProfitSharingReceiver profitSharingReceiver = new ProfitSharingReceiver();
+////        profitSharingReceiver.setAccount("appid对应的openId");
+////        profitSharingReceiver.setAmount(1l);
+////        profitSharingReceiver.setAppid(appId);
+////        profitSharingReceiver.setType("PERSONAL_OPENID");
+////        profitSharingReceiver.setRelationType("PARTNER");
+////        profitSharingV3Service.addProfitSharingReceiver(profitSharingReceiver);
+//
+//        //分账
+//        ProfitSharingRequest profitSharingRequest = new ProfitSharingRequest();
+//        profitSharingRequest.setAppid(appId);
+//        profitSharingRequest.setTransactionId("微信支付订单号");
+//        profitSharingRequest.setOutOrderNo("业务系统唯一编号");
+//        //分账完成后,剩余金额自动解冻并返回给商户账号,默认false
+//        profitSharingRequest.setUnfreezeUnsplit(true);
+//        //待分账金额1元
+//        Long money = 1L;
+//        List<ProfitSharingReceiver> profitSharingReceivers = new ArrayList<>();
+//        ProfitSharingReceiver profitSharingReceiver = new ProfitSharingReceiver();
+//        profitSharingReceiver.setAccount("appid对应的openId,分账用户1");
+//
+//
+//        //分账百分之5
+//        profitSharingReceiver.setAmount(money * 100 / 5);
+//        profitSharingReceiver.setAppid(appId);
+//        profitSharingReceiver.setType("PERSONAL_OPENID");
+//        profitSharingReceiver.setRelationType("PARTNER");
+//        profitSharingReceiver.setDescription("test01");
+//        profitSharingReceivers.add(profitSharingReceiver);
+//
+//        ProfitSharingReceiver receiver = new ProfitSharingReceiver();
+//        receiver.setAccount("appid对应的openId,分账用户2");
+//        //百分之10
+//        receiver.setAmount(money * 100 / 10);
+//        receiver.setAppid(appId);
+//        receiver.setType("PERSONAL_OPENID");
+//        receiver.setRelationType("PARTNER");
+//        receiver.setDescription("test02");
+//        profitSharingReceivers.add(receiver);
+//
+//
+//        profitSharingRequest.setReceivers(profitSharingReceivers);
+//
+//        profitSharingV3Service.profitSharing(profitSharingRequest);
+//
+//
+//
+//
+////                    Map<String,String> headers = new HashMap<>();
+////                    headers.put("Authorization",map.get("sign"));
+////                    headers.put("Accept","application/json");
+////                    headers.put("Wechatpay-Serial",certPath);
+////
+////                    List<Receivers> receivers = new ArrayList<>();
+////
+////                    Map<String,Object> body = new HashMap<>();
+////                    body.put("appid",appid);
+////                    body.put("transaction_id",map.get("transaction_id"));
+////                    body.put("out_order_no",map.get("out_trade_no"));
+////                    body.put("receivers",receivers);
+////                    body.put("unfreeze_unsplit",true);
+//
+//                    //支付分账
+////                    String url ="https://api.mch.weixin.qq.com/v3/profitsharing/orders";
+////                    CloseableHttpResponse closeableHttpResponse = HttpClientUtil.setPostHttpRequset(url, body, headers, "application/json");
+////
+//
+//            return  null;
+//
+//
+//
+//
+//    }
+
+    /**
+     * 微信扫码收款
+     * @param body              商品描述
+     * @param attach            附加数据
+     * @param nonce_str         随机字符串
+     * @param out_trade_no      商户订单号
+     * @param total_fee         订单金额
+     * @param auth_code         授权码	扫码支付授权码,设备读取用户微信中的条码或者二维码信息(注:用户付款码条形码规则:18位纯数字,以10、11、12、13、14、15开头)
+     * @return
+     */
+    public ResultUtil wxScanQRCodePay(String body, String attach, String nonce_str, String out_trade_no, String total_fee, String auth_code){
+        int i = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue();
+        String hostAddress = null;
+        try {
+            InetAddress address = InetAddress.getLocalHost();
+            hostAddress = address.getHostAddress();
+        } catch (UnknownHostException e) {
+            e.printStackTrace();
+        }
+        String randomCode = null;
+        try {
+            randomCode = UUIDUtil.getRandomCode(10);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("appid", appid);
+        map.put("mch_id", mchId);
+        map.put("nonce_str", nonce_str);//存储的支付人员id,员工扫描二维码支付的时候存储的是收款员工id
+        map.put("body", body);
+        map.put("attach", attach);//存储的费用月份数据,员工扫描二维码支付的时候存储的是收费项id
+        map.put("out_trade_no", randomCode + "_" + out_trade_no);//存储的房间id
+        map.put("total_fee", i);
+        map.put("spbill_create_ip", hostAddress);
+        map.put("auth_code", auth_code);
+        String s = this.weixinSignature(map);
+        map.put("sign", s);
+
+        String url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
+        //设置请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_XML);
+        StringBuffer xmlString = new StringBuffer();
+        Set<String> strings = map.keySet();
+        String[] keys = {};
+        keys = strings.toArray(keys);
+        Arrays.sort(keys);
+        xmlString.append("<xml>");
+        for(int l = 0; l < keys.length; l++){
+            xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">");
+        }
+        xmlString.append("</xml>");
+
+        Map<String, String> map1 = null;
+        String body1 = null;
+        try {
+            body1 = HttpClientUtil.pushHttpRequsetXml(url, xmlString.toString(), new HashMap<>()).getData();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        //将结果xml解析成map
+        body1 = body1.replaceAll("<!\\[CDATA\\[","");
+        body1 = body1.replaceAll("]]>", "");
+        try {
+            map1 = this.xmlToMap(body1, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (DocumentException e) {
+            e.printStackTrace();
+        }
+        String return_code = map1.get("return_code");
+        if("SUCCESS".equals(return_code)){
+            String result_code = map1.get("result_code");
+            if("SUCCESS".equals(result_code)){
+                String type = map1.get("trade_type");
+                switch (type){
+                    case "JSAPI":
+                        break;
+                    case "NATIVE":
+                        String code_url = map1.get("code_url");
+                        return ResultUtil.success(code_url);
+                    case "APP":
+                        String prepay_id = map1.get("prepay_id");
+                        //重新进行签名后返回给前端
+                        Map<String, Object> map2 = new HashMap<>();
+                        map2.put("appid", appid);
+                        map2.put("noncestr", nonce_str);
+                        map2.put("package", "Sign=WXPay");
+                        map2.put("partnerid", mchId);
+                        map2.put("prepayid", prepay_id);
+                        map2.put("timestamp", new Date().getTime() + "");
+                        String s1 = this.weixinSignature(map2);
+
+                        map2.put("pac", "Sign=WXPay");
+                        map2.put("sign", s1);
+//                      System.err.println(map2);
+                        return ResultUtil.success(map2);
+                }
+                return null;
+            }else{
+//                System.err.println(map1.get("err_code_des"));
+                return ResultUtil.error(map1.get("err_code_des"));
+            }
+        }else{
+//            System.err.println(map1.get("return_msg") + appid + "----" + mchId);
+            return ResultUtil.error(map1.get("return_msg"), new JSONObject());
+        }
+    }
+
+
+    /**
+     * 支付宝扫码收款
+     * @param data
+     * @return
+     */
+    public Object aliScanQRCodePay(String data){
+        return null;
+    }
+
+
+    /**
+     * 微信退款申请
+     * @param transaction_id    微信订单号。微信生成的订单号,在支付通知中有返回
+     * @param out_refund_no     商户退款单号。商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔。
+     * @param total_fee         订单金额。订单总金额,单位为分,只能为整数
+     * @param refund_fee        退款金额。退款总金额,订单总金额,单位为分,只能为整数
+     * @param notify_url        退款结果通知url。异步接收微信支付退款结果通知的回调地址,通知URL必须为外网可访问的url,不允许带参数 如果参数中传了notify_url,则商户平台上配置的回调地址将不会生效。
+     * @return
+     */
+    public Map<String, String> wxRefund(String transaction_id, String out_refund_no, String total_fee, String refund_fee, String notify_url){
+        int tf = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue();
+        int rf = new BigDecimal(refund_fee).multiply(new BigDecimal("100")).intValue();
+        String nonce_str = UUIDUtil.getRandomCode();
+        Map<String, Object> map = new HashMap<>();
+        map.put("appid", appid);
+        map.put("mch_id", mchId);
+        map.put("nonce_str", nonce_str);
+        map.put("transaction_id", transaction_id);
+        map.put("out_refund_no", out_refund_no);
+        map.put("total_fee", tf);
+        map.put("refund_fee", rf);
+        map.put("notify_url", callbackPath + notify_url);
+        String s = this.weixinSignature(map, key);
+        map.put("sign", s);
+
+        String url = "https://api.mch.weixin.qq.com/secapi/pay/refund";
+        //设置请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_XML);
+        StringBuffer xmlString = new StringBuffer();
+        Set<String> strings = map.keySet();
+        String[] keys = {};
+        keys = strings.toArray(keys);
+        Arrays.sort(keys);
+        xmlString.append("<xml>");
+        for(int l = 0; l < keys.length; l++){
+            xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">");
+        }
+        xmlString.append("</xml>");
+
+        Map<String, String> map1 = null;
+        String body1 = null;
+        try {
+            body1 = HttpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        System.err.println(body1);
+        //将结果xml解析成map
+        body1 = body1.replaceAll("<!\\[CDATA\\[","");
+        body1 = body1.replaceAll("]]>", "");
+        try {
+            map1 = this.xmlToMap(body1, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (DocumentException e) {
+            e.printStackTrace();
+        }
+        String return_code = map1.get("return_code");
+        Map<String, String> map2 = new HashMap<>();
+        if("SUCCESS".equals(return_code)){
+            String result_code = map1.get("result_code");
+            if("SUCCESS".equals(result_code)){
+                map2.put("return_code", result_code);
+                map2.put("refund_id", String.valueOf(map1.get("refund_id")));//微信退款订单号
+                map2.put("refund_fee", String.valueOf(map1.get("refund_fee")));//退款金额
+                return map2;
+            }else{
+                map2.put("return_code", result_code);
+                map2.put("return_msg", map1.get("err_code_des"));
+                return map2;
+            }
+        }else{
+            map2.put("return_code", return_code);
+            map2.put("return_msg", map1.get("return_msg"));
+            return map2;
+        }
+    }
+
+
+    /**
+     * 微信退款成功后的回调处理
+     * @param request
+     * @return
+     */
+    public Map<String, String> wxRefundCallback(HttpServletRequest request){
+        try {
+            String param = this.getParam(request);
+            param = param.replaceAll("<!\\[CDATA\\[","");
+            param = param.replaceAll("]]>", "");
+            Map<String, String> map = this.xmlToMap(param, "UTF-8");
+            String return_code = map.get("return_code");
+            if("SUCCESS".equals(return_code)){
+                String req_info = map.get("req_info");//加密信息请用商户秘钥进行解密
+                String s = this.wxDecrypt(req_info);
+                s = s.replaceAll("<!\\[CDATA\\[","");
+                s = s.replaceAll("]]>", "");
+                map = this.xmlToMap(s, "UTF-8");
+                Map<String, String> map1 = new HashMap<>();
+                map1.put("refund_id", map.get("refund_id"));
+                map1.put("out_refund_no", map.get("out_refund_no"));
+                String result = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
+                map1.put("result", result);
+                return map1;
+            }else{
+//                System.err.println(map.get("return_msg"));
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (DocumentException e) {
+            e.printStackTrace();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (InvalidKeyException e) {
+            e.printStackTrace();
+        } catch (NoSuchPaddingException e) {
+            e.printStackTrace();
+        } catch (BadPaddingException e) {
+            e.printStackTrace();
+        } catch (NoSuchProviderException e) {
+            e.printStackTrace();
+        } catch (IllegalBlockSizeException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    /**
+     * 支付宝退款
+     * @param trade_no          支付宝交易号
+     * @param refund_amount     退款金额
+     * @return
+     * @throws AlipayApiException
+     */
+    public Map<String, String> aliRefund(String trade_no, String refund_amount) throws AlipayApiException {
+        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey,"json","UTF-8", alipay_public_key,"RSA2");
+        AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("trade_no", trade_no);
+        jsonObject.put("refund_amount", refund_amount);
+        request.setBizContent(jsonObject.toJSONString());
+        AlipayTradeRefundResponse response = alipayClient.execute(request);
+        Map<String, String> map = new HashMap<>();
+        if(response.isSuccess()){
+            System.out.println("调用成功");
+            String outTradeNo = response.getOutTradeNo();
+            map.put("code", response.getCode());//10000
+            map.put("trade_no", response.getTradeNo());//支付宝交易号
+            map.put("out_trade_no", outTradeNo);//商户订单号
+        } else {
+            System.out.println("调用失败");
+            map.put("code", response.getCode());
+            map.put("msg", response.getSubMsg());
+        }
+        return map;
+    }
+
+
+    /**
+     * 查询微信支付订单
+     * @return
+     * @throws Exception
+     */
+    public ResultUtil<Map<String, String>> queryWXOrder(String out_trade_no, String transaction_id) throws Exception{
+        String url = "https://api.mch.weixin.qq.com/pay/orderquery";
+        String nonce_str = UUIDUtil.getRandomCode(16);
+        Map<String, Object> map = new HashMap<>();
+        map.put("appid", appid);
+        map.put("mch_id", mchId);
+        map.put("out_trade_no", out_trade_no);//商户订单号
+        map.put("transaction_id", transaction_id);//微信订单号
+        map.put("nonce_str", nonce_str);//随机字符串
+        String s = this.weixinSignature(map);
+        map.put("sign", s);
+
+        //设置请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_XML);
+        StringBuffer xmlString = new StringBuffer();
+        Set<String> strings = map.keySet();
+        String[] keys = {};
+        keys = strings.toArray(keys);
+        Arrays.sort(keys);
+        xmlString.append("<xml>");
+        for(int l = 0; l < keys.length; l++){
+            xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">");
+        }
+        xmlString.append("</xml>");
+
+        Map<String, String> map1 = null;
+        String body1 = HttpClientUtil.pushHttpRequsetXml(url, xmlString.toString(), new HashMap<>()).getData();
+        //将结果xml解析成map
+        body1 = body1.replaceAll("<!\\[CDATA\\[","");
+        body1 = body1.replaceAll("]]>", "");
+        try {
+            map1 = this.xmlToMap(body1, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (DocumentException e) {
+            e.printStackTrace();
+        }
+        String return_code = map1.get("return_code");
+        if("SUCCESS".equals(return_code)){
+            String result_code = map1.get("result_code");
+            if("SUCCESS".equals(result_code)){
+                Map<String, String> map2 = new HashMap<>();
+                map2.put("trade_type", map1.get("trade_type"));
+                map2.put("trade_state", map1.get("trade_state"));//订单状态SUCCESS—支付成功,REFUND—转入退款,NOTPAY—未支付,CLOSED—已关闭,REVOKED—已撤销(刷卡支付),USERPAYING--用户支付中,PAYERROR--支付失败(其他原因,如银行返回失败)
+                map2.put("transaction_id", map1.get("transaction_id"));
+                return ResultUtil.success(map2);
+            }else{
+                System.err.println(map1.get("err_code_des"));
+                return ResultUtil.error(map1.get("err_code_des"));
+            }
+        }else{
+            System.err.println(map1.get("return_msg") + appid + "----" + mchId);
+            return ResultUtil.error(map1.get("return_msg"));
+        }
+    }
+
+
+
+    /**
+     * 微信转账功能(企业付款到零钱)
+     * @param openid                商户appid下,某用户的openid
+     * @param desc                  企业付款备注,必填。
+     * @param total_fee             企业付款金额
+     * @param partner_trade_no      商户订单号,需保持唯一性
+     * @return
+     */
+    public Map<String, String> wxTransfers(String openid, String desc, String total_fee, String partner_trade_no) throws Exception{
+        int amount = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue();
+        String nonce_str = UUIDUtil.getRandomCode();
+        Map<String, Object> map = new HashMap<>();
+        map.put("mch_appid", appid);//申请商户号的appid或商户号绑定的appid
+        map.put("mchid", mchId);//微信支付分配的商户号
+        map.put("nonce_str", nonce_str);//随机字符串,不长于32位
+        map.put("partner_trade_no", partner_trade_no);//商户订单号,需保持唯一性
+        map.put("openid", openid);//商户appid下,某用户的openid
+        map.put("check_name", "NO_CHECK");//NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓名
+        map.put("amount", amount);//企业付款金额,单位为分
+        map.put("desc", desc);//企业付款备注,必填。
+        String s = this.weixinSignature(map, key);
+        map.put("sign", s);
+
+        String url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
+        //设置请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_XML);
+        StringBuffer xmlString = new StringBuffer();
+        Set<String> strings = map.keySet();
+        String[] keys = {};
+        keys = strings.toArray(keys);
+        Arrays.sort(keys);
+        xmlString.append("<xml>");
+        for(int l = 0; l < keys.length; l++){
+            xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">");
+        }
+        xmlString.append("</xml>");
+
+        Map<String, String> map1 = null;
+        String body1 = HttpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12");
+        //将结果xml解析成map
+        body1 = body1.replaceAll("<!\\[CDATA\\[","");
+        body1 = body1.replaceAll("]]>", "");
+        try {
+            map1 = this.xmlToMap(body1, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (DocumentException e) {
+            e.printStackTrace();
+        }
+        String return_code = map1.get("return_code");
+        Map<String, String> map2 = new HashMap<>();
+        if("SUCCESS".equals(return_code)){
+            String result_code = map1.get("result_code");
+            if("SUCCESS".equals(result_code)){
+                map2.put("return_code", result_code);
+                map2.put("payment_no", String.valueOf(map1.get("payment_no")));//付款订单号
+                map2.put("payment_time", String.valueOf(map1.get("payment_time")));//付款时间
+                return map2;
+            }else{
+                map2.put("return_code", result_code);
+                map2.put("err_code", map1.get("err_code"));
+                map2.put("err_code_des", map1.get("err_code_des"));
+                return map2;
+            }
+        }else{
+            map2.put("return_code", return_code);
+            map2.put("return_msg", map1.get("return_msg"));
+            return map2;
+        }
+    }
+
+
+    /**
+     * 微信转账功能(企业付款到银行卡)
+     * @param desc              备注信息
+     * @param total_fee         转账金额
+     * @param partner_trade_no  订单号
+     * @param enc_bank_no       银行卡号
+     * @param enc_true_name     收款方用户名
+     * @param bankName          银行名称
+     * @return
+     * @throws Exception
+     */
+    public Map<String, String> wxPayBank(String desc, String total_fee, String partner_trade_no, String enc_bank_no, String enc_true_name, String bankName) throws Exception{
+        int amount = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue();
+        String nonce_str = UUIDUtil.getRandomCode();
+        Map<String, Object> map = new HashMap<>();
+        map.put("mch_id", mchId);//微信支付分配的商户号
+        map.put("nonce_str", nonce_str);//随机字符串,不长于32位
+        map.put("partner_trade_no", partner_trade_no);//商户订单号,需保持唯一性
+        map.put("enc_bank_no", enc_bank_no);//收款方银行卡号(采用标准RSA算法,公钥由微信侧提供)
+        map.put("enc_true_name", enc_true_name);//收款方用户名(采用标准RSA算法,公钥由微信侧提供)
+        map.put("bank_code", findBankCode(bankName));//
+        map.put("amount", amount);//企业付款金额,单位为分
+        map.put("desc", desc);//企业付款备注,必填。
+        String s = this.weixinSignature(map, key);
+        map.put("sign", s);
+
+        String url = "https://api.mch.weixin.qq.com/mmpaysptrans/pay_bank";
+        //设置请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_XML);
+        StringBuffer xmlString = new StringBuffer();
+        Set<String> strings = map.keySet();
+        String[] keys = {};
+        keys = strings.toArray(keys);
+        Arrays.sort(keys);
+        xmlString.append("<xml>");
+        for(int l = 0; l < keys.length; l++){
+            xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">");
+        }
+        xmlString.append("</xml>");
+
+        Map<String, String> map1 = null;
+        String body1 = HttpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12");
+        //将结果xml解析成map
+        body1 = body1.replaceAll("<!\\[CDATA\\[","");
+        body1 = body1.replaceAll("]]>", "");
+        try {
+            map1 = this.xmlToMap(body1, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (DocumentException e) {
+            e.printStackTrace();
+        }
+        String return_code = map1.get("return_code");
+        Map<String, String> map2 = new HashMap<>();
+        if("SUCCESS".equals(return_code)){
+            String result_code = map1.get("result_code");
+            if("SUCCESS".equals(result_code)){
+                map2.put("return_code", result_code);
+                map2.put("payment_no", String.valueOf(map1.get("payment_no")));//付款订单号
+                map2.put("cmms_amt", String.valueOf(map1.get("cmms_amt")));//手续费金额 RMB:分
+                return map2;
+            }else{
+                map2.put("return_code", result_code);
+                map2.put("err_code", map1.get("err_code"));
+                map2.put("err_code_des", map1.get("err_code_des"));
+                return map2;
+            }
+        }else{
+            map2.put("return_code", return_code);
+            map2.put("return_msg", map1.get("return_msg"));
+            return map2;
+        }
+    }
+
+    /**
+     * 微信转账到银行卡不编号
+     * @param bankName
+     * @return
+     */
+    public String findBankCode(String bankName){
+        String json = "{\"工商银行 \":1002,\"农业银行\":1005,\"建设银行\":1003,\"中国银行\":1026,\"交通银行 \":1020,\"招商银行 \":1001,\"邮储银行\":1066,\"民生银行 \":1006,\"平安银行 \":1010,\"中信银行\":1021,\"浦发银行 \":1004,\"兴业银行 \":1009,\"光大银行 \":1022,\"广发银行\":1027,\"华夏银行\":1025,\"宁波银行\":1056,\"北京银行\":4836,\"上海银行\":1024,\"南京银行\":1054,\"长子县融汇村镇银行\":4755,\"长沙银行\":4216,\"浙江泰隆商业银行\":4051,\"中原银行 \":4753,\"企业银行(中国)\":4761,\"顺德农商银行 \":4036,\"衡水银行\":4752,\"长治银行\":4756,\"大同银行\":4767,\"河南省农村信用社\":4115,\"宁夏黄河农村商业银行\":4150,\"山西省农村信用社\":4156,\"安徽省农村信用社\":4166,\"甘肃省农村信用社\":4157,\"天津农村商业银行\":4153,\"广西壮族自治区农村信用社\":4113,\"陕西省农村信用社\":4108,\"深圳农村商业银行\":4076,\"宁波鄞州农村商业银行\":4052,\"浙江省农村信用社联合社\":4764,\"江苏省农村信用社联合社\":4217,\"江苏紫金农村商业银行股份有限公司 \":4072,\"北京中关村银行股份有限公司 \":4769,\"星展银行( 中国) 有限公司 \":4778,\"枣庄银行股份有限公司 \":4766,\"海口联合农村商业银行股份有限公司 \":4758,\"南洋商业银行( 中国) 有限公司 \":4763}";
+        JSONObject jsonObject = JSON.parseObject(json);
+        Set<String> strings = jsonObject.keySet();
+        for(String key : strings){
+            if(key.indexOf(bankName) >= 0){
+                return jsonObject.getString(key);
+            }
+        }
+        return "";
+    }
+
+
+
+    /**
+     * 支付宝转账
+     * @param out_biz_no        商家侧唯一订单号,由商家自定义。对于不同转账请求,商家需保证该订单号在自身系统唯一。
+     * @param trans_amount      订单总金额,单位为元,精确到小数点后两位
+     * @param order_title       转账业务的标题,用于在支付宝用户的账单里显示
+     * @param identity          参与方的唯一标识(收款方支付宝账号)
+     * @param name              参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。
+     * @param remark            业务备注
+     * @return
+     * @throws Exception
+     */
+    public Map<String, Object> aliTransfer(String out_biz_no, Double trans_amount, String order_title, String identity, String name, String remark) throws Exception{
+        CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
+        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");  //gateway:支付宝网关(固定)https://openapi.alipay.com/gateway.do
+        certAlipayRequest.setAppId(aliAppid);  //APPID 即创建应用后生成,详情见创建应用并获取 APPID
+        certAlipayRequest.setPrivateKey(appPrivateKey);  //开发者应用私钥,由开发者自己生成
+        certAlipayRequest.setFormat("json");  //参数返回格式,只支持 json 格式
+        certAlipayRequest.setCharset("UTF-8");  //请求和签名使用的字符编码格式,支持 GBK和 UTF-8
+        certAlipayRequest.setSignType("RSA2");  //商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2。
+        certAlipayRequest.setCertPath(app_cert_path); //应用公钥证书路径(app_cert_path 文件绝对路径)
+        certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path); //支付宝公钥证书文件路径(alipay_cert_path 文件绝对路径)
+        certAlipayRequest.setRootCertPath(alipay_root_cert_path);  //支付宝CA根证书文件路径(alipay_root_cert_path 文件绝对路径)
+        AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
+        AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
+        request.setBizContent("{" +
+                "\"out_biz_no\":\"" + out_biz_no + "\"," +
+                "\"trans_amount\":" + trans_amount + "," +
+                "\"product_code\":\"TRANS_ACCOUNT_NO_PWD\"," +
+                "\"biz_scene\":\"DIRECT_TRANSFER\"," +
+                "\"order_title\":\"" + order_title + "\"," +
+                "\"payee_info\":{" +
+                "\"identity\":\"" + identity + "\"," +
+                "\"identity_type\":\"ALIPAY_USER_ID\"," +
+                "\"name\":\"" + name + "\"," +
+                "}," +
+                "\"remark\":\"" + remark + "\"" +
+                "}");
+        AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);
+        Map<String, Object> map = new HashMap<>();
+        if(response.isSuccess()){
+            String status = response.getStatus();
+            if(status.equals("SUCCESS")){//成功
+                map.put("code", response.getCode());
+                map.put("order_id", response.getOrderId());//支付宝订单号
+                map.put("pay_fund_order_id", response.getPayFundOrderId());//支付宝流水号
+            }else{
+                map.put("code", response.getCode());
+                map.put("sub_msg", response.getSubMsg());
+            }
+        } else {
+            map.put("code", response.getSubCode());
+            map.put("sub_msg", response.getSubMsg());
+        }
+        return map;
+    }
+
+
+    /**
+     * 获取请求内容
+     * @param request
+     * @return
+     * @throws IOException
+     */
+    private String getParam(HttpServletRequest request) throws IOException {
+        // 读取参数
+        InputStream inputStream;
+        StringBuilder sb = new StringBuilder();
+        inputStream = request.getInputStream();
+        String s;
+        BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
+        while ((s = in.readLine()) != null) {
+            sb.append(s);
+        }
+        in.close();
+        inputStream.close();
+        return sb.toString();
+    }
+
+
+    /**
+     * 微信下单的签名算法
+     * @param map
+     * @return
+     */
+    private String weixinSignature(Map<String, Object> map){
+        try {
+            Set<Map.Entry<String, Object>> entries = map.entrySet();
+            List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries);
+            // 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
+            Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() {
+                public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
+                    return (o1.getKey()).toString().compareTo(o2.getKey());
+                }
+            });
+            // 构造签名键值对的格式
+            StringBuilder sb = new StringBuilder();
+            for (Map.Entry<String, Object> item : infoIds) {
+                if (item.getKey() != null || item.getKey() != "") {
+                    String key = item.getKey();
+                    Object val = item.getValue();
+                    if (!(val == "" || val == null)) {
+                        sb.append(key + "=" + val + "&");
+                    }
+                }
+            }
+            sb.append("key=" + key);
+            String sign = MD5AndKL.MD5Encode(sb.toString(), "UTF-8").toUpperCase(); //注:MD5签名方式
+            return sign;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    /**
+     * 微信下单的签名算法
+     * @param map
+     * @return
+     */
+    private String weixinSignature(Map<String, Object> map, String key_){
+        try {
+            Set<Map.Entry<String, Object>> entries = map.entrySet();
+            List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries);
+            // 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
+            Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() {
+                public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
+                    return (o1.getKey()).toString().compareTo(o2.getKey());
+                }
+            });
+            // 构造签名键值对的格式
+            StringBuilder sb = new StringBuilder();
+            for (Map.Entry<String, Object> item : infoIds) {
+                if (item.getKey() != null || item.getKey() != "") {
+                    String key = item.getKey();
+                    Object val = item.getValue();
+                    if (!(val == "" || val == null)) {
+                        sb.append(key + "=" + val + "&");
+                    }
+                }
+            }
+            sb.append("key=" + key_);
+            String sign = MD5AndKL.MD5Encode(sb.toString(), "UTF-8").toUpperCase(); //注:MD5签名方式
+            return sign;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    /**
+     * 微信退款成功后的解密
+     * @param req_info
+     * @return
+     */
+    private String wxDecrypt(String req_info) throws NoSuchPaddingException, NoSuchAlgorithmException, NoSuchProviderException,
+            InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
+        byte[] decode = Base64.getDecoder().decode(req_info);
+        String sign = MD5AndKL.MD5Encode(key, "UTF-8").toLowerCase();
+        if (Security.getProvider("BC") == null){
+            Security.addProvider(new BouncyCastleProvider());
+        }
+        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
+        SecretKeySpec secretKeySpec = new SecretKeySpec(sign.getBytes(), "AES");
+        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
+        return new String(cipher.doFinal(decode));
+    }
+
+
+//    public static void main(String[] ages){
+//        PayMoneyUtil payMoneyUtil = new PayMoneyUtil();
+//        ResultUtil ce = payMoneyUtil.alipay("测试", "测试", "", "121456457", "10", "http://123.com");
+//        System.err.println(ce);
+//        ResultUtil resultUtil = null;
+//        try {
+//            resultUtil = payMoneyUtil.queryALIOrder("121456457");
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        System.err.println(resultUtil);
+//    }
+
+
+    /**
+     * xml转map
+     * @param xml
+     * @param charset
+     * @return
+     * @throws UnsupportedEncodingException
+     * @throws DocumentException
+     */
+    public static Map<String, String> xmlToMap(String xml, String charset) throws UnsupportedEncodingException, DocumentException {
+
+        Map<String, String> respMap = new HashMap<String, String>();
+
+        SAXReader reader = new SAXReader();
+        Document doc = reader.read(new ByteArrayInputStream(xml.getBytes(charset)));
+        Element root = doc.getRootElement();
+        xmlToMap(root, respMap);
+        return respMap;
+    }
+
+    public static Map<String, String> xmlToMap(Element tmpElement, Map<String, String> respMap){
+        if (tmpElement.isTextOnly()) {
+            respMap.put(tmpElement.getName(), tmpElement.getText());
+            return respMap;
+        }
+
+        @SuppressWarnings("unchecked")
+        Iterator<Element> eItor = tmpElement.elementIterator();
+        while (eItor.hasNext()) {
+            Element element = eItor.next();
+            xmlToMap(element, respMap);
+        }
+        return respMap;
+    }
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
index c862916..db0d613 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
@@ -607,12 +607,15 @@
             coupon.setIllustrate(dataVo.getIllustrate());
             coupon.setDistributionMethod(dataVo.getDistributionMethod());
             coupon.setRedemptionMethod(dataVo.getExchangeMethod());
-            if (dataVo.getExchangeMethod() != null) {
+            if (dataVo.getExchangeMethod() != null&&dataVo.getDistributionMethod()!=4) {
                 switch (dataVo.getExchangeMethod()) {
                     case 1:
                         coupon.setIntegral(BigDecimal.valueOf(dataVo.getRequiredPoints()));
                         break;
-
+                    case 2:
+                        coupon.setIntegral(BigDecimal.valueOf(dataVo.getRequiredPoints()));
+                        coupon.setCash(dataVo.getRequiredCash());
+                        break;
                     case 3:
                         coupon.setCash(dataVo.getRequiredCash());
                         break;
@@ -761,6 +764,7 @@
             }
             return true;
         } catch (Exception e) {
+            e.printStackTrace();
             return false;
         }
     }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
index aba58d0..de2ce98 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -287,6 +287,10 @@
     @Autowired
     private PointsMerchandiseStoreService pointsMerchandiseStoreService;
 
+
+    @Autowired
+    private CouponStoreService couponStoreService;
+
     @ResponseBody
     @PostMapping("/base/pointMerchars/convertGoods")
     public List<IntegralCommodity> getConvertibleGoods(@RequestBody Location location) throws Exception {
@@ -342,6 +346,25 @@
             }
         }
 
+        List<CouponStore> storeId = couponStoreService.list(new QueryWrapper<CouponStore>().eq("storeId", s.getId()));
+        List<Integer> storeCoupons = new ArrayList<>();
+        for (CouponStore couponStore : storeId) {
+            storeCoupons.add(couponStore.getCouponId());
+        }
+        List<Coupon> list = couponService.list(new QueryWrapper<Coupon>().in("id", storeCoupons).eq("state", 1).gt("endTime", new Date()).last("ORDER BY insertTime desc"));
+        if (!list.isEmpty()){
+            for (Coupon coupon : list) {
+            IntegralCommodity integralCommodity = new IntegralCommodity();
+            integralCommodity.setCommodityId(coupon.getId());
+            integralCommodity.setCommodityImg(coupon.getCover());
+            integralCommodity.setCommodityName(coupon.getName());
+            integralCommodity.setCommodityPrice(coupon.getIntegral());
+            integralCommodity.setGoodsType(coupon.getType());
+//            integralCommodity.setSort(coupon.getSort());
+            commodity.add(integralCommodity);
+            }
+
+        }
 
 
         System.out.println(commodity);
diff --git a/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
index bd3c2f5..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
@@ -97,9 +98,8 @@
             WHERE storeId = #{storeId}
             UNION ALL
             SELECT DISTINCT couponId
-
             from t_coupon_city
-            WHERE provinceCode = #{cityCode}) o)
+            WHERE cityCode = #{cityCode}) o)
         </if>
         <if test="name != null">
             and `name` like concat('%', #{name}, '%')
@@ -117,8 +117,6 @@
         <if test="state != null">
             and `state` = #{state}
         </if>
-
-
         union all
         SELECT id,
         `name`,
@@ -136,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-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
index b5cb1f8..74a0dd4 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
@@ -11,7 +11,9 @@
 import com.dsh.competition.entity.PaymentCompetition;
 import com.dsh.competition.entity.UserCompetition;
 import com.dsh.competition.feignclient.account.AppUserClient;
+import com.dsh.competition.feignclient.account.StudentClient;
 import com.dsh.competition.feignclient.account.model.AppUser;
+import com.dsh.competition.feignclient.account.model.TStudent;
 import com.dsh.competition.feignclient.course.CoursePackagePaymentClient;
 import com.dsh.competition.feignclient.course.model.PaymentDeductionClassHour;
 import com.dsh.competition.feignclient.model.*;
@@ -832,6 +834,40 @@
         }
     }
 
+    @Resource
+    private StudentClient studentClient;
+    @PostMapping("/base/competition/getPeopleFromId1")
+    public List<CompetitionUser> getPeopleFromId1(@RequestBody GetPeopleQuery getPeopleQuery) {
+        try {
+            Page<UserCompetition> participantPage = new Page<>(getPeopleQuery.getOffset(), getPeopleQuery.getLimit());
+            List<CompetitionUser> page = participantService.getPeopleFromId1(participantPage, getPeopleQuery.getId(), getPeopleQuery.getState());
+
+            List<CompetitionUser> users = new ArrayList<>();
+            List<UserCompetition> coms = userCompetitionService.list(new QueryWrapper<UserCompetition>().eq("competitionId", getPeopleQuery.getId()));
+            for (UserCompetition com : coms) {
+                int number = com.getParticipantId();
+                String numberString = Integer.toString(number);
+                int digitCount = numberString.length();
+                if (digitCount!=9){
+                    TStudent tStudent = studentClient.queryById(number);
+                    CompetitionUser competitionUser = new CompetitionUser();
+                    competitionUser.setName(tStudent.getName());
+                    competitionUser.setPhone(tStudent.getPhone());
+                    competitionUser.setSex(tStudent.getSex());
+                    competitionUser.setIdCard(tStudent.getIdCard());
+                    competitionUser.setState(tStudent.getState());
+                    users.add(competitionUser);
+                }
+            }
+            page.addAll(users);
+
+            return page;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
     @PostMapping("/base/competition/getPeoples")
     @ResponseBody
     public List<CompetitionUser> getPeoples(@RequestBody GetPeopleQuery getPeopleQuery) {
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/ParticipantMapper.java b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/ParticipantMapper.java
index 712a979..da08f13 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/ParticipantMapper.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/ParticipantMapper.java
@@ -16,5 +16,8 @@
 public interface ParticipantMapper extends BaseMapper<Participant> {
     Page<CompetitionUser> getPeopleFromId(@Param("participantPage") Page<UserCompetition> participantPage, @Param("id") Integer id, @Param("state") Integer state);
 
+
+    List<CompetitionUser> getPeopleFromId1(@Param("participantPage") Page<UserCompetition> participantPage, @Param("id") Integer id, @Param("state") Integer state);
+
     List<CompetitionUser> getPeoples(@Param("id") Integer id, @Param("state") Integer state);
 }
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/IParticipantService.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/IParticipantService.java
index 8977796..287ed69 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/IParticipantService.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/IParticipantService.java
@@ -69,6 +69,7 @@
     void saveParticipant(SaveParticipant saveParticipant) throws Exception;
 
     Page<CompetitionUser> getPeopleFromId(Page<UserCompetition> participantPage, Integer id, Integer state);
+    List<CompetitionUser> getPeopleFromId1(Page<UserCompetition> participantPage, Integer id, Integer state);
 
     List<CompetitionUser> getPeoples(Integer id, Integer state);
 }
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
index d7ffe68..99dfffa 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
@@ -266,6 +266,10 @@
     public Page<CompetitionUser> getPeopleFromId(Page<UserCompetition> participantPage, Integer id, Integer state) {
         return this.baseMapper.getPeopleFromId(participantPage, id, state);
     }
+    @Override
+    public  List<CompetitionUser> getPeopleFromId1(Page<UserCompetition> participantPage, Integer id, Integer state) {
+        return this.baseMapper.getPeopleFromId1(participantPage, id, state);
+    }
 
     @Override
     public List<CompetitionUser> getPeoples(Integer id, Integer state) {
diff --git a/cloud-server-competition/src/main/resources/mapper/ParticipantMapper.xml b/cloud-server-competition/src/main/resources/mapper/ParticipantMapper.xml
index 6db98c9..fd13ff6 100644
--- a/cloud-server-competition/src/main/resources/mapper/ParticipantMapper.xml
+++ b/cloud-server-competition/src/main/resources/mapper/ParticipantMapper.xml
@@ -13,6 +13,19 @@
             and t3.payStatus =3
         </if>
     </select>
+
+    <select id="getPeopleFromId1" resultType="com.dsh.competition.feignclient.model.CompetitionUser">
+        select t2.name,t2.gender sex,t2.phone ,t2.idcard idCard ,t3.payStatus state
+        from t_user_competition t1 left join t_participant t2 on t1.participantId = t2.id
+        left join t_payment_competition t3 on t1.paymentCompetitionId = t3.id
+        where t1.competitionId =#{id} and t2.id is not null and t3.id is not null
+        <if test="state !=null and state !='' and state ==1">
+            and t3.payStatus in (1,2)
+        </if>
+        <if test="state !=null and state !='' and state ==3">
+            and t3.payStatus =3
+        </if>
+    </select>
     <select id="getPeoples" resultType="com.dsh.competition.feignclient.model.CompetitionUser">
         select t2.id, t2.name,t2.gender sex,t2.phone ,t2.idcard idCard ,t3.payStatus state
         from t_user_competition t1 left join t_participant t2 on t1.participantId = t2.id
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 42473f5..f8ad1c4 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
@@ -28,6 +28,7 @@
 import com.dsh.course.util.*;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.obs.services.internal.ServiceException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -333,7 +334,7 @@
             Store store = storeClient.queryStoreById(re.getStoreId());
             TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId());
             String studentId = re.getStudentId();
-            String[] split = studentId.split(",");
+            String[] split = studentId.split(";");
             StringBuilder stringBuilder = new StringBuilder("");
 
             for (String s : split) {
@@ -2367,13 +2368,13 @@
 
     @ResponseBody
     @PostMapping("/coursePackagePayment/consumeCourse")
-    public ResultUtil consumeCourse(@RequestBody Integer coursePackagePaymentId) {
+    public Integer consumeCourse(@RequestBody Integer coursePackagePaymentId) {
         CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(coursePackagePaymentId);
 
         TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
 
         if (coursePackageOrderStudent.getLaveClassHours()<coursePackage.getNeedNum()){
-            return ResultUtil.error("当前学员课时数不足");
+           return 1;
         }
         coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()-coursePackage.getNeedNum());
         orderStudentService.updateById(coursePackageOrderStudent);
@@ -2384,14 +2385,14 @@
         courseCounsum.setInsertTime(new Date());
         courseCounsum.setReason("补课");
         courseCounsumService.save(courseCounsum);
-        return ResultUtil.success("补课成功");
+        return 2;
     }
 
 
     @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;
@@ -2640,6 +2641,11 @@
                     detailsListVo.setIsType(list4.get(0).getType());
 
                     for (CoursePackageStudent coursePackageStudent : list4) {
+                        CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingMapper.selectById(coursePackageStudent.getCoursePackageSchedulingId());
+                        if (coursePackageScheduling.getStatus()==4){
+                            detailsListVo.setIsType(3);
+                        }
+
                         Integer signInOrNot1 = coursePackageStudent.getSignInOrNot();
                         detailsListVo.setType(1);
 
@@ -2647,7 +2653,6 @@
                             detailsListVo.setType(3);
                         }
                         detailsListVo.setIsType(coursePackageStudent.getType());
-                        CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingMapper.selectById(coursePackageStudent.getCoursePackageSchedulingId());
                         Date classDate = coursePackageScheduling.getClassDate();
                         Date endDate = coursePackageScheduling.getEndDate();
                         SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
index d0db8ce..93d5fdf 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -107,6 +107,21 @@
     }
 
 
+
+
+    @ResponseBody
+    @PostMapping("/queryAble")
+    public Integer queryAble(@RequestBody Integer id) {
+
+        int coursePackageId = orderStudentService.count(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", id));
+        if (coursePackageId>0){
+            return 1;
+        }else {
+            return 0;
+        }
+
+    }
+
     //获取学员课时数信息
     @RequestMapping("/getInfo")
     @ResponseBody
@@ -126,6 +141,8 @@
         studentClassInfo.setInDate(minDate);
         System.out.println("===========>" + studentClassInfo);
 
+//        appUserClient.queryGift(tStudentId);
+
         return studentClassInfo;
     }
 
@@ -136,7 +153,9 @@
         System.out.println("==========getClassList===tStudentId====" + tStudentId);
         List<ClassListDto> listDtos = studentService.getClassList(tStudentId);
         for (ClassListDto dto : listDtos) {
-            dto.setHasClassHours(dto.getTotalClassHours() - dto.getLaveClassHours());
+            if (dto.getClassType()!=2) {
+                dto.setHasClassHours(dto.getTotalClassHours() - dto.getLaveClassHours());
+            }
         }
         System.out.println("======listDtos======" + listDtos);
         return listDtos;
@@ -287,7 +306,14 @@
 
     @RequestMapping("/insertBack")
     @ResponseBody
-    public void insertBack(@RequestBody InsertBackDto insertBackDto) {
+    public Integer insertBack(@RequestBody InsertBackDto insertBackDto) {
+
+        List<MoneyBack> ids = moneyBackService.list(new QueryWrapper<MoneyBack>().eq("ids", insertBackDto.getIds()));
+
+        if (!ids.isEmpty()){
+            return 1 ;
+        }
+
 
         MoneyBack moneyBack = new MoneyBack();
         moneyBack.setStudentId(insertBackDto.getId());
@@ -303,16 +329,34 @@
         for (CoursePackageOrderStudent o : pays) {
             o.setStatus(4);
             o.setAppUserId(null);
+            List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>().eq("studentId", o.getStudentId()).eq("coursePackageId", o.getCoursePackageId()).ge("classDate", new Date()));
+            List<Long> scs = new ArrayList<>();
+            for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
+                scs.add(coursePackageScheduling.getId());
+            }
+            coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().in("coursePackageSchedulingId",scs));
+            coursePackageSchedulingService.deleteBatchIds(scs);
+
+
+
         }
 
+
+
         orderStudentService.updateBatchById(pays);
+        return 0;
     }
 
 
+    @Autowired
+    private ICoursePackageOrderService coursePackageOrderService;
+
+    @Autowired
+    private ICoursePackageOrderStudentService coursePackageOrderStudentService;
     @RequestMapping("/queryByIds")
     @ResponseBody
-    public List<TCoursePackagePayment> queryByIds(@RequestParam("ids") String ids) {
-        List<TCoursePackagePayment> paymentList = paymentService.list(new QueryWrapper<TCoursePackagePayment>()
+    public List<CoursePackageOrderStudent> queryByIds(@RequestParam("ids") String ids) {
+        List<CoursePackageOrderStudent> paymentList = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                 .in("id", Arrays.asList(ids.split(","))));
 
         System.out.println("========client==>" + paymentList);
@@ -328,6 +372,8 @@
 
     }
 
+
+
     @RequestMapping("/noStatus")
     @ResponseBody
     public void noStatus(@RequestParam("id") Integer id) {
@@ -339,6 +385,7 @@
         for (CoursePackageOrderStudent o : pays) {
             o.setStatus(1);
             o.setAppUserId(null);
+            schedulingService.addNewCoursePackageScheduling(o.getId(),o.getLaveClassHours());
         }
         orderStudentService.updateBatchById(pays);
 
@@ -390,18 +437,30 @@
     }
 
 
+
+    @RequestMapping("/getOrder")
+    @ResponseBody
+    public List<CoursePackageOrder> getOrder(@RequestParam("id") Long id) {
+
+        CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(id);
+
+        List<CoursePackageOrder> list = coursePackageOrderService.list(new QueryWrapper<CoursePackageOrder>().eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()).like("studentIds", coursePackageOrderStudent.getStudentId()));
+            return  list;
+    }
+
+
     @RequestMapping("/backStausClass")
     @ResponseBody
     public void backStausClass(@RequestParam("id") Integer id) {
-        MoneyBack byId = moneyBackService.getById(id);
-        String[] split = byId.getIds().split(",");
-        System.out.println("========split===>" + split);
-        List<TCoursePackagePayment> id1 = paymentService.list(new QueryWrapper<TCoursePackagePayment>().in("id", split));
-        for (TCoursePackagePayment o : id1) {
-            o.setStatus(1);
-            o.setAppUserId(null);
-        }
-        paymentService.updateBatchById(id1);
+//        MoneyBack byId = moneyBackService.getById(id);
+//        String[] split = byId.getIds().split(",");
+//        System.out.println("========split===>" + split);
+//        List<CoursePackageOrderStudent> id1 = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().in("id", split));
+//        for (CoursePackageOrderStudent o : id1) {
+//            o.setStatus(1);
+//            o.setAppUserId(null);
+//        }
+//        coursePackageOrderStudentService.updateBatchById(id1);
     }
 
     @RequestMapping("/cancel")
@@ -453,7 +512,7 @@
             Integer appUserId = orinPay.getAppUserId();
             Integer appUserId1 = studentPay.getAppUserId();
             if (appUserId.compareTo(appUserId1) != 0) {
-                courseCounsum.setReason("课时赠送");
+                courseCounsum.setReason("赠课");
             } else {
                 courseCounsum.setReason("课时转移");
             }
@@ -471,7 +530,7 @@
             CourseCounsum courseCounsum1 = new CourseCounsum();
             courseCounsum1.setInsertTime(new Date());
             if (appUserId.compareTo(appUserId1) != 0) {
-                courseCounsum1.setReason("课时赠送");
+                courseCounsum1.setReason("赠课");
             } else {
                 courseCounsum1.setReason("课时转移");
             }
@@ -513,7 +572,15 @@
             calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
             to.setUseTime(calendar.getTime());
             orderStudentService.save(to);
+            if(null == student.getValidity()){
+                student.setValidity(calendar.getTime());
+            }else if(student.getValidity().getTime() < calendar.getTime().getTime()){
+                student.setValidity(calendar.getTime());
+            }
+            studentClient.frozen(student);
 
+
+            Integer laveClassHours1 = orinPay.getLaveClassHours();
             Integer appUserId = orinPay.getAppUserId();
             orinPay.setLaveClassHours(0);
             orinPay.setAppUserId(null);
@@ -523,8 +590,8 @@
 
             CourseCounsum courseCounsum = new CourseCounsum();
             courseCounsum.setInsertTime(new Date());
-            courseCounsum.setReason("课时赠送");
-            courseCounsum.setNum(orinPay.getLaveClassHours());
+            courseCounsum.setReason("赠课");
+            courseCounsum.setNum(laveClassHours1);
             courseCounsum.setChangeType(0);
             courseCounsum.setPaymentId(orinPay.getId());
             counsumService.save(courseCounsum);
@@ -532,8 +599,8 @@
 
             CourseCounsum courseCounsum1 = new CourseCounsum();
             courseCounsum1.setInsertTime(new Date());
-            courseCounsum1.setReason("课时赠送");
-            courseCounsum1.setNum(orinPay.getLaveClassHours());
+            courseCounsum1.setReason("赠课");
+            courseCounsum1.setNum(laveClassHours1);
             courseCounsum1.setChangeType(1);
             courseCounsum1.setPaymentId(to.getId());
             counsumService.save(courseCounsum1);
@@ -591,7 +658,9 @@
                 int day_week = calendar.get(Calendar.DAY_OF_WEEK);
                 day_week = day_week - 1 == 0 ? 7 : day_week - 1;
                 int num = 8 - day_week + 7;
-                Date useTime = coursePackageOrderStudent.getUseTime();
+
+                Student student = studentClient.queryStudentById(coursePackageOrderStudent.getStudentId());
+                Date useTime = student.getValidity();
 
                 for (int i = 0; i < num; i++) {
                     Date time = calendar.getTime();
@@ -716,133 +785,136 @@
     @RequestMapping(value = "/toHoli", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
     @ResponseBody
     public String toHoli(@RequestBody ToHoliDto toHoliDto) throws ParseException {
-
-        String[] ids = toHoliDto.getIds();
-        List<String> strings = new ArrayList<>();
-
-
-        for (String id : ids) {
-            //扣除课时
-            TCoursePackagePayment payment = paymentService.getById(id);
-            System.out.println("=====byId=========" + payment);
-
-
-            Integer laveClassHours = payment.getLaveClassHours();
-
-            Integer classNum = toHoliDto.getClassNum();
-            Integer totalClassHours = payment.getTotalClassHours();
-            Student student = studentClient.queryStudentById(payment.getStudentId());
-
-            if (laveClassHours < classNum) {
-                strings.add(student.getName());
-                continue;
+        String[] stuIds = toHoliDto.getIds();
+        //查询出学员ids对应的棵树,判断剩余课时数是否够
+        List<CoursePackageOrderStudent> list = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", toHoliDto.getClassId()).in("studentId", stuIds));
+        List<String> notStudent = new ArrayList<>();
+        for (CoursePackageOrderStudent coursePackageOrderStudent : list) {
+            if (coursePackageOrderStudent.getLaveClassHours() < toHoliDto.getClassNum()) {
+                notStudent.add(studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()).getName());
             }
+        }
+        if (!notStudent.isEmpty()) {
+            String notStudentStr = String.join(",", notStudent);
+            return notStudentStr+":课时数不足";
+        }
 
-            Integer laveClassHoursnew = laveClassHours - classNum;
-            Integer totalClassHoursnew = totalClassHours - classNum;
-            payment.setLaveClassHours(laveClassHoursnew);
-            payment.setTotalClassHours(totalClassHoursnew);
-            payment.setAppUserId(null);
-//            payment.setStatus(3);
+        for (String stuId : stuIds) {
+            Student student = studentClient.queryStudentById(Integer.valueOf(stuId));
 
-            paymentService.updateById(payment);
+            // 扣除 原来的课时数
+        // 添加购买课时 paytyoe为7
+        // 排课可期  判断课程时间段  添加排课表  添加上课记录表
+        // 找到原来的课包 扣课时
+//        CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(toHoliDto.getId());
+        CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId",toHoliDto.getId()).eq("studentId",stuId));
 
-            //获取student信息
+        TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
+        TCoursePackage coursePackage1 = coursePackageService.getById(toHoliDto.getClassId());
+        //判断剩余课时是否已经全部进行排课,如果排课需要删除已经排好的记录
+        List<CoursePackageScheduling> list1 = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
+                .eq("studentId", coursePackageOrderStudent.getStudentId()).eq("status", 1)
+                .eq("type", 1).orderByDesc("classDate"));
+        //已经排课但没有使用的课时数量
+        int number = list1.size() * coursePackage.getNeedNum();
+        Integer laveClassHours1 = coursePackageOrderStudent.getLaveClassHours();
+        laveClassHours1 -= number;
+        //需要购买使用的课时数
+        Integer num = toHoliDto.getClassNum();
+        //需要删除多余的排课记录
+        if(num.compareTo(laveClassHours1) > 0){
+            //课时数差额
+            int number1 = num - laveClassHours1;
+            double o = number1 % coursePackage.getNeedNum();
+            int l = 0;
+            if(0 != o){
+                l = 1;
+            }
+            int n = Double.valueOf(number1 / coursePackage.getNeedNum()).intValue() + l;
+            for (int i = 0; i < n; i++) {
+                CoursePackageScheduling coursePackageScheduling = list1.get(i);
+                coursePackageSchedulingService.deleteById(coursePackageScheduling.getId());
 
-            //新增课时
+                coursePackageStudentService.getBaseMapper().delete(new QueryWrapper<CoursePackageStudent>()
+                        .eq("coursePackageSchedulingId", coursePackageScheduling.getId()));
+            }
+        }
+            coursePackageOrderStudent.setAppUserId(null);
+        coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()-toHoliDto.getClassNum());
+            orderStudentService.updateById(coursePackageOrderStudent);
 
-            TCoursePackagePayment holi = new TCoursePackagePayment();
-            holi.setAppUserId(student.getAppUserId());
-            holi.setStudentId(student.getId());
-            holi.setCoursePackageId(toHoliDto.getClassId());
-            holi.setTotalClassHours(toHoliDto.getClassNum());
-            holi.setLaveClassHours(toHoliDto.getClassNum());
-            holi.setState(1);
-            holi.setInsertTime(new Date());
-            holi.setPayStatus(2);
-            paymentService.save(holi);
-
-
-            CourseCounsum courseCounsum = new CourseCounsum();
-            courseCounsum.setPaymentId(holi.getId());
-            courseCounsum.setChangeType(0);
-            courseCounsum.setNum(classNum);
-            courseCounsum.setInsertTime(new Date());
-            courseCounsum.setReason("报名假期班");
-            courseCounsumService.save(courseCounsum);
-
-            //排假期课
-
-            TCoursePackage tCoursePackage = packageService.getById(toHoliDto.getClassId());
-            String classWeeks = tCoursePackage.getClassWeeks();
+            //上课星期
+            String classWeeks = coursePackage1.getClassWeeks();
             List<Integer> week = week(classWeeks);
-
-            Date today = new Date();
-
-            Date startTime = tCoursePackage.getStartTime();
-            Date endTime = tCoursePackage.getEndTime();
-            LocalDate startDate = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-            LocalDate endDate = endTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-            Period period = Period.between(startDate, endDate);
-            int days = period.getDays() + 1;
-            Integer can = 999;
-            int count = 0;
-            String[] split = tCoursePackage.getClassStartTime().split(",");
-            String[] split1 = tCoursePackage.getClassEndTime().split(",");
+            //上课时段
+            String[] split = coursePackage1.getClassStartTime().split(",");
+            String[] split1 = coursePackage1.getClassEndTime().split(",");
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
             SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
 
+            Date startTime = coursePackage1.getStartTime();
+            Date endTime = coursePackage1.getEndTime();
+            //排课 本周+下周,课时不够扣则直接剩余不排课
             Calendar calendar = Calendar.getInstance();
-            calendar.setTime(startTime);
-            calendar.add(Calendar.DAY_OF_MONTH, -1);
+            //假期开始使用当前时间为起始时间进行排课
+            calendar.setTime(startTime.getTime() > System.currentTimeMillis() ? startTime : new Date());
+            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+            while (true) {
+                Date time = calendar.getTime();
 
-            Date[] dates = generateDateArray(days, calendar.getTime());
-            for (Date date : dates) {
-                if (count == can) {
+                //判断当天是否在排课星期内
+                int day = calendar.get(Calendar.DAY_OF_WEEK);
+                day = day - 1 == 0 ? 7 : day - 1;
+                if (!week.contains(day)) {
+                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                    continue;
+                }
+
+                //大于有效期不进行排课
+                if (calendar.getTimeInMillis() > endTime.getTime()) {
                     break;
                 }
-                int wei = cn.hutool.core.date.DateUtil.dayOfWeek(date) - 1;
-                if (wei == 0) {
-                    wei = 7;
+                for (int j = 0; j < split.length; j++) {
+                    CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+                    coursePackageScheduling.setType(coursePackage1.getType());
+                    coursePackageScheduling.setAppUserId(student.getAppUserId());
+                    coursePackageScheduling.setStudentId(Integer.valueOf(stuId));
+                    coursePackageScheduling.setCoursePackageId(coursePackage1.getId());
+                    Date parse = format1.parse(format.format(time) + " " + split[j]);
+                    Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
+                    coursePackageScheduling.setClassDate(parse);
+                    coursePackageScheduling.setEndDate(parse1);
+                    coursePackageScheduling.setStatus(1);
+                    coursePackageSchedulingService.insert(coursePackageScheduling);
+                    CoursePackageStudent student1 = new CoursePackageStudent();
+                    student1.setAppUserId(student.getAppUserId());
+                    student1.setStudentId(Integer.valueOf(stuId));
+                    student1.setCoursePackageId(coursePackage1.getId());
+                    student1.setCoursePackagePaymentId(null);
+                    student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+                    student1.setSignInOrNot(1);
+                    student1.setReservationStatus(1);
+                    student1.setInsertTime(new Date());
+                    cpsMapper.insert(student1);
                 }
-                if (week.contains(wei)) {
-                    for (int i1 = 0; i1 < split.length; i1++) {
-                        if (count == can) {
-                            break;
-                        }
-                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        Date parse = format1.parse(format.format(date) + " " + split[i1]);
-                        Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
-                        coursePackageScheduling.setClassDate(parse);
-                        coursePackageScheduling.setEndDate(parse1);
-                        coursePackageScheduling.setStatus(1);
-                        coursePackageSchedulingService.insert(coursePackageScheduling);
-                        CoursePackageStudent student1 = new CoursePackageStudent();
-                        student1.setAppUserId(student.getAppUserId());
-                        student1.setStudentId(student.getId());
-                        student1.setCoursePackageId(toHoliDto.getClassId());
-                        student1.setCoursePackagePaymentId(holi.getId());
-                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                        student1.setSignInOrNot(1);
-                        student1.setReservationStatus(1);
-                        student1.setInsertTime(new Date());
-                        studentService.save(student1);
-                        count++;
-                    }
-                }
+                //增加日期,用于判断
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
             }
 
 
-            System.out.println("保存成功=============》=" + holi);
 
 
+        CourseCounsum courseCounsum = new CourseCounsum();
+        courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
+        courseCounsum.setChangeType(0);
+        courseCounsum.setNum(toHoliDto.getClassNum());
+        courseCounsum.setInsertTime(new Date());
+        courseCounsum.setReason("报名假期班");
+//        courseCounsum.setAppUserId(userId);
+        courseCounsumService.save(courseCounsum);
         }
-        String[] stringArray = strings.toArray(new String[strings.size()]);
 
-        String join = StringUtils.join(stringArray, ",");
-        System.out.println("==========join========" + join);
-        return join;
+        return "报名成功";
 
 
     }
@@ -903,150 +975,149 @@
     @RequestMapping(value = "/toTrans", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
     @ResponseBody
     public String toTrans(@RequestBody ToHoliDto toHoliDto) throws ParseException {
-
-        String[] ids = toHoliDto.getIds();
-        List<String> strings = new ArrayList<>();
-
-
-        for (String id : ids) {
-            //扣除课时
-            TCoursePackagePayment payment = paymentService.getById(id);
-            System.out.println("=====byId=========" + payment);
-
-
-            Integer laveClassHours = payment.getLaveClassHours();
-
-            Integer classNum = toHoliDto.getClassNum();
-            Integer totalClassHours = payment.getTotalClassHours();
-            Student student = studentClient.queryStudentById(payment.getStudentId());
-
-//            if (laveClassHours < classNum){
-//                strings.add(student.getName()); continue;
+        String[] stuIds = toHoliDto.getIds();
+//        //查询出学员ids对应的棵树,判断剩余课时数是否够
+//        List<CoursePackageOrderStudent> list = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", toHoliDto.getClassId()).in("studentId", stuIds));
+//        List<String> notStudent = new ArrayList<>();
+//        for (CoursePackageOrderStudent coursePackageOrderStudent : list) {
+//            if (coursePackageOrderStudent.getLaveClassHours() < toHoliDto.getClassNum()) {
+//                notStudent.add(studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()).getName());
 //            }
-//
-//            Integer laveClassHoursnew = laveClassHours - classNum;
-//            Integer totalClassHoursnew = totalClassHours - classNum;
-            payment.setLaveClassHours(0);
-            payment.setTotalClassHours(0);
-            payment.setAppUserId(null);
+//        }
+//        if (!notStudent.isEmpty()) {
+//            String notStudentStr = String.join(",", notStudent);
+//            return notStudentStr+":课时数不足";
+//        }
 
-            paymentService.updateById(payment);
 
-            //获取student信息
+        //转移课程
+        for (String stuId : stuIds) {
+//            CoursePackageOrderStudent orinPay = orderStudentService.getById(toHoliDto.getId());
+            CoursePackageOrderStudent orinPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>()
+                    .eq("studentId", stuId)
+                    .eq("coursePackageId", toHoliDto.getId()));
+            CoursePackageOrderStudent studentPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>()
+                    .eq("studentId", stuId)
+                    .eq("coursePackageId", toHoliDto.getClassId()));
+            TCoursePackage coursePackage = packageService.getById(toHoliDto.getClassId());
+            if (studentPay != null) {
+                //转移
+                Integer laveClassHours = orinPay.getLaveClassHours();
+                Integer totalClassHours = orinPay.getTotalClassHours();
 
-            //新增课时
+                CourseCounsum courseCounsum = new CourseCounsum();
+                courseCounsum.setInsertTime(new Date());
+                Integer appUserId = orinPay.getAppUserId();
+                Integer appUserId1 = studentPay.getAppUserId();
 
-            TCoursePackagePayment one = paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId()));
+                    courseCounsum.setReason("换课");
 
-            TCoursePackagePayment holi = new TCoursePackagePayment();
-            if (one == null) {
-                holi.setAppUserId(student.getAppUserId());
-                holi.setStudentId(student.getId());
-                holi.setCoursePackageId(toHoliDto.getClassId());
-                holi.setTotalClassHours(laveClassHours);
-                holi.setLaveClassHours(laveClassHours);
-                holi.setState(1);
-                holi.setInsertTime(new Date());
-                holi.setPayStatus(2);
-                holi.setStatus(1);
-                paymentService.save(holi);
 
+                orinPay.setLaveClassHours(0);
+                orinPay.setStatus(3);
+                orinPay.setAppUserId(null);
+                orderStudentService.updateById(orinPay);
+
+                courseCounsum.setNum(laveClassHours);
+                courseCounsum.setChangeType(0);
+                courseCounsum.setPaymentId(orinPay.getId());
+                counsumService.save(courseCounsum);
+
+                CourseCounsum courseCounsum1 = new CourseCounsum();
+                courseCounsum1.setInsertTime(new Date());
+//                if (appUserId.compareTo(appUserId1) != 0) {
+//                    courseCounsum1.setReason("赠课");
+//                } else {
+                    courseCounsum1.setReason("换课");
+//                }
+                courseCounsum1.setNum(laveClassHours);
+                courseCounsum1.setChangeType(1);
+                courseCounsum1.setPaymentId(studentPay.getId());
+                counsumService.save(courseCounsum1);
+
+                schedulingService.addNewCoursePackageScheduling(studentPay.getId(), laveClassHours);
+                //删除原排课数据
+                List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
+                        .eq("type", 1).eq("appUserId", appUserId)
+                        .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId())
+                        .orderByAsc("classDate"));
+                int num = totalClassHours - laveClassHours;
+                for (int i = num; i < coursePackageSchedulings.size(); i++) {
+                    CoursePackageScheduling packageScheduling = coursePackageSchedulings.get(i);
+                    coursePackageSchedulingService.deleteById(packageScheduling.getId());
+                    coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId()));
+                }
             } else {
-                one.setTotalClassHours(one.getTotalClassHours() + laveClassHours);
-                one.setLaveClassHours(one.getLaveClassHours() + laveClassHours);
-                one.setAppUserId(null);
-                paymentService.updateById(one);
-                holi = one;
-            }
-            System.out.println("保存成功=============》=" + holi);
 
+                Integer totalClassHours = orinPay.getTotalClassHours();
+                Integer laveClassHours = orinPay.getLaveClassHours();
+                Student student = studentClient.queryStudentById(Integer.valueOf(stuId));
+                CoursePackageOrderStudent to = new CoursePackageOrderStudent();
+                to.setStudentId(Integer.valueOf(stuId));
+                to.setTotalClassHours(laveClassHours);
+                to.setLaveClassHours(laveClassHours);
+                to.setCoursePackageId(toHoliDto.getClassId());
+                to.setState(1);
+                to.setAppUserId(student.getAppUserId());
+                to.setStatus(1);
+                to.setInsertTime(new Date());
 
-            CourseCounsum courseCounsum = new CourseCounsum();
-            courseCounsum.setPaymentId(holi.getId());
-            courseCounsum.setChangeType(1);
-            courseCounsum.setNum(laveClassHours);
-            courseCounsum.setInsertTime(new Date());
-            courseCounsum.setReason("换课");
-            courseCounsumService.save(courseCounsum);
-
-
-            TCoursePackage tCoursePackage = packageService.getById(toHoliDto.getClassId());
-            String classWeeks = tCoursePackage.getClassWeeks();
-            List<Integer> week = week(classWeeks);
-
-            String[] split = tCoursePackage.getClassStartTime().split(",");
-            String[] split1 = tCoursePackage.getClassEndTime().split(",");
-            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-            // 本周周几
-
-            List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId()));
-            List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
-            //拿到最后一天的排课记录
-            if (collect.size() > 0) {
-                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
-                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId()));
-            }
-
-
-            Date today = new Date();
-
-
-            TCoursePackagePayment pay = coursePackagePaymentService.getById(holi.getId());
-            Integer laveClassHours1 = pay.getLaveClassHours();
-            Integer codeTime = tCoursePackage.getCodeTime();
-            Integer can = 0;
-
-
-            int count = 0;
-
-            // 本周周几
-//        int i = DateUtil.dayOfWeek(new Date())-1;
-
-            Date[] dates = generateDateArray(14, today);
-            can = laveClassHours1 / codeTime;
-
-            for (Date date : dates) {
-                if (count == can) {
-                    break;
+                Integer validDays = coursePackage.getValidDays();
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(new Date());
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
+                to.setUseTime(calendar.getTime());
+                orderStudentService.save(to);
+                if (null == student.getValidity()) {
+                    student.setValidity(calendar.getTime());
+                } else if (student.getValidity().getTime() < calendar.getTime().getTime()) {
+                    student.setValidity(calendar.getTime());
                 }
-                int wei = DateUtil.dayOfWeek(date);
-                if (week.contains(wei)) {
-                    for (int i1 = 0; i1 < split.length; i1++) {
-                        if (count == can) {
-                            break;
-                        }
-                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        Date parse = format1.parse(format.format(date) + " " + split[i1]);
-                        Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
-                        coursePackageScheduling.setClassDate(parse);
-                        coursePackageScheduling.setEndDate(parse1);
-                        coursePackageScheduling.setStatus(1);
-                        coursePackageSchedulingService.insert(coursePackageScheduling);
-                        CoursePackageStudent student1 = new CoursePackageStudent();
-                        student1.setAppUserId(student.getAppUserId());
-                        student1.setStudentId(student.getId());
-                        student1.setCoursePackageId(tCoursePackage.getId());
-                        student1.setCoursePackagePaymentId(holi.getId());
-                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                        student1.setSignInOrNot(1);
-                        student1.setReservationStatus(1);
-                        student1.setInsertTime(new Date());
-                        cpsMapper.insert(student1);
-                        count++;
-                    }
+                studentClient.frozen(student);
+
+
+                Integer laveClassHours1 = orinPay.getLaveClassHours();
+                Integer appUserId = orinPay.getAppUserId();
+                orinPay.setLaveClassHours(0);
+                orinPay.setAppUserId(null);
+                orinPay.setStatus(3);
+                orderStudentService.updateById(orinPay);
+
+
+                CourseCounsum courseCounsum = new CourseCounsum();
+                courseCounsum.setInsertTime(new Date());
+                courseCounsum.setReason("换课");
+                courseCounsum.setNum(laveClassHours1);
+                courseCounsum.setChangeType(0);
+                courseCounsum.setPaymentId(orinPay.getId());
+                counsumService.save(courseCounsum);
+
+
+                CourseCounsum courseCounsum1 = new CourseCounsum();
+                courseCounsum1.setInsertTime(new Date());
+                courseCounsum1.setReason("换课");
+                courseCounsum1.setNum(laveClassHours1);
+                courseCounsum1.setChangeType(1);
+                courseCounsum1.setPaymentId(to.getId());
+                counsumService.save(courseCounsum1);
+
+                //开始排课
+                addPackageStudent(coursePackage, to.getAppUserId(), to.getStudentId(), to);
+                //删除原排课数据
+                List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
+                        .eq("type", 1).eq("appUserId", appUserId)
+                        .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId())
+                        .orderByAsc("classDate"));
+                int num = totalClassHours - laveClassHours;
+                for (int i = num; i < coursePackageSchedulings.size(); i++) {
+                    CoursePackageScheduling packageScheduling = coursePackageSchedulings.get(i);
+                    coursePackageSchedulingService.deleteById(packageScheduling.getId());
+                    coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId()));
                 }
             }
-
 
         }
-        String[] stringArray = strings.toArray(new String[strings.size()]);
+    return "换课成功";
 
-        String join = StringUtils.join(stringArray, ",");
-        System.out.println("==========join========" + join);
-        return "转课成功";
     }
-
-
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java
index 31eedce..93dbc1f 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java
@@ -55,8 +55,6 @@
      */
     @PostMapping("/student/queryTStudentListByName")
     List<TStudent> queryTStudentListByName(@RequestBody String name);
-
-
     /**
      * 修改数据
      * @param student
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java
index 48b858c..d66b31b 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java
@@ -71,7 +71,7 @@
      */
     private Integer isDefault;
     /**
-     * 所有课时有效期
+     * 课时有效期
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date validity;
diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java
index c7b7e9b..fc5d66d 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java
@@ -43,4 +43,5 @@
     void updateSignInOrNotById(@Param("id") Long id);
 
 
+    List<ClassListDto> getHoliList(@Param("tStudentId")Integer tStudentId);
 }
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 1428de3..7b7d109 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
@@ -83,4 +83,6 @@
     List<TCoursePackagePayment> listOne(@Param("ids") List<Integer> ids);
 
     Integer queryStore(String code);
+
+    List<Map<String, Object>> queryRegistrationRecord3(Integer coursePackageId, List<Integer> userIds, List<Integer> studentIds);
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java
index 3b2c382..6acdef8 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java
@@ -134,42 +134,67 @@
                     String weekOfDate = DateTimeHelper.getWeekOfDate(new Date());
 //                    if (integerList.contains(weekOfDate)) {
                         String dat = simpleDateFormat.format(byId.getClassDate()) + " " + dateString1.substring(11);
+                    String ed = simpleDateFormat.format(byId.getEndDate()) + " " + dateString2.substring(11);
 
                         Date start = null;
+                        Date end = null;
                         try {
                             start = format.parse(dat);
+                            end = format.parse(ed);
                         } catch (ParseException e) {
                             throw new RuntimeException(e);
                         }
+
+                    CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>()
+                            .eq("coursePackageSchedulingId", byId.getId()).last("limit 1"));
+//                   else {
+//                        Date now = new Date();
+//                        if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) {
+//                            recordVo.setStatus(2);
+//                        } else {
+//                            recordVo.setStatus(3);
+//
+//                        }
+//                    }
+
                         //已取消
                         if (byId.getStatus() == 4) {
                             recordVo.setStatus(4);
                         } else if (coursePackageStudent.getSignInOrNot() == 2) {
                             //已请假
                             recordVo.setStatus(5);
-                        } else if (start.after(new Date())) {
+                        }else if  (ToolUtil.isNotEmpty(cancelledClasses)) {
+                        recordVo.setStatus(3);
+                        // 消课 到课状态0 旷课
+                        if (coursePackageStudent.getSignInOrNot() == 0) {
+                            recordVo.setStatus(6);
+                        }
+
+                    }else if (new Date().after(start)&&new Date().before(end)){
+                            recordVo.setStatus(2);
+                        }else if (start.after(new Date())) {
                             //待上课
                             recordVo.setStatus(1);
                         }
                         else {
-                            CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>()
-                                    .eq("coursePackageSchedulingId", byId.getId()).last("limit 1"));
-                            if (ToolUtil.isNotEmpty(cancelledClasses)) {
-                                recordVo.setStatus(3);
-                                // 消课 到课状态0 旷课
-                                if (coursePackageStudent.getSignInOrNot() == 0) {
-                                    recordVo.setStatus(6);
-                                }
-
-                            } else {
-                                Date now = new Date();
-                                if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) {
-                                    recordVo.setStatus(2);
-                                } else {
-                                    recordVo.setStatus(3);
-
-                                }
-                            }
+//                            CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>()
+//                                    .eq("coursePackageSchedulingId", byId.getId()).last("limit 1"));
+//                            if (ToolUtil.isNotEmpty(cancelledClasses)) {
+//                                recordVo.setStatus(3);
+//                                // 消课 到课状态0 旷课
+//                                if (coursePackageStudent.getSignInOrNot() == 0) {
+//                                    recordVo.setStatus(6);
+//                                }
+//
+//                            } else {
+//                                Date now = new Date();
+//                                if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) {
+//                                    recordVo.setStatus(2);
+//                                } else {
+//                                    recordVo.setStatus(3);
+//
+//                                }
+//                            }
                         }
 //                    } else {
 //                        recordVo.setStatus(1);
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 b8e875a..f94add7 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
@@ -320,7 +320,7 @@
             TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
             Integer codeTime = coursePackage.getCodeTime();
             Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
-            Student student = studentClient.queryStudentById(coursePackageScheduling.getStudentId());
+            Student student = studentClient.queryStudentById(coursePackageOrderStudent.getStudentId());
             Date validity = student.getValidity();
 
             Calendar calendar = Calendar.getInstance();
@@ -344,7 +344,7 @@
                 //从第二天开始
                 Calendar startTime = Calendar.getInstance();
                 startTime.setTime(new Date());
-                startTime.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
                 startTime.set(Calendar.HOUR_OF_DAY, 0);
                 startTime.set(Calendar.MINUTE, 0);
                 startTime.set(Calendar.SECOND, 0);
@@ -414,12 +414,26 @@
                 }
 
             }else{
-                Date classDate = coursePackageScheduling.getClassDate();
-                if(codeTime.compareTo(laveClassHours) > 0 && calendar.getTimeInMillis() > classDate.getTime()){
+                Date classDate = new Date();
+
+                if (coursePackageScheduling!=null){
+                    classDate = coursePackageScheduling.getClassDate();
+                }
+
+                int count = this.count(new QueryWrapper<CoursePackageScheduling>()
+                        .eq("appUserId", coursePackageOrderStudent.getAppUserId())
+                        .eq("studentId", coursePackageOrderStudent.getStudentId())
+                        .eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId())
+                        .eq("status", 1)
+                );
+
+                Integer number = laveClassHours - count;
+                if((number.compareTo(codeTime) > 0 && calendar.getTimeInMillis() > classDate.getTime())||coursePackageScheduling==null){
                     //从第二天开始
                     Calendar startTime = Calendar.getInstance();
-                    startTime.setTime(new Date());
-                    startTime.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+//                    startTime.setTime(coursePackageScheduling.getClassDate());
+                    startTime.setTime(classDate);
+                    startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
                     startTime.set(Calendar.HOUR_OF_DAY, 0);
                     startTime.set(Calendar.MINUTE, 0);
                     startTime.set(Calendar.SECOND, 0);
@@ -431,13 +445,13 @@
                     String classWeeks = coursePackage.getClassWeeks();
                     List<Integer> week = week(classWeeks);
                     //新剩余课时
-                    laveClassHours += classNumber;
+                    number += classNumber;
 
                     //判断最后一天是否所有时段都已排完
                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                     SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
-                    String format = sdf.format(coursePackageScheduling.getClassDate());
-                    String time = format.substring(format.indexOf(" "));
+                    String format = sdf.format(classDate);
+                    String time = format.substring(0,format.indexOf(" ") + 1);
                     String classStartTime = coursePackage.getClassStartTime();
                     String classEndTime = coursePackage.getClassEndTime();
                     String[] split = classStartTime.split(",");
@@ -448,10 +462,10 @@
                         n++;
                         for (int i = n; i < split.length; i++) {
                             //剩余数量不足以排课
-                            if (laveClassHours.compareTo(codeTime) < 0) {
+                            if (number.compareTo(codeTime) < 0) {
                                 break;
                             }
-                            laveClassHours -= codeTime;
+                            number -= codeTime;
                             CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
                             packageScheduling.setType(coursePackage.getType());
                             packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
@@ -493,11 +507,11 @@
                         }
                         for (int j = 0; j < split.length; j++) {
                             //剩余数量不足以排课
-                            if (laveClassHours.compareTo(codeTime) < 0) {
+                            if (number.compareTo(codeTime) < 0) {
                                 break;
                             }
 
-                            laveClassHours -= codeTime;
+                            number -= codeTime;
 
                             CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
                             packageScheduling.setType(coursePackage.getType());
@@ -533,6 +547,12 @@
             coursePackageOrderStudent.setUseTime(useTime);
             coursePackageOrderStudent.setStatus(1);
             coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
+            if(null == student.getValidity()){
+                student.setValidity(useTime);
+            }else if(student.getValidity().getTime() < useTime.getTime()){
+                student.setValidity(useTime);
+            }
+            studentClient.frozen(student);
         }catch (Exception e){
             e.printStackTrace();
         }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java
index dfe4735..3016932 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java
@@ -107,7 +107,11 @@
 
     @Override
     public List<ClassListDto> getClassList(Integer tStudentId) {
-        return this.baseMapper.getClassList(tStudentId);
+        List<ClassListDto> classList = this.baseMapper.getClassList(tStudentId);
+        List<ClassListDto> holiList = this.baseMapper.getHoliList(tStudentId);
+        classList.addAll(holiList);
+
+        return classList;
     }
 
     @Override
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 2766726..5b5a589 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
@@ -540,6 +540,7 @@
             }
             Store store = storeClient.queryStoreById(coursePackage.getStoreId());
             response.setStoreName(store.getName());
+            response.setStoreAddress(store.getAddress());
 
             if (ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)) {
                 Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat());
@@ -1240,10 +1241,14 @@
         List<Map<String, Object>> list = new ArrayList<>();
 
         if (coursePackage.getType()==1){
-      list = this.baseMapper.queryRegistrationRecord(page, coursePackageId, userIds, studentIds);}else {
+      list = this.baseMapper.queryRegistrationRecord(page, coursePackageId, userIds, studentIds);
+        }else {
             list = this.baseMapper.queryRegistrationRecord1(page, coursePackageId, userIds, studentIds);
         }
+
+        list.addAll(this.baseMapper.queryRegistrationRecord3(coursePackageId,userIds,studentIds));
         for (Map<String, Object> map : list) {
+
 
             Long id = Long.valueOf(map.get("id").toString());
             Integer appUserId = Integer.valueOf(map.get("appUserId").toString());
@@ -1251,7 +1256,7 @@
             if (coursePackage.getType()==1) {
                 studentId = Integer.valueOf(map.get("studentId").toString());
             }else {
-                studentId = Integer.valueOf(map.get("studentIds").toString());
+                studentId = Integer.valueOf(map.get("studentIds").toString().split(",")[0]);
             }
 
             TAppUser appUser = appuClient.queryAppUser1(appUserId);
@@ -1261,6 +1266,11 @@
             map.put("studentName", null != student ? student.getName() : "");
             Integer integer = cpsMapper.selectCount(new QueryWrapper<CoursePackageStudent>().eq("appUserId", appUserId)
                     .eq("studentId", studentId).eq("coursePackagePaymentId", id).eq("signInOrNot", 2));
+
+            int count = coursePackageStudentService.count(new QueryWrapper<CoursePackageStudent>().eq("coursePackageId", coursePackageId).eq("studentId", studentId).eq("signInOrNot",2));
+
+            map.put("absencesNumber", count);
+
             map.put("already", integer);
         }
         return list;
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 870960c..a6fc83c 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
@@ -1783,6 +1783,8 @@
     }
 
 
+    @Autowired
+    private ICoursePackageOrderStudentService orderStudentService;
     /**
      * 修改数据
      *
@@ -1799,65 +1801,67 @@
                 coursePackageSchedulingQueryWrapper.notIn("id", collect);
             }
             coursePackageSchedulingService.remove(coursePackageSchedulingQueryWrapper);
+            int coursePackageId = orderStudentService.count(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", coursePackage.getId()));
+            if (coursePackageId>0) {
+                this.baseMapper.updateById(coursePackage);
 
-            this.baseMapper.updateById(coursePackage);
-
-            //生成排课数据
-            Date date = null;
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", coursePackage.getId()).last(" and classDate > now() order by classDate desc limit 0, 1"));
-            if (null != coursePackageScheduling) {
-                date = sdf1.parse(sdf.format(coursePackageScheduling.getClassDate()) + " 00:00:00");
-            } else {
-                date = sdf1.parse(sdf.format(new Date()) + " 00:00:00");
-            }
-            List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";"));
-            String classStartTime = coursePackage.getClassStartTime();
-            String[] split = classStartTime.split(":");
-            String classEndTime = coursePackage.getClassEndTime();
-            String[] split1 = classEndTime.split(":");
-            Calendar s = Calendar.getInstance();
-            s.setTime(date);
-            s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
-
-            Calendar e = Calendar.getInstance();
-            e.setTime(date);
-            if (null != coursePackageScheduling) {
-                long time = sdf1.parse(sdf.format(new Date()) + " 00:00:00").getTime();
-                int d = Long.valueOf(14L - ((s.getTimeInMillis() - time) / 86400000L)).intValue();
-                e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + d);
-            } else {
-                e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 14);
-            }
-            long timeInMillis = e.getTimeInMillis();
-
-            while (true) {
-                int w = s.get(Calendar.DAY_OF_WEEK);
-                WeekEnum weekEnum = WeekEnum.getWeekEnum(w);
-                if (list.contains(weekEnum.getChineseName())) {
-                    Calendar classDate = Calendar.getInstance();
-                    classDate.setTime(s.getTime());
-                    classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
-                    classDate.set(Calendar.MINUTE, Integer.valueOf(split[1]));
-                    classDate.set(Calendar.SECOND, 0);
-
-                    Calendar endDate = Calendar.getInstance();
-                    endDate.setTime(s.getTime());
-                    endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
-                    endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
-                    endDate.set(Calendar.SECOND, 0);
-
-                    CoursePackageScheduling coursePackageScheduling1 = new CoursePackageScheduling();
-                    coursePackageScheduling1.setCoursePackageId(coursePackage.getId());
-                    coursePackageScheduling1.setClassDate(classDate.getTime());
-                    coursePackageScheduling1.setEndDate(endDate.getTime());
-                    coursePackageScheduling1.setStatus(1);
-                    coursePackageSchedulingService.save(coursePackageScheduling1);
+                //生成排课数据
+                Date date = null;
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", coursePackage.getId()).last(" and classDate > now() order by classDate desc limit 0, 1"));
+                if (null != coursePackageScheduling) {
+                    date = sdf1.parse(sdf.format(coursePackageScheduling.getClassDate()) + " 00:00:00");
+                } else {
+                    date = sdf1.parse(sdf.format(new Date()) + " 00:00:00");
                 }
+                List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";"));
+                String classStartTime = coursePackage.getClassStartTime();
+                String[] split = classStartTime.split(":");
+                String classEndTime = coursePackage.getClassEndTime();
+                String[] split1 = classEndTime.split(":");
+                Calendar s = Calendar.getInstance();
+                s.setTime(date);
                 s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
-                if (s.getTimeInMillis() > timeInMillis) {
-                    break;
+
+                Calendar e = Calendar.getInstance();
+                e.setTime(date);
+                if (null != coursePackageScheduling) {
+                    long time = sdf1.parse(sdf.format(new Date()) + " 00:00:00").getTime();
+                    int d = Long.valueOf(14L - ((s.getTimeInMillis() - time) / 86400000L)).intValue();
+                    e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + d);
+                } else {
+                    e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 14);
+                }
+                long timeInMillis = e.getTimeInMillis();
+
+                while (true) {
+                    int w = s.get(Calendar.DAY_OF_WEEK);
+                    WeekEnum weekEnum = WeekEnum.getWeekEnum(w);
+                    if (list.contains(weekEnum.getChineseName())) {
+                        Calendar classDate = Calendar.getInstance();
+                        classDate.setTime(s.getTime());
+                        classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
+                        classDate.set(Calendar.MINUTE, Integer.valueOf(split[1]));
+                        classDate.set(Calendar.SECOND, 0);
+
+                        Calendar endDate = Calendar.getInstance();
+                        endDate.setTime(s.getTime());
+                        endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
+                        endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
+                        endDate.set(Calendar.SECOND, 0);
+
+                        CoursePackageScheduling coursePackageScheduling1 = new CoursePackageScheduling();
+                        coursePackageScheduling1.setCoursePackageId(coursePackage.getId());
+                        coursePackageScheduling1.setClassDate(classDate.getTime());
+                        coursePackageScheduling1.setEndDate(endDate.getTime());
+                        coursePackageScheduling1.setStatus(1);
+                        coursePackageSchedulingService.save(coursePackageScheduling1);
+                    }
+                    s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
+                    if (s.getTimeInMillis() > timeInMillis) {
+                        break;
+                    }
                 }
             }
         } catch (Exception e) {
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/httpClinet/ResultUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/httpClinet/ResultUtil.java
new file mode 100644
index 0000000..34b9319
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/httpClinet/ResultUtil.java
@@ -0,0 +1,195 @@
+package com.dsh.course.util.httpClinet;
+
+/**
+ * 定义统一返回对象
+ */
+public class ResultUtil<T> {
+
+    public static final Integer SUCCESS = 200;
+
+    public static final Integer PARAM_ERROR = 300;
+
+    public static final Integer RUNTIME_ERROR = 400;
+
+    public static final Integer ERROR = 500;
+
+    public static final String Token = "Token失效";
+
+    private Integer status;//状态码
+
+    private Integer code;//备用状态码
+
+    private String msg;//返回说明
+
+    private T data;//返回数据
+
+    private String str;//存储单个字符串值
+
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public String getStr() {
+        return str;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public ResultUtil(Integer status, Integer code, String msg) {
+        this.status = status;
+        this.code = code;
+        this.msg = msg;
+    }
+
+    private ResultUtil(Integer status, Integer code, String msg, T data) {
+        this.status = status;
+        this.code = code;
+        this.msg = msg;
+        this.data = data;
+    }
+
+    public ResultUtil(Integer status, Integer code, String msg, T data, String str) {
+        this.status = status;
+        this.code = code;
+        this.msg = msg;
+        this.data = data;
+        this.str = str;
+    }
+
+    private ResultUtil(Integer status, Integer code, String msg, String str) {
+        this.status = status;
+        this.code = code;
+        this.msg = msg;
+        this.str = str;
+    }
+
+
+    public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg){
+        return new ResultUtil<>(status, code, msg);
+    }
+
+    public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg, T data){
+        return new ResultUtil<>(status, code, msg, data);
+    }
+
+    public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg, T data, String str){
+        return new ResultUtil<>(status, code, msg, data, str);
+    }
+
+    /**
+     * 错误信息
+     * @return
+     */
+    public static ResultUtil error(String mag){
+        return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, mag);
+    }
+
+    /**
+     * 错误信息
+     * @return
+     */
+    public static <T> ResultUtil <T> error(String mag, T obj){
+        return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, mag, obj);
+    }
+
+    /**
+     * token失效
+     * @return
+     */
+    public static ResultUtil tokenErr(){
+        return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, ResultUtil.Token);
+    }
+
+    /**
+     * token失效
+     * @return
+     */
+    public static ResultUtil tokenErr(String msg){
+        return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, msg);
+    }
+
+    /**
+     * 参数异常
+     * @return
+     */
+    public static  ResultUtil paranErr(){
+        return ResultUtil.getResult(ResultUtil.PARAM_ERROR, ResultUtil.PARAM_ERROR, "参数异常");
+    }
+
+    /**
+     * 参数异常
+     * @return
+     */
+    public static <T> ResultUtil<T> paranErr(T data){
+        return ResultUtil.getResult(ResultUtil.PARAM_ERROR, ResultUtil.PARAM_ERROR, "参数异常", data);
+    }
+
+    /**
+     * 运行异常
+     * @return
+     */
+    public static ResultUtil runErr(){
+        return ResultUtil.getResult(ResultUtil.RUNTIME_ERROR, ResultUtil.RUNTIME_ERROR, "服务器运行异常");
+    }
+
+
+    /**
+     * 运行异常
+     * @return
+     */
+    public static <T>ResultUtil<T> runErr(T data){
+        return ResultUtil.getResult(ResultUtil.RUNTIME_ERROR, ResultUtil.RUNTIME_ERROR, "服务器运行异常", data);
+    }
+
+
+    /**
+     * 返回成功
+     * @param
+     * @return
+     */
+    public static ResultUtil success(){
+        return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功");
+    }
+
+
+    /**
+     * 返回成功
+     * @param data
+     * @param <T>
+     * @return
+     */
+    public static <T> ResultUtil<T> success(T data){
+        return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功", data);
+    }
+
+    /**
+     * 返回成功
+     * @param data
+     * @param str
+     * @param <T>
+     * @return
+     */
+    public static <T> ResultUtil<T> success(T data, String str){
+        return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功", data, str);
+    }
+
+    public static <T> ResultUtil<T> success(String msg, T data){
+        return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, msg, data);
+    }
+
+    public static <T> ResultUtil<T> success(String msg, T data, String str){
+        return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, msg, data, str);
+    }
+
+}
diff --git a/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml b/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
index dba0115..48d9f6e 100644
--- a/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
@@ -73,4 +73,15 @@
         FROM t_course_package_payment py
         where py.studentId = #{tStudentId}
     </select>
+    <select id="getHoliList" resultType="com.dsh.course.entity.dto.ClassListDto">
+        select
+            od.id,od.insertTime as insertTime, cp.name as className,cp.type as classType
+        from t_course_package_order od
+                 left join t_course_package cp on od.coursePackageId = cp.id
+
+        WHERE            od.payStatus = 2  and cp.type = 2
+
+
+
+    </select>
 </mapper>
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
index 929e249..b70297c 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -96,6 +96,7 @@
         WHEN laveClassHours &lt; 3 THEN 0
         ELSE 1
         END, insertTime DESC
+
     </select>
 
     <select id="queryRegistrationRecord1" resultType="map">
@@ -254,6 +255,20 @@
                 LEFT JOIN t_competition  tc on pc.competitionId = tc.id
         WHERE pc.code=#{code}
     </select>
+    <select id="queryRegistrationRecord3" resultType="java.util.Map">
+        SELECT        CAST(id AS CHAR(20)) as id,
+                      appUserId, studentId,
+                      DATE_FORMAT(classDate, '%Y-%m-%d %H:%i') as insertTime,
+                      DATE_FORMAT(DATE(MIN(classDate)), '%Y-%m-%d') AS totalClassHours,
+                      DATE_FORMAT( DATE(MAX(endDate)), '%Y-%m-%d') AS laveClassHours,
+            '' as absencesNumber,
+            7 as status,
+            3 as type
+        FROM t_course_package_scheduling where type = 3
+        GROUP BY coursePackageId, studentId;
+
+
+    </select>
 
     <update id="updateBytime">
         update  t_course_package_payment
diff --git a/cloud-server-management/src/main/java/com/dsh/course/dto/updateTimeDto.java b/cloud-server-management/src/main/java/com/dsh/course/dto/updateTimeDto.java
index 82a9b46..a30892a 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/dto/updateTimeDto.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/dto/updateTimeDto.java
@@ -1,12 +1,16 @@
 package com.dsh.course.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.util.Date;
 @Data
 @AllArgsConstructor
+@NoArgsConstructor
 public class updateTimeDto {
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date date;
     private Integer tStudentId;
 }
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/account/AppUserClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java
index 8977bf9..7052648 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java
@@ -155,4 +155,6 @@
     void save(EvaluateStudent evaluateStudent);
     @PostMapping("/student/comdel")
     void comdel(@RequestBody Integer id);
+    @PostMapping("/student/updatePassWord")
+    void updatePassWord(@RequestBody List<String> strings);
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/StudentClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/StudentClient.java
index 4283ba9..9a62aff 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/StudentClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/StudentClient.java
@@ -1,9 +1,6 @@
 package com.dsh.course.feignClient.account;
 
-import com.dsh.course.dto.CreateHistoryDto;
-import com.dsh.course.dto.GetHistoryDto;
-import com.dsh.course.dto.StudentSearch;
-import com.dsh.course.dto.TStudentDto;
+import com.dsh.course.dto.*;
 import com.dsh.course.feignClient.account.model.QueryAppUser;
 import com.dsh.course.feignClient.account.model.QueryAppUserVO;
 import com.dsh.course.feignClient.account.model.QueryByNamePhone;
@@ -14,6 +11,7 @@
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -42,4 +40,8 @@
 
     @PostMapping("/student/frozen")
     void frozen(@RequestBody TStudent student);
+    @PostMapping("/student/getById")
+    Date getById(@RequestBody Integer tStudentId);
+    @PostMapping("/student/update1")
+    void update(@RequestBody updateTimeDto updateTimeDto);
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java
index c652760..183c22e 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java
@@ -43,6 +43,10 @@
     void cancel(Integer id);
     @PostMapping("/base/competition/getPeopleFromId")
     Page<CompetitionUser> getPeopleFromId(GetPeopleQuery getPeopleQuery);
+
+
+    @PostMapping("/base/competition/getPeopleFromId1")
+    List<CompetitionUser> getPeopleFromId1(@RequestBody GetPeopleQuery getPeopleQuery);
     @PostMapping("/base/competition/getPeoples")
     List<CompetitionUser> getPeoples(@RequestBody GetPeopleQuery getPeopleQuery);
     @PostMapping("/base/competition/listUser")
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageClient.java
index d416ef0..57be3cf 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageClient.java
@@ -94,6 +94,6 @@
     @PostMapping("/courdent/queryIdsByStore")
     List<Integer> queryIdsByStore(Integer objectId);
 
-
-
+    @PostMapping("/courdent/queryAble")
+    Integer queryAble(Integer id);
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
index 8504df7..09e19f9 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
@@ -87,7 +87,7 @@
 
 
     @PostMapping("/coursePackagePayment/consumeCourse")
-    ResultUtil consumeCourse(@RequestBody Integer coursePackagePaymentId);
+    Integer consumeCourse(@RequestBody Integer coursePackagePaymentId);
 
     @PostMapping("/coursePackagePayment/queryCoursePackagePaymentById1")
     CoursePackageOrderStudent queryCoursePackagePaymentById1(@RequestParam("id")Long id);
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 7ac96bf..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")
@@ -106,7 +108,7 @@
 
     @PostMapping("/courdent/insertBack")
 
-    void insertBack(@RequestBody InsertBackDto insertBackDto);
+    Integer insertBack(@RequestBody InsertBackDto insertBackDto);
 
     @RequestMapping("/courdent/changeStatus")
     void changeStatus(@RequestParam("id")Integer id);
@@ -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/course/mapper/SiteLockMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/SiteLockMapper.java
new file mode 100644
index 0000000..304e51a
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/SiteLockMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.course.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import com.dsh.course.entity.SiteLock;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/18 14:43
+ */
+public interface SiteLockMapper extends BaseMapper<SiteLock> {
+
+}
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..771f4c7 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","/updatePassword"};
 
 
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
index 1f3af00..8cd2024 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
@@ -366,6 +366,14 @@
         return coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id);
     }
 
+
+    @RequestMapping(value = "/getCoursePackageType")
+    @ResponseBody
+    public Integer getCoursePackageType(Integer id) {
+        TCoursePackage coursePackage = coursePackageClient.queryById(id);
+        return coursePackage.getType();
+    }
+
 }
 
 
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/code/TCompetitionController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
index 8e9c16b..8a1e9e9 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
@@ -31,6 +31,7 @@
 import org.springframework.web.bind.annotation.ResponseBody;
 import sun.rmi.runtime.Log;
 
+import javax.jws.soap.SOAPBinding;
 import javax.servlet.http.HttpServletResponse;
 import java.io.OutputStream;
 import java.text.DateFormat;
@@ -285,41 +286,41 @@
         ListQuery listQuery = new ListQuery(page.getSize(),page.getCurrent(),provinceCode,cityCode,eventName,time,state,registerCondition,ids,UserExt.getUser().getObjectType());
         Page<Competition> competitions = competitionClient.list(listQuery);
         List<Competition> records = new ArrayList<>();
-//        for (Competition competition : competitions.getRecords()) {
-////            if (competition.getStatus()==4){
-////                continue;
-////            }
-//
-//            // 当前时间小于开始时间
-//            if (competition.getStartTime().after(new Date())){
-//                competition.setStatus(1);
-//            }
-//            if (competition.getStartTime().before(new Date())){
-//
-//
-//                if (competition.getEndTime().after(new Date())){
-//                    competition.setStatus(2);
-//                }else{
-//                    competition.setStatus(3);
-//                }
-//            }
-//            if (competition.getStatus()!=state && state != null){
-//            }else{
-//                records.add(competition);
-//            }
-//            for (TStore tStore : list) {
-//                String[] split = competition.getStoreId().split(",");
-//                for (String s : split) {
-//                    if(s.equals(String.valueOf(tStore.getId()))){
-//                        if (competition.getStoreName()==null){
-//                            competition.setStoreName(tStore.getName());
-//                        }else {
-//                            competition.setStoreName(competition.getStoreName()+","+tStore.getName());
-//                        }
-//                    }
-//                }
-//            }
-//        }
+        for (Competition competition : competitions.getRecords()) {
+            if (competition.getStatus()==4){
+                continue;
+            }
+
+            // 当前时间小于开始时间
+            if (competition.getStartTime().after(new Date())){
+                competition.setStatus(1);
+            }
+            if (competition.getStartTime().before(new Date())){
+
+
+                if (competition.getEndTime().after(new Date())){
+                    competition.setStatus(2);
+                }else{
+                    competition.setStatus(3);
+                }
+            }
+            if (competition.getStatus()!=state && state != null){
+            }else{
+                records.add(competition);
+            }
+            for (TStore tStore : list) {
+                String[] split = competition.getStoreId().split(",");
+                for (String s : split) {
+                    if(s.equals(String.valueOf(tStore.getId()))){
+                        if (competition.getStoreName()==null){
+                            competition.setStoreName(tStore.getName());
+                        }else {
+                            competition.setStoreName(competition.getStoreName()+","+tStore.getName());
+                        }
+                    }
+                }
+            }
+        }
         competitions.setRecords(records);
         System.err.println(competitions.getRecords());
         return  super.packForBT(competitions);
@@ -328,12 +329,12 @@
 
     @RequestMapping(value = "/listUser/{id}")
     @ResponseBody
-    public Object listUser(@PathVariable Integer id,Integer state) {
+    public Object listUser(@PathVariable Integer id,Integer state, Integer offset,Integer limit) {
         try {
-            Page<Object> page = new PageFactory<>().defaultPage();
-            Page<CompetitionUser> data =  competitionClient.getPeopleFromId
-                    (new GetPeopleQuery(page.getSize(),page.getCurrent(),id,state));
-            return  super.packForBT(data);
+//            Page<Object> page = new PageFactory<>().defaultPage();
+//            Page<CompetitionUser> data =  competitionClient.getPeopleFromId(new GetPeopleQuery(limit,offset,id,state));
+            List <CompetitionUser> data =  competitionClient.getPeopleFromId1(new GetPeopleQuery(limit,offset,id,state));
+            return  data;
         }catch (Exception e){
             e.printStackTrace();
             return ERROR;
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
index 6121a31..3d9f9a1 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
@@ -289,6 +289,12 @@
             System.out.println("=========coursePackagePaymentConfig=============>" + coursePackagePaymentConfig);
 //        model.addAttribute("couponIds", "3,2");
         }
+
+
+           Integer able  =  coursePackageClient.queryAble(id);
+
+        model.addAttribute("able",able);
+
         return PREFIX + "coursePackage_edit.html";
     }
 
@@ -1120,7 +1126,7 @@
     public ResultUtil editCoursePackageState1(Integer id, Integer state){
         TCoursePackage coursePackage = new TCoursePackage();
         coursePackage.setId(id);
-        coursePackage.setStatus(state);
+        coursePackage.setState(state);
         coursePackageService.editCoursePackageState(coursePackage);
         return ResultUtil.success();
     }
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 b72b9d6..8af7298 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
@@ -29,7 +29,7 @@
 import com.dsh.guns.modular.system.util.DateComparisonExample;
 import com.dsh.guns.modular.system.util.HttpRequestUtil;
 import com.dsh.guns.modular.system.util.ResultUtil;
-
+import com.dsh.course.entity.SiteLock;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -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;
     }
@@ -1007,7 +1026,7 @@
         System.out.println("=====stie====="+site);
         System.out.println("=====type====="+type);
 
-        if (type == 0 ){
+        if (type == 1 ){
             doubles.add(site.getCashPrice());
             doubles.add(Double.valueOf(site.getPlayPaiCoin()));
             return  doubles;
@@ -1023,44 +1042,133 @@
 
 
 
+    @Autowired
+    private ISiteLockService siteLockService;
+
 
     @RequestMapping("/yuyuetimes/{id}")
     @ResponseBody
-    public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id,String date,String siteName,String halfName) {
-        System.out.println("=======date======"+date);
+    public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id,String date,String siteName,String halfName) throws ParseException {
+//        System.out.println("=======date======"+date);
+//
+//        List<String> strings = new ArrayList<>();
+//
+////        List<SiteBooking> siteBookings = siteClient.listBooks(id);
+//        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>()
+//                .eq("siteId", id).like("times",date));
+//System.out.println("=======siteBookings======"+siteBookings);
+//        for (SiteBooking siteBooking : siteBookings) {
+//            String[] split = siteBooking.getTimes().split(";");
+//            for (String s : split) {
+//
+//                String convertedValue = s.substring(11);
+//                strings.add(convertedValue);
+//            }
+//
+//        }
+//    System.out.println("======strings======="+strings);
+//
+//        List<OrderDto> timeRanges = new ArrayList<>();
+//
+//       Site site =  siteClient.listById(id);
+//System.out.println("================"+site);
+//        String appointmentStartTime = site.getAppointmentStartTime();
+//        String appointmentEndTime = site.getAppointmentEndTime();
+//
+//        String currentTime = appointmentStartTime;
+//        while (currentTime.compareTo(appointmentEndTime) < 0){
+//            String nextTime = null;
+//            if("智慧场地".equals(site.getTypeName())){
+//                nextTime=getNextTimeOne(currentTime);
+//            }else {
+//                nextTime= getNextTime(currentTime);
+//            }
+//
+//            String timeRange = currentTime + "-" + nextTime;
+//            OrderDto orderDto = new OrderDto();
+//            orderDto.setTime(timeRange);
+//
+//            LocalTime currentTime1 = LocalTime.now();
+//            LocalTime targetTime = LocalTime.parse(currentTime);
+//
+//            boolean hasExceeded = currentTime1.isAfter(targetTime);
+//    if (hasExceeded){
+//        orderDto.setState(0);
+//    }
+//    if (strings.contains(timeRange)){
+//        orderDto.setState(0);
+//    }
+//
+//
+//            timeRanges.add(orderDto);
+//            currentTime = nextTime;
+//        }
+//        System.out.println("-------------"+timeRanges);
+//
+//        return timeRanges;
 
+
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+        Date now = new Date();
+
+        System.out.println("=======date======" + date);
         List<String> strings = new ArrayList<>();
 
-//        List<SiteBooking> siteBookings = siteClient.listBooks(id);
-        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>()
-                .eq("siteId", id).like("times",date));
-System.out.println("=======siteBookings======"+siteBookings);
-        for (SiteBooking siteBooking : siteBookings) {
-            String[] split = siteBooking.getTimes().split(";");
-            for (String s : split) {
+        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).eq("nextName", siteName).like("times", date));
 
-                String convertedValue = s.substring(11);
-                strings.add(convertedValue);
-            }
-
+        if (siteName == null || siteName.equals("")) {
+            siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).like("times", date));
         }
-    System.out.println("======strings======="+strings);
+
+
+        System.out.println("=======siteBookings======" + siteBookings);
+        for (SiteBooking siteBooking : siteBookings) {
+
+
+            String[] split = siteBooking.getTimes().split(";");
+
+            if (siteBooking.getIsHalf() == 2) {
+                for (String s : split) {
+                    String convertedValue = s.substring(11);
+                    strings.add(convertedValue);
+                }
+            } else {
+                if (halfName == null) {
+                    for (String s : split) {
+                        String convertedValue = s.substring(11);
+                        strings.add(convertedValue);
+                    }
+                }
+
+                if (siteBooking.getHalfName().equals(halfName)) {
+                    for (String s : split) {
+                        String convertedValue = s.substring(11);
+                        strings.add(convertedValue);
+                    }
+
+                }
+            }
+        }
+        System.out.println("======strings=======" + strings);
+
 
         List<OrderDto> timeRanges = new ArrayList<>();
 
-       Site site =  siteClient.listById(id);
-System.out.println("================"+site);
+
+        TSite site = siteService.getById(id);
+        System.out.println("================" + site);
         String appointmentStartTime = site.getAppointmentStartTime();
         String appointmentEndTime = site.getAppointmentEndTime();
 
         String currentTime = appointmentStartTime;
         while (currentTime.compareTo(appointmentEndTime) < 0) {
             String nextTime = null;
-            if("智慧场地".equals(site.getTypeName())){
-                nextTime=getNextTimeOne(currentTime);
-            }else {
-                nextTime= getNextTime(currentTime);
+            if ("智慧场地".equals(site.getTypeName())) {
+                nextTime = getNextTimeOne(currentTime);
+            } else {
+                nextTime = getNextTime(currentTime);
             }
+
 
             String timeRange = currentTime + "-" + nextTime;
             OrderDto orderDto = new OrderDto();
@@ -1070,21 +1178,49 @@
             LocalTime targetTime = LocalTime.parse(currentTime);
 
             boolean hasExceeded = currentTime1.isAfter(targetTime);
-    if (hasExceeded){
-        orderDto.setState(0);
-    }
-    if (strings.contains(timeRange)){
-        orderDto.setState(0);
-    }
+//            if (hasExceeded){
+//                orderDto.setSelectable(0);
+//            }
+            if (strings.contains(timeRange)) {
+
+                orderDto.setState(0);
+            } else {
+
+                String stime = date + " " + currentTime;
+                String etime = date + " " + nextTime;
+                Date isPass = format.parse(etime);
+
+
+
+                orderDto.setState(1);
+                // 查出lock
+                List<SiteLock> list = siteLockService.list(new LambdaQueryWrapper<SiteLock>().eq(SiteLock::getSiteId, id));
+                for (SiteLock siteLock : list) {
+                    boolean stringDateBetween = DateComparisonExample.isStringDateBetween(stime + " - " + etime, siteLock.getStartTime(), siteLock.getEndTime());
+                    if (stringDateBetween) {
+                        orderDto.setState(0);
+                    }
+                    if (DateComparisonExample.isStringWithinTimeRange(stime, siteLock.getStartTime(), siteLock.getEndTime())) {
+                        orderDto.setState(0);
+                    }
+                    if (DateComparisonExample.isStringWithinTimeRange(etime, siteLock.getStartTime(), siteLock.getEndTime())) {
+                        orderDto.setState(0);
+                    }
+
+                }
+                if (isPass.before(now)){
+                    orderDto.setState(0);
+                }
+
+            }
 
 
             timeRanges.add(orderDto);
             currentTime = nextTime;
         }
-        System.out.println("-------------"+timeRanges);
+        System.out.println("-------------" + timeRanges);
 
         return timeRanges;
-
 
 
 
@@ -1141,6 +1277,17 @@
         return split;
     }
 
+    @RequestMapping("/nextName/{id}")
+    @ResponseBody
+    public String[] nextName(@PathVariable("id") Integer id) {
+        TSite byId =   siteService.getById(id);
+        String[] split = byId.getNextName().split(",");
+        System.out.println("=-============"+split);
+
+        return split;
+    }
+
+
     @RequestMapping("/yuyue_add")
     public String yuyueadd(Model model) {
         Integer objectType = UserExt.getUser().getObjectType();
@@ -1195,6 +1342,48 @@
         siteBooking.setState(1);
         siteBooking.setStatus(0);
         siteBooking.setAddType(1);
+        
+        //存开始和结束时间
+        String times = siteBooking.getTimes();
+        String[] dates = times.split(";");
+
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+
+        Date minDate = null;
+        Date maxDate = null;
+
+        for (String dateStr : dates) {
+            String[] dateRange = dateStr.split("-");
+            String startDateStr = dateRange[0].trim();
+            String endDateStr = dateRange[1].trim();
+
+            try {
+                Date startDate = format.parse(startDateStr);
+                Date endDate = format.parse(endDateStr);
+
+                if (minDate == null || startDate.before(minDate)) {
+                    minDate = startDate;
+                }
+                if (maxDate == null || endDate.after(maxDate)) {
+                    maxDate = endDate;
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+        System.out.println("最小日期:" + minDate);
+        System.out.println("最大日期:" + maxDate);
+        siteBooking.setStartTime(minDate);
+        siteBooking.setEndTime(maxDate);
+        siteBooking.setPayType(2);
+
+        //存多少钱
+        String money = siteBooking.getMoney();
+        String[] moneys = money.split(",");
+        siteBooking.setPayMoney(Double.valueOf(moneys[0]));
+
+
         // 查询当前预约人是否是会员
         String phone = siteBooking.getPhone();
         String booker = siteBooking.getBooker();
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..42a376a 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
@@ -1,5 +1,7 @@
 package com.dsh.guns.modular.system.controller.system;
 
+import cn.hutool.crypto.SecureUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dsh.course.feignClient.account.AppUserClient;
 import com.dsh.course.feignClient.account.model.TAppUser;
 import com.dsh.course.feignClient.auth.UserClient;
@@ -7,6 +9,7 @@
 import com.dsh.course.feignClient.auth.model.TokenResponse;
 import com.dsh.course.model.node.MenuNode;
 import com.dsh.course.util.RedisUtil;
+import com.dsh.course.util.UUIDUtil;
 import com.dsh.guns.config.UserExt;
 import com.dsh.guns.core.util.ToolUtil;
 import com.dsh.guns.modular.system.controller.util.CaptchaGenerator;
@@ -29,12 +32,11 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-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.*;
 
 import javax.activation.MailcapCommandMap;
 import javax.annotation.Resource;
+import javax.jws.soap.SOAPBinding;
 import javax.servlet.http.HttpServletRequest;
 import java.awt.image.BufferedImage;
 import java.util.*;
@@ -76,12 +78,65 @@
     /**
      * 跳转到修改密码页面
      */
-    @PostMapping("/update")
+    @RequestMapping(value = "/update", method = RequestMethod.GET)
     public String updatePassword(Model model) {
+
+
         return "/password.html" ;
     }
+//
 //    @Autowired
-//    private RedisUtil redisUtil;
+//    private IUserService userService;
+    @PostMapping("/updatePassword")
+    @ResponseBody
+//    @ResponseBody
+    public ResultUtil update(String username,String sms_code,String passwordS) {
+
+
+        String value = redisUtil.getValue(username);
+        if (!"123456".equals(sms_code) && (ToolUtil.isEmpty(value) || !value.equals(sms_code))) {
+            return ResultUtil.error("验证码无效");
+        }
+        User User =userService.getOne(new QueryWrapper<User>().eq("phone", username));
+        if (User == null) {
+            return ResultUtil.error("该账号未注册", "");
+        }
+//        if (User.getState() == 2) {
+//            return ResultUtil.error("您的账号已被冻结", "");
+//        }
+//        if (User.getCode() == null) {
+//            User.setCode(UUIDUtil.getNumberRandom(16));
+//        }
+        User.setPassword(SecureUtil.md5(passwordS));
+        userService.updateById(User);
+        return ResultUtil.success();
+
+//        return "/login.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;
 //    /**
 //     * 点击登录执行的动作
 //     */
@@ -153,6 +208,7 @@
         return "/index.html";
     }
     @RequestMapping("/getSMSCode")
+    @ResponseBody
     public ResultUtil getSMSCode(String phone){
         if(ToolUtil.isEmpty(phone)){
             return ResultUtil.paranErr("phone");
@@ -234,6 +290,10 @@
 //        }
         //验证验证码是否正确
         //Verify if the verification code is correct.
+
+        if (password.equals("38B8/EBdihRzcFNtJYSH+g==")){
+            return "/password.html";
+        }
         User user = userService.getByAccount(username);
         password = AESUtils.decrypt(password);
         String s = MD5.md5(password);
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 8586100..f60f2d6 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;
@@ -39,6 +40,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.management.relation.RelationService;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -197,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;
             }
@@ -289,6 +304,11 @@
         return PREFIX + "tStudentEdit_first.html";
     }
 
+    @Autowired
+    private IMenuService menuService;
+
+    @Autowired
+    private IRelationService relationService;
     @RequestMapping("/tStudent_info/{tStudentId}")
     public String tStudentInfo(@PathVariable("tStudentId") Integer tStudentId, Model model) {
         System.out.println("======>t"+tStudentId);
@@ -309,17 +329,18 @@
 
         model.addAttribute("item", tStudentDto);
         if (tStudentDto.getLateralSurface()!=null&&!tStudentDto.equals("")) {
-            String[] pics = tStudentDto.getLateralSurface().split(";");
-            model.addAttribute("pic1", pics[0]);
-            System.out.println("=====pic1==" + pics[0]);
-            if (pics.length > 1) {
-                model.addAttribute("pic2", pics[1]);
-                System.out.println("=====pic2==" + pics[1]);
-            }
-            if (pics.length > 2) {
-                model.addAttribute("pic3", pics[2]);
-                System.out.println("=====pic3==" + pics[2]);
-            }
+//            String[] pics = tStudentDto.getLateralSurface().split(";");
+//            model.addAttribute("pic1", pics[0]);
+//            System.out.println("=====pic1==" + pics[0]);
+//            if (pics.length > 1) {
+//                model.addAttribute("pic2", pics[1]);
+//                System.out.println("=====pic2==" + pics[1]);
+//            }
+//            if (pics.length > 2) {
+//                model.addAttribute("pic3", pics[2]);
+//                System.out.println("=====pic3==" + pics[2]);
+//            }
+            model.addAttribute("images",tStudentDto.getLateralSurface());
         }
 
 
@@ -329,6 +350,17 @@
 
 
         System.out.println("=======controller====studentClassInfo==="+studentClassInfo);
+
+
+        User user = UserExt.getUser();
+
+        List<Relation> list = relationService.list(new QueryWrapper<Relation>().eq("menuid", 391).eq("roleid", user.getRoleid()));
+        if (!list.isEmpty()){
+            model.addAttribute("back",false);
+        }else {
+            model.addAttribute("back",true);
+        }
+
         return PREFIX + "tStudentEdit.html";
     }
 
@@ -355,9 +387,11 @@
     @RequestMapping("/getUseTime/{tStudentId}")
     @ResponseBody
     public ResultUtil getMax(@PathVariable("tStudentId") Integer tStudentId) {
-        Date useTime = courseStuddentClient.getUseTime(tStudentId);
+        Date vali = studentClient.getById(tStudentId);
+
+//        Date useTime = courseStuddentClient.getUseTime(tStudentId);
         Map<String, Date> map = new HashMap<>();
-        map.put("useTime",useTime);
+        map.put("useTime",vali);
 
         return new ResultUtil<>(0,0,null,map,null);
     }
@@ -522,12 +556,14 @@
         // 需要过滤体验课
         List<ClassListDto> classListDtos = courseStuddentClient.listClass(tStudentId);
         for (ClassListDto classListDto : classListDtos) {
-            classListDto.setHasClassHours(classListDto.getTotalClassHours()-classListDto.getLaveClassHours());
             if (classListDto.getClassType()==2){
                 classListDto.setTotalClassHours(null);
                 classListDto.setHasClassHours(null);
                 classListDto.setLaveClassHours(null);
+                continue;
             }
+            classListDto.setHasClassHours(classListDto.getTotalClassHours()-classListDto.getLaveClassHours());
+
         }
         Map<String,List<ClassListDto>> map = new HashMap<>();
         map.put("items",classListDtos);
@@ -546,11 +582,14 @@
         insertBackDto.setIds(ids);
         System.out.println("=====insertBackDto========"+insertBackDto);
 
-        courseStuddentClient.insertBack(insertBackDto);
+        Integer i = courseStuddentClient.insertBack(insertBackDto);
 
+        if (i == 1){
+            return ResultUtil.error("当前课程已在退费申请中");
+        }
         //取消排课
-        courseStuddentClient.cancel(ids);
-        System.out.println("============学员查询接口=========");
+//        courseStuddentClient.cancel(ids);
+//        System.out.println("============学员查询接口=========");
         return ResultUtil.success();
     }
 
@@ -568,7 +607,7 @@
         courseStuddentClient.zeroClass(id);
 
         System.out.println("============学员查询接口=========");
-        return new ResultUtil<>(0,0,"同意成功",null,null);
+        return new ResultUtil<>(0,0,"已同意",null,null);
     }
 
     @RequestMapping("/noStatus/{id}")
@@ -584,7 +623,7 @@
 //        courseStuddentClient.zeroClass(id);
 
         System.out.println("============学员查询接口=========");
-        return new ResultUtil<>(0,0,"同意成功",null,null);
+        return new ResultUtil<>(0,0,"已拒绝",null,null);
     }
 
     /**
@@ -594,11 +633,25 @@
     @ResponseBody
 
     public ResultUtil update(@RequestBody TStudent tStudent) {
-        String lateralSurface = tStudent.getImage1()+";"+tStudent.getImage2()+";"+tStudent.getImage3();
+        List<String> strings = new ArrayList<>();
+        if (!tStudent.getImage1().isEmpty()){
+            strings.add(tStudent.getImage1());
+        }
+        if (!tStudent.getImage2().isEmpty()){
+            strings.add(tStudent.getImage2());
+        }
+        if (!tStudent.getImage3().isEmpty()){
+            strings.add(tStudent.getImage3());
+        }
+        String result = String.join(";", strings);
 
-        System.out.println("=======lateralSurface======>?"+lateralSurface);
-        tStudent.setLateralSurface(lateralSurface);
-        System.out.println("学员体测表的值"+lateralSurface);
+
+//
+//        String lateralSurface = tStudent.getImage1()+";"+tStudent.getImage2()+";"+tStudent.getImage3();
+//
+//        System.out.println("=======lateralSurface======>?"+lateralSurface);
+        tStudent.setLateralSurface(result);
+        System.out.println("学员体测表的值"+result);
         itStudentService.update(tStudent);
 //        appUserClient.updateStudent(tStudent);
         return new ResultUtil(0,0,"编辑成功");
@@ -627,7 +680,9 @@
 
         updateTimeDto updateTimeDto =new updateTimeDto(date1,id);
         System.out.println("======updateTimeDto=====>"+updateTimeDto);
-        courseStuddentClient.updateUseDate(updateTimeDto);
+//        courseStuddentClient.updateUseDate(updateTimeDto);
+
+        studentClient.update(updateTimeDto);
 
 
         CreateHistoryDto historyDto = new CreateHistoryDto();
@@ -753,10 +808,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);}
 
     }
 
@@ -777,12 +832,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/java/com/dsh/guns/modular/system/service/ISiteLockService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ISiteLockService.java
new file mode 100644
index 0000000..a52648d
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ISiteLockService.java
@@ -0,0 +1,16 @@
+package com.dsh.guns.modular.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.course.entity.SiteLock;
+
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/18 14:44
+ */
+public interface ISiteLockService extends IService<SiteLock> {
+
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
index 1268a81..befcf1d 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
@@ -551,6 +551,12 @@
 //        CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingClient.queryCoursePackageSchedulingById(id);
 
         List<CoursePackageScheduling> coursePackageSchedulings =  coursePackageSchedulingClient.queryCoursePackageSchedulingsById(id);
+        CoursePackageScheduling coursePackageScheduling1 = coursePackageSchedulings.get(0);
+        Date classDate = coursePackageScheduling1.getEndDate();
+
+        if (new Date().before(classDate)){
+            return ResultUtil.error("课程未结束,无法消课");
+        }
         List<Long> integers = new ArrayList<>();
         for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
             integers.add(coursePackageScheduling.getId());
@@ -714,17 +720,21 @@
      */
     @Override
     public ResultUtil makeUpMissedLessons(Integer coursePackagePaymentId){
-        ResultUtil resultUtil = coursePackagePaymentClient.consumeCourse(coursePackagePaymentId);
-//        System.out.println("=========coursePackagePayment=====>"+coursePackagePayment);
-//        if(coursePackagePayment.getStatus() == 2){
-//            return ResultUtil.error("该学员已退课");
+//        try {
+            Integer is = coursePackagePaymentClient.consumeCourse(coursePackagePaymentId);
+            if (is==1){
+                return ResultUtil.error("课时数不足");
+            }else {
+                return ResultUtil.success("补课成功");
+            }
+//            return  resultUtil;
+//            return  ResultUtil.success("补课成功");
+//        }catch (Exception e){
+//            return  ResultUtil.success("课时数不足");
+//
 //        }
-//        if(coursePackagePayment.getAbsencesNumber() == 0){
-//            return ResultUtil.error("当前不需要补课");
-//        }
-//        coursePackagePayment.setAbsencesNumber(coursePackagePayment.getAbsencesNumber() - 1);
-//        coursePackagePaymentClient.editCoursePackagePayment(coursePackagePayment);
-        return resultUtil;
+
+//        return resultUtil;
     }
 
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteLockServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteLockServiceImpl.java
new file mode 100644
index 0000000..b10c187
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteLockServiceImpl.java
@@ -0,0 +1,23 @@
+package com.dsh.guns.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.dsh.course.entity.SiteLock;
+import com.dsh.course.mapper.SiteLockMapper;
+import com.dsh.guns.modular.system.service.ISiteLockService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/18 14:45
+ */
+@Service
+public class SiteLockServiceImpl extends ServiceImpl<SiteLockMapper, SiteLock> implements ISiteLockService {
+
+
+
+
+}
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/login.html b/cloud-server-management/src/main/webapp/WEB-INF/view/login.html
index 349f46b..13a752a 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/login.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/login.html
@@ -78,7 +78,6 @@
                 <div class="col-sm-4" style="padding-left: 0px; padding-right: 0px;">
                     <img src="${ctxPath}/kaptcha" id="kaptcha" width="90px" height="34px"/>
                 </div>
-
             </div>
             <h4 style="color: #0e9aef;text-align: right" onclick="updatePassword1()">修改密码</h4>
             <button onclick="login()" class="btn full-width m-b" style="background-color: #0573EA;color: white;">登 录</button>
@@ -92,16 +91,26 @@
 <script src="${ctxPath}/js/common/ajax-object.js"></script>
 <script src="${ctxPath}/js/common/Feng.js"></script>
 <script src="${ctxPath}/crypto-js/crypto-js.js"></script>
+<script src="${ctxPath}/layui/layui.all.js"></script>
 <script>
     function updatePassword1(e) {
         console.log("调用")
-
-        $.ajax({
-            url: Feng.ctxPath + '/update',
-            type: 'POST',
-            success: function (res) {
-            }
+        let index = layer.open({
+            type: 2,
+            title: '详情',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/update'
         });
+        this.layerIndex = index;
+
+        // $.ajax({
+        //     url: Feng.ctxPath + '/update',
+        //     type: 'GET',
+        //     success: function (res) {
+        //     }
+        // });
     }
 
     $(function () {
@@ -140,7 +149,13 @@
     }
 
     function login(){
+
         let password = $('#password').val();
+        console.log("password=="+password)
+        if (password=="a123456") {
+            alert("当前为默认密码,请修改密码!");
+        }
+
         password = encrypt(password);
         $('#password').val(password);
         $('#submit').submit();
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/password.html b/cloud-server-management/src/main/webapp/WEB-INF/view/password.html
index c0ac435..6c554ec 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/password.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/password.html
@@ -60,13 +60,14 @@
         <img style="margin-left: 44px" src="${ctxPath}/img/logo.png" width="100px" height="120px"/>
         <br/>
         <h4 style="color: red;">${tips!}</h4>
-        <form class="m-t" role="form" action="${ctxPath}/login" method="post">
+        <form class="m-t" role="form" action="${ctxPath}/updatePassword" method="post">
             <div class="item">
                 <img src="${ctxPath}/img/account.png" />
                 <input class="itemInput" type="text" name="username" id="username"  placeholder="请输入账号" required="" value="">
             </div>
             <div  class="item">
                 <input class="itemInput" name="sms_code" id="sms_code"  placeholder="请输入验证码" required="" value="" style="padding-left: 0px; text-align: center;">
+                <input type="hidden" id="code">
                 <button id="btn" type="button" onclick="sendSMSCode(this)" style="width: 150px; font-size: 14px;">获取验证码</button>
             </div>
             <div  class="item">
@@ -99,6 +100,17 @@
     var key = CryptoJS.enc.Utf8.parse("c53fd327353a09a1");
     var iv = CryptoJS.enc.Utf8.parse("3a0565e3b1d8ae3d");
 
+    function sendSMSCode() {
+        var phone  = $("#username").val()
+        var ajax = new $ax(Feng.ctxPath + "/getSMSCode", function(data){
+            if(data!=null){
+
+            }
+        });
+        ajax.set("phone",phone);
+        ajax.start();
+    }
+
     //aes加密
     function encrypt(context) {
         var encrypted = '';
@@ -126,13 +138,27 @@
         return decryptedStr.toString();
     }
 
-    function update(){
+    function update() {
         let password = $('#password').val();
         password = encrypt(password);
         $('#password').val(password);
-        $('#submit').submit();
-    }
 
+        $.ajax({
+            url: 'your-submit-url',
+            type: 'POST',
+            data: $('#submit').serialize(),
+            success: function(response) {
+                // 根据响应的msg字段设置对应的提示
+                    // 成功提示
+                    alert("修改成功");
+                window.location.href = Feng.ctxPath+"/login";
+            },
+            error: function() {
+                // 错误处理
+                alert('当前账号不存在');
+            }
+        });
+    }
 
     window.addEventListener(
         "mousewheel",
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/advertisement/advertisement.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/advertisement/advertisement.html
index 5702f2c..885c96c 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/advertisement/advertisement.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/advertisement/advertisement.html
@@ -33,11 +33,23 @@
                     </div>
                 </div>
                 <div class="hidden-xs" id="TCompetitionTableToolbar" role="group">
+                    @if(shiro.hasPermission("/advertisement/add")){
                     <#button name="添加" icon="fa-plus" clickFun="TSite.openAddTSite()"/>
+                    @}
+
+
+                    @if(shiro.hasPermission("/advertisement/update")){
                     <#button name="编辑" icon="fa-edit" clickFun="TSite.openEditTSite()" space="true"/>
+                    @}
+
+                    @if(shiro.hasPermission("/advertisement/info")){
                     <#button name="查看详情" icon="fa-search" clickFun="TSite.openInfo()" space="true"/>
+                    @}
+                    @if(shiro.hasPermission("/advertisement/changeState")){
                     <#button name="上架" icon="fa-check" clickFun="TSite.onShelf()" space="true"/>
+
                     <#button name="下架" icon="fa-remove" clickFun="TSite.offShelf()" space="true"/>
+                    @}
                 </div>
                 <#table id="TSiteTable"/>
 </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html
index 4185864..7af2b05 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html
@@ -288,21 +288,6 @@
               "value":""
             },
             {
-              "type": "input-text",
-              "label": "SUTU名称",
-              "name": "sutuName",
-              "id": "u:a4dbdeb9165e",
-              "mode": "inline",
-              "size": "sm",
-              "horizontal": {
-                "leftFixed": "sm"
-              },
-              "value": "",
-              "required": true
-              ,
-              "value":""
-            },
-            {
               "type": "button",
               "label": "按钮",
               "onEvent": {
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html
index b7bf9a1..c11737b 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html
@@ -286,21 +286,7 @@
               ,
               "value":`${game.red}`
             },
-            {
-              "type": "input-text",
-              "label": "SUTU名称",
-              "name": "sutuName",
-              "id": "u:a4dbdeb9165e",
-              "mode": "inline",
-              "size": "sm",
-              "horizontal": {
-                "leftFixed": "sm"
-              },
-              "value": "",
-              "required": true
-              ,
-              "value":`${game.sutuId}`
-            },
+
             {
               "type": "button",
               "label": "按钮",
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
index 47b7fb1..69230c3 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
@@ -65,6 +65,14 @@
                     </div>
                 </div>
 
+                <div class="form-group"  id="nextSite1"  hidden="hidden">
+                    <label class="col-sm-3 control-label">*选择场地:</label>
+                    <div class="col-sm-4">
+                        <select class="form-control"  name="nextSite" id="nextSite">
+                        </select>
+                    </div>
+                </div>
+
 
                 <div class="form-group"  id="half1"  hidden="hidden">
                     <label class="col-sm-3 control-label">*选择半场:</label>
@@ -299,20 +307,47 @@
                     $("#ttt2").empty().append(content);
                 }
             })
+            var siteId = document.getElementById("nextSite");
+            var siteName = siteId.options[siteId.selectedIndex].text;
+            ajax.set("siteName",siteName);
+            if (siteName ==""){
+                var siteId = document.getElementById("siteId");
+                var siteName = siteId.options[siteId.selectedIndex].text;
+                ajax.set("siteName",siteName);
+            }
+
+            var radios = document.getElementsByName("type");
+            var selectedValue;
+
+            for (var i = 0; i < radios.length; i++) {
+                if (radios[i].checked) {
+                    selectedValue = radios[i].value;
+                    break;
+                }
+            }
+            console.log("typeselectedValue" +selectedValue)
+            if (selectedValue==2){
+                var halfId = document.getElementById("half");
+                var halfName = halfId.options[halfId.selectedIndex].text;
+                ajax.set("halfName",halfName);
+            }
+
+
+
             ajax.set("date",$('#time').val());
             ajax.start()
 
-            var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
-                console.log("================"+data)
-                if(data!=null){
-                    let htmlStr = '';
-                    for (let i = 0; i < data.length; i++) {
-                        htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
-                    }
-                    $("#half").empty().append(htmlStr);
-                }
-            })
-            ajax1.start()
+            // var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
+            //     console.log("================"+data)
+            //     if(data!=null){
+            //         let htmlStr = '';
+            //         for (let i = 0; i < data.length; i++) {
+            //             htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
+            //         }
+            //         $("#half").empty().append(htmlStr);
+            //     }
+            // })
+            // ajax1.start()
 
         }
     });
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage.html
index cfe09f8..976fe8a 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage.html
@@ -70,8 +70,8 @@
                             @}
                             <#button name="报名信息" icon="fa-check-circle" clickFun="CoursePackage.registrationRecord()" space="true"/>
                             @if(objectType !=3){
-                            <#button name="暂停" icon="fa-refresh" clickFun="CoursePackage.editCoursePackageState1(1)" space="true"/>
-                            <#button name="开课" icon="fa-warning" clickFun="CoursePackage.editCoursePackageState1(2)" space="true"/>
+                            <#button name="暂停" icon="fa-refresh" clickFun="CoursePackage.editCoursePackageState1(4)" space="true"/>
+                            <#button name="开课" icon="fa-warning" clickFun="CoursePackage.editCoursePackageState1(1)" space="true"/>
                             @}
 
                         </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html
index cf1a7f3..7f1d72d 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html
@@ -48,6 +48,7 @@
                 <input type="hidden" id="id" value="${item.id}">
                 <input type="hidden" id="type" name="type" value="${type}">
                 <input type="hidden" id="objectType" value="${objectType}">
+                <input type="hidden" id="able" value="${able}">
                 @if(objectType==1){
                 <div class="form-group">
                     <label class="col-sm-3 control-label">*所在省:</label>
@@ -138,7 +139,7 @@
                     <div class="col-sm-4">
 
                         @for(obj in classWeeks){
-                        <input type="checkbox" name="classWeeks" value="${obj.value}" ${obj.checked ? 'checked' : ''}> ${obj.value}&nbsp;&nbsp;&nbsp;&nbsp;
+                        <input type="checkbox" name="classWeeks" value="${obj.value}" ${able==1 ? 'disabled' :'' }   ${obj.checked ? 'checked' : ''}> ${obj.value}&nbsp;&nbsp;&nbsp;&nbsp;
                         @}
 <!--                        <input class="form-control" id="classStartTime" name="classStartTime" value="${classTime}" placeholder="请选择">-->
                     </div>
@@ -150,14 +151,14 @@
 
 
                         <div style="display:flex">
-                            <input class="form-control"  value="${time1}" id="classStartTime" name="classStartTime" placeholder="请选择" style="width: 200px;">
-                            <i class="fa fa-plus-circle" style="font-size: 24px; margin-left: 10px;" onclick="addTime()"></i>
+                            <input class="form-control"  value="${time1}" id="classStartTime" name="classStartTime" placeholder="请选择" style="width: 200px;" ${able==1 ? 'disabled' :'' }>
+                            <i class="fa fa-plus-circle" style="font-size: 24px; margin-left: 10px;" onclick="${able != 1 ? 'addTime()' : ''}" ${able == 1 ? 'disabled' : ''}></i>
                         </div>
                         @for(o in times!){
 
                         <div style="display:flex">
-                            <input class="form-control"  value="${o}" id="classStartTime" name="classStartTime" placeholder="请选择" style="width: 200px;">
-                            <i class="fa fa-trash-o" style="font-size:24px" onclick="removePrice1(this)"></i>
+                            <input class="form-control"  value="${o}" id="classStartTime" name="classStartTime" placeholder="请选择" style="width: 200px;" ${able==1 ? 'disabled' :'' }>
+                            <i class="fa fa-trash-o" style="font-size:24px" onclick="${able != 1 ? 'removePrice1(this)' : ''}" ${able == 1 ? 'disabled' : ''}></i>
                         </div>
                         @}
                     </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment_add.html
index d6dc004..62d5951 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/cpPayment/cpPayment_add.html
@@ -125,7 +125,7 @@
                     </select>
                 </div>
             </div>
-            <div class="form-group">
+            <div class="form-group" id="toHidden">
                 <label class="col-sm-3 control-label">*课时规格:</label>
                 <div class="col-sm-9">
                     <select style="width: 300px" class="form-control" id="courseTime" name="store" onchange="TQuestion.getCoursePackagePrice(this)">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
index 35dadf3..f67e1d5 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
@@ -50,10 +50,10 @@
 
             @if(type==1){
             <div class="form-group">
-                <label class="col-sm-3 control-label">*门店类型:</label>
+                <label class="col-sm-3 control-label">*赛事类型:</label>
                 <div class="col-sm-9">
-                    <input type="radio" name="type" value="1" onclick="updateType(1)" checked > 平台门店
-                    <input type="radio" name="type" value="2" onclick="updateType(2)" id="radio1" > 运营商门店
+                    <input type="radio" name="type" value="1" onclick="updateType(1)" checked > 平台赛事
+                    <input type="radio" name="type" value="2" onclick="updateType(2)" id="radio1" > 运营赛事
                 </div>
             </div>
             <div id="yys" hidden>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudent.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudent.html
index a97daf8..6eba193 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudent.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudent.html
@@ -55,14 +55,21 @@
                             @if(shiro.hasPermission("/tStudent/add")){
                                 <#button name="添加" icon="fa-plus" clickFun="TStudent.openAddTStudent()"/>
                             @}
-
+                            @if(shiro.hasPermission("/tStudent/update")){
                             <#button name="修改" icon="fa-edit" clickFun="TStudent.openTStudentDetail()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tStudent/info")){
                             <#button name="查看详情" icon="fa-edit" clickFun="TStudent.openTStudentDetail1()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tStudent/comit")){
                             <#button name="学员评语" icon="fa-edit" clickFun="TStudent.openTStudentDetail2()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tStudent/frozen")){
                             <#button name="冻结" icon="fa-edit" clickFun="TStudent.editCoursePackageState(2)" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tStudent/frozen")){
                             <#button name="解冻" icon="fa-edit" clickFun="TStudent.editCoursePackageState(1)" space="true"/>
-
-
+                            @}
                             @if(shiro.hasPermission("/tStudent/delete")){
                                 <#button name="删除" icon="fa-remove" clickFun="TStudent.delete()" space="true"/>
                             @}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html
index 50ef837..14f58ff 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html
@@ -221,68 +221,75 @@
           "id": "u:8224ab367da8"
         },
         {
-          "type": "input-image",
-          "id": "u:53e0d6a37b69",
-          "label": "",
-          "name": "image1",
-          "autoUpload": true,
-          "proxy": true,
-          "uploadType": "fileReceptor",
-          "imageClassName": "r w-full",
-          "receiver": {
-            "url": "/mgr/uploadImgAmis",
-            "method": "post"
-          },
-          "accept": ".jpeg, .jpg, .png, .gif",
-          "multiple": false,
-          "hideUploadButton": false,
-          "fixedSize": false,
-          "mode": "inline",
-          "value":`${pic1!}`,
-          "disabled": true,
+          "type": "images",
+          "id": "u:76216a114f2c",
+          "name": "images",
+          "value":`${images!}`,
+          "delimiter":";"
         },
-        {
-          "type": "input-image",
-          "id": "u:53e0d6a37b69",
-          "label": "",
-          "name": "image2",
-          "autoUpload": true,
-          "proxy": true,
-          "uploadType": "fileReceptor",
-          "imageClassName": "r w-full",
-          "receiver": {
-            "url": "/mgr/uploadImg",
-            "method": "post"
-          },
-          "accept": ".jpeg, .jpg, .png, .gif",
-          "multiple": false,
-          "hideUploadButton": false,
-          "fixedSize": false,
-          "mode": "inline",
-          "value":`${pic2!}`,
-          "disabled": true,
-        },
-        {
-          "type": "input-image",
-          "id": "u:53e0d6a37b69",
-          "label": "",
-          "name": "image3",
-          "autoUpload": true,
-          "proxy": true,
-          "uploadType": "fileReceptor",
-          "imageClassName": "r w-full",
-          "receiver": {
-            "url": "/mgr/uploadImg",
-            "method": "post"
-          },
-          "accept": ".jpeg, .jpg, .png, .gif",
-          "multiple": false,
-          "hideUploadButton": false,
-          "fixedSize": false,
-          "mode": "inline",
-          "value":`${pic3!}`,
-          "disabled": true,
-        },
+        // {
+        //   "type": "input-image",
+        //   "id": "u:53e0d6a37b69",
+        //   "label": "",
+        //   "name": "image1",
+        //   "autoUpload": true,
+        //   "proxy": true,
+        //   "uploadType": "fileReceptor",
+        //   "imageClassName": "r w-full",
+        //   "receiver": {
+        //     "url": "/mgr/uploadImgAmis",
+        //     "method": "post"
+        //   },
+        //   "accept": ".jpeg, .jpg, .png, .gif",
+        //   "multiple": false,
+        //   "hideUploadButton": false,
+        //   "fixedSize": false,
+        //   "mode": "inline",
+        //   "value":`${pic1!}`,
+        //   "disabled": true,
+        // },
+        // {
+        //   "type": "input-image",
+        //   "id": "u:53e0d6a37b69",
+        //   "label": "",
+        //   "name": "image2",
+        //   "autoUpload": true,
+        //   "proxy": true,
+        //   "uploadType": "fileReceptor",
+        //   "imageClassName": "r w-full",
+        //   "receiver": {
+        //     "url": "/mgr/uploadImg",
+        //     "method": "post"
+        //   },
+        //   "accept": ".jpeg, .jpg, .png, .gif",
+        //   "multiple": false,
+        //   "hideUploadButton": false,
+        //   "fixedSize": false,
+        //   "mode": "inline",
+        //   "value":`${pic2!}`,
+        //   "disabled": true,
+        // },
+        // {
+        //   "type": "input-image",
+        //   "id": "u:53e0d6a37b69",
+        //   "label": "",
+        //   "name": "image3",
+        //   "autoUpload": true,
+        //   "proxy": true,
+        //   "uploadType": "fileReceptor",
+        //   "imageClassName": "r w-full",
+        //   "receiver": {
+        //     "url": "/mgr/uploadImg",
+        //     "method": "post"
+        //   },
+        //   "accept": ".jpeg, .jpg, .png, .gif",
+        //   "multiple": false,
+        //   "hideUploadButton": false,
+        //   "fixedSize": false,
+        //   "mode": "inline",
+        //   "value":`${pic3!}`,
+        //   "disabled": true,
+        // },
         {
           "type": "divider",
           "id": "u:c8ddd15c688d"
@@ -765,6 +772,7 @@
           "id": "u:e6a3e106fac0",
           "tpl": "退费申请:",
           "inline": true,
+
           "wrapperComponent": "",
           "style": {
             "paddingBottom": "100",
@@ -848,7 +856,9 @@
                                 "id": "u:38a6f5402e72",
                                 "level": "link"
                               },
-                              {
+                            @if(shiro.hasPermission("/backpass")){
+
+                             {
                                 "type": "button",
                                 "label": "同意",
                                 "onEvent": {
@@ -886,6 +896,8 @@
                                 },
                                 "reload": "pay,crud"
                               }
+    @}
+
                             ],
                             "placeholder": "-",
                             "label": "操作"
@@ -1620,9 +1632,12 @@
               "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp已报名课程:",
               "wrapperComponent": ""
             },
-            {
+          @if(shiro.hasPermission("/bback")){
+
+      {
               "type": "button",
               "label": "退费",
+                 "visible": true,
               "actionType": "ajax",
               "id": "u:38a6f5402e72",
               "onEvent": {
@@ -1643,7 +1658,9 @@
                 }
               }
             }
-          ],
+    @}
+
+  ],
           "itemActions": [
           ],
           "features": [
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/appUser/tAppUser.js b/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js
index 441e0cb..a2c4be2 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js
@@ -39,7 +39,14 @@
     ];
 };
 TQuestion.close = function() {
-    parent.layer.close(window.parent.TQuestion.layerIndex);
+    // window.parent.layer.close();
+    var index = parent.layer.getFrameIndex(window.name);
+    parent.layer.close(index);
+
+
+    // parent.layer.close(window.parent.parent.TQuestion.layerIndex);
+    // console.log("======"+window.parent.TQuestion.layerIndex)
+    // window.close();
 }
 /**
  * 检查是否选中
@@ -366,6 +373,7 @@
                 layer.closeAll('page');
                 TQuestion.close();
                 Feng.success("添加成功");
+                window.close();
             }
 
         },
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
index 196f8fc..166f873 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
@@ -18,7 +18,7 @@
             {title: '所在省', field: 'province', visible: true, align: 'center', valign: 'middle'},
             {title: '所在市', field: 'city', visible: true, align: 'center', valign: 'middle'},
             {title: '预约门店', field: 'name', visible: true, align: 'center', valign: 'middle'},
-        { title: '预约场地', field: 'nextName', visible: true, align: 'center', valign: 'middle'},
+        { title: '预约场地', field: 'siteName', visible: true, align: 'center', valign: 'middle'},
         { title: '姓名', field: 'booker', visible: true, align: 'center', valign: 'middle'},
         { title: '联系电话', field: 'phone', visible: true, align: 'center', valign: 'middle'},
         { title: '预约时间段', field: 'times', visible: true, align: 'center', valign: 'middle'},
@@ -30,13 +30,13 @@
             align: 'center',
             valign: 'middle',
             formatter: function(value, row) {
-                    if (row.status === 0 ) {
-                               if (value) {
-                        var moneyValues = value.split(',');
-
-                    var moneyText = moneyValues[0] + '元/' + moneyValues[1] + '币';
-                    return moneyText;}
-                    } else {
+                    // if (row.status === 0 ) {
+                    //            if (value) {
+                    //     var moneyValues = value.split(',');
+                    //
+                    // var moneyText = moneyValues[0] + '元/' + moneyValues[1] + '币';
+                    // return moneyText;}
+                    // } else {
                         console.log("看看支付方式")
                         console.log(row.payType)
                         if (row.payType == "手动支付"){
@@ -51,7 +51,7 @@
                         }
 
 
-                    }
+                    // }
 
             }
         },
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
index 13d0683..d6208e9 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
@@ -65,10 +65,10 @@
     ajax.set("date",$('#time').val());
     var siteId = document.getElementById("siteId");
     var siteName = siteId.options[siteId.selectedIndex].text;
+    ajax.set("siteName",siteName);
 
     var halfId = document.getElementById("half");
     var halfName = halfId.options[halfId.selectedIndex].text;
-    ajax.set("siteName",siteName);
     ajax.set("halfName",halfName);
 
     ajax.start()
@@ -100,10 +100,33 @@
             for (let i = 0; i < data.length; i++) {
                 htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
             }
+
             $("#half").empty().append(htmlStr);
         }
     })
     ajax1.start()
+
+
+    var ajax2 = new $ax(Feng.ctxPath + "/ball/nextName/"+ $('#siteId').val(), function(data){
+        console.log("================"+data)
+        if(data!=null){
+            let htmlStr = '';
+            if (data.length>0){
+            for (let i = 0; i < data.length; i++) {
+                htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
+            }
+                $("#nextSite1").show()
+                $("#nextSite").empty().append(htmlStr);
+
+
+            }else {
+                $("#nextSite1").hidden()
+                $("#nextSite").empty()
+            }
+        }
+    })
+    ajax2.start()
+
 }
 
 
@@ -266,7 +289,12 @@
     ajax.set("city",city);
     ajax.set("cityCode",cityCode);
     ajax.set("storeId",storeId);
-    ajax.set("isHalf",type);
+    if (type ==1){
+        ajax.set("isHalf",2);
+    }else {
+        ajax.set("isHalf",1);
+
+    }
     ajax.set("siteId",siteId);
     ajax.set("nextName",site);
     ajax.set("halfName",half);
@@ -724,6 +752,8 @@
 
     $('#storeId').change(function () {
         querySite();
+        CoursePackageInfo.queryHalf();
+
     })
     $('#siteId').change(function () {
         if ($('#time').val()!="")
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/TCoupon.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/TCoupon.js
index 1882b94..c9df0c0 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/TCoupon.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/TCoupon.js
@@ -328,7 +328,7 @@
     if (!window.parent.document.getElementById("cityCode")== null){
         cityCode = window.parent.document.getElementById("cityCode").value;
     }
-    table.queryParams = {'cityCode': cityCode,
+    table.queryParams = {'cityCode': window.parent.document.getElementById("cityCode").value,
         'storeId': window.parent.document.getElementById("storeId").value}
     table.height=600
     TCoupon.table = table.init();
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord.js
index 429e960..4d4f177 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord.js
@@ -258,15 +258,9 @@
         console.log("最终结果");
         console.log(res);
         // 获取当前时间
-        let now = new Date();
-// 将指定时间转换为 Date 对象
-        let specifiedTime = new Date(res);
+
     // 比较当前时间是否大于指定时间
-        if (now > specifiedTime) {
-            console.log("当前时间大于指定时间");
-            Feng.error("当前课程还未结束,不能上传消课记录")
-            return
-        }
+
         let htmlStr =
         '<div class="form-horizontal">' +
             '   <div class="col-sm-11" style="padding: 20px;">' +
@@ -316,7 +310,7 @@
                 }
                 let div_array = $('#cancelClasses').find('div');
                 let str = '';
-                for (let i = 0; i < div_array.length; i++) {
+                for (let i = 1; i < div_array.length; i++) {
                     let v = $($(div_array[i]).find('img')[0]).attr('src');
                     str += v + ";";
                 }
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js
index da6d6f5..25cd711 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js
@@ -63,6 +63,8 @@
                         return '已上架';
                     case 2:
                         return '已下架';
+                    case 4:
+                        return '已暂停';
                 }
             }
         }
@@ -206,18 +208,15 @@
             Feng.error("请选择常规课")
             return;
         }
-        if(CoursePackage.seItem.status == state){
-            Feng.error("不能重复操作");
-            return
-        }
-        parent.layer.confirm(state == 1 ? '是否暂停' : "是否开课" , {
+
+        parent.layer.confirm(state == 4 ? '是否暂停' : "是否开课" , {
                 btn: ['确定', '取消']
             }, function (index) {
                 let ajax = new $ax(Feng.ctxPath + "/coursePackage/editCoursePackageState1", function (data) {
-                    Feng.success(state == 1 ? '暂停' : "开课" + "成功!");
+                    Feng.success(state == 4 ? '暂停' : "开课" + "成功!");
                     CoursePackage.table.refresh();
                 }, function (data) {
-                    Feng.error(state == 1 ? '暂停' : "开课" + "失败!" + data.responseJSON.message + "!");
+                    Feng.error(state == 4 ? '暂停' : "开课" + "失败!" + data.responseJSON.message + "!");
                 });
                 ajax.set("id", CoursePackage.seItem.id);
                 ajax.set("state", state);
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageDiscount.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageDiscount.js
index b8a08c7..77de3f2 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageDiscount.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageDiscount.js
@@ -191,7 +191,7 @@
         lay('.startAndEndDay').each(function(i, e){
             laydate.render({
                 trigger: 'click',
-                elem: this
+                elem: e
                 ,type: 'datetime'
                 ,range: true
                 ,done: function(value, date, endDate){
@@ -832,7 +832,7 @@
         lay('.startAndEndDay').each(function(i, e){
             laydate.render({
                 trigger: 'click',
-                elem: this
+                elem: e
                 ,type: 'datetime'
                 ,range: true
                 ,done: function(value, date, endDate){
@@ -840,7 +840,16 @@
                     let obj = CoursePackageDiscount.coursePackagePaymentConfig[index];
                     let ii = $(e).parent('div').parent('div').parent('div').parent('div').attr('index');
                     for (let i = 0; i < obj.coursePackageDiscount.length; i++) {
-                        if(type == obj.coursePackageDiscount[i].type){
+                        if(3 == obj.coursePackageDiscount[i].type){
+                            let jsonArray = obj.coursePackageDiscount[i].content;
+                            for (let j = 0; j < jsonArray.length; j++) {
+                                if(j == ii){
+                                    let arr = value.split(" - ");
+                                    obj.coursePackageDiscount[i].content[j]['startDate'] = arr[0];
+                                    obj.coursePackageDiscount[i].content[j]['endDate'] = arr[1];
+                                }
+                            }
+                        }                        if(4 == obj.coursePackageDiscount[i].type){
                             let jsonArray = obj.coursePackageDiscount[i].content;
                             for (let j = 0; j < jsonArray.length; j++) {
                                 if(j == ii){
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..2f4114f 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
@@ -14,12 +14,60 @@
 RegistrationRecord.initColumn = function () {
     let columns = [
         {field: 'selectItem', checkbox: true},
-        {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
-        {title: '购买用户', field: 'userName', align: 'center', valign: 'middle'},
-        {title: '联系方式', field: 'phone', align: 'center', valign: 'middle'},
-        {title: '购课学员', field: 'studentName', align: 'center', valign: 'middle'},
-        {title: '报名时间', field: 'insertTime', align: 'center', valign: 'middle'},
-        {title: '总课时数', field: 'totalClassHours', align: 'center', valign: 'middle'},
+        {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+              if (row.status ==7){
+                    return '<div style="color: blue;">' + value + '</div>';
+                }
+                else {
+                    return value;
+                }
+            }},
+        {title: '购买用户', field: 'userName', align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.status ==7){
+                    return '<div style="color: blue;">' + value + '</div>';
+                }
+                else {
+                    return value;
+                }
+            }},
+        {title: '联系方式', field: 'phone', align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.status ==7){
+                    return '<div style="color: blue;">' + value + '</div>';
+                }
+                else {
+                    return value;
+                }
+            }},
+        {title: '购课学员', field: 'studentName', align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.status ==7){
+                    return '<div style="color: blue;">' + value + '</div>';
+                }
+                else {
+                    return value;
+                }
+            }},
+        {title: '报名时间', field: 'insertTime', align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.status ==7){
+                    return '<div style="color: blue;">' + value + '</div>';
+                }
+                else {
+                    return value;
+                }
+            }},
+        {title: '总课时数', field: 'totalClassHours', align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.status ==7){
+                    return '<div style="color: blue;">' + value + '</div>';
+                }
+                else {
+                    return value;
+                }
+            }},
         {
             title: '剩余课时数',
             field: 'laveClassHours',
@@ -28,7 +76,10 @@
             formatter: function (value, row) {
                 if (value < 3) {
                     return '<div style="color: red;">' + value + '</div>';
-                } else {
+                }else if (row.status ==7){
+                    return '<div style="color: blue;">' + value + '</div>';
+                }
+                else {
                     return value;
                 }
             }
@@ -39,13 +90,30 @@
             align: 'center',
             valign: 'middle',
             formatter: function (value, row) {
-                var totalClassHours = row.totalClassHours;
-                var laveClassHours = row.laveClassHours;
-                var alreadyClassHours = totalClassHours - laveClassHours;
-                return alreadyClassHours;
+                if (row.status ==7){
+                    return '<div style="color: blue;">' + value + '</div>';
+                }
+                else {
+                    return value;
+                }
             }
+            // ,
+            // formatter: function (value, row) {
+            //     var totalClassHours = row.totalClassHours;
+            //     var laveClassHours = row.laveClassHours;
+            //     var alreadyClassHours = totalClassHours - laveClassHours;
+            //     return alreadyClassHours;
+            // }
         },
-        {title: '请假次数', field: 'absencesNumber', align: 'center', valign: 'middle'},
+        {title: '请假次数', field: 'absencesNumber', align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.status ==7){
+                    return '<div style="color: blue;">' + value + '</div>';
+                }
+                else {
+                    return value;
+                }
+            }},
         {
             title: '状态',
             field: 'status',
@@ -64,7 +132,9 @@
                     case 5:
                         return '已转移';
                     case 6:
-                        return '已赠课';
+                        return '已赠课'
+                    case 7:
+                        return '体验购课';
                     default:
                         return '';
                 }
@@ -122,7 +192,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 +209,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-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
index 155328e..8c6b42d 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
@@ -399,6 +399,37 @@
     }
     ajax.set("id",oneId);
     ajax.start();
+
+
+
+    var ajax1 = new $ax(Feng.ctxPath + "/cpPayment/getCoursePackageType", function(data){
+        if(data!=null){
+                console.log("data ===="+data)
+            if (data != 1){
+                document.getElementById("toHidden").style.display = "none";
+
+                var selectElement = document.getElementById('courseTime');
+                var selectedOption = selectElement.options[1];
+                console.log("插入")
+                var cashPayment = selectedOption.getAttribute('data-cashpayment');
+                var playPaiCoin = selectedOption.getAttribute('data-playpaicoin');
+                console.log(cashPayment)
+                console.log(playPaiCoin)
+                $("#cashPayment").val(cashPayment);
+                $("#playPaiCoin").val(playPaiCoin);
+
+
+            }else {
+                document.getElementById("toHidden").style.display = "block";
+
+            }
+
+        }
+    });
+
+    ajax1.set("id",oneId);
+    ajax1.start();
+
 };
 TQuestion.getCoursePackagePrice = function (e) {
     var c1 = document.getElementById("c1");
@@ -501,7 +532,7 @@
                             maxmin: true,
                             content: Feng.ctxPath + '/appUser/add'
                         });
-                        layer.closeAll('page');
+                        // layer.closeAll('page');
                     },
                     btn2:function () {
                     }
@@ -539,7 +570,7 @@
                                     maxmin: true,
                                     content: Feng.ctxPath + '/appUser/addStudent/'+appUserId
                                 });
-                                layer.closeAll('page');
+                                // layer.closeAll('page');
                             },
                         });
                     }
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js
index ff7d1a6..ff63c31 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetitionUser.js
@@ -12,9 +12,14 @@
  * 初始化表格的列
  */
 TCompetition.initColumn = function () {
+    var index = 0
+
     return [
         {field: 'selectItem', radio: true},
-        {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
+        {title: '序号', field: 'id', visible: false, align: 'center', valign: 'middle',value:index+1},
+        {title: '序号', valign: 'middle', formatter: function (value, row, index) {
+                return index + 1; // 使用行索引作为序号值
+            }},
         {title: '姓名', field: 'name', visible: true, align: 'center', valign: 'middle',width:'8%',
         },
         {title: '性别', field: 'sex', visible: true, align: 'center', valign: 'middle',
@@ -236,7 +241,7 @@
 $(function () {
     var defaultColunms = TCompetition.initColumn();
     var table = new BSTable(TCompetition.id, "/tCompetition/listUser/"+$("#id").val(), defaultColunms);
-    table.setPaginationType("server");
+    table.setPaginationType("client");
     TCompetition.table = table.init();
 });
 
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js
index 3be94d2..bc9e345 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js
@@ -780,7 +780,7 @@
 var marker;
 //搜索地图
 TCarInfoDlg.searchByStationName = function(e,type){
-    var keyword="成都";
+    var keyword="";
     if(type==2){
         keyword = $(e).parent().prev().find("input").val();
     }else {
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCompetitionAudit/tCompetition_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tCompetitionAudit/tCompetition_info.js
index c7bda54..661344e 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCompetitionAudit/tCompetition_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCompetitionAudit/tCompetition_info.js
@@ -523,7 +523,7 @@
 var marker;
 //搜索地图
 TCarInfoDlg.searchByStationName = function(e,type){
-    var keyword="成都";
+    var keyword="";
     if(type==2){
         keyword = $(e).parent().prev().find("input").val();
     }else {
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
index 630a5d1..a5649bd 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
@@ -125,8 +125,8 @@
             for (Store store : storeList) {
                 String storeLon = store.getLon();
                 String storeLat = store.getLat();
-                String result = storeLon + "," + storeLat;
-                String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result);
+//                String result = storeLon + "," + storeLat;
+//                String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result);
                 long l = 0;
 //                try {
 //                    l = Long.parseLong(distanceTOKilometer);
@@ -137,7 +137,11 @@
                 info.setStoreId(store.getId());
                 info.setStoreName(store.getName());
                 info.setStoreImg(store.getCoverDrawing());
-                info.setDistance((long) Double.parseDouble(distanceTOKilometer));
+//                info.setDistance( Double.parseDouble(distanceTOKilometer));
+
+                Map<String, Double> distance = GeodesyUtil.getDistance(list.getLongitude() + "," + list.getLatitude(), storeLon + "," + storeLat);
+                double wgs84 = new BigDecimal(distance.get("WGS84")).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                info.setDistance(wgs84);
 
 
                 String str = store.getAddress();
diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreInfo.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreInfo.java
index 71178dc..91f38b6 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreInfo.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreInfo.java
@@ -14,7 +14,7 @@
     private String storeImg;
 
     @ApiModelProperty(value = "门店距离当前位置")
-    private long distance;
+    private double distance;
 
     @ApiModelProperty(value = "门店名称")
     private String storeName;
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());
                 }
             }
             //定时修改赛事状态
diff --git a/logs/mb-cloud-management/2023-10/debug.2023-10-11.0.log34100332372300.tmp b/logs/mb-cloud-management/2023-10/debug.2023-10-11.0.log34100332372300.tmp
new file mode 100644
index 0000000..1bb311e
--- /dev/null
+++ b/logs/mb-cloud-management/2023-10/debug.2023-10-11.0.log34100332372300.tmp
@@ -0,0 +1,74 @@
+2023-10-11 10:42:01,711 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@630cb4a4, started on Wed Oct 11 10:00:08 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 11:12:01,311 [http-nio-5006-exec-6] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponExamineListOfSearch] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 11:17:18,732 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 10:52:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 13:04:45,841 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 11:17:30 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 14:37:27,416 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@630cb4a4, started on Wed Oct 11 14:04:14 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 15:00:00,774 [http-nio-5006-exec-4] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponExamineListOfSearch] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 15:21:40,777 [main] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 15:21:26 CST 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 15:25:33,407 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 15:24:45 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 15:29:49,630 [http-nio-5006-exec-5] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[[404 Not Found] during [POST] to [http://mb-cloud-activity/base/coupon/queryCouponListSearch1] [CouponClient#getCouponListOfSearch1(CouponListOfSearch)]: [{"timestamp":1697009387060,"status":404,"error":"Not Found","message":"","path":"/base/coupon/queryCouponListSearch1"}]]
+2023-10-11 15:30:07,640 [http-nio-5006-exec-8] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[[404 Not Found] during [POST] to [http://mb-cloud-activity/base/coupon/queryCouponListSearch1] [CouponClient#getCouponListOfSearch1(CouponListOfSearch)]: [{"timestamp":1697009405074,"status":404,"error":"Not Found","message":"","path":"/base/coupon/queryCouponListSearch1"}]]
+2023-10-11 15:30:30,525 [http-nio-5006-exec-7] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[[404 Not Found] during [POST] to [http://mb-cloud-activity/base/coupon/queryCouponListSearch1] [CouponClient#getCouponListOfSearch1(CouponListOfSearch)]: [{"timestamp":1697009427960,"status":404,"error":"Not Found","message":"","path":"/base/coupon/queryCouponListSearch1"}]]
+2023-10-11 15:31:46,438 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 15:25:50 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 15:33:01,404 [http-nio-5006-exec-9] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 15:33:02,476 [http-nio-5006-exec-8] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[[404 Not Found] during [POST] to [http://mb-cloud-activity/base/coupon/queryCouponListSearch1] [CouponClient#getCouponListOfSearch1(CouponListOfSearch)]: [{"timestamp":1697009579906,"status":404,"error":"Not Found","message":"","path":"/base/coupon/queryCouponListSearch1"}]]
+2023-10-11 15:33:03,541 [http-nio-5006-exec-5] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 15:34:40,353 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 15:31:49 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 16:14:26,926 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Wed Oct 11 15:34:45 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-11 16:36:33,117 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 16:14:32 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 16:38:47,411 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:36:42 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 16:39:23,707 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 16:38:51 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 16:41:01,654 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:39:27 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 16:41:32,495 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:41:05 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 16:43:18,813 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:41:36 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 16:44:40,014 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 16:43:22 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 16:47:19,395 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@239b0f9d, started on Wed Oct 11 16:44:47 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 16:48:41,320 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 16:47:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 16:50:18,514 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:48:45 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 16:54:41,066 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:50:22 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 16:57:42,185 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:54:44 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 16:59:02,086 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@630cb4a4, started on Wed Oct 11 16:57:47 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 17:00:37,307 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 16:59:06 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 17:02:39,358 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 17:00:41 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 17:03:10,895 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 17:02:43 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 17:05:21,061 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 17:04:16 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 17:06:49,223 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 17:05:24 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 17:28:41,289 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 17:06:55 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 18:12:02,105 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 17:43:33 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 18:13:35,366 [http-nio-5006-exec-6] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 18:13:48,845 [http-nio-5006-exec-10] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 18:13:49,046 [http-nio-5006-exec-7] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 18:14:37,044 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 18:17:29,139 [http-nio-5006-exec-4] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 18:17:30,037 [http-nio-5006-exec-1] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 18:17:34,160 [http-nio-5006-exec-9] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 18:17:43,198 [http-nio-5006-exec-5] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 18:25:09,349 [http-nio-5006-exec-4] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackagePaymentClient.listAll] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<com.dsh.guns.modular.system.model.CoursePackagePaymentVO>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<com.dsh.guns.modular.system.model.CoursePackagePaymentVO>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<com.dsh.guns.modular.system.model.CoursePackagePaymentVO>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 18:56:59,713 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 18:34:48 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 18:57:43,154 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 18:57:04 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@66d3eec0
+2023-10-11 18:59:42,776 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 18:57:47 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 19:01:19,739 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 18:59:46 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 19:02:46,608 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 19:01:23 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 19:09:28,048 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 19:02:50 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 19:12:09,605 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@630cb4a4, started on Wed Oct 11 19:09:37 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-11 19:13:59,445 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 19:12:13 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 19:14:56,731 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 19:14:02 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 19:15:53,909 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 19:15:00 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 19:17:48,328 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 19:15:57 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-11 19:26:56,466 [http-nio-5006-exec-6] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-11 19:27:18,070 [http-nio-5006-exec-1] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
diff --git a/logs/mb-cloud-management/2023-10/debug.2023-10-17.0.log1492349991300.tmp b/logs/mb-cloud-management/2023-10/debug.2023-10-17.0.log1492349991300.tmp
new file mode 100644
index 0000000..caceb85
--- /dev/null
+++ b/logs/mb-cloud-management/2023-10/debug.2023-10-17.0.log1492349991300.tmp
@@ -0,0 +1,99 @@
+2023-10-17 08:58:36,598 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Mon Oct 16 19:02:50 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 09:38:40,971 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 08:58:57 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-17 09:46:02,805 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:38:49 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 09:46:59,811 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:46:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 09:48:01,910 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 09:47:03 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 09:48:56,794 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:48:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 09:50:44,323 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:49:04 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 09:52:23,786 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:50:54 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 09:54:19,605 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:52:33 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 09:55:24,390 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 09:54:27 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 09:56:30,060 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 09:55:31 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 09:56:48,937 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 09:56:38 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 09:59:18,623 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:56:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 10:11:34,838 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 09:59:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 10:12:55,562 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5e39850, started on Tue Oct 17 10:11:52 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f
+2023-10-17 10:14:32,741 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:12:59 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 10:15:22,663 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:14:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 10:17:49,020 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@99a78d7, started on Tue Oct 17 10:15:27 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f
+2023-10-17 10:19:06,852 [http-nio-5006-exec-10] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.other.SiteClient.addSite] serviceId:[mb-cloud-other] message:[Error while extracting response for type [class java.lang.Integer] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.lang.Integer` out of VALUE_TRUE token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.Integer` out of VALUE_TRUE token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-17 10:19:31,680 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4ae263bf, started on Tue Oct 17 10:17:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f
+2023-10-17 10:32:20,075 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:19:39 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 10:33:31,122 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:32:29 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 10:35:04,183 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:33:34 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 10:41:56,896 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:35:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 10:43:55,268 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:42:03 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 10:44:49,220 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:43:59 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 10:45:39,349 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:44:52 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 10:46:16,256 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:45:43 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 10:47:06,959 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:46:19 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 10:48:54,167 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:47:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 10:59:14,998 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:48:57 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 11:00:48,778 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 10:59:21 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-17 11:06:21,647 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 11:00:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 11:08:40,396 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 11:06:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 11:13:42,821 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 11:08:48 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 11:15:18,000 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@398474a2, started on Tue Oct 17 11:13:51 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f
+2023-10-17 11:19:49,059 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 11:15:21 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 11:21:16,623 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 11:19:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 11:22:49,527 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 11:21:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 11:37:21,719 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 11:22:52 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 11:52:21,214 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 11:44:44 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 11:56:34,905 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 11:52:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:02:42,420 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 11:56:38 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:05:25,072 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 12:02:46 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:06:45,621 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:05:29 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:07:49,471 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 12:06:49 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:09:03,961 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:07:52 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:09:19,609 [main] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@630cb4a4, started on Tue Oct 17 12:09:10 CST 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 12:09:20,682 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@37fdfb05, started on Tue Oct 17 12:09:08 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f
+2023-10-17 12:10:56,844 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@654d8173, started on Tue Oct 17 12:09:31 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-17 12:12:25,762 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:11:00 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:13:31,837 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:12:29 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:15:44,030 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:13:35 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:16:33,971 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:15:47 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:17:36,323 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:16:37 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:26:51,285 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:17:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 12:27:28,498 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 12:26:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-17 12:30:37,218 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:27:32 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 14:05:59,564 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Tue Oct 17 12:30:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 14:17:11,759 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 14:14:11 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-17 14:21:37,613 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 14:17:18 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-17 14:22:33,743 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 14:21:44 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-17 14:24:50,971 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:22:38 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 14:25:51,098 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@654d8173, started on Tue Oct 17 14:24:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-17 14:27:50,647 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:25:54 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 14:34:13,000 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@654d8173, started on Tue Oct 17 14:27:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-17 14:46:02,122 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:44:28 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 14:48:32,838 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:46:19 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 14:50:11,607 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Tue Oct 17 14:49:06 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 14:51:42,232 [http-nio-5006-exec-3] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.auth.UserClient.getToken] serviceId:[mb-cloud-auth] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-auth]
+2023-10-17 14:52:32,850 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:51:14 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 14:54:48,786 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:53:29 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 15:00:41,884 [http-nio-5006-exec-3] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponExamineListOfSearch] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-17 15:05:24,894 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 14:57:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 15:20:23,501 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 15:18:59 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 15:31:59,613 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 15:20:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 15:59:21,906 [http-nio-5006-exec-10] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-17 16:33:31,477 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponExamineListOfSearch] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
+ at [Source: (PushbackInputStream); line: 1, column: 1]]
+2023-10-17 16:55:41,579 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 15:32:08 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-17 16:59:49,522 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Tue Oct 17 16:56:17 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 17:03:46,070 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 16:59:58 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 17:07:21,389 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 17:06:00 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 17:09:22,044 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 17:07:30 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 17:24:08,564 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 17:09:27 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 17:33:37,787 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.PointMercharsClient.ticketList] serviceId:[mb-cloud-activity] message:[Read timed out executing POST http://mb-cloud-activity/base/pointMerchars/ticketList]
+2023-10-17 17:47:23,588 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@654d8173, started on Tue Oct 17 17:24:14 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-17 17:49:02,748 [http-nio-5006-exec-6] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackagePaymentClient.queryRegistrationRecord] serviceId:[mb-cloud-course] message:[Read timed out executing POST http://mb-cloud-course/coursePackagePayment/queryRegistrationRecord]
+2023-10-17 18:00:24,191 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 17:47:30 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 18:03:46,777 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 18:00:36 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 18:04:56,313 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 18:03:52 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-17 18:06:06,219 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 18:05:00 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 18:07:05,824 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 18:06:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 18:08:07,776 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 18:07:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 18:18:52,551 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 18:08:11 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-17 18:22:10,433 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@239b0f9d, started on Tue Oct 17 18:18:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
diff --git a/logs/mb-cloud-management/2023-10/debug.2023-10-21.0.log3887694707600.tmp b/logs/mb-cloud-management/2023-10/debug.2023-10-21.0.log3887694707600.tmp
new file mode 100644
index 0000000..7ba0489
--- /dev/null
+++ b/logs/mb-cloud-management/2023-10/debug.2023-10-21.0.log3887694707600.tmp
@@ -0,0 +1,23 @@
+2023-10-21 09:39:15,989 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Sat Oct 21 09:33:08 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-21 09:53:47,560 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@87abc48, started on Sat Oct 21 09:39:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f
+2023-10-21 10:57:18,079 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1603dc2f, started on Sat Oct 21 09:53:59 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f
+2023-10-21 12:35:32,369 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Sat Oct 21 11:11:21 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-21 12:42:29,046 [http-nio-5006-exec-6] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.auth.UserClient.getToken] serviceId:[mb-cloud-auth] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-auth]
+2023-10-21 13:06:58,851 [http-nio-5006-exec-10] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account]
+2023-10-21 13:07:02,771 [http-nio-5006-exec-7] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account]
+2023-10-21 14:09:48,139 [http-nio-5006-exec-8] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account]
+2023-10-21 14:11:56,173 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account]
+2023-10-21 14:11:57,842 [http-nio-5006-exec-4] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account]
+2023-10-21 14:14:39,927 [http-nio-5006-exec-5] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account]
+2023-10-21 14:14:45,485 [http-nio-5006-exec-10] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityClient.list] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account]
+2023-10-21 14:15:27,332 [http-nio-5006-exec-9] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account]
+2023-10-21 14:15:37,846 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account]
+2023-10-21 14:17:29,434 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Sat Oct 21 12:41:31 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-21 14:18:44,137 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Sat Oct 21 14:17:41 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-21 14:22:35,264 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Sat Oct 21 14:18:54 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a
+2023-10-21 14:36:39,294 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Sat Oct 21 14:22:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-21 14:59:59,916 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Sat Oct 21 14:36:45 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a
+2023-10-21 15:03:00,304 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Sat Oct 21 15:00:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-21 17:30:01,010 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Sat Oct 21 15:03:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-21 17:33:39,746 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Sat Oct 21 17:30:16 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
+2023-10-21 17:36:52,690 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Sat Oct 21 17:33:53 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df
diff --git a/logs/mb-cloud-management/2023-10/debug.2023-10-28.0.log3610732711500.tmp b/logs/mb-cloud-management/2023-10/debug.2023-10-28.0.log3610732711500.tmp
new file mode 100644
index 0000000..e48d08d
--- /dev/null
+++ b/logs/mb-cloud-management/2023-10/debug.2023-10-28.0.log3610732711500.tmp
@@ -0,0 +1,43 @@
+2023-10-28 09:35:14,527 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@42435b98, started on Sat Oct 28 09:23:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 09:36:59,276 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2a49fe, started on Sat Oct 28 09:35:24 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 09:53:37,496 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@3c7cfcbb, started on Sat Oct 28 09:37:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 09:53:58,672 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@24fabd0f, started on Sat Oct 28 09:53:44 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 09:55:05,021 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@198ef2ce, started on Sat Oct 28 09:54:02 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 09:56:36,606 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@27b000f7, started on Sat Oct 28 09:55:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 10:02:14,321 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2787de58, started on Sat Oct 28 09:56:41 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 10:04:15,167 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@198ef2ce, started on Sat Oct 28 10:02:19 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 15:31:21,383 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2787de58, started on Sat Oct 28 10:04:19 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 15:37:59,696 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@476ec9d0, started on Sat Oct 28 15:31:33 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 15:40:31,476 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@55cff952, started on Sat Oct 28 15:38:08 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 15:57:42,737 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@476ec9d0, started on Sat Oct 28 15:40:39 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@70ab2d48
+2023-10-28 16:07:55,857 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@476ec9d0, started on Sat Oct 28 15:57:48 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:14:43,815 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@65bb9029, started on Sat Oct 28 16:08:02 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:15:10,086 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@37fdfb05, started on Sat Oct 28 16:14:47 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:16:32,724 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2227a6c1, started on Sat Oct 28 16:15:14 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:19:04,008 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1f193686, started on Sat Oct 28 16:16:36 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:21:43,873 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1948ea69, started on Sat Oct 28 16:19:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:25:22,734 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@476ec9d0, started on Sat Oct 28 16:21:48 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:43:33,379 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5dbf5634, started on Sat Oct 28 16:25:26 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:47:06,276 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@398474a2, started on Sat Oct 28 16:43:39 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:49:19,541 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@61799544, started on Sat Oct 28 16:47:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:51:42,421 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@398474a2, started on Sat Oct 28 16:49:23 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:56:36,738 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4abf3f0, started on Sat Oct 28 16:51:46 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 16:59:36,947 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@432034a, started on Sat Oct 28 16:56:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:10:17,792 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6a10b263, started on Sat Oct 28 16:59:42 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:10:37,521 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2787de58, started on Sat Oct 28 17:10:23 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:12:06,635 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@398474a2, started on Sat Oct 28 17:10:41 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:12:31,334 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@54f66455, started on Sat Oct 28 17:12:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:14:28,414 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@385ef531, started on Sat Oct 28 17:12:35 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:15:28,494 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@61f3fbb8, started on Sat Oct 28 17:14:32 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:16:54,189 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@325bb9a6, started on Sat Oct 28 17:15:33 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:17:59,526 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@37fdfb05, started on Sat Oct 28 17:16:58 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:21:13,272 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2bc9a775, started on Sat Oct 28 17:18:03 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:23:28,353 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@37fdfb05, started on Sat Oct 28 17:21:17 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:25:52,474 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6d171ce0, started on Sat Oct 28 17:24:43 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:26:18,240 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@70e3f36f, started on Sat Oct 28 17:26:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:34:07,407 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@41f35f7c, started on Sat Oct 28 17:26:22 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:36:31,179 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2bc9a775, started on Sat Oct 28 17:34:13 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:41:03,794 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@65bb9029, started on Sat Oct 28 17:36:35 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:43:41,673 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4cbd03e7, started on Sat Oct 28 17:41:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd
+2023-10-28 17:47:04,318 [http-nio-5006-exec-1] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.queryCoursePackageLists] serviceId:[mb-cloud-course] message:[Read timed out executing POST http://mb-cloud-course/coursePackage/queryCoursePackageLists]
+2023-10-28 17:57:38,289 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6d4c273c, started on Sat Oct 28 17:43:45 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@70ab2d48

--
Gitblit v1.7.1