44323
2023-09-20 ef96dbc9278ebae4af204cca9de98c63f0d6328e
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai

 Conflicts:
 cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java
 cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java
 cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java
 cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java
 cloud-server-other/src/main/resources/mapper/BannerMapper.xml
73个文件已修改
66个文件已添加
7519 ■■■■ 已修改文件
.idea/modules.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/workspace.xml 414 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/dto/CreateHistoryDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/dto/GetHistoryDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseDetailReq.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/vo/DetailsListVo.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/resources/mapper/TStudentMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/ActivityApplication.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Site.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/StudentClassInfo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/dto/ClassListDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/dto/SelectDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/dto/updateTimeDto.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/CourseDetailReq.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageInfo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/DetailsListVo.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/PayCourseInfoReq.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/dto/ClassListDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/dto/CreateHistoryDto.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/dto/GetHistoryDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/dto/updateTimeDto.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/StudentClassInfo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/other/HistoryClient.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigTrueMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/TTurnMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/model/dto/StudentClassInfo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java 252 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TOperator.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStore.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreListVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOther.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfig.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfigTrue.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TTurn.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ITStudentService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TOperatorService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigTrueService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TTurnService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigTrueServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStudentServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TTurnServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/GaoDeMapUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ResultUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/TStoreMapper.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/TStoreOtherConfigMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/TStoreOtherConfigTrueMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/TStoreOtherMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/TTurnMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add.html 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_one.html 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_two.html 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit_two.html 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_imgAll.html 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html 133 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudent.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html 1047 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit_first.html 362 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOther.js 560 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherOne.js 724 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info_one.js 713 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tStudent/tStudent.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tbBanner/tbBanner.js 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/TGameController.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/CreateHistoryDto.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/GetHistoryDto.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/Site.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/TGame.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/TGameConfig.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/mapper/TGameConfigMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/mapper/TGameMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/TGameConfigService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/TGameService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameConfigServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/resources/mapper/BannerMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/resources/mapper/TGameConfigMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/resources/mapper/TGameMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.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>
.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" />
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;
    }
}
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")
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;
    }
}
cloud-server-account/src/main/java/com/dsh/account/dto/CreateHistoryDto.java
New file
@@ -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;
}
cloud-server-account/src/main/java/com/dsh/account/dto/GetHistoryDto.java
New file
@@ -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;
}
cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java
New file
@@ -0,0 +1,9 @@
package com.dsh.account.dto;
import lombok.Data;
@Data
public class SelectDto {
    Integer id;
    String value;
}
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);
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseDetailReq.java
New file
@@ -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;
}
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);
}
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();
}
cloud-server-account/src/main/java/com/dsh/account/model/vo/DetailsListVo.java
New file
@@ -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;
}
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);
}
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();
}
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);
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();
    }
}
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>
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>
cloud-server-activity/src/main/java/com/dsh/ActivityApplication.java
@@ -16,6 +16,7 @@
import javax.annotation.PostConstruct;
import java.util.TimeZone;
/**
 * @author jason
 */
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){
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() {
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;
    /**
     * 场地责任险图片
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-赛事活动列表"})
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;
    }
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();
        }
    }
    /**
     * 购买课程微信支付回调
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;
    }
}
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
New file
@@ -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;
    }
}
cloud-server-course/src/main/java/com/dsh/course/entity/StudentClassInfo.java
New file
@@ -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;
}
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;
}
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;
}
cloud-server-course/src/main/java/com/dsh/course/entity/dto/ClassListDto.java
New file
@@ -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;
}
cloud-server-course/src/main/java/com/dsh/course/entity/dto/SelectDto.java
New file
@@ -0,0 +1,9 @@
package com.dsh.course.entity.dto;
import lombok.Data;
@Data
public class SelectDto {
    Integer id;
    String value;
}
cloud-server-course/src/main/java/com/dsh/course/entity/dto/updateTimeDto.java
New file
@@ -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;
}
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);
}
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);
}
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);
}
cloud-server-course/src/main/java/com/dsh/course/model/CourseDetailReq.java
New file
@@ -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;
}
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;
}
cloud-server-course/src/main/java/com/dsh/course/model/DetailsListVo.java
New file
@@ -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;
}
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;
}
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);
}
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);
}
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;
    }
}
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -298,15 +298,20 @@
            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;
            if(coursePackageDiscount!=null){
                String content = coursePackageDiscount.getContent();
            DiscountJsonDto discountJsonDto = null;
            try {
                discountJsonDto = objectMapper.readValue(content, DiscountJsonDto.class);
@@ -314,6 +319,8 @@
            } catch (JsonProcessingException e) {
                throw new RuntimeException(e);
            }
            }
            switch (payType) {
                case 1:
                case 2:
@@ -586,6 +593,14 @@
        SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
        if (tCoursePackagePayments.size() > 0 ){
            for (TCoursePackagePayment tCoursePackagePayment : tCoursePackagePayments) {
                List<CoursePackageStudent> coursePackageStudent1 = cpsMapper.selectList(new QueryWrapper<CoursePackageStudent>()
                        .eq("coursePackageId",tCoursePackagePayment.getCoursePackageId() )
                        .eq("studentId",stuId)
                        .eq("appUserId",appUserId)
                        .eq("reservationStatus",1));
                if (ToolUtil.isNotEmpty(coursePackageStudent1) && coursePackageStudent1.size() > 0){
                    for (CoursePackageStudent coursePackageStudent : coursePackageStudent1) {
                RecordAppoint recordVo = new RecordAppoint();
                recordVo.setCoursePackageId(tCoursePackagePayment.getCoursePackageId());
@@ -600,13 +615,6 @@
                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>()
                        .eq("coursePackageId",tCoursePackagePayment.getCoursePackageId() )
                        .eq("studentId",stuId)
                        .eq("appUserId",appUserId)
                        .eq("reservationStatus",1));
                if (ToolUtil.isNotEmpty(coursePackageStudent) && coursePackageStudent.getReservationStatus() == 1){
                    recordVo.setCourseStuRecordId(coursePackageStudent.getId());
                    String classWeeks = coursePackage.getClassWeeks();
                    String[] split = classWeeks.split(";");
@@ -642,11 +650,13 @@
                    }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);
    }
}
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();
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 = "";//支付回调网关地址
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>
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>
cloud-server-management/src/main/java/com/dsh/course/dto/ClassListDto.java
New file
@@ -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;
}
cloud-server-management/src/main/java/com/dsh/course/dto/CreateHistoryDto.java
New file
@@ -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;
}
cloud-server-management/src/main/java/com/dsh/course/dto/GetHistoryDto.java
New file
@@ -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;
}
cloud-server-management/src/main/java/com/dsh/course/dto/updateTimeDto.java
New file
@@ -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;
}
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();
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java
New file
@@ -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);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/StudentClassInfo.java
New file
@@ -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;
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/other/HistoryClient.java
New file
@@ -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);
}
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);
}
cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorMapper.java
New file
@@ -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> {
}
cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigMapper.java
New file
@@ -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> {
}
cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherConfigTrueMapper.java
New file
@@ -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> {
}
cloud-server-management/src/main/java/com/dsh/course/mapper/TStoreOtherMapper.java
New file
@@ -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> {
}
cloud-server-management/src/main/java/com/dsh/course/mapper/TTurnMapper.java
New file
@@ -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> {
}
cloud-server-management/src/main/java/com/dsh/course/model/dto/StudentClassInfo.java
New file
@@ -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;
}
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){
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;
        }
    }
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<>();
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);
        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,"");
    }
}
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);
    }
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TOperator.java
New file
@@ -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;
    }
}
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;
}
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;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOther.java
New file
@@ -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;
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfig.java
New file
@@ -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;
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStoreOtherConfigTrue.java
New file
@@ -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;
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TTurn.java
New file
@@ -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;
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java
New file
@@ -0,0 +1,9 @@
package com.dsh.guns.modular.system.model.dto;
import lombok.Data;
@Data
public class SelectDto {
    Integer id;
    String value;
}
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);
}
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);
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TOperatorService.java
New file
@@ -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> {
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigService.java
New file
@@ -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> {
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherConfigTrueService.java
New file
@@ -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> {
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TStoreOtherService.java
New file
@@ -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> {
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/TTurnService.java
New file
@@ -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> {
}
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);
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorServiceImpl.java
New file
@@ -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 {
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigServiceImpl.java
New file
@@ -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 {
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherConfigTrueServiceImpl.java
New file
@@ -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 {
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStoreOtherServiceImpl.java
New file
@@ -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 {
}
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);
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TTurnServiceImpl.java
New file
@@ -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 {
}
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);
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;
cloud-server-management/src/main/resources/mapper/TOperatorMapper.xml
New file
@@ -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>
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>
cloud-server-management/src/main/resources/mapper/TStoreOtherConfigMapper.xml
New file
@@ -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>
cloud-server-management/src/main/resources/mapper/TStoreOtherConfigTrueMapper.xml
New file
@@ -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>
cloud-server-management/src/main/resources/mapper/TStoreOtherMapper.xml
New file
@@ -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>
cloud-server-management/src/main/resources/mapper/TTurnMapper.xml
New file
@@ -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>
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>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_one.html
New file
@@ -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>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_add_two.html
New file
@@ -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>
@}
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">
cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit_two.html
New file
@@ -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>
@}
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>
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>
                        @}
                    </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>
                <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>
                    <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: {
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"/>
cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html
@@ -36,63 +36,78 @@
    let amis = amisRequire('amis/embed');
    // 通过替换下面这个配置来生成不同页面
    let amisJSON = {
      "type": "page",
      "body": [
        {
          "type": "page",
          "api": {
            "method": "post",
            "url": "/api/v1/sys/user/v2/add",
            "messages": {
            }
          },
      "type": "form",
      "title": "编辑",
          "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": "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",
              "id": "u:2dd6bf52bf62"
          "wrapperComponent": "h2"
            },
            {
              "type": "input-text",
              "label": "所属用户",
              "name": "userName",
              "id": "u:b60e636c6098",
          "name": "userName",
              "size": "md",
              "mode": "horizontal",
              "value" :`${item.userName}`
          "required": true,
          "disabled": true
            },
            {
              "type": "input-text",
              "label": "姓名",
              "name": "name",
          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp姓名",
              "id": "u:0b2463bbffe8",
          "name": "name",
              "size": "md",
              "mode": "horizontal",
              "value" :`${item.name}`
          "required": true
            },
            {
              "type": "input-date",
              "label": "生日",
          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp生日",
              "name": "birthday",
              "id": "u:9fe564fc31fc",
              "embed": false,
              "size": "md",
              "mode": "horizontal",
              "value" :`${item.birthday}`
          "embed": false,
          "format": "YYYY-MM-DD hh:mm:ss",
          "inputFormat": "YYYY-MM-DD",
          "required": true
            },
            {
              "type": "select",
              "label": "性别",
          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp性别",
              "name": "sex",
          "id": "u:196a32204b25",
          "size": "md",
          "mode": "horizontal",
              "options": [
                {
                  "label": "男",
@@ -103,11 +118,8 @@
                  "value": "2"
                }
              ],
              "id": "u:196a32204b25",
              "multiple": false,
              "size": "md",
              "mode": "horizontal",
              "value" :`${item.sex}`
          "required": true
            },
            {
              "type": "input-text",
@@ -116,52 +128,205 @@
              "id": "u:e7cf50e4f755",
              "size": "md",
              "mode": "horizontal",
              "value" :`${item.phone}`
          "required": true,
          "validationErrors": {
            "isPhoneNumber": "请输入正确的手机号"
          },
          "validateOnChange": true,
          "validations": {
            "isPhoneNumber": true
          }
            },
            {
              "type": "input-text",
              "label": "身高",
          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp身高",
              "name": "height",
              "id": "u:c69b5e6ae298",
              "size": "md",
              "mode": "horizontal",
              "value" :`${item.height}`
          "required": true,
          "validationErrors": {
            "maximum": "请输入正确的身高",
            "isNumeric": "请输入数字"
          },
          "validateOnChange": true,
          "validations": {
            "maximum": 250,
            "isNumeric": true
          },
          "addOn": {
            "label": "cm",
            "type": "text"
          }
            },
            {
              "type": "input-text",
              "label": "体重",
          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp体重",
              "name": "weight",
              "id": "u:e1e5d1a95e71",
              "size": "md",
              "mode": "horizontal",
              "value" :`${item.weight}`
          "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",
              "id": "u:75a1f3f0c491",
              "size": "md",
              "mode": "horizontal",
              "value" :`${item.idCard}`
          "required": true,
          "validationErrors": {
            "isId": "请输入正确的身份证号"
            },
            {
              "type": "grid",
              "columns": [
              ],
              "id": "u:c54439aa7c6f"
          "validateOnChange": true,
          "validations": {
            "isId": true
          }
            },
            {
              "type": "tpl",
              "tpl": "体测表:",
          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp体测表:",
              "inline": true,
              "wrapperComponent": "",
              "id": "u:8224ab367da8"
            },
            {
              "type": "image",
              "id": "u:9b276f60fd0f",
              "src" :`${item.lateralSurface}`
          "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": "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"
            },
            {
              "type": "divider",
@@ -176,262 +341,650 @@
            },
            {
              "type": "input-date",
              "label": "入学时间",
              "name": "birthday",
              "id": "u:9fe564fc31fc",
              "embed": false,
              "mode": "horizontal",
              "size": "md"
            },
            {
              "type": "input-date",
              "label": "课时有效期",
          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp入学时间:",
              "name": "birthday",
              "id": "u:fe7e8d2223a3",
              "embed": false,
              "mode": "inline",
              "size": "md"
            },
            {
              "type": "button",
              "label": "按钮",
              "onEvent": {
                "click": {
                  "actions": [
                    {
                      "args": {},
                      "script": "parent.layer.close(window.parent.TStudent.layerIndex);\nconsole.log(\"===关闭\")",
                      "actionType": "custom"
                    }
                  ]
                }
              },
              "id": "u:e4351e254501",
              "block": false,
              "size": "sm"
            },
            {
              "type": "button",
              "label": "按钮",
              "id":"ttt",
              "onEvent": {
                "click": {
                  "actions": [
                  ]
                }
              },
              "id": "u:301c5568d984",
              "block": false,
              "size": "sm"
            },
            {
              "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"
          "size": "md",
          "value":`${studentClassInfo.inDate}`
            },
            {
              "type": "tpl",
              "id": "u:8224ab367da8",
              "tpl": "已报名课程:",
          "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": "tpl",
              "id": "u:6653713899d6",
              "tpl": "课时有效期:",
              "inline": true,
              "wrapperComponent": "",
              "style": {
                "paddingBottom": "100",
                "marginBottom": "100"
              }
            },
            {
              "type": "date",
              "id": "u:5126d1e417f2",
              "valueFormat": "YYYY-MM-DD",
              "format": "YYYY-MM-DD",
              "name":"useTime"
            },
            {
              "type": "tpl",
              "id": "u:8224ab367da8",
              "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"
                      "actionType": "dialog",
                      "dialog": {
                        "type": "form",
                        "title": "弹框标题",
                        "body": [
                          {
                            "type": "input-text",
                            "label": "id",
                            "name": "id",
                            "id": "u:0a5bc6f58ee8"
            },
            {
              "type": "crud",
              "id": "u:109d99e159cd",
              "syncLocation": false,
              "api": {
                "method": "get",
                "url": ""
                              "url": "/tStudent/getHisory/$id"
              },
              "columns": [
                {
                  "name": "id",
                  "label": "ID",
                  "type": "text",
                  "id": "u:21721a4d89f6"
                },
                {
                  "type": "text",
                  "label": "课程名称",
                  "id": "u:7f42dca56223"
                },
                {
                  "type": "text",
                  "label": "课程类型",
                  "id": "u:3448716fbf69"
                },
                {
                                "name": "insertTime",
                                "label": "操作时间",
                  "type": "date",
                  "label": "报名时间",
                  "id": "u:fabf6836f645"
                                "id": "u:b652786dc9df"
                },
                {
                  "type": "text",
                  "label": "总课时数",
                  "id": "u:29594df9f5ac"
                                "label": "操作人",
                                "name": "createBy",
                                "id": "u:88bf448f69b0"
                },
                {
                  "type": "text",
                  "label": "已上课时数",
                  "id": "u:d5c9d7549565"
                                "type": "image",
                                "label": "申请凭证",
                                "name": "picPlease",
                                "id": "u:b22cfb737009"
                },
                {
                  "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"
                            },
                            {
                              "name": "engine",
                              "label": "渲染引擎",
                              "type": "static"
                            }
                          ]
                        }
                      },
                      "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"
                    }
                  ],
                  "id": "u:13c653566505"
                                "type": "image",
                                "label": "同意凭证",
                                "name": "picPass",
                                "id": "u:2a9071d0bda1"
                }
              ],
              "bulkActions": [
              ],
              "itemActions": [
              ],
              "features": [
                "delete",
                "view",
                "update"
              ]
                            "id": "u:bfea49b7b171",
                            "perPageAvailable": [
                              10
                            ],
                            "messages": {
                            }
            }
          ],
          "id": "u:7c5f75a3b7b5",
                        "showCloseButton": true,
                        "showErrorMsg": true,
                        "showLoading": true,
                        "className": "app-popover",
                        "id": "u:c4e97065bccb"
                      }
                    }
                  ]
                }
              },
              "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"
                              }
      ],
      "id": "u:2cb85ab1ec8c",
      "showCloseButton": true,
      "closeOnEsc": true,
      "showErrorMsg": true,
      "showLoading": true,
      "dataMapSwitch": false,
      "size": "md",
      "aside": [
                            "className": "app-popover",
                            "id": "u:552bd1b3464d"
                          }
                        }
      ]
                    }
                  },
                  "id": "u:ae1e6e73beb9",
                  "level": "link"
                }
              ]
            }
          ],
          "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:7c5f75a3b7b5",
      "api": {
        "method": "post",
        "url": "/tStudent/update",
        "messages": {
        }
      },
      "actions": [
      ],
      "mode": "normal",
      "validateOnChange": true
    };
    let amisScoped = amis.embed('#root', amisJSON);
cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit_first.html
New file
@@ -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>
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'
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOther.js
New file
@@ -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);
    }
}
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShopOtherOne.js
New file
@@ -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);
}
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info.js
@@ -166,13 +166,17 @@
        return ;
    }
    let pCode = $("#pCode").val()
    let cCode = $("#cCode").val()
    var OBJradio= $("input[name='type']:checked").val();
    if(OBJradio==2){
    let account = $("#account").val()
    if(account==''){
        Feng.info("请选择所属账号")
            Feng.info("请选择所属运营商")
        return;
    }
    }
    let pCode = $("#pCode").val()
    let cCode = $("#cCode").val()
    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,10 +401,14 @@
    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("请选择所属账号")
            Feng.info("请选择所属运营商")
        return;
    }
    }
    let name = $("#name").val()
    let phone = $("#phone").val()
cloud-server-management/src/main/webapp/static/modular/system/tShop/tShop_info_one.js
New file
@@ -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();
    }
}
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("请选择省")
    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;
    }
    if($("#cCode").val()==''){
        Feng.info("请选择市")
        SelectValue= yys
    }
    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) {
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;
    }
};
/**
 * 删除
 */
cloud-server-management/src/main/webapp/static/modular/system/tbBanner/tbBanner.js
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);
    }
}
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
cloud-server-other/src/main/java/com/dsh/other/controller/TGameController.java
New file
@@ -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);
    }
}
cloud-server-other/src/main/java/com/dsh/other/entity/CreateHistoryDto.java
New file
@@ -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;
}
cloud-server-other/src/main/java/com/dsh/other/entity/GetHistoryDto.java
New file
@@ -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;
}
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;
}
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;
cloud-server-other/src/main/java/com/dsh/other/entity/TGame.java
New file
@@ -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;
    }
}
cloud-server-other/src/main/java/com/dsh/other/entity/TGameConfig.java
New file
@@ -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;
    }
}
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);
cloud-server-other/src/main/java/com/dsh/other/mapper/TGameConfigMapper.java
New file
@@ -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> {
}
cloud-server-other/src/main/java/com/dsh/other/mapper/TGameMapper.java
New file
@@ -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> {
}
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);
}
cloud-server-other/src/main/java/com/dsh/other/service/TGameConfigService.java
New file
@@ -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> {
}
cloud-server-other/src/main/java/com/dsh/other/service/TGameService.java
New file
@@ -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> {
}
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
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,8 +467,11 @@
            SiteBooking siteBooking = siteBookingService.getById(queryMySiteVo.getId());
            Site site = this.getById(siteBooking.getSiteId());
            String[] split = siteBooking.getTimes().split(";");
            if(site!=null){
            queryMySiteVo.setPlayPaiCoin(site.getPlayPaiCoin() * split.length);
        }
        }
        return queryMySiteVos;
    }
cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameConfigServiceImpl.java
New file
@@ -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 {
}
cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameServiceImpl.java
New file
@@ -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 {
}
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>
cloud-server-other/src/main/resources/mapper/TGameConfigMapper.xml
New file
@@ -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>
cloud-server-other/src/main/resources/mapper/TGameMapper.xml
New file
@@ -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>