44323
2023-10-08 7808456a1e50af2dbd67488278eac85a558bd8f9
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai

 Conflicts:
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
 cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java
 cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
 cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
68个文件已修改
45个文件已添加
11448 ■■■■■ 已修改文件
.idea/modules.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/workspace.xml 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/RecordAppoint.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/QueryDataFee.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/model/QueryDataFee.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/model/QueryDataFee.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/PacQueryDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/dto/StudentQeryDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/model/RecordAppoint.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/QueryDataFee.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/dto/JsDto.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/dto/StudentQeryDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/QueryDataFee.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/Competition.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageClient.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/other/BallClient.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/SiteBookingMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionAuditController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java 445 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GameConfig.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GameConfigDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteBooking.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TGameConfig.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/BookingQuery.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/OrderDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/PacQueryDto.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/TimeDto.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ISiteBookingService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteBookingServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/SiteBookingMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/resources/mapper/TStoreMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html 965 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html 1309 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/jieshao.html 1163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/paike.html 410 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue.html 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html 296 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_edit.html 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetitionAudit/TCompetition_edit.html 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_detail_one.html 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TCity_edit.html 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoodsAudit.html 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoods_add.html 569 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoods_detail_one.html 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoods_detail_two.html 396 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoods_edit.html 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoods_pay.html 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TStoreList.html 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/ball/ball.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/ball/ball_info.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js 542 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tGoodsAudit/TStoreInfo.js 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tGoodsAudit/tGoods.js 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tGoodsAudit/tGoods_info.js 804 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/tGoodsAudit/tPay_info.js 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/StoreConfigController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/BookingQuery.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/Game.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/TGameConfig.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/TGameRecord.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/TStoreOtherConfigTrue.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/mapper/GameMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/mapper/TGameRecordMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/GameService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/TGameRecordService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/GameServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameRecordServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/util/HttpRequestUtil.java 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/resources/mapper/GameMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/resources/mapper/TGameRecordMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
logs/mb-cloud-management/2023-10/debug.2023-10-07.0.log117386460201400.tmp 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/modules.xml
@@ -3,7 +3,6 @@
  <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-course/mb-cloud-course.iml" filepath="$PROJECT_DIR$/cloud-server-course/mb-cloud-course.iml" />
    </modules>
  </component>
</project>
.idea/workspace.xml
@@ -25,11 +25,13 @@
    <select />
  </component>
  <component name="ChangeListManager">
    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="9.26。15">
    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="10.8">
      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CourseCounsumServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CourseCounsumServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_add.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java" afterDir="false" />
    </list>
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -77,43 +79,43 @@
    <option name="hideEmptyMiddlePackages" value="true" />
    <option name="showLibraryContents" value="true" />
  </component>
  <component name="PropertiesComponent"><![CDATA[{
  "keyToString": {
    "DefaultHtmlFileTemplate": "HTML File",
    "RequestMappingsPanelOrder0": "0",
    "RequestMappingsPanelOrder1": "1",
    "RequestMappingsPanelWidth0": "75",
    "RequestMappingsPanelWidth1": "75",
    "RunOnceActivity.OpenProjectViewOnStart": "true",
    "RunOnceActivity.ShowReadmeOnStart": "true",
    "WebServerToolWindowFactoryState": "false",
    "git-widget-placeholder": "master",
    "ignore.virus.scanning.warn.message": "true",
    "last_opened_file_path": "D:/ttt/java/PlayPai/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball",
    "node.js.detected.package.eslint": "true",
    "node.js.detected.package.tslint": "true",
    "node.js.selected.package.eslint": "(autodetect)",
    "node.js.selected.package.tslint": "(autodetect)",
    "nodejs_package_manager_path": "npm",
    "project.structure.last.edited": "模块",
    "project.structure.proportion": "0.15",
    "project.structure.side.proportion": "0.54367816",
    "service.view.auto.scroll.to.source": "true",
    "settings.editor.selected.configurable": "MavenSettings",
    "spring.configuration.checksum": "7fb6c6ffe49cf7315145a28a96be3d8f",
    "vue.rearranger.settings.migration": "true"
  <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;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&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:/Javaproject/PlayPay/cloud-server-management/src/main/webapp/WEB-INF/view/system/ball&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;nodejs_package_manager_path&quot;: &quot;npm&quot;,
    &quot;project.structure.last.edited&quot;: &quot;模块&quot;,
    &quot;project.structure.proportion&quot;: &quot;0.15&quot;,
    &quot;project.structure.side.proportion&quot;: &quot;0.54367816&quot;,
    &quot;service.view.auto.scroll.to.source&quot;: &quot;true&quot;,
    &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
    &quot;spring.configuration.checksum&quot;: &quot;6e27eb92c8707375af194da5aa857bbc&quot;,
    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
  }
}]]></component>
}</component>
  <component name="ReactorSettings">
    <option name="notificationShown" value="true" />
  </component>
  <component name="RecentsManager">
    <key name="CopyFile.RECENT_KEYS">
      <recent name="D:\Javaproject\PlayPay\cloud-server-management\src\main\webapp\WEB-INF\view\system\ball" />
      <recent name="D:\Javaproject\PlayPay\cloud-server-management\src\main\webapp\static\modular\system\ball" />
      <recent name="D:\Javaproject\PlayPay\cloud-server-course\src\main\resources\mapper" />
      <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\WEB-INF\view\system\ball" />
      <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\static\modular\system\ball" />
      <recent name="D:\ttt\java\PlayPai\cloud-server-other\src\main\resources\mapper" />
      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\coursePackage" />
      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\WEB-INF\view\system\coursePackage" />
    </key>
    <key name="MoveFile.RECENT_KEYS">
      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tStudent" />
@@ -121,11 +123,11 @@
      <recent name="D:\ttt\java\PlayPai\cloud-server-parent" />
    </key>
    <key name="CopyClassDialog.RECENTS_KEY">
      <recent name="com.dsh.guns.modular.system.service.impl" />
      <recent name="com.dsh.guns.modular.system.service" />
      <recent name="com.dsh.other.mapper" />
      <recent name="com.dsh.other.service.impl" />
      <recent name="com.dsh.other.service" />
      <recent name="com.dsh.other.entity" />
      <recent name="com.dsh.other.controller" />
    </key>
  </component>
  <component name="RunDashboard">
@@ -305,6 +307,7 @@
      <workItem from="1696433675086" duration="2211000" />
      <workItem from="1696462020097" duration="481000" />
      <workItem from="1696465598653" duration="19850000" />
      <workItem from="1696639362946" duration="45956000" />
    </task>
    <task id="LOCAL-00001" summary="后台代码删除">
      <created>1690249807612</created>
@@ -597,7 +600,15 @@
      <option name="project" value="LOCAL" />
      <updated>1696489413712</updated>
    </task>
    <option name="localTasksCounter" value="39" />
    <task id="LOCAL-00039" summary="10.8">
      <option name="closed" value="true" />
      <created>1696749061197</created>
      <option name="number" value="00039" />
      <option name="presentableId" value="LOCAL-00039" />
      <option name="project" value="LOCAL" />
      <updated>1696749061197</updated>
    </task>
    <option name="localTasksCounter" value="40" />
    <servers />
  </component>
  <component name="TypeScriptGeneratedFilesManager">
@@ -638,7 +649,8 @@
    <MESSAGE value="9.26。13" />
    <MESSAGE value="9.26。14" />
    <MESSAGE value="9.26。15" />
    <option name="LAST_COMMIT_MESSAGE" value="9.26。15" />
    <MESSAGE value="10.8" />
    <option name="LAST_COMMIT_MESSAGE" value="10.8" />
  </component>
  <component name="XDebuggerManager">
    <breakpoint-manager>
@@ -660,9 +672,14 @@
        </line-breakpoint>
        <line-breakpoint type="java-line">
          <url>file://$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java</url>
          <line>1355</line>
          <line>1358</line>
          <option name="timeStamp" value="14" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="java-line">
          <url>file://$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionAuditController.java</url>
          <line>139</line>
          <option name="timeStamp" value="21" />
        </line-breakpoint>
      </breakpoints>
    </breakpoint-manager>
  </component>
cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java
@@ -1,16 +1,21 @@
package com.dsh.account.controller;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.account.dto.*;
import com.dsh.account.entity.Coach;
import com.dsh.account.entity.GiftSearchDto;
import com.dsh.account.entity.TStudent;
import com.dsh.account.entity.*;
import com.dsh.account.feignclient.course.CoursePaymentClient;
import com.dsh.account.feignclient.course.model.TCoursePackagePayment;
import com.dsh.account.model.QueryDataFee;
import com.dsh.account.model.StudentVo;
import com.dsh.account.service.IVipPaymentService;
import com.dsh.account.service.RechargeRecordsService;
import com.dsh.account.service.TAppUserService;
import com.dsh.account.service.TStudentService;
import com.dsh.account.util.ResultUtil;
import com.dsh.account.util.TokenUtil;
import com.dsh.account.util.ToolUtil;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@@ -19,10 +24,13 @@
import springfox.documentation.swagger2.mappers.ModelMapper;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author zhibing.pu
@@ -37,6 +45,15 @@
    @Autowired
    private TokenUtil tokenUtil;
    @Autowired
    private TAppUserService appUserService;
    @Autowired
    private IVipPaymentService vipPaymentService;
    @Autowired
    private RechargeRecordsService rechargeRecordsService;
    /**
     * 添加学员
@@ -231,4 +248,105 @@
        System.out.println("=======giftSelect======selectDtos====>"+list);
        return list;
    }
    @PostMapping("/student/getUserPt")
    @ResponseBody
    public List<Integer> getUserPt(@RequestBody List<Integer> ids){
        if(ids.size()==0){
            ids.add(-1);
        }
        List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().in(TAppUser::getInsertType, 1));
        return list.stream().map(TAppUser::getId).collect(Collectors.toList());
    }
    @PostMapping("/student/queryFee")
    public HashMap<String, Object> queryFee(@RequestBody QueryDataFee queryDataFee){
        HashMap<String, Object> map = new HashMap<>();
        String data = queryDataFee.getData();
        List<Integer> ids = queryDataFee.getIds();
        if(ids.size()==0){
            ids.add(-1);
        }
        LambdaQueryWrapper<VipPayment> vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>();
        if(ToolUtil.isNotEmpty(data)){
            String stime = data.split(" - ")[0]+" 00:00:00";
            String etime = data.split(" - ")[1]+" 23:59:59";
            vipPaymentLambdaQueryWrapper.between(VipPayment::getInsertTime,stime,etime);
        }
        vipPaymentLambdaQueryWrapper.in(VipPayment::getAppUserId,ids);
        vipPaymentLambdaQueryWrapper.eq(VipPayment::getPayStatus,2);
        List<VipPayment> list = vipPaymentService.list(vipPaymentLambdaQueryWrapper);
        double sum = list.stream().mapToDouble(VipPayment::getAmount).sum();
        map.put("fee1",sum);
        LambdaQueryWrapper<RechargeRecords> rechargeRecordsLambdaQueryWrapper = new LambdaQueryWrapper<>();
        if(ToolUtil.isNotEmpty(data)){
            String stime = data.split(" - ")[0]+" 00:00:00";
            String etime = data.split(" - ")[1]+" 23:59:59";
            rechargeRecordsLambdaQueryWrapper.between(RechargeRecords::getInsertTime,stime,etime);
        }
        rechargeRecordsLambdaQueryWrapper.in(RechargeRecords::getAppUserId,ids);
        rechargeRecordsLambdaQueryWrapper.eq(RechargeRecords::getPayStatus,2);
        List<RechargeRecords> list1 = rechargeRecordsService.list(rechargeRecordsLambdaQueryWrapper);
        double sum1 = list1.stream().map(RechargeRecords::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add).doubleValue();
        map.put("fee2",sum1);
        return map;
    }
    @PostMapping("/student/queryUserAge")
    public HashMap<String, Object> queryUserAge(){
        HashMap<String, Object> map = new HashMap<>();
        List<TAppUser> list = appUserService.list(new LambdaQueryWrapper<TAppUser>().in(TAppUser::getInsertType, 1));
        List<Integer> collect = list.stream().map(TAppUser::getId).collect(Collectors.toList());
        if(collect.size()==0){
            collect.add(-1);
        }
        List<TStudent> list1 = studentService.list(new LambdaQueryWrapper<TStudent>().in(TStudent::getAppUserId, collect));
        int age1=0;
        int age2=0;
        int age3=0;
        int age4=0;
        int boy=0;
        int girl=0;
        for (TStudent tStudent : list1) {
            Date birthday = tStudent.getBirthday();
            long l = DateUtil.betweenYear(birthday, new Date(), true);
            if(l<7){
                age1++;
            }else if(l>=8 && l<11){
                age2++;
            }else if(l>=11 && l<=12){
                age3++;
            }else {
                age4++;
            }
            if(tStudent.getSex()==1){
                boy++;
            }else {
                girl++;
            }
        }
        map.put("age1",age1);
        map.put("age2",age2);
        map.put("age3",age3);
        map.put("age4",age4);
        map.put("boy",boy);
        map.put("girl",girl);
        return map;
    }
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/RecordAppoint.java
@@ -3,6 +3,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class RecordAppoint {
@@ -27,4 +29,11 @@
    @ApiModelProperty(value = "课状态(1待上课 2已开始 3已完成 4已取消 5已请假 6旷课)")
    private Integer status;
    private Integer userId;
    private Integer siteId;
    private List<Integer> ids;
}
cloud-server-account/src/main/java/com/dsh/account/model/QueryDataFee.java
New file
@@ -0,0 +1,16 @@
package com.dsh.account.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class QueryDataFee {
    private String data;
    private List<Integer> ids;
}
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -16,6 +16,7 @@
import com.dsh.activity.model.PointMerchandiseIncomeVo;
import com.dsh.activity.model.PointMerchandiseVo;
import com.dsh.activity.model.WriteOffDTO;
import com.dsh.activity.model.QueryDataFee;
import com.dsh.activity.model.request.*;
import com.dsh.activity.model.response.GoodsInfoOneVo;
import com.dsh.activity.model.response.StoreVos;
@@ -76,6 +77,11 @@
    @Resource
    private CouponCityService ccityService;
    @Resource
    private PointsMerchandiseCityService pmdsCityService;
    @Autowired
    private UserPointsMerchandiseService userPointsMerchandiseService;
@@ -161,9 +167,6 @@
    public List<PointMerchandiseIncomeVo> getAmount(){
        return  userPointsMerchandiseService.getAmount();
    }
    @Resource
    private PointsMerchandiseCityService pmdsCityService;
    @ResponseBody
@@ -637,7 +640,6 @@
    public int dealTimeStatus(String startTime, String endTime){
        LocalDate now = LocalDate.now();
        LocalDate start = LocalDate.parse(startTime);
@@ -985,4 +987,114 @@
    }
    @ResponseBody
    @PostMapping("/base/pointMerchars/getIntegralGoodsListOfSearchAudit")
    public List<Map<String,Object>> getIntegralGoodsListOfSearchAudit(@RequestBody IntegralGoodsOfSearch ofSearch){
        System.out.println(ofSearch);
        List<Map<String, Object>> mapList = pmdsService.queryGoodsListOfSearchAudit(ofSearch);
        if (mapList.size() > 0){
            for (Map<String, Object> stringObjectMap : mapList) {
                Integer o = (Integer) stringObjectMap.get("id");
                String startTime = (String) stringObjectMap.get("startTime");
                String endTime = (String) stringObjectMap.get("endTime");
                stringObjectMap.put("timeValue",startTime + "至"+endTime);
                int count1 = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>()
                        .eq(UserPointsMerchandise::getPointsMerchandiseId, o));
                int count2 = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>()
                        .eq(UserPointsMerchandise::getPointsMerchandiseId, o)
                        .eq(UserPointsMerchandise::getStatus,2));
                stringObjectMap.put("hasExchangeQty",count1);
                stringObjectMap.put("hasPickQty",count2);
                stringObjectMap.put("activeStatus",dealTimeStatus(startTime,endTime));
            }
            if (ToolUtil.isNotEmpty(ofSearch.getActiveStatus())){
                mapList = dealTimeData(mapList,ofSearch.getActiveStatus());
            }
        }
        System.out.println("mapList->"+mapList);
        return mapList;
    }
    @PostMapping("/base/pointMerchars/updateType")
    @ResponseBody
    public Object updateType(@RequestBody String s){
        String[] split = s.split("_");
        PointsMerchandise byId = pmdsService.getById(split[0]);
        byId.setStatus(Integer.valueOf(split[1]));
        if(Integer.valueOf(split[1])==3){
            byId.setRemark(split[2]);
        }
        return   pmdsService.updateById(byId);
    }
    @PostMapping("/base/pointMerchars/queryFee")
    @ResponseBody
    public HashMap<String, Object> queryFee(@RequestBody QueryDataFee queryDataFee){
        HashMap<String, Object> map = new HashMap<>();
        String data = queryDataFee.getData();
        List<Integer> ids = queryDataFee.getIds();
        if(ids.size()==0){
            ids.add(-1);
        }
        List<PointsMerchandise> list1 = pmdsService.list(new LambdaQueryWrapper<PointsMerchandise>().eq(PointsMerchandise::getRedemptionMethod, 3));
        LambdaQueryWrapper<UserPointsMerchandise> vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>();
        if(ToolUtil.isNotEmpty(data)){
            String stime = data.split(" - ")[0]+" 00:00:00";
            String etime = data.split(" - ")[1]+" 23:59:59";
            vipPaymentLambdaQueryWrapper.between(UserPointsMerchandise::getInsertTime,stime,etime);
        }
        vipPaymentLambdaQueryWrapper.in(UserPointsMerchandise::getUserId,ids);
        List<Integer> collect = list1.stream().map(PointsMerchandise::getId).collect(Collectors.toList());
        if(collect.size()==0){
            collect.add(-1);
        }
        vipPaymentLambdaQueryWrapper.in(UserPointsMerchandise::getPointsMerchandiseId,collect);
        vipPaymentLambdaQueryWrapper.eq(UserPointsMerchandise::getPayStatus,2);
        ArrayList<Integer> objects = new ArrayList<>();
        List<UserPointsMerchandise> list = upmseService.list(vipPaymentLambdaQueryWrapper);
        double a =0;
        double d =0;
        double m =0;
        double j =0;
        double y =0;
        for (UserPointsMerchandise userPointsMerchandise : list) {
            for (PointsMerchandise pointsMerchandise : list1) {
                if(pointsMerchandise.getId()==userPointsMerchandise.getPointsMerchandiseId()){
                    a += pointsMerchandise.getCash().doubleValue();
                }
                if(pointsMerchandise.getType()==3){
                    if(pointsMerchandise.getCardType()==1){
                        d += pointsMerchandise.getCash().doubleValue();
                    }
                    if(pointsMerchandise.getCardType()==2){
                        m += pointsMerchandise.getCash().doubleValue();
                    }
                    if(pointsMerchandise.getCardType()==3){
                        j += pointsMerchandise.getCash().doubleValue();
                    }
                    if(pointsMerchandise.getCardType()==4){
                        y += pointsMerchandise.getCash().doubleValue();
                    }
                }
            }
        }
        map.put("all",a);
        map.put("day",d);
        map.put("month",m);
        map.put("quarter",j);
        map.put("year",y);
        return map;
    }
}
cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java
@@ -165,6 +165,10 @@
    private Integer shelves;
    @TableField("cardType")
    private Integer cardType;
    @TableField("status")
    private Integer status;
    @TableField("remark")
    private String remark;
    @Override
    protected Serializable pkVal() {
cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java
@@ -27,6 +27,13 @@
                                                     @Param("activeStatus") Integer activeStatus,
                                                     @Param("state") Integer state,
                                                     @Param("page") Page<Map<String, Object>> page);
    List<Map<String, Object>> queryGoodsListOfSearchAudit(@Param("name")String name,
                                                     @Param("type")Integer type,
                                                     @Param("redemptionMethod")Integer redemptionMethod,
                                                     @Param("userPopulation") Integer userPopulation,
                                                     @Param("activeStatus") Integer activeStatus,
                                                     @Param("state") Integer state,
                                                     @Param("page") Page<Map<String, Object>> page);
    List<Map<String, Object>> ticketList(@Param("query") IntegralGoodsOfSearch ofSearch);
cloud-server-activity/src/main/java/com/dsh/activity/model/QueryDataFee.java
New file
@@ -0,0 +1,16 @@
package com.dsh.activity.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class QueryDataFee {
    private String data;
    private List<Integer> ids;
}
cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java
@@ -22,6 +22,8 @@
    void saveCity(Integer id, String province, String provinceCode, String city, String cityCode);
    List<Map<String, Object>> queryGoodsListOfSearchAudit(IntegralGoodsOfSearch ofSearch);
    List<Map<String, Object>> ticketList(IntegralGoodsOfSearch ofSearch);
    Object changeState(CoachChangeStateVO dto);
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java
@@ -27,6 +27,11 @@
        return this.baseMapper.queryGoodsListOfSearch(ofSearch.getName(),ofSearch.getType(),ofSearch.getRedemptionMethod(),
                ofSearch.getUserPopulation(),ofSearch.getActiveStatus(),ofSearch.getState(),ofSearch.getPage());
    }
    @Override
    public List<Map<String, Object>> queryGoodsListOfSearchAudit(IntegralGoodsOfSearch ofSearch) {
        return this.baseMapper.queryGoodsListOfSearchAudit(ofSearch.getName(),ofSearch.getType(),ofSearch.getRedemptionMethod(),
                ofSearch.getUserPopulation(),ofSearch.getActiveStatus(),ofSearch.getState(),ofSearch.getPage());
    }
    @Override
cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml
@@ -16,6 +16,7 @@
               pickUpQuantity,
               `sort`,
               shelves
        from t_points_merchandise
        where 1 = 1
        <if test="name != null">
@@ -36,6 +37,39 @@
        and `type` !=3
        order by insertTime desc
    </select>
    <select id="queryGoodsListOfSearchAudit" resultType="java.util.Map">
        SELECT id,
               `name`,
               `cover`,
               `type`,
               date_format(startTime ,'%Y-%m-%d') as startTime,
               date_format(endTime ,'%Y-%m-%d') as endTime,
               useScope,
               userPopulation,
               quantityIssued,
               pickUpQuantity,
               `sort`,
               shelves,
        status
        from t_points_merchandise
        where type =3  and `status` !=1
        <if test="name != null">
            and `name` like concat('%', #{name}, '%')
        </if>
        <if test="type != null">
            and cardType = #{type}
        </if>
        <if test="redemptionMethod != null">
            and redemptionMethod = #{redemptionMethod}
        </if>
        <if test="userPopulation != null">
            and userPopulation = #{userPopulation}
        </if>
        <if test="activeStatus != null">
            and `status` = #{activeStatus}
        </if>
        order by insertTime desc
    </select>
    <select id="ticketList" resultType="java.util.Map">
        SELECT id,
        `name`,
cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
@@ -30,10 +30,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
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;
/**
@@ -548,5 +545,32 @@
        }
    }
    @PostMapping("/base/competition/queryFee")
    public Double queryFee(@RequestBody QueryDataFee queryDataFee){
        HashMap<String, Object> map = new HashMap<>();
        String data = queryDataFee.getData();
        List<Integer> ids = queryDataFee.getIds();
        if(ids.size()==0){
            ids.add(-1);
        }
        LambdaQueryWrapper<PaymentCompetition> vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>();
        if(ToolUtil.isNotEmpty(data)){
            String stime = data.split(" - ")[0]+" 00:00:00";
            String etime = data.split(" - ")[1]+" 23:59:59";
            vipPaymentLambdaQueryWrapper.between(PaymentCompetition::getInsertTime,stime,etime);
        }
        vipPaymentLambdaQueryWrapper.in(PaymentCompetition::getAppUserId,ids);
        vipPaymentLambdaQueryWrapper.eq(PaymentCompetition::getPayStatus,2);
        ArrayList<Integer> objects = new ArrayList<>();
        objects.add(1);
        objects.add(2);
        vipPaymentLambdaQueryWrapper.in(PaymentCompetition::getPayType,objects);
        List<PaymentCompetition> list = paymentCompetitionService.list(vipPaymentLambdaQueryWrapper);
        double sum = list.stream().mapToDouble(PaymentCompetition::getAmount).sum();
        return sum;
    }
}
cloud-server-competition/src/main/java/com/dsh/competition/model/QueryDataFee.java
New file
@@ -0,0 +1,16 @@
package com.dsh.competition.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class QueryDataFee {
    private String data;
    private List<Integer> ids;
}
cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
@@ -18,10 +18,7 @@
import com.dsh.course.service.TCoursePackageService;
import com.dsh.course.service.TCoursePackageTypeService;
import com.dsh.course.service.TCourseService;
import com.dsh.course.util.PageFactory;
import com.dsh.course.util.PayMoneyUtil;
import com.dsh.course.util.ResultUtil;
import com.dsh.course.util.TokenUtil;
import com.dsh.course.util.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -35,10 +32,12 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Api
@CrossOrigin
@@ -451,4 +450,68 @@
    public String getHours(@RequestBody Integer coursePackageId1){
        return coursePackageService.getHours(coursePackageId1);
    }
    @PostMapping("/course/queryFee")
    public  HashMap<String, Object> queryFee(@RequestBody QueryDataFee queryDataFee){
        HashMap<String, Object> map = new HashMap<>();
        String data = queryDataFee.getData();
        List<Integer> ids = queryDataFee.getIds();
        if(ids.size()==0){
            ids.add(-1);
        }
        LambdaQueryWrapper<TCoursePackagePayment> wrapper = new LambdaQueryWrapper<>();
        if(ToolUtil.isNotEmpty(data)){
            String stime = data.split(" - ")[0]+" 00:00:00";
            String etime = data.split(" - ")[1]+" 23:59:59";
            wrapper.between(TCoursePackagePayment::getInsertTime,stime,etime);
        }
        wrapper.in(TCoursePackagePayment::getAppUserId,ids);
        wrapper.eq(TCoursePackagePayment::getPayStatus,2);
        ArrayList<Integer> objects = new ArrayList<>();
        objects.add(1);
        objects.add(2);
        objects.add(5);
        objects.add(6);
        wrapper.in(TCoursePackagePayment::getPayType,objects);
        List<TCoursePackagePayment> list = coursePackagePaymentService.list(wrapper);
        double v = list.stream().map(TCoursePackagePayment::getCashPayment).reduce(BigDecimal.ZERO, BigDecimal::add).doubleValue();
        List<Integer> collect = list.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
        if(collect.size()==0){
            collect.add(-1);
        }
        //
        List<TCoursePackage> list2 = coursePackageService.list(new LambdaQueryWrapper<TCoursePackage>().in(TCoursePackage::getId, collect));
        // 课类型
        List<TCoursePackageType> list1 = coursePackageTypeService.list();
        for (TCoursePackagePayment tCoursePackagePayment : list) {
            for (TCoursePackage tCoursePackage : list2) {
                if(tCoursePackagePayment.getCoursePackageId().equals(tCoursePackage.getId())){
                    tCoursePackagePayment.setType(tCoursePackage.getCoursePackageTypeId());
                }
            }
        }
        ArrayList<HashMap<String, Object>> hashMaps = new ArrayList<>();
        for (TCoursePackageType tCoursePackageType : list1) {
            HashMap<String, Object> objectObjectHashMap = new HashMap<>();
            objectObjectHashMap.put("name",tCoursePackageType.getName());
            double a= 0;
            for (TCoursePackagePayment tCoursePackagePayment : list) {
                if(tCoursePackagePayment.getType().equals(tCoursePackageType.getId())){
                   a += tCoursePackagePayment.getCashPayment().doubleValue();
                }
            }
            objectObjectHashMap.put("value",a);
            hashMaps.add(objectObjectHashMap);
        }
        HashMap<String, Object> map1 = new HashMap<>();
        map1.put("fee",v);
        map1.put("data",hashMaps);
        return map1;
    }
}
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -1243,7 +1243,7 @@
        return packagePaymentService.save(packagePayment);
    }
    @ResponseBody
    @PostMapping("/base/coursePack/obtainStudentClassDetails")
    public List<RecordAppoint> obtainStudentClassDetailsData(@RequestBody WeeksOfCourseRest stuId){
        try {
@@ -1558,4 +1558,47 @@
        return a;
    }
    @ResponseBody
    @PostMapping("/coursePackagePayment/queryCourseData")
    public List<Map<String,Object>> queryCourseData(@RequestBody List<Integer> ids){
        // 找出课程类型  找出剩余的课时数
        List<TCoursePackageType> list = coursePackageTypeService.list();
        if(ids.size()==0){
            ids.add(-1);
        }
        List<TCoursePackagePayment> list1 = packagePaymentService.listOne(ids);
        List<Integer> collect = list1.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
        if(collect.size()==0){
            collect.add(-1);
        }
        List<TCoursePackage> list2 = tcpService.list(new LambdaQueryWrapper<TCoursePackage>().in(TCoursePackage::getId, collect));
        for (TCoursePackagePayment tCoursePackagePayment : list1) {
            for (TCoursePackage tCoursePackage : list2) {
                if(tCoursePackagePayment.getCoursePackageId().equals(tCoursePackage.getId())){
                    tCoursePackagePayment.setType(tCoursePackage.getType());
                }
            }
        }
        List<Map<String,Object>> mapList = new ArrayList<>();
        for (TCoursePackageType tCoursePackageType : list) {
            HashMap<String, Object> map = new HashMap<>();
            map.put("name",tCoursePackageType.getName());
            int a =0;
            for (TCoursePackagePayment tCoursePackagePayment : list1) {
                if(tCoursePackagePayment.getType().equals(tCoursePackageType.getId())){
                    a += tCoursePackagePayment.getLaveClassHours();
                }
            }
            map.put("value",a);
            mapList.add(map);
        }
        return mapList;
    }
}
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -53,6 +53,40 @@
    @Resource
    private CoursePackageSchedulingMapper coursePackageSchedulingService;
    @RequestMapping("/getStudentTotal")
    @ResponseBody
    public List<Map<String, Object>> get(@RequestBody StudentQeryDto studentQeryDto) {
        System.out.println("-====studentQeryDto========="+studentQeryDto);
        List<Map<String, Object>>  pays =  paymentService.getStudentTotal(studentQeryDto);
        System.out.println("=========pays======"+pays);
        return  pays;
    }
    @RequestMapping("/bypac")
    @ResponseBody
    public List<Map<String, Object>> bypac(@RequestBody PacQueryDto pacQueryDto) {
        System.out.println("-====studentQeryDto========="+pacQueryDto);
        List<Map<String, Object>>  pays =  paymentService.bypac(pacQueryDto);
        System.out.println("=========pays======"+pays);
        return  pays;
    }
    //获取学员课时数信息
    @RequestMapping("/getInfo")
    @ResponseBody
cloud-server-course/src/main/java/com/dsh/course/entity/PacQueryDto.java
New file
@@ -0,0 +1,16 @@
package com.dsh.course.entity;
import lombok.Data;
@Data
public class PacQueryDto {
    String cityCode;
    String store;
    String name;
    String times;
    String start;
    String end;
    String provinceCode;
}
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
@@ -164,4 +164,29 @@
     */
    @TableField("salesName")
    private String salesName;
    @TableField(exist = false)
    private String studentName;
    @TableField(exist = false)
    private String province;
    @TableField(exist = false)
    private String city;
    @TableField(exist = false)
    private String courseName;
    @TableField(exist = false)
    private Integer hasHours;
    @TableField(exist = false)
    private BigDecimal laveCashPayment;
    @TableField(exist = false)
    private BigDecimal cashPayment1;
    @TableField(exist = false)
    private Integer type;
}
cloud-server-course/src/main/java/com/dsh/course/entity/dto/StudentQeryDto.java
New file
@@ -0,0 +1,14 @@
package com.dsh.course.entity.dto;
import lombok.Data;
import java.util.Date;
@Data
public class StudentQeryDto {
    String cityCode;
    String start;
    String end;
    String studentName;
    String times;
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/model/RecordAppoint.java
@@ -3,6 +3,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class RecordAppoint {
@@ -27,4 +29,10 @@
    @ApiModelProperty(value = "课状态(1待上课 2已开始 3已完成 4已取消 5已请假 6旷课)")
    private Integer status;
    private Integer userId;
    private Integer siteId;
    private List<Integer> ids;
}
cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
@@ -2,7 +2,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.entity.PacQueryDto;
import com.dsh.course.entity.TCoursePackagePayment;
import com.dsh.course.entity.dto.StudentQeryDto;
import com.dsh.course.model.QueryRegistrationRecord;
import com.dsh.course.model.BillingRequest;
import io.swagger.models.auth.In;
@@ -67,4 +69,11 @@
    boolean updateHoursById(@Param("id") Long id, @Param("i") int i);
    void updateBytime(@Param("coursePackagePayment") TCoursePackagePayment coursePackagePayment);
    List<Map<String, Object>>  getStudentTotal(StudentQeryDto studentQeryDto);
    List<Map<String, Object>> pacQueryDto(PacQueryDto pacQueryDto);
    List<TCoursePackagePayment> listOne(@Param("ids") List<Integer> ids);
}
cloud-server-course/src/main/java/com/dsh/course/model/QueryDataFee.java
New file
@@ -0,0 +1,16 @@
package com.dsh.course.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class QueryDataFee {
    private String data;
    private List<Integer> ids;
}
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
@@ -3,7 +3,9 @@
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.course.entity.PacQueryDto;
import com.dsh.course.entity.TCoursePackagePayment;
import com.dsh.course.entity.dto.StudentQeryDto;
import com.dsh.course.feignclient.model.RecordAppoint;
import com.dsh.course.model.*;
import com.dsh.course.model.vo.RegisterCourseVo;
@@ -133,4 +135,9 @@
    List<RegisterOrderVO> listAllRegister(RegisterOrderQuery query);
    List<Map<String, Object>>  getStudentTotal(StudentQeryDto studentQeryDto);
    List<Map<String, Object>> bypac(PacQueryDto pacQueryDto);
    List<TCoursePackagePayment> listOne(List<Integer> ids);
}
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -1,6 +1,9 @@
package com.dsh.course.service.impl;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.domain.Person;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -9,6 +12,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.entity.*;
import com.dsh.course.entity.TAppUser;
import com.dsh.course.entity.dto.StudentQeryDto;
import com.dsh.course.feignclient.account.AppUserClient;
import com.dsh.course.feignclient.account.CoachClient;
import com.dsh.course.feignclient.account.StudentClient;
@@ -46,6 +50,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -148,6 +153,108 @@
            ETime = query.getRegisterTime().split(" - ")[1] + " 23:59:59";
        }
        return cpConfigMapper.listAllRegister(query,STime,ETime,query.getAmount());
    }
    @Override
    public List<Map<String, Object>> getStudentTotal(StudentQeryDto studentQeryDto) {
        List<Map<String, Object>> studentTotal = this.baseMapper.getStudentTotal(studentQeryDto);
        for (Map<String, Object> student : studentTotal) {
            BigDecimal cashPayment = (BigDecimal) student.get("cashPayment");
            BigDecimal totalClassHours = (BigDecimal) student.get("totalClassHours");
            BigDecimal hasHours = (BigDecimal) student.get("hasHours");
            BigDecimal hasPayment = cashPayment.divide(totalClassHours, 2, RoundingMode.HALF_UP)
                    .multiply(hasHours).setScale(2, RoundingMode.HALF_UP);
            student.put("hasPayment", hasPayment);
            Integer appUserId = (Integer) student.get("appUserId");
            AppUser appUser = appuClient.queryAppUser(appUserId);
            student.put("province", appUser.getProvince());
            student.put("provinceCode", appUser.getProvinceCode());
            student.put("city", appUser.getCity());
            student.put("cityCode", appUser.getCityCode());
            Student studentId = studentClient.queryStudentById((Integer) student.get("studentId"));
            student.put("studentName", studentId.getName());
        }
        if (studentQeryDto.getCityCode()!=null&&studentQeryDto.getCityCode()!="") {
            String value = studentQeryDto.getCityCode();
            boolean allZeros = value.substring(value.length() - 4).endsWith("0000");
            System.out.println(allZeros); // Output: true
            if (allZeros){
                Iterator<Map<String, Object>> iterator = studentTotal.iterator();
                while (iterator.hasNext()) {
                    Map<String, Object> student = iterator.next();
                    String cityCode = (String) student.get("provinceCode");
                    if (!cityCode.equals(studentQeryDto.getCityCode())) {
                        iterator.remove(); // Remove the element from the list
                    }
                }
            }else{
            Iterator<Map<String, Object>> iterator = studentTotal.iterator();
            while (iterator.hasNext()) {
                Map<String, Object> student = iterator.next();
                String cityCode = (String) student.get("cityCode");
                if (!cityCode.equals(studentQeryDto.getCityCode())) {
                    iterator.remove(); // Remove the element from the list
                }
            }}
        }
        if (studentQeryDto.getStudentName()!=null&&studentQeryDto.getStudentName()!=""){
            List<Map<String, Object>> totallike = new ArrayList<>();
            for (Map<String, Object> student : studentTotal) {
                String studentName = (String) student.get("studentName");
                if (studentName.contains(studentQeryDto.getStudentName())){
                    totallike.add(student);
                }
            }
            return totallike;
        }
        return studentTotal;
    }
    @Override
    public List<Map<String, Object>> bypac(PacQueryDto pacQueryDto) {
        if (pacQueryDto.getCityCode()!=null&&pacQueryDto.getCityCode()!=""){
            String value = pacQueryDto.getCityCode();
            boolean allZeros = value.substring(value.length() - 4).endsWith("0000");
            System.out.println(allZeros); // Output: true
            if (allZeros){
                pacQueryDto.setProvinceCode(pacQueryDto.getCityCode());
                pacQueryDto.setCityCode(null);
            }
        }
        List<Map<String, Object>> maps = this.baseMapper.pacQueryDto(pacQueryDto);
        if (pacQueryDto.getName()!=null&&pacQueryDto.getName()!=""){
            List<Map<String, Object>> totallike = new ArrayList<>();
            for (Map<String, Object> student : maps) {
                String studentName = (String) student.get("name");
                if (studentName.contains(pacQueryDto.getName())){
                    totallike.add(student);
                }
            }
            return totallike;
        }
        return maps;
    }
    @Override
    public List<TCoursePackagePayment> listOne(List<Integer> ids) {
        return this.baseMapper.listOne(ids);
    }
    /**
@@ -642,6 +749,12 @@
                        TCoursePackage coursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId());
                        recordVo.setUserId(appUserId);
                        recordVo.setSiteId(coursePackage.getSiteId());
                        List<Integer> ids = getIds(coursePackage.getSiteId());
                        recordVo.setIds(ids);
                        recordVo.setCoursePackageName(coursePackage.getName());
                        recordVo.setCourseHours(tCoursePackagePayment.getClassHours());
                        Date date = DateUtil.getDate();
@@ -697,7 +810,23 @@
        }
        return recordVoList;
    }
    public List<Integer>  getIds(Integer siteId) {
        HttpRequest httpRequest = HttpRequest.get("https://try.daowepark.com/v7/user_api/general/get_space_area?space_id=" + siteId);
        HttpResponse execute = httpRequest.execute();
        String body = execute.body();
        JSONObject jsonObject = JSONObject.parseObject(body);
        Object data = jsonObject.get("data");
        JSONArray array = JSONArray.parseArray(data.toString());
        List<Integer> ids =new ArrayList<>();
        for (Object o : array) {
            JSONObject jsonObject1 = JSONObject.parseObject(o.toString());
            Object id = jsonObject1.get("id");
            Integer integer = Integer.valueOf(id.toString());
            ids.add(integer);
        }
        return ids;
    }
    @Override
    public ResultUtil insertVipPaymentCallback(String code, String orderNumber) {
        TCoursePackagePayment coursePackagePayment = this.baseMapper.getCoursePackagePaymentByCode(code);
cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -134,6 +134,77 @@
    </select>
    <select id="getStudentTotal" resultType="map">
        SELECT * from(
                         SELECT studentId, totalClassHours, name as courseName, laveClassHours,cashPayment as cashPayment,hasHours,appUserId,insertTime
                         FROM (
                                  SELECT studentId, totalClassHours, name, laveClassHours,cashPayment, (totalClassHours - laveClassHours) AS hasHours,py.appUserId,py.insertTime
                                  FROM t_course_package_payment py
                                           LEFT JOIN t_course_package cp ON py.coursePackageId = cp.id
                                  UNION ALL
                                  SELECT studentId, SUM(totalClassHours) AS totalClassHours,'总计' as name, SUM(laveClassHours) AS laveClassHours, SUM(cashPayment) AS cashPayment,
                                         (SUM(totalClassHours) - SUM(laveClassHours)) AS hasHours,py.appUserId,py.insertTime
                                  FROM t_course_package_payment py
                                           LEFT JOIN t_course_package cp ON py.coursePackageId = cp.id
                                  GROUP BY studentId
                                  ORDER BY studentId, totalClassHours
                              ) subquery
                     ) a
        <where>
            <if test="null != start and '' != start and null != end and '' != end">
                  a.insertTime between #{start} and #{end}
            </if>
        </where>
    </select>
    <select id="pacQueryDto" resultType="map">
        SELECT
            coursePackageId,
            SUM( cashPayment ) AS cashPayment,
            SUM( totalClassHours ) AS totalClassHours,
            SUM( totalClassHours - laveClassHours ) AS hasHours,
            ROUND( SUM(( totalClassHours - laveClassHours ) * ( cashPayment / totalClassHours )), 2 ) AS lavePay,
            cp.`name` ,
            cp.province,
            cp.city,
            cp.storeId,cp.cityCode,cp.provinceCode,py.insertTime
        FROM
            t_course_package_payment py
                LEFT JOIN t_course_package cp ON py.coursePackageId = cp.id
        <where>
            <if test="null != start and '' != start and null != end and '' != end">
                py.insertTime between #{start} and #{end}
            </if>
            <if test="null != cityCode and '' != cityCode">
               and cityCode =#{cityCode}
            </if>
            <if test="null != provinceCode and '' != provinceCode">
                and provinceCode =#{provinceCode}
            </if>
            <if test="null != name and '' != name">
                and name like CONCAT('%', #{name}, '%')
            </if>
        </where>
        GROUP BY
            coursePackageId
    </select>
    <select id="listOne" resultType="com.dsh.course.entity.TCoursePackagePayment">
        select * from t_course_package_payment where appUserId in <foreach collection="ids" separator="," open="(" item="id" close=")">#{id}</foreach>
    </select>
    <update id="updateBytime">
        update  t_course_package_payment
cloud-server-management/src/main/java/com/dsh/course/dto/JsDto.java
New file
@@ -0,0 +1,10 @@
package com.dsh.course.dto;
import lombok.Data;
@Data
public class JsDto {
    Integer id;
    String vedio;
    String jieshao;
}
cloud-server-management/src/main/java/com/dsh/course/dto/StudentQeryDto.java
New file
@@ -0,0 +1,14 @@
package com.dsh.course.dto;
import lombok.Data;
import java.util.Date;
@Data
public class StudentQeryDto {
    String cityCode;
    String start;
    String end;
    String studentName;
    String times;
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java
@@ -2,13 +2,10 @@
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;
import com.dsh.course.feignClient.account.model.*;
import com.dsh.course.dto.StudentSearch;
import com.dsh.course.dto.TStudentDto;
import com.dsh.course.feignClient.account.model.QueryByNamePhone;
import com.dsh.course.feignClient.account.model.TAppUser;
import com.dsh.course.feignClient.other.model.SiteChangeStateVO;
import com.dsh.guns.modular.system.model.AdvertisementChangeStateDTO;
import com.dsh.guns.modular.system.model.AppUserByNameAndPhoneDTO;
@@ -19,6 +16,7 @@
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.HashMap;
import java.util.List;
@FeignClient("mb-cloud-account")
@@ -95,4 +93,16 @@
    List<GetHistoryDto> getHisory();
    @PostMapping("/student/giftSelect")
    List<SelectDto> giftSelect(@RequestBody GiftSearchDto giftSearchDto);
    @PostMapping("/student/getUserPt")
    List<Integer> getUserPt(List<Integer> ids);
    @PostMapping("/student/queryFee")
    HashMap<String, Object> queryFee(QueryDataFee queryDataFee);
    @PostMapping("/student/queryUserAge")
    HashMap<String, Object> queryUserAge();
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/QueryDataFee.java
New file
@@ -0,0 +1,16 @@
package com.dsh.course.feignClient.account.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class QueryDataFee {
    private String data;
    private List<Integer> ids;
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java
@@ -3,6 +3,10 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.feignClient.activity.model.*;
import com.dsh.course.feignClient.account.model.QueryDataFee;
import com.dsh.course.feignClient.activity.model.IntegralGoodsOfSearch;
import com.dsh.course.feignClient.activity.model.PointMercharsPayedVo;
import com.dsh.course.feignClient.activity.model.PointMercharsVo;
import com.dsh.guns.modular.system.model.CoachChangeStateVO;
import com.dsh.guns.modular.system.model.PointMerchandiseIncomeVo;
import com.dsh.guns.modular.system.model.GoodsInfoOneVo;
@@ -13,6 +17,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -83,4 +88,15 @@
    @PostMapping("/base/pointMerchars/writeOffGoodsStatus")
    boolean writeOffGoodsStatus(@RequestBody Map<String, Object> map);
    @PostMapping("/base/pointMerchars/getIntegralGoodsListOfSearchAudit")
    List<Map<String,Object>>  getIntegralGoodsListOfSearchAudit(IntegralGoodsOfSearch ofSearch);
    @PostMapping("/base/pointMerchars/updateType")
    Object updateType(String s);
    @PostMapping("/base/pointMerchars/queryFee")
    HashMap<String, Object> queryFee(QueryDataFee queryDataFee);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/CompetitionClient.java
@@ -1,6 +1,7 @@
package com.dsh.course.feignClient.competition;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.feignClient.account.model.QueryDataFee;
import com.dsh.course.feignClient.competition.model.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@@ -40,6 +41,11 @@
    @PostMapping("/base/competition/listAudit")
    Page<Competition> listAudit(ListQuery listQuery);
    @PostMapping("/base/competition/queryFee")
    Double queryFee(QueryDataFee queryDataFee);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/Competition.java
@@ -59,7 +59,7 @@
     * 门店id
     */
    @TableField("storeId")
    private Integer storeId;
    private String storeId;
    /**
     * 赛事名称
     */
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java
@@ -1,6 +1,7 @@
package com.dsh.course.feignClient.course;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.feignClient.account.model.QueryDataFee;
import com.dsh.course.feignClient.course.model.CourseChangeStateDTO;
import com.dsh.course.feignClient.course.model.QueryCourseList;
import com.dsh.guns.modular.system.model.EditCourseState;
@@ -11,8 +12,8 @@
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 java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -107,4 +108,10 @@
    @PostMapping("/course/getHours")
    String getHours(Integer coursePackageId1);
    @PostMapping("/course/queryFee")
    HashMap<String, Object> queryFee(QueryDataFee queryDataFee);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageClient.java
@@ -1,10 +1,14 @@
package com.dsh.course.feignClient.course;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.dto.StudentQeryDto;
import com.dsh.course.feignClient.course.model.QueryCoursePackageLists;
import com.dsh.course.feignClient.course.model.QueryExamineCoursePackageLists;
import com.dsh.course.feignClient.course.model.QueryRegistrationRecord;
import com.dsh.course.feignClient.course.model.TCoursePackage;
import com.dsh.guns.modular.system.model.TCoursePackagePayment;
import com.dsh.guns.modular.system.model.dto.BallQueryDto;
import com.dsh.guns.modular.system.model.dto.PacQueryDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -73,4 +77,11 @@
    @PostMapping("/coursePackage/queryExamineCoursePackageLists")
    Page<Map<String, Object>> queryExamineCoursePackageLists(QueryExamineCoursePackageLists queryExamineCoursePackageLists);
    @PostMapping("/courdent/getStudentTotal")
    List<Map<String, Object>> getStudentTotal(StudentQeryDto studentQeryDto);
    @PostMapping("/courdent/bypac")
    List<Map<String, Object>> bypac(PacQueryDto pacQueryDto);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
@@ -88,4 +88,10 @@
    @PostMapping("/coursePackagePayment/CountqueryByClassId")
    Integer queryByClassId(Integer id);
    @PostMapping("/coursePackagePayment/queryCourseData")
    List<Map<String,Object>> queryCourseData(List<Integer> ids);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/other/BallClient.java
@@ -3,16 +3,19 @@
import com.dsh.course.dto.StudentSearch;
import com.dsh.course.dto.TStudentDto;
import com.dsh.course.feignClient.other.model.Banner;
import com.dsh.guns.modular.system.model.AdvertisementChangeStateDTO;
import com.dsh.guns.modular.system.model.AdvertisementQuery;
import com.dsh.guns.modular.system.model.Game;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.model.dto.BallQueryDto;
import com.dsh.guns.modular.system.model.dto.BookingQuery;
import io.swagger.models.auth.In;
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 org.springframework.web.bind.annotation.RequestParam;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@FeignClient(value = "mb-cloud-other")
public interface BallClient {
@@ -20,5 +23,11 @@
    @PostMapping("/student/webStudentList")
    List<Game> list(@RequestBody BallQueryDto ballQueryDto);
    @PostMapping("/save")
    void save(@RequestBody Game game);
    Integer save(@RequestBody Game game);
    @PostMapping("/saveConfig")
    void saveConfig(@RequestBody List<TGameConfig> gameConfigList);
    @PostMapping("/queryGame")
    Game queryGame(@RequestParam("id") Integer id);
    @PostMapping("/listorder")
    List<Map<String, Object>> listorder(@RequestBody BookingQuery bookingQuery);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java
@@ -8,6 +8,7 @@
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.List;
@@ -52,5 +53,11 @@
    @RequestMapping("/base/site/addSite")
    Object addSite(@RequestBody Site site);
    @RequestMapping("/base/site/listById")
    Site listById(@RequestParam("id") Integer id);
    @RequestMapping("/base/site/listBooks")
    List<SiteBooking> listBooks(@RequestParam("id") Integer id);
    @RequestMapping("/base/site/addSiteBooking")
    void addSiteBooking(@RequestBody SiteBooking siteBooking);
}
cloud-server-management/src/main/java/com/dsh/course/mapper/SiteBookingMapper.java
@@ -1,5 +1,6 @@
package com.dsh.course.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.guns.modular.system.model.SiteBooking;
cloud-server-management/src/main/java/com/dsh/course/mapper/StoreMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.guns.modular.system.model.TImgConfig;
import com.dsh.course.dto.JsDto;
import com.dsh.guns.modular.system.model.TStore;
import com.dsh.guns.modular.system.model.TStoreListVo;
import com.dsh.guns.modular.system.model.TTurn;
@@ -64,4 +65,8 @@
    void updateBasicConfig(@Param("position") Integer position,@Param("p1")  String p1);
    void updateBasicBenefits(@Param("position") Integer position,@Param("p1")  String p1);
    void inset(JsDto jsDto);
    JsDto get(Integer id);
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dsh.course.feignClient.account.*;
import com.dsh.course.feignClient.account.model.CityManager;
import com.dsh.course.feignClient.account.model.QueryDataFee;
import com.dsh.course.feignClient.account.model.TAppUser;
import com.dsh.course.feignClient.account.model.VipPayment;
import com.dsh.course.feignClient.activity.PointMercharsClient;
@@ -18,8 +19,9 @@
import com.dsh.course.model.MoneyBack;
import com.dsh.guns.config.UserExt;
import com.dsh.guns.core.base.controller.BaseController;
import com.dsh.guns.core.util.ToolUtil;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.service.ICityService;
import com.dsh.guns.modular.system.service.*;
import groovyjarjarpicocli.CommandLine;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -50,8 +52,14 @@
    private ICityService cityService;
    @Autowired
    private CityManagerClient cityManagerClient;
    @Autowired
    private IUserService sysUserService;
    @Autowired
    private AppUserClient appUserClient;
    @Autowired
    private CourseClient courseClient;
    @Autowired
    private VipPaymentClient vipPaymentClient;
    @Autowired
@@ -60,6 +68,9 @@
    private CoursePackagePaymentClient coursePackagePaymentClient;
    @Autowired
    private CompetitionClient competitionClient;
    @Autowired
    private ISiteBookingService siteBookingService;
    @Autowired
    private StoreClient storeClient;
    @Autowired
@@ -77,6 +88,17 @@
     */
    @RequestMapping("/platform")
    public String index(Model model) {
        Object o = type1(null);
        model.addAttribute("data",o);
        // 教学统计
        HashMap<String, Object> map = appUserClient.queryUserAge();
        model.addAttribute("stuData",map);
        return PREFIX + "platformIncome.html";
    }
@@ -506,6 +528,135 @@
        model.addAttribute("objectType",objectType);
        return PREFIX + "storeIncome.html";
    }
    @Autowired
    private ITSiteTypeService siteTypeService;
    @Autowired
    private ITSiteService siteService;
    @RequestMapping("/type1")
    @ResponseBody
    public Object type1(String time) {
        HashMap<String, Object> map = new HashMap<>();
        // 找出平台的用户
        List<User> list = sysUserService.list(new LambdaQueryWrapper<User>().eq(User::getObjectType, 1));
        List<Integer> ids = list.stream().map(User::getId).collect(Collectors.toList());
        List<Integer> userIds = appUserClient.getUserPt(ids);
        QueryDataFee queryDataFee = new QueryDataFee(time, userIds);
        // 会员费
        HashMap<String, Object> map1 = appUserClient.queryFee(queryDataFee);
        Object fee1 = map1.get("fee1");
        map.put("fee1",fee1);
        //玩湃比
        Object fee2 = map1.get("fee2");
        map.put("fee2",fee2);
        // 课程收入
        HashMap<String, Object> map3 = courseClient.queryFee(queryDataFee);
        map.put("fee3",map3.get("fee"));
        Object data = map3.get("data");
        map.put("courseData",data);
        // 赛事收入
        Double aDouble1 = competitionClient.queryFee(queryDataFee);
        map.put("fee4",aDouble1);
        // 订场
        if(ids.size()==0){
            ids.add(-1);
        }
        LambdaQueryWrapper<SiteBooking> vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>();
        if(ToolUtil.isNotEmpty(time)){
            String stime = time.split(" - ")[0]+" 00:00:00";
            String etime = time.split(" - ")[1]+" 23:59:59";
            vipPaymentLambdaQueryWrapper.between(SiteBooking::getInsertTime,stime,etime);
        }
        if(userIds.size()==0){
            userIds.add(-1);
        }
        vipPaymentLambdaQueryWrapper.in(SiteBooking::getAppUserId,userIds);
        vipPaymentLambdaQueryWrapper.ne(SiteBooking::getStatus,0);
        ArrayList<Integer> objects = new ArrayList<>();
        objects.add(1);
        objects.add(2);
        vipPaymentLambdaQueryWrapper.in(SiteBooking::getPayType,objects);
        List<SiteBooking> list1 = siteBookingService.list(vipPaymentLambdaQueryWrapper);
        double sum = list1.stream().mapToDouble(SiteBooking::getPayMoney).sum();
        map.put("fee5",sum);
        List<Integer> collect = list1.stream().map(SiteBooking::getSiteId).collect(Collectors.toList());
        if(collect.size()==0){
            collect.add(-1);
        }
        List<TSite> list3 = siteService.list(new LambdaQueryWrapper<TSite>().in(TSite::getId, collect));
        for (SiteBooking siteBooking : list1) {
            for (TSite tSite : list3) {
                if(siteBooking.getSiteId().equals(tSite.getId())){
                    siteBooking.setType(tSite.getSiteTypeId());
                }
            }
        }
        List<TSiteType> list2 = siteTypeService.list();
        List<Map<String,Object>> mapList = new ArrayList<>();
        for (TSiteType tSiteType : list2) {
            HashMap<String, Object> map2 = new HashMap<>();
            map2.put("name",tSiteType.getName());
            double a =0;
            for (SiteBooking siteBooking : list1) {
                if(tSiteType.getId().equals(siteBooking.getType())){
                    a += siteBooking.getPayMoney();
                }
            }
            map2.put("value",a);
            mapList.add(map2);
        }
        map.put("siteData",mapList);
        // 商品  门票
        HashMap<String, Object> map2 = pointMercharsClient.queryFee(queryDataFee);
        Object all = map2.get("all");
        Object day = map2.get("day");
        Object month = map2.get("month");
        Object quarter = map2.get("quarter");
        Object year = map2.get("year");
        map.put("fee7",all);
        map.put("dayone",day);
        map.put("monthone",month);
        map.put("quarterone",quarter);
        map.put("yearone",year);
        return map;
    }
    @RequestMapping("/stuCourseData")
    @ResponseBody
    public Object stuCourseData() {
        ArrayList<Integer> objects = new ArrayList<>();
        objects.add(1);
        List<Integer> userIds = appUserClient.getUserPt(objects);
        List<Map<String,Object>> list = coursePackagePaymentClient.queryCourseData(userIds);
        ArrayList<Object> objects2 = new ArrayList<>();
        ArrayList<Object> objects3 = new ArrayList<>();
        for (Map<String, Object> map : list) {
            Object name = map.get("name");
            Object value = map.get("value");
            objects2.add(name);
            objects3.add(value);
        }
        HashMap<String, Object> map = new HashMap<>();
        map.put("data1",objects2);
        map.put("data2",objects3);
        return map;
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionAuditController.java
@@ -84,9 +84,15 @@
        List<TCity> list1 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId,one.getId()));
        List<TStore> list2 = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getCityCode,competition.getCityCode()));
        String[] split = competition.getImgs().split(",");
        ArrayList<String> strings = new ArrayList<>();
        for (String s : split) {
            strings.add(s);
        }
        model.addAttribute("list",list);
        model.addAttribute("list1",list1);
        model.addAttribute("list2",list2);
        model.addAttribute("imgs",strings);
        model.addAttribute("type",2);
        return PREFIX + "TCompetition_edit.html";
    }
@@ -134,11 +140,20 @@
        Page<Competition> competitions = competitionClient.listAudit(listQuery);
        for (Competition competition : competitions.getRecords()) {
            for (TStore tStore : list) {
                if(competition.getStoreId().equals(tStore.getId())){
                String[] split = competition.getStoreId().split(",");
                for (String s : split) {
                    if(s.equals(String.valueOf(tStore.getId()))){
                        if (competition.getStoreName()==null){
                    competition.setStoreName(tStore.getName());
                        }else {
                            competition.setStoreName(competition.getStoreName()+","+tStore.getName());
                }
            }
        }
            }
        }
        return  super.packForBT(competitions);
    }
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
@@ -131,8 +131,16 @@
        Page<Competition> competitions = competitionClient.list(listQuery);
        for (Competition competition : competitions.getRecords()) {
            for (TStore tStore : list) {
                if(competition.getStoreId().equals(tStore.getId())){
                String[] split = competition.getStoreId().split(",");
                for (String s : split) {
                    if(s.equals(String.valueOf(tStore.getId()))){
                        if (competition.getStoreName()==null){
                    competition.setStoreName(tStore.getName());
                        }else {
                            competition.setStoreName(competition.getStoreName()+","+tStore.getName());
                        }
                    }
                }
            }
        }
@@ -166,8 +174,9 @@
            }
            competition.setAuditStatus(1);
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            competition.setStartTime(format.parse(competition.getSTime()));
            competition.setEndTime(format.parse(competition.getETime()));
            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
            competition.setStartTime(format1.parse(competition.getSTime()));
            competition.setEndTime(format1.parse(competition.getETime()));
            competition.setRegisterEndTime(format.parse(competition.getREndTime()));
            competitionClient.add(competition);
            return new SuccessTip<>();
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
@@ -547,6 +547,16 @@
    }
    @GetMapping("/queryProvince")
    @ResponseBody
    public List<Map<String, Object>> queryProvince(){
        List<Map<String, Object>> list = storeService.queryProvince(null);
        return list;
    }
    /**
     * 跳转到审核详情页
     * @param model
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TFinanceController.java
@@ -356,7 +356,7 @@
                        }
                        TAppUser tAppUser = appUserClient.queryById(competition.getAppUserId());
                        Competition competition1 = competitionClient.queryById(competition.getCompetitionId());
                        Store store = storeClient.getStoreById(competition1.getStoreId());
                        Store store = storeClient.getStoreById(Integer.valueOf(competition1.getStoreId()));
                        IncomeVO temp = new IncomeVO();
                        temp.setId(competition.getId().intValue());
                        temp.setProvince(tAppUser.getProvince());
@@ -535,7 +535,7 @@
                        }
                        TAppUser tAppUser = appUserClient.queryById(competition.getAppUserId());
                        Competition competition1 = competitionClient.queryById(competition.getCompetitionId());
                        Store store = storeClient.getStoreById(competition1.getStoreId());
                        Store store = storeClient.getStoreById(Integer.valueOf(competition1.getStoreId().split(",")[0]));
                        IncomeVO temp = new IncomeVO();
                        temp.setId(competition.getId().intValue());
                        temp.setProvince(tAppUser.getProvince());
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java
@@ -51,6 +51,7 @@
    private String PREFIX = "/system/tGoods/";
    private String PREFIX1 = "/system/tGoodsAudit/";
    @Resource
@@ -85,6 +86,10 @@
    public String index(Model model) {
        return PREFIX + "TGoods.html";
    }
    @RequestMapping("/audit")
    public String audit(Model model) {
        return PREFIX1 + "TGoodsAudit.html";
    }
    /**
@@ -244,6 +249,8 @@
        model.addAttribute("list",provinceList);
        return PREFIX + "TStoreList.html";
    }
    /**
     * 跳转到门店管理列表页
     */
@@ -527,6 +534,34 @@
        System.out.println(ofSearch);
        return pointMercharsClient.getIntegralGoodsListOfSearch(ofSearch);
    }
    @RequestMapping(value = "/listAudit")
    @ResponseBody
    public Object listOfIntegralGoodsAudit(String name, Integer type, Integer redemptionMethod , Integer userPopulation, Integer activeStatus) {
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        IntegralGoodsOfSearch ofSearch = new IntegralGoodsOfSearch();
        ofSearch.setPage(page);
        ofSearch.setName(name);
        ofSearch.setType(type);
        ofSearch.setRedemptionMethod(redemptionMethod);
        ofSearch.setUserPopulation(userPopulation);
        ofSearch.setActiveStatus(activeStatus);
        return pointMercharsClient.getIntegralGoodsListOfSearchAudit(ofSearch);
    }
    @RequestMapping(value = "/updateTypeOne")
    @ResponseBody
    public Object updateTypeOne(Integer id, Integer type, String remark) {
        Object o = pointMercharsClient.updateType(id + "_" + type + "_" + remark);
        return SUCCESS_TIP;
    }
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
@@ -27,12 +27,14 @@
import com.dsh.guns.core.util.ToolUtil;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.service.*;
import com.dsh.guns.modular.system.util.HttpRequestUtil;
import com.dsh.guns.modular.system.util.ResultUtil;
import com.sun.org.apache.regexp.internal.RE;
import groovyjarjarpicocli.CommandLine;
import net.bytebuddy.asm.Advice;
import org.aspectj.weaver.ast.Var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@@ -42,10 +44,7 @@
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.*;
/**
 * 车辆管理控制器
@@ -408,8 +407,44 @@
        site.setInsertTime(new Date());
        site.setState(1);
        siteClient.addSite(site);
        HashMap<String, String> map = new HashMap<>();
        map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
        map.put("name",site.getName());
        map.put("short_name",site.getName());
        map.put("location",city);
        map.put("address",store.getAddress());
        map.put("telephone",store.getPhone());
        map.put("linkman","");
        map.put("business_time","[{\"start_time\":\"00:00\",\"close_time\":\"23:59\"}]");
        map.put("logo",store.getCoverDrawing());
        map.put("remark",site.getIntroduce());
        map.put("lat",store.getLat());
        map.put("lng",store.getLon());
        HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addSpace", map);
        return ResultUtil.success("添加成功");
    }
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
        map.put("name","测试场地");
        map.put("short_name","测试场地");
        map.put("location","成都");
        map.put("address","成都地址");
        map.put("telephone","17888888888");
        map.put("linkman","成都");
        map.put("business_time","[{\"start_time\":\"00:00\",\"close_time\":\"23:59\"}]");
        map.put("logo","https://we-park-life.oss-cn-beijing.aliyuncs.com/img/f325d449f2634855ad1fb0cc796465e8.png");
        map.put("remark","场地介绍");
        map.put("lat","30.670124");
        map.put("lng","103.929497");
        String s = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addSpace", map);
        System.out.println(s);
    }
    /**
     *  编辑场地管理
     */
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
@@ -4,6 +4,8 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.course.dto.JsDto;
import com.dsh.course.dto.StudentQeryDto;
import com.dsh.course.feignClient.account.CityManagerClient;
import com.dsh.course.feignClient.account.CoachClient;
import com.dsh.course.feignClient.account.model.CityManager;
@@ -14,11 +16,12 @@
import com.dsh.course.feignClient.course.CoursePackageTypeClient;
import com.dsh.course.feignClient.course.model.TCoursePackageType;
import com.dsh.course.feignClient.other.BallClient;
import com.dsh.course.feignClient.other.SiteClient;
import com.dsh.course.feignClient.other.model.Site;
import com.dsh.guns.config.UserExt;
import com.dsh.guns.core.base.controller.BaseController;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.model.dto.BallQueryDto;
import com.dsh.guns.modular.system.model.dto.ConsumeQuery;
import com.dsh.guns.modular.system.model.dto.*;
import com.dsh.guns.modular.system.service.ICityService;
import com.dsh.guns.modular.system.service.ICoursePackageService;
import com.dsh.guns.modular.system.service.IStoreService;
@@ -47,9 +50,13 @@
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalTime;
import java.util.*;
@Controller
@@ -116,56 +123,405 @@
    @RequestMapping("/save")
    @ResponseBody
    public ResultUtil save(String red,String blue,String province,String city, Integer site,Integer store) {
//        JSONObject jsonObject = JSONObject.parseObject("111");
    public ResultUtil save(String red, String blue, String province, String city, Integer site, Integer store
    , String kuacheng, BigDecimal kuachengCoin, BigDecimal kuachengCash,String kuachengImage,BigDecimal kuachengInt,Integer kuachengId
            , String shequ, BigDecimal shequCoin, BigDecimal shequCash,String shequImage,BigDecimal shequInt,Integer shequId
            , String shemen, BigDecimal shemenCoin, BigDecimal shemenCash,String shemenImage,BigDecimal shemenInt,Integer shemenId
            , String sudu, BigDecimal suduCoin, BigDecimal suduCash,String suduImage,BigDecimal suduInt,Integer suduId
            , String fangkuai, BigDecimal fangkuaiCoin, BigDecimal fangkuaiCash,String fangkuaiImage,BigDecimal fangkuaiInt,Integer fangkuaiId
            , String jx, BigDecimal jxCoin, BigDecimal jxCash,String jxImage,BigDecimal jxInt,Integer jxId
            , String sq, BigDecimal sqCoin, BigDecimal sqCash,String sqImage,BigDecimal sqInt,Integer sqId
            , String zs, BigDecimal zsCoin, BigDecimal zsCash,String zsImage,BigDecimal zsInt,Integer zsId
            , String zs2, BigDecimal zs2Coin, BigDecimal zs2Cash,String zs2Image,BigDecimal zs2Int,Integer zs2Id
            , String ly, BigDecimal lyCoin, BigDecimal lyCash,String lyImage,BigDecimal lyInt,Integer lyId
    ) {
        Game game = new Game();
        game.setRed(red);
        game.setBlue(blue);
        game.setProvince(province);
        game.setCity(city);
        game.setProvinceCode(province);
        game.setCityCode(city);
        game.setSiteId(site);
        game.setStoreId(store);
        System.out.println("============"+game);
        ballClient.save(game);
        Integer gameId = ballClient.save(game);
List<TGameConfig> gameConfigList = new ArrayList<>();
//玩湃跨城赛
        TGameConfig gameConfigkuacheng = new TGameConfig();
        gameConfigkuacheng.setGameId(kuachengId);
        gameConfigkuacheng.setCash(kuachengCash);
        gameConfigkuacheng.setImg(kuachengImage);
        gameConfigkuacheng.setName(kuacheng);
        gameConfigkuacheng.setPlayCoin(kuachengCoin);
        gameConfigkuacheng.setIntegral(kuachengInt);
        gameConfigkuacheng.setOtherId(gameId);
        System.out.println("========gameConfig======"+gameConfigkuacheng);
        gameConfigList.add(gameConfigkuacheng);
System.out.println("======gameConfigList======="+gameConfigList);
        //社区冠军赛
        TGameConfig gameConfigshequ = new TGameConfig();
        gameConfigshequ.setGameId(shequId);
        gameConfigshequ.setCash(shequCash);
        gameConfigshequ.setImg(shequImage);
        gameConfigshequ.setName(shequ);
        gameConfigshequ.setPlayCoin(shequCoin);
        gameConfigshequ.setIntegral(shequInt);
        gameConfigshequ.setOtherId(shequId);
        gameConfigList.add(gameConfigshequ);
        //射门速度-玩湃熊之力
        TGameConfig gameConfigshemen = new TGameConfig();
        gameConfigshemen.setGameId(shemenId);
        gameConfigshemen.setCash(shemenCash);
        gameConfigshemen.setImg(shemenImage);
        gameConfigshemen.setName(shemen);
        gameConfigshemen.setPlayCoin(shemenCoin);
        gameConfigshemen.setIntegral(shemenInt);
        gameConfigshemen.setOtherId(shemenId);
        gameConfigList.add(gameConfigshemen);
        //玩湃熊之力-速度
        TGameConfig gameConfigsudu = new TGameConfig();
        gameConfigsudu.setGameId(suduId);
        gameConfigsudu.setCash(suduCash);
        gameConfigsudu.setImg(suduImage);
        gameConfigsudu.setName(sudu);
        gameConfigsudu.setPlayCoin(suduCoin);
        gameConfigsudu.setIntegral(suduInt);
        gameConfigsudu.setOtherId(suduId);
        gameConfigList.add(gameConfigsudu);
        //方块球王
        TGameConfig gameConfigfangkuai = new TGameConfig();
        gameConfigfangkuai.setGameId(fangkuaiId);
        gameConfigfangkuai.setCash(fangkuaiCash);
        gameConfigfangkuai.setImg(fangkuaiImage);
        gameConfigfangkuai.setName(fangkuai);
        gameConfigfangkuai.setPlayCoin(fangkuaiCoin);
        gameConfigfangkuai.setIntegral(fangkuaiInt);
        gameConfigfangkuai.setOtherId(fangkuaiId);
        gameConfigList.add(gameConfigfangkuai);
        //镜像阵容
        TGameConfig gameConfigjx = new TGameConfig();
        gameConfigjx.setGameId(jxId);
        gameConfigjx.setCash(jxCash);
        gameConfigjx.setImg(jxImage);
        gameConfigjx.setName(jx);
        gameConfigjx.setPlayCoin(jxCoin);
        gameConfigjx.setIntegral(jxInt);
        gameConfigjx.setOtherId(jxId);
        gameConfigList.add(gameConfigjx);
        //社区小球王
        TGameConfig gameConfigsq = new TGameConfig();
        gameConfigsq.setGameId(sqId);
        gameConfigsq.setCash(sqCash);
        gameConfigsq.setImg(sqImage);
        gameConfigsq.setName(sq);
        gameConfigsq.setPlayCoin(sqCoin);
        gameConfigsq.setIntegral(sqInt);
        gameConfigsq.setOtherId(sqId);
        gameConfigList.add(gameConfigsq);
        //涨姿势
        TGameConfig gameConfigzs = new TGameConfig();
        gameConfigzs.setGameId(zsId);
        gameConfigzs.setCash(zsCash);
        gameConfigzs.setImg(zsImage);
        gameConfigzs.setName(zs);
        gameConfigzs.setPlayCoin(zsCoin);
        gameConfigzs.setIntegral(zsInt);
        gameConfigzs.setOtherId(zsId);
        gameConfigList.add(gameConfigzs);
        //涨姿势2
        TGameConfig gameConfigzs2 = new TGameConfig();
        gameConfigzs2.setGameId(zs2Id);
        gameConfigzs2.setCash(zs2Cash);
        gameConfigzs2.setImg(zs2Image);
        gameConfigzs2.setName(zs2);
        gameConfigzs2.setPlayCoin(zs2Coin);
        gameConfigzs2.setIntegral(zs2Int);
        gameConfigzs2.setOtherId(zs2Id);
        gameConfigList.add(gameConfigzs2);
        //绿茵密码
        TGameConfig gameConfigly = new TGameConfig();
        gameConfigly.setGameId(lyId);
        gameConfigly.setCash(lyCash);
        gameConfigly.setImg(lyImage);
        gameConfigly.setName(ly);
        gameConfigly.setPlayCoin(lyCoin);
        gameConfigly.setIntegral(lyInt);
        gameConfigly.setOtherId(lyId);
        gameConfigList.add(gameConfigly);
System.out.println("---------------------------"+gameConfigList);
        ballClient.saveConfig( gameConfigList);
        return null;
    }
    @RequestMapping("/pre_add")
    public String add(Model model) {
//        Map<String,String> map = new HashMap<>();
//        map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
//        map.put("space_id","1001");
//        map.put("sutu_id","1001");
//
//        String request = HttpRequestUtil.getRequest("https://try.daowepark.com/v7/user_api/general/gameList", map);
//        System.out.println("=======request=========="+request);
////
////        return ballClient.list(ballQueryDto);
//    }
Map<String,String> map =new HashMap<>();
map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
        map.put("space_id","1001");
        map.put("sutu_id","1001");
        String req = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/gameList", map);
    System.out.println("================"+req);
//        AsciiString cached = AsciiString.cached(req);
        String convertedString = StringEscapeUtils.unescapeJava(req);
System.out.println("-------------"+convertedString);
        JSONObject parse = JSONObject.parseObject(convertedString);
        JSONArray data = JSONObject.parseArray(parse.getString("data"));
        JSONObject jsonObject =data.getJSONObject(0);
        //
        return PREFIX+"ball_pre_add.html";
    }
    @RequestMapping("/pre_edit/{id}")
    public String pre_edit(@PathVariable("id") Integer id,Model model) {
        Game game = ballClient.queryGame(id);
    System.out.println("---------game------"+game);
        model.addAttribute("game",game);
        return PREFIX+"ball_pre_edit.html";
    }
    @RequestMapping("/paike")
    public String paike(Model model) {
        return PREFIX+"paike.html";
    }
    @RequestMapping("/getStudentTotal")
    @ResponseBody
    public List<Map<String, Object>>getStudentTotal(@RequestBody StudentQeryDto studentQeryDto) {
System.out.println("========ballQueryDto======"+studentQeryDto);
        if (studentQeryDto.getTimes()!=null&& studentQeryDto.getTimes()!=""){
            String[] split = studentQeryDto.getTimes().split(",");
            studentQeryDto.setStart(split[0]);
            studentQeryDto.setEnd(split[1]);
        }
        List<Map<String, Object>>  pays = coursePackageClient.getStudentTotal(studentQeryDto);
        System.out.println("=========getStudentTotal======="+pays);
        return pays;
    }
    @RequestMapping("/bypac")
    @ResponseBody
    public List<Map<String, Object>>bypac(@RequestBody PacQueryDto pacQueryDto) {
        System.out.println("========ballQueryDto======"+pacQueryDto);
        if (pacQueryDto.getTimes()!=null&& pacQueryDto.getTimes()!=""){
            String[] split = pacQueryDto.getTimes().split(",");
            pacQueryDto.setStart(split[0]);
            pacQueryDto.setEnd(split[1]);
        }
        List<Map<String, Object>>  pays = coursePackageClient.bypac(pacQueryDto);
        System.out.println("=========getStudentTotal======="+pays);
        return pays;
    }
    @RequestMapping("/yuyue")
    public String yuyue(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("role",roleid);
        return PREFIX+"yuyue.html";
    }
    @RequestMapping("/jieshao")
    public String jieshao(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("role",roleid);
        return PREFIX+"jieshao.html";
    }
    /**
     * 获取有效期
     */
    @RequestMapping("/yuyuelist")
    @ResponseBody
    public List<Map<String,Object>> yuyuelist(BookingQuery bookingQuery) {
        List<Map<String,Object>> orders =   ballClient.listorder(bookingQuery);
        System.out.println("=======ballQueryDto=========="+bookingQuery);
        return orders;
    }
    @RequestMapping("/addjs")
    @ResponseBody
    public void addjs( @RequestBody JsDto jsDto) {
        System.out.println("=======jsDto========"+jsDto);
        storeService.insert(jsDto);
    }
    @RequestMapping("/get/{id}")
    @ResponseBody
    public JsDto getJs( @PathVariable("id") Integer id) {
        JsDto jsDto =   storeService.get(id);
        return jsDto;
    }
    @RequestMapping("/getMoney/{id}/{type}")
    @ResponseBody
    public List<Double> getMoney( @PathVariable("id") Integer id,@PathVariable("type") Integer type) {
        List<Double> doubles = new ArrayList<>();
        Site site = siteClient.listById(id);
        System.out.println("=====stie====="+site);
        System.out.println("=====type====="+type);
        if (type == 0 ){
            doubles.add(site.getCashPrice());
            doubles.add(Double.valueOf(site.getPlayPaiCoin()));
            return  doubles;
        }else {
            doubles.add(site.getCashPriceOne());
            doubles.add(site.getPlayPaiCoinOne());
            return  doubles;
        }
    }
    @Resource
   private SiteClient siteClient;
    @RequestMapping("/yuyuetimes/{id}")
    @ResponseBody
    public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id) {
        List<String> strings = new ArrayList<>();
        List<SiteBooking> siteBookings = siteClient.listBooks(id);
System.out.println("=======siteBookings======"+siteBookings);
        for (SiteBooking siteBooking : siteBookings) {
            String[] split = siteBooking.getTimes().split(";");
            for (String s : split) {
                String convertedValue = s.substring(11);
                strings.add(convertedValue);
            }
        }
    System.out.println("======strings======="+strings);
        List<OrderDto> timeRanges = new ArrayList<>();
       Site site =  siteClient.listById(id);
System.out.println("================"+site);
        String appointmentStartTime = site.getAppointmentStartTime();
        String appointmentEndTime = site.getAppointmentEndTime();
        String currentTime = appointmentStartTime;
        while (currentTime.compareTo(appointmentEndTime) < 0) {
            String nextTime = getNextTime(currentTime);
            String timeRange = currentTime + "-" + nextTime;
            OrderDto orderDto = new OrderDto();
            orderDto.setTime(timeRange);
            LocalTime currentTime1 = LocalTime.now();
            LocalTime targetTime = LocalTime.parse(currentTime);
            boolean hasExceeded = currentTime1.isAfter(targetTime);
    if (hasExceeded){
        orderDto.setState(0);
    }
    if (strings.contains(timeRange)){
        orderDto.setState(0);
    }
            timeRanges.add(orderDto);
            currentTime = nextTime;
        }
        System.out.println("-------------"+timeRanges);
        return timeRanges;
    }
    public static String getNextTime(String currentTime) {
        String[] parts = currentTime.split(":");
        int hour = Integer.parseInt(parts[0]);
        int minute = Integer.parseInt(parts[1]);
        if (minute == 30) {
            hour++;
            minute = 0;
        } else {
            minute = 30;
        }
        return String.format("%02d:%02d", hour, minute);
    }
    @RequestMapping("/halfName/{id}")
    @ResponseBody
    public String[] halfName(@PathVariable("id") Integer id) {
        TSite byId =   siteService.getById(id);
        String[] split = byId.getHalfName().split(",");
        System.out.println("=-============"+split);
        return split;
    }
    @RequestMapping("/yuyue_add")
    public String yuyueadd(Model model) {
        Integer objectType = UserExt.getUser().getObjectType();
        Integer objectId = UserExt.getUser().getObjectId();
        List<TCoursePackageType> tCoursePackageTypes = coursePackageTypeClient.queryAllCoursePackageType();
        model.addAttribute("coursePackageType", tCoursePackageTypes);
        String cityCode = null;
        if(objectType == 2){//城市管理员
            CityManager cityManager = cityManagerClient.queryCityManagerById(objectId);
@@ -182,7 +538,22 @@
        TStore store = list2.get(0);
        List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1));
        model.addAttribute("site", list3);
        return PREFIX+"yuyue_add.html";
    }
        return PREFIX+"ball_pre_add.html";
    }}
    @RequestMapping("/ordersave")
    @ResponseBody
    public ResultUtil ordersave(SiteBooking siteBooking){
        siteBooking.setInsertTime(new Date());
        siteBooking.setState(1);
        siteBooking.setStatus(0);
    siteClient.addSiteBooking(siteBooking);
        System.out.println("================="+siteBooking);
        return new ResultUtil<>(null,200,null,null,null);
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GameConfig.java
New file
@@ -0,0 +1,93 @@
package com.dsh.guns.modular.system.model;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class GameConfig {
    private int id;
    private String name;
    private String img;
    private BigDecimal playCoin;
    private BigDecimal cash;
    private BigDecimal integral;
    private int gameId;
    private int otherId;
//    public GameConfig(int id, String name, String img, BigDecimal playCoin, BigDecimal cash, BigDecimal integral, int gameId, int otherId) {
//        this.id = id;
//        this.name = name;
//        this.img = img;
//        this.playCoin = playCoin;
//        this.cash = cash;
//        this.integral = integral;
//        this.gameId = gameId;
//        this.otherId = otherId;
//    }
    // Getters and Setters
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getImg() {
        return img;
    }
    public void setImg(String img) {
        this.img = img;
    }
    public BigDecimal getPlayCoin() {
        return playCoin;
    }
    public void setPlayCoin(BigDecimal playCoin) {
        this.playCoin = playCoin;
    }
    public BigDecimal getCash() {
        return cash;
    }
    public void setCash(BigDecimal cash) {
        this.cash = cash;
    }
    public BigDecimal getIntegral() {
        return integral;
    }
    public void setIntegral(BigDecimal integral) {
        this.integral = integral;
    }
    public int getGameId() {
        return gameId;
    }
    public void setGameId(int gameId) {
        this.gameId = gameId;
    }
    public int getOtherId() {
        return otherId;
    }
    public void setOtherId(int otherId) {
        this.otherId = otherId;
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GameConfigDto.java
New file
@@ -0,0 +1,9 @@
package com.dsh.guns.modular.system.model;
import lombok.Data;
import java.util.List;
@Data
public class GameConfigDto {
    List<TGameConfig> list;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteBooking.java
@@ -176,4 +176,9 @@
    private String halfName;
    @TableField("goType")
    private Integer goType;
    private String money;
    @TableField(exist = false)
    private Integer type;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java
@@ -164,4 +164,13 @@
     */
    @TableField("salesName")
    private String salesName;
    private String studentName;
    private String province;
    private String city;
    private String courseName;
    private Integer hasHours;
    private BigDecimal laveCashPayment;
    private BigDecimal cashPayment1;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TGameConfig.java
New file
@@ -0,0 +1,70 @@
package com.dsh.guns.modular.system.model;
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
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;
    private Integer otherId;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/BookingQuery.java
New file
@@ -0,0 +1,19 @@
package com.dsh.guns.modular.system.model.dto;
import lombok.Data;
@Data
public class BookingQuery {
    String provinceCode;
    String cityCode;
    String store;
    String peopleName;
    String phone;
    String date;
    Integer state;
    Integer payMethod;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/OrderDto.java
New file
@@ -0,0 +1,9 @@
package com.dsh.guns.modular.system.model.dto;
import lombok.Data;
@Data
public class OrderDto {
    private  String time;
    private  Integer state;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/PacQueryDto.java
New file
@@ -0,0 +1,17 @@
package com.dsh.guns.modular.system.model.dto;
import lombok.Data;
@Data
public class PacQueryDto {
    String cityCode;
    String store;
    String name;
    String times;
    String start;
    String end;
    String provinceCode;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/TimeDto.java
New file
@@ -0,0 +1,7 @@
package com.dsh.guns.modular.system.model.dto;
public class TimeDto {
    private String time;
    private String time2;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ISiteBookingService.java
@@ -1,7 +1,12 @@
package com.dsh.guns.modular.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.guns.modular.system.model.SiteBooking;
public interface ISiteBookingService extends IService<SiteBooking> {
/**
 * @author zhibing.pu
 * @date 2023/7/13 16:49
 */
public interface ISiteBookingService extends IService<SiteBooking> {
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IStoreService.java
@@ -4,6 +4,11 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.guns.modular.system.model.*;
import io.swagger.models.auth.In;
import com.dsh.course.dto.JsDto;
import com.dsh.guns.modular.system.model.Dict;
import com.dsh.guns.modular.system.model.TStore;
import com.dsh.guns.modular.system.model.TStoreListVo;
import com.dsh.guns.modular.system.model.TTurn;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -62,4 +67,8 @@
    void updateBasicConfig(Integer id , String p1);
    void updateBenefits(Integer id , String p1);
    void insert(JsDto jsDto);
    JsDto get(Integer id);
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/SiteBookingServiceImpl.java
@@ -1,5 +1,6 @@
package com.dsh.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.mapper.SiteBookingMapper;
import com.dsh.guns.modular.system.model.SiteBooking;
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/StoreServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.dto.JsDto;
import com.dsh.course.mapper.StoreMapper;
import com.dsh.guns.modular.system.model.TImgConfig;
import com.dsh.guns.modular.system.model.TStore;
@@ -93,6 +94,16 @@
    }
    @Override
    public void insert(JsDto jsDto) {
        this.baseMapper.inset(jsDto);
    }
    @Override
    public JsDto get(Integer id) {
        return this.baseMapper.get(id);
    }
    @Override
    public List<TImgConfig> getConfig() {
        return this.baseMapper.getConfig1();
cloud-server-management/src/main/resources/mapper/SiteBookingMapper.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.SiteBookingMapper">
</mapper>
cloud-server-management/src/main/resources/mapper/TStoreMapper.xml
@@ -24,6 +24,12 @@
        where `position` =#{position}
    </update>
    <update id="inset">
        update t_js
        set jieshao = #{jieshao} ,vedio = #{vedio}
        where id = #{id}
    </update>
    <delete id="delete1">
        delete from t_store_other_config where id =#{id}
    </delete>
@@ -114,6 +120,10 @@
    <select id="pageList" resultType="com.dsh.guns.modular.system.model.TTurn">
        select * from t_turn where pid = 0
    </select>
    <select id="get" resultType="com.dsh.course.dto.JsDto">
        select * from t_js where  id = #{id}
    </select>
    <select id="getConfig1" resultType="com.dsh.guns.modular.system.model.TImgConfig">
        select * from t_img_config
    </select>
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball.html
@@ -26,7 +26,7 @@
                                </div>
                            </div>
                            @}
                            @if(role=='1'){
                            <div class="col-sm-3">
                                <div class="input-group">
                                    <div class="input-group-btn open">
@@ -38,7 +38,6 @@
                                    </select>
                                </div>
                            </div>
                            @}
                            <div class="col-sm-3">
                                <#NameCon id="store" name="门店名称" />
@@ -57,7 +56,7 @@
                                <#button name="添加" icon="fa-plus" clickFun="TStudent.openAddTStudent()"/>
                                <#button name="修改" icon="fa-edit" clickFun="TStudent.openTStudentDetail()" space="true"/>
                            <#button name="查看详情" icon="fa-edit" clickFun="TStudent.openTStudentDetail1()" 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/ball/ball_pre_add.html
@@ -42,7 +42,7 @@
        {
          "type": "form",
          "id": "u:24af29be25d2",
          "title": "表单",
          "title": "111",
          "body": [
            {
              "label": "所属运营商:",
@@ -52,47 +52,58 @@
              "mode": "horizontal",
              "size": "lg",
              "multiple": false,
              "source": {
                "url": "/api/v1/rep/cus/",
                "method": "get",
                "messages": {
                }
              },
              "labelField": "customerName",
              "valueField": "id",
              "showInvalidMatch": false,
              "searchable": true,
              "clearable": true,
              "horizontal": {
                "leftFixed": "lg"
              },
              "options": [
                {
                  "label": "等待沟通中",
                  "value": "等待沟通中"
              }
              ]
            },
            {
              "type": "input-city",
              "type": "select",
              "label": "所在省:",
              "name": "province",
              "id": "u:091b190331f6",
              "id": "u:63c85c19f3aa",
              "multiple": false,
              "mode": "horizontal",
              "allowCity": false,
              "allowDistrict": false,
              "size": "md",
              "horizontal": {
                "leftFixed": "lg"
              },
              "source": {
                "url": "/coursePackage/queryProvince",
                "method": "get",
                "messages": {
                },
                "sendOn": ""
              },
              "onEvent": {
                "change": {
                  "weight": 0,
                  "actions": [
                    {
                      "componentId": "u:63c85c19f3aa",
                      "componentId": "u:14bafe37d5f3",
                      "actionType": "reload",
                      "dataMergeMode": "merge"
                    }
                  ]
                }
              }
              },
              "labelField": "name",
              "valueField": "code",
              "required": true
            },
            {
              "type": "select",
              "label": "所在市:",
              "name": "city",
              "id": "u:63c85c19f3aa",
              "id": "u:14bafe37d5f3",
              "multiple": false,
              "mode": "horizontal",
              "size": "md",
@@ -119,7 +130,8 @@
                }
              },
              "labelField": "name",
              "valueField": "code"
              "valueField": "code",
              "required": true
            },
            {
              "type": "select",
@@ -149,17 +161,11 @@
                      "componentId": "u:0d288f4bdd8e",
                      "actionType": "reload",
                      "dataMergeMode": "merge"
                    },
                    {
                      "componentId": "u:0d288f4bdd8e",
                      "args": {
                        "value": " "
                      },
                      "actionType": "setValue"
                    }
                  ]
                }
              }
              },
              "required": true
            },
            {
              "type": "select",
@@ -183,11 +189,12 @@
                "dataType": "form"
              },
              "labelField": "name",
              "valueField": "id"
              "valueField": "id",
              "required": true
            },
            {
              "type": "tpl",
              "tpl": "设备ID:",
              "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设备ID:",
              "inline": true,
              "wrapperComponent": "",
              "id": "u:587781d5d181",
@@ -201,25 +208,22 @@
              "name": "blue",
              "id": "u:a4dbdeb9165e",
              "mode": "inline",
              "size": "xs",
              "size": "sm",
              "horizontal": {
                "leftFixed": "sm"
              },
              "value": ""
              "value": "",
              "required": true
            },
            {
              "type": "input-text",
              "label": "红色方",
              "name": "red",
              "id": "u:b0544634a698",
              "mode": "inline"
            },
            {
              "type": "tpl",
              "tpl": "请编辑内容",
              "inline": true,
              "wrapperComponent": "",
              "id": "u:89c3a95a6721"
              "mode": "inline",
              "clearValueOnHidden": false,
              "hidden": false,
              "required": true
            },
            {
              "type": "button",
@@ -234,7 +238,8 @@
                  ]
                }
              },
              "id": "u:b96a47957f17"
              "id": "u:b96a47957f17",
              "hidden": true
            },
            {
              "type": "divider",
@@ -248,43 +253,59 @@
              "wrapperComponent": "h2"
            },
            {
              "type": "container",
              "type": "grid",
              "columns": [
                {
              "body": [
                {
                  "type": "card",
                  "header": {
                    "title": "激战球场",
                    "subTitle": "副标题"
                        "title": "玩湃跨城赛",
                        "subTitle": ""
                  },
                  "body": [
                    {
                      "type": "input-image",
                      "label": "背景图:",
                      "name": "image",
                          "name": "kuachengImage",
                      "autoUpload": true,
                      "proxy": true,
                      "uploadType": "fileReceptor",
                      "imageClassName": "r w-full",
                      "receiver": {
                        "url": "object-upload://default",
                            "url": "/mgr/uploadImgAmis",
                        "method": "post"
                      },
                      "id": "u:824383a8e878",
                      "labelClassName": "text-dark"
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                    },
                    {
                      "type": "input-text",
                      "label": "游戏名称",
                      "name": "ciji",
                          "type": "hidden",
                          "label": "",
                          "name": "kuacheng",
                      "id": "u:a4dbdeb9115e",
                      "mode": "inline",
                      "labelClassName": "text-dark m-b",
                      "value": "激战球场"
                          "value": "玩湃跨城赛"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "kuachengId",
                          "id": "u:89bccaf7242f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "14"
                    },
                    {
                      "type": "input-text",
                      "label": "玩派币",
                      "name": "cijiCoin",
                          "name": "kuachengCoin",
                      "id": "u:99015dfd4264",
                      "mode": "inline",
                      "labelClassName": "text-dark m-b text-lg"
@@ -292,7 +313,7 @@
                    {
                      "type": "input-text",
                      "label": "现金",
                      "name": "cijiCash",
                          "name": "kuachengCash",
                      "id": "u:31888fb92add",
                      "mode": "inline",
                      "labelClassName": "text-dark m-b text-lg"
@@ -300,7 +321,7 @@
                    {
                      "type": "input-text",
                      "label": "积分",
                      "name": "cijiInt",
                          "name": "kuachengInt",
                      "id": "u:c42ab4593d20",
                      "mode": "inline",
                      "labelClassName": "text-dark m-b text-lg"
@@ -308,20 +329,833 @@
                  ],
                  "actions": [
                  ],
                  "id": "u:8445330f451b"
                      "id": "u:8445330f451b",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:a63f776f28ca",
                  "columnClassName": "p-l-lg"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "社区冠军赛",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "shequImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:824383a8e878",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "shequ",
                          "id": "u:a4dbdeb9115e",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "社区冠军赛"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "shequId",
                          "id": "u:89bccaf7242f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "16"
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "shequCoin",
                          "id": "u:99015dfd4264",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "shequCash",
                          "id": "u:31888fb92add",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "shequInt",
                          "id": "u:c42ab4593d20",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:8445330f451b",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:882210cd7611"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "射门速度-玩湃熊之力",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "shemenImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:824383a8e878",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "shemen",
                          "id": "u:a4dbdeb9115e",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "射门速度-玩湃熊之力"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "shemenId",
                          "id": "u:89bccaf7242f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "13"
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "shemenCoin",
                          "id": "u:99015dfd4264",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "shemenCash",
                          "id": "u:31888fb92add",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "shemenInt",
                          "id": "u:c42ab4593d20",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:8445330f451b",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:d191f24cb064"
                }
              ],
              "id": "u:676721d0a98a"
            },
            {
              "type": "grid",
              "columns": [
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "玩湃熊之力-速度",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "suduImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:4abd099fd344",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "sudu",
                          "id": "u:825f01e97cf5",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "玩湃熊之力-速度"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "suduId",
                          "id": "u:f0f7e6028e17",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "15"
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "suduCoin",
                          "id": "u:b6faed384d78",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "suduCash",
                          "id": "u:c7181c9b3ded",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "suduInt",
                          "id": "u:ee897e373acb",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:89bd6bd7e231",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:e49a95f9b2c8",
                  "columnClassName": "p-l-lg"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "方块球王",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "fangkuaiImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:824383a8e878",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "fangkuai",
                          "id": "u:a4dbdeb9115e",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "方块球王"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "fangkuaiId",
                          "id": "u:89bccaf7242f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "1"
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "fangkuaiCoin",
                          "id": "u:99015dfd4264",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "fangkuaiCash",
                          "id": "u:31888fb92add",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "fangkuaiInt",
                          "id": "u:c42ab4593d20",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:8445330f451b",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:3aaf60604641"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "镜像阵容",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "jxImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:824383a8e878",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "jx",
                          "id": "u:a4dbdeb9115e",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "镜像阵容"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "jxId",
                          "id": "u:89bccaf7242f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "7"
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "jxCoin",
                          "id": "u:99015dfd4264",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "jxCash",
                          "id": "u:31888fb92add",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "jxInt",
                          "id": "u:c42ab4593d20",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:8445330f451b",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:e80cbf026419"
                }
              ],
              "id": "u:a53000ecee93"
            },
            {
              "type": "grid",
              "columns": [
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "社区小球王",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "sqImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:94fe22c43628",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "sq",
                          "id": "u:49202e62cd8f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "社区小球王"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "sqId",
                          "id": "u:49c300f663f6",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "8"
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "sqCoin",
                          "id": "u:a58559426478",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "sqCash",
                          "id": "u:e563cc483458",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "sqInt",
                          "id": "u:688f4b7c3392",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:20efa0a87285",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:19d3a6b86a8d",
                  "columnClassName": "p-l-lg"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "涨姿势",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "zsImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:70a81ae5d75c",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "zs",
                          "id": "u:fd19ffe45790",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "涨姿势"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "zsId",
                          "id": "u:fe85cbcb2f69",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "10"
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "zsCoin",
                          "id": "u:af69b1a1d9cb",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "zsCash",
                          "id": "u:8ba3c740b10c",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "zsInt",
                          "id": "u:6d91bb154939",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:4b37f6a2c067",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:848bad292c8c"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "涨姿势[2]",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "zs2Image",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:22f44cb955d7",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "zs2",
                          "id": "u:97b8937d26a1",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "激战球场"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "zs2Id",
                          "id": "u:49ad851a7bf9",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "11"
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "zs2Coin",
                          "id": "u:b29c25f053d9",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "zs2Cash",
                          "id": "u:88a44c71abb0",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "zs2Int",
                          "id": "u:fb82b3cf486c",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:cd832349886c",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:68716b29d1cd"
                }
              ],
              "id": "u:0df19fcc8fc2"
            },
            {
              "type": "grid",
              "columns": [
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "绿茵密码",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "lyImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:704c6970b70d",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "游戏名称",
                          "name": "ly",
                          "id": "u:c4a543b6cda0",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "社区小球王"
                        },
                        {
                          "type": "hidden",
                          "label": "游戏id",
                          "name": "lyId",
                          "id": "u:90d5f2fa406a",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "5"
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "lyCoin",
                          "id": "u:d78d236c5f95",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "lyCash",
                          "id": "u:20b24611e53c",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "lyInt",
                          "id": "u:25e10253effb",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:fe79896823ad",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:b496c245ddf5",
                  "columnClassName": "p-l-lg"
                },
                {
                  "body": [
                  ],
                  "id": "u:5a16b34e0128"
                },
                {
                  "body": [
                  ],
                  "id": "u:a49cf291b3fe"
                }
              ],
              "id": "u:4641470c31fd"
            },
            {
              "type": "grid",
              "columns": [
                {
                  "body": [
                    {
                      "id": "u:8254704349a2",
                      "type": "flex",
                      "className": "p-1",
                      "items": [
                        {
                          "type": "button",
                          "id": "u:6c0b8f917bf7",
                          "label": "关闭",
                          "onEvent": {
                            "click": {
                              "actions": [
                                {
                                  "args": {
                                  },
                                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
                                  "actionType": "custom"
                                }
                              ]
                            }
                          }
                        },
                        {
                          "type": "button",
                          "id": "u:6c0b8f917bf7",
                          "label": "保存",
                          "level": "info",
                          "onEvent": {
                            "click": {
                              "actions": [
                                {
                                  "componentId": "u:24af29be25d2",
                                  "args": {
                                  },
                                  "outputVar": "responseResult",
                                  "actionType": "submit"
                                }
                              ]
                            }
                          }
                }
              ],
              "style": {
                "position": "static",
                "display": "block",
                "flexWrap": "nowrap",
                "maxWidth": "300px",
                "overflowX": "auto",
                "margin": "0"
              },
              "id": "u:08adb1dcf6b9",
              "isFixedHeight": false,
              "isFixedWidth": false
                        "position": "relative"
                      }
                    }
                  ],
                  "id": "u:ebd322f2aab8"
                }
              ],
              "id": "u:1b16988908d9"
            }
          ],
          "api": {
@@ -329,11 +1163,14 @@
            "method": "post",
            "messages": {
            },
            "dataType": "json"
          }
            "dataType": "form-data"
          },
          "actions": [
          ]
        }
      ]
    };
    let amisScoped = amis.embed('#root', amisJSON);
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/ball_pre_edit.html
New file
@@ -0,0 +1,1309 @@
<!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": "page",
      "id": "u:8c028a595aa6",
      "body": [
        {
          "type": "form",
          "id": "u:24af29be25d2",
          "title": "",
          "body": [
            {
              "label": "所属运营商:",
              "type": "select",
              "name": "operator",
              "id": "u:970f68a2c4ee",
              "mode": "horizontal",
              "size": "lg",
              "multiple": false,
              "showInvalidMatch": false,
              "searchable": true,
              "clearable": true,
              "horizontal": {
                "leftFixed": "lg"
              },
              "options": [
                {
                  "label": "等待沟通中",
                  "value": "等待沟通中"
                }
              ]
            },
            {
              "type": "select",
              "label": "所在省:",
              "name": "province",
              "id": "u:63c85c19f3aa",
              "multiple": false,
              "mode": "horizontal",
              "size": "md",
              "value":`${game.provinceCode}`,
              "horizontal": {
                "leftFixed": "lg"
              },
              "source": {
                "url": "/coursePackage/queryProvince",
                "method": "get",
                "messages": {
                },
                "sendOn": ""
              },
              "onEvent": {
                "change": {
                  "weight": 0,
                  "actions": [
                    {
                      "componentId": "u:14bafe37d5f3",
                      "actionType": "reload",
                      "dataMergeMode": "merge"
                    }
                  ]
                }
              },
              "labelField": "name",
              "valueField": "code",
              "required": true
            },
            {
              "type": "select",
              "label": "所在市:",
              "name": "city",
              "value":`${game.cityCode}`,
              "id": "u:14bafe37d5f3",
              "multiple": false,
              "mode": "horizontal",
              "size": "md",
              "horizontal": {
                "leftFixed": "lg"
              },
              "source": {
                "url": "/coursePackage/queryCity1/$province",
                "method": "post",
                "messages": {
                },
                "sendOn": "this.province != null &&this.province != ' '"
              },
              "onEvent": {
                "change": {
                  "weight": 0,
                  "actions": [
                    {
                      "componentId": "u:576899b1b531",
                      "actionType": "reload",
                      "dataMergeMode": "merge"
                    }
                  ]
                }
              },
              "labelField": "name",
              "valueField": "code",
              "required": true
            },
            {
              "type": "select",
              "label": "所属门店:",
              "name": "store",
              "value":`${game.storeId}`,
              "id": "u:576899b1b531",
              "multiple": false,
              "mode": "horizontal",
              "size": "md",
              "horizontal": {
                "leftFixed": "lg"
              },
              "source": {
                "method": "post",
                "url": "/coursePackage/queryStore1/$city",
                "messages": {
                },
                "sendOn": "this.city != null &&this.city != ' '"
              },
              "labelField": "name",
              "valueField": "id",
              "onEvent": {
                "change": {
                  "weight": 0,
                  "actions": [
                    {
                      "componentId": "u:0d288f4bdd8e",
                      "actionType": "reload",
                      "dataMergeMode": "merge"
                    }
                  ]
                }
              },
              "required": true
            },
            {
              "type": "select",
              "label": "所属场地:",
              "name": "site",
              "value":`${game.siteId}`,
              "id": "u:0d288f4bdd8e",
              "multiple": false,
              "mode": "horizontal",
              "size": "md",
              "horizontal": {
                "leftFixed": "lg"
              },
              "source": {
                "url": "/coursePackage/querySite",
                "method": "post",
                "messages": {
                },
                "data": {
                  "storeId": "$store"
                },
                "dataType": "form"
              },
              "labelField": "name",
              "valueField": "id",
              "required": true
            },
            {
              "type": "tpl",
              "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设备ID:",
              "inline": true,
              "wrapperComponent": "",
              "id": "u:587781d5d181",
              "style": {
                "marginLeft": "0"
              }
            },
            {
              "type": "input-text",
              "label": "蓝色方",
              "name": "blue",
              "id": "u:a4dbdeb9165e",
              "mode": "inline",
              "size": "sm",
              "horizontal": {
                "leftFixed": "sm"
              },
              "value": "",
              "required": true
              ,
              "value":`${game.blue}`
            },
            {
              "type": "input-text",
              "label": "红色方",
              "name": "red",
              "id": "u:b0544634a698",
              "mode": "inline",
              "clearValueOnHidden": false,
              "hidden": false,
              "required": true
              ,
              "value":`${game.red}`
            },
            {
              "type": "button",
              "label": "按钮",
              "onEvent": {
                "click": {
                  "actions": [
                    {
                      "componentId": "u:24af29be25d2",
                      "actionType": "submit"
                    }
                  ]
                }
              },
              "id": "u:b96a47957f17",
              "hidden": true
            },
            {
              "type": "divider",
              "id": "u:cc7161244b32"
            },
            {
              "type": "tpl",
              "id": "u:89c3a95a6721",
              "tpl": "游戏配置:",
              "inline": true,
              "wrapperComponent": "h2"
            },
            {
              "type": "grid",
              "columns": [
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "玩湃跨城赛",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "kuachengImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:824383a8e878",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "kuacheng",
                          "id": "u:a4dbdeb9115e",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "玩湃跨城赛"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "kuachengId",
                          "id": "u:89bccaf7242f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "14"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "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",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "kuachengCoin",
                          "id": "u:99015dfd4264",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "kuachengCash",
                          "id": "u:31888fb92add",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "kuachengInt",
                          "id": "u:c42ab4593d20",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:8445330f451b",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:a63f776f28ca",
                  "columnClassName": "p-l-lg"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "社区冠军赛",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "shequImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:824383a8e878",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "shequ",
                          "id": "u:a4dbdeb9115e",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "社区冠军赛"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "shequId",
                          "id": "u:89bccaf7242f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "16"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "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",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "shequCoin",
                          "id": "u:99015dfd4264",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "shequCash",
                          "id": "u:31888fb92add",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "shequInt",
                          "id": "u:c42ab4593d20",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:8445330f451b",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:882210cd7611"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "射门速度-玩湃熊之力",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "shemenImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:824383a8e878",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "shemen",
                          "id": "u:a4dbdeb9115e",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "射门速度-玩湃熊之力"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "shemenId",
                          "id": "u:89bccaf7242f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "13"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "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",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "shemenCoin",
                          "id": "u:99015dfd4264",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "shemenCash",
                          "id": "u:31888fb92add",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "shemenInt",
                          "id": "u:c42ab4593d20",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:8445330f451b",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:d191f24cb064"
                }
              ],
              "id": "u:676721d0a98a"
            },
            {
              "type": "grid",
              "columns": [
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "玩湃熊之力-速度",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "suduImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:4abd099fd344",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "sudu",
                          "id": "u:825f01e97cf5",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "玩湃熊之力-速度"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "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",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "suduId",
                          "id": "u:ca5a1fd9c191",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "15"
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "suduCoin",
                          "id": "u:b6faed384d78",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "suduCash",
                          "id": "u:c7181c9b3ded",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "suduInt",
                          "id": "u:ee897e373acb",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:89bd6bd7e231",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:e49a95f9b2c8",
                  "columnClassName": "p-l-lg"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "方块球王",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "fangkuaiImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:824383a8e878",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "fangkuai",
                          "id": "u:a4dbdeb9115e",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "方块球王"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "fangkuaiId",
                          "id": "u:89bccaf7242f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "1"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "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",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "fangkuaiCoin",
                          "id": "u:99015dfd4264",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "fangkuaiCash",
                          "id": "u:31888fb92add",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "fangkuaiInt",
                          "id": "u:c42ab4593d20",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:8445330f451b",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:3aaf60604641"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "镜像阵容",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "jxImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:824383a8e878",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "jx",
                          "id": "u:a4dbdeb9115e",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "镜像阵容"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "jxId",
                          "id": "u:89bccaf7242f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "7"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "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",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "jxCoin",
                          "id": "u:99015dfd4264",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "jxCash",
                          "id": "u:31888fb92add",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "jxInt",
                          "id": "u:c42ab4593d20",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:8445330f451b",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:e80cbf026419"
                }
              ],
              "id": "u:a53000ecee93"
            },
            {
              "type": "grid",
              "columns": [
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "社区小球王",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "sqImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:94fe22c43628",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "sq",
                          "id": "u:49202e62cd8f",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "社区小球王"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "sqId",
                          "id": "u:49c300f663f6",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "8"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "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",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "sqCoin",
                          "id": "u:a58559426478",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "sqCash",
                          "id": "u:e563cc483458",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "sqInt",
                          "id": "u:688f4b7c3392",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:20efa0a87285",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:19d3a6b86a8d",
                  "columnClassName": "p-l-lg"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "涨姿势",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "zsImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:70a81ae5d75c",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "zs",
                          "id": "u:fd19ffe45790",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "涨姿势"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "zsId",
                          "id": "u:fe85cbcb2f69",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "10"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "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",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "zsCoin",
                          "id": "u:af69b1a1d9cb",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "zsCash",
                          "id": "u:8ba3c740b10c",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "zsInt",
                          "id": "u:6d91bb154939",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:4b37f6a2c067",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:848bad292c8c"
                },
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "涨姿势[2]",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "zs2Image",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:22f44cb955d7",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "zs2",
                          "id": "u:97b8937d26a1",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "激战球场"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "zs2Id",
                          "id": "u:49ad851a7bf9",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "11"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "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",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "zs2Coin",
                          "id": "u:b29c25f053d9",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "zs2Cash",
                          "id": "u:88a44c71abb0",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "zs2Int",
                          "id": "u:fb82b3cf486c",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:cd832349886c",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:68716b29d1cd"
                }
              ],
              "id": "u:0df19fcc8fc2"
            },
            {
              "type": "grid",
              "columns": [
                {
                  "body": [
                    {
                      "type": "card",
                      "header": {
                        "title": "绿茵密码",
                        "subTitle": ""
                      },
                      "body": [
                        {
                          "type": "input-image",
                          "label": "背景图:",
                          "name": "lyImage",
                          "autoUpload": true,
                          "proxy": true,
                          "uploadType": "fileReceptor",
                          "imageClassName": "r w-full",
                          "receiver": {
                            "url": "/mgr/uploadImgAmis",
                            "method": "post"
                          },
                          "id": "u:704c6970b70d",
                          "labelClassName": "text-dark",
                          "mode": "inline",
                          "accept": ".jpeg, .jpg, .png, .gif",
                          "multiple": false,
                          "hideUploadButton": false,
                          "fixedSize": false
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "ly",
                          "id": "u:c4a543b6cda0",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "社区小球王"
                        },
                        {
                          "type": "hidden",
                          "label": "",
                          "name": "lyId",
                          "id": "u:90d5f2fa406a",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b",
                          "value": "5"
                        },
                        {
                          "type": "tpl",
                          "id": "u:587781d5d181",
                          "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",
                          "inline": true,
                          "wrapperComponent": "",
                          "style": {
                            "marginLeft": "0"
                          }
                        },
                        {
                          "type": "input-text",
                          "label": "玩派币",
                          "name": "lyCoin",
                          "id": "u:d78d236c5f95",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "现金",
                          "name": "lyCash",
                          "id": "u:20b24611e53c",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        },
                        {
                          "type": "input-text",
                          "label": "积分",
                          "name": "lyInt",
                          "id": "u:25e10253effb",
                          "mode": "inline",
                          "labelClassName": "text-dark m-b text-lg"
                        }
                      ],
                      "actions": [
                      ],
                      "id": "u:fe79896823ad",
                      "bodyClassName": "no-border b-light",
                      "className": "no-border"
                    }
                  ],
                  "id": "u:b496c245ddf5",
                  "columnClassName": "p-l-lg"
                },
                {
                  "body": [
                  ],
                  "id": "u:5a16b34e0128"
                },
                {
                  "body": [
                  ],
                  "id": "u:a49cf291b3fe"
                }
              ],
              "id": "u:4641470c31fd"
            },
            {
              "type": "grid",
              "columns": [
                {
                  "body": [
                    {
                      "id": "u:8254704349a2",
                      "type": "flex",
                      "className": "p-1",
                      "items": [
                        {
                          "type": "button",
                          "id": "u:6c0b8f917bf7",
                          "label": "关闭",
                          "onEvent": {
                            "click": {
                              "actions": [
                                {
                                  "args": {
                                  },
                                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
                                  "actionType": "custom"
                                }
                              ]
                            }
                          }
                        },
                        {
                          "type": "button",
                          "id": "u:6c0b8f917bf7",
                          "label": "保存",
                          "level": "info",
                          "onEvent": {
                            "click": {
                              "actions": [
                                {
                                  "componentId": "u:24af29be25d2",
                                  "args": {
                                  },
                                  "outputVar": "responseResult",
                                  "actionType": "submit"
                                }
                              ]
                            }
                          }
                        }
                      ],
                      "style": {
                        "position": "relative"
                      }
                    }
                  ],
                  "id": "u:ebd322f2aab8"
                }
              ],
              "id": "u:1b16988908d9"
            }
          ],
          "api": {
            "url": "/ball/save",
            "method": "post",
            "messages": {
            },
            "dataType": "form-data"
          },
          "actions": [
          ],
          "onEvent": {
            "submitSucc": {
              "weight": 0,
              "actions": [
                {
                  "args": {
                  },
                  "script": "parent.layer.close(window.parent.TStudent.layerIndex);",
                  "actionType": "custom"
                }
              ]
            }
          }
        }
      ]
    };
    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/WEB-INF/view/system/ball/jieshao.html
New file
@@ -0,0 +1,1163 @@
<!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": "page",
            "body": [
                {
                    "type": "tabs",
                    "tabsMode": "vertical",
                    "tabs": [
                        {
                            "title": "玩湃跨城赛",
                            "body": [
                                {
                                    "type": "form",
                                    "id": "u:bd64f7f5fea7",
                                    "title": "",
                                    "mode": "horizontal",
                                    "dsType": "api",
                                    "feat": "Edit",
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "label": "文本",
                                            "name": "id",
                                            "id": "u:4c0a1ededc47",
                                            "value": "14",
                                            "hidden": true
                                        },
                                        {
                                            "type": "textarea",
                                            "label": "文字介绍",
                                            "name": "jieshao",
                                            "id": "u:aa105bcfd51b",
                                            "minRows": 10,
                                            "maxRows": 20,
                                            "required": true
                                        },
                                        {
                                            "type": "input-file",
                                            "label": "文件上传",
                                            "autoUpload": true,
                                            "proxy": true,
                                            "uploadType": "fileReceptor",
                                            "name": "vedio",
                                            "id": "u:d84964c25e87",
                                            "btnLabel": "文件上传",
                                            "multiple": false,
                                            "useChunk": false,
                                            "accept": "",
                                            "drag": false,
                                            "receiver": {
                                                "url": "/mgr/uploadImgAmis",
                                                "method": "post"
                                            },
                                            "required": true
                                        }
                                    ],
                                    "actions": [
                                        {
                                            "type": "button",
                                            "label": "关闭",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "custom",
                                                            "args": {
                                                            },
                                                            "script": "parent.layer.close(window.parent.TStudent.layerIndex);"
                                                        }
                                                    ]
                                                }
                                            },
                                            "id": "u:6c0b8f917bf7"
                                        },
                                        {
                                            "type": "button",
                                            "label": "提交",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "submit",
                                                            "componentId": "u:bd64f7f5fea7"
                                                        }
                                                    ]
                                                }
                                            },
                                            "level": "primary",
                                            "id": "u:91bfc503975f"
                                        }
                                    ],
                                    "resetAfterSubmit": false,
                                    "api": {
                                        "url": "/ball/addjs",
                                        "method": "post",
                                        "requestAdaptor": "",
                                        "adaptor": "",
                                        "messages": {
                                        }
                                    },
                                    "initApi": {
                                        "url": "/ball/get/$id",
                                        "method": "get"
                                    }
                                }
                            ],
                            "id": "u:dbc6f3c0e779"
                        },
                        {
                            "title": "社区冠军赛",
                            "body": [
                                {
                                    "type": "form",
                                    "id": "u:bd64f7f5fe22",
                                    "title": "",
                                    "mode": "horizontal",
                                    "dsType": "api",
                                    "feat": "Insert",
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "label": "文本",
                                            "name": "id",
                                            "id": "u:4c0a1ededc47",
                                            "value": "16",
                                            "hidden": true
                                        },
                                        {
                                            "type": "textarea",
                                            "label": "文字介绍",
                                            "name": "jieshao",
                                            "id": "u:aa105bcfd51b",
                                            "minRows": 10,
                                            "maxRows": 20,
                                            "required": true
                                        },
                                        {
                                            "type": "input-file",
                                            "label": "文件上传",
                                            "autoUpload": true,
                                            "proxy": true,
                                            "uploadType": "fileReceptor",
                                            "name": "vedio",
                                            "id": "u:d84964c25e87",
                                            "btnLabel": "文件上传",
                                            "multiple": false,
                                            "useChunk": false,
                                            "accept": "",
                                            "drag": false,
                                            "receiver": {
                                                "url": "/mgr/uploadImgAmis",
                                                "method": "post"
                                            },
                                            "required": true
                                        }
                                    ],
                                    "actions": [
                                        {
                                            "type": "button",
                                            "label": "关闭",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "custom",
                                                            "args": {
                                                            },
                                                            "script": "parent.layer.close(window.parent.TStudent.layerIndex);"
                                                        }
                                                    ]
                                                }
                                            },
                                            "id": "u:6c0b8f917bf7"
                                        },
                                        {
                                            "type": "button",
                                            "label": "提交",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "submit",
                                                            "componentId": "u:bd64f7f5fe22",
                                                            "outputVar": "submitResult"
                                                        }
                                                    ]
                                                }
                                            },
                                            "level": "primary",
                                            "id": "u:82085178ce49"
                                        }
                                    ],
                                    "resetAfterSubmit": false,
                                    "api": {
                                        "url": "/ball/addjs",
                                        "method": "post",
                                        "requestAdaptor": "",
                                        "adaptor": "",
                                        "messages": {
                                        }
                                    },
                                    "initApi": {
                                        "url": "/ball/get/$id",
                                        "method": "get"
                                    }
                                }
                            ],
                            "id": "u:012e71a6b2f9"
                        },
                        {
                            "title": "射门速度-玩湃熊之力",
                            "body": [
                                {
                                    "type": "form",
                                    "id": "u:bd64f7f5f333",
                                    "title": "",
                                    "mode": "horizontal",
                                    "dsType": "api",
                                    "feat": "Insert",
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "label": "文本",
                                            "name": "id",
                                            "id": "u:4c0a1ededc47",
                                            "value": "13",
                                            "hidden": true
                                        },
                                        {
                                            "type": "textarea",
                                            "label": "文字介绍",
                                            "name": "jieshao",
                                            "id": "u:aa105bcfd51b",
                                            "minRows": 10,
                                            "maxRows": 20,
                                            "required": true
                                        },
                                        {
                                            "type": "input-file",
                                            "label": "文件上传",
                                            "autoUpload": true,
                                            "proxy": true,
                                            "uploadType": "fileReceptor",
                                            "name": "vedio",
                                            "id": "u:d84964c25e87",
                                            "btnLabel": "文件上传",
                                            "multiple": false,
                                            "useChunk": false,
                                            "accept": "",
                                            "drag": false,
                                            "receiver": {
                                                "url": "/mgr/uploadImgAmis",
                                                "method": "post"
                                            },
                                            "required": true
                                        }
                                    ],
                                    "actions": [
                                        {
                                            "type": "button",
                                            "label": "关闭",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "custom",
                                                            "args": {
                                                            },
                                                            "script": "parent.layer.close(window.parent.TStudent.layerIndex);"
                                                        }
                                                    ]
                                                }
                                            },
                                            "id": "u:6c0b8f917bf7"
                                        },
                                        {
                                            "type": "button",
                                            "label": "提交",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "submit",
                                                            "componentId": "u:bd64f7f5f333",
                                                            "outputVar": "submitResult"
                                                        }
                                                    ]
                                                }
                                            },
                                            "level": "primary",
                                            "id": "u:60929d18d938"
                                        }
                                    ],
                                    "resetAfterSubmit": false,
                                    "api": {
                                        "url": "/ball/addjs",
                                        "method": "post",
                                        "requestAdaptor": "",
                                        "adaptor": "",
                                        "messages": {
                                        }
                                    },
                                    "initApi": {
                                        "url": "/ball/get/$id",
                                        "method": "get"
                                    }
                                }
                            ],
                            "id": "u:8ad650b97cb0"
                        },
                        {
                            "title": "玩湃熊之力-速度",
                            "body": [
                                {
                                    "type": "form",
                                    "id": "u:bd64f7f5f444",
                                    "title": "",
                                    "mode": "horizontal",
                                    "dsType": "api",
                                    "feat": "Insert",
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "label": "文本",
                                            "name": "id",
                                            "id": "u:4c0a1ededc47",
                                            "value": "15",
                                            "hidden": true
                                        },
                                        {
                                            "type": "textarea",
                                            "label": "文字介绍",
                                            "name": "jieshao",
                                            "id": "u:aa105bcfd51b",
                                            "minRows": 10,
                                            "maxRows": 20,
                                            "required": true
                                        },
                                        {
                                            "type": "input-file",
                                            "label": "文件上传",
                                            "autoUpload": true,
                                            "proxy": true,
                                            "uploadType": "fileReceptor",
                                            "name": "vedio",
                                            "id": "u:d84964c25e87",
                                            "btnLabel": "文件上传",
                                            "multiple": false,
                                            "useChunk": false,
                                            "accept": "",
                                            "drag": false,
                                            "receiver": {
                                                "url": "/mgr/uploadImgAmis",
                                                "method": "post"
                                            },
                                            "required": true
                                        }
                                    ],
                                    "actions": [
                                        {
                                            "type": "button",
                                            "label": "关闭",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "custom",
                                                            "args": {
                                                            },
                                                            "script": "parent.layer.close(window.parent.TStudent.layerIndex);"
                                                        }
                                                    ]
                                                }
                                            },
                                            "id": "u:6c0b8f917bf7"
                                        },
                                        {
                                            "type": "button",
                                            "label": "提交",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "submit",
                                                            "componentId": "u:bd64f7f5f444",
                                                            "outputVar": "submitResult"
                                                        }
                                                    ]
                                                }
                                            },
                                            "level": "primary",
                                            "id": "u:95a6bc834dc5"
                                        }
                                    ],
                                    "resetAfterSubmit": false,
                                    "api": {
                                        "url": "/ball/addjs",
                                        "method": "post",
                                        "requestAdaptor": "",
                                        "adaptor": "",
                                        "messages": {
                                        }
                                    },
                                    "initApi": {
                                        "url": "/ball/get/$id",
                                        "method": "get"
                                    }
                                }
                            ],
                            "id": "u:544152a47373"
                        },
                        {
                            "title": "方块球王",
                            "body": [
                                {
                                    "type": "form",
                                    "id": "u:bd64f7f5f555",
                                    "title": "",
                                    "mode": "horizontal",
                                    "dsType": "api",
                                    "feat": "Insert",
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "label": "文本",
                                            "name": "id",
                                            "id": "u:4c0a1ededc47",
                                            "value": "1",
                                            "hidden": true
                                        },
                                        {
                                            "type": "textarea",
                                            "label": "文字介绍",
                                            "name": "jieshao",
                                            "id": "u:aa105bcfd51b",
                                            "minRows": 10,
                                            "maxRows": 20,
                                            "required": true
                                        },
                                        {
                                            "type": "input-file",
                                            "label": "文件上传",
                                            "autoUpload": true,
                                            "proxy": true,
                                            "uploadType": "fileReceptor",
                                            "name": "vedio",
                                            "id": "u:d84964c25e87",
                                            "btnLabel": "文件上传",
                                            "multiple": false,
                                            "useChunk": false,
                                            "accept": "",
                                            "drag": false,
                                            "receiver": {
                                                "url": "/mgr/uploadImgAmis",
                                                "method": "post"
                                            },
                                            "required": true
                                        }
                                    ],
                                    "actions": [
                                        {
                                            "type": "button",
                                            "label": "关闭",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "custom",
                                                            "args": {
                                                            },
                                                            "script": "parent.layer.close(window.parent.TStudent.layerIndex);"
                                                        }
                                                    ]
                                                }
                                            },
                                            "id": "u:6c0b8f917bf7"
                                        },
                                        {
                                            "type": "button",
                                            "label": "提交",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "submit",
                                                            "componentId": "u:bd64f7f5f555",
                                                            "outputVar": "submitResult"
                                                        }
                                                    ]
                                                }
                                            },
                                            "level": "primary",
                                            "id": "u:f71511d042a8"
                                        }
                                    ],
                                    "resetAfterSubmit": false,
                                    "api": {
                                        "url": "/ball/addjs",
                                        "method": "post",
                                        "requestAdaptor": "",
                                        "adaptor": "",
                                        "messages": {
                                        }
                                    },
                                    "initApi": {
                                        "url": "/ball/get/$id",
                                        "method": "get"
                                    }
                                }
                            ],
                            "id": "u:755a96b3d27f"
                        },
                        {
                            "title": "镜像阵容",
                            "body": [
                                {
                                    "type": "form",
                                    "id": "u:bd64f7f5f666",
                                    "title": "",
                                    "mode": "horizontal",
                                    "dsType": "api",
                                    "feat": "Insert",
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "label": "文本",
                                            "name": "id",
                                            "id": "u:4c0a1ededc47",
                                            "value": "7",
                                            "hidden": true
                                        },
                                        {
                                            "type": "textarea",
                                            "label": "文字介绍",
                                            "name": "jieshao",
                                            "id": "u:aa105bcfd51b",
                                            "minRows": 10,
                                            "maxRows": 20,
                                            "required": true
                                        },
                                        {
                                            "type": "input-file",
                                            "label": "文件上传",
                                            "autoUpload": true,
                                            "proxy": true,
                                            "uploadType": "fileReceptor",
                                            "name": "vedio",
                                            "id": "u:d84964c25e87",
                                            "btnLabel": "文件上传",
                                            "multiple": false,
                                            "useChunk": false,
                                            "accept": "",
                                            "drag": false,
                                            "receiver": {
                                                "url": "/mgr/uploadImgAmis",
                                                "method": "post"
                                            },
                                            "required": true
                                        }
                                    ],
                                    "actions": [
                                        {
                                            "type": "button",
                                            "label": "关闭",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "custom",
                                                            "args": {
                                                            },
                                                            "script": "parent.layer.close(window.parent.TStudent.layerIndex);"
                                                        }
                                                    ]
                                                }
                                            },
                                            "id": "u:6c0b8f917bf7"
                                        },
                                        {
                                            "type": "button",
                                            "label": "提交",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "submit",
                                                            "componentId": "u:bd64f7f5f666",
                                                            "outputVar": "submitResult"
                                                        }
                                                    ]
                                                }
                                            },
                                            "level": "primary",
                                            "id": "u:a37a95f8c2c6"
                                        }
                                    ],
                                    "resetAfterSubmit": false,
                                    "api": {
                                        "url": "/ball/addjs",
                                        "method": "post",
                                        "requestAdaptor": "",
                                        "adaptor": "",
                                        "messages": {
                                        }
                                    },
                                    "initApi": {
                                        "url": "/ball/get/$id",
                                        "method": "get"
                                    }
                                }
                            ],
                            "id": "u:e4815a5fccf1"
                        },
                        {
                            "title": "社区小球王",
                            "body": [
                                {
                                    "type": "form",
                                    "id": "u:bd64f7f5f777",
                                    "title": "",
                                    "mode": "horizontal",
                                    "dsType": "api",
                                    "feat": "Insert",
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "label": "文本",
                                            "name": "id",
                                            "id": "u:4c0a1ededc47",
                                            "value": "8",
                                            "hidden": true
                                        },
                                        {
                                            "type": "textarea",
                                            "label": "文字介绍",
                                            "name": "jieshao",
                                            "id": "u:aa105bcfd51b",
                                            "minRows": 10,
                                            "maxRows": 20,
                                            "required": true
                                        },
                                        {
                                            "type": "input-file",
                                            "label": "文件上传",
                                            "autoUpload": true,
                                            "proxy": true,
                                            "uploadType": "fileReceptor",
                                            "name": "vedio",
                                            "id": "u:d84964c25e87",
                                            "btnLabel": "文件上传",
                                            "multiple": false,
                                            "useChunk": false,
                                            "accept": "",
                                            "drag": false,
                                            "receiver": {
                                                "url": "/mgr/uploadImgAmis",
                                                "method": "post"
                                            },
                                            "required": true
                                        }
                                    ],
                                    "actions": [
                                        {
                                            "type": "button",
                                            "label": "关闭",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "custom",
                                                            "args": {
                                                            },
                                                            "script": "parent.layer.close(window.parent.TStudent.layerIndex);"
                                                        }
                                                    ]
                                                }
                                            },
                                            "id": "u:6c0b8f917bf7"
                                        },
                                        {
                                            "type": "button",
                                            "label": "提交",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "submit",
                                                            "componentId": "u:bd64f7f5f777",
                                                            "outputVar": "submitResult"
                                                        }
                                                    ]
                                                }
                                            },
                                            "level": "primary",
                                            "id": "u:0c61e0e5b4f4"
                                        }
                                    ],
                                    "resetAfterSubmit": false,
                                    "api": {
                                        "url": "/ball/addjs",
                                        "method": "post",
                                        "requestAdaptor": "",
                                        "adaptor": "",
                                        "messages": {
                                        }
                                    },
                                    "initApi": {
                                        "url": "/ball/get/$id",
                                        "method": "get"
                                    }
                                }
                            ],
                            "id": "u:2bfa05b7cccb"
                        },
                        {
                            "title": "涨姿势",
                            "body": [
                                {
                                    "type": "form",
                                    "id": "u:bd64f7f5f888",
                                    "title": "",
                                    "mode": "horizontal",
                                    "dsType": "api",
                                    "feat": "Insert",
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "label": "文本",
                                            "name": "id",
                                            "id": "u:4c0a1ededc47",
                                            "value": "10",
                                            "hidden": true
                                        },
                                        {
                                            "type": "textarea",
                                            "label": "文字介绍",
                                            "name": "jieshao",
                                            "id": "u:aa105bcfd51b",
                                            "minRows": 10,
                                            "maxRows": 20,
                                            "required": true
                                        },
                                        {
                                            "type": "input-file",
                                            "label": "文件上传",
                                            "autoUpload": true,
                                            "proxy": true,
                                            "uploadType": "fileReceptor",
                                            "name": "vedio",
                                            "id": "u:d84964c25e87",
                                            "btnLabel": "文件上传",
                                            "multiple": false,
                                            "useChunk": false,
                                            "accept": "",
                                            "drag": false,
                                            "receiver": {
                                                "url": "/mgr/uploadImgAmis",
                                                "method": "post"
                                            },
                                            "required": true
                                        }
                                    ],
                                    "actions": [
                                        {
                                            "type": "button",
                                            "label": "关闭",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "custom",
                                                            "args": {
                                                            },
                                                            "script": "parent.layer.close(window.parent.TStudent.layerIndex);"
                                                        }
                                                    ]
                                                }
                                            },
                                            "id": "u:6c0b8f917bf7"
                                        },
                                        {
                                            "type": "button",
                                            "label": "提交",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "submit",
                                                            "componentId": "u:bd64f7f5f888",
                                                            "outputVar": "submitResult"
                                                        }
                                                    ]
                                                }
                                            },
                                            "level": "primary",
                                            "id": "u:e04f1bcae4aa"
                                        }
                                    ],
                                    "resetAfterSubmit": false,
                                    "api": {
                                        "url": "/ball/addjs",
                                        "method": "post",
                                        "requestAdaptor": "",
                                        "adaptor": "",
                                        "messages": {
                                        }
                                    },
                                    "initApi": {
                                        "url": "/ball/get/$id",
                                        "method": "get"
                                    }
                                }
                            ],
                            "id": "u:2f4595ac11a7"
                        },
                        {
                            "title": "涨姿势[2]",
                            "body": [
                                {
                                    "type": "form",
                                    "id": "u:bd64f7f5f999",
                                    "title": "",
                                    "mode": "horizontal",
                                    "dsType": "api",
                                    "feat": "Insert",
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "label": "文本",
                                            "name": "id",
                                            "id": "u:4c0a1ededc47",
                                            "value": "11",
                                            "hidden": true
                                        },
                                        {
                                            "type": "textarea",
                                            "label": "文字介绍",
                                            "name": "jieshao",
                                            "id": "u:aa105bcfd51b",
                                            "minRows": 10,
                                            "maxRows": 20,
                                            "required": true
                                        },
                                        {
                                            "type": "input-file",
                                            "label": "文件上传",
                                            "autoUpload": true,
                                            "proxy": true,
                                            "uploadType": "fileReceptor",
                                            "name": "vedio",
                                            "id": "u:d84964c25e87",
                                            "btnLabel": "文件上传",
                                            "multiple": false,
                                            "useChunk": false,
                                            "accept": "",
                                            "drag": false,
                                            "receiver": {
                                                "url": "/mgr/uploadImgAmis",
                                                "method": "post"
                                            },
                                            "required": true
                                        }
                                    ],
                                    "actions": [
                                        {
                                            "type": "button",
                                            "label": "关闭",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "custom",
                                                            "args": {
                                                            },
                                                            "script": "parent.layer.close(window.parent.TStudent.layerIndex);"
                                                        }
                                                    ]
                                                }
                                            },
                                            "id": "u:6c0b8f917bf7"
                                        },
                                        {
                                            "type": "button",
                                            "label": "提交",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "submit",
                                                            "componentId": "u:bd64f7f5f999",
                                                            "outputVar": "submitResult"
                                                        }
                                                    ]
                                                }
                                            },
                                            "level": "primary",
                                            "id": "u:6fbe66eae6e1"
                                        }
                                    ],
                                    "resetAfterSubmit": false,
                                    "api": {
                                        "url": "/ball/addjs",
                                        "method": "post",
                                        "requestAdaptor": "",
                                        "adaptor": "",
                                        "messages": {
                                        }
                                    },
                                    "initApi": {
                                        "url": "/ball/get/$id",
                                        "method": "get"
                                    }
                                }
                            ],
                            "id": "u:efb71048f771"
                        },
                        {
                            "title": "绿茵密码",
                            "body": [
                                {
                                    "type": "form",
                                    "id": "u:bd64f7f50007",
                                    "title": "",
                                    "mode": "horizontal",
                                    "dsType": "api",
                                    "feat": "Insert",
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "label": "文本",
                                            "name": "id",
                                            "id": "u:4c0a1ededc47",
                                            "value": "5",
                                            "hidden": true
                                        },
                                        {
                                            "type": "textarea",
                                            "label": "文字介绍",
                                            "name": "jieshao",
                                            "id": "u:aa105bcfd51b",
                                            "minRows": 10,
                                            "maxRows": 20,
                                            "required": true
                                        },
                                        {
                                            "type": "input-file",
                                            "label": "文件上传",
                                            "autoUpload": true,
                                            "proxy": true,
                                            "uploadType": "fileReceptor",
                                            "name": "vedio",
                                            "id": "u:d84964c25e87",
                                            "btnLabel": "文件上传",
                                            "multiple": false,
                                            "useChunk": false,
                                            "accept": "",
                                            "drag": false,
                                            "receiver": {
                                                "url": "/mgr/uploadImgAmis",
                                                "method": "post"
                                            },
                                            "required": true
                                        }
                                    ],
                                    "actions": [
                                        {
                                            "type": "button",
                                            "label": "关闭",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "custom",
                                                            "args": {
                                                            },
                                                            "script": "parent.layer.close(window.parent.TStudent.layerIndex);"
                                                        }
                                                    ]
                                                }
                                            },
                                            "id": "u:6c0b8f917bf7"
                                        },
                                        {
                                            "type": "button",
                                            "label": "提交",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "submit",
                                                            "componentId": "u:bd64f7f50007",
                                                            "outputVar": "submitResult"
                                                        }
                                                    ]
                                                }
                                            },
                                            "level": "primary",
                                            "id": "u:30fd93656c25"
                                        }
                                    ],
                                    "resetAfterSubmit": false,
                                    "api": {
                                        "url": "/ball/addjs",
                                        "method": "post",
                                        "requestAdaptor": "",
                                        "adaptor": "",
                                        "messages": {
                                        }
                                    },
                                    "initApi": {
                                        "url": "/ball/get/$id",
                                        "method": "get"
                                    }
                                }
                            ],
                            "id": "u:50cf027d8c62"
                        },
                        {
                            "title": "步骤说明",
                            "body": [
                                {
                                    "type": "form",
                                    "id": "u:bd64f7f5f000",
                                    "title": "",
                                    "mode": "horizontal",
                                    "dsType": "api",
                                    "feat": "Insert",
                                    "body": [
                                        {
                                            "type": "input-text",
                                            "label": "文本",
                                            "name": "id",
                                            "id": "u:4c0a1ededc47",
                                            "value": "100",
                                            "hidden": true
                                        },
                                        {
                                            "type": "input-rich-text",
                                            "label": "富文本",
                                            "name": "rich-text",
                                            "vendor": "tinymce",
                                            "id": "u:e67366a6ef31",
                                            "options": {
                                                "plugins": "advlist,autolink,link,image,lists,charmap,preview,anchor,pagebreak,searchreplace,wordcount,visualblocks,visualchars,code,fullscreen,insertdatetime,media,nonbreaking,table,emoticons,template,help",
                                                "toolbar": "undo redo formatselect bold italic backcolor alignleft aligncenter alignright alignjustify bullist numlist outdent indent removeformat help",
                                                "menubar": true
                                            },
                                            "mode": "normal"
                                        }
                                    ],
                                    "actions": [
                                        {
                                            "type": "button",
                                            "label": "关闭",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "custom",
                                                            "args": {
                                                            },
                                                            "script": "parent.layer.close(window.parent.TStudent.layerIndex);"
                                                        }
                                                    ]
                                                }
                                            },
                                            "id": "u:6c0b8f917bf7"
                                        },
                                        {
                                            "type": "button",
                                            "label": "提交",
                                            "onEvent": {
                                                "click": {
                                                    "actions": [
                                                        {
                                                            "actionType": "submit",
                                                            "componentId": "u:bd64f7f5f000",
                                                            "outputVar": "submitResult"
                                                        }
                                                    ]
                                                }
                                            },
                                            "level": "primary",
                                            "id": "u:c0684967ad04"
                                        }
                                    ],
                                    "resetAfterSubmit": false,
                                    "api": {
                                        "url": "/ball/addjs",
                                        "method": "post",
                                        "requestAdaptor": "",
                                        "adaptor": "",
                                        "messages": {
                                        }
                                    },
                                    "initApi": {
                                        "url": "/ball/get/$id",
                                        "method": "get"
                                    }
                                }
                            ],
                            "id": "u:254c9cdf53c1"
                        }
                    ],
                    "id": "u:56160148e468",
                    "toolbar": [
                    ]
                }
            ],
            "id": "u:899c8b49ca64"
        };
        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/WEB-INF/view/system/ball/paike.html
New file
@@ -0,0 +1,410 @@
<!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": "page",
      "title": "",
      "regions": [
        "body",
        "toolbar",
        "header"
      ],
      "body": [
        {
          "type": "tabs",
          "tabs": [
            {
              "title": "按学员查看",
              "body": [
                {
                  "type": "crud",
                  "syncLocation": false,
                  "api": {
                    "method": "post",
                    "url": "/ball/getStudentTotal",
                    "messages": {
                    }
                  },
                  "columns": [
                    {
                      "name": "studentName",
                      "label": "学院姓名",
                      "type": "text",
                      "id": "u:631a38f8ab8f"
                    },
                    {
                      "name": "province",
                      "label": "所在省",
                      "type": "text",
                      "id": "u:d1c9f94c453a"
                    },
                    {
                      "label": "所在市",
                      "type": "text",
                      "name": "city",
                      "id": "u:71aded278293"
                    },
                    {
                      "label": "课包名称",
                      "type": "text",
                      "name": "courseName",
                      "id": "u:22cab5368b85",
                      "classNameExpr": "<%= data.courseName === '总计' ? 'bg-danger' : '' %>"
                    },
                    {
                      "label": "应上课时数",
                      "type": "text",
                      "name": "totalClassHours",
                      "id": "u:9f3c838b4dce",
                      "placeholder": "-",
                      "classNameExpr": "<%= data.courseName === '总计' ? 'bg-danger' : '' %>"
                    },
                    {
                      "type": "text",
                      "name": "cashPayment",
                      "label": "应收总收益",
                      "id": "u:ad526537117c",
                      "classNameExpr": "<%= data.courseName === '总计' ? 'bg-danger' : '' %>"
                    },
                    {
                      "label": "实上课时数",
                      "type": "text",
                      "name": "hasHours",
                      "id": "u:14eb3c5fac85",
                      "classNameExpr": "<%= data.courseName === '总计' ? 'bg-danger' : '' %>"
                    },
                    {
                      "label": "实际总收益",
                      "type": "text",
                      "name": "hasPayment",
                      "id": "u:6c0e4a862b04",
                      "placeholder": "-",
                      "format": "YYYY-MM-DD",
                      "classNameExpr": "<%= data.courseName === '总计' ? 'bg-danger' : '' %>"
                    }
                  ],
                  "bulkActions": [
                  ],
                  "itemActions": [
                  ],
                  "id": "u:e103c7434df8",
                  "filterSettingSource": [
                    "id",
                    "customerName",
                    "simName",
                    "address",
                    "industryId",
                    "email",
                    "createBy",
                    "updateBy",
                    "remark",
                    "customerCode"
                  ],
                  "features": [
                    "create",
                    "filter",
                    "bulkDelete",
                    "view",
                    "delete",
                    "update",
                    "bulkUpdate"
                  ],
                  "filterColumnCount": 3,
                  "filterEnabledList": [
                  ],
                  "headerToolbar": [
                    "bulkActions"
                  ],
                  "filter": {
                    "title": "查询条件",
                    "columnCount": 3,
                    "mode": "horizontal",
                    "body": [
                      {
                        "type": "input-city",
                        "label": "城市选择",
                        "name": "cityCode",
                        "allowDistrict": false,
                        "id": "u:16db9fd9fe42",
                        "mode": "horizontal",
                        "horizontal": {
                          "left": 3,
                          "right": 9
                        },
                        "className": ""
                      },
                      // {
                      //   "type": "select",
                      //   "label": "客户简称",
                      //   "name": "simName",
                      //   "id": "u:1942896a0f61",
                      //   "multiple": false,
                      //   "source": {
                      //     "url": "/api/v1/rep/cus/getselect",
                      //     "method": "get",
                      //     "messages": {
                      //     }
                      //   },
                      //   "labelField": "simName",
                      //   "valueField": "simName",
                      //   "searchable": true
                      // },
                      {
                        "type": "input-date-range",
                        "label": "日期范围",
                        "name": "times",
                        "id": "u:5ea0ab341c9e",
                        "embed": false,
                        "format": "YYYY-MM-DD",
                        "inputFormat": "YYYY-MM-DD"
                      },
                      {
                        "type": "input-text",
                        "label": "学员姓名",
                        "name": "studentName",
                        "id": "u:528726820775"
                      }
                    ],
                    "id": "u:2c92f31a25d0",
                    "name": "select1",
                    "rules": [
                    ]
                  },
                  "perPageAvailable": [
                    10,
                    20,
                    50,
                    100
                  ],
                  "messages": {
                  },
                  "footerToolbar": [
                    {
                      "type": "statistics",
                      "align": "left"
                    },
                    {
                      "type": "pagination",
                      "align": "left"
                    },
                    {
                      "type": "switch-per-page",
                      "tpl": "内容",
                      "align": "left"
                    }
                  ],
                  "columnsTogglable": "auto",
                  "pageField": "",
                  "perPageField": "",
                  "alwaysShowPagination": true,
                  "loadDataOnce": true,
                  "perPage": 5,
                  "combineNum": 3
                }
              ],
              "id": "u:6e437c3e244f"
            },
            {
              "title": "按课包查看",
              "body": [
                {
                  "type": "crud",
                  "syncLocation": false,
                  "api": {
                    "method": "post",
                    "url": "/ball/bypac",
                    "messages": {
                    }
                  },
                  "columns": [
                    {
                      "name": "name",
                      "label": "课包名称",
                      "type": "text",
                      "id": "u:ee84f6f80722"
                    },
                    {
                      "name": "province",
                      "label": "所在省",
                      "type": "text",
                      "id": "u:d35930e735a8"
                    },
                    {
                      "type": "text",
                      "label": "所在市",
                      "name": "city",
                      "id": "u:d74f9dcfdb4e"
                    },
                    {
                      "type": "text",
                      "label": "所属门店",
                      "name": "store",
                      "id": "u:6fb45db2b3ef"
                    },
                    {
                      "type": "text",
                      "label": "应上课时数",
                      "name": "totalClassHours",
                      "id": "u:5c82dde5c22d"
                    },
                    {
                      "type": "text",
                      "label": "应收总收益",
                      "name": "cashPayment",
                      "id": "u:b915f72e72b0"
                    },
                    {
                      "type": "text",
                      "label": "实上课时数",
                      "name": "hasHours",
                      "id": "u:2fb55efdecab"
                    },
                    {
                      "type": "text",
                      "label": "实收总收益",
                      "name": "lavePay",
                      "id": "u:c46b9aeca543"
                    },
                    {
                      "type": "operation",
                      "label": "操作",
                      "buttons": [
                      ],
                      "id": "u:0c6ed863e6a8"
                    }
                  ],
                  "bulkActions": [
                  ],
                  "itemActions": [
                  ],
                  "id": "u:c765ccbe1f1a",
                  "features": [
                    "filter"
                  ],
                  "filterColumnCount": 3,
                  "filter": {
                    "title": "查询条件",
                    "columnCount": 3,
                    "mode": "horizontal",
                    "body": [
                      {
                        "type": "input-city",
                        "label": "城市选择",
                        "name": "cityCode",
                        "allowDistrict": false,
                        "id": "u:16db9fd9fe42",
                        "mode": "horizontal",
                        "horizontal": {
                          "left": 3,
                          "right": 9
                        },
                        "className": ""
                      },
                      // {
                      //   "type": "select",
                      //   "label": "客户简称",
                      //   "name": "simName",
                      //   "id": "u:1942896a0f61",
                      //   "multiple": false,
                      //   "source": {
                      //     "url": "/api/v1/rep/cus/getselect",
                      //     "method": "get",
                      //     "messages": {
                      //     }
                      //   },
                      //   "labelField": "simName",
                      //   "valueField": "simName",
                      //   "searchable": true
                      // },
                      {
                        "type": "input-text",
                        "label": "所属门店",
                        "name": "store",
                        "id": "u:528726820775"
                      },
                      {
                        "type": "input-text",
                        "label": "课包名称",
                        "name": "name",
                        "id": "u:3bce46aeafeb"
                      },
                      {
                        "type": "input-date-range",
                        "label": "日期范围",
                        "name": "times",
                        "id": "u:5ea0ab341c9e",
                        "embed": false,
                        "format": "YYYY-MM-DD",
                        "inputFormat": "YYYY-MM-DD"
                      }
                    ],
                    "id": "u:2c92f31a25d0",
                    "name": "select1",
                    "rules": [
                    ]
                  },
                  "perPageAvailable": [
                    10
                  ],
                  "messages": {
                  }
                }
              ],
              "id": "u:74421661b6be"
            }
          ],
          "id": "u:9687d5f89c52"
        }
      ],
      "id": "u:b14a93e2aeb3"
    };
    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/WEB-INF/view/system/ball/yuyue.html
New file
@@ -0,0 +1,89 @@
@layout("/common/_container.html"){
<div class="row" id = "ttt">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            @if(role=='1'){
                            <div class="col-sm-3">
                                <div class="input-group">
                                    <div class="input-group-btn open">
                                        <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
                                            所在省
                                        </button>
                                    </div>
                                    <select class="form-control" id="pCode" onchange="TCompetition.oneChange(this)">
                                        <option value="">全部</option>
                                        @for(obj in list){
                                        <option value="${obj.code}">${obj.name}</option>
                                        @}
                                    </select>
                                </div>
                            </div>
                            @}
                            @if(role=='1'){
                            <div class="col-sm-3">
                                <div class="input-group">
                                    <div class="input-group-btn open">
                                        <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true">
                                            所在市
                                        </button>
                                    </div>
                                    <select class="form-control" id="cCode">
                                    </select>
                                </div>
                            </div>
                            @}
                            <div class="col-sm-3">
                                <#NameCon id="store" name="门店名称" />
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="peopleName" name="预约人" />
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="phone" name="联系方式" />
                            </div>
                            <div class="col-sm-3">
                                <#TimeCon id="date" name="报名时间" isTime="false"/>
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TStudent.search()"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TStudentTableToolbar" role="group">
                                <#button name="添加" icon="fa-plus" clickFun="TStudent.openAddTStudent()"/>
                                <#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"/>
                            @}
<!--                            <button id="exportButton">TTTTTTTTTT</button>-->
                        </div>
                        <#table id="TStudentTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/modular/system/ball/yuyue.js"></script>
<script src="${ctxPath}/modular/system/tShop/tShop.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js">
</script>
<script>
    laydate.render({
        elem: '#date'
        ,lang:"CN"
    });
</script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/ball/yuyue_add.html
New file
@@ -0,0 +1,286 @@
@layout("/common/_container.html"){
<style>
    .green-button {
        background-color: green;
    }
</style>
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
            <div class="row">
                <div class="form-group">
                    <label class="col-sm-3 control-label">*所在省:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="provinceCode" name="provinceCode">
                            @for(obj in province){
                            <option value="${obj.code}">${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*所在市:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="cityCode" name="cityCode">
                            @for(obj in city){
                            <option value="${obj.code}">${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*所属门店:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="storeId" name="storeId">
                            @for(obj in store){
                            <option 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-4">
                       <input type="radio" name="type" value="1"  checked="" onclick="updateType(1)"  > 全场
                        <input type="radio" name="type" value="2" onclick="updateType(2)" > 半场
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*上课场地:</label>
                    <div class="col-sm-4">
                        <select class="form-control" id="siteId" name="siteId"  onchange="CoursePackageInfo.addTime(this.value)">
                            <option >请选择场地</option>
                            @for(obj in site){
                            <option value="${obj.id}"  data-custom-data="1">${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <div class="form-group"  id="half1"  hidden="hidden">
                    <label class="col-sm-3 control-label">*选择半场:</label>
                    <div class="col-sm-4">
                        <select class="form-control"  name="half" id="half">
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">预约时间:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="time" name="time" type="text" >
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*预约时间段:</label>
                    <div class="col-sm-5" id="ttt1">
                        <div class="layui-btn-group" id="ttt2">
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">现金价格:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="cash" name="cash" type="text" >
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">玩派币价格:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="play" name="play" type="text" >
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">预约人:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="booker" name="booker" type="text" >
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">预约人:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="phone" name="phone" type="text" >
                    </div>
                </div>
<!--                <input type="text" id = "counpons">-->
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="CoursePackageInfo.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/modular/system/ball/yuyue_info.js"></script>
<script type="text/javascript">
    function updateType(o) {
        if(o==1){
            var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
            var count = elements.length;
            console.log("Number of elements: " + count);
            $("#half1").hide()
            var radios = document.getElementsByName("type");
            var selectedValue;
            for (var i = 0; i < radios.length; i++) {
                if (radios[i].checked) {
                    selectedValue = radios[i].value;
                    break;
                }
            }
            var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
                console.log("===========3333====="+data)
                if(data!=null){
                    $("#cash").val(data[0] * count);
                    $("#play").val(data[1] * count);
                }
            })
            ajax3.start()
        }else {
            var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
            var count = elements.length;
            console.log("Number of elements: " + count);
            $("#half1").show()
            var radios = document.getElementsByName("type");
            var selectedValue;
            for (var i = 0; i < radios.length; i++) {
                if (radios[i].checked) {
                    selectedValue = radios[i].value;
                    break;
                }
            }
            var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
                console.log("===========3333====="+data)
                if(data!=null){
                    $("#cash").val(data[0] * count);
                    $("#play").val(data[1] * count);
                }
            })
            ajax3.start()
        }
    }
    function toggleColor(button) {
        button.classList.toggle("green-button");
        var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
        var count = elements.length;
        console.log("Number of elements: " + count);
        var radios = document.getElementsByName("type");
        var selectedValue;
        for (var i = 0; i < radios.length; i++) {
            if (radios[i].checked) {
                selectedValue = radios[i].value;
                break;
            }
        }
        var ajax3 = new $ax(Feng.ctxPath + "/ball/getMoney/"+$('#siteId').val()+'/'+selectedValue, function(data){
            console.log("===========3333====="+data)
            if(data!=null){
                $("#cash").val(data[0] * count);
                $("#play").val(data[1] * count);
            }
        })
        ajax3.start()
    }
    laydate.render({
        elem: '#time'
        ,lang:"CN",
        min:0,
        max:10
    });
    laydate.render({
        elem: '#holitime'
        ,range: true //或 range: '~' 来自定义分割字符
    });
    var avatarUp = new $WebUpload("coverDrawing");
    avatarUp.setUploadBarId("progressBar");
    avatarUp.init();
    var avatarUp1 = new $WebUpload("detailDrawing");
    avatarUp1.setUploadBarId("progressBar");
    avatarUp1.init();
    var avatarUp1 = new $WebUpload("introduceDrawing");
    avatarUp1.setUploadBarId("progressBar");
    avatarUp1.init();
    function addTime(){
        var i =  $('#dayTime > div').length
        let htmlStr ='           <div style="display:flex">\n' +
            '                                <input class="form-control" id="classStartTime'+i+'" name="classStartTime" placeholder="请选择" style="width: 200px;">\n' +
            '                                <i class="fa fa-trash-o" style="font-size:24px" onclick="removePrice1(this)"></i>\n' +
            '                            </div>'
        $('#dayTime').append(htmlStr);
        console.log("========="+i)
        laydate.render({
            elem: '#classStartTime'+i,
            type: 'time',
            range: true
        });
    }
</script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html
cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html
@@ -41,6 +41,19 @@
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
            <input hidden id="day" value="${data.dayone}">
            <input hidden id="month" value="${data.monthone}">
            <input hidden id="quarter" value="${data.quarterone}">
            <input hidden id="year" value="${data.yearone}">
            <input hidden id="age1" value="${stuData.age1}">
            <input hidden id="age2" value="${stuData.age2}">
            <input hidden id="age3" value="${stuData.age3}">
            <input hidden id="age4" value="${stuData.age4}">
            <input hidden id="boy" value="${stuData.boy}">
            <input hidden id="girl" value="${stuData.girl}">
            <div class="row">
                <div class="col-sm-10">
                    <div style="height: 50px;box-sizing: border-box;background:#f3f3f4;line-height: 50px;border:1px solid;margin-bottom: 20px;width: auto">
@@ -48,6 +61,8 @@
                        <div id="div2" class='table1' onclick="getContent(2)" style="border-right: 1px solid #333;">运营统计</div>
                        <div id="div3" class='table1' onclick="getContent(3)" style="border-right: 1px solid #333;">教学统计</div>
                    </div>
                    <div class="row" id="content1" style="margin-left: 100px;">
                        <div class="col-sm-11">
                            <div class="form-group">
@@ -71,21 +86,19 @@
                                    </br>
                                    <div class="col-sm-3" style="width: 400px;display: flex">
                                        <#TimeCon id="beginTime" name="时间段:" isTime="false"/>
                                        <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/>
                                        <#button name="搜索" icon="fa-search" clickFun="search1()"/>
                                    </div>
                                </div>
                                <div class="col-sm-10" style="width: 1500px" >
                                    </br>
                                    </br>
                                   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>会员费收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>玩湃币充值收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>课程收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>活动收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>订场收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>赛事收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>商品收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>其他收入:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>会员费收入:<label id="fee1">${data.fee1}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>玩湃币充值收入:<label id="fee2">${data.fee2}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>课程收入:<label id="fee3">${data.fee3}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>活动/赛事收入:<label id="fee4">${data.fee4}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>订场收入:<label id="fee5">${data.fee5}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    <span>商品收入:<label id="fee7">${data.fee7}</label></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    </br>
                                    </br>
                                    </br>
@@ -239,10 +252,138 @@
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/modular/system/dataStatistics/echarts.min.js"></script>
<script src="${ctxPath}/static/js/plugins/switchery/switchery.js"></script>
<script>
    function search1(){
        var time = $("#beginTime").val()
        var ajax = new $ax(Feng.ctxPath + "/data/type1", function (data) {
            $("#fee1").text(data.fee1)
            $("#fee2").text(data.fee2)
            $("#fee3").text(data.fee3)
            $("#fee4").text(data.fee4)
            $("#fee5").text(data.fee5)
            $("#fee7").text(data.fee7)
            $("#day").val(data.dayone)
            $("#month").val(data.monthone)
            $("#quarter").val(data.quarterone)
            $("#year").val(data.yearone)
            var chartDom = document.getElementById('cookieTicket');
            var myChart = echarts.init(chartDom);
            var option;
            option = {
                title: {
                    text: '门票收入',
                    subtext: '',
                    left: 'center'
                },
                tooltip: {
                    trigger: 'item'
                },
                series: [
                    {
                        name: 'Access From',
                        type: 'pie',
                        radius: '50%',
                        data: [
                            { value: data.dayone, name: '日卡' },
                            { value: data.monthone, name: '月卡' },
                            { value: data.quarterone, name: '季卡' },
                            { value: data.yearone, name: '年卡' },
                        ],
                        emphasis: {
                            itemStyle: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
                            }
                        }
                    }
                ]
            };
            myChart.setOption(option);
            var chartDom = document.getElementById('cookieCourse');
            var myChart = echarts.init(chartDom);
            var option;
            option = {
                title: {
                    text: '课程收入',
                    subtext: '',
                    left: 'center'
                },
                tooltip: {
                    trigger: 'item'
                },
                series: [
                    {
                        name: 'Access From',
                        type: 'pie',
                        radius: '50%',
                        data:    data.courseData,
                        emphasis: {
                            itemStyle: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
                            }
                        }
                    }
                ]
            };
            myChart.setOption(option);
            var chartDom = document.getElementById('cookieBooking');
            var myChart = echarts.init(chartDom);
            var option;
            option = {
                title: {
                    text: '订场收入',
                    subtext: '',
                    left: 'center'
                },
                tooltip: {
                    trigger: 'item'
                },
                series: [
                    {
                        name: 'Access From',
                        type: 'pie',
                        radius: '50%',
                        data: data.siteData,
                        emphasis: {
                            itemStyle: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
                            }
                        }
                    }
                ]
            };
            myChart.setOption(option);
        }, function (data) {
        });
        ajax.set("time",time);
        ajax.start();
    }
    var ans = [];
    var weekX = [];
    var monthX = ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"];
@@ -661,6 +802,8 @@
                }
            ]
        };
        option6  = {
            tooltip: {
                trigger: 'axis'
@@ -714,6 +857,9 @@
                }
            ]
        };
        option7  = {
            tooltip: {
                trigger: 'axis'
@@ -839,6 +985,41 @@
            $("#ensure").show();
            $("#nextB").hide();
        }
        if(type==3){
            var ajax = new $ax(Feng.ctxPath + "/data/stuCourseData", function (data) {
                console.log(data.data1)
                var chartDom = document.getElementById('cookieTeachCourse');
                var myChart = echarts.init(chartDom);
                var option;
                option = {
                    xAxis: {
                        type: 'category',
                        data: data.data1,
                    },
                    yAxis: {
                        type: 'value'
                    },
                    series: [
                        {
                            data: data.data2,
                            type: 'bar'
                        }
                    ]
                };
                myChart.setOption(option);
            }, function (data) {
            });
            ajax.start();
        }
    }
    function getContent1(type){
        //设置点击字体颜色效果
@@ -873,12 +1054,12 @@
        }
    }
</script>
<script>
    $(function(){
        var chartDom = document.getElementById('cookieTicket');
        var myChart = echarts.init(chartDom);
        var option;
        option = {
            title: {
                text: '门票收入',
@@ -895,8 +1076,10 @@
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: '年票' },
                        { value: 735, name: '亲子票' },
                        { value: $("#day").val(), name: '日卡' },
                        { value: $("#month").val(), name: '月卡' },
                        { value: $("#quarter").val(), name: '季卡' },
                        { value: $("#year").val(), name: '年卡' },
                    ],
                    emphasis: {
@@ -912,8 +1095,24 @@
    myChart.setOption(option);
    });
    $(function(){
        var courseData = "${data.courseData}"
        courseData =courseData.replace("[","").replace("]","")
        courseData = courseData.split('},')
        var a=[];
        for (let j = 0; j <courseData.length; j++) {
            if(j<courseData.length-1){
                var d = courseData[j].replace("{","").replace("}","").split(",")
                    let obj ={
                        name:d[0].split("=")[1],
                        value:d[1].split("=")[1]
                    }
                    a.push(obj)
            }
        }
        var chartDom = document.getElementById('cookieCourse');
        var myChart = echarts.init(chartDom);
        var myChart = echarts.init(chartDom)
        var option;
        option = {
            title: {
@@ -930,12 +1129,7 @@
                    name: 'Access From',
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: '篮球课' },
                        { value: 735, name: '羽毛课' },
                        { value: 735, name: '足球课' },
                    ],
                    data: a,
                    emphasis: {
                        itemStyle: {
                            shadowBlur: 10,
@@ -949,6 +1143,22 @@
        myChart.setOption(option);
    });
    $(function(){
        var courseData = "${data.siteData}"
        courseData =courseData.replace("[","").replace("]","")
        courseData = courseData.split('},')
        var a=[];
        for (let j = 0; j <courseData.length; j++) {
            if(j<courseData.length-1){
                var d = courseData[j].replace("{","").replace("}","").split(",")
                let obj ={
                    name:d[0].split("=")[1],
                    value:d[1].split("=")[1]
                }
                a.push(obj)
            }
        }
        var chartDom = document.getElementById('cookieBooking');
        var myChart = echarts.init(chartDom);
        var option;
@@ -967,12 +1177,7 @@
                    name: 'Access From',
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: '激战' },
                        { value: 735, name: '篮球场' },
                        { value: 735, name: '足球场' },
                    ],
                    data: a,
                    emphasis: {
                        itemStyle: {
                            shadowBlur: 10,
@@ -1005,8 +1210,10 @@
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: '30-35' },
                        { value: 735, name: '12-18' },
                        { value: 1048, name: '0-7岁' },
                        { value: 735, name: '8-10岁' },
                        { value: 735, name: '11-12岁' },
                        { value: 735, name: '13岁以上' },
                    ],
                    emphasis: {
@@ -1041,8 +1248,10 @@
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: '30-35' },
                        { value: 735, name: '12-18' },
                        { value: $("#age1").val(), name: '0-7岁' },
                        { value: $("#age2").val(), name: '8-10岁' },
                        { value:$("#age3").val(), name: '11-12岁' },
                        { value: $("#age4").val(), name: '13岁以上' },
                    ],
                    emphasis: {
@@ -1113,8 +1322,8 @@
                    type: 'pie',
                    radius: '50%',
                    data: [
                        { value: 1048, name: '男' },
                        { value: 735, name: '女' },
                        { value: $("#boy").val(), name: '男' },
                        { value: $("#girl").val(), name: '女' },
                    ],
                    emphasis: {
@@ -1151,27 +1360,12 @@
        };
        myChart.setOption(option);
    });
    $(function(){
        var chartDom = document.getElementById('cookieTeachCourse');
        var myChart = echarts.init(chartDom);
        var option;
        option = {
            xAxis: {
                type: 'category',
                data: ['足球课', '篮球课', '羽毛球课', '网球课', '排球课']
            },
            yAxis: {
                type: 'value'
            },
            series: [
                {
                    data: [120, 200, 150, 80, 70, 110, 130],
                    type: 'bar'
    function stuCourseData(){
                }
            ]
        };
        myChart.setOption(option);
    $(function(){
    });
</script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
@@ -1,5 +1,47 @@
@layout("/common/_container.html"){
<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=77b37f0753049c4e712ea79a24e0719c"></script>
<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;
    }
    #app1{
        margin-left: 255px;
    }
</style>
<div class="ibox float-e-margins">
    <div class="ibox-content">
@@ -114,7 +156,26 @@
                </div>
                <#avatar id="coverDrawing" name="赛事封面(推荐像素:210*280px):" />
                <#avatar id="imgs" name="赛事图片(推荐像素:780*440px):" />
            <div class="row" id="app1">
                <div class="form-group">
                    <label class="col-sm-3 control-label head-scu-label">*赛事活动图片(请上传不超过五张图片): </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="."
                                :on-success="handleAvatarSuccess"
                                :on-remove="handleRemove">
                            <i class="el-icon-plus"></i>
                        </el-upload>
                        <el-dialog :visible.sync="dialogVisible">
                            <img width="100%" :src="imageUrl1" alt="">
                        </el-dialog>
                    </div>
                </div>
            </div>
                <#avatar id="registrationNotes" name="报名须知(推荐像素:宽780px):" />
        </div>
@@ -132,18 +193,55 @@
    </div>
</div>
<script src="${ctxPath}/modular/system/tCompetition/tCompetition_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: '#startTime'
        ,type:"datetime"
    var vue2 = new Vue({
        el: '#app1',
        props: {
            // 数量限制
            limit: {
                type: Number,
                default: 2
            },
        },
        data: {
            autoUpload: true,//自动上传
            imageUrl1: '',//模型数据,用于上传图片完成后图片预览
            dialogVisible: false
        },
        methods: {
            handleAvatarSuccess(res, file) {
                console.log(TCarInfoDlg.goodsPicArray1)
                TCarInfoDlg.goodsPicArray1.push(file);
            },
            beforeAvatarUpload(file) {
                const isLt2M = file.size / 1024 / 1024 < 10;
                if (!isLt2M) {
                    this.$message.error('上传图片大小不能超过 10MB!');
                }
                return isLt2M;
            },
            handleRemove(file, fileList) {
                TCarInfoDlg.goodsPicArray1 = TCarInfoDlg.goodsPicArray1.filter(item => {
                    return item.uid != file.uid;
                });
            },
        },
        created() {
        },
    });
    laydate.render({
        elem: '#endTime'
        ,type:"datetime"
        ,type:"date"
    });
    laydate.render({
        elem: '#startTime'
        ,type:"date"
    });
    laydate.render({
        elem: '#registerEndTime'
        ,type:"datetime"
    });
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_edit.html
@@ -1,5 +1,47 @@
@layout("/common/_container.html"){
<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=77b37f0753049c4e712ea79a24e0719c"></script>
<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;
    }
    #app1{
        margin-left: 255px;
    }
</style>
<div class="ibox float-e-margins">
    <div class="ibox-content">
@@ -131,7 +173,27 @@
            </div>
            <#avatar id="coverDrawing" name="赛事封面(推荐像素:210*280px):" avatarImg="${item.coverDrawing}" />
            <#avatar id="imgs" name="赛事图片(推荐像素:780*440px):" />
            <div class="row" id="app1">
                <div class="form-group">
                    <label class="col-sm-3 control-label head-scu-label">*实景图片(请上传不超过五张图片): </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>
            <#avatar id="registrationNotes" name="报名须知(推荐像素:宽780px):"  avatarImg="${item.registrationNotes}"/>
        </div>
@@ -151,7 +213,66 @@
</div>
</div>
<script src="${ctxPath}/modular/system/tCompetition/tCompetition_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>
    let id = "${item.imgs}"
    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) {
                file.url =file.response
                TCarInfoDlg.goodsPicArray1.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],
                        response:i[j],
                    }
                    this.imageUrl2.push(obj)
                }
            },
            beforeAvatarUpload(file) {
                const isLt2M = file.size / 1024 / 1024 < 10;
                if (!isLt2M) {
                    this.$message.error('上传图片大小不能超过 10MB!');
                }
                return isLt2M;
            },
            handleRemove(file, fileList) {
                TCarInfoDlg.goodsPicArray1 = TCarInfoDlg.goodsPicArray1.filter(item => {
                    return item.uid != file.uid;
                });
            },
        },
        created() {
            this.changeImg()
            TCarInfoDlg.goodsPicArray1 = this.imageUrl2
        },
    });
    window.onload = function() {
        if($("#type").val()==1){
            $("#types").html("未开始").css("color","goldenrod")
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetitionAudit/TCompetition_edit.html
@@ -131,7 +131,16 @@
            </div>
            <#avatar id="coverDrawing" name="赛事封面(推荐像素:210*280px):" avatarImg="${item.coverDrawing}" />
            <#avatar id="imgs" name="赛事图片(推荐像素:780*440px):" />
            <div class="form-group">
                <label class="col-sm-3 control-label head-scu-label">赛事图片(推荐像素:780*440px):</label>
                <div class="col-sm-4">
                    <div id="imgsPreId">
                        @for(i in imgs){
                        <img width="100px" height="100px" id="img" src="${i}">
                        @}
                    </div>
                </div>
            </div>
            <#avatar id="registrationNotes" name="报名须知(推荐像素:宽780px):"  avatarImg="${item.registrationNotes}"/>
            <div class="form-group">
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_detail_one.html
@@ -117,7 +117,7 @@
                <#input id="quantityIssued" name="*兑换地点:" type="text" value="${item.exchangeArea}" readonly="true" />
                @if(item.useScope == 2){
                @if(item.useScope == 3){
                <table class="table table-bordered" style="width: 70%;margin-left: 228px;" >
                    <thead>
                    <tr>
@@ -134,18 +134,19 @@
                </table>
                @}
                @if(item.useScope == 3){
                @if(item.useScope == 2){
                <table class="table table-bordered" style="width: 70%;margin-left: 228px;" >
                    <thead>
                    <tr>
                        <td>所在省市</td>
                        <td>所属账号</td>
                        <td>门店名称</td>
                        <td>所在省</td>
                        <td>所在市</td>
                    </tr>
                    </thead>
                    @for(c in city){
                    <tr>
                    <td>${c.num1}</td>
                    <td>${c.num2}</td>
                    </tr>
                    @}
                </table>
                @}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TCity_edit.html
New file
@@ -0,0 +1,98 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal" id="carInfoForm">
            <input hidden id="id" value="${item.id}">
            <div class="form-group" id="provinceCode">
                <label class="col-sm-3 control-label">所在省:</label>
                <div class="col-sm-9">
                    <select class="form-control" id="pCode" name="pCode" onchange="TCarInfoDlg.oneChange(this)">
                        <option value="">选择省</option>
                        @for(obj in list){
                        <option value="${obj.code}" ${obj.code == item.provinceCode ? 'selected=selected' : ''}>${obj.name}</option>
                        <option value="${obj.code}">${obj.name}</option>
                        @}
                    </select>
                </div>
            </div>
            <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">
                        <option value="">选择市</option>
                        @for(obj in list1){
                        <option value="${obj.code}" ${obj.code == item.cityCode ? 'selected=selected' : ''}>${obj.name}</option>
                        @}
                    </select>
                </div>
            </div>
            <#input id="name" name="管理员姓名" type="text" value="${item.name}"/>
            <#input id="phone" name="管理员手机号" type="text" value="${item.phone}"/>
        </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.editSubmit()"/>
                <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCarInfoDlg.close()"/>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/modular/system/tCity/tCity_info.js"></script>
<script>
    laydate.render({
        elem: '#annualInspectionTime'
        ,lang:"en"
    });
    laydate.render({
        elem: '#commercialInsuranceTime'
        ,lang:"en"
    });
    laydate.render({
        elem: '#certifyDateA'
        ,lang:"en"
    });
    laydate.render({
        elem: '#transDateStart'
        ,lang:"en"
    });
    laydate.render({
        elem: '#transDateStop'
        ,lang:"en"
    });
    laydate.render({
        elem: '#certifyDateB'
        ,lang:"en"
    });
    laydate.render({
        elem: '#nextFixDate'
        ,lang:"en"
    });
    laydate.render({
        elem: '#GPSInstallDate'
        ,lang:"en"
    });
    laydate.render({
        elem: '#registerDate'
        ,lang:"en"
    });
</script>
<script type="application/javascript">
    $(function() {
        var companyType = $("input[name='companyType']:checked").val();
        if (1 == companyType){
            $(".companyDiv").hide();
        } else if (2 == companyType){
            $(".companyDiv").show();
        }
        TCarInfoDlg.zcServerClick();
        TCarInfoDlg.kcServerClick();
    });
</script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoodsAudit.html
New file
@@ -0,0 +1,66 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>门票审核管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <#NameCon id="name" name="门票名称" />
                            </div>
                            <div class="col-sm-3">
                                <#SelectCon id="type" name="门票类型">
                                <option value="">全部</option>
                                <option value="1">日卡</option>
                                <option value="2">月卡</option>
                                <option value="3">季卡</option>
                                <option value="4">年卡</option>
                            </#SelectCon>
                            </div>
                    <div class="col-sm-3">
                        <#SelectCon id="redemptionMethod" name="兑换方式">
                        <option value="">全部</option>
                        <option value="1">积分</option>
                        <option value="2">现金+积分</option>
                        <option value="3">现金</option>
                    </#SelectCon>
                </div>
                    <div class="col-sm-3">
                        <#SelectCon id="userPopulation" name="用户人群">
                        <option value="">全部</option>
                        <option value="1">全部用户</option>
                        <option value="2">年度会员</option>
                        <option value="3">已有学员用户</option>
                    </#SelectCon>
                </div>
                    <div class="col-sm-3">
                        <#SelectCon id="activeStatus" name="审核状态">
                        <option value="">全部</option>
                        <option value="2">待审核</option>
                        <option value="3">已拒绝</option>
                    </#SelectCon>
                    </div>
                    <div class="col-sm-3">
                        <#button name="搜索" icon="fa-search" clickFun="TPointProducts.search()"/>
                        <#button name="重置" icon="fa-trash" clickFun="TPointProducts.resetSearch()" space="true"/>
                    </div>
                </div>
                <div class="hidden-xs" id="TPointProductsTableToolbar" role="group">
                    <#button name="审核" icon="fa-remove" clickFun="TPointProducts.payDetail()" space="true"/>
                    <#button name="查看详情" icon="fa-remove" clickFun="TPointProducts.detail()" space="true"/>
                </div>
                <#table id="TPointProductsTable"/>
            </div>
        </div>
    </div>
</div>
</div>
</div>
<script src="${ctxPath}/modular/system/tGoodsAudit/tGoods.js"></script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoods_add.html
New file
@@ -0,0 +1,569 @@
@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: 34px;
        text-align: center;
    }
    .avatar {
        width: 100px;
        height: 100px;
        display: block;
    }
    .col-sm-12 {
        margin-top: 20px;
    }
    .col-sm-12 select {
        height: 33px;
    }
</style>
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal" id="carInfoForm">
            <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)" > 课包商品
                    <input type="radio" name="type" value="3" onclick="updateType(1)"> 门票商品
                </div>
            </div>
            <div id="b1">
        <#input id="name" name="商品名称" type="text"/>
        <div class="form-group" id="ticket" hidden>
            <label class="col-sm-3 control-label">门票类型:</label>
            <div class="col-sm-9">
                <input type="radio" name="cardType" value="1"   checked> 日卡
                <input type="radio" name="cardType" value="2"> 月卡
                <input type="radio" name="cardType" value="3" > 季卡
                <input type="radio" name="cardType" value="4" > 年卡
            </div>
        </div>
        <#input id="price" name="原价" type="text"/>
            <div class="form-group">
                <label class="col-sm-3 control-label">兑换方式:</label>
                <div class="col-sm-9">
                    <input type="radio" name="redemptionMethod" value="1"  onclick="updateMethod(3)" checked> 积分
                    <input type="radio" name="redemptionMethod" value="2" onclick="updateMethod(4)"> 现金+积分
                    <input type="radio" name="redemptionMethod" value="3" onclick="updateMethod(5)"> 现金
                </div>
            </div>
            <div class="form-group" id="y1" hidden>
                <label class="col-sm-3 control-label">所需现金:</label>
                <div class="col-sm-9">
                    <input class="form-control" id="cash" name="cash" type="text">
                </div>
            </div>
            <div class="form-group" id="y2">
                <label class="col-sm-3 control-label">所需积分:</label>
                <div class="col-sm-9">
                    <input class="form-control" id="integral" name="integral" type="text">
                </div>
            </div>
            <#avatar id="cover" name="商品封面" />
                <div class="row" id="app" >
                    <div class="col-sm-6" style="width: 100%">
                        <div class="form-group">
                            <label class="col-sm-3 control-label" style="width: 15%;margin-left: 7%">*商品图片(请上传不超过五张图片): </label>
                            <div class="col-sm-2" style="width: 100%;margin-left: 12%;margin-top: 1%">
                                <el-upload
                                        :limit="5"
                                        class="avatar-uploader"
                                        action="/tCouponManage/uploadPic"
                                        list-type="picture-card"
                                        accept=".jpg,.jpeg,.png,.JPG,.JPEG"
                                        :on-success="handleAvatarSuccess"
                                        :on-remove="handleRemove">
                                    <i class="el-icon-plus"></i>
                                </el-upload>
                                <el-dialog :visible.sync="dialogVisible">
                                    <img width="100%" :src="imageUrl1" alt=""></el-dialog>
                            </div>
                        </div>
                    </div>
                </div>
            <div class="form-group">
                <label class="col-sm-3 control-label">用户人群:</label>
                <div class="col-sm-9">
                    <input type="radio" name="userPopulation" value="1" checked> 全部用户
                    <input type="radio" name="userPopulation" value="2" > 年度会员
                    <input type="radio" name="userPopulation" value="3" > 已有学员用户
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-3 control-label">发放数量:</label>
                <div class="col-sm-9">
                    <input class="form-control" id="quantityIssued" name="quantityIssued" type="text">
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-3 control-label">限领数量:</label>
                <div class="col-sm-9">
                    <input class="form-control" id="pickUpQuantity" name="pickUpQuantity" type="text">
                </div>
            </div>
            <#input id="startTime" name="有效期" type="text"/>
            <div class="row" id="belongsCon" >
                <div class="form-group">
                    <div class="form-group">
                        <div class="initialLevel col-sm-12 control-label form-group">
                            <label class="col-sm-3">*适用范围: </label>
                            <div class="col-sm-2" id="belongsNationwide" >
                                <input class="col-sm-1" onclick="scopeOfApplication1()" name="company" type="radio"
                                       value="1" checked style="margin-top: 10px"/>
                                <label class="col-sm-1" style="width: 38%;margin-top: 7px">全国通用</label>
                            </div>
                            <div class="col-sm-2" id="belongsCity"  >
                                <input class="col-sm-1" name="company" onclick="scopeOfApplication2()" type="radio"
                                       value="2"  style="margin-top: 10px"/>
                                <label class="col-sm-1" style="width: 38%;margin-top: 7px">指定城市</label>
                            </div>
                            <div class="col-sm-2" id="belongsStore"  >
                                <input class="col-sm-1" name="company" onclick="scopeOfApplication3()" type="radio"
                                       value="3" style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px"/>
                                <label class="col-sm-1" style="width: 38%;margin-top: 6px;">指定门店</label>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="row" id="citySelect" hidden="hidden">
                <div class="form-group">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">*指定城市: </label>
                        <div class="col-sm-9 control-label">
                            <select class="col-sm-1"  id="provinceData" style="margin-top: 1%;width: 25%" onchange="changeCity(null)">
                                <option value="">请选择</option>
                            </select>
                            <label class="col-sm-1"  style="width: 9%;margin-top: 7px">省</label>
                            <select  class="col-sm-1" style="margin-top: 1%;width: 25%" id="cityData">
                                <option value="">请选择</option>
                            </select>
                            <label class="col-sm-1" style="width: 7%;margin-top: 7px">市</label>
                            <label name="addBranch" class="col-sm-1" onclick="TGoodsInfoDlg.addBranch()" style="border: 0px;cursor: pointer;margin-top: 1%"><i class="fa fa-plus-circle"></i></label>
                        </div>
                        <div id="cityDemo"></div>
                    </div>
                </div>
            </div>
            <div class="row" id="storeSelect" hidden="hidden">
                <div class="form-group">
                    <div class="form-group">
                        <div class="col-sm-12">
                            <label class="col-sm-3 control-label">*指定门店: </label>
                            <button onclick="storeList()"
                                    style="height: 22px;width: 82px;background-color: #4a8ff1;color: white;z-index: 15;position:relative;border: none;margin-top: 1%">
                                选择门店
                            </button>
                        </div>
                        <div class="col-sm-12" style="margin-left: -57px;margin-top: 20px">
                            <table class="table table-bordered" style="width: 70%;margin-left: 228px;" id="storeTable">
                                <thead>
                                <tr>
                                    <td>所在省市</td>
                                    <td>所属账号</td>
                                    <td>门店名称</td>
                                    <td>操作</td>
                                </tr>
                                </thead>
                                <tbody id="coun"></tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
            <div class="form-group" style="margin-left:262px">
                <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="form-group">
                <label class="col-sm-3 control-label">排序:</label>
                <div class="col-sm-9">
                    <input class="form-control" id="sort" name="sort" type="text">
                </div>
            </div>
            </div>
            <div id="b2" hidden>
                <div class="form-group" id="provinceCode">
                    <label class="col-sm-3 control-label">所在省:</label>
                    <div class="col-sm-9">
                        <select class="form-control" id="pCode" name="pCode" onchange="TGoodsInfoDlg.oneChange(this)">
                            <option value="">选择省</option>
                            @for(obj in list){
                            <option value="${obj.code}">${obj.name}</option>
                            @}
                        </select>
                    </div>
                </div>
                <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="TGoodsInfoDlg.storeChange(this)">
                            <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="storeId" name="storeId">
                            <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="coursePackageTypeId" name="pCode" onchange="TGoodsInfoDlg.packageChange(this)">
                            <option value="">选择课包类型</option>
                            @for(obj in courseType){
                            <option 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 class="form-control" id="coursePackageId" name="coursePackageId" onchange="TGoodsInfoDlg.timeChange(this)">
                            <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="coursePackageConfigId" name="coursePackageConfigId">
                            <option value="">选择课时数</option>
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">原价:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="price1" name="price" type="text">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">兑换方式:</label>
                    <div class="col-sm-9">
                        <input type="radio" name="redemptionMethod" value="1" checked onclick="updateMethod(1)" > 积分
                        <input type="radio" name="redemptionMethod" value="2" onclick="updateMethod(2)"> 现金+积分
                    </div>
                </div>
                <div class="form-group" id="y3" hidden>
                    <label class="col-sm-3 control-label">所需现金:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="cash1" name="cash" type="text">
                    </div>
                </div>
                <div class="form-group" id="y4">
                    <label class="col-sm-3 control-label">所需积分:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="integral1" name="integral" type="text">
                    </div>
                </div>
                <#avatar id="cover1" name="*商品封面" />
                <div class="row" id="app1" >
                    <div class="col-sm-6" style="width: 100%">
                        <div class="form-group">
                            <label class="col-sm-3 control-label" style="width: 15%;margin-left: 7%">*商品图片(请上传不超过五张图片): </label>
                            <div class="col-sm-2" style="width: 100%;margin-left: 12%;margin-top: 1%">
                                <el-upload
                                        :limit="5"
                                        class="avatar-uploader"
                                        action="/tCouponManage/uploadPic"
                                        list-type="picture-card"
                                        accept=".jpg,.jpeg,.png,.JPG,.JPEG"
                                        :on-success="handleAvatarSuccess"
                                        :on-remove="handleRemove">
                                    <i class="el-icon-plus"></i>
                                </el-upload>
                                <el-dialog :visible.sync="dialogVisible">
                                    <img width="100%" :src="imageUrl1" alt=""></el-dialog>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">用户人群:</label>
                    <div class="col-sm-9">
                        <input type="radio" name="userPopulation" value="1" checked> 全部用户
                        <input type="radio" name="userPopulation" value="2" > 年度会员
                        <input type="radio" name="userPopulation" value="3" > 已有学员用户
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">发放数量:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="quantityIssued1" name="quantityIssued" type="text">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">限领数量:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="pickUpQuantity1" name="pickUpQuantity" type="text">
                    </div>
                </div>
                <#input id="startTime1" name="有效期" type="text"/>
                <div class="form-group" style="margin-left:262px">
                    <label class="col-sm-1 control-label">兑换说明:</label>
                    <div class="col-sm-5">
                        <textarea type="text/plain" id="editor1"  style="height: 300px;width: 800px;"></textarea>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">排序:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="sort1" name="sort" type="text">
                    </div>
                </div>
            </div>
        </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="TGoodsInfoDlg.addSubmit()"/>
        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TGoodsInfoDlg.close()"/>
    </div>
</div>
        </div>
<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 src="${ctxPath}/modular/system/tGoods/tGoods_info.js"></script>
<script src="${ctxPath}/modular/system/tGoods/TStoreInfo.js"></script>
<script>
    laydate.render({
        elem: '#startTime',
        range: true
    });
    laydate.render({
        elem: '#startTime1',
        range: true
    });
    function updateMethod(e) {
        console.log(e)
        if(e==1){
            $("#y3").hide()
            $("#y4").show()
        }else if(e==2){
            $("#y4").show()
            $("#y3").show()
        }else if(e==3){
            $("#y1").hide()
            $("#y2").show()
        }else if(e==4){
            $("#y1").show()
            $("#y2").show()
        }else if(e==5) {
            $("#y2").hide()
            $("#y1").show()
        }
    }
    let i =1;
    function updateType(e) {
        if(e==2){
            $("#b1").hide()
            $("#b2").show()
            if(i==1){
                var drivingLicensePhoto = new $WebUpload("cover1");
                drivingLicensePhoto.setUploadBarId("progressBar");
                drivingLicensePhoto.init();
                i++;
            }
            $("#ticket").hide()
        }else {
            $("#b2").hide()
            $("#b1").show()
            $("#ticket").show()
        }
    }
    function changeCity(n){
        var provinceSelect = null;
        if (n === undefined || n === null || n === ''){
            provinceSelect = document.getElementById("provinceData");
        }else {
            provinceSelect = document.getElementById("provinceData"+n);
        }
        var citySelect = null;
        if (n === undefined || n === null || n === ''){
            citySelect = document.getElementById("cityData");
        }else {
            citySelect = document.getElementById("cityData"+n);
        }
        var selectedProvince = provinceSelect.value;
        // 清空城市下拉框
        citySelect.innerHTML = '<option value="">请选择</option>';
        if (selectedProvince === "") {
            return;
        }
        var ajax = new $ax(Feng.ctxPath + "/tCouponManage/getCity", function(data){
            data.forEach(province => {
                var option = document.createElement("option");
                option.value = province.id;  // 根据你的数据结构确定省份的id字段
                option.text = province.name;  // 根据你的数据结构确定省份的name字段
                citySelect.appendChild(option);
            });
        },function(data){
            console.log('data:',data)
            Feng.error("获取失败!" + data.responseJSON.message + "!");
        });
        ajax.set('province',selectedProvince);
        ajax.start();
    }
    /**
     * 全国通用
     */
    function scopeOfApplication1() {
        $("#storeSelect").hide();
        $("#citySelect").hide();
    }
    /**
     * 指定城市
     */
    function scopeOfApplication2() {
        $("#storeSelect").hide();
        $("#citySelect").show();
    }
    /**
     * 指定门店
     */
    function scopeOfApplication3() {
        $("#storeSelect").show();
        $("#citySelect").hide();
    }
    var vue2 = new Vue({
        el: '#app',
        data: {
            autoUpload: true,//自动上传
            imageUrl1: '',//模型数据,用于上传图片完成后图片预览
            dialogVisible: false
        },
        methods: {
            handleAvatarSuccess(res, file) {
                TGoodsInfoDlg.goodsPicArray.push(file);
            },
            beforeAvatarUpload(file) {
                const isLt2M = file.size / 1024 / 1024 < 10;
                if (!isLt2M) {
                    this.$message.error('上传图片大小不能超过 10MB!');
                }
                return isLt2M;
            },
            handleRemove(file, fileList) {
                TGoodsInfoDlg.goodsPicArray = TGoodsInfoDlg.goodsPicArray.filter(item => {
                    return item.uid != file.uid;
                });
            },
        },
        created() {
        },
    });
    var vue2 = new Vue({
        el: '#app1',
        data: {
            autoUpload: true,//自动上传
            imageUrl1: '',//模型数据,用于上传图片完成后图片预览
            dialogVisible: false
        },
        methods: {
            handleAvatarSuccess(res, file) {
                TGoodsInfoDlg.goodsPicArray1.push(file);
            },
            beforeAvatarUpload(file) {
                const isLt2M = file.size / 1024 / 1024 < 10;
                if (!isLt2M) {
                    this.$message.error('上传图片大小不能超过 10MB!');
                }
                return isLt2M;
            },
            handleRemove(file, fileList) {
                TGoodsInfoDlg.goodsPicArray = TGoodsInfoDlg.goodsPicArray.filter(item => {
                    return item.uid != file.uid;
                });
            },
        },
        created() {
        },
    });
</script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoods_detail_one.html
New file
@@ -0,0 +1,208 @@
@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;
        display: inline-block;
    }
    .avatar-uploader .el-upload:hover {
        border-color: #409eff;
    }
    .avatar-uploader-icon {
        font-size: 28px;
        color: #8c939d;
        width: 100px;
        height: 100px;
        line-height: 110px;
        margin-top: 40px;
        text-align: center;
    }
    .avatar {
        width: 100px;
        height: 100px;
        display: block;
    }
    .col-sm-12 {
        margin-top: 20px;
    }
    .col-sm-12 select {
        height: 33px;
    }
</style>
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal" id="carInfoForm">
            <div id="b1">
                <#input id="name" name="*商品名称:" type="text" value="${item.name}" readonly="true" />
                <#input id="cover" name="*原价:" avatarImg="${item.price}" readonly="true" />
                <div class="form-group">
                    <label class="col-sm-3 control-label head-scu-label">*兑换方式:</label>
                    <div class="col-sm-4">
                        @if(exchangeMethod == 1){
                        <input class="col-sm-1 control-label" name="userGroup" type="radio"
                               value="1" checked style="margin-top: 10px" disabled/>
                        <label class="col-sm-1" style="margin-left: -15px;width: 16%;margin-top: 7px">全部用户</label>
                        <input class="col-sm-1 control-label" name="userGroup" type="radio"
                               value="2"  style="margin-left: 5%;margin-top: 10px;width: 13px;height: 13px" disabled/>
                        <label class="col-sm-1" style="width: 16%;margin-top: 7px">年度会员</label>
                        <input class="col-sm-1 control-label" name="userGroup" type="radio"
                               value="3"  style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px" disabled/>
                        <label class="col-sm-1" style="width: 18%;margin-top: 5px">已有学员用户</label>
                        @}
                        @if(exchangeMethod == 2){
                        <input class="col-sm-1 control-label" name="userGroup" type="radio"
                               value="1"  style="margin-top: 10px" disabled/>
                        <label class="col-sm-1" style="margin-left: -15px;width: 16%;margin-top: 7px">全部用户</label>
                        <input class="col-sm-1 control-label" name="userGroup" type="radio"
                               value="2"  checked style="margin-left: 5%;margin-top: 10px;width: 13px;height: 13px" disabled/>
                        <label class="col-sm-1" style="width: 16%;margin-top: 7px">年度会员</label>
                        <input class="col-sm-1 control-label" name="userGroup" type="radio"
                               value="3"  style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px" disabled/>
                        <label class="col-sm-1" style="width: 18%;margin-top: 5px">已有学员用户</label>
                        @}
                        @if(exchangeMethod == 3){
                        <input class="col-sm-1 control-label" name="userGroup" type="radio"
                               value="1"  style="margin-top: 10px" disabled/>
                        <label class="col-sm-1" style="margin-left: -15px;width: 16%;margin-top: 7px">全部用户</label>
                        <input class="col-sm-1 control-label" name="userGroup" type="radio"
                               value="2"  style="margin-left: 5%;margin-top: 10px;width: 13px;height: 13px" disabled/>
                        <label class="col-sm-1" style="width: 16%;margin-top: 7px">年度会员</label>
                        <input class="col-sm-1 control-label" name="userGroup" type="radio"
                               value="3" checked  style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px" disabled/>
                        <label class="col-sm-1" style="width: 18%;margin-top: 5px">已有学员用户</label>
                        @}
                    </div>
                </div>
                <#input id="cover" name="*所需现金:" avatarImg="${item.cash}" readonly="true" />
                <#input id="cover" name="*所需积分:" avatarImg="${item.integral}" readonly="true" />
                <div class="form-group">
                    <label class="col-sm-3 control-label head-scu-label">*商品封面:</label>
                    <div class="col-sm-4">
                        <img height="100px" width="100px" src="${item.cover}">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label head-scu-label">*商品图片:</label>
                    <div class="col-sm-4">
                        @if(pictures != null){
                        @for(im in pictures){
                            <img  height="100px" width="100px" src="${im}">
                        @}
                        @}
                    </div>
                </div>
                <#input id="quantityIssued" name="*用户人群:" type="text" value="${item.userPopulation}" readonly="true" />
                <#input id="quantityIssued" name="*发放数量:" type="text" value="${item.quantityIssued}" readonly="true" />
                <#input id="quantityIssued" name="*限领数量:" type="text" value="${item.pickUpQuantity}" readonly="true" />
                <#input id="quantityIssued" name="*已兑换数量:" type="text" value="${item.hasPicked}" readonly="true" />
                <#input id="quantityIssued" name="*有效期:" type="text" value="${item.validTime}" readonly="true" />
                <#input id="quantityIssued" name="*兑换地点:" type="text" value="${item.exchangeArea}" readonly="true" />
                @if(item.useScope == 3){
                <table class="table table-bordered" style="width: 70%;margin-left: 228px;" >
                    <thead>
                    <tr>
                        <td>所在省市</td>
                        <td>所属账号</td>
                        <td>门店名称</td>
                    </tr>
                    </thead>
                    @for(s in store){
                    <td>${s.num1}</td>
                    <td>${s.num2}</td>
                    <td>${s.num3}</td>
                    @}
                </table>
                @}
                @if(item.useScope == 2){
                <table class="table table-bordered" style="width: 70%;margin-left: 228px;" >
                    <thead>
                    <tr>
                        <td>所在省</td>
                        <td>所在市</td>
                    </tr>
                    </thead>
                    @for(c in city){
                    <tr>
                    <td>${c.num1}</td>
                    <td>${c.num2}</td>
                    </tr>
                    @}
                </table>
                @}
                <div class="form-group" style="margin-left:262px">
                    <label class="col-sm-3 control-label">兑换说明:</label>
                    <div class="col-sm-4">
                        <textarea type="text/plain" id="editor"  style="height: 300px;width: 800px;" readonly>${item.redemptionInstructions}</textarea>
                    </div>
                </div>
                <#input id="quantityIssued" name="*排序:" type="text" value="${item.sort}" readonly="true" />
            </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="TGoodsInfoDlg.close()"/>
        </div>
    </div>
</div>
</div>
</div>
<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 src="${ctxPath}/modular/system/tGoods/tGoods_info.js"></script>
<script>
    var vue2 = new Vue({
        el: '#app',
        data: {
            autoUpload: true,//自动上传
            imageUrl1: '',//模型数据,用于上传图片完成后图片预览
            dialogVisible: false
        },
        methods: {
            handleAvatarSuccess(res, file) {
                TGoodsInfoDlg.goodsPicArray.push(file.response);
            },
            beforeAvatarUpload(file) {
                const isLt2M = file.size / 1024 / 1024 < 10;
                if (!isLt2M) {
                    this.$message.error('上传图片大小不能超过 10MB!');
                }
                return isLt2M;
            },
            handleRemove(file, fileList) {
                TGoodsInfoDlg.goodsPicArray = TGoodsInfoDlg.goodsPicArray.filter(item => {
                    return item.uid != file.uid;
                });
            },
        },
        created() {
        },
    });
</script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoods_detail_two.html
New file
@@ -0,0 +1,396 @@
@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: 34px;
        text-align: center;
    }
    .avatar {
        width: 100px;
        height: 100px;
        display: block;
    }
    .col-sm-12 {
        margin-top: 20px;
    }
    .col-sm-12 select {
        height: 33px;
    }
</style>
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <input id="s1" value="${item.redemptionMethod}" hidden>
        <input id="s2" value="${item.userPopulation}" hidden>
        <div class="form-horizontal" id="carInfoForm">
            <#label  id="types" name="商品类型" type="text" value="课包商品" />
            <div id="b2" >
                <div class="form-group" id="provinceCode">
                    <label class="col-sm-3 control-label">所在省:</label>
                    <div class="col-sm-9">
                        <select class="form-control" id="pCode" name="pCode">
                            <option value="">${item.province}</option>
                        </select>
                    </div>
                </div>
                <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"  >
                            <option value="">${item.city}</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="storeId" name="storeId">
                            <option value="">${shopName}</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="coursePackageTypeId" name="pCode" onchange="TGoodsInfoDlg.packageChange(this)">
                            <option value="">${typeName}</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="coursePackageId" name="coursePackageId" onchange="TGoodsInfoDlg.timeChange(this)">
                            <option value="">${pageName}</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="coursePackageConfigId" name="coursePackageConfigId">
                            <option value="">${classHours}</option>
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">原价:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="price1" name="price" type="text" value="${item.price}"  readonly>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">兑换方式:</label>
                    <div class="col-sm-9">
                        <input type="radio" name="redemptionMethod" value="1" checked onclick="updateMethod(1)"> 积分
                        <input type="radio" name="redemptionMethod" value="2" onclick="updateMethod(2)"> 现金+积分
                    </div>
                </div>
                <div class="form-group" id="y3" hidden>
                    <label class="col-sm-3 control-label">所需现金:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="cash1" name="cash" type="text" value="${item.cash}">
                    </div>
                </div>
                <div class="form-group" id="y4">
                    <label class="col-sm-3 control-label">所需积分:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="integral1" name="integral" type="text" value="${item.integral}">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label head-scu-label">*商品图片:</label>
                    <div class="col-sm-4">
                        <img  height="100px" width="100px" src="${item.cover}">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label head-scu-label">*商品图片:</label>
                    <div class="col-sm-4">
                        @for(im in pictures){
                        <img  height="100px" width="100px" src="${im}">
                        @}
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">用户人群:</label>
                    <div class="col-sm-9">
                        <input type="radio" name="userPopulation" value="1" checked> 全部用户
                        <input type="radio" name="userPopulation" value="2" > 年度会员
                        <input type="radio" name="userPopulation" value="3" > 已有学员用户
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">发放数量:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="quantityIssued1" name="quantityIssued" type="text" value="${item.quantityIssued}" readonly>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">限领数量:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="pickUpQuantity1" name="pickUpQuantity" type="text" value="${item.pickUpQuantity}" readonly>
                    </div>
                </div>
                <#input id="startTime1" name="有效期" type="text" value="${sTime} - ${eTime}" readonly="true"/>
                <div class="form-group" style="margin-left:262px">
                    <label class="col-sm-1 control-label">兑换说明:</label>
                    <div class="col-sm-5">
                        <textarea type="text/plain" id="editor1"  style="height: 300px;width: 800px;" readonly>${item.redemptionInstructions}</textarea>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">排序:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="sort1" name="sort" type="text" value="${item.sort}" readonly>
                    </div>
                </div>
            </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="TGoodsInfoDlg.close()"/>
    </div>
</div>
        </div>
<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 src="${ctxPath}/modular/system/tGoods/tGoods_info.js"></script>
<script src="${ctxPath}/modular/system/tGoods/TStoreInfo.js"></script>
<script>
    laydate.render({
        elem: '#startTime',
        range: true
    });
    laydate.render({
        elem: '#startTime1',
        range: true
    });
    function updateMethod(e) {
        console.log(e)
        if(e==1){
            $("#y3").hide()
            $("#y4").show()
        }else if(e==2){
            $("#y4").show()
            $("#y3").show()
        }else if(e==3){
            $("#y1").hide()
            $("#y2").show()
        }else if(e==4){
            $("#y1").show()
            $("#y2").show()
        }else if(e==5) {
            $("#y2").hide()
            $("#y1").show()
        }
    }
    let i =1;
    function updateType(e) {
        if(e==2){
            $("#b1").hide()
            $("#b2").show()
            if(i==1){
                var drivingLicensePhoto = new $WebUpload("cover1");
                drivingLicensePhoto.setUploadBarId("progressBar");
                drivingLicensePhoto.init();
                i++;
            }
        }else {
            $("#b2").hide()
            $("#b1").show()
        }
    }
    function changeCity(n){
        var provinceSelect = null;
        if (n === undefined || n === null || n === ''){
            provinceSelect = document.getElementById("provinceData");
        }else {
            provinceSelect = document.getElementById("provinceData"+n);
        }
        var citySelect = null;
        if (n === undefined || n === null || n === ''){
            citySelect = document.getElementById("cityData");
        }else {
            citySelect = document.getElementById("cityData"+n);
        }
        var selectedProvince = provinceSelect.value;
        // 清空城市下拉框
        citySelect.innerHTML = '<option value="">请选择</option>';
        if (selectedProvince === "") {
            return;
        }
        var ajax = new $ax(Feng.ctxPath + "/tCouponManage/getCity", function(data){
            data.forEach(province => {
                var option = document.createElement("option");
                option.value = province.id;  // 根据你的数据结构确定省份的id字段
                option.text = province.name;  // 根据你的数据结构确定省份的name字段
                citySelect.appendChild(option);
            });
        },function(data){
            console.log('data:',data)
            Feng.error("获取失败!" + data.responseJSON.message + "!");
        });
        ajax.set('province',selectedProvince);
        ajax.start();
    }
    /**
     * 全国通用
     */
    function scopeOfApplication1() {
        $("#storeSelect").hide();
        $("#citySelect").hide();
    }
    /**
     * 指定城市
     */
    function scopeOfApplication2() {
        $("#storeSelect").hide();
        $("#citySelect").show();
    }
    /**
     * 指定门店
     */
    function scopeOfApplication3() {
        $("#storeSelect").show();
        $("#citySelect").hide();
    }
    var vue2 = new Vue({
        el: '#app',
        data: {
            autoUpload: true,//自动上传
            imageUrl1: '',//模型数据,用于上传图片完成后图片预览
            dialogVisible: false
        },
        methods: {
            handleAvatarSuccess(res, file) {
                TGoodsInfoDlg.goodsPicArray.push(file);
            },
            beforeAvatarUpload(file) {
                const isLt2M = file.size / 1024 / 1024 < 10;
                if (!isLt2M) {
                    this.$message.error('上传图片大小不能超过 10MB!');
                }
                return isLt2M;
            },
            handleRemove(file, fileList) {
                couponInfoDlg.goodsPicArray = couponInfoDlg.goodsPicArray.filter(item => {
                    return item.uid != file.uid;
                });
            },
        },
        created() {
        },
    });
    var vue2 = new Vue({
        el: '#app1',
        data: {
            autoUpload: true,//自动上传
            imageUrl1: '',//模型数据,用于上传图片完成后图片预览
            dialogVisible: false
        },
        methods: {
            handleAvatarSuccess(res, file) {
                TGoodsInfoDlg.goodsPicArray1.push(file);
            },
            beforeAvatarUpload(file) {
                const isLt2M = file.size / 1024 / 1024 < 10;
                if (!isLt2M) {
                    this.$message.error('上传图片大小不能超过 10MB!');
                }
                return isLt2M;
            },
            handleRemove(file, fileList) {
                couponInfoDlg.goodsPicArray = couponInfoDlg.goodsPicArray.filter(item => {
                    return item.uid != file.uid;
                });
            },
        },
        created() {
        },
    });
    window.onload = function(){
        var OBJradio=document.getElementsByName("redemptionMethod")
        if(OBJradio==1){
            $("#y4").show()
            $("#y3").hide()
        }
        if(OBJradio==2){
            $("#y4").show()
            $("#y3").show()
        }
        for(i=0;i<OBJradio.length;i++){//循环查找这个radio
            if($("#s1").val()==OBJradio[i].value){//判断是否与radio的值相同
                OBJradio[i].checked=true//修改选中状态
            }
        }
        var OBJradio=document.getElementsByName("userPopulation")
        for(i=0;i<OBJradio.length;i++){//循环查找这个radio
            if($("#s2").val()==OBJradio[i].value){//判断是否与radio的值相同
                OBJradio[i].checked=true//修改选中状态
            }
        }
    }
</script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoods_edit.html
New file
@@ -0,0 +1,157 @@
@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;
        display: inline-block;
    }
    .avatar-uploader .el-upload:hover {
        border-color: #409eff;
    }
    .avatar-uploader-icon {
        font-size: 28px;
        color: #8c939d;
        width: 100px;
        height: 100px;
        line-height: 110px;
        margin-top: 40px;
        text-align: center;
    }
    .avatar {
        width: 100px;
        height: 100px;
        display: block;
    }
    .col-sm-12 {
        margin-top: 20px;
    }
    .col-sm-12 select {
        height: 33px;
    }
</style>
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal" id="carInfoForm">
            <div id="b1">
                <input id="goodsId" value="${id}" hidden="hidden">
                <#input id="name" name="商品名称" type="text" value="${item.name}" readonly="true" />
                <#avatar id="cover" name="商品封面:" avatarImg="${item.cover}" />
                <div class="row" id="app" style="margin-left: 225px;">
                    <div class="col-sm-6">
                        <div class="form-group">
                            <label class="col-sm-3 control-label">商品图片(请上传不超过五张图片): </label>
                            <div class="col-sm-2" style="width: 100%;margin-left: 24%;margin-top: 1%">
                                <div class="avatar-uploader" style="display: flex;">
                                @for(im in pictures){
                                    <div style="margin-right: 16px;position: relative">
                                        <img  height="100px" width="100px" src="${im}">
                                        <i class="el-icon-delete" onclick="delImg(this)" style="color: red;font-size: 18px;position: absolute;left: 0;right: 0;top: 0;bottom: 0"></i>
                                    </div>
                                @}
                                <el-upload
                                        :limit="5"
                                        class="avatar-uploader"
                                        action="/tCouponManage/uploadPic"
                                        list-type="picture-card"
                                        accept=".jpg,.jpeg,.png,.JPG,.JPEG"
                                        :on-success="handleAvatarSuccess"
                                        :on-remove="handleRemove">
                                    <i class="el-icon-plus"></i>
                                </el-upload>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">发放数量:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="quantityIssued" name="quantityIssued" type="text" value="${item.quantityIssued}">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">限领数量:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="pickUpQuantity" name="pickUpQuantity" type="text"  value="${item.pickUpQuantity}">
                    </div>
                </div>
                <div class="form-group" style="margin-left:262px">
                    <label class="col-sm-1 control-label">兑换说明:</label>
                    <div class="col-sm-5">
                        <textarea type="text/plain" id="editor"  style="height: 300px;width: 800px;">${item.content}</textarea>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">排序:</label>
                    <div class="col-sm-9">
                        <input class="form-control" id="sort" name="sort" type="text"  value="${item.sort}">
                    </div>
                </div>
            </div>
        </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="TGoodsInfoDlg.editSubmit()"/>
            <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TGoodsInfoDlg.close()"/>
        </div>
    </div>
</div>
</div>
</div>
<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 src="${ctxPath}/modular/system/tGoods/tGoods_info.js"></script>
<script>
    var vue2 = new Vue({
        el: '#app',
        data: {
            autoUpload: true,//自动上传
            imageUrl1: '',//模型数据,用于上传图片完成后图片预览
            dialogVisible: false
        },
        methods: {
            handleAvatarSuccess(res, file) {
                TGoodsInfoDlg.goodsPicArray.push(file.response);
            },
            beforeAvatarUpload(file) {
                const isLt2M = file.size / 1024 / 1024 < 10;
                if (!isLt2M) {
                    this.$message.error('上传图片大小不能超过 10MB!');
                }
                return isLt2M;
            },
            handleRemove(file, fileList) {
                TGoodsInfoDlg.goodsPicArray = TGoodsInfoDlg.goodsPicArray.filter(item => {
                    return item.uid != file.uid;
                });
            },
        },
        created() {
        },
    });
</script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TGoods_pay.html
New file
@@ -0,0 +1,48 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <input id="id" value="${id}" hidden="hidden">
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <#NameCon id="name" name="姓名" />
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="phone" name="联系方式:" />
                            </div>
                            <div class="col-sm-3">
                                <#SelectCon id="status" name="状态:">
                                <option value="">全部</option>
                                <option value="1">未使用</option>
                                <option value="2">已使用</option>
                                </#SelectCon>
                        </div>
                        <div class="col-sm-3">
                            <#button name="搜索" icon="fa-search" clickFun="TPayInfo.search()"/>
                            <#button name="重置" icon="fa-trash" clickFun="TPayInfo.resetSearch()" space="true"/>
                        </div>
                    </div>
                    <div class="hidden-xs" id="TPayInfoTableToolbar" role="group">
                        <#button name="核销" icon="fa-plus" clickFun="TPayInfo.WriteOff()"/>
                    </div>
                    <#table id="TPayInfoTable"/>
                    <div style="margin-left: 40%">
                        <button type="button" class="btn btn-info button-margin" onclick="TPayInfo.close()"
                                id="submit" style="width: 30%;height: 40px;background: #0d8ddb;color: white;border: none;">
                            <i class="fa fa-check"></i>&nbsp;关闭
                        </button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
</div>
<script src="${ctxPath}/modular/system/tGoods/tPay_info.js"></script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoodsAudit/TStoreList.html
New file
@@ -0,0 +1,58 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>所在门店</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <select class="form-control" id="province">
                                    <option value="">全部</option>
                                </select>
                            </div>
                            <div class="col-sm-3">
                                <select class="form-control" id="city">
                                    <option value="">全部</option>
                                </select>
                            </div>
                    <div class="col-sm-3">
                        <#SelectCon id="userPopulation" name="所属账号" >
                        <option value="">全部</option>
                    </#SelectCon>
                </div>
                <div class="col-sm-3">
                    <#NameCon id="storeName" name="门店名称" placeholder="请输入门店名称"/>
                </div>
                <div class="col-sm-3">
                    <#button name="搜索" icon="fa-search" clickFun="TStoreProvince.search()"/>
                    <#button name="重置" icon="fa-trash" clickFun="TStoreProvince.resetSearch()"/>
                </div>
            </div>
            <div class="hidden-xs" id="TStoreProvinceTableToolbar" role="group">
            </div>
            <#table id="TStoreProvinceTable"/>
            <div style="margin-left: 30%">
                <button type="button" class="btn btn-info button-margin" onclick="TStoreProvince.storeOfClosePage()"
                        id="closePage" style="width: 30%;height: 40px;background: #0d8ddb;color: white;border: none;">
                    <i class="fa fa-check"></i>&nbsp;关闭
                </button>
                <button type="button" class="btn btn-info button-margin" onclick="TStoreProvince.saveSelectStores()"
                        id="submit" style="margin-left: 5%;width: 30%;height: 40px;background: #0d8ddb;color: white;border: none;">
                    <i class="fa fa-check"></i>&nbsp;保存
                </button>
            </div>
        </div>
    </div>
</div>
</div>
</div>
</div>
<script src="${ctxPath}/modular/system/tGoods/TStoreInfo.js"></script>
<script src="${ctxPath}/modular/system/tGoods/TCouponInfo.js"></script>
@}
cloud-server-management/src/main/webapp/static/modular/system/ball/ball.js
@@ -69,7 +69,7 @@
            area: ['100%', '100%'],  //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tStudent/tStudent_update/' + TStudent.seItem.id
            content: Feng.ctxPath + '/ball/pre_edit/' + TStudent.seItem.id
        });
        this.layerIndex = index;
    }
@@ -80,17 +80,16 @@
 * 打开详情
 */
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
            content: Feng.ctxPath + '/ball/jieshao'
        });
        this.layerIndex = index;
    }
};
cloud-server-management/src/main/webapp/static/modular/system/ball/ball_info.js
@@ -3,6 +3,7 @@
 */
var CoursePackageInfo = {
    userInfoData: {},
};
@@ -15,6 +16,7 @@
};
CoursePackageInfo.openDia = function (i) {
        let index = layer.open({
cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue.js
New file
@@ -0,0 +1,200 @@
/**
 * 管理初始化
 */
var TStudent = {
    id: "TStudentTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TStudent.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
            {title: '所在省', field: 'province', visible: true, align: 'center', valign: 'middle'},
            {title: '所在市', field: 'city', visible: true, align: 'center', valign: 'middle'},
            {title: '预约门店', field: 'name', visible: true, align: 'center', valign: 'middle'},
        { title: '预约场地', field: 'nextName', visible: true, align: 'center', valign: 'middle'},
        { title: '姓名', field: 'booker', visible: true, align: 'center', valign: 'middle'},
        { title: '联系电话', field: 'phone', visible: true, align: 'center', valign: 'middle'},
        { title: '预约时间段', field: 'times', visible: true, align: 'center', valign: 'middle'},
        { title: '支付方式', field: 'payType', visible: true, align: 'center', valign: 'middle' , formatter: function(value, row) {
                switch (value) {
                    case 1:
                        return '微信';
                    case 2:
                        return '支付宝';
                    case 3:
                        return '玩湃币';
                    case 4:
                        return '手动支付';
                    default:
                        return '';
                }
            }},
        {
            title: '金额',
            field: 'money',
            visible: true,
            align: 'center',
            valign: 'middle',
            formatter: function(value, row) {
                    if (row.status === 0) {
                               if (value) {
                        var moneyValues = value.split(',');
                    var moneyText = moneyValues[0] + '元/' + moneyValues[1] + '玩湃币';
                    return moneyText;}
                    }
                    else {
                        if (row.payType === 3){
                        return row.payMoney+'玩湃币' }else {
                            return row.payMoney+'元'
                        }
                    }
            }
        },
        {
            title: '状态',
            field: 'status',
            visible: true,
            align: 'center',
            valign: 'middle',
            formatter: function(value, row) {
                switch (value) {
                    case 0:
                        return '待支付';
                    case 1:
                        return '待核销';
                    case 2:
                        return '已到店';
                    case 3:
                        return '已完成';
                    case 4:
                        return '已过期';
                    case 5:
                        return '已取消';
                    default:
                        return '';
                }
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TStudent.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TStudent.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TStudent.openAddTStudent = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/ball/yuyue_add'
    });
    this.layerIndex = index;
};
/**
 * 打开修改
 */
TStudent.openTStudentDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['100%', '100%'],  //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/ball/pre_edit/' + TStudent.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 打开详情
 */
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;
    }
};
/**
 * 删除
 */
TStudent.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tStudent/delete", function (data) {
            Feng.success("删除成功!");
            TStudent.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tStudentId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 查询列表
 */
TStudent.search = function () {
    var queryData = {};
    queryData['provinceCode'] = $("#pCode").val();
    queryData['cityCode'] = $("#cCode").val();
    queryData['store'] = $("#store").val();
    queryData['peopleName'] = $("#peopleName").val();
    queryData['phone'] = $("#phone").val();
    queryData['date'] = $("#peopleName").val();
    TStudent.table.refresh({query: queryData});
};
$(function () {
    var defaultColunms = TStudent.initColumn();
    var table = new BSTable(TStudent.id, "/ball/yuyuelist", defaultColunms);
    table.setPaginationType("client");
    TStudent.table = table.init();
});
cloud-server-management/src/main/webapp/static/modular/system/ball/yuyue_info.js
New file
@@ -0,0 +1,542 @@
/**
 * 用户详情对话框(可用于添加和修改对话框)
 */
var CoursePackageInfo = {
    userInfoData: {},
};
/**
 * 关闭此对话框
 */
CoursePackageInfo.close = function () {
    parent.layer.close(window.parent.TStudent.layerIndex);
};
CoursePackageInfo.openDia = function (i) {
        let index = layer.open({
            type: 2,
            title: '编辑',
            area: ['80%', '80%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/coursePackage/conpun/'+i
        });
        this.layerIndex = index;
};
CoursePackageInfo.openDia1 = function (i) {
    var ids = $("#counpons"+i).val()
        console.log($("#counpons"+i).val())
    let index = layer.open({
        type: 2,
        title: '编辑',
        area: ['80%', '80%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/coursePackage/conpun1'+'/'+i+'?conpunids='+ids
    });
    this.layerIndex = index;
};
CoursePackageInfo.addTime = function (a) {
    console.log("==========="+a)
    var ajax = new $ax(Feng.ctxPath + "/ball/yuyuetimes/"+ $('#siteId').val(), function(data){
        console.log("================"+data)
        if(data!=null){
            var content='';
            $.each(data, function(k, v) {
                var buttonClass = "layui-btn layui-btn-primary";
                var style = "";
                if (v.state === 0) {
                    style = "background-color: red;";
                }
                var disabledAttribute = v.state === 0 ? "disabled" : "";
                content += '<button type="button" class="' + buttonClass + '" ' + disabledAttribute + ' style="' + style + '" onclick="toggleColor(this)">' + v.time + '</button>';
            });
            $("#ttt2").empty().append(content);
        }
    })
    ajax.start()
    var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){
        console.log("================"+data)
        if(data!=null){
            let htmlStr = '';
            for (let i = 0; i < data.length; i++) {
                htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>'
            }
            $("#half").empty().append(htmlStr);
        }
    })
    ajax1.start()
};
/**
 * 提交添加用户
 */
CoursePackageInfo.addSubmit = function () {
    let province = $('#provinceCode option:checked').text();
    let provinceCode = $('#provinceCode').val();
    let city = $('#cityCode option:checked').text();
    let cityCode = $('#cityCode').val();
    let storeId = $('#storeId').val();
    let siteId = $('#siteId').val();
    let site = $('#siteId option:checked').text();
    var radios = document.getElementsByName("type");
    var selectedValue;
    for (var i = 0; i < radios.length; i++) {
        if (radios[i].checked) {
            selectedValue = radios[i].value;
            break;
        }
    }
    let type = selectedValue;
    let half = $('#half').val();
    let date = $('#time').val();
    var elements = document.getElementsByClassName("layui-btn layui-btn-primary green-button");
    var values = "";
    for (var i = 0; i < elements.length; i++) {
        values += date +" "+ elements[i].innerText + ",";
    }
// 去除最后一个逗号
    values = values.slice(0, -1);
    console.log(values);
    var times = values;
    let cash = $('#cash').val();
    let play = $('#play').val();
    let booker = $('#booker').val();
    let phone = $('#phone').val();
    // if(null == provinceCode || '' == provinceCode){
    //     Feng.error("所在省不能为空");
    //     return
    // }
    // if(null == cityCode || '' == cityCode){
    //     Feng.error("所在市不能为空");
    //     return
    // }
    // if(null == storeId || '' == storeId){
    //     Feng.error("所属门店不能为空");
    //     return
    // }
    // if(null == coursePackageTypeId || '' == coursePackageTypeId){
    //     Feng.error("课程类型不能为空");
    //     return
    // }
    // if(null == name || '' == name){
    //     Feng.error("课包名称不能为空");
    //     return
    // }
    // if(null == siteId || '' == siteId){
    //     Feng.error("上课场地不能为空");
    //     return
    // }
    // if(null == coachId || '' == coachId){
    //     Feng.error("授课教师不能为空");
    //     return
    // }
    //
    // classWeeks = classWeeks.substring(0, classWeeks.length - 1);
    //
    // if(null == coverDrawing || '' == coverDrawing){
    //     Feng.error("课包封面不能为空");
    //     return
    // }
    // if(null == detailDrawing || '' == detailDrawing){
    //     Feng.error("详情页不能为空");
    //     return
    // }
    // if(null == introduceDrawing || '' == introduceDrawing){
    //     Feng.error("课包介绍不能为空");
    //     return
    // }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/ball/ordersave", function (data) {
        if(data.code == 200){
            Feng.success("添加成功!");
            CoursePackageInfo.close();
            window.parent.TStudent.table.refresh();
        }else{
            Feng.error(data.msg);
        }
    }, function (data) {
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set("province",province)
    ajax.set("provinceCode",provinceCode);
    ajax.set("city",city);
    ajax.set("cityCode",cityCode);
    ajax.set("storeId",storeId);
    ajax.set("isHalf",type);
    ajax.set("siteId",siteId);
    ajax.set("nextName",site);
    ajax.set("halfName",half);
    ajax.set("date",date);
    ajax.set("times",times);
    ajax.set("money",cash+","+play);
    ajax.set("booker",booker);
    ajax.set("phone",phone);
    ajax.start();
};
/**
 * 提交修改
 */
CoursePackageInfo.editSubmit = function () {
    let id = $('#id').val();
    let province = $('#provinceCode option:checked').text();
    let provinceCode = $('#provinceCode').val();
    let city = $('#cityCode option:checked').text();
    let cityCode = $('#cityCode').val();
    let storeId = $('#storeId').val();
    let coursePackageTypeId = $('#coursePackageTypeId').val();
    let name = $('#name').val();
    let siteId = $('#siteId').val();
    let coachId = $('#coachId').val();
    let maxSubscribeNumber = $('#maxSubscribeNumber').val();
    let codeTime = $('#codeTime').val();
    let type = $('#type').val();
    let holitime = $('#holitime').val();
    var inputElements = document.querySelectorAll('input[name="classStartTime"]');
    let classStartTime =  JSON.stringify(Array.from(inputElements).map(function(element) {
        return element.value;
    }))
    // let classStartTime = $('#classStartTime').val();
    let classWeeks = '';
    $('input[name="classWeeks"]:checked').each(function (index, e) {
        classWeeks += $(e).val() + ";";
    })
    let coverDrawing = $('#coverDrawing').val();
    let detailDrawing = $('#detailDrawing').val();
    let introduceDrawing = $('#introduceDrawing').val();
    let sort = $('#sort').val();
    let validDays = $('#validDays').val();
    // let counpons = $($(e).find(".counpons")).val();
    let price = [];
    $('#price>.form-group').each(function (i, e) {
        let classHours = $($(e).find(".classNumber_span input[class='classNumber']")[0]).val();
        let cash = $($(e).find(".cash_span input[class='cash']")[0]).val();
        let paiCoin = $($(e).find(".paiCoin_span input[class='paiCoin']")[0]).val();
        let counpons = $($(e).find(".counpons")).val();
        price.push({
            classHours: classHours,
            cashPayment: typeof cash == "undefined" ? 0 : cash,
            playPaiCoin: typeof paiCoin == "undefined" ? 0 : paiCoin,
            couponIds: typeof counpons == "undefined" ? 0 : counpons
        })
    });
    if(null == provinceCode || '' == provinceCode){
        Feng.error("所在省不能为空");
        return
    }
    if(null == cityCode || '' == cityCode){
        Feng.error("所在市不能为空");
        return
    }
    if(null == storeId || '' == storeId){
        Feng.error("所属门店不能为空");
        return
    }
    if(null == coursePackageTypeId || '' == coursePackageTypeId){
        Feng.error("课程类型不能为空");
        return
    }
    if(null == name || '' == name){
        Feng.error("课包名称不能为空");
        return
    }
    if(null == siteId || '' == siteId){
        Feng.error("上课场地不能为空");
        return
    }
    if(null == coachId || '' == coachId){
        Feng.error("授课教师不能为空");
        return
    }
    // if(null == maxSubscribeNumber || '' == maxSubscribeNumber){
    //     Feng.error("最多预约人数不能为空");
    //     return
    // }
    // if(null == codeTime || '' == codeTime){
    //     Feng.error("扣除课时不能为空");
    //     return
    // }
    // if(null == classStartTime || '' == classStartTime){
    //     Feng.error("上课时间不能为空");
    //     return
    // }
    // if(null == classWeeks || '' == classWeeks){
    //     Feng.error("周不能为空");
    //     return
    // }
    classWeeks = classWeeks.substring(0, classWeeks.length - 1);
    if(null == coverDrawing || '' == coverDrawing){
        Feng.error("课包封面不能为空");
        return
    }
    if(null == detailDrawing || '' == detailDrawing){
        Feng.error("详情页不能为空");
        return
    }
    if(null == introduceDrawing || '' == introduceDrawing){
        Feng.error("课包介绍不能为空");
        return
    }
    // if(null == validDays || '' == validDays){
    //     Feng.error("课时有效期不能为空");
    //     return
    // }
    let obj = {
        id: id,
        province: province,
        provinceCode: provinceCode,
        city: city,
        cityCode: cityCode,
        storeId: storeId,
        coursePackageTypeId: coursePackageTypeId,
        name: name,
        siteId: siteId,
        coachId: coachId,
        maxSubscribeNumber: maxSubscribeNumber,
        codeTime: codeTime,
        type:type,
        classStartTime: classStartTime,
        // classEndTime: classStartTime.split(" - ")[1],
        classWeeks: classWeeks,
        coverDrawing: coverDrawing,
        detailDrawing: detailDrawing,
        introduceDrawing: introduceDrawing,
        sort: sort,
        validDays: validDays,
        coursePackagePaymentConfig: JSON.stringify(price),
        holitime:holitime
    }
    console.log("======="+obj)
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/coursePackage/updateCoursePackage", function (data) {
        if(data.code == 200){
            Feng.success("编辑成功!");
            CoursePackageInfo.close();
            window.parent.CoursePackage.table.refresh();
        }else{
            Feng.error(data.msg);
        }
    }, function (data) {
        Feng.error("编辑失败!" + data.responseJSON.message + "!");
    });
    ajax.set(obj);
    ajax.start();
};
function queryStore() {
    let ajax = new $ax(Feng.ctxPath + "/coursePackage/queryStore", function (data) {
        let htmlStr = '';
        for (let i = 0; i < data.length; i++) {
            htmlStr += '<option value="' + data[i].id + '">' + data[i].name + '</option>'
        }
        $('#storeId').html(htmlStr);
        querySite();
    }, function (data) {
        Feng.error("获取失败!" + data.responseJSON.message + "!");
    });
    ajax.set("cityCode", $('#cityCode').val());
    ajax.start();
}
function querySite(){
    let ajax = new $ax(Feng.ctxPath + "/coursePackage/querySite", function (data) {
        let htmlStr = '';
        for (let i = 0; i < data.length; i++) {
            htmlStr += '<option value="' + data[i].id + '">' + data[i].name + '</option>'
        }
        $('#siteId').html(htmlStr);
    }, function (data) {
        Feng.error("获取失败!" + data.responseJSON.message + "!");
    });
    ajax.set("storeId", $('#storeId').val());
    ajax.start();
}
function queryCoach(){
    let ajax = new $ax(Feng.ctxPath + "/coursePackage/queryCoach", function (data) {
        let htmlStr = '';
        for (let i = 0; i < data.length; i++) {
            htmlStr += '<option value="' + data[i].id + '">' + data[i].name + '</option>'
        }
        $('#coachId').html(htmlStr);
    }, function (data) {
        Feng.error("获取失败!" + data.responseJSON.message + "!");
    });
    ajax.set("cityCode", $('#cityCode').val());
    ajax.start();
}
function addPrice(y){
    console.log("===="+y)
    let cash = false;
    let paiCoin = false;
    $('input[name="payType"]:checked').each(function (index, e) {
        let v = $(e).val();
        if(v == 1){
            cash = true;
        }
        if(v == 2){
            paiCoin = true;
        }
    })
    var i =  $('#price > div').length+1
    let htmlStr = ''
    if (y===1){
        htmlStr +=   '<div class="form-group">\n' +
            '                        <label class="col-sm-3 control-label">*课时数:</label>\n' +
            '                        <div class="col-sm-8">\n' +
            '                            <span class="classNumber_span"><input class="classNumber" type="number" min="0" placeholder="请输入" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;">&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class="cash_span">\n';
    }
    if (y===2){
        htmlStr +=   '<div class="form-group">\n' +
            '                        <label class="col-sm-3 control-label"></label>\n' +
            '                        <div class="col-sm-8">\n' +
            '                            <span class="classNumber_span" hidden="hidden"><input class="classNumber" type="number" min="0" placeholder="请输入" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;">&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class="cash_span">\n';
    }
        '<div class="form-group">\n' +
        '                        <label class="col-sm-3 control-label">*课时数:</label>\n' +
        '                        <div class="col-sm-8">\n' +
        '                            <span class="classNumber_span"><input class="classNumber" type="number" min="0" placeholder="请输入" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;">&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class="cash_span">\n';
        if(cash){
            htmlStr += '现金支付:<input class="cash" type="number" min="0" placeholder="请输入金额" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"> ¥&nbsp;&nbsp;&nbsp;&nbsp;\n';
        }
        htmlStr += '</span> <span class="paiCoin_span">';
        if(paiCoin){
            htmlStr += '玩湃币支付:<input class="paiCoin" type="number" min="0" placeholder="请输入金额" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"> 币&nbsp;&nbsp;&nbsp;&nbsp;\n';
        }
    htmlStr += '<button type="button" class="btn btn-info " onclick="CoursePackageInfo.openDia('+i+')" id="ensure">\n' +
        '    <i class="fa fa-check"></i>&nbsp;优惠卷\n' +
        '</button>';
    htmlStr += '</span> <i class="fa fa-trash-o" style="font-size:24px" onclick="removePrice(this)"></i>\n' +
        '</div>\n' +'<input type="text" hidden="hidden" class = "counpons" id = "counpons'+i+'" >'+i+
        '</div>';
    $('#price').append(htmlStr);
}
function removePrice(e){
    $(e).parent('div').parent('div').remove();
}
function removePrice1(e){
    $(e).parent('div').remove();
}
$(function () {
    $('#provinceCode').change(function () {
        let ajax = new $ax(Feng.ctxPath + "/coursePackage/queryCity", function (data) {
            let htmlStr = '';
            for (let i = 0; i < data.length; i++) {
                htmlStr += '<option value="' + data[i].code + '">' + data[i].name + '</option>'
            }
            $('#cityCode').html(htmlStr);
            queryStore();
            queryCoach();
        }, function (data) {
            Feng.error("获取失败!" + data.responseJSON.message + "!");
        });
        ajax.set("code", $(this).val());
        ajax.start();
    })
    $('#cityCode').change(function () {
        queryStore();
    })
    $('#storeId').change(function () {
        querySite();
    })
    $('input[name="payType"]').click(function () {
        $('input[name="payType"]').each(function (index, e) {
            let v = $(e).val();
            if(v == 1) {
                if (e.checked) {
                    $('span[class="cash_span"]').each(function (index, e) {
                        $(e).html('现金支付:<input class="cash" type="number" min="0" placeholder="请输入金额" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"> ¥&nbsp;&nbsp;&nbsp;&nbsp;');
                    })
                } else {
                    $('span[class="cash_span"]').each(function (index, e) {
                        $(e).html('');
                    })
                }
            }
            if(v == 2){
                if (e.checked) {
                    $('span[class="paiCoin_span"]').each(function (index, e) {
                        $(e).html('玩湃币支付:<input class="paiCoin" type="number" min="0" placeholder="请输入金额" style="width: 110px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"> 币&nbsp;&nbsp;&nbsp;&nbsp;')
                    })
                } else {
                    $('span[class="paiCoin_span"]').each(function (index, e) {
                        $(e).html('');
                    })
                }
            }
        })
    })
});
cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js
@@ -4,6 +4,7 @@
var language=1;
var TCarInfoDlg = {
    tCarInfoData : {},
    goodsPicArray1:[],
    validateFields: {
        carBrandId: {
            validators: {
@@ -173,6 +174,7 @@
        return;
    }
    var shopId = $("#shopId").val();
    var shopIdString = shopId.join(",");
    var name = $("#name").val();
    if(name==""){
        Feng.info("请输入赛事名称");
@@ -214,6 +216,21 @@
        return;
    }
    var goodImgs = TCarInfoDlg.goodsPicArray1;
    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 coverDrawing = $("#coverDrawing").val();
    var coverDrawing = $("#coverDrawing").val();
    var registrationNotes = $("#registrationNotes").val()
@@ -242,7 +259,7 @@
    });
    ajax.set("provinceCode",pCode);
    ajax.set("cityCode",cCode);
    ajax.set("storeId",shopId);
    ajax.set("storeId",shopIdString);
    ajax.set("name",name);
    ajax.set("sTime",startTime);
    ajax.set("eTime",endTime);
@@ -259,7 +276,7 @@
    ajax.set("realName",realName);
    ajax.set("coverDrawing",coverDrawing);
    ajax.set("introduction",introduction);
    ajax.set("imgs",introduction);
    ajax.set("imgs",imgOne);
    ajax.set("registrationNotes",registrationNotes);
    ajax.set("longitude", $("#longitude").val());
    ajax.set("latitude", $("#latitude").val());
@@ -305,7 +322,6 @@
        return;
    }
    var registerEndTime = $("#registerEndTime").val();
    let registerCondition = document.querySelector('input[name="registerCondition"]:checked').value;
    var startAge = $("#startAge").val();
    var endAge = $("#endAge").val();
    var cashPrice = $("#cashPrice").val();
@@ -328,6 +344,26 @@
        Feng.info("请输入赛事简介");
        return;
    }
    var goodImgs = TCarInfoDlg.goodsPicArray1;
    if(goodImgs.length==0){
        Feng.info("请上传赛事活动图片")
        return;
    }
    var imgOne ="";
    console.log(goodImgs)
    console.log(goodImgs.length)
    for (let i = 0; i <goodImgs.length; i++) {
        console.log(goodImgs[i].response,11)
        if(i==goodImgs.length-1){
            imgOne += (goodImgs[i].response)
        }else {
            imgOne+=(goodImgs[i].response+",")
        }
    }
    console.log(imgOne)
    var coverDrawing = $("#coverDrawing").val();
    var coverDrawing = $("#coverDrawing").val();
@@ -358,7 +394,6 @@
    ajax.set("sTime",startTime);
    ajax.set("eTime",endTime);
    ajax.set("rEndTime",registerEndTime);
    ajax.set("registerCondition",registerCondition);
    ajax.set("startAge",startAge);
    ajax.set("endAge",endAge);
    ajax.set("cashPrice",cashPrice);
@@ -370,7 +405,7 @@
    ajax.set("realName",realName);
    ajax.set("coverDrawing",coverDrawing);
    ajax.set("introduction",introduction);
    ajax.set("imgs",introduction);
    ajax.set("imgs",imgOne);
    ajax.set("registrationNotes",registrationNotes);
    ajax.set("longitude", $("#longitude").val());
    ajax.set("latitude", $("#latitude").val());
cloud-server-management/src/main/webapp/static/modular/system/tGoodsAudit/TStoreInfo.js
New file
@@ -0,0 +1,157 @@
/**
 * 管理初始化
 */
var TStoreProvince = {
    id: "TStoreProvinceTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1,
    storeList: []
};
/**
 * 初始化表格的列
 */
TStoreProvince.initColumn = function () {
    return [
        {field: 'selectItem', checkbox: true},
        {title: '选择', field: '', visible: true, align: 'center', valign: 'middle'},
        {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '所属账号', field: 'accountName', visible: true, align: 'center', valign: 'middle'},
        {title: '所在省市', field: 'provinceCity', visible: true, align: 'center', valign: 'middle'},
        {title: '门店名称', field: 'name', visible: true, align: 'center', valign: 'middle'},
    ];
};
/**
 * 检查是否选中
 */
TStoreProvince.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TStoreProvince.seItem = selected[0];
        return true;
    }
};
TStoreProvince.storeOfClosePage = function (){
    parent.layer.close(parent.layer.getFrameIndex(window.frameElement.id));
}
TStoreProvince.saveSelectStores = function (){
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if (selected.length == 0) {
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }
    var arr = [];
    console.log('selected--->',selected)
    for(var i in selected){
        if(typeof selected[i].id != "undefined"){
            arr.push({
                id: selected[i].id,
                provinceCity: typeof selected[i].provinceCity != "undefined" ? selected[i].provinceCity : "",
                accountName: typeof selected[i].accountName != "undefined" ? selected[i].accountName : "",
                name: typeof selected[i].name != "undefined" ? selected[i].name : ""
            })
        }
    }
    window.parent.TCarInfoDlg.selecUserOpt(arr);
    TStoreProvince.storeOfClosePage();
}
/**
 * 查询列表
 */
TStoreProvince.search = function () {
    var queryData = {};
    var provinceElement = document.getElementById("province");
    var provinceId = provinceElement.value;
    var cityElement = document.getElementById("city");
    var cityElementId = cityElement.value;
    queryData['provinceId'] = provinceId;
    queryData['cityId'] = cityElementId;
    queryData['cityManagerId'] = $("#userPopulation").val();
    queryData['storeName'] = $("#storeName").val();
    TStoreProvince.table.refresh({query: queryData});
};
/**
 * 重置搜索
 */
TStoreProvince.resetSearch = function () {
    var provinceSelect = document.getElementById("province");
    provinceSelect.innerHTML = '<option value="">全部</option>';
    var citySelect = document.getElementById("city");
    citySelect.innerHTML = '<option value="">全部</option>';
    queryProvince();
    $("#userPopulation").val('');
    $("#storeName").val('');
    TStoreProvince.search();
};
function queryProvince(){
    // 发送AJAX请求到后台获取省份数据
    // 假设后台返回的数据格式为一个包含省份ID和名称的数组
    var provinceSelect = document.getElementById("province");
    var ajax = new $ax(Feng.ctxPath + "/tCouponManage/getProvince", function(data){
        data.forEach(province => {
            var option = document.createElement("option");
            option.value = province.id;  // 根据你的数据结构确定省份的id字段
            option.text = province.name;  // 根据你的数据结构确定省份的name字段
            provinceSelect.appendChild(option);
        });
    },function(data){
        Feng.error("下拉失败!" + data.responseJSON.message + "!");
    });
    ajax.start();
    provinceSelect.addEventListener("change", queryCity);
}
// 获取城市数据
function queryCity() {
    var selectedProvinceId = this.value; // 获取选择的省份ID
    // 发送AJAX请求到后台获取对应省份的城市数据
    // 假设后台返回的数据格式为一个包含城市ID和名称的数组
    var citySelect = document.getElementById("city");
    citySelect.innerHTML = "";
    var ajax = new $ax(Feng.ctxPath + "/tCouponManage/getCity", function(data){
        data.forEach(province => {
            var option = document.createElement("option");
            option.value = province.id;  // 根据你的数据结构确定省份的id字段
            option.text = province.name;  // 根据你的数据结构确定省份的name字段
            citySelect.appendChild(option);
        });
    },function(data){
        console.log('data:',data)
        Feng.error("获取失败!" + data.responseJSON.message + "!");
    });
    ajax.set('province',selectedProvinceId);
    ajax.start();
}
$(function () {
    var defaultColunms = TStoreProvince.initColumn();
    var table = new BSTable(TStoreProvince.id, "/tCouponManage/storeDetailsOfSearch", defaultColunms);
    table.setPaginationType("client");
    TStoreProvince.table = table.init();
    queryProvince();
});
cloud-server-management/src/main/webapp/static/modular/system/tGoodsAudit/tGoods.js
New file
@@ -0,0 +1,259 @@
/**
 * 车辆管理管理初始化
 */
var TPointProducts = {
    id: "TPointProductsTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
var language =1
/**
 * 初始化表格的列
 */
TPointProducts.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
        {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '商品名称', field: 'name', visible: true, align: 'center', valign: 'middle'},
        {title: '兑换地点', field: 'useScope', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row, index) {
                return {1: "全国", 2: "指定城市", 3: "指定门店"}[value]
            }
        },
        {title: '用户人群', field: 'userPopulation', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row, index) {
                return {1: "全部用户", 2: "年度会员", 3: "已有学员用户"}[value]
            }
        },
        {title: '发放数量', field: 'quantityIssued', visible: true, align: 'center', valign: 'middle'
        },
        {title: '限领数量', field: 'pickUpQuantity', visible: true, align: 'center', valign: 'middle'
        },
        {title: '已领数量', field: 'hasPickQty', visible: true, align: 'center', valign: 'middle'
        },
        {title: '已兑换数量', field: 'hasExchangeQty', visible: true, align: 'center', valign: 'middle'
        },
        {title: '排序', field: 'sort', visible: true, align: 'center', valign: 'middle'
        },
        {title: '审核状态', field: 'status', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row, index) {
                return { 2: "待审核", 3: "已拒绝"}[value]
            }
        },
    ];
};
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
}
/**
 * 检查是否选中
 */
TPointProducts.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
            Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TPointProducts.seItem = selected[0];
        return true;
    }
};
/**
 * 添加
 */
TPointProducts.openAddTPointProducts = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tGoods/tGoods_add'
    });
    this.layerIndex = index;
};
/**
 * 查看详情
 */
TPointProducts.detail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title:'详情',
            area: ['100%', '100%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tGoods/goods_info/' + TPointProducts.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 购买详情
 */
TPointProducts.payDetail = function () {
    if (this.check()) {
            layer.open({
                type: 1
                , title: '审核'
                , area: ['50%', '50%']
                , offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
                , id: 'layerDemo' //防止重复弹出cge
                , content: '<div class="form-horizontal">' +
                    '                    <div class="col-sm-11" style="margin-top: 30px">' +
                    '                    <div class="col-sm-11">' +
                    '                        <div class="form-group">\n' +
                    '                            <label class="col-sm-3 control-label">审核状态:</label>\n' +
                    '                            <div class="col-sm-9">\n' +
                    '                                <input type="radio" name="type1" value="1" checked>通过 <input type="radio" name="type1" value="3">拒绝\n' +
                    '                            </div>\n' +
                    '                        </div>\n' +
                    '                        <div class="form-group">\n' +
                    '                            <label class="col-sm-3 control-label">拒绝理由:</label>\n' +
                    '                            <div class="col-sm-9">\n' +
                    '                                <textarea id="remark" style="height: 193px; width: 368px;"></textarea>\n' +
                    '                            </div>\n' +
                    '                        </div>\n' +
                    '                       </div>' +
                    '                   </div>' +
                    '</div>'
                , btn: ['保存', '取消']
                , btnAlign: 'c' //按钮居中
                , shade: 0.5 //不显示遮罩
                , yes: function () {
                    var OBJradio= $("input[name='type1']:checked").val();
                    console.log(OBJradio)
                   let remark =  $("#remark").val()
                    console.log(remark)
                    if(OBJradio==3){
                        if(remark==''){
                            Feng.info("请输入拒绝理由")
                            return;
                        }
                    }
                    var ajax = new $ax(Feng.ctxPath + "/tGoods/updateTypeOne", function (data) {
                        if (data.code == 200) {
                            Feng.success("操作成功!");
                            TPointProducts.table.refresh();
                            window.parent.layer.closeAll();
                        } else {
                            return  Feng.error(data.msg);
                        }
                    }, function (data) {
                        return   Feng.error("操作失败!");
                    });
                    ajax.set("id",TPointProducts.seItem.id)
                    ajax.set("type",OBJradio)
                    ajax.set("remark",remark)
                    ajax.start();
                    layer.closeAll();
                },
            });
        }
};
/**
 * 编辑页面
 */
TPointProducts.openEditPage = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title:'编辑',
            area: ['100%', '100%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tGoods/tGoods_update/' + TPointProducts.seItem.id
        });
        this.layerIndex = index;
    }
}
/**
 * 上下架处理
 * @param m
 */
TPointProducts.grounding = function (m) {
    console.log('m:',m);
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tGoods/grounding", function (data) {
            Feng.success("操作成功!");
            TPointProducts.table.refresh();
        }, function (data) {
            Feng.error("操作失败!" + data.responseJSON.message + "!");
        });
        ajax.set("id",this.seItem.id);
        ajax.set("type",m);
        ajax.start();
    }
};
/**
 * 查询车辆管理列表
 */
TPointProducts.search = function () {
    var queryData = {};
    queryData['name'] = $("#name").val();
    queryData['type'] = $("#type").val();
    queryData['redemptionMethod'] = $("#redemptionMethod").val();
    queryData['userPopulation'] = $("#userPopulation").val();
    queryData['activeStatus'] = $("#activeStatus").val();
    queryData['state'] = $("#state").val();
    TPointProducts.table.refresh({query: queryData});
};
TPointProducts.resetSearch = function () {
    $("#name").val("");
    $("#type").val("");
    $("#redemptionMethod").val("");
    $("#userPopulation").val("");
    $("#activeStatus").val("");
    $("#state").val("");
    TPointProducts.search();
};
$(function () {
    var defaultColunms = TPointProducts.initColumn();
    var table = new BSTable(TPointProducts.id, "/tGoods/listAudit", defaultColunms);
    table.setPaginationType("client");
    TPointProducts.table = table.init();
});
cloud-server-management/src/main/webapp/static/modular/system/tGoodsAudit/tGoods_info.js
New file
@@ -0,0 +1,804 @@
/**
 * 初始化车辆管理详情对话框
 */
var language=1;
var TGoodsInfoDlg = {
    tGoodsInfoData : {},
    validateFields: {
    },
    goodsPicArray:[],
    goodsPicArray1:[],
    storeIds: [],
};
/**
 * 验证数据是否为空
 */
TGoodsInfoDlg.validate = function () {
    $('#carInfoForm').data("bootstrapValidator").resetForm();
    $('#carInfoForm').bootstrapValidator('validate');
    return $("#carInfoForm").data('bootstrapValidator').isValid();
};
/**
 * 清除数据
 */
TGoodsInfoDlg.clearData = function() {
    this.tGoodsInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TGoodsInfoDlg.set = function(key, val) {
    this.tGoodsInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TGoodsInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TGoodsInfoDlg.close = function() {
    parent.layer.close(window.parent.TPointProducts.layerIndex);
}
/**
 * 收集数据
 */
TGoodsInfoDlg.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');
}
function storeList(){
    var index = layer.open({
        type: 2,
        title: '门店列表',
        area: ['80%', '80%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tGoods/storeList'
    });
    this.layerIndex = index;
}
TGoodsInfoDlg.selecUserOpt = function (arrays){
    console.log(arrays)
    //获取所有的值
    var subArr= this.storeIds;
    $(".timeClass").each(function () {
        subArr.push($(this).find("input[name*='id']").val());
    });
    var str = '';
    for(var i in arrays){
        var b = true;
        for(var j in subArr){
            if(arrays[i].id === Number(subArr[j])){
                b = false;
                break
            }
        }
        if(b){
            this.storeIds.push(arrays[i].id)
            str += '<tr class="timeClass">' +
                '<td><input type="hidden" id="id" name="id" value="'+arrays[i].id+'"><input type="hidden" id="provinceCity" name="provinceCity" value="'+arrays[i].provinceCity+'">' + arrays[i].provinceCity + '</td>' +
                '<td><input type="hidden" id="accountName" name="accountName" value="'+arrays[i].accountName+'">' + arrays[i].accountName + '</td>' +
                '<td><input type="hidden" id="name" name="name" value="'+arrays[i].name+'">' + arrays[i].name + '</td><td><button onclick="deleteSub(this)">移除</button></td></tr>';
        }
    }
    $("#coun").append(str);
    console.log('storeIds',this.storeIds)
}
function deleteSub(e) {
    console.log(e);
    var row = $(e).closest('tr');
    var value = row.find('#id').val();
    TGoodsInfoDlg.storeIds.splice(TGoodsInfoDlg.storeIds.indexOf(parseInt(value)), 1)
    $(e).parent().parent().remove();
    console.log('storeIds',TGoodsInfoDlg.storeIds)
}
TGoodsInfoDlg.delete = function (o) {
    $(o).parent("div").remove()
}
var num = 0;
TGoodsInfoDlg.addBranch = function () {
    num=num+1;
    var a= "";
    a = "<div style=\'margin-left: 25%\' class=\"col-sm-9 control-label\">\n" +
        "                            <select class=\"col-sm-1\"  id=\'provinceData"+num+"\' style=\"margin-top: 1%;width: 25%\" onchange=\'changeCity("+num+")\'>\n" +
        "                                <option value=\"\">请选择</option>\n" +
        "                            </select>\n" +
        "                            <label class=\"col-sm-1\"  style=\"width: 9%;margin-top: 7px\">省</label>\n" +
        "                            <select  class=\"col-sm-1\" style=\"margin-top: 1%;width: 25%\" id=\'cityData"+num+"\'>\n" +
        "                                <option value=\"\">请选择</option>\n" +
        "                            </select>\n" +
        "                            <label class=\"col-sm-1\" style=\"width: 7%;margin-top: 7px\">市</label>\n" +
        "                            <label name=\"addBranch\" class=\"col-sm-1\" onclick=\"TGoodsInfoDlg.delete(this)\" style=\"border: 0px;cursor: pointer;margin-top: 1%\"><i class=\"fa fa-trash\"></i></label>"+
        "                        </div>";
    $("#cityDemo").append($(a));
    getProvince(num);
}
function changeCity(n){
    var provinceSelect = null;
    if (n === undefined || n === null || n === ''){
        provinceSelect = document.getElementById("provinceData");
    }else {
        provinceSelect = document.getElementById("provinceData"+n);
    }
    var citySelect = null;
    if (n === undefined || n === null || n === ''){
        citySelect = document.getElementById("cityData");
    }else {
        citySelect = document.getElementById("cityData"+n);
    }
    var selectedProvince = provinceSelect.value;
    // 清空城市下拉框
    citySelect.innerHTML = '<option value="">请选择</option>';
    if (selectedProvince === "") {
        return;
    }
    var ajax = new $ax(Feng.ctxPath + "/tCouponManage/getCity", function(data){
        data.forEach(province => {
            var option = document.createElement("option");
            option.value = province.id;  // 根据你的数据结构确定省份的id字段
            option.text = province.name;  // 根据你的数据结构确定省份的name字段
            citySelect.appendChild(option);
        });
    },function(data){
        console.log('data:',data)
        Feng.error("获取失败!" + data.responseJSON.message + "!");
    });
    ajax.set('province',selectedProvince);
    ajax.start();
}
function getProvince(n){
    var ajax = new $ax(Feng.ctxPath + "/tCouponManage/getProvince", function(data){
        console.log(data)
        var provinceSelect = null;
        if (n === undefined || n === null || ''){
            provinceSelect = document.getElementById("provinceData");
        }else {
            provinceSelect = document.getElementById("provinceData"+n);
        }
        data.forEach(province => {
            var option = document.createElement("option");
            option.value = province.id;  // 根据你的数据结构确定省份的id字段
            option.text = province.name;  // 根据你的数据结构确定省份的name字段
            provinceSelect.appendChild(option);
        });
    },function(data){
        Feng.error("下拉失败!" + data.responseJSON.message + "!");
    });
    ajax.start();
}
/**
 * 提交添加
 */
TGoodsInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    let typeAll = document.querySelector('input[name="type"]:checked').value;
    if(typeAll==2){
        let pCode = $("#pCode").val()
        let cCode = $("#cCode").val()
        if(pCode==''){
            Feng.info("请选择省")
            return;
        }
        if(cCode==''){
            Feng.info("请选择市")
            return;
        }
        let storeId = $("#storeId").val()
        if(storeId==''){
            Feng.info("请选择门店")
            return;
        }
        let coursePackageTypeId = $("#coursePackageTypeId").val()
        if(coursePackageTypeId==''){
            Feng.info("请选择课包类型")
            return;
        }
        let coursePackageId = $("#coursePackageId").val()
        if(coursePackageId==''){
            Feng.info("请选择课包")
            return;
        }
        let coursePackageConfigId = $("#coursePackageConfigId").val()
        if(coursePackageConfigId==''){
            Feng.info("请选择课时数")
            return;
        }
        let price = $("#price1").val()
        if(price==''){
            Feng.info("请填写原价")
            return;
        }
        let type = document.querySelector('input[name="redemptionMethod"]:checked').value;
        if(type==''){
            Feng.info("请选择兑换方式")
            return;
        }
        let integral='';
        let cash='';
        if(type==1){
             integral = $("#integral1").val()
            if(integral==''){
                Feng.info("请填写所需积分")
                return;
            }
        }
        if(type==2){
             integral = $("#integral1").val()
            if(integral==''){
                Feng.info("请填写所需积分")
                return;
            }
             cash = $("#cash1").val()
            if(cash==''){
                Feng.info("请填写所需现金")
                return;
            }
        }
        let cover1 = $("#cover1").val()
        // if(cover1==''){
        //     Feng.info("请上传封面")
        //     return;
        // }
        var goodImgs = this.goodsPicArray1;
        var imgOne ="";
        if(goodImgs.length==0){
        }else {
            for (let i = 0; i <goodImgs.length; i++) {
                if(i==goodImgs.length-1){
                    imgOne += (goodImgs[i].response)
                }else {
                    imgOne+=(goodImgs[i].response+",")
                }
            }
        }
        let userPopulation = document.querySelector('input[name="userPopulation"]:checked').value;
        if(userPopulation==''){
            Feng.info("请选择用户人群")
            return;
        }
        let quantityIssued = $("#quantityIssued1").val()
        if(quantityIssued==''){
            Feng.info("请填写发放数量")
            return;
        }
        let pickUpQuantity = $("#pickUpQuantity1").val()
        if(pickUpQuantity==''){
            Feng.info("请填写限领数量")
            return;
        }
        let startTime = $("#startTime1").val()
        if(startTime==''){
            Feng.info("请选择有效期")
            return;
        }
        let text  = TGoodsInfoDlg.editor1.getContent();
        console.log(text)
        if(text==""){
            Feng.info("请输入兑换说明")
            return;
        }
        let sort = $("#sort1").val()
        if(sort==''){
            Feng.info("请填写排序")
            return;
        }
        //提交信息
        var ajax = new $ax(Feng.ctxPath + "/tGoods/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.TPointProducts.table.refresh();
                TGoodsInfoDlg.close();
            }else{
                Feng.error(data.msg);
            }
        },function(data){
            Feng.error("添加失败!" + data.responseJSON.message + "!");
        });
        ajax.set("typeAll",typeAll);
        ajax.set("provinceCode",pCode);
        ajax.set("cityCode",cCode);
        ajax.set("storeId",storeId);
        ajax.set("coursePackageTypeId",coursePackageTypeId);
        ajax.set("coursePackageId",coursePackageId);
        ajax.set("coursePackageConfigId",coursePackageConfigId);
        ajax.set("price",price);
        ajax.set("type",type);
        ajax.set("integral",integral);
        ajax.set("cash",cash);
        ajax.set("cover",cover1);
        ajax.set("imgOne",imgOne);
        ajax.set("userPopulation",userPopulation);
        ajax.set("quantityIssued",quantityIssued);
        ajax.set("pickUpQuantity",pickUpQuantity);
        ajax.set("startTime",startTime);
        ajax.set("text",text);
        ajax.set("sort",sort);
        ajax.start();
    }else {
        let name = $("#name").val()
        if(name==''){
            Feng.info("请填写商品名称")
            return;
        }
        let price = $("#price").val()
        if(price==''){
            Feng.info("请填写原价")
            return;
        }
        let type = document.querySelector('input[name="redemptionMethod"]:checked').value;
        if(type==''){
            Feng.info("请选择兑换方式")
            return;
        }
        let integral='';
        let cash='';
        if(type==1){
            integral = $("#integral").val()
            if(integral==''){
                Feng.info("请填写所需积分")
                return;
            }
        }
        if(type==2){
            integral = $("#integral").val()
            if(integral==''){
                Feng.info("请填写所需积分")
                return;
            }
            cash = $("#cash").val()
            if(cash==''){
                Feng.info("请填写所需现金")
                return;
            }
        }
        if(type==3){
            cash = $("#cash").val()
            if(cash==''){
                Feng.info("请填写所需现金")
                return;
            }
        }
        let cover1 = $("#cover").val()
        var goodImgs = this.goodsPicArray;
        var imgOne ="";
        if(goodImgs.length==0){
        }else {
            for (let i = 0; i <goodImgs.length; i++) {
                if(i==goodImgs.length-1){
                    imgOne += (goodImgs[i].response)
                }else {
                    imgOne+=(goodImgs[i].response+",")
                }
            }
        }
        let userPopulation = document.querySelector('input[name="userPopulation"]:checked').value;
        if(userPopulation==''){
            Feng.info("请选择用户人群")
            return;
        }
        let quantityIssued = $("#quantityIssued").val()
        if(quantityIssued==''){
            Feng.info("请填写发放数量")
            return;
        }
        let pickUpQuantity = $("#pickUpQuantity").val()
        if(pickUpQuantity==''){
            Feng.info("请填写限领数量")
            return;
        }
        let startTime = $("#startTime").val()
        if(startTime==''){
            Feng.info("请选择有效期")
            return;
        }
        let company = document.querySelector('input[name="company"]:checked').value;
        var cityIds = [];
        var cts = "";
        if (company === '2'){
            var myselect=document.getElementById('cityData');
            var seCity = myselect.options[myselect.selectedIndex].value;
            if (seCity === null || seCity === undefined || seCity === ''){
                return Feng.error('请选中一个省市');
            }
            cityIds.push(seCity);
            if (num > 0){
                for (let i = 1; i <= num; i++) {
                    var insSelect=document.getElementById('cityData'+i);
                    var inData = insSelect.options[insSelect.selectedIndex].value;
                    if (inData !== undefined || inData !== null ||  inData !== ''){
                        cityIds.push(inData);
                    }
                }
                cts = cityIds.join(',');
            }else {
                cts = cityIds
            }
        }
        const commaSeparatedString = this.goodsPicArray.join(',');
        var stores = "";
        if (company === '3'){
            console.log('3---this.storeIds',this.storeIds);
            if (TGoodsInfoDlg.storeIds.length === 0 ){
                return Feng.error('请至少选择一个门店');
            }
            stores = this.storeIds.join(',');
            console.log('stores--===--',stores)
        }
        let text  = TGoodsInfoDlg.editor.getContent();
        console.log(text)
        if(text==""){
            Feng.info("请输入兑换说明")
            return;
        }
        let sort = $("#sort").val()
        if(sort==''){
            Feng.info("请填写排序")
            return;
        }
        //提交信息
        var ajax = new $ax(Feng.ctxPath + "/tGoods/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.TPointProducts.table.refresh();
                TGoodsInfoDlg.close();
            }else{
                Feng.error(data.msg);
            }
        },function(data){
            Feng.error("添加失败!" + data.responseJSON.message + "!");
        });
        ajax.set("typeAll",typeAll);
        ajax.set("name",name);
        ajax.set("price",price);
        ajax.set("type",type);
        ajax.set("integral",integral);
        ajax.set("cash",cash);
        ajax.set("cover",cover1);
        ajax.set("imgOne",imgOne);
        ajax.set("userPopulation",userPopulation);
        ajax.set("quantityIssued",quantityIssued);
        ajax.set("pickUpQuantity",pickUpQuantity);
        ajax.set("startTime",startTime);
        ajax.set("useScope",company);
        ajax.set("cityIds",cts);
        ajax.set("storeIds",stores);
        ajax.set("text",text);
        ajax.set("sort",sort);
        ajax.set("cardType",document.querySelector('input[name="cardType"]:checked').value);
        ajax.start();
    }
}
/**
 * 删除图片的函数
 * @param e
 */
function delImg(e){
    $(e).parent().remove();
}
/**
 * 提交修改
 */
TGoodsInfoDlg.editSubmit = function() {
    let cover = $("#cover").val();
    let goodsId = $("#goodsId").val();
    var productImages = "";
    if (TGoodsInfoDlg.goodsPicArray.length > 0){
        productImages = TGoodsInfoDlg.goodsPicArray.join(',');
    }
    let quantityIssued = $("#quantityIssued").val();
    let pickUpQuantity = $("#pickUpQuantity").val();
    let editor = jQuery.trim(TGoodsInfoDlg.editor.getContent());
    console.log('editor:',editor)
    let sort = $("#sort").val();
    if (quantityIssued === undefined || quantityIssued === null || quantityIssued === ''){
        return Feng.error('发放数量不能为空!');
    }
    if (pickUpQuantity === undefined || pickUpQuantity === null || pickUpQuantity === ''){
        return Feng.error('限领数量不能为空!');
    }
    let quantityHas = $("#quantityHas").val();
    if (quantityIssued <= quantityHas){
        return Feng.error('发放数量小于已领数量!');
    }
    if (editor === undefined || editor === null || editor === ''){
        return Feng.error('兑换说明不能为空!');
    }
    if (sort === undefined || sort === null || sort === ''){
        return Feng.error('排序不能为空!');
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tGoods/update", function(data){
        Feng.success("修改成功!");
        window.parent.TPointProducts.table.refresh();
        TGoodsInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set("pointMerchandiseId",goodsId);
    ajax.set("quantityIssued",quantityIssued);
    ajax.set("pickUpQuantity",pickUpQuantity);
    ajax.set("redemptionInstructions",editor);
    ajax.set("cover",cover);
    ajax.set("productImages",productImages);
    ajax.set("sort",sort);
    ajax.start();
}
$(function() {
    getProvince(null);
    Feng.initValidator("carInfoForm", TGoodsInfoDlg.validateFields);
    // 初始化图片上传
    var carPhoto = new $WebUpload("cover");
    carPhoto.setUploadBarId("progressBar");
    carPhoto.init();
    var drivingLicensePhoto = new $WebUpload("drivingLicensePhoto");
    drivingLicensePhoto.setUploadBarId("progressBar");
    drivingLicensePhoto.init();
    var drivingLicensePhoto = new $WebUpload("drivingLicensePhoto");
    drivingLicensePhoto.setUploadBarId("progressBar");
    drivingLicensePhoto.init();
    TGoodsInfoDlg.editor = UE.getEditor('editor');
    TGoodsInfoDlg.editor1 = UE.getEditor('editor1');
});
/**
 * 选择分公司后执行
 */
TGoodsInfoDlg.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();
}
TGoodsInfoDlg.storeChange = function (e) {
    var oneId=$(e).val();
    var ajax = new $ax(Feng.ctxPath + "/tCity/storeChange", 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>";
            });
            $("#storeId").empty().append(content);
        }
    });
    ajax.set("oneId",oneId);
    ajax.start();
}
TGoodsInfoDlg.packageChange = function (e) {
    var oneId=$(e).val();
    var ajax = new $ax(Feng.ctxPath + "/tCity/packageChange", 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>";
            });
            $("#coursePackageId").empty().append(content);
        }
    });
    ajax.set("oneId",oneId);
    ajax.start();
}
TGoodsInfoDlg.timeChange = function (e) {
    var oneId=$(e).val();
    var ajax = new $ax(Feng.ctxPath + "/tCity/timeChange", 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.classHours+"</option>";
            });
            $("#coursePackageConfigId").empty().append(content);
        }
    });
    ajax.set("oneId",oneId);
    ajax.start();
}
/**
 * 类型改变执行
 * @param e
 */
TGoodsInfoDlg.companyTypeClick = function (e) {
    if (1 == e){
        $(".companyDiv").hide();
    } else if (2 == e){
        $(".companyDiv").show();
    }
}
/**
 * 车辆品牌改变时执行
 */
TGoodsInfoDlg.brandChange = function (e) {
    var carBrandId=$(e).val();
    var ajax = new $ax(Feng.ctxPath + "/tCar/brandChange", function(data){
        if(data!=null){
            if(language==1){
                var content='<option value="">选择车辆类型</option>';
            }else if(language==2){
                var content='<option value="">Please select the vehicle type</option>';
            }else {
                var content='<option value="">Pilih Jenis Kendaraan</option>';
            }
            $.each(data, function(k,v) {
                content += "<option value='"+v.id+"'>"+v.name+"</option>";
            });
            $("#carModelId").empty().append(content);
        }
    });
    ajax.set("carBrandId",carBrandId);
    ajax.start();
}
/**
 * 专车服务被点击
 */
TGoodsInfoDlg.zcServerClick = function () {
    var serverBox1 = $('#serverBox1').prop('checked');
    if (serverBox1){
        $("#zcModelDiv").show();
    } else {
        $("#zcModelDiv").hide();
    }
}
/**
 * 跨城服务被点击
 */
TGoodsInfoDlg.kcServerClick = function () {
    var serverBox3 = $('#serverBox3').prop('checked');
    if (serverBox3){
        $("#kcModelDiv").show();
    } else {
        $("#kcModelDiv").hide();
    }
}
cloud-server-management/src/main/webapp/static/modular/system/tGoodsAudit/tPay_info.js
New file
@@ -0,0 +1,102 @@
/**
 * 管理初始化
 */
var TPayInfo = {
    id: "TPayInfoTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1,
};
/**
 * 初始化表格的列
 */
TPayInfo.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
        {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '选择', field: '', visible: true, align: 'center', valign: 'middle'},
        {title: '姓名', field: 'name', visible: true, align: 'center', valign: 'middle'},
        {title: '联系方式', field: 'phone', visible: true, align: 'center', valign: 'middle'},
        {title: '使用状态', field: 'status', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row, index) {
                return {1: "未使用", 2: "已核销"}[value]
            }
        },
    ];
};
/**
 * 检查是否选中
 */
TPayInfo.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TPayInfo.seItem = selected[0];
        return true;
    }
};
/**
 * 核销操作
 * @constructor
 */
TPayInfo.WriteOff = function (){
    if (TPayInfo.check()) {
        if (TPayInfo.seItem.status === 2){
            return Feng.error("重复核销!");
        }
        var ajax = new $ax(Feng.ctxPath + "/tGoods/write_off", function (data) {
            Feng.success("核销成功!");
            TPayInfo.table.refresh();
        }, function (data) {
            Feng.error("核销失败!" + data.responseJSON.message + "!");
        });
        ajax.set("id",TPayInfo.seItem.id);
        ajax.start();
    }
}
/**
 * 关闭此对话框
 */
TPayInfo.close = function() {
    parent.layer.close(window.parent.TPointProducts.layerIndex);
}
/**
 * 查询列表
 */
TPayInfo.search = function () {
    var queryData = {};
    queryData['name'] = $("#name").val();
    queryData['phone'] = $("#phone").val();
    queryData['status'] = $("#status").val();
    queryData['id'] = $("#id").val();
    TPayInfo.table.refresh({query: queryData});
};
/**
 * 重置搜索
 */
TPayInfo.resetSearch = function () {
    $("#name").val('');
    $("#phone").val('');
    $("#status").val('');
    TPayInfo.search();
};
$(function () {
    let goodsId =  $("#id").val();
    var defaultColunms = TPayInfo.initColumn();
    var table = new BSTable(TPayInfo.id, "/tGoods/payList/"+goodsId, defaultColunms);
    table.setPaginationType("client");
    TPayInfo.table = table.init();
});
cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
@@ -7,10 +7,13 @@
import com.dsh.other.model.BannerVo;
import com.dsh.other.service.GameService;
import com.dsh.other.service.IBannerService;
import com.dsh.other.service.IRegionService;
import com.dsh.other.service.TGameConfigService;
import com.dsh.other.util.ResultUtil;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -18,6 +21,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * @author zhibing.pu
@@ -36,12 +40,51 @@
        return games;
    }
    @Autowired
    private IRegionService regionService;
    @ResponseBody
    @PostMapping("/save")
    public void save(@RequestBody Game game){
    public Integer save(@RequestBody Game game){
        Region city = regionService.getOne(new QueryWrapper<Region>().eq("code", game.getCityCode()));
        game.setCity(city.getName());
        Region province = regionService.getOne(new QueryWrapper<Region>().eq("code", game.getProvinceCode()));
        game.setProvince(province.getName());
        gameService.save(game);
         System.out.println("==========="+game);
         return  game.getId();
    }
    @Autowired
    private TGameConfigService config;
    @ResponseBody
    @PostMapping("/saveConfig")
    public void saveConfig(@RequestBody List<TGameConfig> gameConfigList){
        System.out.println("=======gameConfigList===="+gameConfigList);
        config.saveBatch(gameConfigList);
//        return  game.getId();
    }
    @ResponseBody
    @PostMapping("/queryGame")
    public Game queryGame(@RequestParam Integer id){
       return gameService.getById(id);
//        return  game.getId();
    }
    @ResponseBody
    @PostMapping("/listorder")
    public List<Map<String, Object>>  listorder(@RequestBody BookingQuery bookingQuery){
        return gameService.orderlist(bookingQuery);
//        return  game.getId();
    }
cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
New file
@@ -0,0 +1,265 @@
package com.dsh.other.controller;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.other.entity.TGame;
import com.dsh.other.entity.TGameConfig;
import com.dsh.other.entity.TGameRecord;
import com.dsh.other.feignclient.account.AppUserClient;
import com.dsh.other.feignclient.account.model.AppUser;
import com.dsh.other.model.QueryMySiteVo;
import com.dsh.other.service.TGameConfigService;
import com.dsh.other.service.TGameRecordService;
import com.dsh.other.service.TGameService;
import com.dsh.other.util.*;
import com.dsh.other.util.httpClinet.HttpResult;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
@RestController
@RequestMapping("/api/game")
public class GameController {
    @Autowired
    private TGameRecordService gameRecordService;
    @Autowired
    private TGameService gameService;
    @Autowired
    private TGameConfigService gameConfigService;
    @Autowired
    private TokenUtil tokenUtil;
    @Autowired
    private AppUserClient appUserClient;
    @Autowired
    private PayMoneyUtil payMoneyUtil;
    @ResponseBody
    @PostMapping("/queryGameList")
    @ApiOperation(value = "获取当前场地的游戏列表配置", tags = {"用户—游戏"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "siteId", name = "siteId", dataType = "int", required = true),
            @ApiImplicitParam(value = "storeId", name = "storeId", dataType = "int", required = true),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
    })
    public ResultUtil<List<TGameConfig>> queryGameList(Integer siteId, Integer storeId){
        try {
            List<TGameConfig> tGameConfigs = new ArrayList<>();
            List<TGame> list = gameService.list(new LambdaQueryWrapper<TGame>().eq(TGame::getSiteId, siteId).eq(TGame::getStoreId, storeId));
            if(list.size()>0){
                Integer id = list.get(0).getId();
                tGameConfigs = gameConfigService.list(new LambdaQueryWrapper<TGameConfig>().eq(TGameConfig::getOtherId, id));
            }
            return ResultUtil.success(tGameConfigs);
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
    @PostMapping("/payGame")
    @ApiOperation(value = "支付游戏", tags = {"用户—游戏"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "三方游戏id", name = "gameId", dataType = "int", required = true),
            @ApiImplicitParam(value = "游戏配置id", name = "configId", dataType = "int", required = true),
            @ApiImplicitParam(value = "sutuId", name = "sutuId", dataType = "int", required = true),
            @ApiImplicitParam(value = "spaceId", name = "spaceId", dataType = "int", required = true),
            @ApiImplicitParam(value = "1微信 2支付宝 3玩湃币", name = "type", dataType = "int", required = true),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
    })
    public ResultUtil payGame(Integer gameId, Integer configId,Integer type,Integer sutuId,Integer spaceId){
        try {
            Integer uid = tokenUtil.getUserIdFormRedis();
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
            TGameConfig config = gameConfigService.getById(configId);
            TGameRecord tGameRecord = new TGameRecord();
            tGameRecord.setGameId(gameId);
            tGameRecord.setPayType(type);
            tGameRecord.setUserId(uid);
            tGameRecord.setNumber(code);
            gameRecordService.save(tGameRecord);
            if(type==1){
                ResultUtil weixinpay = payMoneyUtil.weixinpay("游戏支付", "", code, config.getCash().toString(), "/base/course/weChatPaymentCourseCallback", "APP", "");
                if(weixinpay.getCode() == 200){
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                int num = 1;
                                int wait = 0;
                                while (num <= 10){
                                    int min = 5000;
                                    wait += (min * num);
                                    Thread.sleep(wait);
                                    List<TGameRecord> list = gameRecordService.list(new QueryWrapper<TGameRecord>().eq("code", code).eq("payType", 2));
                                    TGameRecord one = list.get(0);
                                    if(one.getStatus() == 1){
                                        break;
                                    }
                                    ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, "");
                                    if(resultUtil.getCode() == 200 && one.getStatus() == 0){
                                        /**
                                         * SUCCESS—支付成功,
                                         * REFUND—转入退款,
                                         * NOTPAY—未支付,
                                         * CLOSED—已关闭,
                                         * REVOKED—已撤销(刷卡支付),
                                         * USERPAYING--用户支付中,
                                         * PAYERROR--支付失败(其他原因,如银行返回失败)
                                         */
                                        Map<String, String> data1 = resultUtil.getData();
                                        String s = data1.get("trade_state");
                                        String transaction_id = data1.get("transaction_id");
                                        if("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10){
                                            break;
                                        }
                                        if("SUCCESS".equals(s)){
                                            for (TGameRecord coursePackagePayment : list) {
                                                coursePackagePayment.setStatus(1);
                                                coursePackagePayment.setOrderNo(transaction_id);
                                            }
                                            gameRecordService.updateBatchById(list);
                                            Integer integer = startGame(uid, gameId, spaceId, sutuId);
                                            break;
                                        }
                                        if("USERPAYING".equals(s)){
                                            num++;
                                        }
                                    }
                                }
                            }catch (Exception e){
                                e.printStackTrace();
                            }
                        }
                    }).start();
                }
                return weixinpay;
            }else if(type==2){
                ResultUtil alipay = payMoneyUtil.alipay("游戏支付", "游戏支付", "", code, config.getCash().toString(), "/base/course/aliPaymentCourseCallback");
                if(alipay.getCode() == 200){
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                int num = 1;
                                int wait = 0;
                                while (num <= 10){
                                    int min = 5000;
                                    wait += (min * num);
                                    Thread.sleep(wait);
                                    List<TGameRecord> list = gameRecordService.list(new QueryWrapper<TGameRecord>().eq("code", code).eq("payType", 3));
                                    TGameRecord one = list.get(0);
                                    if(one.getStatus() == 1){
                                        break;
                                    }
                                    ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code);
                                    if(resultUtil.getCode() == 200 && one.getStatus() == 0){
                                        /**
                                         * WAIT_BUYER_PAY(交易创建,等待买家付款)、
                                         * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
                                         * TRADE_SUCCESS(交易支付成功)、
                                         * TRADE_FINISHED(交易结束,不可退款)
                                         */
                                        Map<String, String> data1 = resultUtil.getData();
                                        String s = data1.get("tradeStatus");
                                        String tradeNo = data1.get("tradeNo");
                                        if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){
                                            break;
                                        }
                                        if("TRADE_SUCCESS".equals(s)){
                                            for (TGameRecord coursePackagePayment : list) {
                                                coursePackagePayment.setStatus(1);
                                                coursePackagePayment.setOrderNo(tradeNo);
                                            }
                                            gameRecordService.updateBatchById(list);
                                            Integer integer = startGame(uid, gameId, spaceId, sutuId);
                                            break;
                                        }
                                        if("WAIT_BUYER_PAY".equals(s)){
                                            num++;
                                        }
                                    }
                                }
                            }catch (Exception e){
                                e.printStackTrace();
                            }
                        }
                    }).start();
                }
                return alipay;
            }else if(type==3){
                AppUser appUser = appUserClient.queryAppUser(uid);
                Integer playPaiCoins = appUser.getPlayPaiCoins();
                BigDecimal playCoin = config.getPlayCoin();
                int i = playCoin.intValue();
                if(playPaiCoins<i){
                    return ResultUtil.error("玩湃币不足");
                }
                int i1 = playPaiCoins - i;
                appUser.setPlayPaiCoins(i1);
                appUserClient.updateAppUser(appUser);
                startGame(uid,gameId,spaceId,sutuId);
                return ResultUtil.success();
            }else {
                return ResultUtil.error("支付方式错误");
            }
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    private static Integer startGame(Integer uid,Integer gameId,Integer spaceId,Integer sutuId){
        HashMap<String, String> map = new HashMap<>();
        map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
        map.put("app_user_id",uid+"");
        map.put("game_id",gameId+"");
        map.put("space_id",spaceId+"");
        map.put("sutu_id",sutuId+"");
        String s = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/gameStart", map);
        JSONObject jsonObject = JSONObject.parseObject(s);
        Object code = jsonObject.get("code");
        if(String.valueOf(code)!=null && "200".equals(String.valueOf(code))){
            return 200;
        }else {
            return 500;
        }
    }
    public static void main(String[] args) {
        Integer integer = startGame(1, 13, 1001, 1001);
        System.out.println(integer);
    }
}
cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
@@ -1,5 +1,9 @@
package com.dsh.other.controller;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.other.entity.Site;
import com.dsh.other.entity.SiteBooking;
@@ -118,6 +122,33 @@
        }
    }
    /**
     * 添加场地管理
     * @return
     */
    @RequestMapping("/base/site/addSiteBooking")
    public Object addSiteBooking(@RequestBody SiteBooking siteBooking){
        if(siteBooking.getId()!= null ){
            return siteBookingService.updateById(siteBooking);
        }else {
            return siteBookingService.save(siteBooking);
        }
    }
    @RequestMapping("/base/site/listById")
    public Site listById(@RequestParam("id") Integer id){
        Site byId = siteService.getById(id);
        return byId;
    }
    @RequestMapping("/base/site/listBooks")
    public  List<SiteBooking> listBooks(@RequestParam("id") Integer id){
        List<SiteBooking> siteId = siteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id));
        return siteId;
    }
    @ResponseBody
    @PostMapping("/base/site/querySiteType")
    @ApiOperation(value = "获取场地类型", tags = {"用户—预约场地"})
@@ -320,16 +351,38 @@
            @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){
    public ResultUtil<Map<String,Object>> queryMySiteById(Integer id){
        try {
            HashMap<String, Object> map = new HashMap<>();
            SiteBooking byId = siteBookingService.getById(id);
            return ResultUtil.success(byId);
            List<Integer> ids = getIds(byId.getSiteId());
            map.put("data",byId);
            map.put("ids",ids);
            return ResultUtil.success(map);
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    public List<Integer>  getIds(Integer siteId) {
        HttpRequest httpRequest = HttpRequest.get("https://try.daowepark.com/v7/user_api/general/get_space_area?space_id=" + siteId);
        HttpResponse execute = httpRequest.execute();
        String body = execute.body();
        JSONObject jsonObject = JSONObject.parseObject(body);
        Object data = jsonObject.get("data");
        JSONArray array = JSONArray.parseArray(data.toString());
        List<Integer> ids =new ArrayList<>();
        for (Object o : array) {
            JSONObject jsonObject1 = JSONObject.parseObject(o.toString());
            Object id = jsonObject1.get("id");
            Integer integer = Integer.valueOf(id.toString());
            ids.add(integer);
        }
        return ids;
    }
    @ResponseBody
    @PostMapping("/api/site/cancelMySite")
cloud-server-other/src/main/java/com/dsh/other/controller/StoreConfigController.java
@@ -39,7 +39,7 @@
            return ResultUtil.paranErr("storeId");
        }
        try {
            List<StoreConfig> list = storeConfigService.list(new QueryWrapper<StoreConfig>().eq("storeId", storeId).orderByAsc("sort"));
            List<StoreConfig> list = storeConfigService.list(new QueryWrapper<StoreConfig>().eq("storeId", storeId).orderByAsc("sort").eq("isOpen",1));
            List<StoreConfigVo> listVo = new ArrayList<>();
            for (StoreConfig storeConfig : list) {
                StoreConfigVo storeConfigVo = new StoreConfigVo();
cloud-server-other/src/main/java/com/dsh/other/entity/BookingQuery.java
New file
@@ -0,0 +1,19 @@
package com.dsh.other.entity;
import lombok.Data;
@Data
public class BookingQuery {
    String provinceCode;
    String cityCode;
    String store;
    String peopleName;
    String phone;
    String date;
    Integer state;
    Integer payMethod;
}
cloud-server-other/src/main/java/com/dsh/other/entity/Game.java
@@ -20,6 +20,7 @@
    private Integer id;
    @TableField("operationId")
    private Integer operationId;
    @TableField(exist = false)
    private String operation;
    @TableField("province")
    private String province;
@@ -31,10 +32,11 @@
    private String cityCode;
    @TableField("storeId")
    private Integer storeId;
    @TableField(exist = false)
    private String store;
    @TableField("siteId")
    private Integer siteId;
    @TableField(exist = false)
    private String site;
    @TableField("blue")
cloud-server-other/src/main/java/com/dsh/other/entity/SiteBooking.java
@@ -176,4 +176,7 @@
    private String halfName;
    @TableField("goType")
    private Integer goType;
    @TableField("money")
    private String money;
}
cloud-server-other/src/main/java/com/dsh/other/entity/TGameConfig.java
@@ -61,6 +61,9 @@
     */
    @TableField("gameId")
    private Integer gameId;
    @TableField("otherId")
    private Integer otherId;
    @Override
cloud-server-other/src/main/java/com/dsh/other/entity/TGameRecord.java
New file
@@ -0,0 +1,65 @@
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-10-07
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_game_record")
public class TGameRecord extends Model<TGameRecord> {
    private static final long serialVersionUID=1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @TableField("userId")
    private Integer userId;
    @TableField("gameId")
    private Integer gameId;
    /**
     * 1玩湃币 2微信  3支付宝
     */
    @TableField("payType")
    private Integer payType;
    /**
     * 金额
     */
    private BigDecimal money;
    /**
     * 0待支付 1已支付
     */
    private Integer status;
    private String number;
    @TableField("orderNo")
    private String orderNo;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-other/src/main/java/com/dsh/other/entity/TStoreOtherConfigTrue.java
@@ -33,7 +33,8 @@
    /**
     * 图片
     */
    private String url;
    @TableField("url")
    private String backgroundImage;
    /**
     * 跳转模块
cloud-server-other/src/main/java/com/dsh/other/mapper/GameMapper.java
@@ -2,10 +2,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.other.entity.BallQueryDto;
import com.dsh.other.entity.BookingQuery;
import com.dsh.other.entity.Game;
import com.dsh.other.entity.Notice;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -18,4 +20,6 @@
public interface GameMapper extends BaseMapper<Game> {
    List<Game> queryAll(BallQueryDto ballQueryDto);
    List<Map<String, Object>> orderlist(BookingQuery bookingQuery);
}
cloud-server-other/src/main/java/com/dsh/other/mapper/TGameRecordMapper.java
New file
@@ -0,0 +1,17 @@
package com.dsh.other.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.other.entity.TGameRecord;
/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author administrator
 * @since 2023-10-07
 */
public interface TGameRecordMapper extends BaseMapper<TGameRecord> {
}
cloud-server-other/src/main/java/com/dsh/other/service/GameService.java
@@ -2,10 +2,12 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.other.entity.BallQueryDto;
import com.dsh.other.entity.BookingQuery;
import com.dsh.other.entity.Game;
import com.dsh.other.entity.Protocol;
import java.util.List;
import java.util.Map;
/**
 * @author zhibing.pu
@@ -13,4 +15,6 @@
 */
public interface GameService extends IService<Game> {
    List<Game> queryAll(BallQueryDto ballQueryDto);
    List<Map<String, Object>> orderlist(BookingQuery bookingQuery);
}
cloud-server-other/src/main/java/com/dsh/other/service/TGameRecordService.java
New file
@@ -0,0 +1,17 @@
package com.dsh.other.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.other.entity.TGameRecord;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author administrator
 * @since 2023-10-07
 */
public interface TGameRecordService extends IService<TGameRecord> {
}
cloud-server-other/src/main/java/com/dsh/other/service/impl/GameServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.other.entity.BallQueryDto;
import com.dsh.other.entity.BookingQuery;
import com.dsh.other.entity.Game;
import com.dsh.other.entity.Notice;
import com.dsh.other.mapper.GameMapper;
@@ -11,6 +12,7 @@
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -27,4 +29,9 @@
    public List<Game> queryAll(BallQueryDto ballQueryDto) {
        return this.baseMapper.queryAll(ballQueryDto);
    }
    @Override
    public List<Map<String, Object>> orderlist(BookingQuery bookingQuery) {
        return this.baseMapper.orderlist(bookingQuery);
    }
}
cloud-server-other/src/main/java/com/dsh/other/service/impl/TGameRecordServiceImpl.java
New file
@@ -0,0 +1,21 @@
package com.dsh.other.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.other.entity.TGameRecord;
import com.dsh.other.mapper.TGameRecordMapper;
import com.dsh.other.service.TGameRecordService;
import org.springframework.stereotype.Service;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author administrator
 * @since 2023-10-07
 */
@Service
public class TGameRecordServiceImpl extends ServiceImpl<TGameRecordMapper, TGameRecord> implements TGameRecordService {
}
cloud-server-other/src/main/java/com/dsh/other/util/HttpRequestUtil.java
New file
@@ -0,0 +1,254 @@
package com.dsh.other.util;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.util.Map;
public class HttpRequestUtil {
    public static String postRequest(String url, Map<String, String> params) {
        // 构造HttpClient的实例
        HttpClient httpClient = new HttpClient();
        // 创建POST方法的实例
        PostMethod postMethod = new PostMethod(url);
        // 设置请求头信息
        postMethod.setRequestHeader("Connection", "close");
        postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
        // 添加参数
        for (Map.Entry<String, String> entry : params.entrySet()) {
            postMethod.addParameter(entry.getKey(), entry.getValue());
        }
        // 使用系统提供的默认的恢复策略,设置请求重试处理,用的是默认的重试处理:请求三次
        httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false);
        // 接收处理结果
        String result = null;
        try {
            // 执行Http Post请求
            httpClient.executeMethod(postMethod);
            // 返回处理结果
            result = postMethod.getResponseBodyAsString();
        } catch (HttpException e) {
            // 发生致命的异常,可能是协议不对或者返回的内容有问题
            System.out.println("请检查输入的URL!");
            e.printStackTrace();
        } catch (IOException e) {
            // 发生网络异常
            System.out.println("发生网络异常!");
            e.printStackTrace();
        } finally {
            // 释放链接
            postMethod.releaseConnection();
            // 关闭HttpClient实例
            if (httpClient != null) {
                ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown();
                httpClient = null;
            }
        }
        return result;
    }
    public static String postRequest1(String url, Map<String, String> params,String appKey,String appSecret) {
        // 构造HttpClient的实例
        HttpClient httpClient = new HttpClient();
        // 创建POST方法的实例
        PostMethod postMethod = new PostMethod(url);
        // 设置请求头信息
        String nonce = String.valueOf(Double.valueOf(Math.random() * 1000000.0D).intValue());
        String timeMillis = String.valueOf(System.currentTimeMillis());
        String signature  = string2Sha1(appSecret + nonce + timeMillis);
        postMethod.setRequestHeader("Host", "api-cn.ronghub.com");
        postMethod.setRequestHeader("App-Key", appKey);
        postMethod.setRequestHeader("Signature", signature);
        postMethod.setRequestHeader("Nonce", nonce);
        postMethod.setRequestHeader("Timestamp", timeMillis);
        postMethod.setRequestHeader("Host", "api-cn.ronghub.com");
        postMethod.addRequestHeader("Content-Type", "application/json");
        // 添加参数
        for (Map.Entry<String, String> entry : params.entrySet()) {
            postMethod.addParameter(entry.getKey(), entry.getValue());
        }
        // 使用系统提供的默认的恢复策略,设置请求重试处理,用的是默认的重试处理:请求三次
        httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false);
        // 接收处理结果
        String result = null;
        try {
            // 执行Http Post请求
            httpClient.executeMethod(postMethod);
            // 返回处理结果
            result = postMethod.getResponseBodyAsString();
        } catch (HttpException e) {
            // 发生致命的异常,可能是协议不对或者返回的内容有问题
            System.out.println("请检查输入的URL!");
            e.printStackTrace();
        } catch (IOException e) {
            // 发生网络异常
            System.out.println("发生网络异常!");
            e.printStackTrace();
        } finally {
            // 释放链接
            postMethod.releaseConnection();
            // 关闭HttpClient实例
            if (httpClient != null) {
                ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown();
                httpClient = null;
            }
        }
        return result;
    }
    private static String string2Sha1(String str){
        if(str==null||str.length()==0){
            return null;
        }
        char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9',
                'a','b','c','d','e','f'};
        try {
            MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
            mdTemp.update(str.getBytes("UTF-8"));
            byte[] md = mdTemp.digest();
            int j = md.length;
            char buf[] = new char[j*2];
            int k = 0;
            for (int i = 0; i < j; i++) {
                byte byte0 = md[i];
                buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
                buf[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(buf);
        } catch (Exception e) {
            // TODO: handle exception
            return null;
        }
    }
    public static String getRequest(String url, Map<String, String> params) {
        // 构造HttpClient实例
        HttpClient client = new HttpClient();
        // 拼接参数
        String paramStr = "";
        for (String key : params.keySet()) {
            paramStr = paramStr + "&" + key + "=" + params.get(key);
        }
        paramStr = paramStr.substring(1);
        // 创建GET方法的实例
        GetMethod method = new GetMethod(url + "?" + paramStr);
        // 接收返回结果
        String result = null;
        try {
            // 执行HTTP GET方法请求
            client.executeMethod(method);
            // 返回处理结果
            result = method.getResponseBodyAsString();
        } catch (HttpException e) {
            // 发生致命的异常,可能是协议不对或者返回的内容有问题
            System.out.println("请检查输入的URL!");
            e.printStackTrace();
        } catch (IOException e) {
            // 发生网络异常
            System.out.println("发生网络异常!");
            e.printStackTrace();
        } finally {
            // 释放链接
            method.releaseConnection();
            // 关闭HttpClient实例
            if (client != null) {
                ((SimpleHttpConnectionManager) client
                        .getHttpConnectionManager()).shutdown();
                client = null;
            }
        }
        return result;
    }
    /**
     * 发送网络请求
     * @param url
     * @return
     */
    public static String sendNetRequest(String url, Map<String, String> params) {
        // 构造HttpClient实例
        HttpClient client = new HttpClient();
        String paramStr = "";
        for (String key : params.keySet()) {
            paramStr = paramStr + "&" + key + "=" + params.get(key);
        }
        paramStr = paramStr.substring(1);
        System.err.println(url + "?" + paramStr);
        // 创建GET方法的实例
        GetMethod method = new GetMethod(url + "?" + paramStr);
        // 接收返回结果
        String result = null;
        try {
            // 执行HTTP GET方法请求
            client.executeMethod(method);
            // 返回处理结果
            result = method.getResponseBodyAsString();
        } catch (HttpException e) {
            // 发生致命的异常,可能是协议不对或者返回的内容有问题
            System.out.println("请检查输入的URL!");
            e.printStackTrace();
        } catch (IOException e) {
            // 发生网络异常
            System.out.println("发生网络异常!");
            e.printStackTrace();
        } finally {
            // 释放链接
            method.releaseConnection();
            // 关闭HttpClient实例
            if (client != null) {
                ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown();
                client = null;
            }
        }
        return result;
    }
    /**
     * jsonp跨域请求数据响应<br/>
     * 方法名:responsejsonpData<br/>
     * @author:Mryang<br/>
     * @createTime:2016年7月31日-下午11:17:31 <br/>
     * @tel: 15198268054<br/>
     * @param request
     * @param response
     * @param map void<br/>
     * @exception <br/>
     * @since  1.0.0
     */
    public void responsejsonpData(HttpServletRequest request, HttpServletResponse response, Map<String, Object> map) {
         response.setCharacterEncoding("UTF-8");
         response.setHeader("Content-Type", "text/html;Charset=utf-8");
        try {
            PrintWriter writer = response.getWriter();
            String params = request.getParameter("callback");
            String json = JSONObject.toJSONString(map);
            writer.print(params+ "("+json+")");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
cloud-server-other/src/main/resources/mapper/GameMapper.xml
@@ -31,4 +31,15 @@
    </select>
    <select id="orderlist" resultType="map">
        SELECT *,st.`name` as storeName,si.`name` as siteName,CONCAT(DATE_FORMAT(bk.startTime, '%Y-%m-%d %H:%i:%s'), ' - ', TIME_FORMAT(bk.endTime, '%H:%i:%s')) AS timeRange
        FROM t_site_booking bk
                 LEFT JOIN t_store st on bk.storeId = st.id
                 LEFT JOIN t_site si on bk.siteId = si.id
    </select>
</mapper>
cloud-server-other/src/main/resources/mapper/TGameRecordMapper.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.TGameRecordMapper">
</mapper>
logs/mb-cloud-management/2023-10/debug.2023-10-07.0.log117386460201400.tmp
New file
@@ -0,0 +1,79 @@
2023-10-07 10:04:22,469 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@3234f74e, started on Sat Oct 07 08:49:39 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 10:05:53,995 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 10:04:33 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 10:07:24,264 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@38be305c, started on Sat Oct 07 10:06:03 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 10:22:23,717 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 10:07:28 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 10:24:10,440 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 10:22:45 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 10:26:19,281 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 10:24:14 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 10:30:41,568 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 10:26:26 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 10:31:52,915 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 10:30:48 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 10:34:33,275 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 10:31:58 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 10:57:27,183 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 10:34:36 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 10:58:13,976 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.other.BallClient.listorder] serviceId:[mb-cloud-other] message:[[500 Internal Server Error] during [POST] to [http://mb-cloud-other/listorder] [BallClient#listorder(BookingQuery)]: [{"code":"1","msg":"操作失败","data":null}]]
2023-10-07 10:58:18,246 [http-nio-5006-exec-3] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.other.BallClient.listorder] serviceId:[mb-cloud-other] message:[[500 Internal Server Error] during [POST] to [http://mb-cloud-other/listorder] [BallClient#listorder(BookingQuery)]: [{"code":"1","msg":"操作失败","data":null}]]
2023-10-07 10:58:33,368 [http-nio-5006-exec-4] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.other.BallClient.listorder] serviceId:[mb-cloud-other] message:[[500 Internal Server Error] during [POST] to [http://mb-cloud-other/listorder] [BallClient#listorder(BookingQuery)]: [{"code":"1","msg":"操作失败","data":null}]]
2023-10-07 10:59:02,597 [http-nio-5006-exec-5] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.other.BallClient.listorder] serviceId:[mb-cloud-other] message:[[500 Internal Server Error] during [POST] to [http://mb-cloud-other/listorder] [BallClient#listorder(BookingQuery)]: [{"code":"1","msg":"操作失败","data":null}]]
2023-10-07 10:59:51,368 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 10:57:35 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 15:22:05,394 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 10:59:58 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 15:23:50,215 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 15:22:13 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 15:25:10,547 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@38be305c, started on Sat Oct 07 15:23:54 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 15:26:33,318 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 15:25:14 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 15:28:17,566 [http-nio-5006-exec-5] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponExamineListOfSearch] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token
 at [Source: (PushbackInputStream); line: 1, column: 1]]
2023-10-07 15:29:23,546 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 15:26:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 15:32:36,756 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 15:29:27 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 15:36:12,483 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 15:32:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 15:39:18,640 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@38be305c, started on Sat Oct 07 15:36:16 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 16:02:56,756 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@38be305c, started on Sat Oct 07 15:39:23 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 16:05:01,636 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 16:03:03 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:11:18,273 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 16:05:05 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:14:10,192 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 16:11:22 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:14:31,810 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 16:14:13 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:17:02,515 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:14:35 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:17:18,494 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 16:17:06 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:18:40,704 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:17:22 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:19:44,311 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:18:44 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:21:49,158 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@3234f74e, started on Sat Oct 07 16:19:48 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:22:33,610 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@38be305c, started on Sat Oct 07 16:21:54 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 16:23:24,059 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 16:22:37 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:24:40,590 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 16:23:27 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:25:34,814 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:24:44 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:26:37,875 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:25:38 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:27:52,826 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 16:26:41 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:30:52,615 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:27:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:33:00,881 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:30:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:34:47,898 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 16:33:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:36:06,645 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:34:51 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:40:07,849 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:36:11 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:41:27,309 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:40:24 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 16:43:05,729 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:41:30 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:52:04,274 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@38be305c, started on Sat Oct 07 16:43:18 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 16:54:07,502 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:52:11 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:54:59,117 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 16:54:11 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 16:56:04,700 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:55:02 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 17:34:02,105 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 16:56:08 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 17:35:48,103 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 17:34:12 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 17:36:42,918 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 17:35:54 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 17:38:09,147 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 17:36:46 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 17:56:43,048 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@38be305c, started on Sat Oct 07 17:47:41 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 17:58:44,509 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.queryCoursePackageLists] serviceId:[mb-cloud-course] message:[Read timed out executing POST http://mb-cloud-course/coursePackage/queryCoursePackageLists]
2023-10-07 17:58:47,966 [http-nio-5006-exec-5] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.AppUserClient.queryWebUser] serviceId:[mb-cloud-account] message:[Read timed out executing POST http://mb-cloud-account/student/webStudentList]
2023-10-07 17:58:52,954 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 17:57:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 18:02:09,935 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 17:58:58 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:03:57,871 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@40e10ff8, started on Sat Oct 07 18:02:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 18:08:17,719 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 18:04:06 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:10:54,821 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@38be305c, started on Sat Oct 07 18:08:55 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 18:16:49,197 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@38be305c, started on Sat Oct 07 18:11:12 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 18:19:07,066 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@38be305c, started on Sat Oct 07 18:17:24 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 18:30:29,735 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 18:19:26 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:31:27,179 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 18:30:33 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:33:12,099 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 18:31:30 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:35:24,229 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 18:33:15 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:38:46,012 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 18:35:27 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:40:35,057 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@38be305c, started on Sat Oct 07 18:38:51 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@6e0f5f7f
2023-10-07 18:41:54,940 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 18:40:38 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:44:37,247 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 18:41:58 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:45:55,416 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 18:44:41 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:46:58,276 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 18:45:59 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:47:40,029 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@3234f74e, started on Sat Oct 07 18:47:02 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:48:15,963 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5ed731d0, started on Sat Oct 07 18:47:43 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709
2023-10-07 18:53:47,268 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@269f4bad, started on Sat Oct 07 18:48:19 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2805d709