luo
2023-09-23 6357f89bf38b83b779e233249c2b0e480b78e164
学员
59个文件已修改
2938 ■■■■ 已修改文件
.idea/modules.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/workspace.xml 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/resources/mapper/TStudentMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/resources/mapper/CouponMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java 405 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackagePaymentConfig.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/dto/ClassListDto.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/util/ResultUtil.java 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/pom.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/dto/ClassListDto.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackagePaymentConfig.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackage.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackagePayment.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/other/HistoryClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java 101 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java 324 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStudent.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord.html 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage.html 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackageStudent.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html 1102 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit_first.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord.js 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageStudent.js 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/GetHistoryDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/resources/mapper/BannerMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/modules.xml
@@ -4,7 +4,6 @@
    <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" />
      <module fileurl="file://$PROJECT_DIR$/cloud-server-parent/mb-cloud-parent.iml" filepath="$PROJECT_DIR$/cloud-server-parent/mb-cloud-parent.iml" />
    </modules>
  </component>
</project>
.idea/workspace.xml
@@ -23,43 +23,65 @@
  </component>
  <component name="ChangeListManager">
    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="9.15.1">
      <change afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/modules.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/pom.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackagePaymentConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackagePaymentConfig.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/entity/dto/ClassListDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/entity/dto/ClassListDto.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/util/ResultUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/util/ResultUtil.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/pom.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/dto/ClassListDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/dto/ClassListDto.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackagePaymentConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackagePaymentConfig.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackage.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackagePayment.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackagePayment.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/HistoryClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/HistoryClient.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ITStudentService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/ITStudentService.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStudentServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TStudentServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ResultUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/ResultUtil.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudent.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudent.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStudent.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStudent.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackageStudent.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackageStudent.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tStudent/tStudent.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tStudent/tStudent.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit_first.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit_first.html" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageStudent.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageStudent.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/GetHistoryDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/GetHistoryDto.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/BannerMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/BannerMapper.xml" afterDir="false" />
    </list>
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -97,48 +119,52 @@
    <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",
    "WebServerToolWindowFactoryState": "false",
    "git-widget-placeholder": "master",
    "ignore.virus.scanning.warn.message": "true",
    "last_opened_file_path": "D:/ttt/java/PlayPai/cloud-server-other/src/main/resources/mapper",
    "node.js.detected.package.eslint": "true",
    "node.js.detected.package.tslint": "true",
    "node.js.selected.package.eslint": "(autodetect)",
    "node.js.selected.package.tslint": "(autodetect)",
    "project.structure.last.edited": "模块",
    "project.structure.proportion": "0.15",
    "project.structure.side.proportion": "0.54367816",
    "spring.configuration.checksum": "7fb6c6ffe49cf7315145a28a96be3d8f",
    "vue.rearranger.settings.migration": "true"
  <component name="PropertiesComponent">{
  &quot;keyToString&quot;: {
    &quot;DefaultHtmlFileTemplate&quot;: &quot;HTML File&quot;,
    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
    &quot;git-widget-placeholder&quot;: &quot;master&quot;,
    &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
    &quot;last_opened_file_path&quot;: &quot;D:/JavaTool/PlayPai1/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent&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;settings.editor.selected.configurable&quot;: &quot;MavenSettings&quot;,
    &quot;spring.configuration.checksum&quot;: &quot;b0c8222ba40624e179f539b98c2e8cad&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:\ttt\java\PlayPai\cloud-server-other\src\main\resources\mapper" />
      <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\WEB-INF\view\system\tStudent" />
      <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\webapp\static" />
      <recent name="D:\ttt\java\PlayPai\cloud-server-parent" />
      <recent name="D:\ttt\java\PlayPai\cloud-server-management\src\main\resources\mapper" />
      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\WEB-INF\view\system\tStudent" />
      <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\static\modular\system\tCoupon" />
      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\WEB-INF\view\system\coursePackage" />
      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\WEB-INF\view\system" />
    </key>
    <key name="MoveFile.RECENT_KEYS">
      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tStudent" />
      <recent name="D:\JavaTool\PlayPai1\cloud-server-parent" />
      <recent name="D:\ttt\java\PlayPai\cloud-server-parent" />
    </key>
    <key name="CopyClassDialog.RECENTS_KEY">
      <recent name="com.dsh.course.entity.dto" />
      <recent name="com.dsh.course.feignClient.other" />
      <recent name="com.dsh.course.dto" />
      <recent name="com.dsh.account.dto" />
      <recent name="com.dsh.course.mapper" />
      <recent name="com.dsh.course.service.impl" />
      <recent name="com.dsh.course.service" />
      <recent name="com.dsh.course.entity" />
      <recent name="com.dsh.course.entity.dto" />
    </key>
  </component>
  <component name="RunDashboard">
@@ -148,7 +174,20 @@
      </set>
    </option>
  </component>
  <component name="RunManager" selected="Spring Boot.AuthApplication">
  <component name="RunManager" selected="Spring Boot.ManagementApplication">
    <configuration name="BigDecimalToChineseWords" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
      <option name="MAIN_CLASS_NAME" value="com.dsh.guns.modular.system.util.BigDecimalToChineseWords" />
      <module name="mb-cloud-management" />
      <extension name="coverage">
        <pattern>
          <option name="PATTERN" value="com.dsh.guns.modular.system.util.*" />
          <option name="ENABLED" value="true" />
        </pattern>
      </extension>
      <method v="2">
        <option name="Make" enabled="true" />
      </method>
    </configuration>
    <configuration name="AccountApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
      <module name="mb-cloud-account" />
      <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" />
@@ -234,15 +273,21 @@
    </configuration>
    <list>
      <item itemvalue="Spring Boot.GatewayApplication" />
      <item itemvalue="Spring Boot.UserApplication" />
      <item itemvalue="Spring Boot.AccountApplication" />
      <item itemvalue="Spring Boot.ManagementApplication" />
      <item itemvalue="Spring Boot.CourseApplication" />
      <item itemvalue="Spring Boot.OtherApplication" />
      <item itemvalue="Spring Boot.UserApplication" />
      <item itemvalue="Spring Boot.AuthApplication" />
      <item itemvalue="Spring Boot.ActivityApplication" />
      <item itemvalue="Spring Boot.CourseApplication" />
      <item itemvalue="Spring Boot.CompetitionApplication" />
      <item itemvalue="应用程序.BigDecimalToChineseWords" />
    </list>
    <recent_temporary>
      <list>
        <item itemvalue="应用程序.BigDecimalToChineseWords" />
      </list>
    </recent_temporary>
  </component>
  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
  <component name="SvnConfiguration">
@@ -268,6 +313,20 @@
      <workItem from="1694826468892" duration="22165000" />
      <workItem from="1694931109193" duration="31686000" />
      <workItem from="1695084815207" duration="29663000" />
      <workItem from="1695138476053" duration="63000" />
      <workItem from="1695138628399" duration="396000" />
      <workItem from="1695139199151" duration="117000" />
      <workItem from="1695139544607" duration="173000" />
      <workItem from="1695139722530" duration="14000" />
      <workItem from="1695139741242" duration="4527000" />
      <workItem from="1695162059666" duration="1120000" />
      <workItem from="1695163191288" duration="585000" />
      <workItem from="1695170647169" duration="6776000" />
      <workItem from="1695178072108" duration="30661000" />
      <workItem from="1695250896481" duration="445000" />
      <workItem from="1695255303249" duration="37521000" />
      <workItem from="1695342171677" duration="37810000" />
      <workItem from="1695430054273" duration="24288000" />
    </task>
    <task id="LOCAL-00001" summary="后台代码删除">
      <created>1690249807612</created>
@@ -407,6 +466,10 @@
      </breakpoints>
    </breakpoint-manager>
  </component>
  <component name="XSLT-Support.FileAssociations.UIState">
    <expand />
    <select />
  </component>
  <component name="masterDetails">
    <states>
      <state key="ArtifactsStructureConfigurable.UI">
cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java
@@ -1,24 +1,23 @@
package com.dsh.account.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.account.dto.CreateHistoryDto;
import com.dsh.account.dto.GetHistoryDto;
import com.dsh.account.dto.StudentSearch;
import com.dsh.account.dto.TStudentDto;
import com.dsh.account.dto.*;
import com.dsh.account.entity.GiftSearchDto;
import com.dsh.account.entity.TStudent;
import com.dsh.account.feignclient.course.CoursePaymentClient;
import com.dsh.account.feignclient.course.model.TCoursePackagePayment;
import com.dsh.account.model.StudentVo;
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 io.micrometer.core.instrument.search.Search;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jdk.nashorn.internal.ir.annotations.Ignore;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.swagger2.mappers.ModelMapper;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@@ -133,6 +132,8 @@
    }
    /**
     * 根据名称模糊搜索学员
     * @param name
@@ -188,4 +189,32 @@
        return getHistoryDtos;
    }
    @Resource
    private CoursePaymentClient paymentClient;
    @ResponseBody
    @PostMapping("/student/giftSelect")
    public  List<SelectDto> giftSelect(@RequestBody GiftSearchDto giftSearchDto){
        System.out.println("======giftSelect=========giftSearchDto===="+giftSearchDto);
//       Integer appId = studentService.getGiftSelect(giftSearchDto);
        TCoursePackagePayment coursePackagePaymentById = paymentClient.getCoursePackagePaymentById(giftSearchDto.getId());
//        System.out.println("=======giftSelect======appId====>"+appId);
        List<TStudent> selectDtos =  studentService.list(new QueryWrapper<TStudent>()
                .select("name, id")
                .eq("state", 1)
                .eq("name", giftSearchDto.getName()).eq("phone",giftSearchDto.getPhone()).ne("appUserId",coursePackagePaymentById.getAppUserId()));
        List<SelectDto> list = new ArrayList<>();
        for (TStudent student : selectDtos) {
            SelectDto selectDto = new SelectDto();
            selectDto.setValue(student.getName());
            selectDto.setId(student.getId());
            list.add(selectDto);
        }
        System.out.println("=======giftSelect======selectDtos====>"+list);
        return list;
    }
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
@@ -48,6 +48,10 @@
    @PostMapping("/base/coursePack/delPaymentCoursePackage")
    public boolean delPaymentCoursePackage(@RequestBody Integer payId);
    @PostMapping("/base/coursePack/getCoursePackagePaymentById")
    public TCoursePackagePayment getCoursePackagePaymentById(@RequestBody Integer id);
    @PostMapping("/base/coursePack/updatePaymentCoursePackage")
    void updatePaymentCoursePackage(@RequestBody TCoursePackagePayment coursePackagePayment);
cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java
@@ -1,10 +1,8 @@
package com.dsh.account.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.account.dto.CreateHistoryDto;
import com.dsh.account.dto.GetHistoryDto;
import com.dsh.account.dto.StudentSearch;
import com.dsh.account.dto.TStudentDto;
import com.dsh.account.dto.*;
import com.dsh.account.entity.GiftSearchDto;
import com.dsh.account.entity.TStudent;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -30,4 +28,8 @@
    void createHistory(@Param("createHistoryDto") CreateHistoryDto createHistoryDto);
    List<GetHistoryDto> getHistory();
    Integer getGiftSelect(@Param("giftSearchDto")GiftSearchDto giftSearchDto);
}
cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java
@@ -1,10 +1,8 @@
package com.dsh.account.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.account.dto.CreateHistoryDto;
import com.dsh.account.dto.GetHistoryDto;
import com.dsh.account.dto.StudentSearch;
import com.dsh.account.dto.TStudentDto;
import com.dsh.account.dto.*;
import com.dsh.account.entity.GiftSearchDto;
import com.dsh.account.entity.TStudent;
import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
import com.dsh.account.feignclient.course.model.RecordAppoint;
@@ -113,4 +111,7 @@
    void createHistory(CreateHistoryDto createHistoryDto);
    List<GetHistoryDto> getHistory();
    Integer getGiftSelect(GiftSearchDto giftSearchDto);
}
cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
@@ -3,14 +3,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.account.dto.CreateHistoryDto;
import com.dsh.account.dto.GetHistoryDto;
import com.dsh.account.dto.StudentSearch;
import com.dsh.account.dto.TStudentDto;
import com.dsh.account.entity.Coach;
import com.dsh.account.entity.TAppUser;
import com.dsh.account.entity.TCourseInfoRecord;
import com.dsh.account.entity.TStudent;
import com.dsh.account.dto.*;
import com.dsh.account.entity.*;
import com.dsh.account.feignclient.activity.IntroduceRewardsClient;
import com.dsh.account.feignclient.activity.UserConponClient;
import com.dsh.account.feignclient.activity.model.IntrduceOfUserRequest;
@@ -836,5 +830,12 @@
        return this.baseMapper.getHistory();
    }
    @Override
    public Integer getGiftSelect(GiftSearchDto giftSearchDto) {
        return this.baseMapper.getGiftSelect(giftSearchDto);
    }
}
cloud-server-account/src/main/resources/mapper/TStudentMapper.xml
@@ -70,4 +70,11 @@
    </select>
    <select id="getGiftSelect" resultType="java.lang.Integer">
            SELECT appUserId FROM t_student
            WHERE name = #{giftSearchDto.name}
              AND phone = #{giftSearchDto.phone}
    </select>
</mapper>
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponListOfSearch.java
@@ -22,5 +22,8 @@
    private Integer state;
    private Page<Map<String, Object>> page;
    private String cityCode;
    private Integer storeId;
}
cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java
@@ -28,7 +28,11 @@
                                                      @Param("userPopulation")Integer userPopulation,
                                                      @Param("status")Integer status,
                                                      @Param("state")Integer state,
                                                      @Param("page")Page<Map<String, Object>> page);
                                                      @Param("page")Page<Map<String, Object>> page,
                                                      @Param("cityCode") String cityCode,
                                                      @Param("storeId")Integer storeId
                                                      );
    List<Map<String, Object>> queryCouponExamineList(@Param("name")String name,
                                                     @Param("type")Integer type,
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
@@ -105,7 +105,7 @@
    @Override
    public List<Map<String, Object>> queryCouponListOfSearch(CouponListOfSearch ofSearch) {
        return this.baseMapper.queryCouponListOfSearch(ofSearch.getName(),ofSearch.getType(),ofSearch.getDistributionMethod(),ofSearch.getUserPopulation(),ofSearch.getStatus(),ofSearch.getState(),ofSearch.getPage());
        return this.baseMapper.queryCouponListOfSearch(ofSearch.getName(),ofSearch.getType(),ofSearch.getDistributionMethod(),ofSearch.getUserPopulation(),ofSearch.getStatus(),ofSearch.getState(),ofSearch.getPage(),ofSearch.getCityCode(),ofSearch.getStoreId());
    }
    @Override
cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
@@ -31,6 +31,19 @@
        illustrate
        from t_coupon
        where 1 = 1
        <if test="cityCode != null">
           and id in(
            SELECT DISTINCT couponId FROM
            (SELECT DISTINCT couponId
            from t_coupon_store
            WHERE storeId = #{storeId}
            UNION ALL
            SELECT DISTINCT couponId
            from t_coupon_city
            WHERE provinceCode = #{cityCode}) o)
        </if>
        <if test="name != null">
            and `name` like concat('%', #{name}, '%')
        </if>
cloud-server-course/pom.xml
@@ -113,6 +113,12 @@
            <artifactId>alipay-sdk-java</artifactId>
            <version>4.8.10.ALL</version>
        </dependency>
        <dependency>
            <groupId>com.huaweicloud</groupId>
            <artifactId>esdk-obs-java-bundle</artifactId>
            <version>3.23.5</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <build>
cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java
@@ -7,6 +7,7 @@
import com.dsh.course.feignclient.model.GetStuSessionList;
import com.dsh.course.feignclient.model.PurchaseRecordVo;
import com.dsh.course.service.CancelledClassesService;
import com.dsh.course.service.CourseCounsumService;
import com.dsh.course.service.TCoursePackagePaymentService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,7 +23,6 @@
@RestController
@RequestMapping("")
public class CancelSourceController {
    @Autowired
    private CancelledClassesService caceService;
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -5,6 +5,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.entity.*;
import com.dsh.course.feignclient.account.AppUserClient;
@@ -30,6 +31,7 @@
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
@@ -933,6 +935,11 @@
                .eq("code",code));
    }
    @PostMapping("/base/coursePack/getCoursePackagePaymentById")
    public TCoursePackagePayment getCoursePackagePaymentById(@RequestBody Integer id){
        return packagePaymentService.getById(id);
    }
    @PostMapping("/base/coursePack/delPaymentCoursePackage")
    public boolean delPaymentCoursePackage(@RequestBody Integer payId){
        return packagePaymentService.removeById(payId);
@@ -1055,6 +1062,16 @@
    }
    @ResponseBody
    @PostMapping("/coursePackagePayment/CountqueryByClassId")
   public   Integer  CountqueryByClassId(@RequestBody Integer id){
        int coursePackageId = packagePaymentService.count(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", id));
        return coursePackageId;
    }
    /**
     * 修改数据
     * @param coursePackagePayment
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -4,23 +4,30 @@
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsh.course.entity.StudentClassInfo;
import com.dsh.course.entity.TCoursePackagePayment;
import com.dsh.course.entity.dto.ClassListDto;
import com.dsh.course.entity.dto.SelectDto;
import com.dsh.course.entity.dto.updateTimeDto;
import com.dsh.course.entity.*;
import com.dsh.course.entity.dto.*;
import com.dsh.course.feignclient.account.AppUserClient;
import com.dsh.course.service.CoursePackageStudentService;
import com.dsh.course.service.TCoursePackagePaymentService;
import com.dsh.course.feignclient.account.StudentClient;
import com.dsh.course.feignclient.account.model.Student;
import com.dsh.course.model.dto.ToClassDto;
import com.dsh.course.service.*;
import com.dsh.course.util.ResultUtil;
import com.dsh.course.util.UUIDUtil;
import io.swagger.annotations.Api;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.swing.text.html.parser.Entity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Api
@CrossOrigin
@@ -43,12 +50,13 @@
//        Date maxDate = studentService.getMaxDate(tStudentId);
        Date minDate = studentService.getMinDate(tStudentId);
        System.out.println("===========>"+studentClassInfo);
        Integer totalHours = studentClassInfo.getTotalHours();
        Integer hasHours = studentClassInfo.getRestHours();
        Integer restHours = totalHours-hasHours;
        studentClassInfo.setHasHours(restHours);
        studentClassInfo.setInDate(minDate);
        System.out.println("===========>"+studentClassInfo);
        return studentClassInfo;
    }
    //获取学员课程列表
@@ -57,6 +65,9 @@
    public List<ClassListDto> listClass(@RequestParam("tStudentId")Integer tStudentId) {
        System.out.println("==========getClassList===tStudentId===="+tStudentId);
    List<ClassListDto> listDtos = studentService.getClassList(tStudentId);
    for (ClassListDto dto : listDtos){
        dto.setHasClassHours(dto.getTotalClassHours()-dto.getLaveClassHours());
    }
    System.out.println("======listDtos======"+listDtos);
    return  listDtos;
@@ -105,4 +116,382 @@
    }
    //根据payid获取对应门店的常规课程
    @Autowired
    private  TCoursePackageService packageService;
    @RequestMapping("/holiSelect")
    @ResponseBody
    public List<SelectDto> getHoliSelect(@RequestParam("courseId")Integer id){
        TCoursePackage byId = packageService.getById(id);
        Integer storeId = byId.getStoreId();
        List<TCoursePackage> list = packageService.list(new QueryWrapper<TCoursePackage>()
                .select("id", "name")
                .eq("storeId", storeId)
                .eq("type","2")
        );
        List<SelectDto> selectDtos = new ArrayList<>();
        for (TCoursePackage t :list){
            SelectDto selectDto = new SelectDto();
            selectDto.setId(t.getId());
            selectDto.setValue(t.getName());
            selectDtos.add(selectDto);
        }
        return selectDtos;
    }
    @RequestMapping("/transSelect")
    @ResponseBody
    public List<SelectDto> getTransSelect(@RequestParam("courseId")Integer id){
        TCoursePackage byId = packageService.getById(id);
        Integer storeId = byId.getStoreId();
        List<TCoursePackage> list = packageService.list(new QueryWrapper<TCoursePackage>()
                .select("id", "name")
                .eq("storeId", storeId)
                .eq("type","1")
        );
        List<SelectDto> selectDtos = new ArrayList<>();
        for (TCoursePackage t :list){
            SelectDto selectDto = new SelectDto();
            selectDto.setId(t.getId());
            selectDto.setValue(t.getName());
            selectDtos.add(selectDto);
        }
        return selectDtos;
    }
    @Autowired
    private CourseCounsumService counsumService;
    @RequestMapping("/queryCounsum")
    @ResponseBody
    public List<CourseCounsum> queryCounsum(@RequestBody ConsumeQuery consumeQuery){
        System.out.println("======queryCounsum==========="+consumeQuery);
        QueryWrapper<CourseCounsum> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("paymentId",consumeQuery.getPayId());
        if (consumeQuery.getChangeType()!=null){
            queryWrapper.eq("changeType", consumeQuery.getChangeType());
        }
        if (consumeQuery.getStart()!=null){
            queryWrapper.between("insertTime", consumeQuery.getStart(), consumeQuery.getEnd());
        }
        if (consumeQuery.getReason()!=null&&consumeQuery.getReason()!=""){
            queryWrapper.like("reason", consumeQuery.getReason());
        }
        List<CourseCounsum> list = counsumService.list(queryWrapper);
//        List<CourseCounsum> list = counsumService.list(new QueryWrapper<CourseCounsum>().eq("paymentId", consumeQuery.getPayId()).eq("changeType", consumeQuery.getChangeType()).between("insertTime", consumeQuery.getStart(), consumeQuery.getEnd()).like("reason", consumeQuery.getReason()));
        return list;
    }
    @RequestMapping("/insertBack")
    @ResponseBody
    public void insertBack(@RequestBody InsertBackDto insertBackDto){
        MoneyBack moneyBack = new MoneyBack();
        moneyBack.setStudentId(insertBackDto.getId());
        moneyBack.setStatus(0);
        moneyBack.setInsertTime(new Date());
        moneyBack.setIds(insertBackDto.getIds());
        moneyBackService.save(moneyBack);
    }
    @RequestMapping("/queryByIds")
    @ResponseBody
    public List<TCoursePackagePayment> queryByIds(@RequestParam("ids")String ids){
        List<TCoursePackagePayment> paymentList = paymentService.list(new QueryWrapper<TCoursePackagePayment>()
                .in("id", Arrays.asList(ids.split(","))));
        System.out.println("========client==>"+paymentList);
        return paymentList;
    }
    @RequestMapping("/changeStatus")
    @ResponseBody
    public void changeStatus(@RequestParam("id")Integer id){
        MoneyBack byId = moneyBackService.getById(id);
        byId.setStatus(1);
        moneyBackService.updateById(byId);
    }
    @RequestMapping("/zeroClass")
    @ResponseBody
    public void zeroClass(@RequestParam("id")Integer id){
        MoneyBack byId = moneyBackService.getById(id);
        String[] split = byId.getIds().split(",");
        System.out.println("========split===>"+split);
        List<TCoursePackagePayment> id1 = paymentService.list(new QueryWrapper<TCoursePackagePayment>().in("id", split));
        for (TCoursePackagePayment o :id1){
            o.setTotalClassHours(0);
            o.setLaveClassHours(0);
            o.setAppUserId(null);
        }
        paymentService.updateBatchById(id1);
    }
    @RequestMapping("/cancel")
    @ResponseBody
    public void cancel(@RequestParam("ids")String ids){
        String[] split = ids.split(",");
        List<CoursePackageStudent> coursePackagePaymentId = studentService.list(new QueryWrapper<CoursePackageStudent>().in("coursePackagePaymentId", split));
      for (CoursePackageStudent student :coursePackagePaymentId){
          student.setReservationStatus(2);
          student.setAppUserId(null);
      }
        studentService.updateBatchById(coursePackagePaymentId);
    }
    @Autowired
    private MoneyBackService moneyBackService;
    @RequestMapping("/getMoneyBack")
    @ResponseBody
    public List<MoneyBack> getMoneyBack(@RequestParam("tStudentId")Integer tStudentId){
        List<MoneyBack> moneyBacksck = moneyBackService.list(new QueryWrapper<MoneyBack>().eq("studentId", tStudentId));
        return moneyBacksck;
    }
    //课程转移
    @RequestMapping("/toClass")
    @ResponseBody
    public void toClass(@RequestBody ToClassDto toClassDto){
        System.out.println("===========到达getSelect======="+toClassDto);
        TCoursePackagePayment orinPay = paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", toClassDto.getId()));
        TCoursePackagePayment studentPay = paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId",orinPay.getCoursePackageId()));
        if (studentPay!=null) {
            System.out.println("======orinPay=====>" + orinPay);
            System.out.println("======studentPay=====>" + studentPay);
            Integer laveClassHours = orinPay.getLaveClassHours();
            Integer totalClassHours = orinPay.getTotalClassHours();
            orinPay.setTotalClassHours(0);
            orinPay.setLaveClassHours(0);
            orinPay.setAppUserId(null);
            paymentService.updateById(orinPay);
            CourseCounsum courseCounsum = new CourseCounsum();
            courseCounsum.setInsertTime(new Date());
            courseCounsum.setReason("转课");
            courseCounsum.setNum(laveClassHours);
            courseCounsum.setChangeType(0);
            courseCounsum.setPaymentId(orinPay.getId());
            counsumService.save(courseCounsum);
            Integer laveClassHours1 = studentPay.getLaveClassHours();
            Integer totalClassHours1 = studentPay.getTotalClassHours();
            int total = totalClassHours + totalClassHours1;
            int lave = laveClassHours + laveClassHours1;
            studentPay.setAppUserId(null);
            studentPay.setLaveClassHours(lave);
            studentPay.setTotalClassHours(total);
            paymentService.updateById(studentPay);
            CourseCounsum courseCounsum1 = new CourseCounsum();
            courseCounsum1.setInsertTime(new Date());
            courseCounsum1.setReason("转课");
            courseCounsum1.setNum(laveClassHours);
            courseCounsum1.setChangeType(1);
            courseCounsum1.setPaymentId(studentPay.getId());
            counsumService.save(courseCounsum1);
        }else {
            orinPay.setTotalClassHours(0);
            orinPay.setLaveClassHours(0);
            orinPay.setAppUserId(null);
            paymentService.updateById(orinPay);
            CourseCounsum courseCounsum = new CourseCounsum();
            courseCounsum.setInsertTime(new Date());
            courseCounsum.setReason("赠课");
            courseCounsum.setNum(orinPay.getLaveClassHours());
            courseCounsum.setChangeType(0);
            courseCounsum.setPaymentId(orinPay.getId());
            counsumService.save(courseCounsum);
            Student student = studentClient.queryStudentById(toClassDto.getToStudentId());
            TCoursePackagePayment to = new TCoursePackagePayment();
            to.setStudentId(toClassDto.getToStudentId());
            to.setTotalClassHours(orinPay.getTotalClassHours());
            to.setLaveClassHours(orinPay.getLaveClassHours());
            to.setCoursePackageId(orinPay.getCoursePackageId());
            to.setState(1);
            to.setAppUserId(student.getAppUserId());
            to.setPayStatus(2);
            to.setStatus(1);
            to.setInsertTime(new Date());
            paymentService.save(to);
            CourseCounsum courseCounsum1 = new CourseCounsum();
            courseCounsum1.setInsertTime(new Date());
            courseCounsum1.setReason("赠课");
            courseCounsum1.setNum(orinPay.getLaveClassHours());
            courseCounsum1.setChangeType(1);
            courseCounsum1.setPaymentId(to.getId());
            counsumService.save(courseCounsum);
        }
    }
    @Resource
    private StudentClient studentClient;
    @RequestMapping(value = "/toHoli",produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    @ResponseBody
    public String toHoli(@RequestBody ToHoliDto toHoliDto){
        String [] ids = toHoliDto.getIds();
        List<String> strings = new ArrayList<>();
        for (String id : ids){
            //扣除课时
            TCoursePackagePayment payment = paymentService.getById(id);
            System.out.println("=====byId========="+payment);
            Integer laveClassHours = payment.getLaveClassHours();
            Integer classNum = toHoliDto.getClassNum();
            Integer totalClassHours = payment.getTotalClassHours();
            Student student = studentClient.queryStudentById(payment.getStudentId());
            if (laveClassHours < classNum){
                strings.add(student.getName()); continue;
            }
            Integer laveClassHoursnew = laveClassHours - classNum;
            Integer totalClassHoursnew = totalClassHours - classNum;
            payment.setLaveClassHours(laveClassHoursnew);
            payment.setTotalClassHours(totalClassHoursnew);
            payment.setAppUserId(null);
            paymentService.updateById(payment);
            //获取student信息
            //新增课时
            TCoursePackagePayment holi = new TCoursePackagePayment();
            holi.setAppUserId(student.getAppUserId());
            holi.setStudentId(student.getId());
            holi.setCoursePackageId(toHoliDto.getClassId());
            holi.setTotalClassHours(toHoliDto.getClassNum());
            holi.setLaveClassHours(toHoliDto.getClassNum());
            holi.setState(1);
            holi.setInsertTime(new Date());
            paymentService.save(holi);
            System.out.println("保存成功=============》="+holi);
        }
        String[] stringArray = strings.toArray(new String[strings.size()]);
        String join = StringUtils.join(stringArray, ",");
    System.out.println("==========join========"+join);
        return join;
    }
    @RequestMapping(value = "/toTrans",produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    @ResponseBody
    public String toTrans(@RequestBody ToHoliDto toHoliDto){
        String [] ids = toHoliDto.getIds();
        List<String> strings = new ArrayList<>();
        for (String id : ids){
            //扣除课时
            TCoursePackagePayment payment = paymentService.getById(id);
            System.out.println("=====byId========="+payment);
            Integer laveClassHours = payment.getLaveClassHours();
            Integer classNum = toHoliDto.getClassNum();
            Integer totalClassHours = payment.getTotalClassHours();
            Student student = studentClient.queryStudentById(payment.getStudentId());
//            if (laveClassHours < classNum){
//                strings.add(student.getName()); continue;
//            }
//
//            Integer laveClassHoursnew = laveClassHours - classNum;
//            Integer totalClassHoursnew = totalClassHours - classNum;
            payment.setLaveClassHours(0);
            payment.setTotalClassHours(0);
            payment.setAppUserId(null);
            paymentService.updateById(payment);
            //获取student信息
            //新增课时
            TCoursePackagePayment holi = new TCoursePackagePayment();
            holi.setAppUserId(student.getAppUserId());
            holi.setStudentId(student.getId());
            holi.setCoursePackageId(toHoliDto.getClassId());
            holi.setTotalClassHours(laveClassHours);
            holi.setLaveClassHours(laveClassHours);
            holi.setState(1);
            holi.setInsertTime(new Date());
            paymentService.save(holi);
            System.out.println("保存成功=============》="+holi);
        }
        String[] stringArray = strings.toArray(new String[strings.size()]);
        String join = StringUtils.join(stringArray, ",");
        System.out.println("==========join========"+join);
        return "转课成功";
    }
}
cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackagePaymentConfig.java
@@ -40,4 +40,5 @@
    private Integer playPaiCoin;
    @TableField("couponIds")
    private String couponIds;
}
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.dsh.course.service.CourseCounsumService;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -25,6 +26,8 @@
@Accessors(chain = true)
@TableName("t_course_package")
public class TCoursePackage extends Model<TCoursePackage>{
    private static final long serialVersionUID = 1L;
@@ -83,6 +86,9 @@
     */
    @TableField("maxSubscribeNumber")
    private Integer maxSubscribeNumber;
    @TableField("codeTime")
    private Integer codeTime;
    /**
     * 上课开始时间
     */
cloud-server-course/src/main/java/com/dsh/course/entity/dto/ClassListDto.java
@@ -1,15 +1,19 @@
package com.dsh.course.entity.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.models.auth.In;
import lombok.Data;
import java.util.Date;
@Data
public class ClassListDto {
    private Integer id;
    private Long id;
    private String className;
    private String classType;
    private Integer classType;
    private Date insertTime;
cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java
@@ -44,6 +44,9 @@
    @PostMapping("/base/coursePack/getPaymentCoursePackage")
    public TCoursePackagePayment getCoursePackagePaymentByCode(@RequestBody String payId);
    @PostMapping("/base/coursePack/getCoursePackagePaymentById")
    public TCoursePackagePayment getCoursePackagePaymentById(@RequestBody Integer id);
    @PostMapping("/base/coursePack/delPaymentCoursePackage")
    public boolean delPaymentCoursePackage(@RequestBody Integer payId);
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java
@@ -47,4 +47,6 @@
    @PostMapping("/appUser/getSelects")
    List<SelectDto> getSelects(List<Integer> studentIds);
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java
@@ -1,6 +1,7 @@
package com.dsh.course.feignclient.account;
import com.dsh.course.feignclient.account.model.Student;
import io.swagger.models.auth.In;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@@ -39,4 +40,7 @@
     */
    @PostMapping("/student/queryStudentListByName")
    List<Student> queryStudentListByName(String name);
}
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -1219,50 +1219,70 @@
            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = sdf1.parse(sdf.format(new Date()) + " 00:00:00");
            List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";"));
            String classStartTime = coursePackage.getClassStartTime();
            String[] split = classStartTime.split(":");
            String classEndTime = coursePackage.getClassEndTime();
            String[] split1 = classEndTime.split(":");
            Calendar s = Calendar.getInstance();
            s.setTime(date);
            s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
            s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
            s.set(Calendar.MINUTE, Integer.valueOf(split[1]));
            s.set(Calendar.SECOND, 0);
            String value = coursePackage.getClassStartTime();
            String value1 = coursePackage.getClassEndTime();
            Calendar e = Calendar.getInstance();
            e.setTime(date);
            e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 13);
            long timeInMillis = e.getTimeInMillis();
            String[] star = value.split(",");
            String[] end = value1.split(",");
            while (true){
                int w = s.get(Calendar.DAY_OF_WEEK);
                WeekEnum weekEnum = WeekEnum.getWeekEnum(w);
                if(list.contains(weekEnum.getChineseName())){
                    Calendar classDate = Calendar.getInstance();
                    classDate.setTime(s.getTime());
                    classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
                    classDate.set(Calendar.MINUTE, Integer.valueOf(split[1]));
                    classDate.set(Calendar.SECOND, 0);
            for (int i = 0; i < star.length; i++) {
                    Calendar endDate = Calendar.getInstance();
                    endDate.setTime(s.getTime());
                    endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
                    endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
                    endDate.set(Calendar.SECOND, 0);
                    CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                    coursePackageScheduling.setCoursePackageId(coursePackage.getId());
                    coursePackageScheduling.setClassDate(classDate.getTime());
                    coursePackageScheduling.setEndDate(endDate.getTime());
                    coursePackageScheduling.setStatus(1);
                    coursePackageSchedulingService.save(coursePackageScheduling);
                }
//                int index = star[i].indexOf(",");
//
//
//                String result = value.substring(0, index).trim();
                String classStartTime = star[i];
                String[] split = classStartTime.split(":");
//            String value1 = en;
                int index1 = value1.indexOf(",");
//                String result1 = value.substring(0, index1).trim();
                String classEndTime = end[i];
                String[] split1 = classEndTime.split(":");
                Calendar s = Calendar.getInstance();
                s.setTime(date);
                s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
                if(s.getTimeInMillis() > timeInMillis){
                    break;
                s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
                s.set(Calendar.MINUTE, Integer.valueOf(split[1]));
                s.set(Calendar.SECOND, 0);
                Calendar e = Calendar.getInstance();
                e.setTime(date);
                e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 13);
                long timeInMillis = e.getTimeInMillis();
                while (true){
                    int w = s.get(Calendar.DAY_OF_WEEK);
                    WeekEnum weekEnum = WeekEnum.getWeekEnum(w);
                    if(list.contains(weekEnum.getChineseName())){
                        Calendar classDate = Calendar.getInstance();
                        classDate.setTime(s.getTime());
                        classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
                        classDate.set(Calendar.MINUTE, Integer.valueOf(split[1]));
                        classDate.set(Calendar.SECOND, 0);
                        Calendar endDate = Calendar.getInstance();
                        endDate.setTime(s.getTime());
                        endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
                        endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
                        endDate.set(Calendar.SECOND, 0);
                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                        coursePackageScheduling.setCoursePackageId(coursePackage.getId());
                        coursePackageScheduling.setClassDate(classDate.getTime());
                        coursePackageScheduling.setEndDate(endDate.getTime());
                        coursePackageScheduling.setStatus(1);
                        coursePackageSchedulingService.save(coursePackageScheduling);
                    }
                    s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
                    if(s.getTimeInMillis() > timeInMillis){
                        break;
                    }
                }
            }
            return coursePackage.getId();
        }catch (Exception e){
            e.printStackTrace();
cloud-server-course/src/main/java/com/dsh/course/util/ResultUtil.java
@@ -1,13 +1,8 @@
package com.dsh.course.util;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
 * 定义统一返回对象
 */
@ApiModel(value = "统一返回结果集")
public class ResultUtil<T> {
    public static final Integer SUCCESS = 200;
@@ -18,24 +13,22 @@
    public static final Integer ERROR = 500;
    public static final Integer TOKEN_ERROR = 600;
    public static final String Token = "Token失效";
    public static final Integer SIGN_ERROR = 700;
    private Integer status;//状态码
    public static final String Token = "TOKEN_INVALID";
    public static final String SIGN = "SIGN_INVALID";
    @ApiModelProperty(name = "code", value = "业务状态码 200:成功,300:参数错误,400:运行异常,500:其他异常, 600:token无效,需重新登录,700:签名无效")
    private Integer code;//备用状态码
    @ApiModelProperty(name = "msg", value = "返回结果说明")
    private String msg;//返回说明
    @ApiModelProperty(name = "data", value = "返回结果值")
    private T data;//返回数据
    private String str;//存储单个字符串值
    public Integer getStatus() {
        return status;
    }
    public String getMsg() {
        return msg;
@@ -45,29 +38,53 @@
        return data;
    }
    public String getStr() {
        return str;
    }
    public Integer getCode() {
        return code;
    }
    private ResultUtil(Integer code, String msg) {
    public ResultUtil(Integer status, Integer code, String msg) {
        this.status = status;
        this.code = code;
        this.msg = msg;
    }
    private ResultUtil(Integer code, String msg, T data) {
    private ResultUtil(Integer status, Integer code, String msg, T data) {
        this.status = status;
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
    public static <T> ResultUtil<T> getResult(Integer code, String msg){
        return new ResultUtil<>(code, msg);
    public ResultUtil(Integer status, Integer code, String msg, T data, String str) {
        this.status = status;
        this.code = code;
        this.msg = msg;
        this.data = data;
        this.str = str;
    }
    public static <T> ResultUtil<T> getResult(Integer code, String msg, T data){
        return new ResultUtil<>(code, msg, data);
    private ResultUtil(Integer status, Integer code, String msg, String str) {
        this.status = status;
        this.code = code;
        this.msg = msg;
        this.str = str;
    }
    public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg){
        return new ResultUtil<>(status, code, msg);
    }
    public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg, T data){
        return new ResultUtil<>(status, code, msg, data);
    }
    public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg, T data, String str){
        return new ResultUtil<>(status, code, msg, data, str);
    }
    /**
@@ -75,7 +92,7 @@
     * @return
     */
    public static ResultUtil error(String mag){
        return ResultUtil.getResult(ResultUtil.ERROR, mag, new JSONObject());
        return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, mag);
    }
    /**
@@ -83,7 +100,7 @@
     * @return
     */
    public static <T> ResultUtil <T> error(String mag, T obj){
        return ResultUtil.getResult(ResultUtil.ERROR, mag, obj);
        return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, mag, obj);
    }
    /**
@@ -91,7 +108,7 @@
     * @return
     */
    public static ResultUtil tokenErr(){
        return ResultUtil.getResult(ResultUtil.TOKEN_ERROR, ResultUtil.Token, new JSONObject());
        return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, ResultUtil.Token);
    }
    /**
@@ -99,15 +116,15 @@
     * @return
     */
    public static ResultUtil tokenErr(String msg){
        return ResultUtil.getResult(ResultUtil.TOKEN_ERROR, msg, new JSONObject());
        return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, msg);
    }
    /**
     * 参数异常
     * @return
     */
    public static  ResultUtil paranErr(String ages){
        return ResultUtil.getResult(ResultUtil.PARAM_ERROR, "【" + ages + "】参数异常", new JSONObject());
    public static  ResultUtil paranErr(){
        return ResultUtil.getResult(ResultUtil.PARAM_ERROR, ResultUtil.PARAM_ERROR, "参数异常");
    }
    /**
@@ -115,16 +132,15 @@
     * @return
     */
    public static <T> ResultUtil<T> paranErr(T data){
        return ResultUtil.getResult(ResultUtil.PARAM_ERROR, "PARAM_ERROR", data);
        return ResultUtil.getResult(ResultUtil.PARAM_ERROR, ResultUtil.PARAM_ERROR, "参数异常", data);
    }
    /**
     * 运行异常
     * @return
     */
    public static ResultUtil runErr(){
        return ResultUtil.getResult(ResultUtil.RUNTIME_ERROR, "SYSTEM_RUN_ERROR", new JSONObject());
        return ResultUtil.getResult(ResultUtil.RUNTIME_ERROR, ResultUtil.RUNTIME_ERROR, "服务器运行异常");
    }
@@ -133,15 +149,7 @@
     * @return
     */
    public static <T>ResultUtil<T> runErr(T data){
        return ResultUtil.getResult(ResultUtil.RUNTIME_ERROR, "SYSTEM_RUN_ERROR", data);
    }
    /**
     * 运行异常
     * @return
     */
    public static <T>ResultUtil<T> runErr(T data, String msg){
        return ResultUtil.getResult(ResultUtil.RUNTIME_ERROR, msg, data);
        return ResultUtil.getResult(ResultUtil.RUNTIME_ERROR, ResultUtil.RUNTIME_ERROR, "服务器运行异常", data);
    }
@@ -151,7 +159,7 @@
     * @return
     */
    public static ResultUtil success(){
        return ResultUtil.getResult(ResultUtil.SUCCESS, "SUCCESS", new JSONObject());
        return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功");
    }
@@ -162,28 +170,26 @@
     * @return
     */
    public static <T> ResultUtil<T> success(T data){
        return ResultUtil.getResult(ResultUtil.SUCCESS, "SUCCESS", data);
        return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功", data);
    }
    /**
     * 返回成功
     * @param msg
     * @param data
     * @param str
     * @param <T>
     * @return
     */
    public static <T> ResultUtil<T> success(String msg, T data){
        return ResultUtil.getResult(ResultUtil.SUCCESS, msg, data);
    public static <T> ResultUtil<T> success(T data, String str){
        return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功", data, str);
    }
    public static <T> ResultUtil<T> success(String msg, T data){
        return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, msg, data);
    }
    /**
     * 签名无效
     * @param <T>
     * @return
     */
    public static <T> ResultUtil<T> sign(){
        return ResultUtil.getResult(ResultUtil.SIGN_ERROR, SIGN);
    public static <T> ResultUtil<T> success(String msg, T data, String str){
        return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, msg, data, str);
    }
}
cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
@@ -46,11 +46,11 @@
        SELECT
            *,
            pg.NAME AS className,
            ty.`name` AS classType
            pg.`type` AS classType
        FROM
            t_course_package_payment py
                LEFT JOIN t_course_package pg ON py.coursePackageId = pg.id
                LEFT JOIN t_course_package_type ty ON pg.type = ty.id
        <where>
            <if test="null != tStudentId">
cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -131,7 +131,11 @@
            SELECT appUserId
            FROM t_course_package_payment
            WHERE id = #{id}
        ) AND id != #{id};
        ) AND id != #{id} and coursePackageId=(
                 SELECT coursePackageId
            FROM t_course_package_payment
            WHERE id = #{id}
                )
    </select>
cloud-server-management/pom.xml
@@ -210,6 +210,19 @@
            <version>2.3.1</version>
        </dependency>
        <!-- itext7html转pdf  -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>html2pdf</artifactId>
            <version>3.0.2</version>
        </dependency>
        <!-- 中文字体支持 -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>font-asian</artifactId>
            <version>7.1.13</version>
        </dependency>
    </dependencies>
    <build>
@@ -267,6 +280,8 @@
            <url>http://maven.magic-beans.cn/nexus/content/repositories/thirdparty/</url>
        </repository>
    </repositories>
cloud-server-management/src/main/java/com/dsh/course/dto/ClassListDto.java
@@ -1,15 +1,19 @@
package com.dsh.course.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.util.Date;
@Data
public class ClassListDto {
    private Integer id;
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    private String className;
    private String classType;
    private Integer classType;
    private Date insertTime;
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/AppUserClient.java
@@ -10,6 +10,8 @@
import com.dsh.course.feignClient.account.model.QueryByNamePhone;
import com.dsh.course.feignClient.account.model.TAppUser;
import com.dsh.guns.modular.system.model.TStudent;
import com.dsh.guns.modular.system.model.dto.GiftSearchDto;
import com.dsh.guns.modular.system.model.dto.SelectDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -57,4 +59,6 @@
    @PostMapping("/student/getHisory")
    List<GetHistoryDto> getHisory();
    @PostMapping("/student/giftSelect")
    List<SelectDto> giftSelect(@RequestBody GiftSearchDto giftSearchDto);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/CouponListOfSearch.java
@@ -22,5 +22,7 @@
    private Integer state;
    private Page<Map<String, Object>> page;
    private String cityCode;
    private Integer storeId;
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
@@ -50,4 +50,8 @@
     */
    @PostMapping("/coursePackagePayment/editCoursePackagePayment")
    void editCoursePackagePayment(TCoursePackagePayment coursePackagePayment);
    @PostMapping("/coursePackagePayment/CountqueryByClassId")
    Integer queryByClassId(Integer id);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java
@@ -2,9 +2,20 @@
import com.dsh.course.dto.ClassListDto;
import com.dsh.course.dto.updateTimeDto;
import com.dsh.course.feignClient.course.model.TCoursePackagePayment;
import com.dsh.course.model.MoneyBack;
import com.dsh.course.model.dto.InsertBackDto;
import com.dsh.course.model.dto.StudentClassInfo;
import com.dsh.guns.modular.system.model.CourseCounsum;
import com.dsh.guns.modular.system.model.dto.ConsumeQuery;
import com.dsh.guns.modular.system.model.dto.SelectDto;
import com.dsh.guns.modular.system.model.dto.ToClassDto;
import com.dsh.guns.modular.system.model.dto.ToHoliDto;
import com.dsh.guns.modular.system.util.ResultUtil;
import io.swagger.models.auth.In;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
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;
@@ -59,4 +70,49 @@
     */
    @RequestMapping("/courdent/getSelect")
    List<SelectDto> getSelect(@RequestParam("payId") Integer payId);
    /**
     * 转移课程
     * @param toClassDto
     * @return
     */
    @RequestMapping("/courdent/toClass")
    void toClass(@RequestBody ToClassDto toClassDto);
    //获取常规假期课下拉框
    @RequestMapping("/courdent/holiSelect")
    List<SelectDto> getGiftSelect(@RequestParam("courseId") Integer paymentId);
    @RequestMapping("/courdent/transSelect")
    List<SelectDto> getTransSelect(@RequestParam("courseId") Integer paymentId);
    @RequestMapping(value = "/courdent/toHoli",produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String toHoli(@RequestBody ToHoliDto toHoliDto);
    @RequestMapping(value = "/courdent/toTrans",produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    String toTrans(@RequestBody ToHoliDto toHoliDto);
    @RequestMapping("/courdent/queryByIds")
    List<TCoursePackagePayment> queryByIds(@RequestParam("ids")String ids);
    @RequestMapping("/courdent/queryCounsum")
    List<CourseCounsum> queryCounsum( @RequestBody ConsumeQuery consumeQuery);
    @RequestMapping("/courdent/getMoneyBack")
    List<MoneyBack> getMoneyBack(@RequestParam("tStudentId")Integer tStudentId);
    @PostMapping("/courdent/insertBack")
    void insertBack(@RequestBody InsertBackDto insertBackDto);
    @RequestMapping("/courdent/changeStatus")
    void changeStatus(@RequestParam("id")Integer id);
    @RequestMapping("/courdent/cancel")
    void cancel(@RequestParam("ids")String ids);
    @RequestMapping("/courdent/zeroClass")
    void zeroClass(@RequestParam("id")Integer id);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackagePaymentConfig.java
@@ -32,4 +32,5 @@
     * 玩湃币价格
     */
    private Integer playPaiCoin;
    private String couponIds;
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackage.java
@@ -63,6 +63,9 @@
     * 最多预约人数
     */
    private Integer maxSubscribeNumber;
    private Integer codeTime;
    /**
     * 上课开始时间
     */
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/TCoursePackagePayment.java
@@ -124,4 +124,15 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date insertTime;
    //课包单价
    private BigDecimal onePrice;
    //已学课时
    private Integer hasHours;
    private BigDecimal restPrice;
    private  String name;
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/other/HistoryClient.java
@@ -3,6 +3,8 @@
import com.dsh.course.dto.CreateHistoryDto;
import com.dsh.course.dto.GetHistoryDto;
import com.dsh.guns.modular.system.model.Store;
import com.dsh.guns.modular.system.model.dto.GiftSearchDto;
import com.dsh.guns.modular.system.model.dto.SelectDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -26,4 +28,6 @@
    @PostMapping("/class/gethisotory")
    List<GetHistoryDto> getHisory(@RequestBody Integer studentId);
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java
@@ -224,6 +224,26 @@
        ofSearch.setState(state);
        return client.getCouponListOfSearch(ofSearch);
    }
    /**
     * 获取 优惠券管理
     */
    @RequestMapping(value = "/list1")
    @ResponseBody
    public Object listOfDatas1(String name, Integer type, Integer distributionMethod , Integer userPopulation, Integer status, Integer state,String cityCode,Integer storeId) {
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        CouponListOfSearch ofSearch = new CouponListOfSearch();
        ofSearch.setPage(page);
        ofSearch.setName(name);
        ofSearch.setType(type);
        ofSearch.setDistributionMethod(distributionMethod);
        ofSearch.setUserPopulation(userPopulation);
        ofSearch.setStatus(status);
        ofSearch.setState(state);
        ofSearch.setCityCode(cityCode);
        ofSearch.setStoreId(storeId);
        return client.getCouponListOfSearch(ofSearch);
    }
    @RequestMapping(value = "/listRecord")
    @ResponseBody
    public Object listRecord(Integer id,String name, Integer type, String phone) {
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
@@ -1,16 +1,15 @@
package com.dsh.guns.modular.system.controller.code;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.feignClient.account.CityManagerClient;
import com.dsh.course.feignClient.account.CoachClient;
import com.dsh.course.feignClient.account.model.CityManager;
import com.dsh.course.feignClient.account.model.Coach;
import com.dsh.course.feignClient.course.CoursePackageClient;
import com.dsh.course.feignClient.course.CoursePackageDiscountClient;
import com.dsh.course.feignClient.course.CoursePackagePaymentConfigClient;
import com.dsh.course.feignClient.course.CoursePackageTypeClient;
import com.dsh.course.feignClient.course.*;
import com.dsh.course.feignClient.course.model.*;
import com.dsh.guns.config.UserExt;
import com.dsh.guns.core.base.controller.BaseController;
@@ -21,13 +20,11 @@
import com.dsh.guns.modular.system.service.IStoreService;
import com.dsh.guns.modular.system.service.ITSiteService;
import com.dsh.guns.modular.system.util.ResultUtil;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
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.*;
import javax.annotation.Resource;
import java.util.*;
@@ -102,7 +99,7 @@
     * @return
     */
    @GetMapping("/openAddCoursePackage")
    public String openAddCoursePackage(Model model){
    public String openAddCoursePackage(Model model,Integer type){
        Integer objectType = UserExt.getUser().getObjectType();
        Integer objectId = UserExt.getUser().getObjectId();
        List<TCoursePackageType> tCoursePackageTypes = coursePackageTypeClient.queryAllCoursePackageType();
@@ -125,6 +122,11 @@
        model.addAttribute("site", list3);
        List<Coach> coaches = coachClient.queryCoachByCity(code1);
        model.addAttribute("coach", coaches);
//        System.out.println("========type========"+type);
//        if (type ==1){
//            return PREFIX + "coursePackage_edit.html";
//        }
        return PREFIX + "coursePackage_add.html";
    }
@@ -170,11 +172,17 @@
        List<Coach> coaches = coachClient.queryCoachByCity(cityCode);
        model.addAttribute("coach", coaches);
        List<CoursePackagePaymentConfig> list4 = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id);
        System.out.println("========couponIds=========>"+list4.get(0).getCouponIds());
        model.addAttribute("couponIds", list4.get(0).getCouponIds());
        model.addAttribute("coursePackagePaymentConfig", list4.remove(0));
        model.addAttribute("coursePackagePaymentConfigs", list4);
        CoursePackagePaymentConfig coursePackagePaymentConfig = list4.get(0);
        model.addAttribute("cashPayment", coursePackagePaymentConfig.getCashPayment() == 0 ? false : true);
        model.addAttribute("playPaiCoin", coursePackagePaymentConfig.getPlayPaiCoin() == 0 ? false : true);
//        if (list4.size()!=0) {
            model.addAttribute("cashPayment", coursePackagePaymentConfig.getCashPayment() == 0 ? false : true);
            model.addAttribute("playPaiCoin", coursePackagePaymentConfig.getPlayPaiCoin() == 0 ? false : true);
            System.out.println("=========coursePackagePaymentConfig=============>" + coursePackagePaymentConfig);
//        model.addAttribute("couponIds", "3,2");
//        }
        return PREFIX + "coursePackage_edit.html";
    }
@@ -225,6 +233,7 @@
        CoursePackagePaymentConfig coursePackagePaymentConfig = list4.get(0);
        model.addAttribute("cashPayment", coursePackagePaymentConfig.getCashPayment() == 0 ? false : true);
        model.addAttribute("playPaiCoin", coursePackagePaymentConfig.getPlayPaiCoin() == 0 ? false : true);
//        model.addAttribute("couponIds", coursePackagePaymentConfig.getCouponIds());
        return PREFIX + "coursePackage_info.html";
    }
@@ -272,6 +281,27 @@
     * @param id
     * @return
     */
    @GetMapping("/conpun/{id}")
    public String conpun(@PathVariable Integer id,Model model){
        model.addAttribute("index",id);
        return PREFIX + "TCoupon.html";
    }
    @GetMapping("/conpun1/{id}")
    public String conpun1(Model model,@PathVariable Integer id,String conpunids){
        System.out.println("=====model=======conpunids======"+conpunids);
        model.addAttribute("index",id);
        model.addAttribute("conpund",conpunids);
        return PREFIX + "TCouponEdit.html";
    }
    /**
     * 跳转到优惠卷选择表页
     * @param model
     * @param id
     * @return
     */
    @GetMapping("/registrationRecord")
    public String registrationRecord(Model model, Integer id){
        TCoursePackage tCoursePackage = coursePackageService.queryById(id);
@@ -279,6 +309,9 @@
        return PREFIX + "registrationRecord.html";
    }
    @Resource
    @Autowired CoursePackagePaymentClient packagePaymentClient;
    /**
     * 跳转到上课记录列表页
@@ -289,11 +322,25 @@
    @GetMapping("/openClassRecord")
    public String openClassRecord(Model model, Integer id){
        TCoursePackage tCoursePackage = coursePackageClient.queryById(id);
        String[] start = tCoursePackage.getClassStartTime().split(",");
        String[] end = tCoursePackage.getClassEndTime().split(",");
        Integer counts = packagePaymentClient.queryByClassId(id);
        List<String> strings = new ArrayList<>();
        for (int i = 0; i <start.length ; i++) {
            String outTime = start[i] +"-" +end[0];
            strings.add(outTime);
        }
        TStore store = storeService.getById(tCoursePackage.getStoreId());
        Coach coach = coachClient.queryCoachById(tCoursePackage.getCoachId());
        model.addAttribute("item", tCoursePackage);
        model.addAttribute("store", store);
        model.addAttribute("coach", coach);
        model.addAttribute("times", strings);
        model.addAttribute("counts", counts);
        return PREFIX + "classRecord.html";
    }
@@ -486,11 +533,33 @@
    @PostMapping("/addCoursePackage")
    public ResultUtil addCoursePackage(TCoursePackage coursePackage, String coursePackagePaymentConfig){
        String classStartTime = coursePackage.getClassStartTime();
        String classEndTime = coursePackage.getClassEndTime();
        classStartTime = classStartTime.substring(0, classStartTime.lastIndexOf(":"));
        classEndTime = classEndTime.substring(0, classEndTime.lastIndexOf(":"));
        coursePackage.setClassStartTime(classStartTime);
        coursePackage.setClassEndTime(classEndTime);
//        String classEndTime = coursePackage.getClassEndTime();
        System.out.println("=======getClassStartTime============"+classStartTime);
        String startTime = coursePackage.getClassStartTime();
        JSONArray jsonArray = JSON.parseArray(startTime);
        System.out.println("=======jsonArray==========="+jsonArray);
            List<String> first = new ArrayList<>();
            List<String> second = new ArrayList<>();
        for (int i = 0; i < jsonArray.size(); i++) {
//            JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i));
            String jsonString = jsonArray.getString(i);
            String[] split = jsonString.split("-");
            first.add(split[0]);
            second.add(split[1]);
        }
        String firstString = String.join(",",first);
        String secondString = String.join(",",second);
        System.out.println("=========firstString========>"+firstString);
        System.out.println("=========secondString========>"+secondString);
 //        classStartTime = classStartTime.substring(0, classStartTime.lastIndexOf(":"));
//        classEndTime = classEndTime.substring(0, classEndTime.lastIndexOf(":"));
        coursePackage.setClassStartTime(firstString);
        coursePackage.setClassEndTime(secondString);
        coursePackage.setAuditStatus(1);
        coursePackage.setStatus(1);
        coursePackage.setState(1);
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
@@ -3,24 +3,42 @@
import com.dsh.course.dto.*;
import com.dsh.course.feignClient.account.AppUserClient;
import com.dsh.course.feignClient.account.model.TAppUser;
import com.dsh.course.feignClient.course.CoursePackageClient;
import com.dsh.course.feignClient.course.CourseStuddentClient;
import com.dsh.course.feignClient.course.model.TCoursePackage;
import com.dsh.course.feignClient.course.model.TCoursePackagePayment;
import com.dsh.course.feignClient.other.HistoryClient;
import com.dsh.course.model.MoneyBack;
import com.dsh.course.model.dto.InsertBackDto;
import com.dsh.course.model.dto.StudentClassInfo;
import com.dsh.course.util.ChineseMoneyUtils;
import com.dsh.course.util.HtmlToPdfUtils;
import com.dsh.guns.config.UserExt;
import com.dsh.guns.core.base.controller.BaseController;
import com.dsh.guns.modular.system.model.CourseCounsum;
import com.dsh.guns.modular.system.model.TStudent;
import com.dsh.guns.modular.system.model.User;
import com.dsh.guns.modular.system.model.dto.SelectDto;
import com.dsh.guns.modular.system.model.dto.*;
import com.dsh.guns.modular.system.service.ITStudentService;
import com.dsh.guns.modular.system.util.BigDecimalToChineseAmountUtil;
import com.dsh.guns.modular.system.util.ResultUtil;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;
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.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -50,8 +68,51 @@
    @RequestMapping("download")
    public void down(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // Get the InputStream from a file or any other source
        InputStream inputStream = request.getInputStream(); // Obtain the InputStream
        // Set the content type of the response
        response.setContentType("application/octet-stream");
        // Set the headers for file download
        response.setHeader("Content-Disposition", "attachment; filename=\"filename.extension\"");
        // Get the OutputStream from the response
        OutputStream outputStream = response.getOutputStream();
        // Copy the data from InputStream to OutputStream
        byte[] buffer = new byte[1024];
        int bytesRead;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }
        HtmlToPdfUtils.convertToPdf(inputStream,null,outputStream);
        // Close the streams
        inputStream.close();
        outputStream.close();
    }
    /**
     * 获取变更列表
     */
    /**
     * 获取有效期
     */
    @RequestMapping("/changelist/{payId}")
    @ResponseBody
    public ResultUtil changelist(@PathVariable("payId") Integer payId, ConsumeQuery consumeQuery) {
        consumeQuery.setPayId(payId);
        System.out.println("=======changelist==========="+consumeQuery);
        List<CourseCounsum> courseCounsums =   courseStuddentClient.queryCounsum(consumeQuery);
        Map<String,List<CourseCounsum>> map = new HashMap<>();
        map.put("items",courseCounsums);
        return new ResultUtil<>(0,0,null,map,null);
    }
    /**
     * 跳转到首页
@@ -61,6 +122,22 @@
        return PREFIX + "tStudent.html";
    }
    @RequestMapping("TTT")
    public String index1() {
        return PREFIX + "tStudentEditTTT.html";
    }
    @RequestMapping("openAddCoursePackage")
    public String index3() {
        return PREFIX + "classelct.html";
    }
    @RequestMapping("trans")
    public String index2() {
        return PREFIX + "trans.html";
    }
    /**
     * 跳转到添加
     */
@@ -69,6 +146,91 @@
        return PREFIX + "tStudent_add.html";
    }
    @Resource
    private CoursePackageClient coursePackageClient;
    /**
     * 获取有效期
     */
    @RequestMapping("/getBackList/{tStudentId}")
    @ResponseBody
    public ResultUtil getBackList(@PathVariable("tStudentId") Integer tStudentId) {
        List<MoneyBack> moneyBacks  = courseStuddentClient.getMoneyBack(tStudentId);
        Map<String, List<MoneyBack>> map = new HashMap<>();
        map.put("items",moneyBacks);
        return new ResultUtil<>(0,0,null,map,null);
    }
    /**
     * 跳转到退款
     */
    @RequestMapping("/backmoney")
    public String backmoney(Integer id,String ids,Model model) {
        TStudentDto tStudentDto = appUserClient.queryOneWebUser(id);
        model.addAttribute("id", id);
        model.addAttribute("ids", ids);
        TAppUser tAppUser = appUserClient.queryById(tStudentDto.getAppUserId());
        model.addAttribute("userName",tAppUser.getName());
        model.addAttribute("tStudentDto",tStudentDto);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate = dateFormat.format(new Date());
        model.addAttribute("reDate", formattedDate);
        List<TCoursePackagePayment> coursePackagePayments =  courseStuddentClient.queryByIds(ids);
        BigDecimal countAll = new BigDecimal(0);
        for (TCoursePackagePayment payment : coursePackagePayments){
            //课包名称
            TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId());
            payment.setName(tCoursePackage.getName());
            payment.setId(Long.valueOf(tCoursePackage.getId()));
            BigDecimal cashPayment = payment.getCashPayment();
            Integer totalClassHours = payment.getTotalClassHours();
            BigDecimal result =  new BigDecimal(0);
            if (totalClassHours!=0) {
                result = cashPayment.divide(BigDecimal.valueOf(totalClassHours), 2, RoundingMode.HALF_UP);
            }
            //单价
            payment.setOnePrice(result);
            int has = payment.getTotalClassHours() - payment.getLaveClassHours();
            //剩余课时
            payment.setHasHours(has);
            BigDecimal onePrice = payment.getOnePrice();
            Integer laveClassHours = payment.getLaveClassHours();
            BigDecimal result1 = onePrice.multiply(BigDecimal.valueOf(laveClassHours));
            //总价
            payment.setRestPrice(result1);
            System.out.println("======="+result1);
            countAll = countAll.add(result1);
        }
        //中文总价
//        String allprice = BigDecimalToChineseAmountUtil.convertToChineseAmount(countAll);
        String allprice = ChineseMoneyUtils.toChineseMoney(countAll);
        model.addAttribute("countAll", countAll);
        model.addAttribute("allprice", allprice);
        model.addAttribute("coursePackagePayments", coursePackagePayments);
        model.addAttribute("index",1);
        System.out.println("=====ids========"+ids);
        return PREFIX + "banckmoney.html";
    }
    /**
     * 跳转到修改
     */
@@ -88,7 +250,7 @@
                model.addAttribute("pic2", pics[1]);
                System.out.println("=====pic2==" + pics[1]);
            }
            if (pics.length > 3) {
            if (pics.length > 2) {
                model.addAttribute("pic3", pics[2]);
                System.out.println("=====pic3==" + pics[2]);
            }
@@ -121,7 +283,7 @@
                model.addAttribute("pic2", pics[1]);
                System.out.println("=====pic2==" + pics[1]);
            }
            if (pics.length > 3) {
            if (pics.length > 2) {
                model.addAttribute("pic3", pics[2]);
                System.out.println("=====pic3==" + pics[2]);
            }
@@ -180,13 +342,39 @@
//保存退款记录
    @RequestMapping("/ttt")
    @ResponseBody
    public ResultUtil list1(StudentSearch search) {
    public ResultUtil list1(Integer id, String ids) {
        InsertBackDto insertBackDto= new InsertBackDto();
        insertBackDto.setId(id);
        insertBackDto.setIds(ids);
        System.out.println("=====insertBackDto========"+insertBackDto);
        courseStuddentClient.insertBack(insertBackDto);
        //取消排课
        courseStuddentClient.cancel(ids);
        System.out.println("============学员查询接口=========");
        return ResultUtil.success();
    }
    @RequestMapping("/changeStatus/{id}")
    @ResponseBody
    public ResultUtil changeStatus(@PathVariable Integer id) {
//        InsertBackDto insertBackDto= new InsertBackDto();
//        insertBackDto.setId(id);
////        insertBackDto.setIds(ids);
//        System.out.println("=====insertBackDto========"+insertBackDto);
        courseStuddentClient.changeStatus(id);
        courseStuddentClient.zeroClass(id);
        System.out.println("============学员查询接口=========");
        return new ResultUtil<>(0,0,"同意成功",null,null);
    }
    /**
     * 学员修改
@@ -194,8 +382,10 @@
    @RequestMapping(value = "/update")
    @ResponseBody
    public ResultUtil update(@RequestBody TStudent tStudent, String image1, String image2, String image3 ) {
        String lateralSurface = image1+";"+image2+";"+image3;
    public ResultUtil update(@RequestBody TStudent tStudent) {
        String lateralSurface = tStudent.getImage1()+";"+tStudent.getImage2()+";"+tStudent.getImage3();
        System.out.println("=======lateralSurface======>?"+lateralSurface);
        tStudent.setLateralSurface(lateralSurface);
        System.out.println("学员体测表的值"+lateralSurface);
        itStudentService.update(tStudent);
@@ -270,4 +460,126 @@
        map.put("options",selectDtos);
        return new ResultUtil(0,0,"编辑成功",map,"");
    }
    /**
     * 学员转移课程
     */
    @RequestMapping(value = "/toClass")
    @ResponseBody
    public ResultUtil toClass( Integer id,Integer toStudentId) {
        ToClassDto toClassDto = new ToClassDto();
        toClassDto.setToStudentId(toStudentId);
        toClassDto.setId(id);
        courseStuddentClient.toClass(toClassDto);
//        Map<String,List<SelectDto>> map = new HashMap<>();
//        map.put("options",selectDtos);
        return new ResultUtil(0,0,"编辑成功",1,"");
    }
    /**
     * 赠送课时下拉框
     */
    @RequestMapping(value = "/giftSelect")
    @ResponseBody
    public ResultUtil giftSelect(GiftSearchDto giftSearchDto) {
        List<SelectDto>  selectDtos =  appUserClient.giftSelect(giftSearchDto);
        Map<String,List<SelectDto>> map = new HashMap<>();
        map.put("options",selectDtos);
//        Map<String,List<SelectDto>> map = new HashMap<>();
//        map.put("options",selectDtos);
        return new ResultUtil(0,0,"编辑成功",map,"");
    }
    //获取可报名假期课程下拉框
    @RequestMapping(value = "/getholi/{id}")
    @ResponseBody
    public ResultUtil giftSelect(@PathVariable("id") Integer id) {
        List<SelectDto>  selectDtos =  courseStuddentClient.getGiftSelect(id);
        Map<String,List<SelectDto>> map = new HashMap<>();
        map.put("options",selectDtos);
        return new ResultUtil(0,0,"编辑成功",map,"");
    }
    //获取可转换常规课程下拉框
    @RequestMapping(value = "/gettrans/{id}")
    @ResponseBody
    public ResultUtil gettrans(@PathVariable("id") Integer id) {
        List<SelectDto>  selectDtos =  courseStuddentClient.getTransSelect(id);
        Map<String,List<SelectDto>> map = new HashMap<>();
        map.put("options",selectDtos);
        return new ResultUtil(0,0,"编辑成功",map,"");
    }
    //消耗时长可报名假期课程
    @RequestMapping(value = "/Toholi")
    @ResponseBody
    public ResultUtil Toholi(Integer id,String ids,Integer holiId,Integer classNum) {
        String[] stringArray = ids.split(",");
        ToHoliDto toHoliDto  = new ToHoliDto();
        toHoliDto.setId(id);
        toHoliDto.setIds(stringArray);
        toHoliDto.setClassNum(classNum);
        toHoliDto.setClassId(holiId);
        String resultUtil = courseStuddentClient.toHoli(toHoliDto);
        System.out.println("========ToHoliDto========="+resultUtil);
        if (resultUtil==""){
            return new ResultUtil<>(0,0,"报名成功");
        }else
        return new ResultUtil<>(0,0,"报名成功,以下学员剩余课时不足"+resultUtil);
    }
    @RequestMapping(value = "/ToTrans")
    @ResponseBody
    public ResultUtil Totans(Integer id,String ids,Integer holiId,Integer classNum) {
        String[] stringArray = ids.split(",");
        ToHoliDto toHoliDto  = new ToHoliDto();
        toHoliDto.setId(id);
        toHoliDto.setIds(stringArray);
        toHoliDto.setClassNum(classNum);
        toHoliDto.setClassId(holiId);
        String resultUtil = courseStuddentClient.toTrans(toHoliDto);
        System.out.println("========ToHoliDto========="+resultUtil);
        if (resultUtil==""){
            return new ResultUtil<>(0,0,"报名成功");
        }else
            return new ResultUtil<>(0,0,"报名成功,以下学员剩余课时不足"+resultUtil);
    }
    //赠课
    @RequestMapping(value = "/giftTo")
    @ResponseBody
    public ResultUtil toClagiftToss( Integer id,Integer toStudentId) {
        ToClassDto toClassDto = new ToClassDto();
        toClassDto.setToStudentId(toStudentId);
        toClassDto.setId(id);
        courseStuddentClient.toClass(toClassDto);
//        Map<String,List<SelectDto>> map = new HashMap<>();
//        map.put("options",selectDtos);
        return new ResultUtil(0,0,"编辑成功",1,"");
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStudent.java
@@ -107,4 +107,8 @@
    private Integer isDefault;
    private String image1;
    private String image2;
    private String image3;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
@@ -108,11 +108,13 @@
            Integer classHours = jsonObject.getInteger("classHours");
            Double cashPayment = jsonObject.getDouble("cashPayment");
            Integer playPaiCoin = jsonObject.getInteger("playPaiCoin");
            String couponIds = jsonObject.getString("couponIds");
            CoursePackagePaymentConfig coursePackagePaymentConfig1 = new CoursePackagePaymentConfig();
            coursePackagePaymentConfig1.setCoursePackageId(integer);
            coursePackagePaymentConfig1.setClassHours(classHours);
            coursePackagePaymentConfig1.setCashPayment(cashPayment);
            coursePackagePaymentConfig1.setPlayPaiCoin(playPaiCoin);
            coursePackagePaymentConfig1.setCouponIds(couponIds);
            coursePackagePaymentConfigClient.addCoursePackagePaymentConfig(coursePackagePaymentConfig1);
        }
    }
@@ -144,11 +146,13 @@
            Integer classHours = jsonObject.getInteger("classHours");
            Double cashPayment = jsonObject.getDouble("cashPayment");
            Integer playPaiCoin = jsonObject.getInteger("playPaiCoin");
            String couponIds = jsonObject.getString("couponIds");
            CoursePackagePaymentConfig coursePackagePaymentConfig1 = new CoursePackagePaymentConfig();
            coursePackagePaymentConfig1.setCoursePackageId(coursePackage.getId());
            coursePackagePaymentConfig1.setClassHours(classHours);
            coursePackagePaymentConfig1.setCashPayment(cashPayment);
            coursePackagePaymentConfig1.setPlayPaiCoin(playPaiCoin);
            coursePackagePaymentConfig1.setCouponIds(couponIds);
            coursePackagePaymentConfigClient.addCoursePackagePaymentConfig(coursePackagePaymentConfig1);
        }
    }
@@ -458,9 +462,9 @@
            }
            TCoursePackagePayment tCoursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(coursePackageStudent.getCoursePackagePaymentId());
            tCoursePackagePayment.setLaveClassHours(tCoursePackagePayment.getLaveClassHours() - deductClassHour);
            if(coursePackageStudent.getSignInOrNot() == 0){
//            if(coursePackageStudent.getSignInOrNot() == 0){
                tCoursePackagePayment.setAbsencesNumber(tCoursePackagePayment.getAbsencesNumber() + 1);
            }
//            }
            coursePackagePaymentClient.editCoursePackagePayment(tCoursePackagePayment);
            CancelledClasses cancelledClasses = new CancelledClasses();
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord.html
@@ -9,6 +9,8 @@
                        <div class="row">
                            <h3>课包信息</h3>
                            <input type="hidden" id="id" value="${item.id}">
                            <input type="hidden" id="codeTime" value="${item.codeTime}">
                            <div class="form-group" style="height: 10px;">
                                <label class="col-sm-1 control-label" style="text-align: right;">所属门店:</label>
                                <span class="col-sm-2" style="text-align: left;">${store.name}</span>
@@ -19,22 +21,30 @@
                            </div>
                            <div class="form-group" style="height: 10px;">
                                <label class="col-sm-1 control-label" style="text-align: right;">授课教师:</label>
                                <span class="col-sm-2" style="text-align: left;">${coach.name}</span>
                                <span class="col-sm-2" style="text-align: left;">${coach.name!}</span>
                            </div>
                            <div class="form-group" style="height: 10px;">
                                <label class="col-sm-1 control-label" style="text-align: right;">已报名学员:</label>
                                <span class="col-sm-2" style="text-align: left;">${counts}</span>
                            </div>
                            <div class="form-group" style="height: 10px;">
                                <label class="col-sm-1 control-label" style="text-align: right;">上课时间:</label>
                                <span class="col-sm-2" style="text-align: left;">${item.classWeeks}</span>
                            </div>
                            @for(time in times){
                            <div class="form-group" style="height: 10px;">
                                <label class="col-sm-1 control-label" style="text-align: right;"></label>
                                <span class="col-sm-2" style="text-align: left;">${item.classStartTime + ' - ' + item.classEndTime}</span>
                                <span class="col-sm-2" style="text-align: left;">${time}</span>
                            </div>
                            @}
                        </div>
                        <div class="hidden-xs" id="managerTableToolbar" role="group">
                            <#button name="查看学员" icon="fa-plus" clickFun="ClassRecord.classRecord()"/>
                            <#button name="取消本次" icon="fa-edit" clickFun="ClassRecord.cancelClassSchedule()" space="true"/>
                            <#button name="发布课后练习" icon="fa-refresh" clickFun="ClassRecord.afterClassExercises()" space="true"/>
                            <#button name="上传消课记录" icon="fa-refresh" clickFun="ClassRecord.cancellationRecord()" space="true"/>
                            <#button name="上传消课记录" icon="fa-refresh" clickFun="ClassRecord.cancellationRecord(${item.codeTime})" space="true"/>
                            <#button name="查看消课记录" icon="fa-refresh" clickFun="ClassRecord.lookCancellationRecord()" space="true"/>
                            <#button name="手动预约" icon="fa-refresh" clickFun="ClassRecord.manualReservation()" space="true"/>
                        </div>
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage.html
@@ -63,27 +63,16 @@
                            </div>
                        </div>
                        <div class="hidden-xs" id="managerTableToolbar" role="group">
                            @if(shiro.hasPermission("/coursePackage/addCoursePackage")){
                            <#button name="测试添加" icon="fa-plus" clickFun="CoursePackage.addCoursePackage1()"/>
                            <#button name="添加" icon="fa-plus" clickFun="CoursePackage.addCoursePackage()"/>
                            @}
                            @if(shiro.hasPermission("/coursePackage/editCoursePackage")){
                            <#button name="编辑" icon="fa-edit" clickFun="CoursePackage.editCoursePackage()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/coursePackage/upCoursePackage")){
                            <#button name="上架" icon="fa-refresh" clickFun="CoursePackage.editCoursePackageState(1)" space="true"/>
                            @}
                            @if(shiro.hasPermission("/coursePackage/downCoursePackage")){
                            <#button name="下架" icon="fa-warning" clickFun="CoursePackage.editCoursePackageState(2)" space="true"/>
                            @}
                            @if(shiro.hasPermission("/coursePackage/coursePackageDiscount")){
                            <#button name="折扣管理" icon="fa-check-circle" clickFun="CoursePackage.coursePackageDiscount()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/coursePackage/detailsCoursePackage")){
                            <#button name="详情" icon="fa-check-circle" clickFun="CoursePackage.detailsCoursePackage()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/coursePackage/registrationRecord")){
                            <#button name="报名信息" icon="fa-check-circle" clickFun="CoursePackage.registrationRecord()" space="true"/>
                            @}
                        </div>
                        <#table id="managerTable"/>
                    </div>
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackageStudent.html
@@ -7,6 +7,7 @@
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <input type="hidden" id="id" value="${id}">
                        <div class="row">
                            <div class="col-lg-10 col-sm-9">
                                <div class="row">
@@ -28,8 +29,8 @@
                            </div>
                        </div>
                        <div class="hidden-xs" id="managerTableToolbar" role="group">
                            <#button name="取消预约" icon="fa-plus" clickFun="CoursePackageStudent.cancelReservation()"/>
                            <#button name="未到" icon="fa-edit" clickFun="CoursePackageStudent.absence()" space="true"/>
                            <#button name="请假" icon="fa-plus" clickFun="CoursePackageStudent.cancelReservation()"/>
                            <#button name="旷课" icon="fa-edit" clickFun="CoursePackageStudent.absence()" space="true"/>
                        </div>
                        <#table id="managerTable"/>
                    </div>
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_add.html
@@ -76,15 +76,10 @@
                        <input class="form-control" id="maxSubscribeNumber" name="maxSubscribeNumber" type="number" min="0" placeholder="请输入最多预约人数">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*上课时间:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="classStartTime" name="classStartTime" placeholder="请选择">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label"></label>
                    <div class="col-sm-8">
                        <input type="checkbox" name="classWeeks" value="周一"> 周一&nbsp;&nbsp;&nbsp;&nbsp;
                        <input type="checkbox" name="classWeeks" value="周二"> 周二&nbsp;&nbsp;&nbsp;&nbsp;
                        <input type="checkbox" name="classWeeks" value="周三"> 周三&nbsp;&nbsp;&nbsp;&nbsp;
@@ -92,6 +87,27 @@
                        <input type="checkbox" name="classWeeks" value="周五"> 周五&nbsp;&nbsp;&nbsp;&nbsp;
                        <input type="checkbox" name="classWeeks" value="周六"> 周六&nbsp;&nbsp;&nbsp;&nbsp;
                        <input type="checkbox" name="classWeeks" value="周日"> 周日&nbsp;&nbsp;&nbsp;&nbsp;
                    </div>
                </div>
                <div class="form-group"  >
                    <label class="col-sm-3 control-label"></label>
                        <div class="form-group" style="display: flex; align-items: center;" id = "dayTime" >
                            <div style="display:flex">
                            <input class="form-control" id="classStartTime" name="classStartTime" placeholder="请选择" style="width: 200px;">
                                <i class="fa fa-plus-circle" style="font-size: 24px; margin-left: 10px;" onclick="addTime()"></i>
                        </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="codeTime" name="codeTime" type="number" min="0" placeholder="请输入每节课扣除课时数">
                    </div>
                </div>
                <div class="form-group">
@@ -181,10 +197,13 @@
                            <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"></span>
                            <span class="paiCoin_span"></span>
                            <#button btnCss="info" name="优惠卷" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.openDia(1)"/>
                            <i class="fa fa-plus-circle" style="font-size:24px" onclick="addPrice()"></i>
                            <input type="text" id = "counpons1" class="counpons"  >
                        </div>
                    </div>
                </div>
<!--                <input type="text" id = "counpons">-->
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10">
@@ -213,5 +232,20 @@
    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-plus-circle" style="font-size: 24px; margin-left: 10px;" onclick="addTime()"></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_edit.html
@@ -91,6 +91,13 @@
                        @}
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*扣除课时数:</label>
                    <div class="col-sm-4">
                        <input class="form-control" id="codeTime" name="codeTime" value="${item.codeTime}" type="number" min="0" placeholder="请输入每节课扣除课时数">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-3 control-label">*课包封面:</label>
                    <div class="col-sm-4">
@@ -186,6 +193,8 @@
                                玩湃币支付:<input class="paiCoin" type="number" value="${coursePackagePaymentConfig.playPaiCoin}" 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>
                            <input type="text" id="counpons1" value="${couponIds}" class="counpons">
                            <#button btnCss="info" name="优惠卷" id="ensure" icon="fa-check" clickFun="CoursePackageInfo.openDia1(1)"/>
                            <i class="fa fa-plus-circle" style="font-size:24px" onclick="addPrice()"></i>
                        </div>
                    </div>
@@ -221,6 +230,8 @@
</div>
<script src="${ctxPath}/modular/system/coursePackage/coursePackage_info.js"></script>
<script type="text/javascript">
    console.log("============>"+`${couponIds}`)
    laydate.render({
        elem: '#classStartTime'
        ,type: 'time'
cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord.html
@@ -32,6 +32,9 @@
                            <#button name="上课记录" icon="fa-plus" clickFun="RegistrationRecord.classRecord()"/>
                            <#button name="退课" icon="fa-edit" clickFun="RegistrationRecord.dropClass()" space="true"/>
                            <#button name="补课" icon="fa-refresh" clickFun="RegistrationRecord.makeUpMissedLessons()" space="true"/>
                            <#button name="更换假期班" icon="fa-refresh" clickFun="RegistrationRecord.holiClass()" space="true"/>
                            <#button name="换课" icon="fa-refresh" clickFun="RegistrationRecord.transClass()" space="true"/>
                        </div>
                        <#table id="managerTable"/>
                    </div>
cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html
@@ -52,7 +52,8 @@
          "size": "md",
          "mode": "horizontal",
          "hidden": true,
          "value":`${item.id!}`
          "value":`${item.id!}`,
        },
        {
          "type": "input-text",
@@ -61,7 +62,7 @@
          "name": "id",
          "size": "md",
          "mode": "horizontal",
          "hidden": false
          "hidden": true
        },
        {
          "type": "tpl",
@@ -78,16 +79,19 @@
          "size": "md",
          "mode": "horizontal",
          "required": true,
          "disabled": true
          "disabled": true,
          "value":`${item.userName!}`
        },
        {
          "type": "input-text",
          "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp姓名",
          "id": "u:0b2463bbffe8",
          "name": "name",
          "name": "name1",
          "size": "md",
          "mode": "horizontal",
          "required": true
          "required": true,
          "value":`${item.name!}`,
          "disabled": true,
        },
        {
          "type": "input-date",
@@ -99,7 +103,9 @@
          "embed": false,
          "format": "YYYY-MM-DD hh:mm:ss",
          "inputFormat": "YYYY-MM-DD",
          "required": true
          "required": true,
          "value":`${item.birthday!}`,
          "disabled": true,
        },
        {
          "type": "select",
@@ -119,12 +125,14 @@
            }
          ],
          "multiple": false,
          "required": true
          "required": true,
          "value":`${item.sex!}`,
          "disabled": true,
        },
        {
          "type": "input-text",
          "label": "联系电话",
          "name": "phone",
          "name": "phone1",
          "id": "u:e7cf50e4f755",
          "size": "md",
          "mode": "horizontal",
@@ -135,7 +143,9 @@
          "validateOnChange": true,
          "validations": {
            "isPhoneNumber": true
          }
          },
          "value":`${item.phone!}`,
          "disabled": true,
        },
        {
          "type": "input-text",
@@ -157,7 +167,9 @@
          "addOn": {
            "label": "cm",
            "type": "text"
          }
          },
          "value":`${item.height!}`,
          "disabled": true,
        },
        {
          "type": "input-text",
@@ -179,7 +191,9 @@
          "validations": {
            "maximum": 250,
            "isNumeric": true
          }
          },
          "value":`${item.weight!}`,
          "disabled": true,
        },
        {
          "type": "input-text",
@@ -195,7 +209,9 @@
          "validateOnChange": true,
          "validations": {
            "isId": true
          }
          },
          "value":`${item.idCard!}`,
          "disabled": true,
        },
        {
          "type": "tpl",
@@ -221,7 +237,9 @@
          "multiple": false,
          "hideUploadButton": false,
          "fixedSize": false,
          "mode": "inline"
          "mode": "inline",
          "value":`${pic1!}`,
          "disabled": true,
        },
        {
          "type": "input-image",
@@ -240,7 +258,9 @@
          "multiple": false,
          "hideUploadButton": false,
          "fixedSize": false,
          "mode": "inline"
          "mode": "inline",
          "value":`${pic2!}`,
          "disabled": true,
        },
        {
          "type": "input-image",
@@ -259,74 +279,9 @@
          "multiple": false,
          "hideUploadButton": false,
          "fixedSize": false,
          "mode": "inline"
        },
        {
          "type": "container",
          "body": [
            {
              "type": "tpl",
              "id": "u:8224ab367da8",
              "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
              "inline": true,
              "wrapperComponent": ""
            },
            {
              "type": "button",
              "id": "u:783ce71739db",
              "label": "保存",
              "onEvent": {
                "click": {
                  "actions": [
                    {
                      "componentId": "u:7c5f75a3b7b5",
                      "args": {
                      },
                      "outputVar": "responseResult",
                      "actionType": "submit"
                    },
                    {
                      "args": {
                      },
                      "script": "parent.layer.close(window.parent.TStudent.layerIndex);\n\n                    window.parent.TStudent.table.refresh();",
                      "actionType": "custom"
                    }
                  ]
                }
              },
              "level": "info"
            },
            {
              "type": "tpl",
              "id": "u:8224ab367da8",
              "tpl": "&nbsp&nbsp&nbsp",
              "inline": true,
              "wrapperComponent": ""
            },
            {
              "type": "button",
              "id": "u:008bc32396cc",
              "label": "取消",
              "onEvent": {
                "click": {
                  "actions": [
                    {
                      "args": {
                      },
                      "script": "parent.layer.close(window.parent.TStudent.layerIndex);\nconsole.log(\"===关闭\")",
                      "actionType": "custom"
                    }
                  ]
                }
              },
              "block": false
            }
          ],
          "style": {
            "position": "static",
            "display": "block"
          },
          "id": "u:59d68a32f7fd"
          "mode": "inline",
          "value":`${pic3!}`,
          "disabled": true,
        },
        {
          "type": "divider",
@@ -347,7 +302,8 @@
          "embed": false,
          "mode": "inline",
          "size": "md",
          "value":`${studentClassInfo.inDate}`
          "value":`${studentClassInfo.inDate}`,
          "disabled": true,
        },
        {
          "type": "tpl",
@@ -450,10 +406,9 @@
                                "multiple": false,
                                "hideUploadButton": false,
                                "receiver": {
                                  "url": "/mgr/uploadImg",
                                  "url": "/mgr/uploadImgAmis",
                                  "method": "post"
                                },
                                "value": "https://we-park-life.oss-cn-beijing.aliyuncs.com/img/99325878956443d68bb835145a8dca49.png"
                                }
                              },
                              {
                                "type": "input-image",
@@ -468,10 +423,9 @@
                                "multiple": false,
                                "hideUploadButton": false,
                                "receiver": {
                                  "url": "/mgr/uploadImg",
                                  "url": "/mgr/uploadImgAmis",
                                  "method": "post"
                                },
                                "value": "https://we-park-life.oss-cn-beijing.aliyuncs.com/img/99325878956443d68bb835145a8dca49.png"
                                }
                              },
                              {
                                "type": "container",
@@ -540,10 +494,10 @@
                              "method": "post",
                              "requestAdaptor": "",
                              "adaptor": "",
                              "messages": {
                              },
                              "messages": {},
                              "dataType": "form-data"
                            }
                            },
                            "actions": []
                          }
                        ],
                        "showCloseButton": true,
@@ -551,8 +505,14 @@
                        "showLoading": true,
                        "className": "app-popover",
                        "id": "u:044fac037276",
                        "closeOnEsc": false
                        "closeOnEsc": false,
                        "actions": []
                      }
                    },
                    {
                      "componentId": "u:59d68a32f7fd",
                      "actionType": "reload",
                      "data": null
                    }
                  ]
                }
@@ -579,13 +539,14 @@
                      "actionType": "dialog",
                      "dialog": {
                        "type": "form",
                        "title": "弹框标题",
                        "title": "",
                        "body": [
                          {
                            "type": "input-text",
                            "label": "id",
                            "name": "id",
                            "id": "u:0a5bc6f58ee8"
                            "id": "u:0a5bc6f58ee8",
                            "hidden": true
                          },
                          {
                            "type": "crud",
@@ -596,10 +557,13 @@
                            },
                            "columns": [
                              {
                                "name": "insertTime",
                                "name": "date",
                                "label": "操作时间",
                                "type": "date",
                                "id": "u:b652786dc9df"
                                "id": "u:b652786dc9df",
                                "valueFormat": "YYYY-MM-DD HH:mm:ss",
                                "format": "YYYY-MM-DD HH:mm",
                                "placeholder": "-"
                              },
                              {
                                "type": "text",
@@ -610,13 +574,13 @@
                              {
                                "type": "image",
                                "label": "申请凭证",
                                "name": "picPlease",
                                "name": "pleasePic",
                                "id": "u:b22cfb737009"
                              },
                              {
                                "type": "image",
                                "label": "同意凭证",
                                "name": "picPass",
                                "name": "passPic",
                                "id": "u:2a9071d0bda1"
                              }
                            ],
@@ -636,7 +600,63 @@
                        "showErrorMsg": true,
                        "showLoading": true,
                        "className": "app-popover",
                        "id": "u:c4e97065bccb"
                        "id": "u:c4e97065bccb",
                        "actions": [
                          {
                            "type": "flex",
                            "className": "p-1",
                            "items": [
                              {
                                "type": "container",
                                "body": [
                                  {
                                    "type": "flex",
                                    "className": "p-1",
                                    "items": [
                                      {
                                        "type": "button",
                                        "id": "u:98fc618e3ec6",
                                        "label": "关闭",
                                        "onEvent": {
                                          "click": {
                                            "actions": [
                                              {
                                                "actionType": "closeDialog"
                                              }
                                            ]
                                          }
                                        },
                                        "block": false
                                      }
                                    ],
                                    "style": {
                                      "position": "relative"
                                    },
                                    "id": "u:4a1662323b46"
                                  }
                                ],
                                "size": "xs",
                                "style": {
                                  "position": "relative",
                                  "display": "inline-block",
                                  "flex": "1 1 auto",
                                  "flexGrow": 1,
                                  "flexBasis": "auto",
                                  "inset": "auto"
                                },
                                "wrapperBody": false,
                                "isFixedHeight": false,
                                "isFixedWidth": false,
                                "id": "u:ffdcf3def663"
                              }
                            ],
                            "style": {
                              "position": "relative"
                            },
                            "id": "u:ad4c2c8f0190"
                          }
                        ],
                        "size": "md"
                      }
                    }
                  ]
@@ -686,7 +706,8 @@
            }
          },
          "labelClassName": "labelClassName-49dd1bda82f4",
          "value":`${studentClassInfo.totalHours}`
          "value":`${studentClassInfo.totalHours}`,
          "disabled": true,
        },
        {
          "type": "input-text",
@@ -695,7 +716,8 @@
          "name": "idCard1",
          "mode": "horizontal",
          "size": "md",
          "value":`${studentClassInfo.hasHours}`
          "value":`${studentClassInfo.hasHours}`,
          "disabled": true,
        },
        {
          "type": "input-text",
@@ -704,7 +726,8 @@
          "name": "idCard2",
          "mode": "horizontal",
          "size": "md",
          "value":`${studentClassInfo.restHours}`
          "value":`${studentClassInfo.restHours}`,
          "disabled": true,
        },
        {
          "type": "input-text",
@@ -713,10 +736,158 @@
          "name": "idCard3",
          "mode": "horizontal",
          "size": "md",
          "value":`${studentClassInfo.giftHours}`
          "value":`${studentClassInfo.giftHours}`,
          "disabled": true,
        }, {
          "type": "tpl",
          "id": "u:8224ab367da8",
          "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
          "inline": true,
          "wrapperComponent": "",
          "style": {
            "paddingBottom": "100",
            "marginBottom": "100"
          }
        },
        {
          "type": "tpl",
          "id": "u:e6a3e106fac0",
          "tpl": "退费申请:",
          "inline": true,
          "wrapperComponent": "",
          "style": {
            "paddingBottom": "100",
            "marginBottom": "100"
          }
        },
        {
          "type": "button",
          "id": "u:4b1f37ea569c",
          "label": "退费列表",
          "level": "info",
          "onEvent": {
            "click": {
              "weight": 0,
              "actions": [
                {
                  "actionType": "dialog",
                  "dialog": {
                    "type": "dialog",
                    "title": "弹框标题",
                    "body": [
                      {
                        "type": "input-text",
                        "id": "u:895313026d71",
                        "label": "id",
                        "name": "id",
                        "hidden": true
                      },
                      {
                        "type": "crud",
                        "syncLocation": false,
                        "name":"crud",
                        "api": {
                          "method": "get",
                          "url": "/tStudent/getBackList/$id"
                        },
                        "columns": [
                          {
                            "type": "date",
                            "name": "insertTime",
                            "label": "申请时间",
                            "id": "u:6948dfe01afd",
                            "valueFormat": "YYYY-MM-DD HH:mm:ss",
                            "format": "YYYY-MM-DD HH:mm"
                          },
                          {
                            "name": "status",
                            "label": "审核状态",
                            "type": "mapping",
                            "id": "u:1f2a09737a98",
                            "map": {
                              "0": "待审核",
                              "1": "同意",
                              "2": "拒绝"
                            }
                          },
                          {
                            "type": "operation",
                            "id": "u:b0e34eccd864",
                            "buttons": [
                              {
                                "type": "button",
                                "label": "查看详情",
                                "onEvent": {
                                  "click": {
                                    "actions": [
                                      {
                                        "actionType": "url",
                                        "args": {
                                          "url": "/tStudent/backmoney",
                                          "params": {
                                            "ids": "$ids",
                                            "id": "$id"
                                          }
                                        }
                                      }
                                    ],
                                    "weight": 0
                                  }
                                },
                                "id": "u:38a6f5402e72",
                                "level": "link",
                                "actionType": "ajax"
                              },
                              {
                                "type": "button",
                                "label": "同意",
                                "onEvent": {
                                  "click": {
                                    "actions": [
                                    ],
                                    "weight": 0
                                  }
                                },
                                "id": "u:4450de076e9f",
                                "level": "link",
                                "actionType": "ajax",
                                "hiddenOn": "this.status === 1 || this.status === 2",
                                "api": {
                                  "method": "post",
                                  "url": "/tStudent/changeStatus/$id"
                                },
                                "reload": "pay"
                              }
                            ],
                            "placeholder": "-",
                            "label": "操作"
                          }
                        ],
                        "bulkActions": [],
                        "itemActions": [],
                        "features": [
                          "view",
                          "delete"
                        ],
                        "id": "u:a4ce7e3ae181"
                      }
                    ],
                    "showCloseButton": true,
                    "showErrorMsg": true,
                    "showLoading": true,
                    "className": "app-popover",
                    "id": "u:b91085026056"
                  }
                }
              ]
            }
          },
          "size": "xs"
        },
        {
          "type": "crud",
          "name":"pay",
          "syncLocation": false,
          "api": {
            "method": "get",
@@ -735,32 +906,37 @@
              "name": "classType",
              "id": "u:2f1091a380a8",
              "map": {
                "*": "通配值"
                "1": "常规课",
                "2": "假期课",
                "3": "体验课"
              }
            },
            {
              "type": "date",
              "label": "报名时间",
              "name": "reportDate",
              "id": "u:36ab5e408a48"
              "name": "insertTime",
              "id": "u:36ab5e408a48",
              "valueFormat": "x"
            },
            {
              "type": "text",
              "label": "总课时数",
              "name": "totalTime",
              "name": "totalClassHours",
              "id": "u:fba93556fb2e"
            },
            {
              "type": "text",
              "label": "已上课时数",
              "name": "haveTime",
              "id": "u:b55a5ac7f49d"
              "name": "hasClassHours",
              "id": "u:b55a5ac7f49d",
              "value": "$totalClassHours-$totalClassHours"
            },
            {
              "type": "text",
              "label": "剩余课时数",
              "name": "restTime",
              "id": "u:abb78021df40"
              "name": "laveClassHours",
              "id": "u:abb78021df40",
              "placeholder": "-"
            },
            {
              "type": "operation",
@@ -779,42 +955,115 @@
                            "title": "弹框标题",
                            "body": [
                              {
                                "type": "select",
                                "label": "请选择被转移学员",
                                "name": "select",
                                "id": "u:80a2266885a3",
                                "multiple": false,
                                "mode": "horizontal",
                                "size": "lg",
                                "horizontal": {
                                  "leftFixed": "lg"
                                },
                                "source": {
                                  "url": "/tStudent/getUserSlect/$id",
                                  "method": "get"
                                },
                                "labelField": "value",
                                "valueField": "id"
                              },
                              {
                                "type": "input-text",
                                "label": "id",
                                "name": "id",
                                "id": "u:1e2c394fa299"
                              },
                              {
                                "type": "tpl",
                                "tpl": "对,你刚刚点击了",
                                "wrapperComponent": "",
                                "inline": false,
                                "id": "u:7c4a5a6b60d0"
                                "type": "form",
                                "id": "u:db6a651c2979",
                                "title": "",
                                "body": [
                                  {
                                    "label": "请选择被转移学员",
                                    "type": "select",
                                    "name": "toStudentId",
                                    "id": "u:80a2266885a3",
                                    "multiple": false,
                                    "mode": "horizontal",
                                    "size": "lg",
                                    "horizontal": {
                                      "leftFixed": "lg"
                                    },
                                    "source": {
                                      "url": "/tStudent/getUserSlect/$id",
                                      "method": "get"
                                    },
                                    "labelField": "value",
                                    "valueField": "id"
                                  },
                                  {
                                    "label": "id",
                                    "type": "input-text",
                                    "name": "id",
                                    "id": "u:1e2c394fa299",
                                    "hidden": true
                                  },
                                  {
                                    "type": "container",
                                    "id": "u:59d68a32f7fd",
                                    "body": [
                                      {
                                        "type": "tpl",
                                        "id": "u:8224ab367da8",
                                        "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                                        "inline": true,
                                        "wrapperComponent": ""
                                      },
                                      {
                                        "type": "button",
                                        "id": "u:783ce71739db",
                                        "label": "保存",
                                        "onEvent": {
                                          "click": {
                                            "actions": [
                                              {
                                                "componentId": "u:db6a651c2979",
                                                "actionType": "submit"
                                              }
                                            ]
                                          }
                                        },
                                        "level": "info"
                                      },
                                      {
                                        "type": "tpl",
                                        "id": "u:8224ab367da8",
                                        "tpl": "&nbsp&nbsp&nbsp",
                                        "inline": true,
                                        "wrapperComponent": ""
                                      },
                                      {
                                        "type": "button",
                                        "id": "u:008bc32396cc",
                                        "label": "取消",
                                        "onEvent": {
                                          "click": {
                                            "actions": [
                                              {
                                                "actionType": "closeDialog"
                                              }
                                            ]
                                          }
                                        },
                                        "block": false
                                      }
                                    ],
                                    "style": {
                                      "position": "static",
                                      "display": "block"
                                    }
                                  }
                                ],
                                "api": {
                                  "url": "/tStudent/toClass",
                                  "method": "post",
                                  "requestAdaptor": "",
                                  "adaptor": "",
                                  "messages": {
                                  },
                                  "dataType": "form-data"
                                }
                              }
                            ],
                            "showCloseButton": true,
                            "showErrorMsg": true,
                            "showLoading": true,
                            "className": "app-popover",
                            "id": "u:a612413d932d"
                            "id": "u:a612413d932d",
                            "api": {
                              "url": "/tStudent/toClass",
                              "method": "post",
                              "messages": {
                              }
                            },
                            "actions": [
                            ]
                          }
                        }
                      ]
@@ -836,65 +1085,169 @@
                            "title": "弹框标题",
                            "body": [
                              {
                                "type": "input-text",
                                "label": "用户姓名:",
                                "name": "text",
                                "id": "u:c260d6dbc161",
                                "mode": "horizontal"
                              },
                              {
                                "type": "input-text",
                                "label": "用户电话",
                                "name": "phone",
                                "id": "u:c00d1204430d",
                                "mode": "horizontal"
                              },
                              {
                                "type": "service",
                                "id": "u:f6ab941852f1",
                                "type": "form",
                                "id": "u:57ea84073397",
                                "title": "",
                                "body": [
                                  {
                                    "type": "select",
                                    "id": "u:a7766815916b",
                                    "label": "选择学员",
                                    "name": "select",
                                    "multiple": false,
                                    "mode": "horizontal",
                                    "size": "lg",
                                    "value": ""
                                    "type": "service",
                                    "id": "u:f6ab941852f1",
                                    "body": [
                                      {
                                        "type": "input-text",
                                        "id": "u:c00d1204430d",
                                        "label": "用户电话",
                                        "name": "phone",
                                        "mode": "horizontal",
                                        "size": "md"
                                      },
                                      {
                                        "type": "input-text",
                                        "id": "u:9a9f18e09fb9",
                                        "label": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp用户姓名:",
                                        "name": "name",
                                        "mode": "inline",
                                        "size": "md"
                                      },
                                      {
                                        "type": "button",
                                        "label": "搜索",
                                        "onEvent": {
                                          "click": {
                                            "actions": [
                                              {
                                                "componentId": "u:f6ab941852f1",
                                                "actionType": "reload",
                                                "dataMergeMode": "merge"
                                              }
                                            ]
                                          }
                                        },
                                        "id": "u:5fcf1222f6ea",
                                        "level": "info"
                                      },
                                      {
                                        "type": "select",
                                        "id": "u:a7766815916b",
                                        "label": "选择学员",
                                        "name": "toStudentId",
                                        "multiple": false,
                                        "mode": "horizontal",
                                        "size": "md",
                                        "value": "",
                                        "source": "$options",
                                        "labelField": "value",
                                        "valueField": "id"
                                      }
                                    ],
                                    "messages": {},
                                    "loadingConfig": {
                                      "show": true
                                    },
                                    "api": {
                                      "url": "/tStudent/giftSelect",
                                      "method": "post",
                                      "messages": {},
                                      "requestAdaptor": "",
                                      "adaptor": "",
                                      "dataType": "form-data",
                                      "data": {
                                        "name": "$name",
                                        "phone": "$phone",
                                        "id": "$id"
                                      }
                                    }
                                  },
                                  {
                                    "type": "input-text",
                                    "id": "u:fe0979ee23df",
                                    "label": "id",
                                    "name": "id",
                                    "hidden": true
                                  },
                                  {
                                    "type": "container",
                                    "id": "u:59d68a32f7fd",
                                    "body": [
                                      {
                                        "type": "tpl",
                                        "id": "u:8224ab367da8",
                                        "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                                        "inline": true,
                                        "wrapperComponent": ""
                                      },
                                      {
                                        "type": "button",
                                        "id": "u:783ce71739db",
                                        "label": "保存",
                                        "onEvent": {
                                          "click": {
                                            "actions": [
                                              {
                                                "componentId": "u:57ea84073397",
                                                "actionType": "submit"
                                              }
                                            ]
                                          }
                                        },
                                        "level": "info"
                                      },
                                      {
                                        "type": "tpl",
                                        "id": "u:8224ab367da8",
                                        "tpl": "&nbsp&nbsp&nbsp",
                                        "inline": true,
                                        "wrapperComponent": ""
                                      },
                                      {
                                        "type": "button",
                                        "id": "u:008bc32396cc",
                                        "label": "取消",
                                        "onEvent": {
                                          "click": {
                                            "actions": [
                                              {
                                                "actionType": "closeDialog"
                                              }
                                            ]
                                          }
                                        },
                                        "block": false
                                      }
                                    ],
                                    "style": {
                                      "position": "static",
                                      "display": "block"
                                    }
                                  }
                                ]
                              },
                              {
                                "type": "button",
                                "label": "按钮",
                                "onEvent": {
                                  "click": {
                                    "actions": [
                                    ]
                                  }
                                ],
                                "api": {
                                  "url": "/tStudent/giftTo",
                                  "method": "post",
                                  "requestAdaptor": "",
                                  "adaptor": "",
                                  "messages": {},
                                  "dataType": "form-data"
                                },
                                "id": "u:5fcf1222f6ea"
                                "actions": []
                              },
                              {
                                "type": "input-text",
                                "label": "id",
                                "name": "id",
                                "id": "u:fe0979ee23df"
                              },
                              {
                                "type": "tpl",
                                "tpl": "对,你刚刚点击了",
                                "wrapperComponent": "",
                                "inline": false,
                                "id": "u:5fe4b4c9e423"
                                "id": "u:59d68a32f7fd",
                                "type": "container",
                                "body": [],
                                "style": {
                                  "position": "static",
                                  "display": "block"
                                }
                              }
                            ],
                            "showCloseButton": true,
                            "showErrorMsg": true,
                            "showLoading": true,
                            "className": "app-popover",
                            "id": "u:552bd1b3464d"
                            "id": "u:552bd1b3464d",
                            "actions": [],
                            "canAccessSuperData": false
                          }
                        }
                      ]
@@ -902,7 +1255,257 @@
                  },
                  "id": "u:ae1e6e73beb9",
                  "level": "link"
                },
                {
                  "type": "button",
                  "label": "变更记录",
                  "onEvent": {
                    "click": {
                      "actions": [
                        {
                          "actionType": "dialog",
                          "dialog": {
                            "type": "dialog",
                            "title": "弹框标题",
                            "body": [
                              {
                                "type": "form",
                                "id": "u:4468428b5d24",
                                "title": "",
                                "body": [
                                  {
                                    "type": "crud",
                                    "id": "u:8072454d25d8",
                                    "api": {
                                      "url": "/tStudent/changelist/$id",
                                      "method": "post",
                                      "messages": {
                                      },
                                      "requestAdaptor": "",
                                      "adaptor": "",
                                      "dataType": "form"
                                    },
                                    "syncLocation": false,
                                    "columns": [
                                      {
                                        "name": "insertTime",
                                        "label": "时间",
                                        "type": "date",
                                        "id": "u:e13821cad6ba",
                                        "valueFormat": "x"
                                      },
                                      {
                                        "name": "changeType",
                                        "label": "变更类型",
                                        "type": "mapping",
                                        "id": "u:e2b292dd63d0"
                                      },
                                      {
                                        "type": "text",
                                        "label": "课时数",
                                        "name": "num",
                                        "id": "u:24b1375ff173"
                                      },
                                      {
                                        "type": "text",
                                        "label": "变更原因",
                                        "name": "reason",
                                        "id": "u:8ba95bfd5e56"
                                      }
                                    ],
                                    "bulkActions": [
                                    ],
                                    "itemActions": [
                                    ],
                                    "features": [
                                      "filter"
                                    ],
                                    "filterColumnCount": 3,
                                    "filter": {
                                      "title": "",
                                      "body": [
                                        {
                                          "type": "input-date-range",
                                          "name": "start",
                                          "label": "上传时间",
                                          "id": "u:b2fb064aa9ac",
                                          "inputFormat": "YYYY-MM-DD HH:mm",
                                          "format": "YYYY-MM-DD HH:mm",
                                          "embed": false,
                                          "extraName": "end"
                                        },
                                        {
                                          "type": "select",
                                          "label": "是否启用",
                                          "name": "changeType",
                                          "options": [
                                            {
                                              "label": "全部"
                                            },
                                            {
                                              "label": "增加",
                                              "value": 1
                                            },
                                            {
                                              "label": "减少",
                                              "value": 0
                                            }
                                          ],
                                          "id": "u:6dbebedca3b9",
                                          "multiple": false,
                                          "clearable": true,
                                          "size": "md",
                                          "value": ""
                                        },
                                        {
                                          "type": "select",
                                          "label": "变更原因",
                                          "name": "reason",
                                          "options": [
                                            {
                                              "label": "全部"
                                            },
                                            {
                                              "label": "购课",
                                              "value": "购课"
                                            },
                                            {
                                              "label": "消课",
                                              "value": 0
                                            },
                                            {
                                              "label": "体验购课",
                                              "value": "体验购课"
                                            },
                                            {
                                              "label": "报名赛事",
                                              "value": "报名赛事"
                                            },
                                            {
                                              "label": "报名假期班",
                                              "value": "报名假期班"
                                            },
                                            {
                                              "label": "续课",
                                              "value": 1
                                            },
                                            {
                                              "label": "课时转移",
                                              "value": "课时转移"
                                            },
                                            {
                                              "label": "赠课",
                                              "value": "赠课"
                                            },
                                            {
                                              "label": "退费",
                                              "value": "退费"
                                            },
                                            {
                                              "label": "介绍有礼",
                                              "value": "介绍有礼"
                                            },
                                            {
                                              "label": "换课",
                                              "value": "换课"
                                            }
                                          ],
                                          "id": "u:a3db438ccfdd",
                                          "multiple": false,
                                          "clearable": true,
                                          "size": "md",
                                          "value": ""
                                        }
                                      ],
                                      "id": "u:5c936e95b286"
                                    },
                                    "perPageAvailable": [
                                      10
                                    ],
                                    "messages": {
                                    },
                                    "perPageField": "size"
                                  },
                                  {
                                    "type": "input-text",
                                    "id": "u:5f73d0cbffee",
                                    "label": "id",
                                    "name": "id",
                                    "hidden": true
                                  },
                                  {
                                    "type": "container",
                                    "id": "u:0576f915b9e3",
                                    "body": [
                                      {
                                        "type": "tpl",
                                        "id": "u:9c56f7ef3419",
                                        "tpl": "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp",
                                        "inline": true,
                                        "wrapperComponent": ""
                                      },
                                      {
                                        "type": "tpl",
                                        "id": "u:a2cba9bb8751",
                                        "tpl": "&nbsp&nbsp&nbsp",
                                        "inline": true,
                                        "wrapperComponent": ""
                                      },
                                      {
                                        "type": "button",
                                        "id": "u:98fc618e3ec6",
                                        "label": "关闭",
                                        "onEvent": {
                                          "click": {
                                            "actions": [
                                              {
                                                "actionType": "closeDialog"
                                              }
                                            ]
                                          }
                                        },
                                        "block": false
                                      }
                                    ],
                                    "style": {
                                      "position": "static",
                                      "display": "block"
                                    }
                                  }
                                ],
                                "api": {
                                  "url": "/tStudent/changelist/$id",
                                  "method": "post",
                                  "requestAdaptor": "",
                                  "adaptor": "",
                                  "messages": {
                                  },
                                  "dataType": "form-data"
                                },
                                "actions": [
                                ]
                              }
                            ],
                            "showCloseButton": true,
                            "showErrorMsg": true,
                            "showLoading": true,
                            "className": "",
                            "id": "u:f66fa4de8251",
                            "actions": [
                            ],
                            "canAccessSuperData": false,
                            "wrapWithPanel": false,
                            "size": "xl",
                            "closeOnEsc": false
                          }
                        }
                      ]
                    }
                  },
                  "id": "u:dd3110deaf9d",
                  "level": "link"
                }
              ]
            }
          ],
@@ -915,23 +1518,120 @@
              "wrapperComponent": ""
            },
            {
              "label": "ajax请求",
              "type": "button",
              "label": "退费",
              "actionType": "ajax",
              "api": {
                "method": "get",
                "url": "/ttt",
                "data": {
                  "item": "$items"
                },
                "id": "u:f706584d4a0c"
              },
              "id": "u:38a6f5402e72"
              "id": "u:38a6f5402e72",
              "onEvent": {
                "click": {
                  "weight": 0,
                  "actions": [
                    {
                      "actionType": "url",
                      "args": {
                        "url": "/tStudent/backmoney",
                        "params": {
                          "ids": "$ids",
                          "id": "$id"
                        }
                      }
                    }
                  ]
                }
              }
            },
            {
              "label": "退费",
              "type": "button",
              "id": "u:4b1f37ea569c"
              "label": "退费申请",
              "id": "u:4b1f37ea569c",
              "level": "info",
              "onEvent": {
                "click": {
                  "weight": 0,
                  "actions": [
                    {
                      "actionType": "dialog",
                      "dialog": {
                        "type": "dialog",
                        "title": "弹框标题",
                        "body": [
                          {
                            "type": "tpl",
                            "tpl": "对,你刚刚点击了",
                            "wrapperComponent": "",
                            "inline": false,
                            "id": "u:d72b44ae6de4"
                          },
                          {
                            "type": "crud",
                            "syncLocation": false,
                            "api": {
                              "method": "get",
                              "url": "/tStudent/getBackList/$id"
                            },
                            "columns": [
                              {
                                "name": "inserTtime",
                                "label": "申请时间",
                                "type": "date",
                                "id": "u:6948dfe01afd"
                              },
                              {
                                "name": "status",
                                "label": "审核状态",
                                "type": "mapping",
                                "id": "u:1f2a09737a98"
                              },
                              {
                                "type": "operation",
                                "id": "u:b0e34eccd864",
                                "buttons": [
                                  {
                                    "type": "button",
                                    "label": "退费",
                                    "onEvent": {
                                      "click": {
                                        "actions": [
                                          {
                                            "actionType": "url",
                                            "args": {
                                              "url": "/tStudent/backmoney",
                                              "params": {
                                                "ids": "$ids",
                                                "id": "$id"
                                              }
                                            }
                                          }
                                        ],
                                        "weight": 0
                                      }
                                    },
                                    "id": "u:38a6f5402e72",
                                    "actionType": "ajax",
                                    "level": "info"
                                  }
                                ]
                              }
                            ],
                            "bulkActions": [],
                            "itemActions": [],
                            "features": [
                              "view",
                              "delete"
                            ],
                            "id": "u:a4ce7e3ae181"
                          }
                        ],
                        "showCloseButton": true,
                        "showErrorMsg": true,
                        "showLoading": true,
                        "className": "app-popover",
                        "id": "u:b91085026056"
                      }
                    }
                  ]
                }
              }
            },
            {
              "label": "退费",
cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit_first.html
@@ -214,7 +214,7 @@
          "uploadType": "fileReceptor",
          "imageClassName": "r w-full",
          "receiver": {
            "url": "/mgr/uploadImg",
            "url": "/mgr/uploadImgAmis",
            "method": "post"
          },
          "accept": ".jpeg, .jpg, .png, .gif",
@@ -234,7 +234,7 @@
          "uploadType": "fileReceptor",
          "imageClassName": "r w-full",
          "receiver": {
            "url": "/mgr/uploadImg",
            "url": "/mgr/uploadImgAmis",
            "method": "post"
          },
          "accept": ".jpeg, .jpg, .png, .gif",
@@ -254,7 +254,7 @@
          "uploadType": "fileReceptor",
          "imageClassName": "r w-full",
          "receiver": {
            "url": "/mgr/uploadImg",
            "url": "/mgr/uploadImgAmis",
            "method": "post"
          },
          "accept": ".jpeg, .jpg, .png, .gif",
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord.js
@@ -17,13 +17,29 @@
        {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '日期', field: 'classDate', align: 'center', valign: 'middle'},
        {title: '报名学员', field: 'registered', align: 'center', valign: 'middle'},
        {title: '实到学员', field: 'actualArrival', align: 'center', valign: 'middle'},
        {title: '未到学员', field: 'nonArrival', align: 'center', valign: 'middle'},
        {title: '实到学员', field: 'actualArrival', align: 'center', valign: 'middle',
            formatter: function (v, row) {
                if (row.absencesNumber === undefined) {
                    return 0;
                } else {
                    return v;
                }
            }
        },
        {title: '未到学员', field: 'nonArrival', align: 'center', valign: 'middle',
            formatter: function (v, row) {
                if (row.absencesNumber === undefined) {
                    return 0;
                } else {
                    return v;
                }
            }
        },
        {title: '课后练习', field: 'courseId', align: 'center', valign: 'middle',
            formatter: function (v) {
                if(typeof v == "undefined"){
                if (typeof v === "undefined") {
                    return '未布置';
                }else{
                } else {
                    return '已布置';
                }
            }
@@ -45,9 +61,9 @@
        {title: '扣除课时', field: 'deductClassHour', align: 'center', valign: 'middle'},
        {title: '取消记录', field: 'absencesNumber', align: 'center', valign: 'middle',
            formatter: function (v) {
                if(typeof v == "undefined"){
                if (typeof v === "undefined") {
                    return '未上传';
                }else{
                } else {
                    return '已上传';
                }
            }
@@ -223,10 +239,11 @@
};
ClassRecord.cancellationRecord = function(){
ClassRecord.cancellationRecord = function(i){
    if(this.check()){
        let htmlStr =
            '<div class="form-horizontal">' +
        '<div class="form-horizontal">' +
            '   <div class="col-sm-11" style="padding: 20px;">' +
            '       <div class="form-group">\n' +
            '           <label class="col-sm-2"></label>'+
@@ -247,7 +264,7 @@
            '       <div class="form-group">\n' +
            '           <label class="col-sm-2"></label>'+
            '           <label class="control-label" style="text-align: left;">扣除课时数:</label>\n' +
            '           <input id="deductClassHour" type="number" min="0" style="background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;">' +
            '           <input id="deductClassHour" value="'+i+'" type="number" min="0" style="background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;">' +
            '       </div>' +
            '       </div>' +
            '</div>';
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage.js
@@ -82,6 +82,20 @@
    this.layerIndex = index;
};
CoursePackage.addCoursePackage1 = function () {
    let index = layer.open({
        type: 2,
        title: '添加',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tStudent/openAddCoursePackage'
    });
    this.layerIndex = index;
};
/**
 * 点击修改按钮时
 * @param userId 管理员id
@@ -201,6 +215,8 @@
CoursePackage.resetSearch = function () {
    $("#provinceCode").val("");
    $("#cityCode").val("");
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageStudent.js
@@ -22,28 +22,32 @@
        {title: '年龄', field: 'age', align: 'center', valign: 'middle'},
        {title: '性别', field: 'sex', align: 'center', valign: 'middle',
            formatter: function (v) {
                if(v == 1){
                if (v == 1) {
                    return '男';
                }else{
                } else {
                    return '女';
                }
            }
        },
        {title: '到课状态', field: 'signInOrNot', align: 'center', valign: 'middle',
            formatter: function (v) {
                switch (v) {
                    case 0:
                        return '未到';
                    case 1:
                        return '已到';
            formatter: function (v, row) {
                if (row.reservationStatus === 0) {
                    return '请假';
                } else {
                    switch (v) {
                        case 0:
                            return '旷课';
                        case 1:
                            return '已到';
                    }
                }
            }
        },
        {title: '预定状态', field: 'reservationStatus', align: 'center', valign: 'middle',
        {title: '预定状态', field: 'reservationStatus', align: 'center', valign: 'middle',hidden:true,
            formatter: function (v) {
                if(v == 0){
                if (v == 0) {
                    return '已取消';
                }else{
                } else {
                    return '正常';
                }
            }
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js
@@ -15,6 +15,33 @@
};
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;
};
/**
 * 提交添加用户
 */
@@ -29,7 +56,16 @@
    let siteId = $('#siteId').val();
    let coachId = $('#coachId').val();
    let maxSubscribeNumber = $('#maxSubscribeNumber').val();
    let classStartTime = $('#classStartTime').val();
    let codeTime = $('#codeTime').val();
    // let classStartTime = JSON.stringify($('#classStartTime').val());
    var inputElements = document.querySelectorAll('input[name="classStartTime"]');
    let classStartTime =  JSON.stringify(Array.from(inputElements).map(function(element) {
        return element.value;
    }))
    let classWeeks = '';
    $('input[name="classWeeks"]:checked').each(function (index, e) {
        classWeeks += $(e).val() + ";";
@@ -40,15 +76,17 @@
    let sort = $('#sort').val();
    let validDays = $('#validDays').val();
    let price = [];
    $('#price>.form-group').each(function (i, e) {
    $('#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
        })
            playPaiCoin: typeof paiCoin == "undefined" ? 0 : paiCoin,
            couponIds: typeof counpons == "undefined" ? 0 : counpons
        });
    });
    if(null == provinceCode || '' == provinceCode){
        Feng.error("所在省不能为空");
@@ -79,6 +117,10 @@
        return
    }
    if(null == maxSubscribeNumber || '' == maxSubscribeNumber){
        Feng.error("最多预约人数不能为空");
        return
    }
    if(null == codeTime || '' == codeTime){
        Feng.error("最多预约人数不能为空");
        return
    }
@@ -120,8 +162,10 @@
        siteId: siteId,
        coachId: coachId,
        maxSubscribeNumber: maxSubscribeNumber,
        classStartTime: classStartTime.split(" - ")[0],
        classEndTime: classStartTime.split(" - ")[1],
        classStartTime: classStartTime,
        codeTime:codeTime,
        // classStartTime: classStartTime.split(" - ")[0],
        // classEndTime: classStartTime.split(" - ")[1],
        classWeeks: classWeeks,
        coverDrawing: coverDrawing,
        detailDrawing: detailDrawing,
@@ -162,6 +206,8 @@
    let siteId = $('#siteId').val();
    let coachId = $('#coachId').val();
    let maxSubscribeNumber = $('#maxSubscribeNumber').val();
    let codeTime = $('#codeTime').val();
    let classStartTime = $('#classStartTime').val();
    let classWeeks = '';
    $('input[name="classWeeks"]:checked').each(function (index, e) {
@@ -172,15 +218,21 @@
    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
            playPaiCoin: typeof paiCoin == "undefined" ? 0 : paiCoin,
            couponIds: typeof counpons == "undefined" ? 0 : counpons
        })
    });
    if(null == provinceCode || '' == provinceCode){
@@ -213,6 +265,9 @@
    }
    if(null == maxSubscribeNumber || '' == maxSubscribeNumber){
        Feng.error("最多预约人数不能为空");
        return
    }  if(null == codeTime || '' == codeTime){
        Feng.error("扣除课时不能为空");
        return
    }
    if(null == classStartTime || '' == classStartTime){
@@ -254,6 +309,8 @@
        siteId: siteId,
        coachId: coachId,
        maxSubscribeNumber: maxSubscribeNumber,
        codeTime: codeTime,
        classStartTime: classStartTime.split(" - ")[0],
        classEndTime: classStartTime.split(" - ")[1],
        classWeeks: classWeeks,
@@ -344,7 +401,7 @@
            paiCoin = true;
        }
    })
    var i =  $('#price > div').length+1
    let htmlStr = '' +
        '<div class="form-group">\n' +
        '                        <label class="col-sm-3 control-label">*课时数:</label>\n' +
@@ -357,13 +414,19 @@
        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 += '</span> <i class="fa fa-trash-o" style="font-size:24px" onclick="removePrice(this)"></i>\n' +
        '</div>\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" class = "counpons" id = "counpons'+i+'" >'+i+
        '</div>';
    $('#price').append(htmlStr);
}
function removePrice(e){
    $(e).parent('div').parent('div').remove();
}
cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js
@@ -13,7 +13,7 @@
 */
RegistrationRecord.initColumn = function () {
    let columns = [
        {field: 'selectItem', radio: true},
        {field: 'selectItem', checkbox: true},
        {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '购买用户', field: 'userName', align: 'center', valign: 'middle'},
        {title: '联系方式', field: 'phone', align: 'center', valign: 'middle'},
@@ -45,6 +45,8 @@
        return false;
    } else {
        RegistrationRecord.seItem = selected[0];
        RegistrationRecord.seItem1 = selected;
        return true;
    }
};
@@ -64,6 +66,42 @@
    this.layerIndex = index;
};
RegistrationRecord.holiClass = function () {
    if (this.check()) {
        var ids = RegistrationRecord.seItem1.map(function(item) {
            return item.id;
        }).join(",");
        let index = layer.open({
            type: 2,
            title: '报名信息',
            area: ['50%', '50%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tStudent/TTT?ids='+ids+'&id='+$('#id').val()
        });
        this.layerIndex = index;
    }
};
RegistrationRecord.transClass = function () {
    if (this.check()) {
        var ids = RegistrationRecord.seItem1.map(function(item) {
            return item.id;
        }).join(",");
        let index = layer.open({
            type: 2,
            title: '报名信息',
            area: ['50%', '50%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tStudent/trans?ids='+ids+'&id='+$('#id').val()
        });
        this.layerIndex = index;
    }
};
/**
 * 点击修改按钮时
 * @param userId 管理员id
cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java
@@ -8,6 +8,7 @@
import com.dsh.other.entity.CreateHistoryDto;
import com.dsh.other.entity.GetHistoryDto;
import com.dsh.other.model.BannerVo;
import com.dsh.other.model.dto.siteDto.SelectDto;
import com.dsh.other.model.vo.questionVo.QuestionSearchVO;
import com.dsh.other.service.IBannerService;
import com.dsh.other.util.ResultUtil;
@@ -112,9 +113,12 @@
    @ResponseBody
    @PostMapping("/class/gethisotory")
    public  List<GetHistoryDto> getHistory(@RequestBody Integer studentId){
        List<GetHistoryDto> list =   bannerService.gethistory(studentId);
      return   bannerService.gethistory(studentId);
        System.out.println("=-======GetHistoryDto========"+list);
      return   list;
    }
}
cloud-server-other/src/main/java/com/dsh/other/entity/GetHistoryDto.java
@@ -15,6 +15,5 @@
    private String pleasePic;
    private String passPic;
    private String createBy;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date date;
}
cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java
@@ -22,4 +22,5 @@
    void createHistory(CreateHistoryDto createHistoryDto);
    List<GetHistoryDto> gethistory(Integer studentId);
}
cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java
@@ -41,4 +41,6 @@
    public List<Banner> listAll(AdvertisementQuery query) {
        return bannerMapper.listAll(query);
    }
}
cloud-server-other/src/main/resources/mapper/BannerMapper.xml
@@ -38,10 +38,11 @@
    </insert>
    <select id="getHistory" resultType="com.dsh.other.entity.GetHistoryDto">
        SELECT hs.insertTime,hs.passPic,hs.pleasePic,us.`name`
        SELECT hs.insertTime as date,hs.passPic,hs.pleasePic,us.`name` as createBy
        from t_usetime_history hs
                 LEFT JOIN sys_user us on hs.createBy = us.id
        where hs.studentId = #{studentId}
    </select>
</mapper>