From ef96dbc9278ebae4af204cca9de98c63f0d6328e Mon Sep 17 00:00:00 2001
From: 44323 <443237572@qq.com>
Date: 星期三, 20 九月 2023 19:16:21 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai

---
 cloud-server-course/src/main/java/com/dsh/course/model/CourseDetailReq.java                                          |   17 
 cloud-server-other/src/main/java/com/dsh/other/service/TGameConfigService.java                                       |   17 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java                             |  108 
 cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml                                         |   36 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigTrueService.java          |   16 
 cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java                                      |    6 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TTurnServiceImpl.java                 |   21 
 cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java                              |    9 
 .idea/workspace.xml                                                                                                  |  414 --
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStudentServiceImpl.java              |    6 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TOperatorService.java                      |   17 
 cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java                                        |    6 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add.html                                     |   46 
 cloud-server-management/src/main/java/com/dsh/course/dto/CreateHistoryDto.java                                       |   18 
 cloud-server-account/src/main/resources/mapper/TStudentMapper.xml                                                    |    9 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_imgAll.html                                  |   13 
 cloud-server-other/src/main/java/com/dsh/other/mapper/TGameConfigMapper.java                                         |   17 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java                         |    4 
 cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java                                               |   11 
 cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java                                                |    9 
 cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOther.js                                    |  560 ++++
 cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java                                   |    4 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/StudentClassInfo.java                  |   15 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/other/HistoryClient.java                            |   29 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit_two.html                                |  134 +
 cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java                                          |    7 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ResultUtil.java                               |    4 
 cloud-server-course/src/main/java/com/dsh/course/model/DetailsListVo.java                                            |   23 
 cloud-server-course/src/main/java/com/dsh/course/entity/dto/SelectDto.java                                           |    9 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_one.html                                 |   42 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html                               | 1245 ++++++--
 cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java                                           |    7 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java          |  254 +
 cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js                                         |  205 
 cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherOne.js                                 |  724 +++++
 cloud-server-other/src/main/resources/mapper/BannerMapper.xml                                                        |   13 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java                      |  130 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigTrueServiceImpl.java |   20 
 cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherMapper.java                                   |   17 
 cloud-server-management/src/main/resources/mapper/TTurnMapper.xml                                                    |    6 
 cloud-server-management/src/main/webapp/static/modular/system/tStudent/tStudent.js                                   |   22 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseDetailReq.java                     |   17 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java                 |   34 
 cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigTrueMapper.java                         |   17 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ITStudentService.java                      |    3 
 cloud-server-other/src/main/java/com/dsh/other/entity/TGameConfig.java                                               |   71 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java                   |   22 
 cloud-server-management/src/main/resources/mapper/TStoreOtherConfigMapper.xml                                        |    6 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit_first.html                         |  362 ++
 cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java                                 |    8 
 cloud-server-course/src/main/java/com/dsh/course/entity/dto/ClassListDto.java                                        |   23 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html                                    |  167 +
 cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java                             |    5 
 cloud-server-management/src/main/java/com/dsh/course/model/dto/StudentClassInfo.java                                 |   15 
 cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java                            |   26 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TOperator.java                               |   48 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOther.java                             |   50 
 cloud-server-other/src/main/java/com/dsh/other/entity/GetHistoryDto.java                                             |   20 
 cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java                                        |    3 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherServiceImpl.java           |   21 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java                       |    5 
 cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java                                   |   11 
 cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml                                                    |   10 
 cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageInfo.java                                        |    2 
 cloud-server-other/src/main/java/com/dsh/other/mapper/TGameMapper.java                                               |   16 
 cloud-server-other/src/main/resources/mapper/TGameMapper.xml                                                         |    6 
 cloud-server-account/src/main/java/com/dsh/account/dto/CreateHistoryDto.java                                         |   20 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java                    |   62 
 cloud-server-account/src/main/java/com/dsh/account/model/vo/DetailsListVo.java                                       |   27 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigServiceImpl.java     |   20 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfig.java                       |   80 
 cloud-server-course/src/main/java/com/dsh/course/model/vo/response/PayCourseInfoReq.java                             |    3 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudent.html                                   |    1 
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Site.java                               |    2 
 cloud-server-course/src/main/java/com/dsh/course/entity/StudentClassInfo.java                                        |   15 
 cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml                                        |   16 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_two.html                                 |  124 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java                         |   13 
 cloud-server-management/src/main/java/com/dsh/course/dto/updateTimeDto.java                                          |   12 
 cloud-server-management/src/main/java/com/dsh/course/mapper/TTurnMapper.java                                         |   17 
 cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java                                      |   23 
 cloud-server-management/src/main/resources/mapper/TStoreOtherConfigTrueMapper.xml                                    |    6 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java                             |   12 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherService.java                    |   17 
 cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameServiceImpl.java                                    |   20 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorServiceImpl.java             |   21 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html                                     |  133 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java                         |   11 
 cloud-server-activity/src/main/java/com/dsh/ActivityApplication.java                                                 |    1 
 cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigMapper.java                             |   17 
 cloud-server-course/src/main/java/com/dsh/course/entity/dto/updateTimeDto.java                                       |   17 
 cloud-server-account/src/main/java/com/dsh/account/dto/GetHistoryDto.java                                            |   20 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java               |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TTurnService.java                          |   16 
 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java                  |    3 
 cloud-server-other/src/main/java/com/dsh/other/controller/TGameController.java                                       |   68 
 cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java                                     |    7 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java                  |  221 +
 cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java                                         |   15 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java                                    |    7 
 cloud-server-management/src/main/java/com/dsh/course/dto/ClassListDto.java                                           |   23 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java               |    5 
 cloud-server-other/src/main/resources/mapper/TGameConfigMapper.xml                                                   |    6 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStore.java                                  |    7 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java           |   21 
 cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java                              |    3 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TTurn.java                                   |   39 
 cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java                                              |    6 
 cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java                                 |   28 
 cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java                                        |   21 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java               |  206 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigService.java              |   17 
 cloud-server-other/src/main/java/com/dsh/other/entity/Site.java                                                      |    6 
 cloud-server-other/src/main/java/com/dsh/other/entity/TGame.java                                                     |   88 
 .idea/modules.xml                                                                                                    |    6 
 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java                           |    4 
 cloud-server-other/src/main/java/com/dsh/other/service/TGameService.java                                             |   17 
 cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info_one.js                                |  713 +++++
 cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java                            |   10 
 cloud-server-management/src/main/resources/mapper/TStoreMapper.xml                                                   |   30 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfigTrue.java                   |   83 
 cloud-server-other/src/main/java/com/dsh/other/entity/CreateHistoryDto.java                                          |   18 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java                          |   13 
 cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop.js                                         |   10 
 cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java                                              |    8 
 cloud-server-management/src/main/java/com/dsh/course/dto/GetHistoryDto.java                                          |   20 
 cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js                                    |   31 
 cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java                                   |    6 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java                           |    9 
 cloud-server-management/src/main/webapp/static/modular/system/tbBanner/tbBanner.js                                   |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreListVo.java                            |    4 
 cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorMapper.java                                     |   17 
 cloud-server-management/src/main/resources/mapper/TStoreOtherMapper.xml                                              |    6 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java                             |   17 
 cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameConfigServiceImpl.java                              |   20 
 cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml                                                |    6 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/GaoDeMapUtil.java                             |    2 
 cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java                                      |    8 
 cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java                     |    2 
 139 files changed, 6,793 insertions(+), 1,032 deletions(-)

diff --git a/.idea/modules.xml b/.idea/modules.xml
index 64989aa..7931019 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -3,12 +3,8 @@
   <component name="ProjectModuleManager">
     <modules>
       <module fileurl="file://$PROJECT_DIR$/.idea/PlayPai.iml" filepath="$PROJECT_DIR$/.idea/PlayPai.iml" />
-      <module fileurl="file://$PROJECT_DIR$/cloud-server-account/mb-cloud-account.iml" filepath="$PROJECT_DIR$/cloud-server-account/mb-cloud-account.iml" />
-      <module fileurl="file://$PROJECT_DIR$/cloud-server-activity/mb-cloud-activity.iml" filepath="$PROJECT_DIR$/cloud-server-activity/mb-cloud-activity.iml" />
-      <module fileurl="file://$PROJECT_DIR$/cloud-server-auth/mb-cloud-auth.iml" filepath="$PROJECT_DIR$/cloud-server-auth/mb-cloud-auth.iml" />
-      <module fileurl="file://$PROJECT_DIR$/cloud-server-competition/mb-cloud-competition.iml" filepath="$PROJECT_DIR$/cloud-server-competition/mb-cloud-competition.iml" />
       <module fileurl="file://$PROJECT_DIR$/cloud-server-course/mb-cloud-course.iml" filepath="$PROJECT_DIR$/cloud-server-course/mb-cloud-course.iml" />
-      <module fileurl="file://$PROJECT_DIR$/cloud-server-management/mb-cloud-management.iml" filepath="$PROJECT_DIR$/cloud-server-management/mb-cloud-management.iml" />
+      <module fileurl="file://$PROJECT_DIR$/cloud-server-parent/mb-cloud-parent.iml" filepath="$PROJECT_DIR$/cloud-server-parent/mb-cloud-parent.iml" />
     </modules>
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index e79fe1b..e8767ab 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -22,323 +22,44 @@
     <select />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="后台代码">
-      <change beforePath="$PROJECT_DIR$/.idea/compiler.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/compiler.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/encodings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/encodings.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__c3p0_c3p0_0_9_1_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_hutool_hutool_all_4_5_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_hutool_hutool_all_5_3_7.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_mb_cloud_mb_cloud_common_api_1_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_mb_cloud_mb_cloud_common_cache_1_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_mb_cloud_mb_cloud_common_core_1_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_mb_cloud_mb_cloud_common_data_1_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_mb_cloud_mb_cloud_common_feign_1_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_mb_cloud_mb_cloud_common_idempotent_1_2_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_mb_cloud_mb_cloud_common_job_1_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_mb_cloud_mb_cloud_common_log_1_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_mb_cloud_mb_cloud_common_sentinel_1_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_mb_cloud_mb_cloud_common_swagger_1_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__cn_rongcloud_im_server_sdk_java_3_0_4.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_cloud_spring_cloud_alibaba_sentinel_datasource_2_2_1_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_cloud_spring_cloud_circuitbreaker_sentinel_2_2_1_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_cloud_spring_cloud_starter_alibaba_nacos_config_2_2_1_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_cloud_spring_cloud_starter_alibaba_nacos_discovery_2_2_1_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_cloud_spring_cloud_starter_alibaba_sentinel_2_2_1_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_annotation_aspectj_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_cluster_client_default_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_cluster_common_default_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_cluster_server_default_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_core_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_datasource_extension_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_parameter_flow_control_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_reactor_adapter_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_spring_webflux_adapter_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_spring_webmvc_adapter_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_transport_common_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_csp_sentinel_transport_simple_http_1_7_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_druid_1_1_22.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_druid_spring_boot_starter_1_1_22.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_fastjson_1_2_41.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_fastjson_1_2_58.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_nacos_nacos_api_1_2_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_nacos_nacos_client_1_2_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_nacos_nacos_common_1_2_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_spring_spring_context_support_1_0_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_transmittable_thread_local_2_10_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_aliyun_oss_aliyun_sdk_oss_2_5_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_kaptcha_spring_boot_starter_1_1_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_4_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_4_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_4_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_4_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_4_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_3_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_penggle_kaptcha_2_3_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_virtuald_curvesapi_1_04.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_xiaoymin_knife4j_annotations_2_0_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_xiaoymin_knife4j_core_2_0_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_2_0_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_autoconfigure_2_0_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_starter_2_0_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_ui_2_0_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_guava_guava_20_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_maps_google_maps_services_2_0_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_googlecode_concurrentlinkedhashmap_concurrentlinkedhashmap_lru_1_4_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_ibeetl_beetl_3_3_0_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_ibeetl_beetl_framework_starter_1_2_31_Beetl_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_jhlabs_filters_2_0_235_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_midtrans_java_library_3_1_4.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_netflix_archaius_archaius_core_0_7_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_netflix_hystrix_hystrix_core_1_5_18.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_commons_util_0_3_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_statistics_0_1_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_netflix_ribbon_ribbon_2_3_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_netflix_ribbon_ribbon_core_2_3_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_netflix_ribbon_ribbon_httpclient_2_3_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_netflix_ribbon_ribbon_loadbalancer_2_3_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_netflix_ribbon_ribbon_transport_2_3_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_netflix_servo_servo_core_0_12_21.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_squareup_okhttp3_logging_interceptor_3_14_9.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_squareup_okhttp3_okhttp_3_14_9.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_squareup_okio_okio_1_17_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_squareup_retrofit2_retrofit_2_6_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_squareup_retrofit2_retrofit_mock_2_6_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_jersey_contribs_jersey_apache_client4_1_19_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_jersey_jersey_client_1_19_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_19_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_xml_bind_jaxb_core_2_3_0_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_sun_xml_bind_jaxb_impl_2_3_0_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_thoughtworks_xstream_xstream_1_4_11_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_xuxueli_xxl_job_core_2_2_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_5.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_codec_commons_codec_1_14.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_configuration_commons_configuration_1_8.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_fileupload_commons_fileupload_1_3_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_httpclient_commons_httpclient_3_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_io_commons_io_2_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__de_codecentric_spring_boot_admin_client_2_2_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__de_codecentric_spring_boot_admin_starter_client_2_2_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_github_openfeign_feign_core_10_10_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_github_openfeign_feign_hystrix_10_10_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_github_openfeign_feign_slf4j_10_10_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_github_openfeign_form_feign_form_3_8_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_github_openfeign_form_feign_form_spring_3_8_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_grpc_grpc_context_1_33_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_jsonwebtoken_jjwt_0_9_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_lettuce_lettuce_core_5_3_5_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_micrometer_micrometer_core_1_5_7.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_micrometer_micrometer_registry_prometheus_1_5_7.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_all_4_1_54_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_buffer_4_1_54_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_codec_4_1_54_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_common_4_1_54_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_handler_4_1_54_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_resolver_4_1_54_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_transport_4_1_54_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_opencensus_opencensus_api_0_30_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_projectreactor_reactor_core_3_3_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_prometheus_simpleclient_0_5_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_prometheus_simpleclient_common_0_8_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_reactivex_rxjava_1_3_8.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_reactivex_rxnetty_0_4_9.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_reactivex_rxnetty_contexts_0_4_9.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_reactivex_rxnetty_servo_0_4_9.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_bean_validators_2_9_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_22.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_swagger_swagger_models_1_5_22.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_undertow_undertow_core_2_1_4_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_undertow_undertow_servlet_2_1_4_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_undertow_undertow_websockets_jsr_2_1_4_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__jakarta_servlet_jakarta_servlet_api_4_0_4.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_inject_javax_inject_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_servlet_javax_servlet_api_4_0_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_ws_rs_jsr311_api_1_1_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__junit_junit_4_13_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_22.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_18.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_18.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_sf_ezmorph_ezmorph_1_0_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_sf_json_lib_json_lib_jdk15_2_4.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_antlr_antlr4_runtime_4_7_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_10.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_8_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_13.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_13.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_13_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_logging_log4j_log4j_core_2_13_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_13_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_poi_poi_3_9.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_17.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_17.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_39.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_39.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_aspectj_aspectjrt_1_9_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_assertj_assertj_core_3_16_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_59.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_59.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_codehaus_groovy_groovy_2_5_13.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_codehaus_jackson_jackson_core_asl_1_9_13.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_codehaus_jackson_jackson_mapper_asl_1_9_13.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_flywaydb_flyway_core_6_4_4.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_freemarker_freemarker_2_3_30.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_glassfish_jakarta_el_3_0_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_hamcrest_hamcrest_core_2_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_hdrhistogram_HdrHistogram_2_1_12.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_1_6_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_javassist_javassist_3_25_0_GA.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_1_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_spec_javax_annotation_jboss_annotations_api_1_3_spec_2_0_1_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_spec_javax_websocket_jboss_websocket_api_1_1_spec_2_0_0_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_threads_jboss_threads_3_1_0_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_xnio_xnio_api_3_8_0_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_xnio_xnio_nio_3_8_0_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jdom_jdom_1_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jolokia_jolokia_core_1_6_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_json_json_20190722.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_6_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_6_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_6_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_6_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_6_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_6_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_junit_vintage_junit_vintage_engine_5_6_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_latencyutils_LatencyUtils_2_0_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mapstruct_mapstruct_1_2_0_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mockito_mockito_core_3_3_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_3_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_3_5_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_5.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_projectlombok_lombok_1_18_16.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_quartz_scheduler_quartz_2_2_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_actuator_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_actuator_autoconfigure_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_configuration_processor_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_actuator_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_cache_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_freemarker_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_undertow_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_commons_2_2_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_context_2_2_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_archaius_2_2_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_ribbon_2_2_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_openfeign_core_2_2_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_security_2_2_4_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_2_2_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_bootstrap_3_0_4.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_archaius_2_2_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_ribbon_2_2_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_oauth2_2_2_4_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_openfeign_2_2_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_security_2_2_4_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_3_5_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_3_5_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_3_5_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_security_oauth_boot_spring_security_oauth2_autoconfigure_2_1_2_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_security_oauth_spring_security_oauth2_2_3_6_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_security_spring_security_config_5_3_5_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_security_spring_security_core_5_3_5_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_security_spring_security_crypto_5_3_5_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_security_spring_security_jwt_1_0_10_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_security_spring_security_rsa_1_0_9_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_security_spring_security_web_5_3_5_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_aop_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_beans_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_context_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_context_support_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_core_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_expression_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_jcl_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_jdbc_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_oxm_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_test_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_tx_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_web_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_webmvc_5_2_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_wildfly_client_wildfly_client_config_1_0_1_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_wildfly_common_wildfly_common_1_5_2_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_7_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_yaml_snakeyaml_1_26.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__redis_clients_jedis_2_9_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__stax_stax_api_1_0_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__xmlpull_xmlpull_1_1_3_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__xpp3_xpp3_min_1_1_4c.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
+    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="9.15.1">
+      <change afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/modules.xml" 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-account/mb-cloud-account.iml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/mb-cloud-account.iml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.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-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-activity/mb-cloud-activity.iml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/mb-cloud-activity.iml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-auth/mb-cloud-auth.iml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-auth/mb-cloud-auth.iml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-competition/mb-cloud-competition.iml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-competition/mb-cloud-competition.iml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-course/mb-cloud-course.iml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/mb-cloud-course.iml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/mb-cloud-management.iml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/mb-cloud-management.iml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.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" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ITStudentService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ITStudentService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStudentServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStudentServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ResultUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ResultUtil.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudent.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudent.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tStudent/tStudent.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tStudent/tStudent.js" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -348,8 +69,8 @@
   <component name="FileTemplateManagerImpl">
     <option name="RECENT_TEMPLATES">
       <list>
-        <option value="Interface" />
         <option value="HTML File" />
+        <option value="Interface" />
         <option value="Class" />
       </list>
     </option>
@@ -376,45 +97,48 @@
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
   </component>
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;DefaultHtmlFileTemplate&quot;: &quot;HTML File&quot;,
-    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
-    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
-    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
-    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
-    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
-    &quot;git-widget-placeholder&quot;: &quot;master&quot;,
-    &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
-    &quot;last_opened_file_path&quot;: &quot;D:/ttt/java/PlayPai/cloud-server-management/src/main/webapp/static&quot;,
-    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
-    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
-    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
-    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
-    &quot;spring.configuration.checksum&quot;: &quot;7fb6c6ffe49cf7315145a28a96be3d8f&quot;,
-    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "DefaultHtmlFileTemplate": "HTML File",
+    "RequestMappingsPanelOrder0": "0",
+    "RequestMappingsPanelOrder1": "1",
+    "RequestMappingsPanelWidth0": "75",
+    "RequestMappingsPanelWidth1": "75",
+    "WebServerToolWindowFactoryState": "false",
+    "git-widget-placeholder": "master",
+    "ignore.virus.scanning.warn.message": "true",
+    "last_opened_file_path": "D:/ttt/java/PlayPai/cloud-server-other/src/main/resources/mapper",
+    "node.js.detected.package.eslint": "true",
+    "node.js.detected.package.tslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "project.structure.last.edited": "模块",
+    "project.structure.proportion": "0.15",
+    "project.structure.side.proportion": "0.54367816",
+    "spring.configuration.checksum": "7fb6c6ffe49cf7315145a28a96be3d8f",
+    "vue.rearranger.settings.migration": "true"
   }
-}</component>
+}]]></component>
   <component name="ReactorSettings">
     <option name="notificationShown" value="true" />
   </component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\ttt\java\PlayPai\cloud-server-other\src\main\resources\mapper" />
+      <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\WEB-INF\view\system\tStudent" />
       <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\static" />
       <recent name="D:\ttt\java\PlayPai\cloud-server-parent" />
       <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\resources\mapper" />
-      <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\static\modular\system\tStudent" />
-      <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\WEB-INF\view\system\tStudent" />
     </key>
     <key name="MoveFile.RECENT_KEYS">
       <recent name="D:\ttt\java\PlayPai\cloud-server-parent" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
-      <recent name="com.dsh.account.dto" />
+      <recent name="com.dsh.course.entity.dto" />
+      <recent name="com.dsh.course.feignClient.other" />
       <recent name="com.dsh.course.dto" />
+      <recent name="com.dsh.account.dto" />
       <recent name="com.dsh.course.mapper" />
-      <recent name="com.dsh.guns.modular.system.model" />
-      <recent name="com.dsh.guns.modular.system.service.impl" />
     </key>
   </component>
   <component name="RunDashboard">
@@ -510,8 +234,8 @@
     </configuration>
     <list>
       <item itemvalue="Spring Boot.GatewayApplication" />
-      <item itemvalue="Spring Boot.ManagementApplication" />
       <item itemvalue="Spring Boot.AccountApplication" />
+      <item itemvalue="Spring Boot.ManagementApplication" />
       <item itemvalue="Spring Boot.CourseApplication" />
       <item itemvalue="Spring Boot.OtherApplication" />
       <item itemvalue="Spring Boot.UserApplication" />
@@ -539,6 +263,11 @@
       <workItem from="1694576808030" duration="31000" />
       <workItem from="1694578995783" duration="17340000" />
       <workItem from="1694652961834" duration="2402000" />
+      <workItem from="1694749027815" duration="287000" />
+      <workItem from="1694826312367" duration="136000" />
+      <workItem from="1694826468892" duration="22165000" />
+      <workItem from="1694931109193" duration="31686000" />
+      <workItem from="1695084815207" duration="29663000" />
     </task>
     <task id="LOCAL-00001" summary="后台代码删除">
       <created>1690249807612</created>
@@ -631,7 +360,15 @@
       <option name="project" value="LOCAL" />
       <updated>1690364506501</updated>
     </task>
-    <option name="localTasksCounter" value="14" />
+    <task id="LOCAL-00014" summary="9.15">
+      <option name="closed" value="true" />
+      <created>1694749099246</created>
+      <option name="number" value="00014" />
+      <option name="presentableId" value="LOCAL-00014" />
+      <option name="project" value="LOCAL" />
+      <updated>1694749099246</updated>
+    </task>
+    <option name="localTasksCounter" value="15" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -651,17 +388,18 @@
   <component name="VcsManagerConfiguration">
     <MESSAGE value="后台代码删除" />
     <MESSAGE value="后台代码" />
-    <option name="LAST_COMMIT_MESSAGE" value="后台代码" />
+    <MESSAGE value="9.15" />
+    <option name="LAST_COMMIT_MESSAGE" value="9.15" />
   </component>
   <component name="XDebuggerManager">
     <breakpoint-manager>
       <breakpoints>
-        <line-breakpoint enabled="true" type="java-line">
+        <line-breakpoint type="java-line">
           <url>file://$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java</url>
           <line>145</line>
           <option name="timeStamp" value="1" />
         </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
+        <line-breakpoint type="java-line">
           <url>file://$PROJECT_DIR$/cloud-server-auth/src/main/java/cn/mb/cloud/auth/service/UserDetailsServiceImpl.java</url>
           <line>111</line>
           <option name="timeStamp" value="2" />
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
index 3625888..78b9786 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.dsh.account.dto.SelectDto;
 import com.dsh.account.entity.TAppUser;
 import com.dsh.account.entity.TCourseInfoRecord;
 import com.dsh.account.model.*;
@@ -404,4 +405,11 @@
         boolean save = courseInfoRecordService.save(tCourseInfoRecord);
         return save;
     }
+
+    @PostMapping("/appUser/getSelects")
+    public List<SelectDto> getSelects(@RequestBody List<Integer> studentIds){
+        List<SelectDto> selectDtos =    appUserService.getSelects(studentIds);
+        System.out.println("=======selectDtos======>"+selectDtos);
+        return selectDtos;
+    }
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
index c7f2a49..0a928be 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
@@ -7,6 +7,7 @@
 import com.dsh.account.entity.TStudent;
 import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
 import com.dsh.account.feignclient.course.model.RecordAppoint;
+import com.dsh.account.model.vo.DetailsListVo;
 import com.dsh.account.model.vo.classDetails.*;
 import com.dsh.account.model.vo.classDetails.classInsVo.*;
 import com.dsh.account.model.vo.commentDetail.StuCommentsVo;
@@ -33,6 +34,7 @@
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -107,6 +109,30 @@
         }
 
     }
+    @ResponseBody
+    @PostMapping("/api/startCource/weeksOfCourseDetailsList")
+    @ApiOperation(value = "上课首页-课程列表2.0", tags = {"APP-开始上课"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+            @ApiImplicitParam(value = "查询时间yyyy-MM-dd", name = "time", required = true, dataType = "string"),
+            @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"),
+            @ApiImplicitParam(value = "门店id", name = "storeId", required = true, dataType = "int"),
+            @ApiImplicitParam(value = "用户经度", name = "longitude", required = false, dataType = "string"),
+            @ApiImplicitParam(value = "用户纬度", name = "latitude", required = false, dataType = "string"),
+    })
+    public ResultUtil<Map<String,Object>> weeksOfCourseDetailsList(String time, Integer stuId, Integer storeId, String longitude, String latitude){
+        try {
+            Integer appUserId = tokenUtil.getUserIdFormRedis();
+            if(null == appUserId){
+                return ResultUtil.tokenErr();
+            }
+            return ResultUtil.success(tappuService.weeksOfCourseDetailsList(appUserId,stuId,time,storeId,longitude,latitude));
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResultUtil.runErr();
+        }
+
+    }
 
     @ResponseBody
     @PostMapping("/api/startCource/weeksOfGetHours")
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 b567478..e3b035a 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
@@ -1,6 +1,8 @@
 package com.dsh.account.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.account.dto.CreateHistoryDto;
+import com.dsh.account.dto.GetHistoryDto;
 import com.dsh.account.dto.StudentSearch;
 import com.dsh.account.dto.TStudentDto;
 import com.dsh.account.entity.TStudent;
@@ -160,4 +162,30 @@
         System.out.println("===?==》"+id);
         return studentService.listOne(id);
     }
+
+    @ResponseBody
+    @PostMapping("/student/update")
+    public  void update(@RequestBody TStudent tStudent){
+        System.out.println("======tStudent======"+tStudent);
+        studentService.updateById(tStudent);
+    }
+
+    @ResponseBody
+    @PostMapping("/student/createHistory")
+    public  void createHistory(@RequestBody CreateHistoryDto createHistoryDto){
+        createHistoryDto.setDate(new Date());
+        studentService.createHistory(createHistoryDto);
+
+
+    }
+
+
+    @ResponseBody
+    @PostMapping("/student/getHisory")
+    public  List<GetHistoryDto> getHisory(){
+
+        List<GetHistoryDto> getHistoryDtos =  studentService.getHistory();
+
+        return getHistoryDtos;
+    }
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/dto/CreateHistoryDto.java b/cloud-server-account/src/main/java/com/dsh/account/dto/CreateHistoryDto.java
new file mode 100644
index 0000000..6a19be6
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/dto/CreateHistoryDto.java
@@ -0,0 +1,20 @@
+package com.dsh.account.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 CreateHistoryDto {
+
+    private String pleasePic;
+    private String passPic;
+    private Integer createBy;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date date;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/dto/GetHistoryDto.java b/cloud-server-account/src/main/java/com/dsh/account/dto/GetHistoryDto.java
new file mode 100644
index 0000000..1bf5931
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/dto/GetHistoryDto.java
@@ -0,0 +1,20 @@
+package com.dsh.account.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 GetHistoryDto {
+
+    private String pleasePic;
+    private String passPic;
+    private String createBy;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date date;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java b/cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java
new file mode 100644
index 0000000..28cac4b
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java
@@ -0,0 +1,9 @@
+package com.dsh.account.dto;
+
+import lombok.Data;
+
+@Data
+public class SelectDto {
+    Integer id;
+    String value;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
index b8c26af..290de04 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
@@ -4,11 +4,13 @@
 import com.dsh.account.feignclient.course.model.*;
 import com.dsh.account.model.BillingRequest;
 import com.dsh.account.model.BillingRequestVo;
+import com.dsh.account.model.vo.DetailsListVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.HashMap;
 import java.util.List;
 
 @FeignClient(value = "mb-cloud-course")
@@ -68,5 +70,8 @@
     @PostMapping("/base/coursePack/getClassHour")
     Integer getClassHour(Integer courseConfigId);
 
+    @PostMapping("/base/coursePack/weeksOfCourseDetailsList")
+    HashMap<String, Object> weeksOfCourseDetailsList(@RequestBody CourseDetailReq courseDetailReq);
+
 
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseDetailReq.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseDetailReq.java
new file mode 100644
index 0000000..198e310
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseDetailReq.java
@@ -0,0 +1,17 @@
+package com.dsh.account.feignclient.course.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CourseDetailReq {
+   private Integer appUserId;
+   private Integer stuId;
+   private String time;
+   private Integer storeId;
+   private String lon;
+   private String lat;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
index 165be48..2563388 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
@@ -1,6 +1,7 @@
 package com.dsh.account.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.account.dto.SelectDto;
 import com.dsh.account.entity.TAppUser;
 import com.dsh.account.model.query.appUserQuery.QueryAppUser;
 import com.dsh.account.model.vo.QueryAppUserVO;
@@ -28,4 +29,6 @@
     void membershipEnd();
 
     List<QueryAppUserVO> listAll(@Param("query") QueryAppUser query);
+
+    List<SelectDto> getSelects(@Param("studentIds") List<Integer> studentIds);
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java
index 18c4266..2830077 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java
@@ -1,6 +1,8 @@
 package com.dsh.account.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.account.dto.CreateHistoryDto;
+import com.dsh.account.dto.GetHistoryDto;
 import com.dsh.account.dto.StudentSearch;
 import com.dsh.account.dto.TStudentDto;
 import com.dsh.account.entity.TStudent;
@@ -24,4 +26,8 @@
     List<TStudentDto> selectAll(@Param("item") StudentSearch search);
 
     TStudentDto selectWebOne(@Param("id") Integer id);
+
+    void createHistory(@Param("createHistoryDto") CreateHistoryDto createHistoryDto);
+
+    List<GetHistoryDto> getHistory();
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/DetailsListVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/DetailsListVo.java
new file mode 100644
index 0000000..40f6a83
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/DetailsListVo.java
@@ -0,0 +1,27 @@
+package com.dsh.account.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DetailsListVo {
+
+
+    @ApiModelProperty("课包id")
+    private Integer id;
+
+    @ApiModelProperty("课包名称")
+    private String name;
+    @ApiModelProperty("")
+    private String intro;
+    @ApiModelProperty("1显示请假  2购课")
+    private Integer type;
+    @ApiModelProperty("时间段")
+    private List<String> time;
+    @ApiModelProperty("课时数")
+    private Integer num;
+    @ApiModelProperty("金额")
+    private Double money;
+}
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 ce1e1c8..1d4aa55 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
@@ -1,12 +1,14 @@
 package com.dsh.account.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.account.dto.SelectDto;
 import com.dsh.account.entity.TAppUser;
 import com.dsh.account.model.AddAppUserVo;
 import com.dsh.account.model.JoinPlayPaiVo;
 import com.dsh.account.model.LoginSMSCodeVo;
 import com.dsh.account.model.LoginWeChatVo;
 import com.dsh.account.model.query.appUserQuery.QueryAppUser;
+import com.dsh.account.model.vo.DetailsListVo;
 import com.dsh.account.model.vo.QueryAppUserVO;
 import com.dsh.account.model.vo.classDetails.CourseVenue;
 import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
@@ -16,6 +18,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -139,4 +142,9 @@
     List<CourseVenue> queryWeekOfCourseDetails(Integer appUserId ,Integer stuId, String time, String longitude, String latitude);
 
     List<QueryAppUserVO> listAll(QueryAppUser query);
+
+    Map<String,Object> weeksOfCourseDetailsList(Integer appUserId, Integer stuId, String time, Integer storeId,String lon,String lat);
+
+
+    List<SelectDto> getSelects(List<Integer> studentIds);
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java
index 0c4f69a..008f808 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java
@@ -1,6 +1,8 @@
 package com.dsh.account.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.account.dto.CreateHistoryDto;
+import com.dsh.account.dto.GetHistoryDto;
 import com.dsh.account.dto.StudentSearch;
 import com.dsh.account.dto.TStudentDto;
 import com.dsh.account.entity.TStudent;
@@ -107,4 +109,8 @@
     List<TStudentDto> listAll( StudentSearch search);
 
     TStudentDto listOne(Integer id);
+
+    void createHistory(CreateHistoryDto createHistoryDto);
+
+    List<GetHistoryDto> getHistory();
 }
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 daedcdf..656063c 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
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.account.dto.SelectDto;
 import com.dsh.account.entity.*;
 import com.dsh.account.enums.RechargeRecordEnum;
 import com.dsh.account.feignclient.activity.IntroduceRewardsClient;
@@ -32,6 +33,7 @@
 import com.dsh.account.model.*;
 import com.dsh.account.model.dto.Coupon;
 import com.dsh.account.model.query.appUserQuery.QueryAppUser;
+import com.dsh.account.model.vo.DetailsListVo;
 import com.dsh.account.model.vo.QueryAppUserVO;
 import com.dsh.account.model.vo.classDetails.CourseVenue;
 import com.dsh.account.model.vo.classDetails.ExerciseVideo;
@@ -151,6 +153,21 @@
     public List<QueryAppUserVO> listAll(QueryAppUser query) {
        return appUserMapper.listAll(query);
     }
+
+    @Override
+    public HashMap<String,Object> weeksOfCourseDetailsList(Integer appUserId, Integer stuId, String time, Integer storeId,String lon,String lat) {
+        // 门店id 查出所有课程
+        HashMap<String, Object> map = paymentClient.weeksOfCourseDetailsList(new CourseDetailReq(appUserId, stuId, time, storeId,lon,lat));
+
+        return map;
+    }
+
+
+    @Override
+    public List<SelectDto> getSelects(List<Integer> studentIds) {
+        return this.baseMapper.getSelects(studentIds);
+    }
+
     @Override
     public ClassInfoVo queryUserOfStus(Integer id) {
         TAppUser tAppUser = this.baseMapper.selectById(id);
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
index 25ade80..3d66997 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.account.dto.CreateHistoryDto;
+import com.dsh.account.dto.GetHistoryDto;
 import com.dsh.account.dto.StudentSearch;
 import com.dsh.account.dto.TStudentDto;
 import com.dsh.account.entity.Coach;
@@ -824,5 +826,15 @@
         return this.baseMapper.selectWebOne(id);
     }
 
+    @Override
+    public void createHistory(CreateHistoryDto createHistoryDto) {
+         this.baseMapper.createHistory(createHistoryDto);
+    }
+
+    @Override
+    public List<GetHistoryDto> getHistory() {
+        return this.baseMapper.getHistory();
+    }
+
 
 }
diff --git a/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
index 4b5cfd9..39c9f71 100644
--- a/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
+++ b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
@@ -57,4 +57,14 @@
             and t1.state != 3
         </where>
     </select>
+    <select id="getSelects" resultType="com.dsh.account.dto.SelectDto">
+        SELECT ts.id ,ts.`name` as value
+        FROM t_student ts
+        <where>
+            ts.id in
+            <foreach collection="studentIds" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </where>
+    </select>
 </mapper>
diff --git a/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml b/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml
index 09bab21..2450b6c 100644
--- a/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml
+++ b/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml
@@ -21,6 +21,11 @@
         <result column="isDefault" property="isDefault" />
 
     </resultMap>
+    <insert id="createHistory">
+        insert into t_usetime_history (createBy,pleasePic,passPic,insertTime)
+
+            value(#{createHistoryDto.createBy},#{createHistoryDto.pleasePic},#{createHistoryDto.passPic},#{createHistoryDto.date})
+    </insert>
 
     <select id="selectAll" resultType="com.dsh.account.dto.TStudentDto">
         SELECT * FROM (
@@ -60,5 +65,9 @@
         where o.id = #{id}
 
     </select>
+    <select id="getHistory" resultType="com.dsh.account.dto.GetHistoryDto">
+        SELECT
+
+    </select>
 
 </mapper>
diff --git a/cloud-server-activity/src/main/java/com/dsh/ActivityApplication.java b/cloud-server-activity/src/main/java/com/dsh/ActivityApplication.java
index 6605c69..9e3e2b7 100644
--- a/cloud-server-activity/src/main/java/com/dsh/ActivityApplication.java
+++ b/cloud-server-activity/src/main/java/com/dsh/ActivityApplication.java
@@ -16,6 +16,7 @@
 import javax.annotation.PostConstruct;
 import java.util.TimeZone;
 
+
 /**
  * @author jason
  */
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 e410aee..b916ad3 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
@@ -142,7 +142,7 @@
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
         ProductDetailsVo detailsVo = new ProductDetailsVo();
         PointsMerchandise merchandise = pmdsService.getById(detailRequest.getGoodId());
-        detailsVo.setCardType(merchandise.getCardTye());
+        detailsVo.setCardType(merchandise.getCardType());
         switch (detailRequest.getGoodsType()){
             case 2:
 //                课包
@@ -369,7 +369,7 @@
         if (ToolUtil.isNotEmpty(byId)){
             PointsMerchandise pmdsServiceById = pmdsService.getById(byId.getPointsMerchandiseId());
             // 2.0
-            detailsVo.setCardType(pmdsServiceById.getCardTye());
+            detailsVo.setCardType(pmdsServiceById.getCardType());
             detailsVo.setExchangeType(pmdsServiceById.getRedemptionMethod());
             detailsVo.setGoodType(pmdsServiceById.getType());
             if (pmdsServiceById.getRedemptionMethod() == 1){
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java
index 8b25014..9b7bd28 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java
@@ -159,8 +159,8 @@
      */
     @TableField("shelves")
     private Integer shelves;
-    @TableField("cardTye")
-    private Integer cardTye;
+    @TableField("cardType")
+    private Integer cardType;
 
     @Override
     protected Serializable pkVal() {
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Site.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Site.java
index be537f8..5b2c871 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Site.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Site.java
@@ -63,7 +63,7 @@
     /**
      * 场地责任险有效期
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date insuranceEndTime;
     /**
      * 场地责任险图片
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 f613014..6221f18 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
@@ -218,6 +218,8 @@
             return ResultUtil.runErr();
         }
     }
+
+
     @ResponseBody
     @PostMapping("/api/competition/paymentCompetitionCourseList")
     @ApiOperation(value = "赛事报名--支付可用课时列表", tags = {"APP-赛事活动列表"})
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
index 77267b3..2aba9e5 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
@@ -78,7 +78,8 @@
      */
     @Override
     public List<CompetitionListVo> queryCompetitionList(String cityCode, String content, Integer registerCondition, String heat) throws Exception {
-        return this.baseMapper.queryCompetitionList(cityCode, content, registerCondition, heat);
+        List<CompetitionListVo> competitionListVos = this.baseMapper.queryCompetitionList(cityCode, content, registerCondition, heat);
+        return competitionListVos;
     }
 
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
index 439e7b5..b1478b6 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
@@ -167,6 +167,7 @@
 
 
 
+
     @ResponseBody
     @PostMapping("/api/course/queryCourseInfo")
     @ApiOperation(value = "获取课程详情", tags = {"APP-课程列表"})
@@ -193,7 +194,6 @@
 
 
 
-
     @ResponseBody
     @PostMapping("/api/course/paymentCourse")
     @ApiOperation(value = "支付课程", tags = {"APP-课程列表"})
@@ -205,6 +205,10 @@
             Integer uid = tokenUtil.getUserIdFormRedis();
             if(null == uid){
                 return ResultUtil.tokenErr();
+            }
+            Long couponId = paymentCourseVo.getCouponId();
+            if(couponId==null || couponId==0){
+                paymentCourseVo.setCouponId(null);
             }
             return coursePackageService.paymentCourse(uid, paymentCourseVo);
         }catch (Exception e){
@@ -232,7 +236,6 @@
             return ResultUtil.runErr();
         }
     }
-
 
     /**
      * 购买课程微信支付回调
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 c350bf2..3c4da2b 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
@@ -15,11 +15,7 @@
 import com.dsh.course.feignclient.model.*;
 import com.dsh.course.feignclient.other.StoreClient;
 import com.dsh.course.feignclient.other.model.Store;
-import com.dsh.course.model.BaseVo;
-import com.dsh.course.model.QueryRegistrationRecord;
-import com.dsh.course.model.QueryWalkInStudentList;
-import com.dsh.course.model.BillingRequest;
-import com.dsh.course.model.BillingRequestVo;
+import com.dsh.course.model.*;
 import com.dsh.course.model.dto.DiscountJsonDto;
 import com.dsh.course.model.vo.CourseDetailRequest;
 import com.dsh.course.model.vo.RegisterCourseVo;
@@ -49,10 +45,7 @@
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Api
@@ -540,7 +533,7 @@
     @ApiImplicitParams({
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
     })
-    public ResultUtil<?> payCourse(@RequestBody PayCourseReq req){
+    public ResultUtil<?> payCourse(PayCourseReq req){
         try {
             Integer appUserId = tokenUtil.getUserIdFormRedis();
             if(null == appUserId){
@@ -1086,26 +1079,23 @@
             if (ToolUtil.isEmpty(packagePayment)){
                 return ResultUtil.error("该用户未购买该课包");
             }
-            CoursePackageStudent coursePackageStudent = cspsService.getOne(new LambdaQueryWrapper<CoursePackageStudent>()
+            List<CoursePackageStudent> coursePackageStudent = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>()
                     .eq(CoursePackageStudent::getCoursePackageId,packagePayment.getCoursePackageId())
                     .eq(CoursePackageStudent::getCoursePackagePaymentId,courseID)
                     .eq(CoursePackageStudent::getStudentId,stuId)
                     .eq(CoursePackageStudent::getAppUserId,appUserId)
             );
 
-            if (ToolUtil.isNotEmpty(coursePackageStudent) && coursePackageStudent.getReservationStatus() == 0){
-                coursePackageStudent.setSignInOrNot(2);
-                coursePackageStudent.setInsertTime(simpleDateFormat.parse(time));
-                cspsService.updateById(coursePackageStudent);
+            if (ToolUtil.isNotEmpty(coursePackageStudent)){
+                for (CoursePackageStudent packageStudent : coursePackageStudent) {
+                    if(packageStudent.getReservationStatus()==0){
+                        packageStudent.setSignInOrNot(2);
+                        packageStudent.setInsertTime(simpleDateFormat.parse(time));
+                        cspsService.updateById(packageStudent);
+                    }
+                }
+
             }else {
-                coursePackageStudent = new CoursePackageStudent();
-                coursePackageStudent.setAppUserId(appUserId);
-                coursePackageStudent.setStudentId(stuId);
-                coursePackageStudent.setCoursePackageId(packagePayment.getCoursePackageId());
-                coursePackageStudent.setCoursePackagePaymentId(Long.parseLong(courseID));
-                coursePackageStudent.setSignInOrNot(2);
-                coursePackageStudent.setInsertTime(simpleDateFormat.parse(time));
-                cspsService.save(coursePackageStudent);
             }
             return ResultUtil.success();
         }catch (Exception e){
@@ -1113,4 +1103,98 @@
         }
     }
 
+    @ResponseBody
+    @PostMapping("/base/coursePack/weeksOfCourseDetailsList")
+    HashMap<String, Object> weeksOfCourseDetailsList(@RequestBody CourseDetailReq courseDetailReq){
+        HashMap<String, Object> map = new HashMap<>();
+        ArrayList<DetailsListVo> objects = new ArrayList<>();
+        try {
+            String time = courseDetailReq.getTime();
+            Date parse = new SimpleDateFormat("yyyy-MM-dd").parse(time);
+            int i = cn.hutool.core.date.DateUtil.dayOfWeek(parse)-1;
+            String week = week(i);
+            Store store = sreClient.queryStoreById(courseDetailReq.getStoreId());
+            String lat = store.getLat();
+            String lon = store.getLon();
+
+            Map<String, Double> distance = GeodesyUtil.getDistance(courseDetailReq.getLon() + "," + courseDetailReq.getLat(), lon + "," + lat);
+            double wgs84 = distance.get("WGS84") / 1000;
+            map.put("distance",wgs84);
+            map.put("name",store.getName());
+            map.put("lon",lon);
+            map.put("lat",lat);
+
+            // 找出门店的所有课程 排出体验
+            List<TCoursePackage> list = tcpService.list(new LambdaQueryWrapper<TCoursePackage>().eq(TCoursePackage::getStoreId, courseDetailReq.getStoreId()).ne(TCoursePackage::getType, 3).like(TCoursePackage::getClassWeeks,week));
+            List<Integer> collect = list.stream().map(TCoursePackage::getId).collect(Collectors.toList());
+            if(collect.size()==0){
+                collect.add(-1);
+            }
+            // 找出购买的课包
+            List<TCoursePackagePayment> list1 = packagePaymentService.list(new LambdaQueryWrapper<TCoursePackagePayment>().eq(TCoursePackagePayment::getAppUserId, courseDetailReq.getAppUserId()).eq(TCoursePackagePayment::getStudentId, courseDetailReq.getStuId()).in(TCoursePackagePayment::getCoursePackageId, collect));
+            List<Integer> collect1 = list1.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
+            for (TCoursePackage tCoursePackage : list) {
+                DetailsListVo detailsListVo = new DetailsListVo();
+                detailsListVo.setId(tCoursePackage.getId());
+                detailsListVo.setName(tCoursePackage.getName());
+                String classStartTime = tCoursePackage.getClassStartTime();
+                String[] split = classStartTime.split(",");
+                String classEndTime = tCoursePackage.getClassEndTime();
+                String[] split1 = classEndTime.split(",");
+                ArrayList<String> strings = new ArrayList<>();
+                for (int i1 = 0; i1 < split.length; i1++) {
+                    String s = split[i1] + "-" + split1[i1];
+                    strings.add(s);
+                }
+                detailsListVo.setTime(strings);
+                List<CoursePackagePaymentConfig> list2 = icppcService.list(new LambdaQueryWrapper<CoursePackagePaymentConfig>().eq(CoursePackagePaymentConfig::getCoursePackageId, tCoursePackage.getId()).orderByAsc(CoursePackagePaymentConfig::getCashPayment));
+                if (list2.size() > 0) {
+                    Double cashPayment = list2.get(0).getCashPayment();
+                    detailsListVo.setMoney(cashPayment);
+                }
+                detailsListVo.setNum(tCoursePackage.getNeedNum());
+                if (collect1.contains(tCoursePackage.getId())) {
+                    detailsListVo.setType(1);
+                } else {
+                    detailsListVo.setType(2);
+                }
+                objects.add(detailsListVo);
+            }
+            map.put("data",objects);
+
+            return map;
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return map;
+    }
+
+    private String week(int i){
+        String a = "";
+        switch (i){
+            case 1:
+                a="周一";
+                break;
+            case 2:
+                a="周二";
+                break;
+            case 3:
+                a="周三";
+                break;
+            case 4:
+                a="周四";
+                break;
+            case 5:
+                a="周五";
+                break;
+            case 6:
+                a="周六";
+                break;
+            case 7:
+                a="周日";
+                break;
+        }
+        return a;
+    }
+
 }
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
new file mode 100644
index 0000000..e60bb31
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -0,0 +1,108 @@
+package com.dsh.course.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.dsh.course.entity.StudentClassInfo;
+import com.dsh.course.entity.TCoursePackagePayment;
+import com.dsh.course.entity.dto.ClassListDto;
+import com.dsh.course.entity.dto.SelectDto;
+import com.dsh.course.entity.dto.updateTimeDto;
+import com.dsh.course.feignclient.account.AppUserClient;
+import com.dsh.course.service.CoursePackageStudentService;
+import com.dsh.course.service.TCoursePackagePaymentService;
+import com.dsh.course.util.ResultUtil;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.swing.text.html.parser.Entity;
+import java.util.Date;
+import java.util.List;
+
+@Api
+@CrossOrigin
+@RestController
+@RequestMapping("/courdent")
+public class CourseStudentController {
+    @Autowired
+    CoursePackageStudentService studentService ;
+    @Autowired
+    TCoursePackagePaymentService paymentService;
+    //获取学员课时数信息
+    @RequestMapping("/getInfo")
+    @ResponseBody
+    public StudentClassInfo list(@RequestParam("tStudentId")Integer tStudentId) {
+
+//        System.out.println("------------>"+tStudentId);
+
+
+        StudentClassInfo studentClassInfo = studentService.listAll(tStudentId);
+
+//        Date maxDate = studentService.getMaxDate(tStudentId);
+        Date minDate = studentService.getMinDate(tStudentId);
+        System.out.println("===========>"+studentClassInfo);
+        Integer totalHours = studentClassInfo.getTotalHours();
+        Integer hasHours = studentClassInfo.getRestHours();
+        Integer restHours = totalHours-hasHours;
+        studentClassInfo.setHasHours(restHours);
+        studentClassInfo.setInDate(minDate);
+        return studentClassInfo;
+    }
+    //获取学员课程列表
+    @RequestMapping("/getClassList")
+    @ResponseBody
+    public List<ClassListDto> listClass(@RequestParam("tStudentId")Integer tStudentId) {
+        System.out.println("==========getClassList===tStudentId===="+tStudentId);
+    List<ClassListDto> listDtos = studentService.getClassList(tStudentId);
+    System.out.println("======listDtos======"+listDtos);
+    return  listDtos;
+
+    }
+
+    //获取学员有效期
+    @RequestMapping("/getUseTime")
+    @ResponseBody
+    public Date getUseTime(@RequestParam("tStudentId")Integer tStudentId) {
+                Date maxDate = studentService.getMaxDate(tStudentId);
+
+        return  maxDate;
+
+    }
+
+    //批量修改有效期
+    @RequestMapping("/updateUseDate")
+    @ResponseBody
+    public void updateUseDate(@RequestBody updateTimeDto updateTimeDto ){
+        System.out.println("=========updateUseDate=====>="+updateTimeDto);
+        List<TCoursePackagePayment> paymentList = paymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("studentId", updateTimeDto.getTStudentId()));
+
+        System.out.println("=========paymentList=====>="+paymentList);
+
+        for (TCoursePackagePayment payment: paymentList) {
+//            payment.setUseTime(updateTimeDto.getDate());
+            paymentService.updateUseTime(payment.getId(),updateTimeDto.getDate());
+        }
+        System.out.println("=======updateUseDate=======>"+paymentList);
+
+
+    }
+    @Resource
+    private AppUserClient appUserClient;
+    //获取可转移学员
+    @RequestMapping("/getSelect")
+    @ResponseBody
+    public List<SelectDto> getSelect(@RequestParam("payId")Integer payId){
+
+        List<Integer> studentIds = paymentService.getStudentIds(payId);
+    System.out.println("=========studentIds=================>"+studentIds);
+
+        List<SelectDto> selectDtos =   appUserClient.getSelects(studentIds);
+
+        return selectDtos;
+    }
+
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/StudentClassInfo.java b/cloud-server-course/src/main/java/com/dsh/course/entity/StudentClassInfo.java
new file mode 100644
index 0000000..5a684a0
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/StudentClassInfo.java
@@ -0,0 +1,15 @@
+package com.dsh.course.entity;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class StudentClassInfo {
+    private Date inDate;
+    private Integer totalHours;
+    private Integer hasHours;
+    private Integer restHours;
+    private Integer giftHours;
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java
index 96faab9..9adac73 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java
@@ -163,5 +163,10 @@
     private Integer type;
     @TableField("needNum")
     private Integer needNum;
-
+    @TableField("startTime")
+    @JsonFormat(pattern = "yyyy.MM.dd", timezone = "GMT+8")
+    private Date startTime;
+    @TableField("endTime")
+    @JsonFormat(pattern = "yyyy.MM.dd", timezone = "GMT+8")
+    private Date endTime;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
index 466651b..7592fa6 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
@@ -101,7 +101,7 @@
     /**
      * 退课课时
      */
-    @TableField("dropoutsNumber")
+    @TableField(exist = false)
     private Integer dropoutsNumber;
     /**
      * 支付用户类型(1=用户,2=管理员)
@@ -151,4 +151,8 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date insertTime;
 
+
+    @TableField("useTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date useTime;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/dto/ClassListDto.java b/cloud-server-course/src/main/java/com/dsh/course/entity/dto/ClassListDto.java
new file mode 100644
index 0000000..c482bb5
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/dto/ClassListDto.java
@@ -0,0 +1,23 @@
+package com.dsh.course.entity.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ClassListDto {
+    private Integer id;
+    private String className;
+
+    private String classType;
+
+    private Date insertTime;
+
+    private Integer hasClassHours;
+
+    private Integer totalClassHours;
+
+    private Integer laveClassHours;
+
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/dto/SelectDto.java b/cloud-server-course/src/main/java/com/dsh/course/entity/dto/SelectDto.java
new file mode 100644
index 0000000..d13f6d6
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/dto/SelectDto.java
@@ -0,0 +1,9 @@
+package com.dsh.course.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class SelectDto {
+    Integer id;
+    String value;
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/dto/updateTimeDto.java b/cloud-server-course/src/main/java/com/dsh/course/entity/dto/updateTimeDto.java
new file mode 100644
index 0000000..0d974ac
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/dto/updateTimeDto.java
@@ -0,0 +1,17 @@
+package com.dsh.course.entity.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 = "yyy-MM-dd HH:mm:ss")
+    private Date date;
+    private Integer tStudentId;
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java
index 7f68da6..12efef4 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java
@@ -1,5 +1,6 @@
 package com.dsh.course.feignclient.account;
 
+import com.dsh.course.entity.dto.SelectDto;
 import com.dsh.course.feignclient.account.model.AppUser;
 import com.dsh.course.feignclient.account.model.TCourseInfoRecord;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -44,4 +45,6 @@
     Boolean addCourseInfoRecord(TCourseInfoRecord tCourseInfoRecord);
 
 
+    @PostMapping("/appUser/getSelects")
+    List<SelectDto> getSelects(List<Integer> studentIds);
 }
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 3a6eba8..a8668aa 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
@@ -3,8 +3,11 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dsh.course.entity.CoursePackageStudent;
+import com.dsh.course.entity.StudentClassInfo;
+import com.dsh.course.entity.dto.ClassListDto;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -29,4 +32,10 @@
      */
     List<Map<String, Object>> queryCoursePackageStudentList(Page<Map<String, Object>> page, @Param("coursePackageSchedulingId") Long coursePackageSchedulingId,
                                                             @Param("userId") List<Integer> userId, @Param("studentId") List<Integer> studentId);
+
+    StudentClassInfo listAll(@Param("tStudentId")Integer tStudentId);
+
+    List<ClassListDto> getClassList(@Param("tStudentId")Integer tStudentId);
+
+    Date getMaxDate(@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 a610fc6..e5f35fc 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
@@ -7,6 +7,7 @@
 import com.dsh.course.model.BillingRequest;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -57,4 +58,8 @@
      */
     List<Map<String, Object>> queryWalkInStudentList(Page<Map<String, Object>> page, @Param("coursePackageId") Integer coursePackageId, @Param("coursePackagePaymentId") List<Long> coursePackagePaymentId,
                                                      @Param("userIds") List<Integer> userIds, @Param("studentIds") List<Integer> studentIds);
+
+    void updateUseTime(@Param("id")Long id,  @Param("date") Date date);
+
+    List<Integer> getStudentIds(@Param("id")Integer payId);
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/CourseDetailReq.java b/cloud-server-course/src/main/java/com/dsh/course/model/CourseDetailReq.java
new file mode 100644
index 0000000..1954dc1
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/CourseDetailReq.java
@@ -0,0 +1,17 @@
+package com.dsh.course.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CourseDetailReq {
+   private Integer appUserId;
+   private Integer stuId;
+   private String time;
+   private Integer storeId;
+   private String lon;
+   private String lat;
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageInfo.java b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageInfo.java
index 18538e3..bf73e76 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageInfo.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageInfo.java
@@ -45,4 +45,6 @@
     private StudentVo student;
     @ApiModelProperty("1常规 2假期 3体验")
     private Integer type;
+    @ApiModelProperty("假期有效期")
+    private String time;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/DetailsListVo.java b/cloud-server-course/src/main/java/com/dsh/course/model/DetailsListVo.java
new file mode 100644
index 0000000..ba9c83a
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/DetailsListVo.java
@@ -0,0 +1,23 @@
+package com.dsh.course.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DetailsListVo {
+    private Integer id;
+
+
+    private String name;
+
+    private String intro;
+
+    private Integer type;
+
+    private List<String> time;
+
+    private Integer num;
+
+    private Double money;
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/PayCourseInfoReq.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/PayCourseInfoReq.java
index 09851f5..2544eda 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/PayCourseInfoReq.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/PayCourseInfoReq.java
@@ -17,6 +17,7 @@
     private String week;
     @ApiModelProperty(value = "课包时间段")
     private List<String> time;
-
+    @ApiModelProperty(value = "上课日期")
+    private List<String> day;
 
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java b/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java
index 817ccc0..af73f12 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java
@@ -3,8 +3,11 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dsh.course.entity.CoursePackageStudent;
+import com.dsh.course.entity.StudentClassInfo;
+import com.dsh.course.entity.dto.ClassListDto;
 import com.dsh.course.model.QueryCoursePackageStudentList;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -26,4 +29,11 @@
      */
     List<Map<String, Object>> queryCoursePackageStudentList(Page<Map<String, Object>> page, QueryCoursePackageStudentList queryCoursePackageStudentList);
 
+    StudentClassInfo listAll(Integer tStudentId);
+
+    List<ClassListDto> getClassList(Integer tStudentId);
+
+    Date getMaxDate(Integer tStudentId);
+
+    Date getMinDate(Integer tStudentId);
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
index 17f21f8..f659ea8 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
@@ -13,6 +13,7 @@
 import com.dsh.course.model.vo.response.*;
 import com.dsh.course.util.ResultUtil;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -118,4 +119,7 @@
     ResultUtil payCourse(PayCourseReq req, Integer userId);
 
 
+    void updateUseTime(Long id, Date date);
+
+    List<Integer> getStudentIds(Integer payId);
 }
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 c420f00..0178d52 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
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dsh.course.entity.CoursePackageStudent;
+import com.dsh.course.entity.StudentClassInfo;
+import com.dsh.course.entity.dto.ClassListDto;
 import com.dsh.course.feignclient.account.AppUserClient;
 import com.dsh.course.feignclient.account.StudentClient;
 import com.dsh.course.feignclient.account.model.AppUser;
@@ -79,4 +81,24 @@
         }
         return list;
     }
+
+    @Override
+    public StudentClassInfo listAll(Integer tStudentId) {
+        return this.baseMapper.listAll(tStudentId);
+    }
+
+    @Override
+    public List<ClassListDto> getClassList(Integer tStudentId) {
+        return this.baseMapper.getClassList(tStudentId);
+    }
+
+    @Override
+    public Date getMaxDate(Integer tStudentId) {
+        return this.baseMapper.getMaxDate(tStudentId);
+    }
+
+    @Override
+    public Date getMinDate(Integer tStudentId) {
+        return null;
+    }
 }
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 4e7fbbd..e352998 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
@@ -298,22 +298,29 @@
 
             Integer payType = tCoursePackagePayment.getPayType();
             BigDecimal cashPayment = tCoursePackagePayment.getCashPayment();
-            double cashPaymentValue = cashPayment.doubleValue();
+            double cashPaymentValue = 0.0;
+            if(cashPayment!=null){
+
+                 cashPaymentValue = cashPayment.doubleValue();
+            }
             Integer playPaiCoin = tCoursePackagePayment.getPlayPaiCoin();
             TCoursePackageDiscount coursePackageDiscount = tcpdMapper.selectOne(new QueryWrapper<TCoursePackageDiscount>()
                     .eq("coursePackageId",coursePackage.getId() )
                     .eq("type",1)
                     .eq("auditStatus",2));
             ObjectMapper objectMapper = new ObjectMapper();
-            String content = coursePackageDiscount.getContent();
             double discountMember = 0.0;
-            DiscountJsonDto discountJsonDto = null;
-            try {
-                discountJsonDto = objectMapper.readValue(content, DiscountJsonDto.class);
-                discountMember = discountJsonDto.getDiscountMember();
-            } catch (JsonProcessingException e) {
-                throw new RuntimeException(e);
+            if(coursePackageDiscount!=null){
+                String content = coursePackageDiscount.getContent();
+                DiscountJsonDto discountJsonDto = null;
+                try {
+                    discountJsonDto = objectMapper.readValue(content, DiscountJsonDto.class);
+                    discountMember = discountJsonDto.getDiscountMember();
+                } catch (JsonProcessingException e) {
+                    throw new RuntimeException(e);
+                }
             }
+
             switch (payType) {
                 case 1:
                 case 2:
@@ -586,67 +593,70 @@
         SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
         if (tCoursePackagePayments.size() > 0 ){
             for (TCoursePackagePayment tCoursePackagePayment : tCoursePackagePayments) {
-                RecordAppoint recordVo = new RecordAppoint();
-                recordVo.setCoursePackageId(tCoursePackagePayment.getCoursePackageId());
 
-                TCoursePackage coursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId());
-
-                recordVo.setCoursePackageName(coursePackage.getName());
-                recordVo.setCourseHours(tCoursePackagePayment.getClassHours());
-                Date date = DateUtil.getDate();
-
-                String classStartTime = coursePackage.getClassStartTime();
-                String classEndTime = coursePackage.getClassEndTime();
-                recordVo.setTimeFrame(simpleDateFormat.format(date)+" "+classStartTime+"-"+classEndTime);
-                Store store = stoClient.queryStoreById(coursePackage.getStoreId());
-                recordVo.setStoreNameAddr(store.getName()+store.getAddress());
-                CoursePackageStudent coursePackageStudent = cpsMapper.selectOne(new QueryWrapper<CoursePackageStudent>()
+                List<CoursePackageStudent> coursePackageStudent1 = cpsMapper.selectList(new QueryWrapper<CoursePackageStudent>()
                         .eq("coursePackageId",tCoursePackagePayment.getCoursePackageId() )
                         .eq("studentId",stuId)
                         .eq("appUserId",appUserId)
                         .eq("reservationStatus",1));
-                if (ToolUtil.isNotEmpty(coursePackageStudent) && coursePackageStudent.getReservationStatus() == 1){
+                if (ToolUtil.isNotEmpty(coursePackageStudent1) && coursePackageStudent1.size() > 0){
+                    for (CoursePackageStudent coursePackageStudent : coursePackageStudent1) {
+                        RecordAppoint recordVo = new RecordAppoint();
+                        recordVo.setCoursePackageId(tCoursePackagePayment.getCoursePackageId());
 
-                    recordVo.setCourseStuRecordId(coursePackageStudent.getId());
-                    String classWeeks = coursePackage.getClassWeeks();
-                    String[] split = classWeeks.split(";");
-                    List<String> integerList = Arrays.asList(split);
-                    String weekOfDate = DateTimeHelper.getWeekOfDate(new Date());
-                    if (integerList.contains(weekOfDate)){
-                        String dat = simpleDateFormat.format(date) +" "+ classStartTime;
+                        TCoursePackage coursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId());
 
-                        Date start = null;
-                        try {
-                            start = format.parse(dat);
-                        } catch (ParseException e) {
-                            throw new RuntimeException(e);
-                        }
-                        if (start.after(new Date())){
-                            recordVo.setStatus(1);
-                        }else if(coursePackageStudent.getSignInOrNot()==2){
-                            recordVo.setStatus(5);
-                        }else {
-                            CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>()
-                                    .eq("coursePackageId",tCoursePackagePayment.getCoursePackageId() ));
-                            if (ToolUtil.isNotEmpty(cancelledClasses)){
-                                recordVo.setStatus(3);
-                                // 消课 到课状态0 旷课
-                                if(coursePackageStudent.getSignInOrNot()==0){
-                                    recordVo.setStatus(6);
-                                }
+                        recordVo.setCoursePackageName(coursePackage.getName());
+                        recordVo.setCourseHours(tCoursePackagePayment.getClassHours());
+                        Date date = DateUtil.getDate();
 
-                            }else {
-                                recordVo.setStatus(2);
+                        String classStartTime = coursePackage.getClassStartTime();
+                        String classEndTime = coursePackage.getClassEndTime();
+                        recordVo.setTimeFrame(simpleDateFormat.format(date)+" "+classStartTime+"-"+classEndTime);
+                        Store store = stoClient.queryStoreById(coursePackage.getStoreId());
+                        recordVo.setStoreNameAddr(store.getName()+store.getAddress());
+                        recordVo.setCourseStuRecordId(coursePackageStudent.getId());
+                        String classWeeks = coursePackage.getClassWeeks();
+                        String[] split = classWeeks.split(";");
+                        List<String> integerList = Arrays.asList(split);
+                        String weekOfDate = DateTimeHelper.getWeekOfDate(new Date());
+                        if (integerList.contains(weekOfDate)){
+                            String dat = simpleDateFormat.format(date) +" "+ classStartTime;
+
+                            Date start = null;
+                            try {
+                                start = format.parse(dat);
+                            } catch (ParseException e) {
+                                throw new RuntimeException(e);
                             }
+                            if (start.after(new Date())){
+                                recordVo.setStatus(1);
+                            }else if(coursePackageStudent.getSignInOrNot()==2){
+                                recordVo.setStatus(5);
+                            }else {
+                                CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>()
+                                        .eq("coursePackageId",tCoursePackagePayment.getCoursePackageId() ));
+                                if (ToolUtil.isNotEmpty(cancelledClasses)){
+                                    recordVo.setStatus(3);
+                                    // 消课 到课状态0 旷课
+                                    if(coursePackageStudent.getSignInOrNot()==0){
+                                        recordVo.setStatus(6);
+                                    }
+
+                                }else {
+                                    recordVo.setStatus(2);
+                                }
+                            }
+                        }else {
+                            recordVo.setStatus(1);
                         }
-                    }else {
-                        recordVo.setStatus(1);
+                        recordVoList.add(recordVo);
                     }
 
                 }else {
-                    recordVo.setStatus(4);
+//                    recordVo.setStatus(4);
                 }
-                recordVoList.add(recordVo);
+
             }
         }
         return recordVoList;
@@ -799,9 +809,98 @@
             strings.add(s);
         }
         payCourseInfoReq.setTime(strings);
+        List<Integer> week = week(tCoursePackage.getClassWeeks());
+
+        // 今天周几
+        int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1;
+
+        SimpleDateFormat format = new SimpleDateFormat("MM.dd");
+        ArrayList<String> strings1 = new ArrayList<>();
+
+        for (Integer integer : week) {
+            if(integer<i){
+                // 找下一周的时间
+                Calendar instance = Calendar.getInstance();
+                instance.add(Calendar.DATE,7-(i-integer));
+                Date time = instance.getTime();
+                strings1.add(format.format(time));
+
+            }else if(integer>i) {
+                Calendar instance = Calendar.getInstance();
+                instance.add(Calendar.DATE,integer-i);
+                Date time = instance.getTime();
+                strings1.add(format.format(time));
+            }else {
+                Calendar instance = Calendar.getInstance();
+                instance.add(Calendar.DATE,7);
+                Date time = instance.getTime();
+                strings1.add(format.format(time));
+            }
+        }
+        payCourseInfoReq.setDay(strings1);
         return payCourseInfoReq;
     }
+    private static List<Integer> week(String week){
+        String[] split = week.split(";");
+        ArrayList<Integer> integers = new ArrayList<>();
+        for (String s : split) {
+            switch (s){
+                case "周一":
+                    integers.add(1);
+                    break;
+                case "周二":
+                    integers.add(2);
+                    break;
+                case "周三":
+                    integers.add(3);
+                    break;
+                case "周四":
+                    integers.add(4);
+                    break;
+                case "周五":
+                    integers.add(5);
+                    break;
+                case "周六":
+                    integers.add(6);
+                    break;
+                case "周日":
+                    integers.add(7);
+                    break;
+            }
+        }
+        return integers;
+    }
 
+    public static void main(String[] args) {
+        List<Integer> week = week("周一,周二");
+        // 今天周几
+        int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1;
+
+        SimpleDateFormat format = new SimpleDateFormat("MM.dd");
+
+        ArrayList<String> strings = new ArrayList<>();
+        for (Integer integer : week) {
+            if(integer<i){
+                // 找下一周的时间
+                Calendar instance = Calendar.getInstance();
+                instance.add(Calendar.DATE,7-(i-integer));
+                Date time = instance.getTime();
+                strings.add(format.format(time));
+
+            }else if(integer>i) {
+                Calendar instance = Calendar.getInstance();
+                instance.add(Calendar.DATE,integer-i);
+                Date time = instance.getTime();
+                strings.add(format.format(time));
+            }else {
+                Calendar instance = Calendar.getInstance();
+                instance.add(Calendar.DATE,7);
+                Date time = instance.getTime();
+                strings.add(format.format(time));
+            }
+        }
+        System.out.println(strings);
+    }
     @Override
     @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
     public ResultUtil payCourse(PayCourseReq req,Integer userId){
@@ -852,7 +951,7 @@
         for (String s : time) {
             for (int i = 0; i < split.length; i++) {
                 CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                coursePackageScheduling.setCourseId(tCoursePackage.getId());
+                coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
                 try {
                     Date parse = format.parse(s + " " + split[i]);
                     Date parse1 = format.parse(s + " " + split1[i]);
@@ -910,5 +1009,15 @@
 
     }
 
+    @Override
+    public void updateUseTime(Long id, Date date) {
+        this.baseMapper.updateUseTime(id,date);
+    }
+
+    @Override
+    public List<Integer> getStudentIds(Integer payId) {
+       return  this.baseMapper.getStudentIds(payId);
+    }
+
 
 }
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 aebf727..854a8af 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
@@ -484,6 +484,7 @@
             TCoursePackage coursePackage = this.getById(id);
             CoursePackageInfo coursePackageInfo = new CoursePackageInfo();
             coursePackageInfo.setId(id);
+            coursePackageInfo.setTime(coursePackage.getStartTime()+"-"+coursePackage.getEndTime());
             coursePackageInfo.setCoverDrawing(coursePackage.getCoverDrawing());
             coursePackageInfo.setName(coursePackage.getName());
             Store store = storeClient.queryStoreById(coursePackage.getStoreId());
@@ -1032,7 +1033,7 @@
                 for (int i1 = 0; i1 < split.length; i1++) {
 
                     CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                    coursePackageScheduling.setCourseId(tCoursePackage.getId());
+                    coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
                     try {
                         Date parse = format1.parse(format.format(time) + " " + split[i1]);
                         Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
@@ -1064,7 +1065,7 @@
 
                 for (int i1 = 0; i1 < split.length; i1++) {
                     CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                    coursePackageScheduling.setCourseId(tCoursePackage.getId());
+                    coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
                     try {
                         Date parse = format1.parse(format.format(time) + " " + split[i1]);
                         Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
@@ -1094,13 +1095,17 @@
 
                 for (int i1 = 0; i1 < split.length; i1++) {
                     CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                    coursePackageScheduling.setCourseId(tCoursePackage.getId());
+                    coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
                     try {
                         Date parse = format1.parse(format.format(time) + " " + split[i1]);
                         Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
                         coursePackageScheduling.setClassDate(parse);
                         coursePackageScheduling.setEndDate(parse1);
                         coursePackageScheduling.setStatus(1);
+                        coursePackageScheduling.setCourseId(tCoursePackage.getId());
+                        coursePackageScheduling.setIntegral(0);
+                        coursePackageScheduling.setCancelClasses("");
+                        coursePackageScheduling.setDeductClassHour(0);
                         coursePackageSchedulingService.save(coursePackageScheduling);
 
                         CoursePackageStudent student1 = new CoursePackageStudent();
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
index 2cc4f6a..3e33721 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
@@ -51,13 +51,13 @@
 
     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 appid = "wx82f853a410b0c7c0";//微信appid
 
     private String appletsAppid = "";//微信小程序appid
 
-    private String mchId = "";//微信商户号
+    private String mchId = "1501481761";//微信商户号
 
-    private String key = "";//微信商户号
+    private String key = "6f5e0c2dcabfa9c27b5da5836a362fef";//微信商户号
 
     private String callbackPath = "";//支付回调网关地址
 
diff --git a/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml b/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
index 3b900eb..2c7eee1 100644
--- a/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
@@ -26,4 +26,40 @@
         </if>
         order by insertTime desc
     </select>
+
+    <select id="listAll" resultType="com.dsh.course.entity.StudentClassInfo">
+        SELECT
+            SUM( py.totalClassHours ) AS totalHours,
+            SUM( py.laveClassHours ) AS restHours,
+            SUM( py.giftClassHours ) as giftHours
+        FROM
+            t_course_package_payment  py
+
+           where  py.studentId = #{tStudentId}
+
+    </select>
+
+    <select id="getClassList" resultType="com.dsh.course.entity.dto.ClassListDto">
+
+        SELECT
+            *,
+            pg.NAME AS className,
+            ty.`name` AS classType
+        FROM
+            t_course_package_payment py
+                LEFT JOIN t_course_package pg ON py.coursePackageId = pg.id
+                LEFT JOIN t_course_package_type ty ON pg.type = ty.id
+
+        <where>
+            <if test="null != tStudentId">
+                py.studentId = #{tStudentId}
+            </if>
+        </where>
+    </select>
+    <select id="getMaxDate" resultType="java.util.Date">
+        SELECT
+            MAX(useTime)
+        FROM t_course_package_payment py
+        where py.studentId = #{tStudentId}
+    </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 f39a410..2b2bb8f 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -25,6 +25,11 @@
         <result column="state" property="state" />
         <result column="insertTime" property="insertTime" />
     </resultMap>
+    <update id="updateUseTime">
+        update t_course_package_payment
+        set useTime = #{date}
+        where id = #{id}
+    </update>
 
 
     <select id="queryCountNumber" resultType="int">
@@ -116,4 +121,15 @@
         </if>
         order by insertTime desc
     </select>
+    <select id="getStudentIds" resultType="java.lang.Integer">
+        SELECT studentId
+        FROM t_course_package_payment
+        WHERE appUserId = (
+            SELECT appUserId
+            FROM t_course_package_payment
+            WHERE id = #{id}
+        ) AND id != #{id};
+
+
+    </select>
 </mapper>
diff --git a/cloud-server-management/src/main/java/com/dsh/course/dto/ClassListDto.java b/cloud-server-management/src/main/java/com/dsh/course/dto/ClassListDto.java
new file mode 100644
index 0000000..dffe07c
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/dto/ClassListDto.java
@@ -0,0 +1,23 @@
+package com.dsh.course.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ClassListDto {
+    private Integer id;
+    private String className;
+
+    private String classType;
+
+    private Date insertTime;
+
+    private Integer hasClassHours;
+
+    private Integer totalClassHours;
+
+    private Integer laveClassHours;
+
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/dto/CreateHistoryDto.java b/cloud-server-management/src/main/java/com/dsh/course/dto/CreateHistoryDto.java
new file mode 100644
index 0000000..1d68539
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/dto/CreateHistoryDto.java
@@ -0,0 +1,18 @@
+package com.dsh.course.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class CreateHistoryDto {
+
+    private String pleasePic;
+    private String passPic;
+    private Integer createBy;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date date;
+
+    private Integer studentId;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/dto/GetHistoryDto.java b/cloud-server-management/src/main/java/com/dsh/course/dto/GetHistoryDto.java
new file mode 100644
index 0000000..6427461
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/dto/GetHistoryDto.java
@@ -0,0 +1,20 @@
+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 GetHistoryDto {
+
+    private String pleasePic;
+    private String passPic;
+    private String createBy;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date date;
+}
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
new file mode 100644
index 0000000..82a9b46
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/dto/updateTimeDto.java
@@ -0,0 +1,12 @@
+package com.dsh.course.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.Date;
+@Data
+@AllArgsConstructor
+public class updateTimeDto {
+    private Date date;
+    private Integer tStudentId;
+}
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 5de948c..beea36f 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
@@ -1,5 +1,7 @@
 package com.dsh.course.feignClient.account;
 
+import com.dsh.course.dto.CreateHistoryDto;
+import com.dsh.course.dto.GetHistoryDto;
 import com.dsh.course.feignClient.account.model.QueryAppUser;
 import com.dsh.course.feignClient.account.model.QueryAppUserVO;
 
@@ -44,4 +46,15 @@
 
     @PostMapping("/student/webOneStudent")
     TStudentDto queryOneWebUser(@RequestParam("id") Integer id);
+
+    @PostMapping("/student/update")
+    void updateStudent(TStudent tStudent);
+
+
+    @PostMapping("/student/createHistory")
+    void createHistory(CreateHistoryDto historyDto);
+
+
+    @PostMapping("/student/getHisory")
+    List<GetHistoryDto> getHisory();
 }
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
new file mode 100644
index 0000000..8ea647a
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java
@@ -0,0 +1,62 @@
+package com.dsh.course.feignClient.course;
+
+import com.dsh.course.dto.ClassListDto;
+import com.dsh.course.dto.updateTimeDto;
+import com.dsh.course.model.dto.StudentClassInfo;
+import com.dsh.guns.modular.system.model.dto.SelectDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Date;
+import java.util.List;
+
+@FeignClient("mb-cloud-course")
+public interface CourseStuddentClient {
+
+
+    /**
+     * 拿到学运信息
+     * @param tStudentId
+     * @return
+     */
+    @RequestMapping("/courdent/getInfo")
+    StudentClassInfo getInfo(@RequestParam("tStudentId")Integer tStudentId);
+
+
+    /**
+     * 拿到学员课程列表
+     * @param tStudentId
+     * @return
+     */
+    @RequestMapping("/courdent/getClassList")
+
+    List<ClassListDto> listClass(@RequestParam("tStudentId") Integer tStudentId);
+
+    /**
+     * 拿到学有效期
+     * @param tStudentId
+     * @return
+     */
+    @RequestMapping("/courdent/getUseTime")
+    Date getUseTime(@RequestParam("tStudentId") Integer tStudentId);
+
+
+    /**
+     * 批量修改有效期
+     * @param updateTimeDto
+     * @return
+     */
+    @RequestMapping("/courdent/updateUseDate")
+    void updateUseDate(@RequestBody updateTimeDto updateTimeDto);
+
+
+    /**
+     * 获取可以转移的学员
+     * @param payId
+     * @return
+     */
+    @RequestMapping("/courdent/getSelect")
+    List<SelectDto> getSelect(@RequestParam("payId") Integer payId);
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/StudentClassInfo.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/StudentClassInfo.java
new file mode 100644
index 0000000..0d92a9e
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/StudentClassInfo.java
@@ -0,0 +1,15 @@
+package com.dsh.course.feignClient.course.model;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class StudentClassInfo {
+    private Date inDate;
+    private Integer totalHours;
+    private Integer hasHours;
+    private Integer restHours;
+    private Integer giftHours;
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/HistoryClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/HistoryClient.java
new file mode 100644
index 0000000..06d2662
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/HistoryClient.java
@@ -0,0 +1,29 @@
+package com.dsh.course.feignClient.other;
+
+import com.dsh.course.dto.CreateHistoryDto;
+import com.dsh.course.dto.GetHistoryDto;
+import com.dsh.guns.modular.system.model.Store;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import java.util.List;
+
+/**
+ * 常见问题
+ */
+@FeignClient(value = "mb-cloud-other")
+public interface HistoryClient {
+
+
+    @RequestMapping("base/site/getStoreByStoreStaffId")
+    List<Store> getStoreByStoreStaffId(@RequestBody Integer id);
+
+    @PostMapping("/class/hisotory")
+    void createHistory(CreateHistoryDto historyDto);
+
+
+    @PostMapping("/class/gethisotory")
+    List<GetHistoryDto> getHisory(@RequestBody Integer studentId);
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
index fa94e82..0032354 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
@@ -39,4 +39,19 @@
                                               @Param("page") Page<Map<String, Object>> page);
 
 
+    List<Map<String, Object>> listOne(@Param("page") Page<Map<String, Object>> page, @Param("id") Integer id);
+
+    List<Map<String, Object>> typeChange(@Param("name") String name);
+
+    List<Map<String, Object>> typeChangeOne(@Param("id") Integer id);
+
+
+    String getConfig(@Param("page") Integer page);
+
+    void addConfigOne(@Param("url") String url, @Param("name") String name, @Param("s") String s, @Param("s1") String s1, @Param("turnId") String turnId, @Param("sort") Integer sort,@Param("page") Integer page,@Param("type") Integer type);
+
+    List<Map<String, Object>> listTwo(@Param("page") Page<Map<String, Object>> page);
+
+    void delete1(@Param("id") Integer id);
+
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorMapper.java
new file mode 100644
index 0000000..74c9bf9
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorMapper.java
@@ -0,0 +1,17 @@
+package com.dsh.course.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.guns.modular.system.model.TOperator;
+
+/**
+ * <p>
+ * 运营商 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-20
+ */
+public interface TOperatorMapper extends BaseMapper<TOperator> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigMapper.java
new file mode 100644
index 0000000..e2ac6f5
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigMapper.java
@@ -0,0 +1,17 @@
+package com.dsh.course.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.guns.modular.system.model.TStoreOtherConfig;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+public interface TStoreOtherConfigMapper extends BaseMapper<TStoreOtherConfig> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigTrueMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigTrueMapper.java
new file mode 100644
index 0000000..3c3e600
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigTrueMapper.java
@@ -0,0 +1,17 @@
+package com.dsh.course.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.guns.modular.system.model.TStoreOtherConfigTrue;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+public interface TStoreOtherConfigTrueMapper extends BaseMapper<TStoreOtherConfigTrue> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherMapper.java
new file mode 100644
index 0000000..48e8a1c
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherMapper.java
@@ -0,0 +1,17 @@
+package com.dsh.course.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.guns.modular.system.model.TStoreOther;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+public interface TStoreOtherMapper extends BaseMapper<TStoreOther> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/mapper/TTurnMapper.java b/cloud-server-management/src/main/java/com/dsh/course/mapper/TTurnMapper.java
new file mode 100644
index 0000000..cd106df
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/mapper/TTurnMapper.java
@@ -0,0 +1,17 @@
+package com.dsh.course.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.guns.modular.system.model.TTurn;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+public interface TTurnMapper extends BaseMapper<TTurn> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/model/dto/StudentClassInfo.java b/cloud-server-management/src/main/java/com/dsh/course/model/dto/StudentClassInfo.java
new file mode 100644
index 0000000..c32d7de
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/model/dto/StudentClassInfo.java
@@ -0,0 +1,15 @@
+package com.dsh.course.model.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class StudentClassInfo {
+    private Date inDate;
+    private Integer totalHours;
+    private Integer hasHours;
+    private Integer restHours;
+    private Integer giftHours;
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java
index a7ea97d..963fbd3 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java
@@ -174,7 +174,7 @@
     public Object onChange(Integer oneId) {
         if (oneId == null) return null;
         try {
-            TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getId, oneId));
+            TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, oneId));
             QueryWrapper<TCity> query = new QueryWrapper<TCity>().eq("parent_id", one.getId());
             return cityService.list(query);
         }catch (Exception e){
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
index 8690c0b..16910ce 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
@@ -1,6 +1,7 @@
 package com.dsh.guns.modular.system.controller.code;
 
 import cn.hutool.crypto.SecureUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dsh.course.feignClient.account.CityClient;
@@ -14,9 +15,11 @@
 import com.dsh.guns.core.common.constant.factory.PageFactory;
 import com.dsh.guns.core.util.ToolUtil;
 import com.dsh.guns.modular.system.model.*;
-import com.dsh.guns.modular.system.service.ICityService;
-import com.dsh.guns.modular.system.service.IStoreService;
-import com.dsh.guns.modular.system.service.StoreConfigService;
+import com.dsh.guns.modular.system.service.*;
+import com.dsh.guns.modular.system.util.GaoDeMapUtil;
+import io.swagger.models.auth.In;
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -27,6 +30,7 @@
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 车辆管理控制器
@@ -57,6 +61,20 @@
     @Resource
     private StoreConfigService storeConfigService;
 
+    @Autowired
+    private TStoreOtherConfigTrueService tStoreOtherConfigTrueService;
+
+    @Autowired
+    private TStoreOtherConfigService storeOtherConfigService;
+
+    @Autowired
+    private TTurnService tTurnService;
+
+    @Autowired
+    private TStoreOtherService storeOtherService;
+
+
+
 
     /**
      * 跳转到车辆管理首页
@@ -80,6 +98,22 @@
         String roleid = UserExt.getUser().getRoleid();
         model.addAttribute("role",roleid);
         return PREFIX + "tShop_add.html";
+    }
+    @RequestMapping("/tShop_add_one")
+    public String tCompetitionAddOne(Integer id,Model model) {
+        List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+        model.addAttribute("list",list);
+        String roleid = UserExt.getUser().getRoleid();
+        model.addAttribute("id",id);
+
+        return PREFIX + "tShop_add_one.html";
+    }
+    @RequestMapping("/tShop_add_two")
+    public String tCompetitionAddTwo(Model model) {
+        List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+        model.addAttribute("list",list);
+        String roleid = UserExt.getUser().getRoleid();
+        return PREFIX + "tShop_add_two.html";
     }
 
 
@@ -109,6 +143,27 @@
         model.addAttribute("type",1);
         return PREFIX + "tShop_edit.html";
     }
+
+
+
+
+    @RequestMapping("/tShop_update_one/{id}")
+    public String tCityUpdateOne(@PathVariable Integer id, Model model) {
+        TStoreOtherConfig byId = storeOtherConfigService.getById(id);
+        TTurn one = tTurnService.getOne(new LambdaQueryWrapper<TTurn>().eq(TTurn::getName, byId.getName()));
+        // page list
+        List<TTurn> list = tTurnService.list(new LambdaQueryWrapper<TTurn>().eq(TTurn::getPid, one.getId()));
+        // type list
+        List<TTurn> list1 = tTurnService.list(new LambdaQueryWrapper<TTurn>().eq(TTurn::getPid, byId.getPageId()));
+        model.addAttribute("item",byId);
+        model.addAttribute("list",list);
+        model.addAttribute("list1",list1);
+
+        return PREFIX + "tShop_edit_two.html";
+    }
+
+
+
     @RequestMapping("/tShop_info/{id}")
     public String tCityInfo(@PathVariable Integer id, Model model) {
         TStore byId = storeService.getById(id);
@@ -167,19 +222,29 @@
     public Object list(String provinceCode, String cityCode , String name, String phone,String shopName) {
         Page<TStoreListVo> page = new PageFactory<TStoreListVo>().defaultPage();
         List<TStoreListVo> list =  storeService.listAll(page,provinceCode,cityCode,name,phone,shopName);
-        for (TStoreListVo tStoreListVo : list) {
-            TCityManager byId = cityClient.getById(tStoreListVo.getCityManagerId());
-            tStoreListVo.setAccount(byId.getName()+"-"+byId.getPhone());
-
-        }
+        page.setRecords(list);
+        return  super.packForBT(page);
+    }
+    @RequestMapping(value = "/listOne")
+    @ResponseBody
+    public Object listOne(Integer id) {
+        Page<Map<String,Object>> page = new PageFactory<Map<String,Object>>().defaultPage();
+        List<Map<String,Object>> list =  storeService.listOne(page,id);
+        page.setRecords(list);
+        return  super.packForBT(page);
+    }
+    @RequestMapping(value = "/listTwo")
+    @ResponseBody
+    public Object listTwo() {
+        Page<Map<String,Object>> page = new PageFactory<Map<String,Object>>().defaultPage();
+        List<Map<String,Object>> list =  storeService.listTwo(page);
         page.setRecords(list);
         return  super.packForBT(page);
     }
 
-
     @RequestMapping(value = "/add")
     @ResponseBody
-    public Object list(TStore tStore,String time,String userName,String userPhone) {
+    public Object list(TStore tStore,String time,String userName,String userPhone,String ids,Integer type,Integer yyId,String lat,String lon) {
         try {
             if(ToolUtil.isNotEmpty(tStore.getProvinceCode())) {
                 TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, tStore.getProvinceCode()));
@@ -189,6 +254,9 @@
             }
             tStore.setStartTime(time.split(" - ")[0]);
             tStore.setEndTime(time.split(" - ")[1]);
+            tStore.setIds(ids);
+            tStore.setType(type);
+            tStore.setOperatorId(yyId);
             tStore.setState(1);
             User user = new User();
             List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getAccount, userPhone));
@@ -202,6 +270,9 @@
             user.setPassword(SecureUtil.md5("a123456"));
             userMapper.insert(user);
             tStore.setStoreStaffId(user.getId());
+                tStore.setLon(lon);
+                tStore.setLat(lat);
+
             storeService.save(tStore);
 
             ArrayList<StoreConfig> storeConfigs = new ArrayList<>();
@@ -223,7 +294,7 @@
 
     @RequestMapping(value = "/update")
     @ResponseBody
-    public Object update(TStore tStore,String time,String userName,String userPhone) {
+    public Object update(TStore tStore,String time,String userName,String userPhone,String ids,Integer type,Integer yyId) {
         try {
             TStore byId = storeService.getById(tStore.getId());
 
@@ -235,6 +306,9 @@
             }
             tStore.setStartTime(time.split(" - ")[0]);
             tStore.setEndTime(time.split(" - ")[1]);
+            tStore.setIds(ids);
+            tStore.setType(type);
+            tStore.setOperatorId(yyId);
             if(ToolUtil.isEmpty(tStore.getCoverDrawing())){
                 tStore.setCoverDrawing(byId.getCoverDrawing());
             }
@@ -337,6 +411,17 @@
             return ERROR;
         }
     }
+    @ResponseBody
+    @RequestMapping(value = "/deleteOne")
+    public Object delete1(Integer id) {
+        try {
+            storeService.delete1(id);
+            return SUCCESS_TIP;
+        }catch (Exception e){
+            e.printStackTrace();
+            return ERROR;
+        }
+    }
 
     @RequestMapping(value = "/saveImg")
     @ResponseBody
@@ -393,6 +478,105 @@
             return ERROR;
         }
     }
+    @RequestMapping(value = "/typeChange")
+    @ResponseBody
+    public Object typeChange(String name) {
+        try {
+            List<Map<String,Object>> list = storeService.typeChange(name);
+            return list;
+        }catch (Exception e){
+            e.printStackTrace();
+            return ERROR;
+        }
+    }
+    @RequestMapping(value = "/typeChangeOne")
+    @ResponseBody
+    public Object typeChangeOne(Integer id) {
+        try {
+            List<Map<String,Object>> list = storeService.typeChangeOne(id);
+            return list;
+        }catch (Exception e){
+            e.printStackTrace();
+            return ERROR;
+        }
+    }
+
+    /**
+     * ajax.set("url",url);
+     *     ajax.set("name",name);
+     *     ajax.set("page",page);
+     *     ajax.set("type",type);
+     *     ajax.set("turnId",turnId);
+     *     ajax.set("sort",sort);
+     * @param id
+     * @return
+     */
+    @RequestMapping(value = "/addConfigOne")
+    @ResponseBody
+    public Object addConfigOne(String url,String name,Integer page,Integer type,String  turnId,Integer sort) {
+        try {
+             storeService.addConfigOne(url,name,page,type,turnId,sort);
+            return SUCCESS_TIP;
+        }catch (Exception e){
+            e.printStackTrace();
+            return ERROR;
+        }
+    }
+    @RequestMapping(value = "/addConfig")
+    @ResponseBody
+    public Object addConfig(String name,Integer id) {
+        try {
+            List<TStoreOtherConfig> list = storeOtherConfigService.list();
+            if(list.size()>0){
+                TStoreOther tStoreOther = new TStoreOther();
+                tStoreOther.setName(name);
+                tStoreOther.setStoreId(id);
+                storeOtherService.save(tStoreOther);
+
+                // 找出temp表数据
+
+                ArrayList<TStoreOtherConfigTrue> tStoreOtherConfigTrues = new ArrayList<>();
+                for (TStoreOtherConfig tStoreOtherConfig : list) {
+                    TStoreOtherConfigTrue tStoreOtherConfigTrue = new TStoreOtherConfigTrue();
+                    BeanUtils.copyProperties(tStoreOtherConfig,tStoreOtherConfigTrue);
+                    tStoreOtherConfigTrue.setPid(tStoreOther.getId());
+                    tStoreOtherConfigTrues.add(tStoreOtherConfigTrue);
+                }
+                tStoreOtherConfigTrueService.saveBatch(tStoreOtherConfigTrues);
+                storeOtherConfigService.remove(new LambdaQueryWrapper<TStoreOtherConfig>().gt(TStoreOtherConfig::getId,0));
+            }
+
+
+        return SUCCESS_TIP;
+        }catch (Exception e){
+            e.printStackTrace();
+            return ERROR;
+        }
+    }
+    @RequestMapping(value = "/updateConfigOne")
+    @ResponseBody
+    public Object addConfigOne(String url,String name,Integer page,Integer type,String  turnId,Integer sort,Integer id) {
+        try {
+            TStoreOtherConfig byId = storeOtherConfigService.getById(id);
+            if(ToolUtil.isNotEmpty(url)){
+                byId.setUrl(url);
+            }
+            byId.setName(name);
+            TTurn byId1 = tTurnService.getById(page);
+            TTurn byId2 = tTurnService.getById(type);
+            byId.setPage(byId1.getName());
+            byId.setType(byId2.getName());
+            byId.setTurnId(turnId);
+            byId.setSort(sort);
+            byId.setPageId(page);
+            byId.setTypeId(type);
+            storeOtherConfigService.updateById(byId);
+            return SUCCESS_TIP;
+        }catch (Exception e){
+            e.printStackTrace();
+            return ERROR;
+        }
+    }
 
 
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
index 1bf18a5..2cfba7a 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
@@ -445,6 +445,9 @@
         return siteClient.listExipre(vo);
     }
 
+    @Autowired
+    private TOperatorService tOperatorService;
+
     /**
      * 跳转到添加场地管理
      */
@@ -467,6 +470,8 @@
         }else if(objectType == 3){
              stores= storeClient.getStoreByStoreStaffId(objectId);;
         }
+        List<TOperator> list = tOperatorService.list();
+        model.addAttribute("yysList",list);
         model.addAttribute("userType",objectType);
         HashSet<String> set = new HashSet<String>(list1);
         QueryWrapper<TSiteType> wrapper = new QueryWrapper<>();
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 91685e1..47961f2 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
@@ -1,19 +1,32 @@
 package com.dsh.guns.modular.system.controller.system;
 
 
-import com.dsh.course.dto.StudentSearch;
-import com.dsh.course.dto.TStudentDto;
+import com.dsh.course.dto.*;
+import com.dsh.course.feignClient.account.AppUserClient;
+import com.dsh.course.feignClient.course.CourseStuddentClient;
+import com.dsh.course.feignClient.course.model.TCoursePackagePayment;
+import com.dsh.course.feignClient.other.HistoryClient;
+import com.dsh.course.model.dto.StudentClassInfo;
+import com.dsh.guns.config.UserExt;
 import com.dsh.guns.core.base.controller.BaseController;
+import com.dsh.guns.modular.system.model.TStudent;
+import com.dsh.guns.modular.system.model.User;
+import com.dsh.guns.modular.system.model.dto.SelectDto;
 import com.dsh.guns.modular.system.service.ITStudentService;
 import com.dsh.guns.modular.system.util.ResultUtil;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 控制器
@@ -28,6 +41,17 @@
     private String PREFIX = "/system/tStudent/";
     @Autowired
     private ITStudentService itStudentService;
+
+    @Resource
+    private CourseStuddentClient courseStuddentClient;
+
+    @Resource
+    private HistoryClient historyClient;
+
+
+
+
+
 
     /**
      * 跳转到首页
@@ -50,12 +74,87 @@
      */
     @RequestMapping("/tStudent_update/{tStudentId}")
     public String tStudentUpdate(@PathVariable("tStudentId") Integer tStudentId, Model model) {
+
+
         System.out.println("======>t"+tStudentId);
+        //查询学员信息
         TStudentDto tStudentDto = itStudentService.listOne(tStudentId);
-        model.addAttribute("item",tStudentDto);
+        model.addAttribute("item", tStudentDto);
+        if (tStudentDto.getLateralSurface()!=null) {
+            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 > 3) {
+                model.addAttribute("pic3", pics[2]);
+                System.out.println("=====pic3==" + pics[2]);
+            }
+        }
+
+
+        //查询课时信息
+       StudentClassInfo studentClassInfo = courseStuddentClient.getInfo(tStudentId);
+        model.addAttribute("studentClassInfo", studentClassInfo);
+
+        //查询课程列表
+        List<ClassListDto> classListDtos = courseStuddentClient.listClass(tStudentId);
+        model.addAttribute("classListDtos", classListDtos);
+
+
+        return PREFIX + "tStudentEdit_first.html";
+    }
+
+    @RequestMapping("/tStudent_info/{tStudentId}")
+    public String tStudentInfo(@PathVariable("tStudentId") Integer tStudentId, Model model) {
+        System.out.println("======>t"+tStudentId);
+        //查询学员信息
+        TStudentDto tStudentDto = itStudentService.listOne(tStudentId);
+        model.addAttribute("item", tStudentDto);
+        if (tStudentDto.getLateralSurface()!=null) {
+            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 > 3) {
+                model.addAttribute("pic3", pics[2]);
+                System.out.println("=====pic3==" + pics[2]);
+            }
+        }
+
+
+        //查询课时信息
+        StudentClassInfo studentClassInfo = courseStuddentClient.getInfo(tStudentId);
+        model.addAttribute("studentClassInfo", studentClassInfo);
+
+
+        System.out.println("=======controller====studentClassInfo==="+studentClassInfo);
         return PREFIX + "tStudentEdit.html";
     }
+
+
+
+
 //
+
+    /**
+     * 获取有效期
+     */
+    @RequestMapping("/getUseTime/{tStudentId}")
+    @ResponseBody
+    public ResultUtil getMax(@PathVariable("tStudentId") Integer tStudentId) {
+        Date useTime = courseStuddentClient.getUseTime(tStudentId);
+        Map<String, Date> map = new HashMap<>();
+        map.put("useTime",useTime);
+
+        return new ResultUtil<>(0,0,null,map,null);
+    }
+
     /**
      * 获取列表
      */
@@ -67,6 +166,19 @@
         return itStudentService.listAll(search);
     }
 
+    /**
+     * 获取列表
+     */
+    @RequestMapping("/classList/{tStudentId}")
+    @ResponseBody
+    public ResultUtil listClass(@PathVariable("tStudentId") Integer tStudentId) {
+        List<ClassListDto> classListDtos = courseStuddentClient.listClass(tStudentId);
+        Map<String,List<ClassListDto>> map = new HashMap<>();
+        map.put("items",classListDtos);
+        return new ResultUtil<>(0,0,null,map,null);
+    }
+
+
 
     @RequestMapping("/ttt")
     @ResponseBody
@@ -75,55 +187,87 @@
         System.out.println("============学员查询接口=========");
         return ResultUtil.success();
     }
-//    /**
-//     * 获取一个用户信息
-//     */
-//    @RequestMapping("/list")
-//    @ResponseBody
-//    public TStudentDto listOne(Integer id) {
-//
-//        System.out.println("============学员查询接口=========");
-//        return itStudentService.listOne(id);
-//    }
+
+    /**
+     * 学员修改
+     */
+    @RequestMapping(value = "/update")
+    @ResponseBody
+
+    public ResultUtil update(@RequestBody TStudent tStudent, String image1, String image2, String image3 ) {
+        String lateralSurface = image1+";"+image2+";"+image3;
+        tStudent.setLateralSurface(lateralSurface);
+        System.out.println("学员体测表的值"+lateralSurface);
+        itStudentService.update(tStudent);
+//        appUserClient.updateStudent(tStudent);
+        return new ResultUtil(0,0,"编辑成功");
+    }
+
+    @Resource
+    private AppUserClient appUserClient;
+    /**
+     * 学员详情修改有效期
+     */
+
+    @RequestMapping("/updateClassTime")
+    @ResponseBody
+    public ResultUtil updateClassTime(@RequestParam("date") String date, @RequestParam("id")Integer id, String passPic, String pleasePic ){
+
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        Date date1;
+        try {
+            date1 = dateFormat.parse(date);
+        } catch (ParseException e) {
+            // 处理日期转换异常
+            e.printStackTrace();
+            return ResultUtil.error("日期格式错误");
+        }
 
 
-//
-//    /**
-//     * 新增
-//     */
-//    @RequestMapping(value = "/add")
-//    @ResponseBody
-//    public Object add(TStudent tStudent) {
-//        tStudentService.insert(tStudent);
-//        return SUCCESS_TIP;
-//    }
-//
-//    /**
-//     * 删除
-//     */
-//    @RequestMapping(value = "/delete")
-//    @ResponseBody
-//    public Object delete(@RequestParam Integer tStudentId) {
-//        tStudentService.deleteById(tStudentId);
-//        return SUCCESS_TIP;
-//    }
-//
-//    /**
-//     * 修改
-//     */
-//    @RequestMapping(value = "/update")
-//    @ResponseBody
-//    public Object update(TStudent tStudent) {
-//        tStudentService.updateById(tStudent);
-//        return SUCCESS_TIP;
-//    }
-//
-//    /**
-//     * 详情
-//     */
-//    @RequestMapping(value = "/detail/{tStudentId}")
-//    @ResponseBody
-//    public Object detail(@PathVariable("tStudentId") Integer tStudentId) {
-//        return tStudentService.selectById(tStudentId);
-//    }
+        updateTimeDto updateTimeDto =new updateTimeDto(date1,id);
+        System.out.println("======updateTimeDto=====>"+updateTimeDto);
+        courseStuddentClient.updateUseDate(updateTimeDto);
+
+
+        CreateHistoryDto historyDto = new CreateHistoryDto();
+        historyDto.setPleasePic(pleasePic);
+        historyDto.setPassPic(passPic);
+        User user = UserExt.getUser();
+        historyDto.setCreateBy(user.getId());
+        historyDto.setStudentId(id);
+
+//        appUserClient.createHistory(historyDto);
+        historyClient.createHistory(historyDto);
+
+
+        return ResultUtil.success();
+
+    }
+
+
+    /**
+     * 查询有效期记录
+     */
+    @RequestMapping(value = "/getHisory/{id}")
+    @ResponseBody
+    public ResultUtil getHisory(@PathVariable("id") Integer studentId) {
+       List<GetHistoryDto> getHistoryDtos =  historyClient.getHisory(studentId);
+        Map<String,List<GetHistoryDto>> map = new HashMap<>();
+        map.put("items",getHistoryDtos);
+
+        return new ResultUtil(0,0,"编辑成功",map,"");
+    }
+
+    /**
+     * 查询有效期记录
+     */
+    @RequestMapping(value = "/getUserSlect/{id}")
+    @ResponseBody
+    public ResultUtil getUserSlect(@PathVariable("id") Integer payId) {
+
+       List<SelectDto>  selectDtos =  courseStuddentClient.getSelect(payId);
+        Map<String,List<SelectDto>> map = new HashMap<>();
+        map.put("options",selectDtos);
+        return new ResultUtil(0,0,"编辑成功",map,"");
+    }
 }
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 b82646f..ee71eca 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
@@ -19,7 +19,6 @@
 import com.dsh.guns.core.exception.GunsException;
 import com.dsh.guns.core.log.LogObjectHolder;
 import com.dsh.guns.core.util.SinataUtil;
-import com.dsh.guns.core.util.ToolUtil;
 import com.dsh.guns.modular.system.controller.util.MD5;
 import com.dsh.guns.modular.system.factory.UserFactory;
 import com.dsh.guns.modular.system.model.Role;
@@ -28,6 +27,7 @@
 import com.dsh.guns.modular.system.service.IUserService;
 import com.dsh.guns.modular.system.transfer.UserDto;
 import com.dsh.guns.modular.system.util.OssUploadUtil;
+import com.dsh.guns.modular.system.util.ResultUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -36,12 +36,9 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.naming.NoPermissionException;
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-import java.io.File;
-import java.util.Date;
-import java.util.Map;
-import java.util.Objects;
-import java.util.UUID;
+import java.util.*;
 
 /**
  * 系统管理员控制器
@@ -382,14 +379,18 @@
      */
     @RequestMapping(method = RequestMethod.POST, path = "/uploadImg")
     @ResponseBody
-    public String uploadImg(@RequestPart("file") MultipartFile picture) {
-        String pictureName = "";
+    public ResultUtil uploadImg(@RequestPart("file") MultipartFile picture, HttpServletResponse response) {
+        String value = "";
         try {
-            pictureName = OssUploadUtil.ossUpload("img/", picture);
+            value = OssUploadUtil.ossUpload("img/", picture);
         }catch (Exception e){
             e.printStackTrace();
         }
-        return pictureName;
+        System.out.println("图片返回地址-------"+value);
+        Map<String, String> map = new HashMap<>();
+        map.put("value",value);
+//        return  ResultUtil.success(0,map);
+        return  ResultUtil.getResult(0,null,null,map);
     }
 
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TOperator.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TOperator.java
new file mode 100644
index 0000000..cb188da
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TOperator.java
@@ -0,0 +1,48 @@
+package com.dsh.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 运营商
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_operator")
+public class TOperator extends Model<TOperator> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String name;
+
+    @TableField("userId")
+    private Integer userId;
+
+    /**
+     * 1 全国 2指定
+     */
+    private Integer type;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStore.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStore.java
index ba3e006..2881577 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStore.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStore.java
@@ -42,5 +42,10 @@
     private String welfarePicture;
     private BigDecimal score;
     private Integer state;
-
+    @TableField("operatorId")
+    private Integer operatorId;
+    @TableField("type")
+    private Integer type;
+    @TableField("ids")
+    private String ids;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreListVo.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreListVo.java
index d116d3e..d9fa2a4 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreListVo.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreListVo.java
@@ -44,4 +44,8 @@
 
     private String account;
 
+    private Integer type;
+
+    private String yysName;
+
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOther.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOther.java
new file mode 100644
index 0000000..fa07ed8
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOther.java
@@ -0,0 +1,50 @@
+package com.dsh.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_store_other")
+public class TStoreOther extends Model<TStoreOther> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String name;
+
+    @TableField("storeId")
+    private Integer storeId;
+
+    private Integer sort;
+
+    /**
+     * 1开启 2关闭
+     */
+    private Integer state;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfig.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfig.java
new file mode 100644
index 0000000..acfd2f3
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfig.java
@@ -0,0 +1,80 @@
+package com.dsh.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_store_other_config")
+public class TStoreOtherConfig extends Model<TStoreOtherConfig> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 图片
+     */
+    private String url;
+
+    /**
+     * 跳转模块
+     */
+    private String name;
+
+    /**
+     * 跳转页面
+     */
+    private String page;
+
+    /**
+     * 跳转类型
+     */
+    private String type;
+
+    /**
+     * 跳转id
+     */
+    @TableField("turnId")
+    private String turnId;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 1开启 2关闭
+     */
+    private Integer state;
+
+    @TableField("pageId")
+    private Integer pageId;
+
+    @TableField("typeId")
+    private Integer typeId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfigTrue.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfigTrue.java
new file mode 100644
index 0000000..5487978
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfigTrue.java
@@ -0,0 +1,83 @@
+package com.dsh.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_store_other_config_true")
+public class TStoreOtherConfigTrue extends Model<TStoreOtherConfigTrue> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 图片
+     */
+    private String url;
+
+    /**
+     * 跳转模块
+     */
+    private String name;
+
+    /**
+     * 跳转页面
+     */
+    private String page;
+
+    /**
+     * 跳转类型
+     */
+    private String type;
+
+    /**
+     * 跳转id
+     */
+    @TableField("turnId")
+    private String turnId;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 1开启 2关闭
+     */
+    private Integer state;
+
+    private Integer pid;
+
+    @TableField("pageId")
+    private Integer pageId;
+
+    @TableField("typeId")
+    private Integer typeId;
+
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TTurn.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TTurn.java
new file mode 100644
index 0000000..85eac91
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TTurn.java
@@ -0,0 +1,39 @@
+package com.dsh.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TTurn extends Model<TTurn> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String name;
+
+    private Integer pid;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java
new file mode 100644
index 0000000..0916ff1
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java
@@ -0,0 +1,9 @@
+package com.dsh.guns.modular.system.model.dto;
+
+import lombok.Data;
+
+@Data
+public class SelectDto {
+    Integer id;
+    String value;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
index 9e00850..025c637 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
@@ -36,4 +36,17 @@
 
     List<Map<String, Object>> queryListOfpage(String provinceCode, String cityCode, Integer cityManagerId, String storeName, Page<Map<String, Object>> page);
 
+    List<Map<String, Object>> listOne(Page<Map<String, Object>> page, Integer id);
+
+
+    List<Map<String, Object>> typeChange(String name);
+
+    List<Map<String, Object>> typeChangeOne(Integer id);
+
+    void addConfigOne(String url, String name, Integer page,Integer type, String turnId, Integer sort);
+
+    List<Map<String, Object>> listTwo(Page<Map<String, Object>> page);
+
+
+    void delete1(Integer id);
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ITStudentService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ITStudentService.java
index 31f28d3..3fb2ac1 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ITStudentService.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ITStudentService.java
@@ -3,6 +3,7 @@
 
 import com.dsh.course.dto.StudentSearch;
 import com.dsh.course.dto.TStudentDto;
+import com.dsh.guns.modular.system.model.TStudent;
 
 import java.util.List;
 
@@ -19,4 +20,6 @@
     List<TStudentDto> listAll(StudentSearch search);
 
     TStudentDto listOne(Integer id);
+
+    void update(TStudent tStudent);
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TOperatorService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TOperatorService.java
new file mode 100644
index 0000000..70009f6
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TOperatorService.java
@@ -0,0 +1,17 @@
+package com.dsh.guns.modular.system.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.guns.modular.system.model.TOperator;
+
+/**
+ * <p>
+ * 运营商 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-20
+ */
+public interface TOperatorService extends IService<TOperator> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigService.java
new file mode 100644
index 0000000..8d6c9ed
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigService.java
@@ -0,0 +1,17 @@
+package com.dsh.guns.modular.system.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.guns.modular.system.model.TStoreOtherConfig;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+public interface TStoreOtherConfigService extends IService<TStoreOtherConfig> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigTrueService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigTrueService.java
new file mode 100644
index 0000000..f42d1fc
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigTrueService.java
@@ -0,0 +1,16 @@
+package com.dsh.guns.modular.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.guns.modular.system.model.TStoreOtherConfigTrue;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+public interface TStoreOtherConfigTrueService extends IService<TStoreOtherConfigTrue> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherService.java
new file mode 100644
index 0000000..720b97d
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherService.java
@@ -0,0 +1,17 @@
+package com.dsh.guns.modular.system.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.guns.modular.system.model.TStoreOther;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+public interface TStoreOtherService extends IService<TStoreOther> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TTurnService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TTurnService.java
new file mode 100644
index 0000000..d037f1f
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TTurnService.java
@@ -0,0 +1,16 @@
+package com.dsh.guns.modular.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.guns.modular.system.model.TTurn;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+public interface TTurnService extends IService<TTurn> {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
index ccd1d9d..135a607 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
@@ -45,4 +45,38 @@
     public List<Map<String, Object>> queryListOfpage(String provinceCode, String cityCode, Integer cityManagerId, String storeName, Page<Map<String, Object>> page) {
         return this.baseMapper.queryListOfpage(provinceCode,cityCode,cityManagerId,storeName,page);
     }
+
+    @Override
+    public List<Map<String, Object>> listOne(Page<Map<String, Object>> page, Integer id) {
+        return this.baseMapper.listOne(page,id);
+
+    }
+
+    @Override
+    public List<Map<String, Object>> typeChange(String name) {
+        return this.baseMapper.typeChange(name);
+    }
+    @Override
+    public List<Map<String, Object>> typeChangeOne(Integer id) {
+        return this.baseMapper.typeChangeOne(id);
+    }
+
+    @Override
+    public void addConfigOne(String url, String name, Integer page, Integer type,String turnId, Integer sort) {
+       String s  =  this.baseMapper.getConfig(page);
+       String s1  =  this.baseMapper.getConfig(type);
+       this.baseMapper.addConfigOne(url,name,s,s1,turnId,sort,page,type);
+    }
+
+    @Override
+    public List<Map<String, Object>> listTwo(Page<Map<String, Object>> page) {
+        return this.baseMapper.listTwo(page);
+
+
+    }
+
+    @Override
+    public void delete1(Integer id) {
+        this.baseMapper.delete1(id);
+    }
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorServiceImpl.java
new file mode 100644
index 0000000..6d6dfa1
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorServiceImpl.java
@@ -0,0 +1,21 @@
+package com.dsh.guns.modular.system.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.mapper.TOperatorMapper;
+import com.dsh.guns.modular.system.model.TOperator;
+import com.dsh.guns.modular.system.service.TOperatorService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 运营商 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-20
+ */
+@Service
+public class TOperatorServiceImpl extends ServiceImpl<TOperatorMapper, TOperator> implements TOperatorService {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigServiceImpl.java
new file mode 100644
index 0000000..944b6da
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.guns.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.mapper.TStoreOtherConfigMapper;
+import com.dsh.guns.modular.system.model.TStoreOtherConfig;
+import com.dsh.guns.modular.system.service.TStoreOtherConfigService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+@Service
+public class TStoreOtherConfigServiceImpl extends ServiceImpl<TStoreOtherConfigMapper, TStoreOtherConfig> implements TStoreOtherConfigService {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigTrueServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigTrueServiceImpl.java
new file mode 100644
index 0000000..6ae4add
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigTrueServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.guns.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.mapper.TStoreOtherConfigTrueMapper;
+import com.dsh.guns.modular.system.model.TStoreOtherConfigTrue;
+import com.dsh.guns.modular.system.service.TStoreOtherConfigTrueService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+@Service
+public class TStoreOtherConfigTrueServiceImpl extends ServiceImpl<TStoreOtherConfigTrueMapper, TStoreOtherConfigTrue> implements TStoreOtherConfigTrueService {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherServiceImpl.java
new file mode 100644
index 0000000..b369531
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherServiceImpl.java
@@ -0,0 +1,21 @@
+package com.dsh.guns.modular.system.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.mapper.TStoreOtherMapper;
+import com.dsh.guns.modular.system.model.TStoreOther;
+import com.dsh.guns.modular.system.service.TStoreOtherService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+@Service
+public class TStoreOtherServiceImpl extends ServiceImpl<TStoreOtherMapper, TStoreOther> implements TStoreOtherService {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStudentServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStudentServiceImpl.java
index da883d7..8fcfd25 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStudentServiceImpl.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStudentServiceImpl.java
@@ -3,6 +3,7 @@
 import com.dsh.course.dto.StudentSearch;
 import com.dsh.course.dto.TStudentDto;
 import com.dsh.course.feignClient.account.AppUserClient;
+import com.dsh.guns.modular.system.model.TStudent;
 import com.dsh.guns.modular.system.service.ITStudentService;
 import org.springframework.stereotype.Service;
 
@@ -32,4 +33,9 @@
     public TStudentDto listOne(Integer id) {
         return appUserClient.queryOneWebUser(id);
     }
+
+    @Override
+    public void update(TStudent tStudent) {
+        appUserClient.updateStudent(tStudent);
+    }
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TTurnServiceImpl.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TTurnServiceImpl.java
new file mode 100644
index 0000000..444cd47
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TTurnServiceImpl.java
@@ -0,0 +1,21 @@
+package com.dsh.guns.modular.system.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.mapper.TTurnMapper;
+import com.dsh.guns.modular.system.model.TTurn;
+import com.dsh.guns.modular.system.service.TTurnService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-19
+ */
+@Service
+public class TTurnServiceImpl extends ServiceImpl<TTurnMapper, TTurn> implements TTurnService {
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/GaoDeMapUtil.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/GaoDeMapUtil.java
index 0012713..91b2c7b 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/GaoDeMapUtil.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/GaoDeMapUtil.java
@@ -36,7 +36,7 @@
         CloseableHttpClient httpclient = HttpClients.createDefault();
         try {
             // 拼接请求高德的url
-            HttpGet httpget = new HttpGet(address+"&sensor=false&key=AIzaSyCnvS7Xm3utDjc2fdd5Gvk5E1-bavcrzAA");
+            HttpGet httpget = new HttpGet(address+"&sensor=false&key=77b37f0753049c4e712ea79a24e0719c");
             // 执行get请求.
             CloseableHttpResponse response = httpclient.execute(httpget);
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ResultUtil.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ResultUtil.java
index 4d76814..ef54622 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ResultUtil.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ResultUtil.java
@@ -46,7 +46,7 @@
         return code;
     }
 
-    private ResultUtil(Integer status, Integer code, String msg) {
+    public ResultUtil(Integer status, Integer code, String msg) {
         this.status = status;
         this.code = code;
         this.msg = msg;
@@ -59,7 +59,7 @@
         this.data = data;
     }
 
-    private ResultUtil(Integer status, Integer code, String msg, T data, String str) {
+    public ResultUtil(Integer status, Integer code, String msg, T data, String str) {
         this.status = status;
         this.code = code;
         this.msg = msg;
diff --git a/cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml b/cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml
new file mode 100644
index 0000000..9250045
--- /dev/null
+++ b/cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.course.mapper.TOperatorMapper">
+
+
+</mapper>
diff --git a/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml b/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
index 2db3c8d..cbe1ba4 100644
--- a/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
+++ b/cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
@@ -1,9 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.dsh.course.mapper.StoreMapper">
+    <insert id="addConfigOne">
+        insert into t_store_other_config(id,
+                                        url,
+                                        `name`,
+                                        page,
+                                        `type`,
+                                        turnId,
+                                        sort,
+                                        state,pageId,typeId
+                                        ) value (null ,#{url},#{name},#{s},#{s1},#{turnId},#{sort},1,#{page},#{type})
+    </insert>
+    <delete id="delete1">
+        delete from t_store_other_config where id =#{id}
+    </delete>
 
     <select id="listAll" resultType="com.dsh.guns.modular.system.model.TStoreListVo">
         select t1.*,t2.name userName,t2.phone userPhone from t_store t1 left join sys_user t2 on t1.storeStaffId = t2.id
+
         where 1=1
         <if test="provinceCode !=null and provinceCode !=''">
             and t1.provinceCode = #{provinceCode}
@@ -58,4 +73,19 @@
             and `name` like CONCAT('%',#{storeName},'%')
         </if>
     </select>
+    <select id="listOne" resultType="java.util.Map">
+        select id,name,sort,state from t_store_other where storeId=#{id}
+    </select>
+    <select id="typeChange" resultType="java.util.Map">
+        select t1.id,t1.name from t_turn t1 left join  t_turn t2 on t1.pid = t2.id where t2.name  =#{name}
+    </select>
+    <select id="typeChangeOne" resultType="java.util.Map">
+        select id,name from t_turn  where pid  =#{id}
+    </select>
+    <select id="getConfig" resultType="java.lang.String">
+        select name from t_turn where id =#{page}
+    </select>
+    <select id="listTwo" resultType="java.util.Map">
+        select id,url,name ,  page,sort from t_store_other_config
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/cloud-server-management/src/main/resources/mapper/TStoreOtherConfigMapper.xml b/cloud-server-management/src/main/resources/mapper/TStoreOtherConfigMapper.xml
new file mode 100644
index 0000000..e740a9f
--- /dev/null
+++ b/cloud-server-management/src/main/resources/mapper/TStoreOtherConfigMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.course.mapper.TStoreOtherConfigMapper">
+
+
+</mapper>
diff --git a/cloud-server-management/src/main/resources/mapper/TStoreOtherConfigTrueMapper.xml b/cloud-server-management/src/main/resources/mapper/TStoreOtherConfigTrueMapper.xml
new file mode 100644
index 0000000..890222a
--- /dev/null
+++ b/cloud-server-management/src/main/resources/mapper/TStoreOtherConfigTrueMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.course.mapper.TStoreOtherConfigTrueMapper">
+
+
+</mapper>
diff --git a/cloud-server-management/src/main/resources/mapper/TStoreOtherMapper.xml b/cloud-server-management/src/main/resources/mapper/TStoreOtherMapper.xml
new file mode 100644
index 0000000..73c2eea
--- /dev/null
+++ b/cloud-server-management/src/main/resources/mapper/TStoreOtherMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.course.mapper.TStoreOtherMapper">
+
+
+</mapper>
diff --git a/cloud-server-management/src/main/resources/mapper/TTurnMapper.xml b/cloud-server-management/src/main/resources/mapper/TTurnMapper.xml
new file mode 100644
index 0000000..1fdc23e
--- /dev/null
+++ b/cloud-server-management/src/main/resources/mapper/TTurnMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.course.mapper.TTurnMapper">
+
+
+</mapper>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add.html
index 7f5620f..c538791 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add.html
@@ -43,7 +43,23 @@
 
         <div class="form-horizontal" id="carInfoForm">
             <input hidden id="role" value="${role}">
+
+            <div class="form-group">
+                <label class="col-sm-3 control-label">门店类型:</label>
+                <div class="col-sm-9">
+                    <input type="radio" name="type" value="1" checked onclick="updateType(1)"> 平台门店
+                    <input type="radio" name="type" value="2" onclick="updateType(2)"> 运营商门店
+                </div>
+            </div>
             @if(role=='1'){
+            <div class="form-group" id="yys" hidden >
+                <label class="col-sm-3 control-label">所属运营商:</label>
+                <div class="col-sm-9">
+                    <select class="form-control" id="account" name="account" onchange="TCarInfoDlg.oneChange1(this)">
+                        <option value="">选择运营商</option>
+                    </select>
+                </div>
+            </div>
             <div class="form-group" id="provinceCode">
                 <label class="col-sm-3 control-label">所在省:</label>
                 <div class="col-sm-9">
@@ -58,19 +74,12 @@
             <div class="form-group" id="cityCode">
                 <label class="col-sm-3 control-label">所在市:</label>
                 <div class="col-sm-9">
-                    <select class="form-control" id="cCode" name="cCode" onchange="TCarInfoDlg.oneChangeNext(this)">
+                    <select class="form-control" id="cCode" name="cCode" >
                         <option value="">选择市</option>
                     </select>
                 </div>
             </div>
-            <div class="form-group" >
-                <label class="col-sm-3 control-label">所属账号:</label>
-                <div class="col-sm-9">
-                    <select class="form-control" id="account" name="account">
-                        <option value="">选择账号</option>
-                    </select>
-                </div>
-            </div>
+
             @}
         <#input id="name" name="门店名称" type="text"/>
         <#input id="phone" name="联系电话" type="text"/>
@@ -85,8 +94,8 @@
                 <!-- 创建地图容器-->
                 <div id="container" style="height: 500px;" ></div>
             </div>
-            <div hidden id="longitude"></div>
-            <div hidden id="latitude"></div>
+            <div hidden id="longitude" value="104.0559716796875"></div>
+            <div hidden id="latitude" value="30.585671929253472"></div>
 
             <#input id="time" name="营业时间" type="text"/>
             <div class="form-group">
@@ -99,7 +108,7 @@
         <#input id="userPhone" name="店长手机号" type="text"/>
         <#avatar id="img" name="门店封面(推荐像素722*360px)" />
             <div class="row" id="app1">
-                <div class="col-sm-6" style="width: 100%">
+                <div class="col-sm-6" style="width: 100%;margin-left: 103px;">
                     <div class="form-group">
                         <label class="col-sm-3 control-label" style="width: 15%;margin-left: 5%">*实景图片(请上传不超过五张图片): </label>
                         <div class="col-sm-2" style="width: 100%;margin-left: 11%;margin-top: 1%">
@@ -120,7 +129,7 @@
 
                 </div>
             </div>
-
+            <#input id="ids" name="添加入园闸机" type="text"/>
 
         </div>
 </div>
@@ -180,5 +189,16 @@
         created() {
         },
     });
+
+
+    function updateType(o) {
+        if(o==1){
+            $("#yys").hide()
+        }else {
+            $("#yys").show()
+
+        }
+
+    }
 </script>
 @}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_one.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_one.html
new file mode 100644
index 0000000..301ef2a
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_one.html
@@ -0,0 +1,42 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal" id="carInfoForm">
+            <input id="id" value="${id}" hidden>
+            <div class="form-group" style="margin-left:-410px">
+                <label class="col-sm-3 control-label">板块名称:</label>
+                <div class="col-sm-9">
+                    <input class="form-control" id="name" name="name" type="text" style="width: 400px;">
+
+                </div>
+            </div>
+            <div class="form-group" style="margin-left:-410px">
+            <label class="col-sm-3 control-label">内容设置:</label>
+                <#button name="添加" icon="fa-plus" clickFun="TCompetition.openAdd()"/>
+            </div>
+            <#table id="TCompetitionOtherTable"/>
+
+        </div>
+</div>
+
+<div class="row btn-group-m-t">
+    <div class="col-sm-10 col-sm-offset-5">
+        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCompetition.addSubmit2()"/>
+        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCompetition.close()"/>
+    </div>
+</div>
+
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/modular/system/tShop/tShopOtherOne.js"></script>
+<script>
+    laydate.render({
+        elem: '#time',
+        range:true
+    });
+
+
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_two.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_two.html
new file mode 100644
index 0000000..41705b2
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_two.html
@@ -0,0 +1,124 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal" id="carInfoForm">
+
+
+            <#avatar id="url" name="图片(推荐像素宽度316px)"/>
+
+            <div class="input-group" style="margin-left: 342px;">
+                <div class="input-group-btn">
+                    <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button">
+                        跳转模块
+                    </button>
+                </div>
+                <select class="form-control" id="name" style="width: 400px;" onclick="updateType(this)">
+                    <option value="" selected disabled>选择跳转模块</option>
+                    <option value="不跳转">不跳转</option>
+                    <option value="加入玩湃">加入玩湃</option>
+                    <option value="开始课程">开始课程</option>
+                    <option value="使用福利">使用福利</option>
+                    <option value="探索玩湃">探索玩湃</option>
+                </select>
+            </div>
+
+            <div class="input-group" style="margin-left: 342px;" id="t1" hidden >
+                <div class="input-group-btn">
+                    <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button">
+                        跳转页面
+                    </button>
+                </div>
+                <select class="form-control" id="page" style="width: 400px;" onchange="updateOne(this)">
+
+                </select>
+            </div>
+
+            <div class="input-group" style="margin-left: 342px;" id="t2" >
+                <div class="input-group-btn">
+                    <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button">
+                        跳转类型
+                    </button>
+                </div>
+                <select class="form-control" id="type" style="width: 400px;" >
+
+                </select>
+            </div>
+
+            <div class="form-group" id="t3"  >
+                <label class="col-sm-3 control-label">跳转ID:</label>
+                <div class="col-sm-9">
+                    <input class="form-control" id="turnId" name="turnId" type="text" style="width: 400px;">
+                </div>
+            </div>
+
+            <div class="form-group" id="t4" >
+                <label class="col-sm-3 control-label">排序:</label>
+                <div class="col-sm-9">
+                    <input class="form-control" id="sort" name="sort" type="text" style="width: 400px;">
+
+                </div>
+            </div>
+
+        </div>
+
+<div class="row btn-group-m-t">
+    <div class="col-sm-10 col-sm-offset-5">
+        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCompetition.close()"/>
+        <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="TCompetition.addSubmit()"/>
+    </div>
+</div>
+
+
+</div>
+<script src="${ctxPath}/modular/system/tShop/tShopOtherOne.js"></script>
+<script>
+    laydate.render({
+        elem: '#time',
+        range:true
+    });
+
+    function updateType(e) {
+        let name  =  $("#name").val()
+        console.log(name
+        )
+        if(name =='不跳转'){
+            $("#t1").hide()
+            $("#t2").hide()
+            $("#t3").hide()
+        }else {
+            $("#t1").show()
+            $("#t2").show()
+            $("#t3").show()
+
+            var oneId=$(e).val();
+            var ajax = new $ax(Feng.ctxPath + "/tShop/typeChange", function(data){
+                if(data!=null){
+                    var content;
+                    $.each(data, function(k,v) {
+                        content += "<option value='"+v.id+"'>"+v.name+"</option>";
+                    });
+                    $("#page").empty().append(content);
+                }
+            });
+            ajax.set("name",oneId);
+            ajax.start();
+        }
+    }
+
+
+    function updateOne(e) {
+        var oneId=$(e).val();
+        var ajax = new $ax(Feng.ctxPath + "/tShop/typeChangeOne", function(data){
+            if(data!=null){
+                var content1;
+                $.each(data, function(k,v) {
+                    content1 += "<option value='"+v.id+"'>"+v.name+"</option>";
+                });
+                $("#type").empty().append(content1);
+            }
+        });
+        ajax.set("id",oneId);
+        ajax.start();
+    }
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html
index 103833c..17ba78f 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html
@@ -1,4 +1,41 @@
 @layout("/common/_container.html"){
+<style>
+    .avatar-uploader .el-upload {
+        border: 1px dashed #d9d9d9;
+        border-radius: 6px;
+        cursor: pointer;
+        position: relative;
+        height: 100px;
+        width: 100px;
+        overflow: hidden;
+    }
+
+    .avatar-uploader .el-upload:hover {
+        border-color: #409EFF;
+    }
+    .avatar-uploader-icon {
+        font-size: 28px;
+        color: #8c939d;
+        width: 100px;
+        height: 100px;
+        line-height: 100px;
+        margin-top: 32px;
+        text-align: center;
+    }
+    .avatar {
+        width: 100px;
+        height: 100px;
+        display: block;
+    }
+
+    .col-sm-12 {
+        margin-top: 20px;
+    }
+
+    .col-sm-12 select {
+        height: 33px;
+    }
+</style>
 <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=77b37f0753049c4e712ea79a24e0719c"></script>
 <div class="ibox float-e-margins">
     <div class="ibox-content">
@@ -6,7 +43,24 @@
         <div class="form-horizontal" id="carInfoForm">
             <input hidden id="id" value="${item.id}">
             <input hidden id="role" value="${role}">
+            <input hidden id="type" value="${item.type}">
+
+            <div class="form-group">
+                <label class="col-sm-3 control-label">门店类型:</label>
+                <div class="col-sm-9">
+                    <input type="radio" name="type" value="1"  onclick="updateType(1)"> 平台门店
+                    <input type="radio" name="type" value="2" onclick="updateType(2)"> 运营商门店
+                </div>
+            </div>
             @if(role=='1'){
+            <div class="form-group" id="yys" hidden >
+                <label class="col-sm-3 control-label">所属运营商:</label>
+                <div class="col-sm-9">
+                    <select class="form-control" id="account" name="account" onchange="TCarInfoDlg.oneChange1(this)">
+                        <option value="">选择运营商</option>
+                    </select>
+                </div>
+            </div>
             <div class="form-group" id="provinceCode">
                 <label class="col-sm-3 control-label">所在省:</label>
                 <div class="col-sm-9">
@@ -25,17 +79,6 @@
                         <option value="">选择市</option>
                         @for(obj in list1){
                         <option value="${obj.code}" ${obj.code == item.cityCode ? 'selected=selected' : ''}>${obj.name}</option>
-                        @}
-                    </select>
-                </div>
-            </div>
-            <div class="form-group" >
-                <label class="col-sm-3 control-label">所属账号:</label>
-                <div class="col-sm-9">
-                    <select class="form-control" id="account" name="account">
-                        <option value="">选择账号</option>
-                        @for(obj in list2){
-                        <option value="${obj.id}" ${obj.id == item.cityManagerId ? 'selected=selected' : ''}>${obj.name}-${obj.phone}</option>
                         @}
                     </select>
                 </div>
@@ -65,6 +108,32 @@
             <#input id="userPhone" name="管理员手机号" type="text" value="${city.account}"/>
             <#avatar id="img" name="门店封面(推荐像素722*360px)" avatarImg="${item.coverDrawing}"/>
             <#input id="imgOne" name="实景照片" type="text" value="${item.realPicture}"/>
+            <div class="row" id="app1">
+                <div class="col-sm-6" style="width: 100%;margin-left: 103px;">
+                    <div class="form-group">
+                        <label class="col-sm-3 control-label" style="width: 15%;margin-left: 5%">*实景图片(请上传不超过五张图片): </label>
+                        <div class="col-sm-2" style="width: 100%;margin-left: 11%;margin-top: 1%">
+                            <el-upload
+
+                                    :limit="5"
+                                    class="avatar-uploader"
+                                    action="/tCouponManage/uploadPic"
+                                    list-type="picture-card"
+                                    accept="."
+                                    :file-list="imageUrl2"
+                                    :on-success="handleAvatarSuccess"
+                                    :on-remove="handleRemove">
+                                <i class="el-icon-plus"></i>
+                            </el-upload>
+                            <el-dialog :visible.sync="dialogVisible">
+                                <img width="100%" :src="imageUrl2"  alt=""></el-dialog>
+
+                        </div>
+                    </div>
+
+                </div>
+            </div>
+            <#input id="ids" name="添加入园闸机" type="text" value="${item.ids}"/>
 
         </div>
         <div class="row btn-group-m-t">
@@ -77,11 +146,87 @@
     </div>
 </div>
 <script src="${ctxPath}/modular/system/tShop/tShop_info.js"></script>
+<script src="${ctxPath}/js/vue/vue.js"></script>
+<script src="${ctxPath}/js/elementui/index.js"></script>
+<link rel="stylesheet" href="${ctxPath}/js/elementui/index.css">
 <script>
     laydate.render({
         elem: '#time',
         range:true
     });
+
+    window.onload = function(){
+        var OBJradio=document.getElementsByName("type")
+        for(i=0;i<OBJradio.length;i++){//循环查找这个radio
+            if($("#type").val()==OBJradio[i].value){//判断是否与radio的值相同
+                OBJradio[i].checked=true//修改选中状态
+            }
+        }
+    }
+    let id = "https://evmoto.obs.ap-southeast-4.myhuaweicloud.com:443/b1d6f9e362414d1b895d916657776573.png,https://evmoto.obs.ap-southeast-4.myhuaweicloud.com:443/b1d6f9e362414d1b895d916657776573.png"
+    let obj = []
+
+
+    var vue2 = new Vue({
+        el: '#app1',
+        props: {
+            // 数量限制
+            limit: {
+                type: Number,
+                default: 2
+            },
+        },
+        data: {
+            autoUpload: true,//自动上传
+            imageUrl1: '',//模型数据,用于上传图片完成后图片预览
+            imageUrl2: [],
+            dialogVisible: false
+        },
+        methods: {
+            handleAvatarSuccess(res, file) {
+                TCarInfoDlg.goodsPicArray.push(file);
+            },
+            changeImg(){
+               var i = id.split(",")
+                for (let j = 0; j <i.length; j++) {
+                    let obj={
+                        fileName:i[j],
+                        uuid:i[j],
+                        url:i[j]
+                    }
+                    this.imageUrl2.push(obj)
+
+                }
+                console.log( this.imageUrl2,111)
+            },
+            beforeAvatarUpload(file) {
+                const isLt2M = file.size / 1024 / 1024 < 10;
+                if (!isLt2M) {
+                    this.$message.error('上传图片大小不能超过 10MB!');
+                }
+                return isLt2M;
+            },
+            handleRemove(file, fileList) {
+                TCarInfoDlg.goodsPicArray = TCarInfoDlg.goodsPicArray.filter(item => {
+                    return item.uid != file.uid;
+                });
+            },
+        },
+        created() {
+            this.changeImg()
+        },
+    });
+
+
+    function updateType(o) {
+        if(o==1){
+            $("#yys").hide()
+        }else {
+            $("#yys").show()
+            queryStudentData
+        }
+
+    }
 </script>
 <script type="application/javascript">
 
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit_two.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit_two.html
new file mode 100644
index 0000000..d6141ed
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit_two.html
@@ -0,0 +1,134 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal" id="carInfoForm">
+            <input id="id" value="${item.id}" hidden>
+            <input id="name1" value="${item.name}" hidden>
+
+
+            <#avatar id="url" name="图片(推荐像素宽度316px)" avatarImg="${item.url}"/>
+
+            <div class="input-group" style="margin-left: 342px;">
+                <div class="input-group-btn">
+                    <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button">
+                        跳转模块
+                    </button>
+                </div>
+                <select class="form-control" id="name" style="width: 400px;" onclick="updateType(this)">
+                    <option value="不跳转">不跳转</option>
+                    <option value="加入玩湃">加入玩湃</option>
+                    <option value="开始课程">开始课程</option>
+                    <option value="使用福利">使用福利</option>
+                    <option value="探索玩湃">探索玩湃</option>
+                </select>
+            </div>
+
+            <div class="input-group" style="margin-left: 342px;" id="t1" hidden >
+                <div class="input-group-btn">
+                    <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button">
+                        跳转页面
+                    </button>
+                </div>
+                <select class="form-control" id="page" style="width: 400px;" onchange="updateOne(this)">
+                    @for(obj in list){
+                    <option value="${obj.id}" ${obj.id == item.pageId ? 'selected=selected' : ''}>${obj.name}</option>
+                    @}
+                </select>
+            </div>
+
+            <div class="input-group" style="margin-left: 342px;" id="t2" >
+                <div class="input-group-btn">
+                    <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button">
+                        跳转类型
+                    </button>
+                </div>
+                <select class="form-control" id="type" style="width: 400px;" >
+                    @for(obj in list1){
+                    <option value="${obj.id}" ${obj.id == item.typeId ? 'selected=selected' : ''}>${obj.name}</option>
+                    @}
+                </select>
+            </div>
+
+            <div class="form-group" id="t3"  >
+                <label class="col-sm-3 control-label">跳转ID:</label>
+                <div class="col-sm-9">
+                    <input class="form-control" id="turnId" name="turnId" type="text" style="width: 400px;" value="${item.turnId}">
+                </div>
+            </div>
+
+            <div class="form-group" id="t4" >
+                <label class="col-sm-3 control-label">排序:</label>
+                <div class="col-sm-9">
+                    <input class="form-control" id="sort" name="sort" type="text" style="width: 400px;" value="${item.sort}">
+
+                </div>
+            </div>
+
+        </div>
+
+<div class="row btn-group-m-t">
+    <div class="col-sm-10 col-sm-offset-5">
+        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCompetition.close()"/>
+        <#button btnCss="info" name="确认" id="ensure" icon="fa-check" clickFun="TCompetition.addSubmit1()"/>
+    </div>
+</div>
+
+
+</div>
+</div>
+<script src="${ctxPath}/modular/system/tShop/tShopOtherOne.js"></script>
+<script>
+    laydate.render({
+        elem: '#time',
+        range:true
+    });
+
+    function updateType(e) {
+        let name  =  $("#name").val()
+        console.log(name
+        )
+        if(name =='不跳转'){
+            $("#t1").hide()
+            $("#t2").hide()
+            $("#t3").hide()
+        }else {
+            $("#t1").show()
+            $("#t2").show()
+            $("#t3").show()
+
+            var oneId=$(e).val();
+            var ajax = new $ax(Feng.ctxPath + "/tShop/typeChange", function(data){
+                if(data!=null){
+                    var content;
+                    $.each(data, function(k,v) {
+                        content += "<option value='"+v.id+"'>"+v.name+"</option>";
+                    });
+                    $("#page").empty().append(content);
+                }
+            });
+            ajax.set("name",oneId);
+            ajax.start();
+        }
+    }
+
+
+    function updateOne(e) {
+        var oneId=$(e).val();
+        var ajax = new $ax(Feng.ctxPath + "/tShop/typeChangeOne", function(data){
+            if(data!=null){
+                var content1;
+                $.each(data, function(k,v) {
+                    content1 += "<option value='"+v.id+"'>"+v.name+"</option>";
+                });
+                $("#type").empty().append(content1);
+            }
+        });
+        ajax.set("id",oneId);
+        ajax.start();
+    }
+
+    window.onload = function() {
+        $("#name").val($("#name1").val());
+    }
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_imgAll.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_imgAll.html
index 9a40637..bd5cfc4 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_imgAll.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_imgAll.html
@@ -182,17 +182,26 @@
             </div>
 
 
+            <div>首页其他板块设置</div>
+            <#button name="添加" icon="fa-plus" clickFun="TCompetition.openAddTCompetition(id)"/>
+            <#button name="编辑" icon="fa-edit" clickFun="TCompetition.openTCompetitionDetail()" space="true"/>
+            <#button name="删除" icon="fa-remove" clickFun="TCompetition.freeze()" space="true"/>
+            <#button name="开启" icon="fa-remove" clickFun="TCompetition.unfreeze()" space="true"/>
+            <#button name="关闭" icon="fa-remove" clickFun="TCompetition.info()" space="true"/>
+            <#table id="TCompetitionOtherTable"/>
+
+
 
         </div>
         <div class="row btn-group-m-t">
             <div class="col-sm-10 col-sm-offset-5">
-                <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="TCarInfoDlg.saveAllImg()"/>
+                <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="TCompetition.saveAllImg()"/>
             </div>
         </div>
 
     </div>
 </div>
-<script src="${ctxPath}/modular/system/tShop/tShop_info.js"></script>
+<script src="${ctxPath}/modular/system/tShop/tShopOther.js"></script>
 
 <script>
 </script>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html
index 4499976..834906e 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html
@@ -49,35 +49,16 @@
         <div class="form-horizontal" id="carInfoForm">
             <input hidden id="role" value="${role}">
             @if(objectType==1){
-            <div class="form-group" id="provinceCode">
-                <label class="col-sm-3 control-label">*所在省:</label>
-                <div class="col-sm-9">
-                    <select style="width: 300px" class="form-control" id="pCode" name="pCode" onchange="TSite.oneChange(2)">
-                        <option style="width: 300px" value="">选择省</option>
-                        @for(obj in province){
-                        <option style="width: 300px" value="${obj}">${obj}</option>
+            <div class="form-group" >
+                <label class="col-sm-3 control-label">*所属运营商:</label>
+                <div class="col-sm-8">
+                    <select style="width: 300px" class="form-control" id="yys" name="yys" onchange="TSite.oneChangeYys(2)">
+                        <option style="width: 300px" value="">选择运营商</option>
+                        @for(obj in yysList){
+                        <option style="width: 300px" value="${obj.id}">${obj.name}</option>
                         @}
                     </select>
-                </div>
-            </div>
-            @}
-            @if(objectType==1){
-            <div class="form-group" id="cityCode">
-                <label class="col-sm-3 control-label">*所在市:</label>
-                <div class="col-sm-9">
-                    <select style="width: 300px" class="form-control" id="cCode" name="cCode" onchange="TSite.oneChangeNext(this)">
-                        <option value="">请先选择省</option>
-                    </select>
-                </div>
-            </div>
-            @}
-            @if(objectType==1){
-            <div class="form-group" >
-                <label class="col-sm-3 control-label">*所属账号:</label>
-                <div class="col-sm-9">
-                    <select style="width: 300px" class="form-control" id="account" name="account">
-                        <option value="">请先选择省/市</option>
-                    </select>
+                    <input type="checkbox" value="0" name="pt">平台</input>
                 </div>
             </div>
             @}
@@ -85,12 +66,15 @@
                 <label class="col-sm-3 control-label">*所属门店:</label>
                 <div class="col-sm-9">
                     <select style="width: 300px" class="form-control" id="store" name="store"  >
-                        <option disabled selected value="">请选择门店</option>
-                        @if(objectType!=1){
-                            @for(obj in stores){
-                            <option style="width: 300px" value="${obj.id}">${obj.name}</option>
-                            @}
-                        @}
+                    </select>
+                </div>
+            </div>
+            <div class="form-group" >
+                <label class="col-sm-3 control-label">*场地类型:</label>
+                <div class="col-sm-9">
+                    <select style="width: 300px" class="form-control" id="siteTypeOne" name = "typeId">
+                        <option value="普通场地">普通场地</option>
+                        <option value="智慧场地">智慧场地</option>
                     </select>
                 </div>
             </div>
@@ -132,7 +116,41 @@
                     <span style="margin-left: 5px;margin-top: 5px">币/半小时</span>
                 </div>
             </div>
+            <div class="form-group" id="siteMore" style=" margin-left: 255px;">
+                <div class="form-group">多场地配置:<i class="fa fa-plus" onclick="addBox()"></i></div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">是否可预定半场:</label>
+                <div class="col-sm-9">
+                    <input type="radio" name="ishalf" value="2" checked  onclick="updateHalf(1)"> 否
+                    <input type="radio" name="ishalf" value="1" onclick="updateHalf(2)"> 是
+                </div>
+            </div>
+            <div id="halfCode" hidden>
+                <div class="form-group" style="margin-left: 100px;" >
+                    <label class="col-sm-3 control-label">*现金价格:</label>
+                    <div class="col-sm-9" style="display: flex;">
+                        <input style="width: 300px" class="form-control" id="cashPriceOne" name="playPaiCoin" placeholder="请输入价格" type="text">
+                        <span style="margin-left: 5px;margin-top: 5px">元/半小时</span>
+                    </div>
+                </div>
 
+                <div class="form-group" style="margin-left: 100px;">
+                    <label class="col-sm-3 control-label">*玩湃币价格:</label>
+                    <div class="col-sm-9" style="display: flex;">
+                        <input style="width: 300px" class="form-control" id="playPaiCoinOne" name="playPaiCoin" placeholder="请输入价格" type="text">
+                        <span style="margin-left: 5px;margin-top: 5px">币/半小时</span>
+                    </div>
+                </div>
+
+
+                <div class="form-group"  id="halfName" >
+                    <label class="col-sm-3 control-label">*半场名称:</label>
+                    <div class="col-sm-8" style="display: flex;">
+                        <input style="width: 240px" class="form-control"  name="name2"  type="text"><i class="fa fa-plus" onclick="addBox1()" style="margin-left: 32px;margin-top: 10px;"></i>
+                    </div>
+                </div>
+            </div>
             <div class="form-group">
                 <label class="col-sm-3 control-label">*场地责任险有效期:</label>
                 <div class="col-sm-9">
@@ -176,6 +194,13 @@
                 @if(objectType==1){
                 <#input style="width: 300px" id="name" name="*添加闸机:" placeholder="请输入闸机ID" type="text"/>
                 @}
+                <div class="form-group"   style=" margin-left: 17%;" >
+                    <label class="col-sm-1 control-label">场地说明:</label>
+                    <div class="col-sm-5">
+                        <textarea type="text/plain" id="editor"  style="height: 300px;width: 800px;"></textarea>
+                    </div>
+                </div>
+
 <div class="row btn-group-m-t">
     <div class="col-sm-10 col-sm-offset-5" >
         <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TSite.addSubmit()"/>
@@ -195,6 +220,48 @@
 <script src="${ctxPath}/js/elementui/index.js"></script>
 <link rel="stylesheet" href="${ctxPath}/js/elementui/index.css">
 <script>
+
+    function addBox() {
+            var a="     <div class=\"col-sm-8 control-label\" id=\"far\">\n" +
+                "                        <label class=\"col-sm-2 control-label\">*单个场地名</label>\n" +
+                "                        <div class=\"col-sm-3\">\n" +
+                "                            <input type=\"text\"  name=\"name1\"  class=\"form-control newWidth\" />&nbsp;\n" +
+                "                        </div>  \n" +
+                "                        <div class=\"col-sm-1\">\n" +
+                "                            <i class=\"col-sm-1 fa fa-remove\" onclick=\"delBox(this)\" style=\"margin-top:10px\"></i>\n" +
+                "                        </div>  \n" +
+                "                    </div> "
+
+
+        $("#siteMore").append($(a))
+    }
+    function addBox1() {
+            var a="     <div class=\"col-sm-8 control-label\" id=\"far\" style=\"margin-left: 210px;\">\n" +
+                "                        <label class=\"col-sm-2 control-label\">*半场名称:</label>\n" +
+                "                        <div class=\"col-sm-3\">\n" +
+                "                            <input type=\"text\"  name=\"name2\"  class=\"form-control newWidth\"  style=\"margin-left: 8px;width: 240px;\"/>&nbsp;\n" +
+                "                        </div>  \n" +
+                "                        <div class=\"col-sm-1\">\n" +
+                "                            <i class=\"col-sm-1 fa fa-remove\" onclick=\"delBox(this)\" style=\"margin-top:10px\"></i>\n" +
+                "                        </div>  \n" +
+                "                    </div> "
+
+
+        $("#halfName").append($(a))
+    }
+    function delBox(o) {
+        $(o).parent("div").parent("div").remove()
+    }
+
+    function updateHalf(e) {
+        if(e==1){
+            $("#halfCode").hide()
+        }else {
+            $("#halfCode").show()
+        }
+
+    }
+
     var vue2 = new Vue({
         el: '#app1',
         props: {
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 e61e1a4..1c0bba5 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
@@ -34,6 +34,7 @@
                             @}
 
                                 <#button name="修改" icon="fa-edit" clickFun="TStudent.openTStudentDetail()" space="true"/>
+                            <#button name="查看详情" icon="fa-edit" clickFun="TStudent.openTStudentDetail1()" 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 0c8b15d..68e832b 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
@@ -36,402 +36,955 @@
     let amis = amisRequire('amis/embed');
     // 通过替换下面这个配置来生成不同页面
     let amisJSON = {
-      "type": "page",
+      "type": "form",
+      "title": "编辑",
       "body": [
         {
-          "type": "page",
-          "api": {
-            "method": "post",
-            "url": "/api/v1/sys/user/v2/add",
-            "messages": {
+          "type": "grid",
+          "id": "u:747bced162da",
+          "columns": [
+          ]
+        }, {
+          "type": "input-text",
+          "id": "u:32cb99df3eb8",
+          "label": "id",
+          "name": "id",
+          "size": "md",
+          "mode": "horizontal",
+          "hidden": true,
+          "value":`${item.id!}`
+        },
+        {
+          "type": "input-text",
+          "id": "u:32cb99df3eb8",
+          "label": "id",
+          "name": "id",
+          "size": "md",
+          "mode": "horizontal",
+          "hidden": false
+        },
+        {
+          "type": "tpl",
+          "id": "u:2dd6bf52bf62",
+          "tpl": "学员信息",
+          "inline": true,
+          "wrapperComponent": "h2"
+        },
+        {
+          "type": "input-text",
+          "label": "所属用户",
+          "id": "u:b60e636c6098",
+          "name": "userName",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true,
+          "disabled": true
+        },
+        {
+          "type": "input-text",
+          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp姓名",
+          "id": "u:0b2463bbffe8",
+          "name": "name",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true
+        },
+        {
+          "type": "input-date",
+          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp生日",
+          "name": "birthday",
+          "id": "u:9fe564fc31fc",
+          "size": "md",
+          "mode": "horizontal",
+          "embed": false,
+          "format": "YYYY-MM-DD hh:mm:ss",
+          "inputFormat": "YYYY-MM-DD",
+          "required": true
+        },
+        {
+          "type": "select",
+          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp性别",
+          "name": "sex",
+          "id": "u:196a32204b25",
+          "size": "md",
+          "mode": "horizontal",
+          "options": [
+            {
+              "label": "男",
+              "value": "1"
+            },
+            {
+              "label": "女",
+              "value": "2"
             }
+          ],
+          "multiple": false,
+          "required": true
+        },
+        {
+          "type": "input-text",
+          "label": "联系电话",
+          "name": "phone",
+          "id": "u:e7cf50e4f755",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true,
+          "validationErrors": {
+            "isPhoneNumber": "请输入正确的手机号"
           },
+          "validateOnChange": true,
+          "validations": {
+            "isPhoneNumber": true
+          }
+        },
+        {
+          "type": "input-text",
+          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp身高",
+          "name": "height",
+          "id": "u:c69b5e6ae298",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true,
+          "validationErrors": {
+            "maximum": "请输入正确的身高",
+            "isNumeric": "请输入数字"
+          },
+          "validateOnChange": true,
+          "validations": {
+            "maximum": 250,
+            "isNumeric": true
+          },
+          "addOn": {
+            "label": "cm",
+            "type": "text"
+          }
+        },
+        {
+          "type": "input-text",
+          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp体重",
+          "name": "weight",
+          "id": "u:e1e5d1a95e71",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true,
+          "addOn": {
+            "label": "kg",
+            "type": "text"
+          },
+          "validationErrors": {
+            "maximum": "请输入正确的身高",
+            "isNumeric": "请输入数字"
+          },
+          "validateOnChange": true,
+          "validations": {
+            "maximum": 250,
+            "isNumeric": true
+          }
+        },
+        {
+          "type": "input-text",
+          "id": "u:75a1f3f0c491",
+          "label": "身份证号",
+          "name": "idCard",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true,
+          "validationErrors": {
+            "isId": "请输入正确的身份证号"
+          },
+          "validateOnChange": true,
+          "validations": {
+            "isId": true
+          }
+        },
+        {
+          "type": "tpl",
+          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp体测表:",
+          "inline": true,
+          "wrapperComponent": "",
+          "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/uploadImg",
+            "method": "post"
+          },
+          "accept": ".jpeg, .jpg, .png, .gif",
+          "multiple": false,
+          "hideUploadButton": false,
+          "fixedSize": false,
+          "mode": "inline"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        },
+        {
+          "type": "container",
           "body": [
             {
-              "type": "grid",
-              "id": "u:747bced162da",
-              "columns": [
-              ]
-            },
-            {
               "type": "tpl",
-              "tpl": "学员信息",
+              "id": "u:8224ab367da8",
+              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
               "inline": true,
-              "wrapperComponent": "h2",
-              "id": "u:2dd6bf52bf62"
-
-            },
-            {
-              "type": "input-text",
-              "label": "所属用户",
-              "name": "userName",
-              "id": "u:b60e636c6098",
-              "size": "md",
-              "mode": "horizontal",
-              "value" :`${item.userName}`
-            },
-            {
-              "type": "input-text",
-              "label": "姓名",
-              "name": "name",
-              "id": "u:0b2463bbffe8",
-              "size": "md",
-              "mode": "horizontal",
-              "value" :`${item.name}`
-            },
-            {
-              "type": "input-date",
-              "label": "生日",
-              "name": "birthday",
-              "id": "u:9fe564fc31fc",
-              "embed": false,
-              "size": "md",
-              "mode": "horizontal",
-              "value" :`${item.birthday}`
-            },
-            {
-              "type": "select",
-              "label": "性别",
-              "name": "sex",
-              "options": [
-                {
-                  "label": "男",
-                  "value": "1"
-                },
-                {
-                  "label": "女",
-                  "value": "2"
-                }
-              ],
-              "id": "u:196a32204b25",
-              "multiple": false,
-              "size": "md",
-              "mode": "horizontal",
-              "value" :`${item.sex}`
-            },
-            {
-              "type": "input-text",
-              "label": "联系电话",
-              "name": "phone",
-              "id": "u:e7cf50e4f755",
-              "size": "md",
-              "mode": "horizontal",
-              "value" :`${item.phone}`
-            },
-            {
-              "type": "input-text",
-              "label": "身高",
-              "name": "height",
-              "id": "u:c69b5e6ae298",
-              "size": "md",
-              "mode": "horizontal",
-              "value" :`${item.height}`
-            },
-            {
-              "type": "input-text",
-              "label": "体重",
-              "name": "weight",
-              "id": "u:e1e5d1a95e71",
-              "size": "md",
-              "mode": "horizontal",
-              "value" :`${item.weight}`
-            },
-            {
-              "type": "input-text",
-              "label": "身份证号",
-              "name": "idCard",
-              "id": "u:75a1f3f0c491",
-              "size": "md",
-              "mode": "horizontal",
-              "value" :`${item.idCard}`
-            },
-            {
-              "type": "grid",
-              "columns": [
-              ],
-              "id": "u:c54439aa7c6f"
-            },
-            {
-              "type": "tpl",
-              "tpl": "体测表:",
-              "inline": true,
-              "wrapperComponent": "",
-              "id": "u:8224ab367da8"
-            },
-            {
-              "type": "image",
-              "id": "u:9b276f60fd0f",
-              "src" :`${item.lateralSurface}`
-            },
-            {
-              "type": "divider",
-              "id": "u:c8ddd15c688d"
-            },
-            {
-              "type": "tpl",
-              "id": "u:2dd6bf52bf62",
-              "tpl": "学员信息",
-              "inline": true,
-              "wrapperComponent": "h2"
-            },
-            {
-              "type": "input-date",
-              "label": "入学时间",
-              "name": "birthday",
-              "id": "u:9fe564fc31fc",
-              "embed": false,
-              "mode": "horizontal",
-              "size": "md"
-            },
-            {
-              "type": "input-date",
-              "label": "课时有效期",
-              "name": "birthday",
-              "id": "u:fe7e8d2223a3",
-              "embed": false,
-              "mode": "inline",
-              "size": "md"
+              "wrapperComponent": ""
             },
             {
               "type": "button",
-              "label": "按钮",
+              "id": "u:783ce71739db",
+              "label": "保存",
               "onEvent": {
                 "click": {
                   "actions": [
                     {
-                      "args": {},
+                      "componentId": "u:7c5f75a3b7b5",
+                      "args": {
+                      },
+                      "outputVar": "responseResult",
+                      "actionType": "submit"
+                    },
+                    {
+                      "args": {
+                      },
+                      "script": "parent.layer.close(window.parent.TStudent.layerIndex);\n\n                    window.parent.TStudent.table.refresh();",
+                      "actionType": "custom"
+                    }
+                  ]
+                }
+              },
+              "level": "info"
+            },
+            {
+              "type": "tpl",
+              "id": "u:8224ab367da8",
+              "tpl": "&nbsp&nbsp&nbsp",
+              "inline": true,
+              "wrapperComponent": ""
+            },
+            {
+              "type": "button",
+              "id": "u:008bc32396cc",
+              "label": "取消",
+              "onEvent": {
+                "click": {
+                  "actions": [
+                    {
+                      "args": {
+                      },
                       "script": "parent.layer.close(window.parent.TStudent.layerIndex);\nconsole.log(\"===关闭\")",
                       "actionType": "custom"
                     }
                   ]
                 }
               },
-              "id": "u:e4351e254501",
-              "block": false,
-              "size": "sm"
+              "block": false
+            }
+          ],
+          "style": {
+            "position": "static",
+            "display": "block"
+          },
+          "id": "u:59d68a32f7fd"
+        },
+        {
+          "type": "divider",
+          "id": "u:c8ddd15c688d"
+        },
+        {
+          "type": "tpl",
+          "id": "u:2dd6bf52bf62",
+          "tpl": "学员信息",
+          "inline": true,
+          "wrapperComponent": "h2"
+        },
+        {
+          "type": "input-date",
+          "id": "u:9fe564fc31fc",
+          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp入学时间:",
+          "name": "birthday",
+          "embed": false,
+          "mode": "inline",
+          "size": "md",
+          "value":`${studentClassInfo.inDate}`
+        },
+        {
+          "type": "tpl",
+          "id": "u:8224ab367da8",
+          "tpl": "&nbsp&nbsp",
+          "inline": true,
+          "wrapperComponent": ""
+        },
+        {
+          "type": "service",
+          "id": "u:59d68a32f7fd",
+          "body": [
+            {
+              "type": "tpl",
+              "id": "u:8224ab367da8",
+              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+              "inline": true,
+              "wrapperComponent": "",
+              "style": {
+                "paddingBottom": "100",
+                "marginBottom": "100"
+              }
             },
             {
-              "type": "button",
-              "label": "按钮",
-              "id":"ttt",
-              "onEvent": {
-                "click": {
-                  "actions": [
-                  ]
-                }
-              },
-              "id": "u:301c5568d984",
-              "block": false,
-              "size": "sm"
+              "type": "tpl",
+              "id": "u:6653713899d6",
+              "tpl": "课时有效期:",
+              "inline": true,
+              "wrapperComponent": "",
+              "style": {
+                "paddingBottom": "100",
+                "marginBottom": "100"
+              }
             },
             {
-              "type": "input-text",
-              "label": "总课时数",
-              "name": "idCard",
-              "id": "u:75a1f3f0c491",
-              "mode": "horizontal",
-              "size": "md"
-            },
-            {
-              "type": "input-text",
-              "label": "已学课时数",
-              "name": "idCard",
-              "id": "u:885bcd604fdd",
-              "mode": "horizontal",
-              "size": "md"
-            },
-            {
-              "type": "input-text",
-              "label": "剩余课时数",
-              "name": "idCard",
-              "id": "u:0b490e767715",
-              "mode": "horizontal",
-              "size": "md"
-            },
-            {
-              "type": "input-text",
-              "label": "赠送课时数",
-              "name": "idCard",
-              "id": "u:9c67ae2b5106",
-              "mode": "horizontal",
-              "size": "md"
+              "type": "date",
+              "id": "u:5126d1e417f2",
+              "valueFormat": "YYYY-MM-DD",
+              "format": "YYYY-MM-DD",
+              "name":"useTime"
             },
             {
               "type": "tpl",
               "id": "u:8224ab367da8",
-              "tpl": "已报名课程:",
+              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+              "inline": true,
+              "wrapperComponent": ""
+            },
+            {
+              "type": "button",
+              "id": "u:eb0bf26b811c",
+              "label": "更改有效期",
+              "onEvent": {
+                "click": {
+                  "actions": [
+                    {
+                      "actionType": "dialog",
+                      "dialog": {
+                        "type": "form",
+                        "title": "",
+                        "body": [
+                          {
+                            "type": "form",
+                            "title": "",
+                            "body": [
+                              {
+                                "type": "tpl",
+                                "id": "u:ad3ad29f909f",
+                                "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp更改有效期",
+                                "inline": true,
+                                "wrapperComponent": "h3"
+                              },
+                              {
+                                "type": "input-text",
+                                "label": "id",
+                                "name": "id",
+                                "id": "u:eb67fad3f986",
+                                "hidden": true
+                              },
+                              {
+                                "type": "input-date",
+                                "label": "请选择时间:",
+                                "name": "date",
+                                "id": "u:b987087f666d",
+                                "description": "",
+                                "placeholder": "请选择时间",
+                                "format": "YYYY-MM-DD",
+                                "inputFormat": "YYYY-MM-DD"
+                              },
+                              {
+                                "type": "input-image",
+                                "label": "上传申请凭证:",
+                                "name": "pleasePic",
+                                "autoUpload": true,
+                                "proxy": true,
+                                "uploadType": "fileReceptor",
+                                "imageClassName": "r w-full",
+                                "id": "u:301ea2de9546",
+                                "accept": ".jpeg, .jpg, .png, .gif",
+                                "multiple": false,
+                                "hideUploadButton": false,
+                                "receiver": {
+                                  "url": "/mgr/uploadImg",
+                                  "method": "post"
+                                },
+                                "value": "https://we-park-life.oss-cn-beijing.aliyuncs.com/img/99325878956443d68bb835145a8dca49.png"
+                              },
+                              {
+                                "type": "input-image",
+                                "id": "u:8ead1783a724",
+                                "label": "上传申请凭证:",
+                                "name": "passPic",
+                                "autoUpload": true,
+                                "proxy": true,
+                                "uploadType": "fileReceptor",
+                                "imageClassName": "r w-full",
+                                "accept": ".jpeg, .jpg, .png, .gif",
+                                "multiple": false,
+                                "hideUploadButton": false,
+                                "receiver": {
+                                  "url": "/mgr/uploadImg",
+                                  "method": "post"
+                                },
+                                "value": "https://we-park-life.oss-cn-beijing.aliyuncs.com/img/99325878956443d68bb835145a8dca49.png"
+                              },
+                              {
+                                "type": "container",
+                                "id": "u:59d68a32f7fd",
+                                "body": [
+                                  {
+                                    "type": "tpl",
+                                    "id": "u:8224ab367da8",
+                                    "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+                                    "inline": true,
+                                    "wrapperComponent": ""
+                                  },
+                                  {
+                                    "type": "button",
+                                    "id": "u:783ce71739db",
+                                    "label": "保存",
+                                    "onEvent": {
+                                      "click": {
+                                        "actions": [
+                                          {
+                                            "componentId": "u:044fac037276",
+                                            "actionType": "submit"
+                                          },
+                                          {
+                                            "actionType": "reload",
+                                            "componentId": "u:59d68a32f7fd",
+                                            "dataMergeMode": "merge"
+                                          }
+                                        ]
+                                      }
+                                    },
+                                    "level": "info"
+                                  },
+                                  {
+                                    "type": "tpl",
+                                    "id": "u:8224ab367da8",
+                                    "tpl": "&nbsp&nbsp&nbsp",
+                                    "inline": true,
+                                    "wrapperComponent": ""
+                                  },
+                                  {
+                                    "type": "button",
+                                    "id": "u:008bc32396cc",
+                                    "label": "取消",
+                                    "onEvent": {
+                                      "click": {
+                                        "actions": [
+                                          {
+                                            "actionType": "closeDialog"
+                                          }
+                                        ]
+                                      }
+                                    },
+                                    "block": false
+                                  }
+                                ],
+                                "style": {
+                                  "position": "static",
+                                  "display": "block"
+                                }
+                              }
+                            ],
+                            "id": "u:c2157dea4513",
+                            "api": {
+                              "url": "/tStudent/updateClassTime",
+                              "method": "post",
+                              "requestAdaptor": "",
+                              "adaptor": "",
+                              "messages": {
+                              },
+                              "dataType": "form-data"
+                            }
+                          }
+                        ],
+                        "showCloseButton": true,
+                        "showErrorMsg": true,
+                        "showLoading": true,
+                        "className": "app-popover",
+                        "id": "u:044fac037276",
+                        "closeOnEsc": false
+                      }
+                    }
+                  ]
+                }
+              },
+              "block": false,
+              "size": "xs",
+              "level": "info"
+            },
+            {
+              "type": "tpl",
+              "id": "u:8224ab367da8",
+              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
               "inline": true,
               "wrapperComponent": ""
             },
             {
               "type": "button",
               "id": "u:e4351e254501",
-              "label": "按钮",
+              "label": "变更记录",
               "onEvent": {
                 "click": {
                   "actions": [
-                  ]
-                }
-              },
-              "block": false,
-              "size": "sm"
-            },
-            {
-              "type": "button",
-              "id": "u:ea5e20546af6",
-              "label": "按钮",
-              "onEvent": {
-                "click": {
-                  "actions": [
-                  ]
-                }
-              },
-              "block": false,
-              "size": "sm"
-            },
-            {
-              "type": "crud",
-              "id": "u:109d99e159cd",
-              "syncLocation": false,
-              "api": {
-                "method": "get",
-                "url": ""
-              },
-              "columns": [
-                {
-                  "name": "id",
-                  "label": "ID",
-                  "type": "text",
-                  "id": "u:21721a4d89f6"
-                },
-                {
-                  "type": "text",
-                  "label": "课程名称",
-                  "id": "u:7f42dca56223"
-                },
-                {
-                  "type": "text",
-                  "label": "课程类型",
-                  "id": "u:3448716fbf69"
-                },
-                {
-                  "type": "date",
-                  "label": "报名时间",
-                  "id": "u:fabf6836f645"
-                },
-                {
-                  "type": "text",
-                  "label": "总课时数",
-                  "id": "u:29594df9f5ac"
-                },
-                {
-                  "type": "text",
-                  "label": "已上课时数",
-                  "id": "u:d5c9d7549565"
-                },
-                {
-                  "type": "text",
-                  "label": "剩余课时数",
-                  "id": "u:57f34a127f19"
-                },
-                {
-                  "type": "operation",
-                  "label": "操作",
-                  "buttons": [
                     {
-                      "type": "button",
-                      "label": "删除",
-                      "actionType": "ajax",
-                      "level": "link",
-                      "className": "text-danger",
-                      "confirmText": "确定要删除?",
-                      "api": {
-                        "method": "post",
-                        "url": ""
-                      },
-                      "id": "u:0102419e28c2"
-                    },
-                    {
-                      "label": "查看",
-                      "type": "button",
                       "actionType": "dialog",
-                      "level": "link",
                       "dialog": {
-                        "title": "查看详情",
-                        "body": {
-                          "type": "form",
-                          "api": "xxx/update",
-                          "body": [
-                            {
-                              "name": "id",
-                              "label": "ID",
-                              "type": "static"
+                        "type": "form",
+                        "title": "弹框标题",
+                        "body": [
+                          {
+                            "type": "input-text",
+                            "label": "id",
+                            "name": "id",
+                            "id": "u:0a5bc6f58ee8"
+                          },
+                          {
+                            "type": "crud",
+                            "syncLocation": false,
+                            "api": {
+                              "method": "get",
+                              "url": "/tStudent/getHisory/$id"
                             },
-                            {
-                              "name": "engine",
-                              "label": "渲染引擎",
-                              "type": "static"
+                            "columns": [
+                              {
+                                "name": "insertTime",
+                                "label": "操作时间",
+                                "type": "date",
+                                "id": "u:b652786dc9df"
+                              },
+                              {
+                                "type": "text",
+                                "label": "操作人",
+                                "name": "createBy",
+                                "id": "u:88bf448f69b0"
+                              },
+                              {
+                                "type": "image",
+                                "label": "申请凭证",
+                                "name": "picPlease",
+                                "id": "u:b22cfb737009"
+                              },
+                              {
+                                "type": "image",
+                                "label": "同意凭证",
+                                "name": "picPass",
+                                "id": "u:2a9071d0bda1"
+                              }
+                            ],
+                            "bulkActions": [
+                            ],
+                            "itemActions": [
+                            ],
+                            "id": "u:bfea49b7b171",
+                            "perPageAvailable": [
+                              10
+                            ],
+                            "messages": {
                             }
-                          ]
-                        }
-                      },
-                      "id": "u:e2e4d6c5e962"
-                    },
-                    {
-                      "label": "编辑",
-                      "type": "button",
-                      "actionType": "dialog",
-                      "level": "link",
-                      "dialog": {
-                        "title": "编辑",
-                        "body": {
-                          "type": "form",
-                          "api": "xxx/update",
-                          "body": [
-                            {
-                              "name": "id",
-                              "label": "ID",
-                              "type": "input-text"
-                            },
-                            {
-                              "name": "engine",
-                              "label": "渲染引擎",
-                              "type": "input-text"
-                            }
-                          ]
-                        }
-                      },
-                      "id": "u:5ea94f031686"
+                          }
+                        ],
+                        "showCloseButton": true,
+                        "showErrorMsg": true,
+                        "showLoading": true,
+                        "className": "app-popover",
+                        "id": "u:c4e97065bccb"
+                      }
                     }
-                  ],
-                  "id": "u:13c653566505"
+                  ]
                 }
-              ],
-              "bulkActions": [
-              ],
-              "itemActions": [
-              ],
-              "features": [
-                "delete",
-                "view",
-                "update"
+              },
+              "block": false,
+              "size": "xs",
+              "level": "info"
+            },
+            {
+              "type": "tpl",
+              "id": "u:8224ab367da8",
+              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+              "inline": true,
+              "wrapperComponent": ""
+            }
+          ],
+          "style": {
+            "position": "static",
+            "display": "inline-block"
+          },
+          "isFixedHeight": false,
+          "isFixedWidth": false,
+          "wrapperComponent": "div",
+          "messages": {
+          },
+          "api": {
+            "url": "/tStudent/getUseTime/$id",
+            "method": "get"
+          }
+        },
+        {
+          "type": "input-text",
+          "id": "u:8c717c6b4700",
+          "label": "总课时数:",
+          "name": "idCard0",
+          "mode": "horizontal",
+          "size": "md",
+          "themeCss": {
+            "labelClassName": {
+              "padding-and-margin:default": {
+                "marginTop": "",
+                "marginRight": "",
+                "marginBottom": "",
+                "marginLeft": ""
+              }
+            }
+          },
+          "labelClassName": "labelClassName-49dd1bda82f4",
+          "value":`${studentClassInfo.totalHours}`
+        },
+        {
+          "type": "input-text",
+          "id": "u:885bcd604fdd",
+          "label": "已学课时数:",
+          "name": "idCard1",
+          "mode": "horizontal",
+          "size": "md",
+          "value":`${studentClassInfo.hasHours}`
+        },
+        {
+          "type": "input-text",
+          "id": "u:0b490e767715",
+          "label": "剩余课时数",
+          "name": "idCard2",
+          "mode": "horizontal",
+          "size": "md",
+          "value":`${studentClassInfo.restHours}`
+        },
+        {
+          "type": "input-text",
+          "id": "u:9c67ae2b5106",
+          "label": "赠送课时数",
+          "name": "idCard3",
+          "mode": "horizontal",
+          "size": "md",
+          "value":`${studentClassInfo.giftHours}`
+        },
+        {
+          "type": "crud",
+          "syncLocation": false,
+          "api": {
+            "method": "get",
+            "url": "/tStudent/classList/$id"
+          },
+          "columns": [
+            {
+              "name": "className",
+              "label": "课程名称",
+              "type": "text",
+              "id": "u:eff92c911684"
+            },
+            {
+              "type": "mapping",
+              "label": "课程类型",
+              "name": "classType",
+              "id": "u:2f1091a380a8",
+              "map": {
+                "*": "通配值"
+              }
+            },
+            {
+              "type": "date",
+              "label": "报名时间",
+              "name": "reportDate",
+              "id": "u:36ab5e408a48"
+            },
+            {
+              "type": "text",
+              "label": "总课时数",
+              "name": "totalTime",
+              "id": "u:fba93556fb2e"
+            },
+            {
+              "type": "text",
+              "label": "已上课时数",
+              "name": "haveTime",
+              "id": "u:b55a5ac7f49d"
+            },
+            {
+              "type": "text",
+              "label": "剩余课时数",
+              "name": "restTime",
+              "id": "u:abb78021df40"
+            },
+            {
+              "type": "operation",
+              "id": "u:bbd866281f8f",
+              "buttons": [
+                {
+                  "type": "button",
+                  "label": "转移",
+                  "onEvent": {
+                    "click": {
+                      "actions": [
+                        {
+                          "actionType": "dialog",
+                          "dialog": {
+                            "type": "form",
+                            "title": "弹框标题",
+                            "body": [
+                              {
+                                "type": "select",
+                                "label": "请选择被转移学员",
+                                "name": "select",
+                                "id": "u:80a2266885a3",
+                                "multiple": false,
+                                "mode": "horizontal",
+                                "size": "lg",
+                                "horizontal": {
+                                  "leftFixed": "lg"
+                                },
+                                "source": {
+                                  "url": "/tStudent/getUserSlect/$id",
+                                  "method": "get"
+                                },
+                                "labelField": "value",
+                                "valueField": "id"
+                              },
+                              {
+                                "type": "input-text",
+                                "label": "id",
+                                "name": "id",
+                                "id": "u:1e2c394fa299"
+                              },
+                              {
+                                "type": "tpl",
+                                "tpl": "对,你刚刚点击了",
+                                "wrapperComponent": "",
+                                "inline": false,
+                                "id": "u:7c4a5a6b60d0"
+                              }
+                            ],
+                            "showCloseButton": true,
+                            "showErrorMsg": true,
+                            "showLoading": true,
+                            "className": "app-popover",
+                            "id": "u:a612413d932d"
+                          }
+                        }
+                      ]
+                    }
+                  },
+                  "id": "u:fcd7f36c5f88",
+                  "level": "link"
+                },
+                {
+                  "type": "button",
+                  "label": "赠课",
+                  "onEvent": {
+                    "click": {
+                      "actions": [
+                        {
+                          "actionType": "dialog",
+                          "dialog": {
+                            "type": "form",
+                            "title": "弹框标题",
+                            "body": [
+                              {
+                                "type": "input-text",
+                                "label": "用户姓名:",
+                                "name": "text",
+                                "id": "u:c260d6dbc161",
+                                "mode": "horizontal"
+                              },
+                              {
+                                "type": "input-text",
+                                "label": "用户电话",
+                                "name": "phone",
+                                "id": "u:c00d1204430d",
+                                "mode": "horizontal"
+                              },
+                              {
+                                "type": "service",
+                                "id": "u:f6ab941852f1",
+                                "body": [
+                                  {
+                                    "type": "select",
+                                    "id": "u:a7766815916b",
+                                    "label": "选择学员",
+                                    "name": "select",
+                                    "multiple": false,
+                                    "mode": "horizontal",
+                                    "size": "lg",
+                                    "value": ""
+                                  }
+                                ]
+                              },
+                              {
+                                "type": "button",
+                                "label": "按钮",
+                                "onEvent": {
+                                  "click": {
+                                    "actions": [
+                                    ]
+                                  }
+                                },
+                                "id": "u:5fcf1222f6ea"
+                              },
+                              {
+                                "type": "input-text",
+                                "label": "id",
+                                "name": "id",
+                                "id": "u:fe0979ee23df"
+                              },
+                              {
+                                "type": "tpl",
+                                "tpl": "对,你刚刚点击了",
+                                "wrapperComponent": "",
+                                "inline": false,
+                                "id": "u:5fe4b4c9e423"
+                              }
+                            ],
+                            "showCloseButton": true,
+                            "showErrorMsg": true,
+                            "showLoading": true,
+                            "className": "app-popover",
+                            "id": "u:552bd1b3464d"
+                          }
+                        }
+                      ]
+                    }
+                  },
+                  "id": "u:ae1e6e73beb9",
+                  "level": "link"
+                }
               ]
             }
           ],
-          "id": "u:7c5f75a3b7b5",
-          "actions": [
-          ]
+          "bulkActions": [
+            {
+              "type": "tpl",
+              "id": "u:8224ab367da8",
+              "inline": true,
+              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp已报名课程:",
+              "wrapperComponent": ""
+            },
+            {
+              "label": "ajax请求",
+              "type": "button",
+              "actionType": "ajax",
+              "api": {
+                "method": "get",
+                "url": "/ttt",
+                "data": {
+                  "item": "$items"
+                },
+                "id": "u:f706584d4a0c"
+              },
+              "id": "u:38a6f5402e72"
+            },
+            {
+              "label": "退费",
+              "type": "button",
+              "id": "u:4b1f37ea569c"
+            },
+            {
+              "label": "退费",
+              "type": "button",
+              "id": "u:6997f0c17d7b"
+            }
+          ],
+          "itemActions": [
+          ],
+          "features": [
+            "update",
+            "view",
+            "bulkUpdate",
+            "delete"
+          ],
+          "id": "u:88517068101f",
+          "perPageAvailable": [
+            10
+          ],
+          "messages": {
+          },
+          "headerToolbar": [
+            {
+              "type": "bulk-actions",
+              "align": "left"
+            }
+          ],
+          "columnsTogglable": false,
+          "affixHeader": true,
+          "source": ""
+        },
+        {
+          "type": "container",
+          "body": [
+          ],
+          "style": {
+            "position": "static",
+            "display": "block"
+          },
+          "id": "u:1afed7a178d1"
         }
       ],
-      "id": "u:2cb85ab1ec8c",
-      "showCloseButton": true,
-      "closeOnEsc": true,
-      "showErrorMsg": true,
-      "showLoading": true,
-      "dataMapSwitch": false,
-      "size": "md",
-      "aside": [
-      ]
+      "id": "u:7c5f75a3b7b5",
+      "api": {
+        "method": "post",
+        "url": "/tStudent/update",
+        "messages": {
+        }
+      },
+      "actions": [
+      ],
+      "mode": "normal",
+      "validateOnChange": true
     };
     let amisScoped = amis.embed('#root', amisJSON);
 
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit_first.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit_first.html
new file mode 100644
index 0000000..41683c9
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit_first.html
@@ -0,0 +1,362 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+  <meta charset="UTF-8" />
+  <title>amis demo</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta
+          name="viewport"
+          content="width=device-width, initial-scale=1, maximum-scale=1"
+  />
+  <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
+  <link rel="stylesheet" href="${ctxPath}/sdk/sdk.css" />
+  <link rel="stylesheet" href="${ctxPath}/sdk/helper.css" />
+  <link rel="stylesheet" href="${ctxPath}/sdk/iconfont.css" />
+  <!-- 这是默认主题所需的,如果是其他主题则不需要 -->
+  <!-- 从 1.1.0 开始 sdk.css 将不支持 IE 11,如果要支持 IE11 请引用这个 css,并把前面那个删了 -->
+  <!-- <link rel="stylesheet" href="sdk-ie11.css" /> -->
+  <!-- 不过 amis 开发团队几乎没测试过 IE 11 下的效果,所以可能有细节功能用不了,如果发现请报 issue -->
+  <style>
+    html,
+    body,
+    .app-wrapper {
+      position: relative;
+      width: 100%;
+      height: 100%;
+      margin: 0;
+      padding: 0;
+    }
+  </style>
+</head>
+<body>
+<div id="root" class="app-wrapper"></div>
+<script src="${ctxPath}/sdk/sdk.js"></script>
+<script type="text/javascript">
+  (function () {
+    let amis = amisRequire('amis/embed');
+    // 通过替换下面这个配置来生成不同页面
+    let amisJSON = {
+      "type": "form",
+      "body": [
+        {
+          "type": "grid",
+          "id": "u:747bced162da",
+          "columns": [
+          ]
+        },
+        {
+          "type": "input-text",
+          "id": "u:32cb99df3eb8",
+          "label": "id",
+          "name": "id",
+          "size": "md",
+          "mode": "horizontal",
+          "hidden": true,
+          "value":`${item.id!}`
+        },
+
+        {
+          "type": "tpl",
+          "id": "u:2dd6bf52bf62",
+          "tpl": "学员信息",
+          "inline": true,
+          "wrapperComponent": "h2"
+        },
+        {
+          "type": "input-text",
+          "label": "所属用户",
+          "id": "u:b60e636c6098",
+          "name": "userName",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true,
+          "disabled": true,
+          "value":`${item.userName!}`
+        },
+        {
+          "type": "input-text",
+          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp姓名",
+          "id": "u:0b2463bbffe8",
+          "name": "name",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true,
+          "value":`${item.name!}`
+        },
+        {
+          "type": "input-date",
+          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp生日",
+          "name": "birthday",
+          "id": "u:9fe564fc31fc",
+          "size": "md",
+          "mode": "horizontal",
+          "embed": false,
+          "format": "YYYY-MM-DD hh:mm:ss",
+          "inputFormat": "YYYY-MM-DD",
+          "required": true,
+          "value":`${item.birthday!}`
+        },
+        {
+          "type": "select",
+          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp性别",
+          "name": "sex",
+          "id": "u:196a32204b25",
+          "size": "md",
+          "mode": "horizontal",
+          "options": [
+            {
+              "label": "男",
+              "value": "1"
+            },
+            {
+              "label": "女",
+              "value": "2"
+            }
+          ],
+          "multiple": false,
+          "required": true,
+          "value":`${item.sex!}`
+        },
+        {
+          "type": "input-text",
+          "label": "联系电话",
+          "name": "phone",
+          "id": "u:e7cf50e4f755",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true,
+          "validationErrors": {
+            "isPhoneNumber": "请输入正确的手机号"
+          },
+          "validateOnChange": true,
+          "validations": {
+            "isPhoneNumber": true
+          },
+          "value":`${item.phone!}`
+        },
+        {
+          "type": "input-text",
+          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp身高",
+          "name": "height",
+          "id": "u:c69b5e6ae298",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true,
+          "validationErrors": {
+            "maximum": "请输入正确的身高",
+            "isNumeric": "请输入数字"
+          },
+          "validateOnChange": true,
+          "validations": {
+            "maximum": 250,
+            "isNumeric": true
+          },
+          "addOn": {
+            "label": "cm",
+            "type": "text"
+          },
+          "value":`${item.height!}`
+        },
+        {
+          "type": "input-text",
+          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp体重",
+          "name": "weight",
+          "id": "u:e1e5d1a95e71",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true,
+          "addOn": {
+            "label": "kg",
+            "type": "text"
+          },
+          "validationErrors": {
+            "maximum": "请输入正确的身高",
+            "isNumeric": "请输入数字"
+          },
+          "validateOnChange": true,
+          "validations": {
+            "maximum": 250,
+            "isNumeric": true
+          },
+          "value":`${item.weight!}`
+        },
+        {
+          "type": "input-text",
+          "id": "u:75a1f3f0c491",
+          "label": "身份证号",
+          "name": "idCard",
+          "size": "md",
+          "mode": "horizontal",
+          "required": true,
+          "validationErrors": {
+            "isId": "请输入正确的身份证号"
+          },
+          "validateOnChange": true,
+          "validations": {
+            "isId": true
+          },
+          "value":`${item.idCard!}`
+        },
+        {
+          "type": "tpl",
+          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp体测表:",
+          "inline": true,
+          "wrapperComponent": "",
+          "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/uploadImg",
+            "method": "post"
+          },
+          "accept": ".jpeg, .jpg, .png, .gif",
+          "multiple": false,
+          "hideUploadButton": false,
+          "fixedSize": false,
+          "mode": "inline",
+          "value":`${pic1!}`
+        },
+        {
+          "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!}`
+        },
+        {
+          "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!}`
+        },
+        {
+          "type": "container",
+          "body": [
+            {
+              "type": "tpl",
+              "id": "u:8224ab367da8",
+              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
+              "inline": true,
+              "wrapperComponent": ""
+            },
+            {
+              "type": "button",
+              "id": "u:783ce71739db",
+              "label": "保存",
+              "onEvent": {
+                "click": {
+                  "actions": [
+                    {
+                      "componentId": "u:7c5f75a3b7b5",
+                      "args": {
+                      },
+                      "outputVar": "responseResult",
+                      "actionType": "submit"
+                    },
+                    {
+                      "args": {
+                      },
+                      "script": "parent.layer.close(window.parent.TStudent.layerIndex);\n\n                    window.parent.TStudent.table.refresh();",
+                      "actionType": "custom"
+                    }
+                  ]
+                }
+              },
+              "level": "info"
+            },
+            {
+              "type": "tpl",
+              "id": "u:8224ab367da8",
+              "tpl": "&nbsp&nbsp&nbsp",
+              "inline": true,
+              "wrapperComponent": ""
+            },
+            {
+              "type": "button",
+              "id": "u:008bc32396cc",
+              "label": "取消",
+              "onEvent": {
+                "click": {
+                  "actions": [
+                    {
+                      "args": {
+                      },
+                      "script": "parent.layer.close(window.parent.TStudent.layerIndex);\nconsole.log(\"===关闭\")",
+                      "actionType": "custom"
+                    }
+                  ]
+                }
+              },
+              "block": false
+            }
+          ],
+          "style": {
+            "position": "static",
+            "display": "block"
+          },
+          "id": "u:59d68a32f7fd"
+        }
+      ],
+      "id": "u:7c5f75a3b7b5",
+      "api": {
+        "method": "post",
+        "url": "/tStudent/update",
+        "messages": {
+        }
+      },
+      "actions": [
+      ],
+      "title": "编辑",
+      "mode": "normal",
+      "validateOnChange": true
+    };
+    let amisScoped = amis.embed('#root', amisJSON);
+
+
+  })();
+
+  function test(){
+    console.log("测试成功")
+  }
+
+  var myButton = document.getElementById("ttt");
+  myButton.addEventListener("click",test);
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop.js
index 87a8a3e..77cc6f7 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop.js
@@ -15,11 +15,17 @@
 TCompetition.initColumn = function () {
     return [
         {field: 'selectItem', radio: true},
+        {title: '门店类型', field: 'type', visible: role==1?true:false, align: 'center', valign: 'middle',
+            formatter:function (data) {
+                return {1:"平台门店",2:"运营商门店"}[data]
+
+            }
+        },
+        {title: '所属运营商', field: 'province', visible: role==1?true:false, align: 'center', valign: 'middle'
+        },
         {title: '省', field: 'province', visible: role==1?true:false, align: 'center', valign: 'middle'
         },
         {title: '市', field: 'city', visible:  role==1?true:false, align: 'center', valign: 'middle'},
-        {title: '所属账号', field: 'account', visible:  role==1?true:false, align: 'center', valign: 'middle'
-        },
         {title:  '门店名称', field: 'name', visible: true, align: 'center', valign: 'middle'
         },
         {title:  '门店地址', field: 'address', visible: true, align: 'center', valign: 'middle'
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOther.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOther.js
new file mode 100644
index 0000000..0302161
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOther.js
@@ -0,0 +1,560 @@
+/**
+ * 车辆管理管理初始化
+ */
+var TCompetition = {
+    id: "TCompetitionOtherTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+var language =1
+var role =1
+/**
+ * 初始化表格的列
+ */
+TCompetition.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+        {title: '板块名称', field: 'name', visible: role==1?true:false, align: 'center', valign: 'middle',
+        },
+        {title: '排序', field: 'sort', visible: role==1?true:false, align: 'center', valign: 'middle',
+        },
+        {title: '状态', field: 'state', visible: role==1?true:false, align: 'center', valign: 'middle',
+            formatter:function (data) {
+                return {1:"开启",2:"关闭"}[data]
+
+            }
+        },
+    ];
+};
+function currentTime(timestamp){
+    var time = timestamp + '';
+    if(time.length != 13){
+        timestamp = timestamp * 1000;
+    }
+    var date = new Date(timestamp);;
+    var Y = date.getFullYear() + '-';
+    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+    var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
+
+    var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':';
+    var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':';
+    var s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds());
+    var strDate = Y + M + D + h + m + s;
+    return strDate
+}
+
+function currentTime1(timestamp){
+    var time = timestamp + '';
+    if(time.length != 13){
+        timestamp = timestamp * 1000;
+    }
+    var date = new Date(timestamp);;
+    var Y = date.getFullYear() + '-';
+    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+    var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
+
+    var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':';
+    var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':';
+    var s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds());
+    var strDate = Y + M + D ;
+    return strDate
+}
+/**
+ * 检查是否选中
+ */
+TCompetition.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+            Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        TCompetition.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加车辆管理
+ */
+TCompetition.openAddTCompetition = function (e) {
+    var index = layer.open({
+        type: 2,
+        title: '添加',
+        area: ['100%', '100%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tShop/tShop_add_one?id='+e
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 打开查看车辆管理详情
+ */
+TCompetition.openTCompetitionDetail = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title:'编辑',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tShop/tShop_update/' + TCompetition.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+TCompetition.info = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title:'详情',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tShop/tShop_info/' + TCompetition.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+TCompetition.gift = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title:'免费福利',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tShop/tShop_gift/' + TCompetition.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+TCompetition.indexSet = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title:'首页设置',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tShop/tShop_indexSet/' + TCompetition.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+/**
+ * 删除车辆管理
+ */
+TCompetition.delete = function () {
+    if (this.check()) {
+        var nickname = TCompetition.seItem.carLicensePlate;
+        if (nickname == "" || nickname == null || nickname == undefined){
+                nickname = "该车辆";
+        }else{
+            nickname = "【"+nickname+"】";
+        }
+        swal({
+           title: language==1?"您是否确认删除" + nickname + "?":(language==2?"Are you sure to delete the" + nickname + "?":"Apakah Anda pasti akan menghapus" + nickname + "?"),
+            text: language==1?"请谨慎操作!":(language==2?' Please operate with caution!':'Harap beroperasi dengan hati -hati!'),
+            type: "warning",
+            showCancelButton: true,
+            confirmButtonColor: "#DD6B55",
+            confirmButtonText: language==1?"删除":(language==2?'Delete':'Hapus'),
+            closeOnConfirm: true
+        }, function () {
+            var ajax = new $ax(Feng.ctxPath + "/TCompetition/delete", function (data) {
+                  if(language==1){
+                    swal("删除成功", "您已经成功删除了" + nickname + "。", "success");
+                }else if(language==2){
+                    swal("Delete succeeded!", "You have successfully deleted it" + nickname + "。", "success");
+                }else {
+                    swal("Hapus berhasil!", "Anda berhasil menghapus" + nickname + "。", "success");
+                }
+                TCompetition.table.refresh();
+            }, function (data) {
+                if(language==1){
+                    swal("删除失败", data.responseJSON.message + "!", "warning");
+                }else if(language==2){
+                    swal("Failed to delete", data.responseJSON.message + "!", "warning");
+                }else {
+                    swal("Hapus Gagal", data.responseJSON.message + "!", "warning");
+                }
+
+            });
+            ajax.set("TCompetitionId",TCompetition.seItem.id);
+            ajax.start();
+        });
+    }
+};
+TCompetition.oneChange = function (e) {
+    console.log(111)
+    var oneId=$(e).val();
+    var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){
+        if(data!=null){
+            if(language==1){
+                var content='<option value="">选择市</option>';
+            }else if(language==2){
+                var content='<option value="">Choose your franchisee</option>';
+            }else {
+                var content='<option value="">Pilih franchisee Anda</option>';
+            }
+            $.each(data, function(k,v) {
+                content += "<option value='"+v.code+"'>"+v.name+"</option>";
+            });
+            $("#cCode").empty().append(content);
+        }
+    });
+    ajax.set("oneId",oneId);
+    ajax.start();
+}
+TCompetition.oneChangeNext = function (e) {
+    var oneId=$(e).val();
+    var ajax = new $ax(Feng.ctxPath + "/tCompetition/oneChangeNext", function(data){
+        if(data!=null){
+            if(language==1){
+                var content='<option value="">选择账号</option>';
+            }else if(language==2){
+                var content='<option value="">Choose your franchisee</option>';
+            }else {
+                var content='<option value="">Pilih franchisee Anda</option>';
+            }
+            $.each(data, function(k,v) {
+                content += "<option value='"+v.id+"'>"+v.name+"</option>";
+            });
+            $("#account").empty().append(content);
+        }
+    });
+    ajax.set("oneId",oneId);
+    ajax.start();
+}
+
+TCompetition.freeze = function () {
+    if (this.check()) {
+        var ajax = new $ax(Feng.ctxPath + "/tShop/freeze", function (data) {
+            Feng.success("冻结成功!");
+            TCompetition.table.refresh();
+        }, function (data) {
+            Feng.error("冻结失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("id",this.seItem.id);
+        ajax.start();
+    }
+};
+TCompetition.unfreeze = function () {
+    if (this.check()) {
+        var ajax = new $ax(Feng.ctxPath + "/tShop/unfreeze", function (data) {
+            Feng.success("解冻成功!");
+            TCompetition.table.refresh();
+        }, function (data) {
+            Feng.error("解冻失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("id",this.seItem.id);
+        ajax.start();
+    }
+};
+TCompetition.reload = function () {
+    if (this.check()) {
+        let id = this.seItem.id
+        var operation = function(){
+            var ajax = new $ax(Feng.ctxPath + "/tCity/pwd", function (data) {
+                Feng.success("重置成功!");
+                TCompetition.table.refresh();
+            }, function (data) {
+                Feng.error("重置失败!" + data.responseJSON.message + "!");
+            });
+            ajax.set("id",id);
+            ajax.start();
+        }
+        Feng.confirm("确认重置密码?重置后密码为:a123456", operation);
+    }
+
+};
+
+TCompetition.saveAllImg = function (e) {
+    var id = $("#id").val()
+    var px1 = $("#px1").val()
+    var px2 = $("#px2").val()
+    var px3 = $("#px3").val()
+    var px4 = $("#px4").val()
+    var px5 = $("#px5").val()
+    var px6 = $("#px6").val()
+    var px7 = $("#px7").val()
+    var px8 = $("#px8").val()
+    var c1 = $("#c1").val()
+    var c2 = $("#c2").val()
+    var c3 = $("#c3").val()
+    var c4 = $("#c4").val()
+    var c5 = $("#c5").val()
+    var c6 = $("#c6").val()
+    var c7 = $("#7").val()
+    var c8 = $("#c8").val()
+    var r1 =  document.querySelector('input[name="r1"]').checked;
+    var r2 =  document.querySelector('input[name="r2"]').checked;
+    var r3 =  document.querySelector('input[name="r3"]').checked;
+    var r4 =  document.querySelector('input[name="r4"]').checked;
+    var r5 =  document.querySelector('input[name="r5"]').checked;
+    var r6 =  document.querySelector('input[name="r6"]').checked;
+    var r7 =  document.querySelector('input[name="r7"]').checked;
+    var r8 =  document.querySelector('input[name="r8"]').checked;
+    if(r1){
+        r1 =1
+    }else{
+        r1=0
+    }
+    if(r2){
+        r2 =1
+    }else{
+        r2=0
+    }
+    if(r3){
+        r3 =1
+    }else{
+        r3=0
+    }
+    if(r4){
+        r4 =1
+    }else{
+        r4=0
+    }
+    if(r5){
+        r5 =1
+    }else{
+        r5=0
+    }
+    if(r6){
+        r6 =1
+    }else{
+        r6=0
+    }
+    if(r7){
+        r7 =1
+    }else{
+        r7=0
+    }
+    if(r8){
+        r8 =1
+    }else{
+        r8=0
+    }
+
+    var ajax = new $ax(Feng.ctxPath + "/tShop/saveImgAll", function(data){
+        if(data.code == 200){
+            Feng.success("保存成功!");
+        }else{
+            Feng.error(data.msg);
+        }
+    },function(data){
+        Feng.error("保存失败!" + data.responseJSON.message + "!");
+
+    });
+    ajax.set("id",id);
+    ajax.set("px1",px1);
+    ajax.set("px2",px2);
+    ajax.set("px3",px3);
+    ajax.set("px4",px4);
+    ajax.set("px5",px5);
+    ajax.set("px6",px6);
+    ajax.set("px7",px7);
+    ajax.set("px8",px8);
+    ajax.set("c1",c1);
+    ajax.set("c2",c2);
+    ajax.set("c3",c3);
+    ajax.set("c4",c4);
+    ajax.set("c5",c5);
+    ajax.set("c6",c6);
+    ajax.set("c7",c7);
+    ajax.set("c8",c8);
+    ajax.set("r1",r1);
+    ajax.set("r2",r2);
+    ajax.set("r3",r3);
+    ajax.set("r4",r4);
+    ajax.set("r5",r5);
+    ajax.set("r6",r6);
+    ajax.set("r7",r7);
+    ajax.set("r8",r8);
+    ajax.start();
+}
+
+TCompetition.carInsurance = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: language==1?'车辆保险':(language==2?'Vehicle insurance':'Asuransi kendaraan'),
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/TCompetition/carInsurance?carId=' + TCompetition.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+
+
+/**
+ * 查询车辆管理列表
+ */
+TCompetition.search = function () {
+    var queryData = {};
+    queryData['provinceCode'] = $("#pCode").val();
+    queryData['cityCode'] = $("#cCode").val();
+    queryData['name'] = $("#name").val();
+    queryData['phone'] = $("#phone").val();
+    queryData['shopName'] = $("#shopName").val();
+    TCompetition.table.refresh({query: queryData});
+};
+
+TCompetition.resetSearch = function () {
+    $("#pCode").val("");
+    $("#cCode").val("");
+    $("#name").val("");
+    $("#phone").val("");
+    $("#shopName").val("");
+    TCompetition.search();
+};
+
+$(function () {
+    var defaultColunms = TCompetition.initColumn();
+
+    // 初始化图片上传
+    var carPhoto = new $WebUpload("c1");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c2");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c3");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c4");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c5");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c6");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c7");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c8");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("img");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var drivingLicensePhoto = new $WebUpload("drivingLicensePhoto");
+    drivingLicensePhoto.setUploadBarId("progressBar");
+    drivingLicensePhoto.init();
+
+    var table = new BSTable(TCompetition.id, "/tShop/listOne?id="+$("#id").val(), defaultColunms);
+    table.setPaginationType("server");
+    TCompetition.table = table.init();
+});
+
+/**
+ * 下载模板
+ */
+TCompetition.uploadCarModel = function () {
+    window.location.href = Feng.ctxPath + "/TCompetition/uploadCarModel";
+}
+
+var agreement = function(){
+    this.init = function(){
+        //模拟上传excel  
+        $("#uploadEventBtn").unbind("click").bind("click",function(){
+            $("#uploadEventFile").click();
+        });
+    };
+}
+/**
+ * 导入合同
+ */
+TCompetition.exporTCompetition = function () {
+    var uploadEventFile = $("#uploadEventFile").val();
+    if(uploadEventFile == ''){
+        if(language==1){
+            Feng.info("请选择Excel,再上传");
+        }else if(language==2){
+            Feng.info("Please select Excel and upload");
+        }else {
+            Feng.info("Silakan pilih Excel dan upload");
+        }
+    }else if(uploadEventFile.lastIndexOf(".xls")<0){//可判断以.xls和.xlsx结尾的excel  
+        if(language==1){
+            Feng.info("只能上传Excel文件");
+        }else if(language==2){
+            Feng.info("Only Excel files can be uploaded");
+        }else {
+            Feng.info("Hanya berkas Excel yang dapat diunggah");
+        }
+    }else{
+        var url = Feng.ctxPath + '/TCompetition/exporTCompetition';
+        var file = document.querySelector('input[name=file]').files[0];
+        var reader = new FileReader();
+        if (file) {
+            var formData = new FormData();
+            formData.append("myfile", file);
+            this.sendAjaxRequest(url, 'POST', formData);
+        }
+    }
+}
+TCompetition.sendAjaxRequest = function(url,type,data){
+    $.ajax({
+        url : url,
+        type : type,
+        data : data,
+        success : function(result) {
+            if(result.code==500) {
+                Feng.info(result.message);
+            }else {
+                if(language==1){
+                    Feng.success("导入成功!");
+                }else if(language==2){
+                    Feng.success("SUCCESSFUL IMPORT!");
+                }else {
+                    Feng.success("Import berhasil!");
+                }
+            }
+            TCompetition.table.refresh();
+        },
+        error : function() {
+            if(language==1){
+                Feng.error("excel上传失败!");
+            }else if(language==2){
+                Feng.error("Uploading excel Fails. Procedure!");
+            }else {
+                Feng.error("Gagal mengunggah excel!");
+            }
+        },
+        cache : false,
+        contentType : false,
+        processData : false
+    });
+};
+
+var agreement;
+$(function(){
+    agreement = new agreement();
+    agreement.init();
+});
+
+/**
+ * 导出车辆操作
+ */
+TCompetition.ouTCompetition = function () {
+    var operation = function() {
+        window.location.href = Feng.ctxPath + "/TCompetition/ouTCompetition";
+    };
+    if(language==1){
+        Feng.confirm("是否确认导出车辆信息?", operation);
+    }else if(language==2){
+        Feng.confirm("Are you sure to export vehicle information?", operation);
+    }else {
+        Feng.confirm("Apakah Anda pasti akan mengekspor informasi kendaraan?", operation);
+    }
+}
\ No newline at end of file
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherOne.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherOne.js
new file mode 100644
index 0000000..1897c1c
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherOne.js
@@ -0,0 +1,724 @@
+/**
+ * 车辆管理管理初始化
+ */
+var TCompetition = {
+    id: "TCompetitionOtherTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+var language =1
+var role =1
+/**
+ * 初始化表格的列
+ */
+TCompetition.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+        {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle',
+        },
+        {title: '图片', field: 'url', visible: role==1?true:false, align: 'center', valign: 'middle',
+        },
+        {title: '跳转模块', field: 'name', visible: role==1?true:false, align: 'center', valign: 'middle',
+        },
+        {title: '跳转页面', field: 'page', visible: role==1?true:false, align: 'center', valign: 'middle',
+        },
+        {title: '排序', field: 'sort', visible: role==1?true:false, align: 'center', valign: 'middle',
+        },
+        {title: '操作', visible: role==1?true:false, align: 'center', valign: 'middle',
+            formatter:function (value,row) {
+                return '<a href="javascript:void(0);" style="color: blue" onclick="TCompetition.delete1(' + row.id +')">删除 </a>  <a href="javascript:void(0);" style="color: blue" onclick="TCompetition.openTCompetitionDetail(' + row.id +')">编辑</a>'
+            }
+        },
+    ];
+};
+function currentTime(timestamp){
+    var time = timestamp + '';
+    if(time.length != 13){
+        timestamp = timestamp * 1000;
+    }
+    var date = new Date(timestamp);;
+    var Y = date.getFullYear() + '-';
+    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+    var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
+
+    var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':';
+    var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':';
+    var s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds());
+    var strDate = Y + M + D + h + m + s;
+    return strDate
+}
+
+function currentTime1(timestamp){
+    var time = timestamp + '';
+    if(time.length != 13){
+        timestamp = timestamp * 1000;
+    }
+    var date = new Date(timestamp);;
+    var Y = date.getFullYear() + '-';
+    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+    var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
+
+    var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':';
+    var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':';
+    var s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds());
+    var strDate = Y + M + D ;
+    return strDate
+}
+
+TCompetition.delete1= function (e) {
+    console.log(e)
+    var ajax = new $ax(Feng.ctxPath + "/tShop/deleteOne", function (data) {
+        Feng.success("删除成功!");
+        TCompetition.table.refresh();
+    }, function (data) {
+        Feng.error("删除失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("id",e);
+    ajax.start();
+}
+/**
+ * 检查是否选中
+ */
+TCompetition.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+            Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        TCompetition.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加车辆管理
+ */
+TCompetition.openAdd = function () {
+    var index = layer.open({
+        type: 2,
+        title: '添加内容',
+        area: ['100%', '100%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tShop/tShop_add_two?id='+$("#id").val()
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 打开查看车辆管理详情
+ */
+TCompetition.openTCompetitionDetail = function (e) {
+        var index = layer.open({
+            type: 2,
+            title:'编辑',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tShop/tShop_update_one/' + e
+        });
+        this.layerIndex = index;
+};
+TCompetition.info = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title:'详情',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tShop/tShop_info/' + TCompetition.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+TCompetition.gift = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title:'免费福利',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tShop/tShop_gift/' + TCompetition.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+TCompetition.indexSet = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title:'首页设置',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tShop/tShop_indexSet/' + TCompetition.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+/**
+ * 删除车辆管理
+ */
+TCompetition.delete = function () {
+    if (this.check()) {
+        var nickname = TCompetition.seItem.carLicensePlate;
+        if (nickname == "" || nickname == null || nickname == undefined){
+                nickname = "该车辆";
+        }else{
+            nickname = "【"+nickname+"】";
+        }
+        swal({
+           title: language==1?"您是否确认删除" + nickname + "?":(language==2?"Are you sure to delete the" + nickname + "?":"Apakah Anda pasti akan menghapus" + nickname + "?"),
+            text: language==1?"请谨慎操作!":(language==2?' Please operate with caution!':'Harap beroperasi dengan hati -hati!'),
+            type: "warning",
+            showCancelButton: true,
+            confirmButtonColor: "#DD6B55",
+            confirmButtonText: language==1?"删除":(language==2?'Delete':'Hapus'),
+            closeOnConfirm: true
+        }, function () {
+            var ajax = new $ax(Feng.ctxPath + "/TCompetition/delete", function (data) {
+                  if(language==1){
+                    swal("删除成功", "您已经成功删除了" + nickname + "。", "success");
+                }else if(language==2){
+                    swal("Delete succeeded!", "You have successfully deleted it" + nickname + "。", "success");
+                }else {
+                    swal("Hapus berhasil!", "Anda berhasil menghapus" + nickname + "。", "success");
+                }
+                TCompetition.table.refresh();
+            }, function (data) {
+                if(language==1){
+                    swal("删除失败", data.responseJSON.message + "!", "warning");
+                }else if(language==2){
+                    swal("Failed to delete", data.responseJSON.message + "!", "warning");
+                }else {
+                    swal("Hapus Gagal", data.responseJSON.message + "!", "warning");
+                }
+
+            });
+            ajax.set("TCompetitionId",TCompetition.seItem.id);
+            ajax.start();
+        });
+    }
+};
+TCompetition.oneChange = function (e) {
+    console.log(111)
+    var oneId=$(e).val();
+    var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){
+        if(data!=null){
+            if(language==1){
+                var content='<option value="">选择市</option>';
+            }else if(language==2){
+                var content='<option value="">Choose your franchisee</option>';
+            }else {
+                var content='<option value="">Pilih franchisee Anda</option>';
+            }
+            $.each(data, function(k,v) {
+                content += "<option value='"+v.code+"'>"+v.name+"</option>";
+            });
+            $("#cCode").empty().append(content);
+        }
+    });
+    ajax.set("oneId",oneId);
+    ajax.start();
+}
+TCompetition.oneChangeNext = function (e) {
+    var oneId=$(e).val();
+    var ajax = new $ax(Feng.ctxPath + "/tCompetition/oneChangeNext", function(data){
+        if(data!=null){
+            if(language==1){
+                var content='<option value="">选择账号</option>';
+            }else if(language==2){
+                var content='<option value="">Choose your franchisee</option>';
+            }else {
+                var content='<option value="">Pilih franchisee Anda</option>';
+            }
+            $.each(data, function(k,v) {
+                content += "<option value='"+v.id+"'>"+v.name+"</option>";
+            });
+            $("#account").empty().append(content);
+        }
+    });
+    ajax.set("oneId",oneId);
+    ajax.start();
+}
+
+TCompetition.freeze = function () {
+    if (this.check()) {
+        var ajax = new $ax(Feng.ctxPath + "/tShop/freeze", function (data) {
+            Feng.success("冻结成功!");
+            TCompetition.table.refresh();
+        }, function (data) {
+            Feng.error("冻结失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("id",this.seItem.id);
+        ajax.start();
+    }
+};
+TCompetition.unfreeze = function () {
+    if (this.check()) {
+        var ajax = new $ax(Feng.ctxPath + "/tShop/unfreeze", function (data) {
+            Feng.success("解冻成功!");
+            TCompetition.table.refresh();
+        }, function (data) {
+            Feng.error("解冻失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("id",this.seItem.id);
+        ajax.start();
+    }
+};
+TCompetition.reload = function () {
+    if (this.check()) {
+        let id = this.seItem.id
+        var operation = function(){
+            var ajax = new $ax(Feng.ctxPath + "/tCity/pwd", function (data) {
+                Feng.success("重置成功!");
+                TCompetition.table.refresh();
+            }, function (data) {
+                Feng.error("重置失败!" + data.responseJSON.message + "!");
+            });
+            ajax.set("id",id);
+            ajax.start();
+        }
+        Feng.confirm("确认重置密码?重置后密码为:a123456", operation);
+    }
+
+};
+
+TCompetition.saveAllImg = function (e) {
+    var id = $("#id").val()
+    var px1 = $("#px1").val()
+    var px2 = $("#px2").val()
+    var px3 = $("#px3").val()
+    var px4 = $("#px4").val()
+    var px5 = $("#px5").val()
+    var px6 = $("#px6").val()
+    var px7 = $("#px7").val()
+    var px8 = $("#px8").val()
+    var c1 = $("#c1").val()
+    var c2 = $("#c2").val()
+    var c3 = $("#c3").val()
+    var c4 = $("#c4").val()
+    var c5 = $("#c5").val()
+    var c6 = $("#c6").val()
+    var c7 = $("#7").val()
+    var c8 = $("#c8").val()
+    var r1 =  document.querySelector('input[name="r1"]').checked;
+    var r2 =  document.querySelector('input[name="r2"]').checked;
+    var r3 =  document.querySelector('input[name="r3"]').checked;
+    var r4 =  document.querySelector('input[name="r4"]').checked;
+    var r5 =  document.querySelector('input[name="r5"]').checked;
+    var r6 =  document.querySelector('input[name="r6"]').checked;
+    var r7 =  document.querySelector('input[name="r7"]').checked;
+    var r8 =  document.querySelector('input[name="r8"]').checked;
+    if(r1){
+        r1 =1
+    }else{
+        r1=0
+    }
+    if(r2){
+        r2 =1
+    }else{
+        r2=0
+    }
+    if(r3){
+        r3 =1
+    }else{
+        r3=0
+    }
+    if(r4){
+        r4 =1
+    }else{
+        r4=0
+    }
+    if(r5){
+        r5 =1
+    }else{
+        r5=0
+    }
+    if(r6){
+        r6 =1
+    }else{
+        r6=0
+    }
+    if(r7){
+        r7 =1
+    }else{
+        r7=0
+    }
+    if(r8){
+        r8 =1
+    }else{
+        r8=0
+    }
+
+    var ajax = new $ax(Feng.ctxPath + "/tShop/saveImgAll", function(data){
+        if(data.code == 200){
+            Feng.success("保存成功!");
+        }else{
+            Feng.error(data.msg);
+        }
+    },function(data){
+        Feng.error("保存失败!" + data.responseJSON.message + "!");
+
+    });
+    ajax.set("id",id);
+    ajax.set("px1",px1);
+    ajax.set("px2",px2);
+    ajax.set("px3",px3);
+    ajax.set("px4",px4);
+    ajax.set("px5",px5);
+    ajax.set("px6",px6);
+    ajax.set("px7",px7);
+    ajax.set("px8",px8);
+    ajax.set("c1",c1);
+    ajax.set("c2",c2);
+    ajax.set("c3",c3);
+    ajax.set("c4",c4);
+    ajax.set("c5",c5);
+    ajax.set("c6",c6);
+    ajax.set("c7",c7);
+    ajax.set("c8",c8);
+    ajax.set("r1",r1);
+    ajax.set("r2",r2);
+    ajax.set("r3",r3);
+    ajax.set("r4",r4);
+    ajax.set("r5",r5);
+    ajax.set("r6",r6);
+    ajax.set("r7",r7);
+    ajax.set("r8",r8);
+    ajax.start();
+}
+
+TCompetition.carInsurance = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: language==1?'车辆保险':(language==2?'Vehicle insurance':'Asuransi kendaraan'),
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/TCompetition/carInsurance?carId=' + TCompetition.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+
+
+/**
+ * 查询车辆管理列表
+ */
+TCompetition.search = function () {
+    var queryData = {};
+    queryData['provinceCode'] = $("#pCode").val();
+    queryData['cityCode'] = $("#cCode").val();
+    queryData['name'] = $("#name").val();
+    queryData['phone'] = $("#phone").val();
+    queryData['shopName'] = $("#shopName").val();
+    TCompetition.table.refresh({query: queryData});
+};
+
+TCompetition.resetSearch = function () {
+    $("#pCode").val("");
+    $("#cCode").val("");
+    $("#name").val("");
+    $("#phone").val("");
+    $("#shopName").val("");
+    TCompetition.search();
+};
+
+$(function () {
+    var defaultColunms = TCompetition.initColumn();
+
+    // 初始化图片上传
+    var carPhoto = new $WebUpload("url");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c2");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c3");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c4");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c5");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c6");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c7");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c8");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("img");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var drivingLicensePhoto = new $WebUpload("drivingLicensePhoto");
+    drivingLicensePhoto.setUploadBarId("progressBar");
+    drivingLicensePhoto.init();
+
+    var table = new BSTable(TCompetition.id, "/tShop/listTwo", defaultColunms);
+    table.setPaginationType("server");
+    TCompetition.table = table.init();
+});
+
+/**
+ * 下载模板
+ */
+TCompetition.uploadCarModel = function () {
+    window.location.href = Feng.ctxPath + "/TCompetition/uploadCarModel";
+}
+
+var agreement = function(){
+    this.init = function(){
+        //模拟上传excel  
+        $("#uploadEventBtn").unbind("click").bind("click",function(){
+            $("#uploadEventFile").click();
+        });
+    };
+}
+/**
+ * 导入合同
+ */
+TCompetition.exporTCompetition = function () {
+    var uploadEventFile = $("#uploadEventFile").val();
+    if(uploadEventFile == ''){
+        if(language==1){
+            Feng.info("请选择Excel,再上传");
+        }else if(language==2){
+            Feng.info("Please select Excel and upload");
+        }else {
+            Feng.info("Silakan pilih Excel dan upload");
+        }
+    }else if(uploadEventFile.lastIndexOf(".xls")<0){//可判断以.xls和.xlsx结尾的excel  
+        if(language==1){
+            Feng.info("只能上传Excel文件");
+        }else if(language==2){
+            Feng.info("Only Excel files can be uploaded");
+        }else {
+            Feng.info("Hanya berkas Excel yang dapat diunggah");
+        }
+    }else{
+        var url = Feng.ctxPath + '/TCompetition/exporTCompetition';
+        var file = document.querySelector('input[name=file]').files[0];
+        var reader = new FileReader();
+        if (file) {
+            var formData = new FormData();
+            formData.append("myfile", file);
+            this.sendAjaxRequest(url, 'POST', formData);
+        }
+    }
+}
+TCompetition.sendAjaxRequest = function(url,type,data){
+    $.ajax({
+        url : url,
+        type : type,
+        data : data,
+        success : function(result) {
+            if(result.code==500) {
+                Feng.info(result.message);
+            }else {
+                if(language==1){
+                    Feng.success("导入成功!");
+                }else if(language==2){
+                    Feng.success("SUCCESSFUL IMPORT!");
+                }else {
+                    Feng.success("Import berhasil!");
+                }
+            }
+            TCompetition.table.refresh();
+        },
+        error : function() {
+            if(language==1){
+                Feng.error("excel上传失败!");
+            }else if(language==2){
+                Feng.error("Uploading excel Fails. Procedure!");
+            }else {
+                Feng.error("Gagal mengunggah excel!");
+            }
+        },
+        cache : false,
+        contentType : false,
+        processData : false
+    });
+};
+
+var agreement;
+$(function(){
+    agreement = new agreement();
+    agreement.init();
+});
+
+/**
+ * 导出车辆操作
+ */
+TCompetition.ouTCompetition = function () {
+    var operation = function() {
+        window.location.href = Feng.ctxPath + "/TCompetition/ouTCompetition";
+    };
+    if(language==1){
+        Feng.confirm("是否确认导出车辆信息?", operation);
+    }else if(language==2){
+        Feng.confirm("Are you sure to export vehicle information?", operation);
+    }else {
+        Feng.confirm("Apakah Anda pasti akan mengekspor informasi kendaraan?", operation);
+    }
+}
+
+TCompetition.addSubmit = function() {
+
+    let url = $("#url").val()
+    if(url==''){
+        Feng.info("请上传图片")
+        return;
+    }
+
+    let name = $("#name").val()
+    console.log(name)
+
+    if(name=='' || name ==null){
+        Feng.info("请选择跳转模块")
+        return;
+    }
+    let page = $("#page").val()
+    if(page=='' && name !='不跳转'){
+        Feng.info("请选择跳转页面")
+        return;
+    }
+    let type = $("#type").val()
+
+    if(type==''  && name !='不跳转'){
+    }
+    let turnId = $("#turnId").val()
+
+    if( type =='11' || type=='13'|| type=='16'|| type=='19'|| type=='21'|| type=='40'|| type=='43'){
+        Feng.info("请输入跳转ID")
+        return;
+    }
+    let sort = $("#sort").val()
+
+    if(sort==''){
+        Feng.info("请输入排序")
+        return;
+    }
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tShop/addConfigOne", function(data){
+        if(data.code == 200){
+            Feng.success("添加成功!");
+            window.parent.TCompetition.table.refresh();
+            parent.layer.close(window.parent.TCompetition.layerIndex);
+        }else{
+            Feng.error(data.msg);
+        }
+
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("url",url);
+    ajax.set("name",name);
+    ajax.set("page",page);
+    ajax.set("type",type);
+    ajax.set("turnId",turnId);
+    ajax.set("sort",sort);
+    ajax.start();
+}
+
+TCompetition.addSubmit1 = function() {
+
+    let url = $("#url").val()
+    if(url==''){
+    }
+
+    let name = $("#name").val()
+    console.log(name)
+
+    if(name=='' || name ==null){
+        Feng.info("请选择跳转模块")
+        return;
+    }
+    let page = $("#page").val()
+    if(page=='' && name !='不跳转'){
+        Feng.info("请选择跳转页面")
+        return;
+    }
+    let type = $("#type").val()
+
+    if(type==''  && name !='不跳转'){
+    }
+    let turnId = $("#turnId").val()
+
+    if( type =='11' || type=='13'|| type=='16'|| type=='19'|| type=='21'|| type=='40'|| type=='43'){
+        if(turnId==""){
+            Feng.info("请输入跳转ID")
+            return;
+        }
+    }
+    let sort = $("#sort").val()
+
+    if(sort==''){
+        Feng.info("请输入排序")
+        return;
+    }
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tShop/updateConfigOne", function(data){
+        if(data.code == 200){
+            Feng.success("添加成功!");
+            window.parent.TCompetition.table.refresh();
+            parent.layer.close(window.parent.TCompetition.layerIndex);
+        }else{
+            Feng.error(data.msg);
+        }
+
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("url",url);
+    ajax.set("name",name);
+    ajax.set("page",page);
+    ajax.set("type",type);
+    ajax.set("turnId",turnId);
+    ajax.set("sort",sort);
+    ajax.set("id",$("#id").val());
+    ajax.start();
+}
+TCompetition.addSubmit2 = function() {
+
+
+    let name = $("#name").val()
+
+    if(name=='' || name ==null){
+        Feng.info("请填写板块名称")
+        return;
+    }
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tShop/addConfig", function(data){
+        if(data.code == 200){
+            Feng.success("添加成功!");
+            window.parent.TCompetition.table.refresh();
+            parent.layer.close(window.parent.TCompetition.layerIndex);
+        }else{
+            Feng.error(data.msg);
+        }
+
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("name",name);
+    ajax.set("id",$("#id").val());
+    ajax.start();
+}
+TCompetition.close = function() {
+    parent.layer.close(window.parent.TCompetition.layerIndex);
+}
\ No newline at end of file
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js
index e218aa8..2d4e403 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js
@@ -166,13 +166,17 @@
         return ;
     }
 
+    var OBJradio= $("input[name='type']:checked").val();
+    if(OBJradio==2){
+        let account = $("#account").val()
+        if(account==''){
+            Feng.info("请选择所属运营商")
+            return;
+        }
+    }
     let pCode = $("#pCode").val()
     let cCode = $("#cCode").val()
-    let account = $("#account").val()
-    if(account==''){
-        Feng.info("请选择所属账号")
-        return;
-    }
+
 
     let name = $("#name").val()
     let phone = $("#phone").val()
@@ -271,7 +275,7 @@
     ajax.set("cityCode",cCode);
     ajax.set("name",name);
     ajax.set("phone",phone);
-    ajax.set("cityManagerId",account);
+    ajax.set("cityManagerId",null);
     ajax.set("address",address);
     ajax.set("time",time);
     ajax.set("introduce",intro);
@@ -279,6 +283,11 @@
     ajax.set("userPhone",userPhone);
     ajax.set("coverDrawing",img);
     ajax.set("realPicture",imgOne);
+    ajax.set("lat",$("#latitude").val());
+    ajax.set("lon",$("#longitude").val());
+    ajax.set("ids",$("#ids").val());
+    ajax.set("type",OBJradio);
+    ajax.set("yyId",$("#account").val());
     ajax.start();
 }
 var  map = new AMap.Map('container', {
@@ -392,9 +401,13 @@
     let pCode = $("#pCode").val()
     let cCode = $("#cCode").val()
     let account = $("#account").val()
-    if(account==''){
-        Feng.info("请选择所属账号")
-        return;
+    var OBJradio= $("input[name='type']:checked").val();
+    if(OBJradio==2){
+        let account = $("#account").val()
+        if(account==''){
+            Feng.info("请选择所属运营商")
+            return;
+        }
     }
 
     let name = $("#name").val()
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info_one.js b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info_one.js
new file mode 100644
index 0000000..2d4e403
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info_one.js
@@ -0,0 +1,713 @@
+/**
+ * 初始化车辆管理详情对话框
+ */
+var language=1;
+var TCarInfoDlg = {
+    goodsPicArray: [],
+    tCarInfoData : {},
+    validateFields: {
+    }
+};
+
+/**
+ * 验证数据是否为空
+ */
+TCarInfoDlg.validate = function () {
+    $('#carInfoForm').data("bootstrapValidator").resetForm();
+    $('#carInfoForm').bootstrapValidator('validate');
+    return $("#carInfoForm").data('bootstrapValidator').isValid();
+};
+
+/**
+ * 清除数据
+ */
+TCarInfoDlg.clearData = function() {
+    this.tCarInfoData = {};
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TCarInfoDlg.set = function(key, val) {
+    this.tCarInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
+    return this;
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TCarInfoDlg.get = function(key) {
+    return $("#" + key).val();
+}
+
+/**
+ * 关闭此对话框
+ */
+TCarInfoDlg.close = function() {
+    parent.layer.close(window.parent.TCompetition.layerIndex);
+}
+
+/**
+ * 收集数据
+ */
+TCarInfoDlg.collectData = function() {
+    this
+    .set('id')
+    .set('isPlatCar')
+    .set('companyId')
+    .set('franchiseeId')
+    .set('carColor')
+    .set('carModelId')
+    .set('carBrandId')
+    .set('carLicensePlate')
+    .set('carPhoto')
+    .set('drivingLicenseNumber')
+    .set('drivingLicensePhoto')
+    .set('annualInspectionTime')
+    .set('commercialInsuranceTime')
+    .set('createTime')
+    .set('state')
+    .set('addType')
+    .set('addObjectId')
+    .set('plateColor')
+    .set('vehicleType')
+    .set('ownerName')
+    .set('engineId')
+    .set('VIN')
+    .set('certifyDateA')
+    .set('fuelType')
+    .set('engineDisplace')
+    .set('certificate')
+    .set('transAgency')
+    .set('transArea')
+    .set('transDateStart')
+    .set('transDateStop')
+    .set('certifyDateB')
+    .set('fixState')
+    .set('nextFixDate')
+    .set('checkState')
+    .set('feePrintId')
+    .set('GPSBrand')
+    .set('GPSModel')
+    .set('GPSIMEI')
+    .set('GPSInstallDate')
+    .set('registerDate')
+    .set('commercialType');
+}
+
+TCarInfoDlg.oneChange = function (e) {
+    console.log(111)
+    var oneId=$(e).val();
+    var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){
+        if(data!=null){
+            if(language==1){
+                var content='<option value="">选择市</option>';
+            }else if(language==2){
+                var content='<option value="">Choose your franchisee</option>';
+            }else {
+                var content='<option value="">Pilih franchisee Anda</option>';
+            }
+            $.each(data, function(k,v) {
+                content += "<option value='"+v.code+"'>"+v.name+"</option>";
+            });
+            $("#cCode").empty().append(content);
+        }
+    });
+    ajax.set("oneId",oneId);
+    ajax.start();
+}
+TCarInfoDlg.oneChangeNext = function (e) {
+    var oneId=$(e).val();
+    var ajax = new $ax(Feng.ctxPath + "/tShop/oneChangeNext", function(data){
+        if(data!=null){
+            if(language==1){
+                var content='<option value="">选择账号</option>';
+            }else if(language==2){
+                var content='<option value="">Choose your franchisee</option>';
+            }else {
+                var content='<option value="">Pilih franchisee Anda</option>';
+            }
+            $.each(data, function(k,v) {
+                content += "<option value='"+v.id+"'>"+v.name+"</option>";
+            });
+            $("#account").empty().append(content);
+        }
+    });
+    ajax.set("oneId",oneId);
+    ajax.start();
+}
+TCarInfoDlg.saveImg = function () {
+    var id=$("#id").val();
+    var img=$("#welfarePicture").val();
+    var ajax = new $ax(Feng.ctxPath + "/tShop/saveImg", function(data){
+        if(data.code == 200){
+            Feng.success("保存成功")
+        }
+    });
+    ajax.set("id",id);
+    ajax.set("img",img);
+    ajax.start();
+}
+
+/**
+ * 提交添加
+ */
+TCarInfoDlg.addSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+    if(!this.validate()){
+        return ;
+    }
+
+    var OBJradio= $("input[name='type']:checked").val();
+    if(OBJradio==2){
+        let account = $("#account").val()
+        if(account==''){
+            Feng.info("请选择所属运营商")
+            return;
+        }
+    }
+    let pCode = $("#pCode").val()
+    let cCode = $("#cCode").val()
+
+
+    let name = $("#name").val()
+    let phone = $("#phone").val()
+
+    if(pCode=='' && $("#role")=="1"){
+        Feng.info("请选择省")
+        return;
+    }
+    if(cCode=='' && $("#role")=="1"){
+        Feng.info("请选择市")
+        return;
+    }
+    if(name==''){
+        Feng.info("门店名称不能为空")
+        return;
+    }
+    if(phone==''){
+        Feng.info("联系电话不能为空")
+        return;
+    }
+
+    let address = $("#address").val()
+
+    if(address==''){
+        Feng.info("请输入地址")
+        return;
+    }
+    let time = $("#time").val()
+
+    if(time==''){
+        Feng.info("请填写营业时间")
+        return;
+    }
+    let intro = $("#intro").val()
+
+    if(intro==''){
+        Feng.info("请填写门店介绍")
+        return;
+    }
+    let userName = $("#userName").val()
+
+    if(userName==''){
+        Feng.info("请输入店长姓名")
+        return;
+    }
+    let userPhone = $("#userPhone").val()
+
+    if(userPhone==''){
+        Feng.info("请输入店长手机号")
+        return;
+    }
+    let img = $("#img").val()
+
+    if(img==''){
+        Feng.info("请上传门店封面")
+        return;
+    }
+    var goodImgs = this.goodsPicArray;
+    if(goodImgs.length==0){
+        Feng.info("请上传实景图")
+        return;
+    }
+    var imgOne ="";
+    for (let i = 0; i <goodImgs.length; i++) {
+        if(i==goodImgs.length-1){
+            imgOne += (goodImgs[i].response)
+        }else {
+            imgOne+=(goodImgs[i].response+",")
+        }
+
+    }
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tShop/add", function(data){
+        if(data=="5001"){
+            Feng.error("该店长手机号已经存在!")
+        }else
+        if(data.code == 200){
+            if(language==1){
+                Feng.success("添加成功!");
+            }else if(language==2){
+                Feng.success("Successfully added!");
+            }else {
+                Feng.success("Sangat berhasil ditambah!");
+            }
+            window.parent.TCompetition.table.refresh();
+            TCarInfoDlg.close();
+        }else{
+            Feng.error(data.msg);
+        }
+
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tCarInfoData);
+    ajax.set("provinceCode",pCode);
+    ajax.set("cityCode",cCode);
+    ajax.set("name",name);
+    ajax.set("phone",phone);
+    ajax.set("cityManagerId",null);
+    ajax.set("address",address);
+    ajax.set("time",time);
+    ajax.set("introduce",intro);
+    ajax.set("userName",userName);
+    ajax.set("userPhone",userPhone);
+    ajax.set("coverDrawing",img);
+    ajax.set("realPicture",imgOne);
+    ajax.set("lat",$("#latitude").val());
+    ajax.set("lon",$("#longitude").val());
+    ajax.set("ids",$("#ids").val());
+    ajax.set("type",OBJradio);
+    ajax.set("yyId",$("#account").val());
+    ajax.start();
+}
+var  map = new AMap.Map('container', {
+    resizeEnable: true, // 允许缩放
+    zoom: 15        // 设置地图的缩放级别,0 - 20
+});
+var marker;
+//搜索地图
+TCarInfoDlg.searchByStationName = function(e,type){
+    var keyword="成都";
+    if(type==2){
+        keyword = $(e).parent().prev().find("input").val();
+    }else {
+        if($("#address").val()!=null && $("#address").val()!=''){
+            keyword = $("#address").val();
+        }
+    }
+    type=1;
+    AMap.plugin('AMap.Geocoder', function() {
+        var geocoder = new AMap.Geocoder();
+        console.log(geocoder)
+        console.log(keyword)
+        geocoder.getLocation(keyword, function(status, result) {
+            console.log(status,result)
+            if (status === 'complete' && result.info === 'OK') {
+                // 经纬度
+                var lng = result.geocodes[0].location.lng;
+                var lat = result.geocodes[0].location.lat;
+                $("#longitude").val(lng)
+                $("#latitude").val(lat)
+                // 地图实例
+                map = new AMap.Map('container', {
+                    resizeEnable: true, // 允许缩放
+                    center: [lng, lat], // 设置地图的中心点
+                    zoom: 15        // 设置地图的缩放级别,0 - 20
+                });
+                //地图画点
+                //addMarker(lng,lat);
+                if(type==1 || type==2){
+                    showInfoClick();
+                    if(lng == null){
+                    }else{
+                        addMarker(lng,lat);
+                    }
+                }else{
+                    addMarker(lng,lat);
+                }
+            } else {
+                console.log('定位失败!');
+            }
+        });
+    });
+
+}
+//地图点击事件
+function showInfoClick(){
+    map.on('click', function (e) {
+        addMarker(e.lnglat.getLng(),e.lnglat.getLat());
+    });
+}
+//删除点
+function removeMarkers(){
+    if(marker!=null){
+        map.remove(marker);
+    }
+
+}
+// 实例化点标记
+function addMarker(lon,lat) {
+    removeMarkers();
+    marker = new AMap.Marker({
+        map: map,
+        position: new AMap.LngLat(lon, lat),   // 经纬度
+    });
+    //加经纬度
+    $("#lon").val(lon);
+    $("#lat").val(lat);
+    var lnglatXY = [lon, lat];//地图上所标点的坐标
+    AMap.service('AMap.Geocoder',function() {//回调函数
+        geocoder = new AMap.Geocoder({
+        });
+        geocoder.getAddress(lnglatXY, function (status, result) {
+            if (status === 'complete' && result.info === 'OK') {
+                //获得了有效的地址信息:
+                //即,result.regeocode.formattedAddress
+                // alert(result.regeocode.formattedAddress)
+                //document.getElementById("address").value=result.regeocode.formattedAddress;//将获取到的地址信息赋值给文本框,保存进数据库
+
+                var address = result.regeocode.formattedAddress;
+                var city = result.regeocode.addressComponent.city;
+                var province = result.regeocode.addressComponent.province;
+                var district = result.regeocode.addressComponent.district;
+                $("#address").val(address);
+            } else {
+                //获取地址失败
+            }
+        });
+    })
+}
+/**
+ * 提交修改
+ */
+TCarInfoDlg.editSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+    if(!this.validate()){
+        return ;
+    }
+
+    let pCode = $("#pCode").val()
+    let cCode = $("#cCode").val()
+    let account = $("#account").val()
+    var OBJradio= $("input[name='type']:checked").val();
+    if(OBJradio==2){
+        let account = $("#account").val()
+        if(account==''){
+            Feng.info("请选择所属运营商")
+            return;
+        }
+    }
+
+    let name = $("#name").val()
+    let phone = $("#phone").val()
+
+    if(pCode=='' && $("#role")=="1"){
+        Feng.info("请选择省")
+        return;
+    }
+    if(cCode=='' && $("#role")=="1"){
+        Feng.info("请选择市")
+        return;
+    }
+    if(name==''){
+        Feng.info("门店名称不能为空")
+        return;
+    }
+    if(phone==''){
+        Feng.info("联系电话不能为空")
+        return;
+    }
+
+    let address = $("#address").val()
+
+    if(address==''){
+        Feng.info("请输入地址")
+        return;
+    }
+    let time = $("#time").val()
+
+    if(time==''){
+        Feng.info("请填写营业时间")
+        return;
+    }
+    let intro = $("#intro").val()
+
+    if(intro==''){
+        Feng.info("请填写门店介绍")
+        return;
+    }
+    let userName = $("#userName").val()
+
+    if(userName==''){
+        Feng.info("请输入店长姓名")
+        return;
+    }
+    let userPhone = $("#userPhone").val()
+
+    if(userPhone==''){
+        Feng.info("请输入店长手机号")
+        return;
+    }
+    let img = $("#img").val()
+
+
+    let imgOne = $("#imgOne").val()
+
+    if(imgOne==''){
+        Feng.info("请上传实景图")
+        return;
+    }
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tShop/update", function(data){
+        if(data=="5001"){
+            Feng.error("该店长手机号已经存在!")
+        }else
+        if(data.code == 200){
+            if(language==1){
+                Feng.success("修改成功!");
+            }else if(language==2){
+                Feng.success("Modify successfully!");
+            }else {
+                Feng.success("Mengubah dengan sukses!");
+            }
+            window.parent.TCompetition.table.refresh();
+            TCarInfoDlg.close();
+        }else{
+            Feng.error(data.msg);
+        }
+    },function(data){
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("provinceCode",pCode);
+    ajax.set("cityCode",cCode);
+    ajax.set("name",name);
+    ajax.set("phone",phone);
+    ajax.set("cityManagerId",account);
+    ajax.set("address",address);
+    ajax.set("time",time);
+    ajax.set("introduce",intro);
+    ajax.set("userName",userName);
+    ajax.set("userPhone",userPhone);
+    ajax.set("coverDrawing",img);
+    ajax.set("realPicture",imgOne);
+    ajax.set("id",$("#id").val());
+    ajax.start();
+}
+
+$(function() {
+    Feng.initValidator("carInfoForm", TCarInfoDlg.validateFields);
+    // 初始化图片上传
+    var carPhoto = new $WebUpload("c1");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c2");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c3");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c4");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c5");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c6");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c7");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("c8");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var carPhoto = new $WebUpload("img");
+    carPhoto.setUploadBarId("progressBar");
+    carPhoto.init();
+    var drivingLicensePhoto = new $WebUpload("drivingLicensePhoto");
+    drivingLicensePhoto.setUploadBarId("progressBar");
+    drivingLicensePhoto.init();
+
+    //地图搜索
+    TCarInfoDlg.searchByStationName();
+});
+
+/**
+ * 选择分公司后执行
+ */
+TCarInfoDlg.oneChange = function (e) {
+    var oneId=$(e).val();
+    var ajax = new $ax(Feng.ctxPath + "/tCity/onChange", function(data){
+        if(data!=null){
+            if(language==1){
+                var content='<option value="">选择市</option>';
+            }else if(language==2){
+                var content='<option value="">Choose your franchisee</option>';
+            }else {
+                var content='<option value="">Pilih franchisee Anda</option>';
+            }
+            $.each(data, function(k,v) {
+                content += "<option value='"+v.code+"'>"+v.name+"</option>";
+            });
+            $("#cCode").empty().append(content);
+        }
+    });
+    ajax.set("oneId",oneId);
+    ajax.start();
+}
+
+/**
+ * 类型改变执行
+ * @param e
+ */
+TCarInfoDlg.companyTypeClick = function (e) {
+    if (1 == e){
+        $(".companyDiv").hide();
+    } else if (2 == e){
+        $(".companyDiv").show();
+    }
+}
+
+/**
+ * 车辆品牌改变时执行
+ */
+TCarInfoDlg.saveAllImg = function (e) {
+    var id = $("#id").val()
+    var px1 = $("#px1").val()
+    var px2 = $("#px2").val()
+    var px3 = $("#px3").val()
+    var px4 = $("#px4").val()
+    var px5 = $("#px5").val()
+    var px6 = $("#px6").val()
+    var px7 = $("#px7").val()
+    var px8 = $("#px8").val()
+    var c1 = $("#c1").val()
+    var c2 = $("#c2").val()
+    var c3 = $("#c3").val()
+    var c4 = $("#c4").val()
+    var c5 = $("#c5").val()
+    var c6 = $("#c6").val()
+    var c7 = $("#7").val()
+    var c8 = $("#c8").val()
+    var r1 =  document.querySelector('input[name="r1"]').checked;
+    var r2 =  document.querySelector('input[name="r2"]').checked;
+    var r3 =  document.querySelector('input[name="r3"]').checked;
+    var r4 =  document.querySelector('input[name="r4"]').checked;
+    var r5 =  document.querySelector('input[name="r5"]').checked;
+    var r6 =  document.querySelector('input[name="r6"]').checked;
+    var r7 =  document.querySelector('input[name="r7"]').checked;
+    var r8 =  document.querySelector('input[name="r8"]').checked;
+    if(r1){
+        r1 =1
+    }else{
+        r1=0
+    }
+    if(r2){
+        r2 =1
+    }else{
+        r2=0
+    }
+    if(r3){
+        r3 =1
+    }else{
+        r3=0
+    }
+    if(r4){
+        r4 =1
+    }else{
+        r4=0
+    }
+    if(r5){
+        r5 =1
+    }else{
+        r5=0
+    }
+    if(r6){
+        r6 =1
+    }else{
+        r6=0
+    }
+    if(r7){
+        r7 =1
+    }else{
+        r7=0
+    }
+    if(r8){
+        r8 =1
+    }else{
+        r8=0
+    }
+
+    var ajax = new $ax(Feng.ctxPath + "/tShop/saveImgAll", function(data){
+        if(data.code == 200){
+            Feng.success("保存成功!");
+        }else{
+            Feng.error(data.msg);
+        }
+        },function(data){
+            Feng.error("保存失败!" + data.responseJSON.message + "!");
+
+    });
+    ajax.set("id",id);
+    ajax.set("px1",px1);
+    ajax.set("px2",px2);
+    ajax.set("px3",px3);
+    ajax.set("px4",px4);
+    ajax.set("px5",px5);
+    ajax.set("px6",px6);
+    ajax.set("px7",px7);
+    ajax.set("px8",px8);
+    ajax.set("c1",c1);
+    ajax.set("c2",c2);
+    ajax.set("c3",c3);
+    ajax.set("c4",c4);
+    ajax.set("c5",c5);
+    ajax.set("c6",c6);
+    ajax.set("c7",c7);
+    ajax.set("c8",c8);
+    ajax.set("r1",r1);
+    ajax.set("r2",r2);
+    ajax.set("r3",r3);
+    ajax.set("r4",r4);
+    ajax.set("r5",r5);
+    ajax.set("r6",r6);
+    ajax.set("r7",r7);
+    ajax.set("r8",r8);
+    ajax.start();
+}
+
+/**
+ * 专车服务被点击
+ */
+TCarInfoDlg.zcServerClick = function () {
+    var serverBox1 = $('#serverBox1').prop('checked');
+    if (serverBox1){
+        $("#zcModelDiv").show();
+    } else {
+        $("#zcModelDiv").hide();
+    }
+}
+
+/**
+ * 跨城服务被点击
+ */
+TCarInfoDlg.kcServerClick = function () {
+    var serverBox3 = $('#serverBox3').prop('checked');
+    if (serverBox3){
+        $("#kcModelDiv").show();
+    } else {
+        $("#kcModelDiv").hide();
+    }
+}
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
index 0b2e109..74aef4f 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
@@ -354,7 +354,10 @@
         insuranceEndTime:"",
         name:"",
         insuranceImg:"",
-        managementPlan:""
+        managementPlan:"",
+        operatorId:"",
+        typeName:"",
+        nextName:""
     };
     data.province            = $("#pCode").val()
     data.city                = $("#cCode").val()
@@ -369,18 +372,48 @@
     data.name                = $("#name").val()
     data.insuranceImg        = $("#img").val()
     data.managementPlan      = $('#courseVideo').val()
+    data.typeName      = $('#siteTypeOne').val()
     var sh =data.appointmentStartTime.split(':')[0];
     var sm =data.appointmentStartTime.split(':')[1];
     var eh =data.appointmentEndTime.split(':')[0];
     var em =data.appointmentEndTime.split(':')[1];
-    if($("#pCode").val()==''){
-        Feng.info("请选择省")
-        return;
+
+    var SelectValue="";
+    var getSelectValueMenbers = $("input[name='pt']:checked").each(function(j) {
+        if (j >= 0) {
+            SelectValue += $(this).val()
+        }
+    });
+    if(SelectValue==''){
+        let yys = $("#yys").val()
+        if(yys==""){
+            Feng.info("请选择运营商")
+            return;
+        }
+        SelectValue= yys
     }
-    if($("#cCode").val()==''){
-        Feng.info("请选择市")
-        return;
+    data.operatorId= SelectValue;
+
+
+
+    let num24 = $('input[name="name1"]');
+    var nextName="";
+    for (let i = 0; i < num24.length; i++) {
+        if(console.log($(num24[i]).val()=='')){
+            Feng.info("请填写场地名称")
+            return;
+        }
+        if(i==num24.length-1){
+            nextName += $(num24[i]).val()
+        }else {
+            nextName += $(num24[i]).val()+","
+        }
     }
+    console.log(nextName)
+    data.nextName= nextName;
+
+
+
     if($("#account").val()=='' ){
         Feng.info("请选择账号")
         return;
@@ -390,7 +423,7 @@
         return;
     }
     if($("#siteTypeId").val()=='' ){
-        Feng.info("请选择场地类型")
+        Feng.info("请选择场地分类")
         return;
     }
     if($("#name").val()==''){
@@ -431,83 +464,83 @@
     var rStime = ""; //门店的经营开始时间
     var rEtime = ""; //门店的经营结束时间
     var selectedText = $('#store option:selected').text();
-    $.ajax({
-        url: Feng.ctxPath + "/tSite/getTime/" + selectedText,
-        type: "GET",
-        contentType: "application/json", // 设置请求头的 Content-Type
-        success: function (response) {
-            rStime = response.startTime;
-            sh = rStime.split(':')[0];// 门店经营开始时间:小时
-            sm = rStime.split(':')[1];// 门店经营开始时间:分钟
-
-            rEtime = response.endTime;
-            eh = rEtime.split(':')[0];// 门店经营结束时间:小时
-            em = rEtime.split(':')[1];// 门店经营结束时间:分钟
-
-            var start = sTime.value;
-            var startHour = start.split(':')[0];  // 输入的可预约开始时间:小时
-            var startMinute = start.split(':')[1];// 输入的可预约开始时间:分钟
-            if (Number(sh)>Number(startHour)){
-                Feng.error("预约的开始时间不应小于营业开始时间!")
-                return false;
-            }else if(Number(sh) === Number(startHour) ){
-                if (Number(sm)>Number(startMinute)){
-                    Feng.error("预约的开始时间不应大于营业开始时间!")
-                    return false;
-                }
-            }else if (Number(eh)<Number(startHour)){
-                Feng.error("预约的开始时间不应大于营业结束时间!")
-                return false;
-            }else if(Number(eh)===Number(startHour)){
-                Feng.error("预约的开始时间不应大于等于营业结束时间!")
-                return false;
-            }
-            var end = eTime.value;
-            var endHour = end.split(':')[0];  // 输入的可预约结束时间:小时
-            var endMinute = end.split(':')[1];// 输入的可预约结束时间:分钟
-            if (Number(eh)<Number(endHour)){
-                Feng.error("预约的结束时间不应大于营业结束时间!")
-                return ;
-            }else if(Number(eh) === Number(endHour) ){
-                if (Number(em)<Number(endMinute)){
-                    Feng.error("预约的开始时间不应大于开始营业时间!")
-                    return ;
-                }
-            }else if(Number(sh)>Number(endHour)){
-                Feng.error("预约的结束时间不应小于营业开始时间!")
-                return ;
-            }
-            if (Number(endHour)===Number(sh)){
-                if(Number(endMinute) < Number(sm)){
-                    Feng.error("预约结束时间不应小于营业开始时间");
-                    return;
-                }
-            }
-            if (Number(startHour)===Number(endHour) && Number(startMinute)===Number(endMinute)){
-                Feng.error("至少预约半个小时");
-                return;
-            }
-            $.ajax({
-                url: Feng.ctxPath + "/tSite/addSite" ,
-                type: "POST",
-                data: JSON.stringify(data),
-                contentType: "application/json",
-                success: function (response) {
-                    window.parent.TSite.table.refresh();
-                    TSite.close();
-                    Feng.success("添加成功");
-                },
-                error: function (xhr, status, error) {
-                    Feng.error("添加失败!" + error);
-                }
-            });
-        },
-        error: function (xhr, status, error) {
-            var errorMessage = xhr.responseText ? xhr.responseText : "上架失败!";
-            Feng.error("您的网络异常!");
-            return false;
-        }
-    });
+    // $.ajax({
+    //     url: Feng.ctxPath + "/tSite/getTime/" + selectedText,
+    //     type: "GET",
+    //     contentType: "application/json", // 设置请求头的 Content-Type
+    //     success: function (response) {
+    //         rStime = response.startTime;
+    //         sh = rStime.split(':')[0];// 门店经营开始时间:小时
+    //         sm = rStime.split(':')[1];// 门店经营开始时间:分钟
+    //
+    //         rEtime = response.endTime;
+    //         eh = rEtime.split(':')[0];// 门店经营结束时间:小时
+    //         em = rEtime.split(':')[1];// 门店经营结束时间:分钟
+    //
+    //         var start = sTime.value;
+    //         var startHour = start.split(':')[0];  // 输入的可预约开始时间:小时
+    //         var startMinute = start.split(':')[1];// 输入的可预约开始时间:分钟
+    //         if (Number(sh)>Number(startHour)){
+    //             Feng.error("预约的开始时间不应小于营业开始时间!")
+    //             return false;
+    //         }else if(Number(sh) === Number(startHour) ){
+    //             if (Number(sm)>Number(startMinute)){
+    //                 Feng.error("预约的开始时间不应大于营业开始时间!")
+    //                 return false;
+    //             }
+    //         }else if (Number(eh)<Number(startHour)){
+    //             Feng.error("预约的开始时间不应大于营业结束时间!")
+    //             return false;
+    //         }else if(Number(eh)===Number(startHour)){
+    //             Feng.error("预约的开始时间不应大于等于营业结束时间!")
+    //             return false;
+    //         }
+    //         var end = eTime.value;
+    //         var endHour = end.split(':')[0];  // 输入的可预约结束时间:小时
+    //         var endMinute = end.split(':')[1];// 输入的可预约结束时间:分钟
+    //         if (Number(eh)<Number(endHour)){
+    //             Feng.error("预约的结束时间不应大于营业结束时间!")
+    //             return ;
+    //         }else if(Number(eh) === Number(endHour) ){
+    //             if (Number(em)<Number(endMinute)){
+    //                 Feng.error("预约的开始时间不应大于开始营业时间!")
+    //                 return ;
+    //             }
+    //         }else if(Number(sh)>Number(endHour)){
+    //             Feng.error("预约的结束时间不应小于营业开始时间!")
+    //             return ;
+    //         }
+    //         if (Number(endHour)===Number(sh)){
+    //             if(Number(endMinute) < Number(sm)){
+    //                 Feng.error("预约结束时间不应小于营业开始时间");
+    //                 return;
+    //             }
+    //         }
+    //         if (Number(startHour)===Number(endHour) && Number(startMinute)===Number(endMinute)){
+    //             Feng.error("至少预约半个小时");
+    //             return;
+    //         }
+    //         $.ajax({
+    //             url: Feng.ctxPath + "/tSite/addSite" ,
+    //             type: "POST",
+    //             data: JSON.stringify(data),
+    //             contentType: "application/json",
+    //             success: function (response) {
+    //                 window.parent.TSite.table.refresh();
+    //                 TSite.close();
+    //                 Feng.success("添加成功");
+    //             },
+    //             error: function (xhr, status, error) {
+    //                 Feng.error("添加失败!" + error);
+    //             }
+    //         });
+    //     },
+    //     error: function (xhr, status, error) {
+    //         var errorMessage = xhr.responseText ? xhr.responseText : "上架失败!";
+    //         Feng.error("您的网络异常!");
+    //         return false;
+    //     }
+    // });
 };
 
 TSite.search = function () {
@@ -539,6 +572,8 @@
 }
 
 $(function () {
+    //初始化编辑器
+    TSite.editor = UE.getEditor('editor');
     // 限制分钟选项为 0 和 30
     var timeInputs = document.querySelectorAll('input[type="time"]');
     timeInputs.forEach(function(input) {
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tStudent/tStudent.js b/cloud-server-management/src/main/webapp/static/modular/system/tStudent/tStudent.js
index 13c9571..c25024a 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tStudent/tStudent.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tStudent/tStudent.js
@@ -62,7 +62,7 @@
 };
 
 /**
- * 打开查看详情
+ * 打开修改
  */
 TStudent.openTStudentDetail = function () {
     if (this.check()) {
@@ -78,6 +78,26 @@
     }
 };
 
+
+/**
+ * 打开详情
+ */
+TStudent.openTStudentDetail1 = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '详情',
+            area: ['100%', '100%'],  //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tStudent/tStudent_info/' + TStudent.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+
+
 /**
  * 删除
  */
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tbBanner/tbBanner.js b/cloud-server-management/src/main/webapp/static/modular/system/tbBanner/tbBanner.js
index 3776702..c9d576d 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tbBanner/tbBanner.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tbBanner/tbBanner.js
@@ -60,7 +60,7 @@
                             return '<a href="javascript:void(0);" style="color: blue" onclick="TbBanner.updateState1(' + row.id +')">正常</a>'
                         }
                         if(value==2){
-                            return '<a href="javascript:void(0);" style="color: red" onclick="TbBanner.updateState2(' + row.id +')">隐藏</a>'
+                                return '<a href="javascript:void(0);" style="color: red" onclick="TbBanner.updateState2(' + row.id +')">隐藏</a>'
                         }
                     }else if(language==2){
                         if(value==1){
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java
index c82bfe8..bf05b03 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java
@@ -5,6 +5,8 @@
 import com.dsh.other.entity.FrequentlyAskedQuestions;
 import com.dsh.other.feignclient.model.AdvertisementChangeStateDTO;
 import com.dsh.other.feignclient.model.AdvertisementQuery;
+import com.dsh.other.entity.CreateHistoryDto;
+import com.dsh.other.entity.GetHistoryDto;
 import com.dsh.other.model.BannerVo;
 import com.dsh.other.model.vo.questionVo.QuestionSearchVO;
 import com.dsh.other.service.IBannerService;
@@ -17,6 +19,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -94,4 +97,24 @@
             return ResultUtil.runErr();
         }
     }
+
+
+    @ResponseBody
+    @PostMapping("/class/hisotory")
+    public  void createHistory(@RequestBody CreateHistoryDto createHistoryDto){
+        createHistoryDto.setDate(new Date());
+
+        bannerService.createHistory(createHistoryDto);
+
+
+    }
+
+    @ResponseBody
+    @PostMapping("/class/gethisotory")
+    public  List<GetHistoryDto> getHistory(@RequestBody Integer studentId){
+
+      return   bannerService.gethistory(studentId);
+
+
+    }
 }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
index 9d8a468..32bb027 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
@@ -32,10 +32,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author zhibing.pu
@@ -304,6 +301,22 @@
             return ResultUtil.runErr();
         }
     }
+    @ResponseBody
+    @PostMapping("/api/site/queryMySiteById")
+    @ApiOperation(value = "获取我的预约场地列表详情2.0", tags = {"用户—预约场地"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "id", name = "id", dataType = "int", required = true),
+            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+    })
+    public ResultUtil<SiteBooking> queryMySiteById(Integer id){
+        try {
+            SiteBooking byId = siteBookingService.getById(id);
+            return ResultUtil.success(byId);
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResultUtil.runErr();
+        }
+    }
 
 
     @ResponseBody
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/TGameController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/TGameController.java
new file mode 100644
index 0000000..1fba71a
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/TGameController.java
@@ -0,0 +1,68 @@
+package com.dsh.other.controller;
+
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.other.entity.Phone;
+import com.dsh.other.entity.Store;
+import com.dsh.other.entity.StoreEvaluation;
+import com.dsh.other.service.PhoneService;
+import com.dsh.other.service.StoreService;
+import com.dsh.other.service.TGameConfigService;
+import com.dsh.other.service.TGameService;
+import com.dsh.other.util.ResultUtil;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 客服电话 控制器
+ */
+
+@Controller
+@RequestMapping("")
+public class TGameController {
+
+    @Resource
+    private TGameService gameService;
+    @Resource
+    private TGameConfigService gameConfigService;
+
+    @Resource
+    private StoreService storeService;
+
+    @ResponseBody
+    @PostMapping("/api/game/getSpaceId")
+    @ApiOperation(value = "智慧球场-获取场地id", tags = {"APP-智慧球场"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "场地名称", name = "name", required = true, dataType = "String"),
+    })
+    public ResultUtil getSpaceId(String name){
+        try {
+            HttpRequest httpRequest = HttpRequest.get("https://try.daowepark.com/v7/user_api/general/space_list?page=1&page_num=100");
+            HttpResponse execute = httpRequest.execute();
+            String body = execute.body();
+            return ResultUtil.success();
+        }catch (Exception e){
+            return ResultUtil.runErr();
+        }
+    }
+
+    public static void main(String[] args) {
+        HttpRequest httpRequest = HttpRequest.get("https://try.daowepark.com/v7/user_api/general/space_list?page=1&page_num=100");
+        HttpResponse execute = httpRequest.execute();
+        String body = execute.body();
+        System.out.println(body);
+    }
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/CreateHistoryDto.java b/cloud-server-other/src/main/java/com/dsh/other/entity/CreateHistoryDto.java
new file mode 100644
index 0000000..22179fd
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/CreateHistoryDto.java
@@ -0,0 +1,18 @@
+package com.dsh.other.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class CreateHistoryDto {
+
+    private String pleasePic;
+    private String passPic;
+    private Integer createBy;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date date;
+    private Integer studentId;
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/GetHistoryDto.java b/cloud-server-other/src/main/java/com/dsh/other/entity/GetHistoryDto.java
new file mode 100644
index 0000000..8124433
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/GetHistoryDto.java
@@ -0,0 +1,20 @@
+package com.dsh.other.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class GetHistoryDto {
+
+    private String pleasePic;
+    private String passPic;
+    private String createBy;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date date;
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/Site.java b/cloud-server-other/src/main/java/com/dsh/other/entity/Site.java
index c85c10f..ca87875 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/entity/Site.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/Site.java
@@ -112,11 +112,11 @@
     private String imgs;
     @TableField("introduce")
     private String introduce;
-    @TableField("是否半场 1是 2否")
+    @TableField("ishalf")
     private Integer ishalf;
-    @TableField("场地名称 多个逗号分割")
+    @TableField("nextName")
     private String nextName;
-    @TableField("半场名称 多个逗号分割")
+    @TableField("halfName")
     private String halfName;
 
 }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java b/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java
index 91a06f9..158c9f1 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.Date;
@@ -69,21 +70,25 @@
      * 预约开始时间
      */
     @TableField("startTime")
+    @ApiModelProperty("预约开始时间")
     private Date startTime;
     /**
      * 预约结束
      */
     @TableField("endTime")
+    @ApiModelProperty("预约结束时间")
     private Date endTime;
     /**
      * 预约人
      */
     @TableField("booker")
+    @ApiModelProperty("预约人")
     private String booker;
     /**
      * 联系方式
      */
     @TableField("phone")
+    @ApiModelProperty("联系方式")
     private String phone;
     /**
      * 支付方式(1=微信,2=支付宝,3=玩湃比,4=手动支付)
@@ -94,11 +99,13 @@
      * 支付时间
      */
     @TableField("payTime")
+    @ApiModelProperty("支付时间")
     private Date payTime;
     /**
      * 支付金额
      */
     @TableField("payMoney")
+    @ApiModelProperty("支付金额")
     private Double payMoney;
     /**
      * 优惠券id
@@ -109,6 +116,7 @@
      * 状态(0=待支付,1=待核销,2=已到店,3=已完成,4=已过期,5=已取消)
      */
     @TableField("status")
+    @ApiModelProperty("0=待支付,1=待核销,2=已到店,3=已完成,4=已过期,5=已取消")
     private Integer status;
     /**
      * 第三方支付流水号
@@ -156,10 +164,13 @@
     @TableField("insertTime")
     private Date insertTime;
     @TableField("nextName")
+    @ApiModelProperty("场地名称")
     private String nextName;
     @TableField("isHalf")
+    @ApiModelProperty("半场 是否半场 1是 2否")
     private Integer isHalf;
     @TableField("halfName")
+    @ApiModelProperty("半场名称 ")
     private String halfName;
     @TableField("goType")
     private Integer goType;
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/TGame.java b/cloud-server-other/src/main/java/com/dsh/other/entity/TGame.java
new file mode 100644
index 0000000..4e9e77d
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/TGame.java
@@ -0,0 +1,88 @@
+package com.dsh.other.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 智慧球场
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_game")
+public class TGame extends Model<TGame> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 运营商id  0为平台
+     */
+    @TableField("operationId")
+    private Integer operationId;
+
+    /**
+     * 省
+     */
+    private String province;
+
+    /**
+     * 省code
+     */
+    @TableField("provinceCode")
+    private String provinceCode;
+
+    /**
+     * 市
+     */
+    private String city;
+
+    /**
+     * 市code
+     */
+    @TableField("cityCode")
+    private String cityCode;
+
+    /**
+     * 门店id
+     */
+    @TableField("storeId")
+    private Integer storeId;
+
+    /**
+     * 场地id
+     */
+    @TableField("siteId")
+    private Integer siteId;
+
+    /**
+     * 蓝色方id
+     */
+    private String blue;
+
+    /**
+     * 红方id
+     */
+    private String red;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/TGameConfig.java b/cloud-server-other/src/main/java/com/dsh/other/entity/TGameConfig.java
new file mode 100644
index 0000000..a25f44a
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/TGameConfig.java
@@ -0,0 +1,71 @@
+package com.dsh.other.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 游戏配置
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_game_config")
+public class TGameConfig extends Model<TGameConfig> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 图
+     */
+    private String img;
+
+    /**
+     * 玩湃币
+     */
+    @TableField("playCoin")
+    private BigDecimal playCoin;
+
+    /**
+     * 现金
+     */
+    private BigDecimal cash;
+
+    /**
+     * 积分
+     */
+    private BigDecimal integral;
+
+    /**
+     * 游戏id
+     */
+    @TableField("gameId")
+    private Integer gameId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java
index 58b8146..929707c 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java
@@ -8,12 +8,20 @@
 import org.springframework.web.bind.annotation.PathVariable;
 
 import java.util.List;
+import com.dsh.other.entity.CreateHistoryDto;
+import com.dsh.other.entity.GetHistoryDto;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @author zhibing.pu
  * @date 2023/7/11 17:46
  */
 public interface BannerMapper extends BaseMapper<Banner> {
+    void createHistory(@Param("createHistoryDto") CreateHistoryDto createHistoryDto);
+
+    List<GetHistoryDto> getHistory(@Param("studentId") Integer studentId);
     int changeState(@Param("ids") List<Integer> ids,@Param("state") Integer state);
 
     List<Banner> listAll(@Param("query") AdvertisementQuery query);
diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/TGameConfigMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/TGameConfigMapper.java
new file mode 100644
index 0000000..fec77ec
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/TGameConfigMapper.java
@@ -0,0 +1,17 @@
+package com.dsh.other.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.other.entity.TGameConfig;
+
+/**
+ * <p>
+ * 游戏配置 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-18
+ */
+public interface TGameConfigMapper extends BaseMapper<TGameConfig> {
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/TGameMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/TGameMapper.java
new file mode 100644
index 0000000..a5a826e
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/TGameMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.other.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.other.entity.TGame;
+
+/**
+ * <p>
+ * 智慧球场 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-18
+ */
+public interface TGameMapper extends BaseMapper<TGame> {
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java b/cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java
index e483519..e9b3718 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java
@@ -6,6 +6,10 @@
 import com.dsh.other.feignclient.model.AdvertisementQuery;
 
 import java.util.List;
+import com.dsh.other.entity.CreateHistoryDto;
+import com.dsh.other.entity.GetHistoryDto;
+
+import java.util.List;
 
 /**
  * @author zhibing.pu
@@ -15,4 +19,7 @@
     int changeState(AdvertisementChangeStateDTO dto);
 
     List<Banner> listAll(AdvertisementQuery query);
+    void createHistory(CreateHistoryDto createHistoryDto);
+
+    List<GetHistoryDto> gethistory(Integer studentId);
 }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/TGameConfigService.java b/cloud-server-other/src/main/java/com/dsh/other/service/TGameConfigService.java
new file mode 100644
index 0000000..a46cc23
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/TGameConfigService.java
@@ -0,0 +1,17 @@
+package com.dsh.other.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.other.entity.TGameConfig;
+
+/**
+ * <p>
+ * 游戏配置 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-18
+ */
+public interface TGameConfigService extends IService<TGameConfig> {
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/TGameService.java b/cloud-server-other/src/main/java/com/dsh/other/service/TGameService.java
new file mode 100644
index 0000000..5918b0e
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/TGameService.java
@@ -0,0 +1,17 @@
+package com.dsh.other.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.other.entity.TGame;
+
+/**
+ * <p>
+ * 智慧球场 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-18
+ */
+public interface TGameService extends IService<TGame> {
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java
index c169347..7141a16 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java
@@ -4,6 +4,8 @@
 import com.dsh.other.entity.Banner;
 import com.dsh.other.feignclient.model.AdvertisementChangeStateDTO;
 import com.dsh.other.feignclient.model.AdvertisementQuery;
+import com.dsh.other.entity.CreateHistoryDto;
+import com.dsh.other.entity.GetHistoryDto;
 import com.dsh.other.mapper.BannerMapper;
 import com.dsh.other.service.IBannerService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,6 +19,15 @@
  */
 @Service
 public class BannerServiceImpl extends ServiceImpl<BannerMapper, Banner> implements IBannerService {
+    @Override
+    public void createHistory(CreateHistoryDto createHistoryDto) {
+        this.baseMapper.createHistory(createHistoryDto);
+    }
+
+    @Override
+    public List<GetHistoryDto> gethistory(Integer studentId) {
+        return baseMapper.getHistory(studentId);
+    }
     @Autowired
     private BannerMapper bannerMapper;
     @Override
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
index e1de1aa..1c5a8eb 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
@@ -117,7 +117,7 @@
         ArrayList<String> halfName = new ArrayList<>();
         String nextName1 = site.getNextName();
         String halfName1 = site.getHalfName();
-
+        querySiteInfoVo.setIshalf(site.getIshalf());
         String[] split = nextName1.split(",");
         for (String s : split) {
             nextName.add(s);
@@ -467,7 +467,10 @@
             SiteBooking siteBooking = siteBookingService.getById(queryMySiteVo.getId());
             Site site = this.getById(siteBooking.getSiteId());
             String[] split = siteBooking.getTimes().split(";");
-            queryMySiteVo.setPlayPaiCoin(site.getPlayPaiCoin() * split.length);
+            if(site!=null){
+
+                queryMySiteVo.setPlayPaiCoin(site.getPlayPaiCoin() * split.length);
+            }
         }
         return queryMySiteVos;
     }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameConfigServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameConfigServiceImpl.java
new file mode 100644
index 0000000..38cd9ca
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameConfigServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.other.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.other.entity.TGameConfig;
+import com.dsh.other.mapper.TGameConfigMapper;
+import com.dsh.other.service.TGameConfigService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 游戏配置 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-18
+ */
+@Service
+public class TGameConfigServiceImpl extends ServiceImpl<TGameConfigMapper, TGameConfig> implements TGameConfigService {
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameServiceImpl.java
new file mode 100644
index 0000000..b6d0958
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.other.service.impl;
+
+import com.dsh.other.entity.TGame;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.other.mapper.TGameMapper;
+import com.dsh.other.service.TGameService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 智慧球场 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-18
+ */
+@Service
+public class TGameServiceImpl extends ServiceImpl<TGameMapper, TGame> implements TGameService {
+
+}
diff --git a/cloud-server-other/src/main/resources/mapper/BannerMapper.xml b/cloud-server-other/src/main/resources/mapper/BannerMapper.xml
index 83109e4..254f4bf 100644
--- a/cloud-server-other/src/main/resources/mapper/BannerMapper.xml
+++ b/cloud-server-other/src/main/resources/mapper/BannerMapper.xml
@@ -31,4 +31,17 @@
         </where>
     </select>
 
+    <insert id="createHistory">
+        insert into t_usetime_history (createBy,pleasePic,passPic,insertTime,studentId)
+
+            value(#{createHistoryDto.createBy},#{createHistoryDto.pleasePic},#{createHistoryDto.passPic},#{createHistoryDto.date},#{createHistoryDto.studentId})
+
+    </insert>
+    <select id="getHistory" resultType="com.dsh.other.entity.GetHistoryDto">
+        SELECT hs.insertTime,hs.passPic,hs.pleasePic,us.`name`
+        from t_usetime_history hs
+                 LEFT JOIN sys_user us on hs.createBy = us.id
+        where hs.studentId = #{studentId}
+
+    </select>
 </mapper>
diff --git a/cloud-server-other/src/main/resources/mapper/TGameConfigMapper.xml b/cloud-server-other/src/main/resources/mapper/TGameConfigMapper.xml
new file mode 100644
index 0000000..2cdb2f3
--- /dev/null
+++ b/cloud-server-other/src/main/resources/mapper/TGameConfigMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.other.mapper.TGameConfigMapper">
+
+
+</mapper>
diff --git a/cloud-server-other/src/main/resources/mapper/TGameMapper.xml b/cloud-server-other/src/main/resources/mapper/TGameMapper.xml
new file mode 100644
index 0000000..47e73cb
--- /dev/null
+++ b/cloud-server-other/src/main/resources/mapper/TGameMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.other.mapper.TGameMapper">
+
+
+</mapper>

--
Gitblit v1.7.1