Browse Source

1.0.0大版本

一个番茄酱 2 years ago
parent
commit
5bbd38679e
56 changed files with 1199 additions and 454 deletions
  1. 48 103
      education_family/.idea/workspace.xml
  2. 1 1
      education_family/common/common_utils/src/main/java/com/xunwang/commonutils/JwtUtils.java
  3. BIN
      education_family/common/common_utils/target/classes/com/xunwang/commonutils/JwtUtils.class
  4. 8 1
      education_family/infrastructure/api_gateway/pom.xml
  5. 0 10
      education_family/pom.xml
  6. 9 0
      education_family/service/service-education/pom.xml
  7. 2 0
      education_family/service/service-education/src/main/java/com/xunwang/education/EducationApplication.java
  8. 3 20
      education_family/service/service-education/src/main/java/com/xunwang/education/controller/HomeController.java
  9. 45 0
      education_family/service/service-education/src/main/java/com/xunwang/education/controller/StrategyController.java
  10. 2 0
      education_family/service/service-education/src/main/java/com/xunwang/education/controller/TeacherCoursesController.java
  11. 49 0
      education_family/service/service-education/src/main/java/com/xunwang/education/entity/Strategy.java
  12. 15 0
      education_family/service/service-education/src/main/java/com/xunwang/education/entity/vo/ViewCountVo.java
  13. 5 0
      education_family/service/service-education/src/main/java/com/xunwang/education/feign/PayFeign.java
  14. 16 0
      education_family/service/service-education/src/main/java/com/xunwang/education/mapper/StrategyMapper.java
  15. 4 0
      education_family/service/service-education/src/main/java/com/xunwang/education/mapper/StudentRequirementsMapper.java
  16. 3 0
      education_family/service/service-education/src/main/java/com/xunwang/education/mapper/TeacherCoursesMapper.java
  17. 5 0
      education_family/service/service-education/src/main/java/com/xunwang/education/mapper/xml/StrategyMapper.xml
  18. 15 0
      education_family/service/service-education/src/main/java/com/xunwang/education/mapper/xml/StudentRequirementsMapper.xml
  19. 15 0
      education_family/service/service-education/src/main/java/com/xunwang/education/mapper/xml/TeacherCoursesMapper.xml
  20. 30 0
      education_family/service/service-education/src/main/java/com/xunwang/education/service/StrategyService.java
  21. 1 0
      education_family/service/service-education/src/main/java/com/xunwang/education/service/TeacherCoursesService.java
  22. 20 2
      education_family/service/service-education/src/main/java/com/xunwang/education/service/impl/InviteInfoServiceImpl.java
  23. 67 0
      education_family/service/service-education/src/main/java/com/xunwang/education/service/impl/StrategyServiceImpl.java
  24. 4 6
      education_family/service/service-education/src/main/java/com/xunwang/education/service/impl/TeacherCoursesServiceImpl.java
  25. 87 0
      education_family/service/service-education/src/main/java/com/xunwang/education/task/EducationTask.java
  26. 2 2
      education_family/service/service-education/src/test/java/com/xunwang/education/CodeGenerator.java
  27. 9 0
      education_family/service/service-file/pom.xml
  28. 5 24
      education_family/service/service-file/src/main/java/com/xunwang/file/controller/FileUpload.java
  29. 0 5
      education_family/service/service-file/src/main/resources/application-dev.yml
  30. 0 12
      education_family/service/service-file/src/test/java/com/xunwang/file/ServiceFileApplicationTests.java
  31. 20 0
      education_family/service/service-payment/pom.xml
  32. 7 3
      education_family/service/service-payment/src/main/java/com/xunwang/payment/config/WxPayConfig.java
  33. 0 0
      education_family/service/service-payment/src/main/resources/apiclient_key.pem
  34. 9 0
      education_family/service/service-ucenter/pom.xml
  35. 103 203
      education_uni/components/my-userinfo/my-userinfo.vue
  36. 423 0
      education_uni/components/xb-swiper-preview/index.vue
  37. 2 2
      education_uni/main.js
  38. 5 6
      education_uni/manifest.json
  39. 8 2
      education_uni/pages.json
  40. 19 12
      education_uni/pages/home/home.vue
  41. 2 2
      education_uni/pages/student/student.vue
  42. 10 4
      education_uni/pages/teacher/teacher.vue
  43. BIN
      education_uni/static/xb-swiper-preview/icon-back.png
  44. 6 4
      education_uni/subpkg/manager/complaint/manager_complaint_detail.vue
  45. 8 6
      education_uni/subpkg/manager/suggestion/manager_suggestion_detail.vue
  46. 8 4
      education_uni/subpkg/my/complaint/my_complaint_detail.vue
  47. 17 0
      education_uni/subpkg/my/home/my_home_strategy.vue
  48. 15 5
      education_uni/subpkg/my/invitation/my_invitation_receive_detail.vue
  49. 12 2
      education_uni/subpkg/my/invitation/my_invitation_send_detail.vue
  50. 12 2
      education_uni/subpkg/my/order/my_order_detail.vue
  51. 8 5
      education_uni/subpkg/my/suggestion/my_suggestion_detail.vue
  52. 12 2
      education_uni/subpkg/student/order/student_order_detail.vue
  53. 3 1
      education_uni/subpkg/student/require/student_require_all_detail.vue
  54. 3 1
      education_uni/subpkg/student/require/student_require_my_detail.vue
  55. 14 1
      education_uni/subpkg/teacher/course/teacher_course_all_detail.vue
  56. 3 1
      education_uni/subpkg/teacher/course/teacher_course_my_detail.vue

+ 48 - 103
education_family/.idea/workspace.xml

@@ -5,135 +5,50 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="d8501681-0944-4d49-82f9-09aabb10da6a" name="变更" comment="">
-      <change beforePath="$PROJECT_DIR$/.idea/encodings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/encodings.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/jarRepositories.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/jarRepositories.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/common/common_utils/src/main/java/com/xunwang/commonutils/RedisIdWorker.java" beforeDir="false" afterPath="$PROJECT_DIR$/common/common_utils/src/main/java/com/xunwang/commonutils/RedisIdWorker.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/common/common_utils/target/classes/com/xunwang/commonutils/RedisIdWorker.class" beforeDir="false" afterPath="$PROJECT_DIR$/common/common_utils/target/classes/com/xunwang/commonutils/RedisIdWorker.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/common/service_base/src/main/java/com/xunwang/servicebase/handler/MyMetaObjectHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/common/service_base/src/main/java/com/xunwang/servicebase/handler/MyMetaObjectHandler.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/common/service_base/target/classes/com/xunwang/servicebase/handler/MyMetaObjectHandler.class" beforeDir="false" afterPath="$PROJECT_DIR$/common/service_base/target/classes/com/xunwang/servicebase/handler/MyMetaObjectHandler.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/apiclient_key.pem" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/resources/apiclient_key.pem" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/common/common_utils/src/main/java/com/xunwang/commonutils/JwtUtils.java" beforeDir="false" afterPath="$PROJECT_DIR$/common/common_utils/src/main/java/com/xunwang/commonutils/JwtUtils.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/common/common_utils/target/classes/com/xunwang/commonutils/JwtUtils.class" beforeDir="false" afterPath="$PROJECT_DIR$/common/common_utils/target/classes/com/xunwang/commonutils/JwtUtils.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/infrastructure/api_gateway/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/infrastructure/api_gateway/pom.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-education/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/EducationApplication.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/EducationApplication.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/HomeController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/HomeController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/InviteInfoController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/InviteInfoController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MpInnerMsgController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MpInnerMsgController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MyFavoriteCoursesController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MyFavoriteCoursesController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MyFavoriteNeedsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MyFavoriteNeedsController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MySuggestionController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MySuggestionController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/StudentRequirementsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/StudentRequirementsController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/TeacherCertificationsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/TeacherCertificationsController.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/TeacherCoursesController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/TeacherCoursesController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/entity/InviteInfo.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/entity/InviteInfo.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/entity/StuNeeds.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/entity/StuNeeds.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/entity/socket/Commucation.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/entity/socket/Commucation.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/feign/PayFeign.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/feign/PayFeign.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/feign/UserFeign.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/feign/UserFeign.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/InviteInfoMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/InviteInfoMapper.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/MyFavoriteCoursesMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/MyFavoriteCoursesMapper.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/MyFavoriteNeedsMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/MyFavoriteNeedsMapper.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/StudentRequirementsMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/StudentRequirementsMapper.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/TeacherCoursesMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/TeacherCoursesMapper.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/xml/InviteInfoMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/xml/InviteInfoMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/xml/MyFavoriteCoursesMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/xml/MyFavoriteCoursesMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/xml/MyFavoriteNeedsMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/xml/MyFavoriteNeedsMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/xml/StudentRequirementsMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/xml/StudentRequirementsMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/xml/TeacherCoursesMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/mapper/xml/TeacherCoursesMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/InviteInfoService.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/InviteInfoService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/MyFavoriteCoursesService.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/MyFavoriteCoursesService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/MyFavoriteNeedsService.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/MyFavoriteNeedsService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/MySuggestionService.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/MySuggestionService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/StudentRequirementsService.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/StudentRequirementsService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/TeacherCertificationsService.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/TeacherCertificationsService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/TeacherCoursesService.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/TeacherCoursesService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/InviteInfoServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/InviteInfoServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/MyFavoriteCoursesServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/MyFavoriteCoursesServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/MyFavoriteNeedsServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/MyFavoriteNeedsServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/MySuggestionServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/MySuggestionServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/StudentRequirementsServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/StudentRequirementsServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/TeacherCertificationsServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/TeacherCertificationsServiceImpl.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/TeacherCoursesServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/TeacherCoursesServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/resources/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/resources/application.yml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-education/src/test/java/com/xunwang/education/CodeGenerator.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/test/java/com/xunwang/education/CodeGenerator.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-file/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-file/pom.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-file/src/main/java/com/xunwang/file/controller/FileUpload.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-file/src/main/java/com/xunwang/file/controller/FileUpload.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-file/src/main/resources/application-dev.yml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-file/src/main/resources/application-dev.yml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-file/src/test/java/com/xunwang/file/ServiceFileApplicationTests.java" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-payment/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/pom.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/controller/OrderInfoController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/controller/OrderInfoController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/entity/PaymentInfo.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/entity/PaymentInfo.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/entity/Refund.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/entity/Refund.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/entity/vo/MyOrder.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/entity/dto/MyOrder.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/feign/UserFeign.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/feign/UserFeign.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/mapper/OrderInfoMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/mapper/OrderInfoMapper.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/mapper/xml/OrderInfoMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/mapper/xml/OrderInfoMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/service/OrderInfoService.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/service/OrderInfoService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/service/impl/OrderInfoServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/service/impl/OrderInfoServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/service/impl/WxPayServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/service/impl/WxPayServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/task/wxPayTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/task/wxPayTask.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/resources/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/resources/application.yml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/resources/wxpay.properties" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/resources/wxpay.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/config/WxPayConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-payment/src/main/java/com/xunwang/payment/config/WxPayConfig.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/service/service-ucenter/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-ucenter/pom.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/controller/MiniProgramOpenidUidController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/controller/MiniProgramOpenidUidController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/entity/MpOpenidUid.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/entity/MpOpenidUid.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/mapper/MiniProgramOpenidUidMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/mapper/MiniProgramOpenidUidMapper.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/mapper/xml/MiniProgramOpenidUidMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/mapper/xml/MiniProgramOpenidUidMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/service/MiniProgramOpenidUidService.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/service/MiniProgramOpenidUidService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/service/impl/MiniProgramOpenidUidServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/service/impl/MiniProgramOpenidUidServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-ucenter/src/main/resources/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-ucenter/src/main/resources/application.yml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/App.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/App.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/components/my-coursedetail/my-coursedetail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/components/my-coursedetail/my-coursedetail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/components/my-login/my-login.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/components/my-login/my-login.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/components/my-search/my-search.vue" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/components/my-userinfo/my-userinfo.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/components/my-userinfo/my-userinfo.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/main.js" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/main.js" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/mixins/distance.js" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/../education_uni/manifest.json" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/manifest.json" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/pages.json" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/pages.json" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/pages/home/home.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/pages/home/home.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/pages/message/message.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/pages/message/message.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/pages/student/student.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/pages/student/student.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/pages/teacher/teacher.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/pages/teacher/teacher.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/tab_icons/home.png" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/static/tab_icons/home.png" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/tab_icons/home_active.png" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/static/tab_icons/home_active.png" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/tab_icons/message.png" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/static/tab_icons/message.png" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/tab_icons/message_active.png" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/static/tab_icons/message_active.png" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/tab_icons/my.png" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/static/tab_icons/my.png" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/tab_icons/my_active.png" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/static/tab_icons/my_active.png" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/tab_icons/student.png" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/static/tab_icons/student.png" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/tab_icons/student_active.png" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/static/tab_icons/student_active.png" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/tab_icons/teacher.png" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/static/tab_icons/teacher.png" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/tab_icons/teacher_active.png" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/static/tab_icons/teacher_active.png" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/teacher.png" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/static/zly.jpeg" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/store/user.js" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/store/user.js" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/manager/complaint/manager_complaint.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/manager/complaint/manager_complaint.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/manager/complaint/manager_complaint_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/manager/complaint/manager_complaint_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/manager/manager.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/manager/manager.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/manager/suggestion/manager_suggestion.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/manager/suggestion/manager_suggestion.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/manager/suggestion/manager_suggestion_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/manager/suggestion/manager_suggestion_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/complaint/my_complaint.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/complaint/my_complaint.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/complaint/my_complaint_handle.vue" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/invitation/my_invitation_receive.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/invitation/my_invitation_receive.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/complaint/my_complaint_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/complaint/my_complaint_detail.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/invitation/my_invitation_receive_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/invitation/my_invitation_receive_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/invitation/my_invitation_send.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/invitation/my_invitation_send.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/invitation/my_invitation_send_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/invitation/my_invitation_send_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/message/my_message_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/message/my_message_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/order/my_order.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/order/my_order.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/order/my_order_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/order/my_order_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/share/my_share.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/share/my_share.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/share/my_share_result.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/share/my_share_result.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/suggestion/my_suggestion.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/suggestion/my_suggestion.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/user/my_user_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/user/my_user_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/official_account/official_account.vue" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/student/require/student_require_add.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/student/require/student_require_add.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my/suggestion/my_suggestion_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my/suggestion/my_suggestion_detail.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/student/order/student_order_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/student/order/student_order_detail.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/student/require/student_require_all_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/student/require/student_require_all_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/student/require/student_require_my_collect.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/student/require/student_require_my_collect.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/student/require/student_require_my_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/student/require/student_require_my_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/student/require/student_require_my_publish.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/student/require/student_require_my_publish.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/student_order_detail/student_order_detail.vue" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/teacher/authentication/teacher_authentication.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/teacher/authentication/teacher_authentication.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/teacher/authentication/teacher_authentication_add.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/teacher/authentication/teacher_authentication_add.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/teacher/authentication/teacher_authentication_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/teacher/authentication/teacher_authentication_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/teacher/course/teacher_course_add.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/teacher/course/teacher_course_add.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/teacher/course/teacher_course_all_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/teacher/course/teacher_course_all_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/teacher/course/teacher_course_my_collect.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/teacher/course/teacher_course_my_collect.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/teacher/course/teacher_course_my_detail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/teacher/course/teacher_course_my_detail.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/teacher/course/teacher_course_my_publish.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/teacher/course/teacher_course_my_publish.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -188,7 +103,7 @@
     &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.2&quot;,
-    &quot;settings.editor.selected.configurable&quot;: &quot;File.Encoding&quot;,
+    &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
     &quot;spring.configuration.checksum&quot;: &quot;563f355ce74efede22e8a7477a1b8dde&quot;,
     &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
   }
@@ -203,6 +118,7 @@
       <recent name="C:\Users\86180\Desktop\新讯网\家教\mengyuan\family\education_family\service\service-ucenter\src\main\java\com\xunwang\ucenter\mapper" />
     </key>
     <key name="MoveFile.RECENT_KEYS">
+      <recent name="C:\Users\86180\Desktop\新讯网\家教\mengyuan\family\education_family\service\service-payment\src\main\resources" />
       <recent name="C:\Users\86180\Desktop\新讯网\家教\mengyuan\family\education_family\service\service-ucenter\src\main\java\com\xunwang\ucenter\utils" />
       <recent name="C:\Users\86180\Desktop\新讯网\家教\mengyuan\family\education_family\service\service-ucenter\src\main\java\com\xunwang\ucenter" />
       <recent name="C:\Users\86180\Desktop\新讯网\家教\mengyuan\family\education_family\service\service-ucenter\src\main\java\com\xunwang\ucenter\controller" />
@@ -221,7 +137,23 @@
       </set>
     </option>
   </component>
-  <component name="RunManager" selected="Spring Boot.EducationApplication">
+  <component name="RunManager" selected="Spring Boot.ServiceFileApplication">
+    <configuration name="CodeGenerator.run" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
+      <module name="service-education" />
+      <extension name="coverage">
+        <pattern>
+          <option name="PATTERN" value="com.xunwang.education.*" />
+          <option name="ENABLED" value="true" />
+        </pattern>
+      </extension>
+      <option name="PACKAGE_NAME" value="com.xunwang.education" />
+      <option name="MAIN_CLASS_NAME" value="com.xunwang.education.CodeGenerator" />
+      <option name="METHOD_NAME" value="run" />
+      <option name="TEST_OBJECT" value="method" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
     <configuration name="ApiGatewayApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
       <module name="api_gateway" />
       <option name="SPRING_BOOT_MAIN_CLASS" value="com.xunwang.gateway.ApiGatewayApplication" />
@@ -257,8 +189,16 @@
         <option name="Make" enabled="true" />
       </method>
     </configuration>
+    <recent_temporary>
+      <list>
+        <item itemvalue="JUnit.CodeGenerator.run" />
+      </list>
+    </recent_temporary>
   </component>
   <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
+  <component name="SpringBootOptions">
+    <option name="showAdditionalConfigNotification" value="false" />
+  </component>
   <component name="TaskManager">
     <task active="true" id="Default" summary="默认任务">
       <changelist id="d8501681-0944-4d49-82f9-09aabb10da6a" name="变更" comment="" />
@@ -295,7 +235,12 @@
       <workItem from="1682343573916" duration="78000" />
       <workItem from="1682386014350" duration="4802000" />
       <workItem from="1682390885746" duration="4087000" />
-      <workItem from="1682404394648" duration="675000" />
+      <workItem from="1682404394648" duration="2483000" />
+      <workItem from="1682472705408" duration="21879000" />
+      <workItem from="1682560334401" duration="925000" />
+      <workItem from="1682562789445" duration="8727000" />
+      <workItem from="1682583011822" duration="2548000" />
+      <workItem from="1682586247834" duration="1408000" />
     </task>
     <servers />
   </component>

+ 1 - 1
education_family/common/common_utils/src/main/java/com/xunwang/commonutils/JwtUtils.java

@@ -7,7 +7,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.util.Date;
 
 public class JwtUtils {
-    public static final long EXPIRE = 1000 * 60 * 60 * 1;
+    public static final long EXPIRE = 1000 * 60 * 60 * 5;
     public static final String APP_SECRET = "5ZNI9^a9FvXZ1K!5Sf@p@C5H";
 
     public static String getJwtToken(String id, String openid){

BIN
education_family/common/common_utils/target/classes/com/xunwang/commonutils/JwtUtils.class


+ 8 - 1
education_family/infrastructure/api_gateway/pom.xml

@@ -39,5 +39,12 @@
 
     </dependencies>
 
-
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 0 - 10
education_family/pom.xml

@@ -117,14 +117,4 @@
         </dependencies>
     </dependencyManagement>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>2.2.1.RELEASE</version>
-            </plugin>
-        </plugins>
-    </build>
-
 </project>

+ 9 - 0
education_family/service/service-education/pom.xml

@@ -20,4 +20,13 @@
         </dependency>
 
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 2 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/EducationApplication.java

@@ -6,11 +6,13 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.ComponentScan;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 @EnableDiscoveryClient // 开启服务发现
 @EnableFeignClients // 开启Feign
 @ComponentScan("com.xunwang")
 @SpringBootApplication
+@EnableScheduling
 @MapperScan("com.xunwang.education.mapper")
 public class EducationApplication {
 

+ 3 - 20
education_family/service/service-education/src/main/java/com/xunwang/education/controller/HomeController.java

@@ -1,36 +1,19 @@
 package com.xunwang.education.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.xunwang.commonutils.R;
-import com.xunwang.commonutils.RedisIdWorker;
-import com.xunwang.education.entity.StuNeeds;
-import com.xunwang.education.entity.TeacherCertifications;
-import com.xunwang.education.entity.TeacherCourses;
 import com.xunwang.education.entity.dto.MyStuNeedsDto;
 import com.xunwang.education.entity.dto.MyTeacherCoursesDto;
-import com.xunwang.education.entity.vo.TeacherList;
-import com.xunwang.education.entity.vo.TeacherViewCountVo;
-import com.xunwang.education.feign.ImageFeign;
 import com.xunwang.education.mapper.StudentRequirementsMapper;
 import com.xunwang.education.mapper.TeacherCoursesMapper;
-import com.xunwang.education.service.TeacherCertificationsService;
-import com.xunwang.education.service.TeacherCoursesService;
-import io.swagger.annotations.ApiOperation;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
-
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
-
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
 
 /**
  * @author Guan

+ 45 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/controller/StrategyController.java

@@ -0,0 +1,45 @@
+package com.xunwang.education.controller;
+
+
+import com.xunwang.commonutils.R;
+import com.xunwang.education.service.StrategyService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 攻略表 前端控制器
+ * </p>
+ *
+ * @author Long
+ * @since 2023-04-26
+ */
+@RestController
+@RequestMapping("/education/strategy")
+public class StrategyController {
+
+    @Resource
+    private StrategyService strategyService;
+
+    @ApiOperation("获取攻略子图")
+    @GetMapping("/getSmallPig")
+    public R getSmallPig() {
+        List<String> imglist = strategyService.getSmallPig();
+        return R.ok().data("list", imglist);
+    }
+
+    @ApiOperation("获取攻略图大图")
+    @GetMapping("/getBigPig")
+    public R getBigPig() {
+        List<String> list = strategyService.getBigPig();
+        return R.ok().data("list", list);
+    }
+
+}
+

+ 2 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/controller/TeacherCoursesController.java

@@ -153,6 +153,8 @@ public class TeacherCoursesController {
     public R getPersonCourseDetailById(HttpServletRequest request) {
         String courseId = request.getParameter("courseId");
         MyTeacherCourseDetailDto courseDetail = teacherCoursesService.getPersonCourseDetailById(courseId);
+        Double count = redisIdWorker.recordViewCount("course", courseId);
+        courseDetail.setViewedCount(count.intValue());
         return R.ok().data("one", courseDetail);
     }
 }

+ 49 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/entity/Strategy.java

@@ -0,0 +1,49 @@
+package com.xunwang.education.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 攻略表
+ * </p>
+ *
+ * @author Long
+ * @since 2023-04-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="Strategy对象", description="攻略表")
+public class Strategy implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "图片地址")
+    private String url;
+
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
+    @ApiModelProperty(value = "父id")
+    private Integer parentId;
+
+    @ApiModelProperty(value = "1-上架  0-下架")
+    private Integer status;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+
+}

+ 15 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/entity/vo/ViewCountVo.java

@@ -0,0 +1,15 @@
+package com.xunwang.education.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class ViewCountVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    private int count;
+}

+ 5 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/feign/PayFeign.java

@@ -24,4 +24,9 @@ public interface PayFeign {
     @GetMapping("/payment/wechat/publicAccount/order")
     void sendTemplateMsgOrder(@RequestParam("unionid") String unionid , @RequestParam("name") String name , @RequestParam("phone") String phone ,
                               @RequestParam("course") String course , @RequestParam("remark") String remark , @RequestParam("isTeacher") boolean isTeacher);
+
+    @GetMapping("/payment/wechat/publicAccount/pay")
+    void sendTemplateMsgPay(@RequestParam("unionid") String unionid , @RequestParam("grade") String grade , @RequestParam("subject") String subject ,
+                                   @RequestParam("address") String address , @RequestParam("reward") String reward , @RequestParam("phone") String phone,
+                                   @RequestParam("remark") String remark);
 }

+ 16 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/mapper/StrategyMapper.java

@@ -0,0 +1,16 @@
+package com.xunwang.education.mapper;
+
+import com.xunwang.education.entity.Strategy;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 攻略表 Mapper 接口
+ * </p>
+ *
+ * @author Long
+ * @since 2023-04-26
+ */
+public interface StrategyMapper extends BaseMapper<Strategy> {
+
+}

+ 4 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/mapper/StudentRequirementsMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunwang.education.entity.dto.MyPublishStuNeedsDto;
 import com.xunwang.education.entity.dto.MyStuNeedsDto;
 import com.xunwang.education.entity.vo.StuNeedsVo;
+import com.xunwang.education.entity.vo.ViewCountVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -33,4 +34,7 @@ public interface StudentRequirementsMapper extends BaseMapper<StuNeeds> {
      * @param stuNeedsVo
      */
     List<MyStuNeedsDto> selectAllStuNeed(@Param("item") StuNeedsVo stuNeedsVo);
+
+    void batchupdate(@Param("list") List<ViewCountVo> list);
+
 }

+ 3 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/mapper/TeacherCoursesMapper.java

@@ -7,6 +7,7 @@ import com.xunwang.education.entity.dto.MyTeacherCourseDetailDto;
 import com.xunwang.education.entity.dto.MyTeacherCoursesDto;
 import com.xunwang.education.entity.vo.TeacherList;
 import com.xunwang.education.entity.vo.TeacherListQuery;
+import com.xunwang.education.entity.vo.ViewCountVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -45,4 +46,6 @@ public interface TeacherCoursesMapper extends BaseMapper<TeacherCourses> {
      * @return
      */
     MyTeacherCourseDetailDto getPersonCourseDetailById(String courseId);
+
+    void batchupdate(@Param("list") List<ViewCountVo> list);
 }

+ 5 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/mapper/xml/StrategyMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunwang.education.mapper.StrategyMapper">
+
+</mapper>

+ 15 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/mapper/xml/StudentRequirementsMapper.xml

@@ -2,6 +2,21 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xunwang.education.mapper.StudentRequirementsMapper">
 
+    <update id="batchupdate" parameterType="list">
+        update stu_needs set
+        viewed_count =
+        <foreach collection="list" item="stu" index="index"
+                 separator=" " open="case require_id" close="end">
+            when #{stu.id} then
+            #{stu.count}
+        </foreach>
+        where require_id in
+        <foreach collection="list" item="stu" index="index"
+                 separator="," open="(" close=")">
+            #{stu.id}
+        </foreach>
+    </update>
+
     <select id="selectBatch" resultType="com.xunwang.education.entity.dto.MyStuNeedsDto">
         select require_id, name, subject_big, subject_small, salary, location_al, sex, goal
         from stu_needs

+ 15 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/mapper/xml/TeacherCoursesMapper.xml

@@ -2,6 +2,21 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xunwang.education.mapper.TeacherCoursesMapper">
 
+    <update id="batchupdate" parameterType="list">
+        update teacher_courses set
+        viewed_count =
+        <foreach collection="list" item="course" index="index"
+                 separator=" " open="case course_id" close="end">
+            when #{course.id} then
+            #{course.count}
+        </foreach>
+        where course_id in
+        <foreach collection="list" item="course" index="index"
+                 separator="," open="(" close=")">
+            #{course.id}
+        </foreach>
+    </update>
+
     <select id="selectTeachers" resultType="com.xunwang.education.entity.dto.MyTeacherCoursesDto">
         select tcou.course_id, tcou.teach_age, tcou.subject, tcou.experience, tcou.location, tcou.location_al, tc.name, tc.profile_photo, tc.school, tc.education, tc.sex
         from teacher_courses tcou join teacher_certifications tc

+ 30 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/service/StrategyService.java

@@ -0,0 +1,30 @@
+package com.xunwang.education.service;
+
+import com.xunwang.education.entity.Strategy;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 攻略表 服务类
+ * </p>
+ *
+ * @author Long
+ * @since 2023-04-26
+ */
+public interface StrategyService extends IService<Strategy> {
+
+    /**
+     * 获取攻略子图
+     *
+     * @return
+     */
+    List<String> getSmallPig();
+
+    /**
+     * 获取攻略图大图
+     * @return
+     */
+    List<String> getBigPig();
+}

+ 1 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/service/TeacherCoursesService.java

@@ -93,4 +93,5 @@ public interface TeacherCoursesService extends IService<TeacherCourses> {
      * @return
      */
     MyTeacherCourseDetailDto getPersonCourseDetailById(String courseId);
+
 }

+ 20 - 2
education_family/service/service-education/src/main/java/com/xunwang/education/service/impl/InviteInfoServiceImpl.java

@@ -12,6 +12,7 @@ import com.xunwang.education.entity.dto.MyInviteInfoDto;
 import com.xunwang.education.entity.socket.Commucation;
 import com.xunwang.education.entity.socket.Type;
 import com.xunwang.education.feign.PayFeign;
+import com.xunwang.education.feign.UserFeign;
 import com.xunwang.education.handler.ChatEndpoint;
 import com.xunwang.education.mapper.InviteInfoMapper;
 import com.xunwang.education.service.InviteInfoService;
@@ -25,6 +26,7 @@ import springfox.documentation.spring.web.json.Json;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -49,6 +51,9 @@ public class InviteInfoServiceImpl extends ServiceImpl<InviteInfoMapper, InviteI
     @Resource
     private PayFeign payFeign;
 
+    @Resource
+    private UserFeign userFeign;
+
     @Resource
     private TeacherCoursesService teacherCoursesService;
 
@@ -114,7 +119,7 @@ public class InviteInfoServiceImpl extends ServiceImpl<InviteInfoMapper, InviteI
     public R agreeInvitation(HttpServletRequest request) throws IOException {
         String id = request.getParameter("id");
         InviteInfo invite = getById(id);
-        String lockId = invite.getCourseId() + invite.getRequireId();
+        String lock = invite.getCourseId();
 
         // 1.查询课程是否下架,是否上锁
         String s = teacherCoursesService.queryLockOrDisplay(invite.getCourseId());
@@ -135,7 +140,7 @@ public class InviteInfoServiceImpl extends ServiceImpl<InviteInfoMapper, InviteI
         boolean b;
         boolean b1;
         // 3.锁定需求号和课程号
-        synchronized (lockId) {
+        synchronized (lock) {
             b = teacherCoursesService.lockCourseId(invite.getCourseId(), courseVersion);
             b1 = studentRequirementsService.lockStuNeedId(invite.getRequireId(), requireVersion);
         }
@@ -161,6 +166,19 @@ public class InviteInfoServiceImpl extends ServiceImpl<InviteInfoMapper, InviteI
         } else {
             r.data("identify", "学员");
         }
+
+        // 6.向教员发送公众号支付消息
+        String requireId = invite.getRequireId();
+        StuNeeds stuNeeds = studentRequirementsService.getOne(new LambdaQueryWrapper<StuNeeds>().eq(StuNeeds::getRequireId, requireId));
+        String subjectBig = stuNeeds.getSubjectBig();
+        String subjectSmall = stuNeeds.getSubjectSmall();
+        String locationStr = stuNeeds.getLocationStr();
+        BigDecimal salary = stuNeeds.getSalary();
+        String stringSalary = salary.toString();
+        String uid = stuNeeds.getUid();
+        String phone = userFeign.getPhoneByUid(uid);
+        String unionid = userFeign.getUnionIdByUid(uid);
+        payFeign.sendTemplateMsgPay(unionid, subjectBig, subjectSmall, locationStr, stringSalary, phone, "");
         return r;
     }
 

+ 67 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/service/impl/StrategyServiceImpl.java

@@ -0,0 +1,67 @@
+package com.xunwang.education.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.xunwang.education.entity.Strategy;
+import com.xunwang.education.mapper.StrategyMapper;
+import com.xunwang.education.service.StrategyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+/**
+ * <p>
+ * 攻略表 服务实现类
+ * </p>
+ *
+ * @author Long
+ * @since 2023-04-26
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl<StrategyMapper, Strategy> implements StrategyService {
+
+    /**
+     * 获取攻略子图
+     *
+     * @return
+     */
+    @Override
+    public List<String> getSmallPig() {
+        return getSinglePic(false);
+    }
+
+    /**
+     * 获取攻略图大图
+     * @return
+     */
+    @Override
+    public List<String> getBigPig() {
+        return getSinglePic(true);
+    }
+
+    private List<String> getSinglePic(boolean isParent) {
+        LambdaQueryWrapper<Strategy> wrapper = new LambdaQueryWrapper<>();
+        if (isParent) {
+            wrapper.eq(Strategy::getStatus, "1").eq(Strategy::getParentId, 0);
+        } else {
+            wrapper.eq(Strategy::getStatus, "1").ne(Strategy::getParentId, 0);
+        }
+        List<Strategy> list = baseMapper.selectList(wrapper);
+        Collections.sort(list, new Comparator<Strategy>() {
+            @Override
+            public int compare(Strategy o1, Strategy o2) {
+                if (o1.getSort() >= o2.getSort()) {
+                    return 1;
+                } else {
+                    return -1;
+                }
+            }
+        });
+        ArrayList<String> imgList = new ArrayList<>();
+        list.forEach(item -> imgList.add(item.getUrl()));
+        return imgList;
+    }
+}

+ 4 - 6
education_family/service/service-education/src/main/java/com/xunwang/education/service/impl/TeacherCoursesServiceImpl.java

@@ -6,25 +6,22 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunwang.commonutils.JwtUtils;
 import com.xunwang.commonutils.RedisIdWorker;
 import com.xunwang.education.entity.TeacherCourses;
-import com.xunwang.education.entity.dto.MyPublishStuNeedsDto;
 import com.xunwang.education.entity.dto.MyPublishTeacherCoursesDto;
 import com.xunwang.education.entity.dto.MyTeacherCourseDetailDto;
 import com.xunwang.education.entity.dto.MyTeacherCoursesDto;
 import com.xunwang.education.entity.vo.TeacherCoursesVo;
-import com.xunwang.education.entity.vo.TeacherList;
 import com.xunwang.education.entity.vo.TeacherListQuery;
 import com.xunwang.education.mapper.TeacherCoursesMapper;
 import com.xunwang.education.service.TeacherCertificationsService;
 import com.xunwang.education.service.TeacherCoursesService;
-
 import org.springframework.beans.BeanUtils;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletRequest;
 import javax.annotation.Resource;
-
-import java.util.*;
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * <p>
@@ -224,4 +221,5 @@ public class TeacherCoursesServiceImpl extends ServiceImpl<TeacherCoursesMapper,
         return baseMapper.getPersonCourseDetailById(courseId);
     }
 
+
 }

+ 87 - 0
education_family/service/service-education/src/main/java/com/xunwang/education/task/EducationTask.java

@@ -0,0 +1,87 @@
+package com.xunwang.education.task;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.xunwang.education.entity.StuNeeds;
+import com.xunwang.education.entity.TeacherCourses;
+import com.xunwang.education.entity.vo.ViewCountVo;
+import com.xunwang.education.mapper.StudentRequirementsMapper;
+import com.xunwang.education.mapper.TeacherCoursesMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.data.redis.core.ZSetOperations;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+@Slf4j
+@Component
+public class EducationTask {
+
+    @Resource
+    private StringRedisTemplate stringRedisTemplate;
+
+    @Resource
+    private TeacherCoursesMapper teacherCoursesMapper;
+
+    @Resource
+    private StudentRequirementsMapper studentRequirementsMapper;
+
+    @Scheduled(cron = "0 0 12 * * ?")
+    public void batchSaveViewCount() {
+        log.info("batchSaveViewCount-course 被执行");
+        String courseView = "viewCount:course";
+        this.updateViewCount(courseView);
+
+        log.info("batchSaveViewCount-stuNeed 被执行");
+        String StuView = "viewCount:stuNeed";
+        this.updateViewCount(StuView);
+    }
+
+    @Scheduled(cron = "0 0/30 * * * ?")
+    public void unlockCourseOrStuNeed() {
+        log.info("30分钟解锁课程或需求");
+        LambdaQueryWrapper<TeacherCourses> courseWrapper = new LambdaQueryWrapper<>();
+        courseWrapper.eq(TeacherCourses::getDisplay, "上架").eq(TeacherCourses::getLocked, "已锁");
+        List<TeacherCourses> teacherCourses = teacherCoursesMapper.selectList(courseWrapper);
+        for (TeacherCourses teacherCourse : teacherCourses) {
+            teacherCourse.setLocked("未锁");
+            teacherCoursesMapper.update(teacherCourse, new LambdaQueryWrapper<TeacherCourses>().eq(TeacherCourses::getCourseId, teacherCourse.getCourseId()));
+        }
+
+        LambdaQueryWrapper<StuNeeds> stuWrapper = new LambdaQueryWrapper<>();
+        stuWrapper.eq(StuNeeds::getDisplay, "上架").eq(StuNeeds::getLocked, "已锁");
+        List<StuNeeds> stuNeeds = studentRequirementsMapper.selectList(stuWrapper);
+        for (StuNeeds stuNeed : stuNeeds) {
+            stuNeed.setLocked("未锁");
+            studentRequirementsMapper.update(stuNeed, new LambdaQueryWrapper<StuNeeds>().eq(StuNeeds::getRequireId, stuNeed.getRequireId()));
+        }
+    }
+
+    private void updateViewCount(String key) {
+
+        Set<ZSetOperations.TypedTuple<String>> tuples = stringRedisTemplate.opsForZSet().rangeWithScores(key, 0, -1);
+        ArrayList<ViewCountVo> ViewCount = new ArrayList<>();
+        if (tuples != null) {
+            for (ZSetOperations.TypedTuple<String> tuple : tuples) {
+                String id = tuple.getValue();
+                Double count = tuple.getScore();
+                ViewCountVo viewCountVo = new ViewCountVo();
+                if (count != null) {
+                    viewCountVo.setCount(count.intValue());
+                }
+                viewCountVo.setId(id);
+                ViewCount.add(viewCountVo);
+            }
+            if ("viewCount:stuNeed".equals(key)) {
+                studentRequirementsMapper.batchupdate(ViewCount);
+            }
+            if ("viewCount:course".equals(key)) {
+                teacherCoursesMapper.batchupdate(ViewCount);
+            }
+        }
+    }
+}

+ 2 - 2
education_family/service/service-education/src/test/java/com/xunwang/education/CodeGenerator.java

@@ -41,7 +41,7 @@ public class CodeGenerator {
 
         // 3、数据源配置
         DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setUrl("jdbc:mysql://101.204.146.11:3306/home_teacher?serverTimezone=GMT%2B8");
+        dsc.setUrl("jdbc:mysql://192.168.0.10:3306/home_teacher?serverTimezone=GMT%2B8");
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
         dsc.setUsername("root");
         dsc.setPassword("FXI@gi^l");
@@ -60,7 +60,7 @@ public class CodeGenerator {
 
         // 5、策略配置
         StrategyConfig strategy = new StrategyConfig();
-        strategy.setInclude("mp_inner_msg");
+        strategy.setInclude("strategy");
         strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
         strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀
 

+ 9 - 0
education_family/service/service-file/pom.xml

@@ -25,4 +25,13 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

+ 5 - 24
education_family/service/service-file/src/main/java/com/xunwang/file/controller/FileUpload.java

@@ -3,30 +3,14 @@ package com.xunwang.file.controller;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import com.xunwang.commonutils.R;
 import com.xunwang.file.util.MinioUtil;
-import io.netty.handler.codec.base64.Base64Encoder;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.commons.codec.binary.Base64;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
-import javax.annotation.Resource;
-import javax.imageio.stream.FileImageInputStream;
-import javax.servlet.http.HttpServletRequest;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-import sun.misc.BASE64Encoder;
 
-import javax.imageio.stream.FileImageInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.*;
+import javax.annotation.Resource;
 
 @ApiSupport(author = "Long")
 @Api("文件相关")
@@ -34,9 +18,6 @@ import java.util.*;
 @RequestMapping("/file")
 public class FileUpload {
 
-    @Value("${define.windows.path}")
-    private String windowsPath;
-
     @Resource
     private MinioUtil minioUtil;
 

+ 0 - 5
education_family/service/service-file/src/main/resources/application-dev.yml

@@ -21,11 +21,6 @@ minio:
   secretKey: GshpJQFhLb
   bucketName: education
 
-# 自定义参数
-define:
-  windows:
-    path: E:\code\HomeTeacher\family-education\education_family\uploadFiles
-
 # 自定义注解:是否开启swagger
 swagger:
   enable: true

+ 0 - 12
education_family/service/service-file/src/test/java/com/xunwang/file/ServiceFileApplicationTests.java

@@ -1,12 +0,0 @@
-package com.xunwang.file;
-
-import org.junit.Test;
-
-
-class ServiceFileApplicationTests {
-
-    @Test
-    void contextLoads() {
-    }
-
-}

+ 20 - 0
education_family/service/service-payment/pom.xml

@@ -47,4 +47,24 @@
 		</dependency>
 	</dependencies>
 
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<goals>
+							<goal>repackage</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
 </project>

+ 7 - 3
education_family/service/service-payment/src/main/java/com/xunwang/payment/config/WxPayConfig.java

@@ -15,10 +15,12 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.PropertySource;
+import org.springframework.core.io.ClassPathResource;
 
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.security.GeneralSecurityException;
 import java.security.PrivateKey;
@@ -113,9 +115,11 @@ public class WxPayConfig {
      */
     public PrivateKey getPrivateKey(String filename) {
         try {
-            return PemUtil.loadPrivateKey(
-                    new FileInputStream(filename));
-        } catch (FileNotFoundException e) {
+            //liunx系统运行找不到文件路径,需要采用这种方式加载
+            ClassPathResource resource = new ClassPathResource(filename);
+            InputStream inputStream = resource.getInputStream();
+            return PemUtil.loadPrivateKey(inputStream);
+        } catch (Exception e) {
             throw new RuntimeException("私钥文件不存在", e);
         }
     }

+ 0 - 0
education_family/apiclient_key.pem → education_family/service/service-payment/src/main/resources/apiclient_key.pem


+ 9 - 0
education_family/service/service-ucenter/pom.xml

@@ -32,4 +32,13 @@
         </dependency>
 
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 103 - 203
education_uni/components/my-userinfo/my-userinfo.vue

@@ -1,109 +1,102 @@
 <template>
 	<view>
-		<view class="container">
-			<view class="wrapper">
-			    <!-- 上方头像和昵称区域 -->
-			    <view class="headWrapper" @click="toMyDetail">
-			        <image class="headImg" :src="userinfo.avatar"></image>
-			        <view class="headNick">
-			            <view class="userNickName">{{userinfo.alias}}</view>
-			            <view class="userId">{{userinfo.uid}}</view>
-			        </view>
-			        <image class="rightArrow" src="@/static/right.png"></image>
-			    </view>
-			    <!-- 关注公众号和推荐分享 -->
-			    <view class="recommendWraooer" @click="toOfficialAccount">
-			        <view class="recommend">
-			            <view>关注公众号</view>
-			            <image class="rightIcon" src="@/static/right.png"></image>
-			        </view>
-			        <view class="recommend"  @click="toMyShare">
-			            <view>分享与返现</view>
-			            <image class="rightIcon" src="@/static/right.png"></image>
-			        </view>
-			    </view>
-			    <!-- 订单 -->
-			    <view class="orderList" @click="toMyOrder">
-			        <view>订单</view>
-			        <image class="rightArrow" src="@/static/right.png"></image>
-			    </view>
-			    <!-- 收到和发出的邀请 -->
-			    <view class="invitation">
-			        <view class="myInvitation" @click="sendInvitation">
-			            <view>发出的邀请</view>
-			            <image class="rightIcon" src="@/static/right.png"></image>
-			        </view>
-			        <view class="myInvitation" @click="receivedInvitation">
-			            <view>收到的邀请</view>
-			            <image class="rightIcon" src="@/static/right.png"></image>
-			        </view>
-			    </view>
-			    <!-- 收藏的需求和课程 -->
-			    <view class="collection">
-			        <view class="myCollected" @click="collectStuNeeds">
-			            <view>已收藏的需求</view>
-			            <image class="rightIcon" src="@/static/right.png"></image>
-			        </view>
-			        <view class="myCollected" @click="collectCourses">
-			            <view>已收藏的课程</view>
-			            <image class="rightIcon" src="@/static/right.png"></image>
-			        </view>
-			    </view>
-			    <!-- 教员认证和课程发布 -->
-			    <view class="teachCourse">
-			        <view class="teachCourseDetail" @click="authorize">
-			            <view>教员认证</view>
-			            <image class="rightArrow" src="@/static/right.png"></image>
-			        </view>
-			        <view class="teachCourseDetail" @click="toCoursePublish">
-			            <view>发布新的课程</view>
-			            <image class="rightArrow" src="@/static/right.png"></image>
-			        </view>
-			        <view class="teachCourseDetail" @click="coursePublished">
-			            <view>已发布的课程</view>
-			            <image class="rightArrow" src="@/static/right.png"></image>
-			        </view>
-			    </view>
-			    <!-- 我的需求 -->
-			    <view class="myNeed">
-			        <view class="myNeedDetail" @click="toNeedPublis">
-			            <view>发布新的需求</view>
-			            <image class="rightArrow" src="@/static/right.png"></image>
-			        </view>
-			        <view class="teachCourseDetail" @click="Published">
-			            <view>已发布的需求</view>
-			            <image class="rightArrow" src="@/static/right.png"></image>
-			        </view>
-			    </view>
-			    <!-- 建议和投诉 -->
-			    <view class="suggest">
-			        <view class="suggestDetail" @click="toMySuggestion">
-			            <view>我的建议</view>
-			            <image class="rightIcon" src="@/static/right.png"></image>
-			        </view>
-			        <view class="suggestDetail" @click="toMyComplaint">
-			            <view>我的投诉</view>
-			            <image class="rightIcon" src="@/static/right.png"></image>
-			        </view>
-			    </view>
-			    <view class="manager" wx:if="true" @click="toManager">
-			        <view>管理员专用</view>
-			        <image class="rightArrow" src="@/static/right.png"></image>
-			    </view>
-			</view>
-		</view>
+		<uni-card :title="userinfo.alias" :sub-title="userinfo.uid" :thumbnail="userinfo.avatar" @click="toMyDetail"></uni-card>
+		<uni-list>
+			<uni-list-item :show-extra-icon="true" showArrow :extra-icon="OfficialAccountextraIcon" title="关注公众号" link="navigateTo" @click="toOfficialAccount"/>
+			<uni-list-item :show-extra-icon="true" showArrow :extra-icon="MyShareextraIcon" title="分享与返现" link="navigateTo" @click="toMyShare"/>
+			<uni-list-item :show-extra-icon="true" showArrow :extra-icon="MyOrderextraIcon" title="订单" link="navigateTo" @click="toMyOrder"/>
+			<uni-section title="邀请" titleColor="#2BAFF8" type="line">
+				<uni-list>
+					<uni-list-item :show-extra-icon="true" showArrow :extra-icon="extraIcon1" title="发出的邀请" link="navigateTo" @click="sendInvitation"/>
+					<uni-list-item :show-extra-icon="true" showArrow :extra-icon="extraIcon1" title="收到的邀请" link="navigateTo" @click="receivedInvitation"/>
+				</uni-list>
+			</uni-section>
+			<uni-section title="教员" titleColor="#FB748F" type="line">
+				<uni-list>
+					<uni-list-item :show-extra-icon="true" showArrow :extra-icon="extraIcon2" title="教员认证" link="navigateTo" @click="authorize"/>
+					<uni-list-item :show-extra-icon="true" showArrow :extra-icon="extraIcon2" title="发布新的课程" link="navigateTo" @click="toCoursePublish"/>
+					<uni-list-item :show-extra-icon="true" showArrow :extra-icon="extraIcon2" title="已发布的课程" link="navigateTo" @click="coursePublished"/>
+					<uni-list-item :show-extra-icon="true" showArrow :extra-icon="extraIcon2" title="已收藏的课程" link="navigateTo" @click="collectCourses"/>
+				</uni-list>
+			</uni-section>
+			<uni-section title="学员" titleColor="#4cd964" type="line">
+				<uni-list>
+					<uni-list-item :show-extra-icon="true" showArrow :extra-icon="extraIcon3" title="发布新的需求" link="navigateTo" @click="toNeedPublis"/>
+					<uni-list-item :show-extra-icon="true" showArrow :extra-icon="extraIcon3" title="已发布的需求" link="navigateTo" @click="Published"/>
+					<uni-list-item :show-extra-icon="true" showArrow :extra-icon="extraIcon3" title="已收藏的需求" link="navigateTo" @click="collectStuNeeds"/>
+				</uni-list>
+			</uni-section>
+			<uni-section title="投诉与建议" titleColor="#7E7AF8" type="line">
+				<uni-list>
+					<uni-list-item :show-extra-icon="true" showArrow :extra-icon="extraIcon4" title="我的建议" link="navigateTo" @click="toMySuggestion"/>
+					<uni-list-item :show-extra-icon="true" showArrow :extra-icon="extraIcon4" title="我的投诉" link="navigateTo" @click="toMyComplaint"/>
+				</uni-list>
+			</uni-section>
+			<uni-list-item v-if="isAdmin" :show-extra-icon="true" showArrow :extra-icon="extraIcon5" title="管理员专用" link="navigateTo" @click="toManager"/>
+		</uni-list>
 	</view>
-
 </template>
 
 <script>
-	import { mapState, mapMutations } from 'vuex'
+	import { mapState } from 'vuex'
 	
 	export default {
 		name:"my-userinfo",
+		options: {
+			styleIsolation: 'shared', // 解除样式隔离
+		},
 		computed: {
 			...mapState('m_user', ['userinfo'])
 		},
+		data() {
+			return {
+				isAdmin: false,
+				OfficialAccountextraIcon: {
+					color: '#2BAFF8',
+					size: '22',
+					type: 'star-filled'
+				},
+				MyShareextraIcon: {
+					color: '#FB748F',
+					size: '22',
+					type: 'pyq'
+				},
+				MyOrderextraIcon: {
+					color: '#4cd964',
+					size: '22',
+					type: 'fire-filled'
+				},
+				extraIcon1: {
+					color: '#2BAFF8',
+					size: '22',
+					type: 'email-filled'
+				},
+				extraIcon2: {
+					color: '#FB748F',
+					size: '22',
+					type: 'auth-filled'
+				},
+				extraIcon3: {
+					color: '#4cd964',
+					size: '22',
+					type: 'staff-filled'
+				},
+				// 投诉与建议
+				extraIcon4: {
+					color: '#7E7AF8',
+					size: '22',
+					type: 'help-filled'
+				},
+				extraIcon5: {
+					color: '#F1D302',
+					size: '22',
+					type: 'eye-filled'
+				}
+			}
+		},
+		created() {
+			this.isAdmin = this.userinfo.isAdmin === 1 ? true : false
+		},
 		methods: {
 			toMyDetail() {
 				uni.navigateTo({
@@ -190,124 +183,31 @@
 </script>
 
 <style lang="scss" scoped>
-/* 设置本页面背景样式 */
-.container {
-    position: relative;
-	padding-left: 25rpx;
-	height: 100%;
-}
-/* 设置本页面背景样式 */
-.wrapper {
-    width: 95%;
-}
-
-/* 顶部头像和昵称区域 */
-.headWrapper{
-    display: flex;
-    height: 180rpx;
-    background-color: #FFF2CC;
-    border-radius: 20rpx;
-    align-items: center;
-}
-
-/* 头像 */
-.headImg{
-    width: 120rpx;
-    height: 120rpx;
-    border-radius: 50%;
-    margin-left: 20rpx;    
-}
-
-/* 昵称和ID区域 */
-.headNick{
-    margin-left: 40rpx;
+// 用户头像
+::v-deep .uni-card--border {
+	height: 240rpx;
 }
 
-.userNickName,
-.userId{
-    height: 60rpx;
-    line-height: 60rpx;
-}
-/* 昵称 */
-.userNickName{
-    font-weight: bold;
-}
-/* ID */
-.userId{
-    color: red;
+::v-deep .uni-card .uni-card__header .uni-card__header-avatar {
+	height: 200rpx;
+	width: 200rpx;
 }
 
-/* 箭头样式 */
-.rightArrow,
-.rightIcon{
-    position: absolute;
-    height: 40rpx;
-    width: 40rpx;
-}
-.rightArrow{
-    right: 70rpx;
+::v-deep .uni-card .uni-card__header .uni-card__header-avatar .uni-card__header-avatar-image {
+	height: 200rpx !important;
+	width: 200rpx !important;
 }
 
-/* 邀请、收藏、建议和投诉的箭头位置 */
-.rightIcon{
-    right: 30rpx;
+::v-deep .uni-card .uni-card__header .uni-card__header-content .uni-card__header-content-title {
+	font-size: 60rpx !important;
 }
 
-/* 订单、管理员专用 */
-.orderList,
-.manager{
-    display: flex;
-    height: 80rpx;
-    line-height: 80rpx;
-    margin-top: 20rpx;
-    padding-left: 20rpx;
-    background-color: #FFF2CC;
-    border-radius: 20rpx;
-    align-items: center;
-}
-.manager{
-    margin-bottom: 30rpx;
+::v-deep .uni-card .uni-card__header .uni-card__header-extra .uni-card__header-extra-text {
+	font-size: 60rpx !important;
 }
 
-/* 关注和推荐、邀请、收藏、建议和投诉 */
-.invitation,
-.collection,
-.recommendWraooer,
-.suggest{
-    display: flex;
-    justify-content: space-between;
+::v-deep .uni-list-item {
+	font-size: 20px !important;
+	height: 50px;
 }
-
-.myInvitation,
-.myCollected,
-.recommend,
-.suggestDetail{
-    width: 45%;
-    display: flex;
-    height: 80rpx;
-    line-height: 80rpx;
-    align-items: center;
-    background-color: #FFF2CC;
-    margin-top: 20rpx;
-    padding-left: 20rpx;
-    border-radius: 20rpx;
-    position: relative;
-}
-
-/* 教员认证和课程发布、我的需求样式 */
-.teachCourse,
-.myNeed{
-    background-color: #FFF2CC;
-    border-radius: 20rpx;
-    margin-top: 20rpx;    
-    padding: 20rpx 0 20rpx 20rpx;
-}
-.teachCourseDetail,
-.myNeedDetail{
-    display: flex;
-    height: 80rpx;
-    line-height: 80rpx;
-    align-items: center;
-}
-
 </style>

+ 423 - 0
education_uni/components/xb-swiper-preview/index.vue

@@ -0,0 +1,423 @@
+<template>
+  <view class="swiper-content">
+    <view class="hander-top p-lr-32 w-s flex-j-sb--a-ct">
+      <view class="icon-back-wrap"
+            @click="onBack">
+       <image class="icon-back"
+               src="/static/xb-swiper-preview/icon-back.png"
+               mode="widthFix" />
+      </view>
+      <view class="count">{{currentImg + 1}} / {{ imgs.length }}</view>
+    </view>
+  
+	<swiper class="swiper-img"
+            :current="currentImg"
+            :duration="300"
+            @change="changeSwiper">
+      <swiper-item class="swiper-item"
+                   v-for="(item, index) in imgs"
+                   :key="index">
+        <view class="img-page">
+          <movable-area scale-area>
+            <movable-view direction="all"
+                          scale="true"
+                          scale-min="1"
+                          scale-max="4">
+              <image class="max-img"
+                     :src="item"
+                     :lazy-load="true"
+                     mode="aspectFill" />
+            </movable-view>
+          </movable-area>
+        </view>
+      </swiper-item>
+    </swiper>
+    <view class="item-bottom">
+      <scroll-view class="scroll-view_H "
+                   :scroll-x="true"
+                   :scroll-into-view="scrollTopIndex"
+                   :scroll-with-animation="true"
+                   scroll-left="20">
+        <view class="img-page-box scroll-view-item_H"
+              :class="currentImg == index ? 'img-page-checked' : ''"
+              v-for="(item, index) in imgs"
+              :key="index"
+              :id="`scrollToIndex${index}`"
+              @click.stop="toImg(index)">
+          <image class="img"
+                 :src="item"
+                 mode="aspectFill" />
+        </view>
+      </scroll-view>
+    </view>
+
+    <!-- <view class="handle-wrap flex-j-sb--a-ct p-lr-32">
+      <view class="w-64 h-64"
+            @click="isScale = !isScale">
+        <image v-show="isScale"
+               class="w-64 h-64"
+               src="/static/xb-swiper-preview/icon-scale-yes.png"
+               mode="widthFix" />
+        <image v-show="!isScale"
+               class="w-64 h-64"
+               src="/static/xb-swiper-preview/icon-scale.png"
+               mode="widthFix" />
+      </view>
+
+      <view class="w-64 h-64"
+            @click="isCollect = !isCollect">
+        <image v-show="isCollect"
+               class="w-64 h-64"
+               src="/static/xb-swiper-preview/icon-collect-yes.png"
+               mode="widthFix" />
+        <image v-show="!isCollect"
+               class="w-64 h-64"
+               src="/static/xb-swiper-preview/icon-collect.png"
+               mode="widthFix" />
+      </view>
+
+      <view class="w-64 h-64"
+            @click="isLike = !isLike">
+        <image v-show="isLike"
+               class="w-64 h-64"
+               src="/static/xb-swiper-preview/icon-like-yes.png"
+               mode="widthFix" />
+        <image v-show="!isLike"
+               class="w-64 h-64"
+               src="/static/xb-swiper-preview/icon-like.png"
+               mode="widthFix" />
+      </view>
+
+      <image class="w-64 h-64"
+             src="/static/xb-swiper-preview/icon-set-wallpaper-yes.png"
+             mode="widthFix" />
+      <image class="w-64 h-64"
+             src="/static/xb-swiper-preview/icon-share.png"
+             mode="widthFix" />
+      <image class="w-64 h-64"
+             src="/static/xb-swiper-preview/icon-download.png"
+             mode="widthFix" />
+    </view> -->
+
+    <view class="pop"
+          v-if="isPop">
+      <view class="item"
+            @click.stop="share()">分享图片</view>
+      <!-- #ifndef H5 -->
+      <view class="item"
+            @click.stop="saveImg(false)">保存图片</view>
+      <view class="item"
+            @click.stop="saveImg(true)">保存全部图片</view>
+      <!-- #endif -->
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      imgs: [
+      ],
+      currentImg: 0,
+      isPop: false,
+      scrollTopIndex: "",
+
+      isScale: false,
+      isCollect: false,
+      isLike: false,
+    };
+  },
+  created() {
+	this.getSmallPig()
+  },
+  onLoad(options) {
+    // let { imgs, current } = options;
+    // this.imgs = JSON.parse(imgs);
+    // this.currentImg = current;
+  },
+  methods: {
+	async getSmallPig() {
+		const {data: result} = await uni.$http.get('/education/strategy/getSmallPig')
+		this.imgs = result.data.list
+	},
+    changeSwiper(e) {
+      this.currentImg = e.detail.current;
+      // console.log("e", e);
+
+      this.scrollTopIndex = `scrollToIndex${e.detail.current}`;
+    },
+    toImg(index) {
+      this.currentImg = index;
+    },
+    onBack() {
+      uni.navigateBack();
+    },
+    share() {
+      uni.downloadFile({
+        // 下面一行时拼接预览PDF的地址!!!
+        url: this.imgs[this.currentImg],
+        success: function (res) {
+          var filePath = res.tempFilePath;
+          if (!filePath) return;
+          uni.openDocument({
+            filePath: filePath,
+            success: function (res) {
+              console.log(res);
+              console.log("打开文档成功");
+            },
+          });
+        },
+      });
+    },
+    saveImg(isAll = false) {
+      const that = this;
+      if (!isAll) {
+        uni.downloadFile({
+          url: this.imgs[this.currentImg],
+          success: (res) => {
+            if (res.statusCode === 200) {
+              uni.saveImageToPhotosAlbum({
+                filePath: res.tempFilePath,
+                success: function () {
+                  uni.showToast({
+                    icon: "none",
+                    title: "保存成功",
+                  });
+                  that.isPop = false;
+                },
+                fail: function () {},
+              });
+            } else {
+            }
+          },
+        });
+        return;
+      }
+      this.imgs.forEach((item) => {
+        uni.downloadFile({
+          url: item,
+          success: (res) => {
+            if (res.statusCode === 200) {
+              uni.saveImageToPhotosAlbum({
+                filePath: res.tempFilePath,
+                success: function () {
+                  uni.showToast({
+                    icon: "none",
+                    title: "保存全部成功",
+                  });
+                  that.isPop = false;
+                },
+                fail: function () {},
+              });
+            } else {
+            }
+          },
+        });
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+	.swiper-content{
+		width: 100%;
+		height: 100vh;
+		position: relative;
+	}
+movable-view {
+   display: flex;
+   align-items: center;
+   justify-content: center;
+
+   width: 100%;
+   height: 100%;
+}
+
+movable-area {
+   position: fixed;
+
+   overflow: hidden;
+
+   width: 100%;
+   height: 100%;
+
+   transform: scale();
+}
+
+movable-view image {
+   width: 100%;
+}
+
+uni-image > img {
+   z-index: -1 !important;
+}
+
+.hander-top {
+   position: absolute;
+   z-index: 1000;
+   top: 48rpx;
+   left: 0;
+	display: flex;
+	justify-content: space-between;
+	width: 100%;
+	padding: 0 32rpx;
+	box-sizing: border-box;
+   .icon-back-wrap {
+      width: 64rpx;
+      height: 64rpx;
+	  .icon-back{
+		  width: 64rpx;
+		  height: 64rpx;
+	  }
+   }
+
+   .count {
+      box-sizing: border-box;
+      padding: 8rpx 24rpx;
+
+      color: #fff;
+      border-radius: 24rpx;
+      background: rgba(0, 0, 0, .4);
+
+      font-size: 28rpx;
+   }
+}
+
+.swiper-img {
+   width: 100vw;
+   height: 100vh;
+	
+   background-color: #000;
+
+   .swiper-item {
+      width: 100vw;
+      height: 100vh;
+
+      .img-page {
+         display: flex;
+         align-items: center;
+
+         width: 100vw;
+         height: 100vh;
+
+         .max-img {
+            width: 100%;
+            height: 100%;
+         }
+      }
+   }
+}
+
+.handle-wrap {
+   position: absolute;
+   z-index: 100;
+   bottom: 40rpx;
+   left: 0;
+   
+	width: 100%;
+	display: flex;
+	justify-content: space-between;
+	padding: 32rpx;
+	box-sizing: border-box;
+   image{
+	   width: 64rpx;
+	   height: 64rpx;
+   }
+
+   width: 100%;
+}
+
+.item-bottom {
+   position: fixed;
+   z-index: 9999;
+   bottom: 10rpx;
+   left: 0rpx;
+
+   display: flex;
+   flex-direction: column;
+   justify-content: space-between;
+
+   width: 100vw;
+
+//  height: 200rpx;
+   padding: 30rpx;
+
+   transition: ease-in-out .3s;
+}
+
+.small-list-page {
+   min-height: 60rpx;
+}
+
+.scroll-Y {
+   height: 300rpx;
+}
+
+.scroll-view_H {
+   width: 100%;
+	box-sizing: border-box;
+	padding-right: 32rpx;
+   white-space: nowrap;
+}
+
+.scroll-view-item_H {
+   display: inline-block;
+
+   margin-right: 10rpx;
+
+   transition: ease-in .1s;
+   transform: scale(.8);
+
+   border-radius: 11rpx;
+   background: #c2c2c2;
+
+   &:last-child {
+      margin-right: 0;
+   }
+
+   .img {
+      display: block;
+
+      width: 160rpx;
+      height: 272rpx;
+   }
+}
+
+.img-page-checked {
+   transform: translateY(-28rpx) scale(1);
+}
+
+.pop {
+   position: fixed;
+   z-index: 999999;
+   top: 50%;
+   left: 50%;
+
+   overflow: hidden;
+
+   width: 500rpx;
+
+   transform: translate(-50%, -50%);
+
+   border-radius: 20rpx;
+   background-color: #fff;
+
+   .item {
+      height: 100rpx;
+      padding: 0 50rpx;
+
+      transition: all .2s;
+
+      border-radius: 20rpx;
+
+      line-height: 100rpx;
+
+      &:active {
+         background-color: #eee;
+      }
+   }
+}
+
+</style>

+ 2 - 2
education_uni/main.js

@@ -12,9 +12,9 @@ import { $http } from '@escook/request-miniprogram'
 uni.$http = $http
 
 // 请求的根路径
-$http.baseUrl = 'http://192.168.0.215:8222'
+$http.baseUrl = 'http://125.71.216.35:8222'
 
-uni.$wsLocation = 'ws://192.168.0.215:8222'
+uni.$wsLocation = 'ws://125.71.216.35:8222'
 
 // 封装弹窗的方法
 uni.$showMsg = function (title = '数据加载失败!', duration = 1500) {

+ 5 - 6
education_uni/manifest.json

@@ -1,5 +1,5 @@
 {
-    "name" : "education_uni",
+    "name" : "自选教员",
     "appid" : "__UNI__8C1D972",
     "description" : "",
     "versionName" : "1.0.0",
@@ -49,7 +49,6 @@
     "quickapp" : {},
     /* 快应用特有相关 */
     "mp-weixin" : {
-        /* 小程序特有相关 */
         "appid" : "wxf2d10b5ab2b20723",
         "setting" : {
             "urlCheck" : false,
@@ -59,12 +58,12 @@
         },
         "usingComponents" : true,
         "permission" : {
-			"scope.userFuzzyLocation" : {
-			    "desc" : "允许位置信息将为你推荐最近的资源"
-			}
+            "scope.userFuzzyLocation" : {
+                "desc" : "允许位置信息将为你推荐最近的资源"
+            }
         },
         "requiredPrivateInfos" : [ "choosePoi", "getFuzzyLocation", "chooseLocation" ],
-		"lazyCodeLoading": "requiredComponents"
+        "lazyCodeLoading" : "requiredComponents"
     },
     "vueVersion" : "2"
 }

+ 8 - 2
education_uni/pages.json

@@ -14,7 +14,7 @@
 	}, {
 		"path": "pages/teacher/teacher",
 		"style": {
-			"navigationBarTitleText": "找老师",
+			"navigationBarTitleText": "找教员",
 			"enablePullDownRefresh": true,
 			"onReachBottomDistance": 150
 		}
@@ -96,6 +96,12 @@
 					"navigationBarTitleText": "投诉详情",
 					"enablePullDownRefresh": false
 				}
+			}, {
+				"path": "my/home/my_home_strategy",
+				"style": {
+					"navigationBarTitleText": "攻略详情",
+					"enablePullDownRefresh": false
+				}
 			}, {
 				"path": "my/invitation/my_invitation_receive",
 				"style": {
@@ -297,7 +303,7 @@
 			},
 			{
 				"pagePath": "pages/teacher/teacher",
-				"text": "找老师",
+				"text": "找教员",
 				"iconPath": "static/tab_icons/teacher.png",
 				"selectedIconPath": "static/tab_icons/teacher_active.png"
 			},

+ 19 - 12
education_uni/pages/home/home.vue

@@ -78,16 +78,10 @@
 				<text style	="color:#b2b2b2;font-size: 12px;" >攻略</text>
 			</view>
 			
-			<view class="cooperationContent">
+			<view class="cooperationContent" @click="gotoStrategy">
 				<scroll-view class="cooperationScroll" enable-flex scroll-x>
-					<view class="scrollItem">
-						<image src="/static/share.jpg"></image>
-					</view>
-					<view class="scrollItem">
-						<image src="/static/share.jpg"></image>
-					</view>
-					<view class="scrollItem">
-						<image src="/static/share.jpg"></image>
+					<view class="scrollItem" v-for="(item, index) in strategyImg" :key="index">
+						<image :src="item"></image>
 					</view>
 			   </scroll-view>
 			</view>
@@ -113,7 +107,8 @@
 				current: 0,
 				hotTeacherList: [],
 				hotstuNeed: [],
-				isShowDistance: false
+				isShowDistance: false,
+				strategyImg: []
 			}
 		},
 		watch: {
@@ -132,15 +127,16 @@
 		 * recoUID为推荐者的uid,当用户作为新用户注册时,如果取到了这个uid,才做为推荐者的uid存入
 		 * 老用户,取到这个uid也不存入了。
 		 */
-		onLoad: function (options) {
+		onLoad(options) {
 			 this.updateRecoUID(options.uid) // 久化存储到本地,可在其它页面调用
 			 // console.log("推荐码为:" + this.recoUID)
+			 this.getSwiperList()
+			 this.getStrategyImg()
 		},
 		onShow() {
 			if (this.token !== '') {
 				this.isShowDistance = true
 			}
-			this.getSwiperList()
 			this.hotTeacher()
 			this.hotStudent()
 		},
@@ -192,6 +188,17 @@
 			// 滑动轮播图触发
 			change(e) {
 				this.current = e.detail.current
+			},
+			gotoStrategy() {
+				uni.navigateTo({
+					url: '/subpkg/my/home/my_home_strategy'
+				})
+			},
+			async getStrategyImg() {
+				const {
+					data: result
+				} = await uni.$http.get('/education/strategy/getBigPig')
+				this.strategyImg = result.data.list
 			}
 		}
 	}

+ 2 - 2
education_uni/pages/student/student.vue

@@ -65,8 +65,8 @@
 				pattern: {
 					color: '#7A7E83',
 					backgroundColor: '#fff',
-					selectedColor: '#007AFF',
-					buttonColor: '#007AFF',
+					selectedColor: '#3ed598',
+					buttonColor: '#3ed598',
 					iconColor: '#fff'
 				},
 				stuNeeds: [],

+ 10 - 4
education_uni/pages/teacher/teacher.vue

@@ -62,6 +62,9 @@
 		computed: {
 			...mapState('m_user', ['location','token'])
 		},
+		options: {
+			styleIsolation: 'shared', // 解除样式隔离
+		},
 		data() {
 			return {
 				isShowDistance: false,
@@ -77,10 +80,10 @@
 					}
 				],
 				pattern: {
-					color: '#7A7E83',
-					backgroundColor: '#fff',
-					selectedColor: '#007AFF',
-					buttonColor: '#007AFF',
+					color: '#3ed598',
+					backgroundColor: '#3ed598',
+					selectedColor: '##3ed598',
+					buttonColor: '##3ed598',
 					iconColor: '#fff'
 				},
 				isLoading: false,	// 请求阀
@@ -421,4 +424,7 @@
 		color: #ffffff;
 		font-size: 14px;
 	}
+	::v-deep .uni-fab__circle {
+		background-color: #3ed598 !important;
+	}
 </style>

BIN
education_uni/static/xb-swiper-preview/icon-back.png


+ 6 - 4
education_uni/subpkg/manager/complaint/manager_complaint_detail.vue

@@ -111,11 +111,13 @@
 </script>
 
 
-<style lang="scss" scoped>
-.wrapper {
-    // position: relative;
-    height: 100%;
+<style lang="scss">
+page {
+	height: 100%;
 	background-color: #FFF2CC;
+}
+
+.wrapper {
 	padding: 20rpx;
 }
 

+ 8 - 6
education_uni/subpkg/manager/suggestion/manager_suggestion_detail.vue

@@ -1,6 +1,6 @@
 <template>
-	 <view>
-		<view class="wrapper">
+	 <view class="wrapper">
+		<view>
 		    <view>
 		        <view class="suggestHead">
 		            <text>建议号</text>
@@ -104,11 +104,13 @@
 	}
 </script>
 
-<style lang="scss" scoped>
-.wrapper {
-    // position: relative;
-    height: 100%;
+<style lang="scss">
+page {
+	height: 100%;
 	background-color: #FFF2CC;
+}
+
+.wrapper {
 	padding: 20rpx;
 }
 

+ 8 - 4
education_uni/subpkg/my/complaint/my_complaint_detail.vue

@@ -1,5 +1,5 @@
 <template>
-	<view>
+	<view class="wrapper">
 		<view>
 		    <view>
 		        <text>投诉号:</text>
@@ -73,11 +73,15 @@
 	}
 </script>
 
-<style lang="scss" scoped>
+<style lang="scss">
 /* 设置背景 */
 page{
-    padding: 20rpx;
-    background-color: #E2F0D9;
+    background-color: #FFF2CC;
+	height: 100%;
+}
+
+.wrapper {
+	padding: 20rpx;
 }
 
 .benginTwo {

+ 17 - 0
education_uni/subpkg/my/home/my_home_strategy.vue

@@ -0,0 +1,17 @@
+<template>
+	<view>
+		<xb-swiper-preview></xb-swiper-preview>
+	</view>
+</template>
+
+<script>
+	import xbSwiperPreview from '@/components/xb-swiper-preview/index.vue'
+	export default {
+		components:{
+		    xbSwiperPreview
+		},
+	}
+</script>
+
+<style>
+</style>

+ 15 - 5
education_uni/subpkg/my/invitation/my_invitation_receive_detail.vue

@@ -26,12 +26,12 @@
 		        </view>
 		        <view class="midTitle">
 		            <text>需求号:</text>
-		            <text class="toLink" bindtap="toNeedDetail" style="color: rebeccapurple;">{{Info.requireId}}</text>
+		            <text class="toLink" @click="toNeedDetail" style="color: rebeccapurple;">{{Info.requireId}}</text>
 		            <text class="needState">{{needState}}</text>
 		        </view>
 		        <view class="midTitle">
 		            <text>课程号:</text>
-		            <text class="toLink" bindtap="toCourseDetail" style="color: red;">{{Info.courseId}}</text>
+		            <text class="toLink" @click="toCourseDetail" style="color: red;">{{Info.courseId}}</text>
 		            <text class="needState">{{courseState}}</text>
 		        </view>
 		        <view class="midTitle">
@@ -74,17 +74,27 @@
 			if (option.id !== undefined) {
 				const id = decodeURIComponent(option.id)
 				this.getInvitationDetail(id)
-				this.toRead()
+				this.toRead(id)
 			}
 		},
 		methods:{
+			toNeedDetail() {
+				uni.navigateTo({
+					url: '/subpkg/student/require/student_require_all_detail?requireId=' + encodeURIComponent(this.Info.requireId)
+				})
+			},
+			toCourseDetail() {
+				uni.navigateTo({
+					url: '/subpkg/teacher/course/teacher_course_all_detail?courseId=' + encodeURIComponent(this.Info.courseId)
+				})
+			},
 			async getInvitationDetail(id) {
 				const { data: result } = await uni.$http.get('/education/invite-info/getInvitationDetail', {inviteId: id})
 				this.Info = result.data.one
 			},
-			async toRead(){
+			async toRead(id){
 				const queryObj = {
-					id: this.Info.id
+					id
 				}
 				const { data: result } = await uni.$http.get('/education/invite-info/modifyStatusToHold',queryObj)
 			},

+ 12 - 2
education_uni/subpkg/my/invitation/my_invitation_send_detail.vue

@@ -26,11 +26,11 @@
 		        </view>
 		        <view class="midTitle">
 		            <text>需求号:</text>
-		            <text class="toLink" bindtap="toNeedDetail">{{Info.requireId}}</text>
+		            <text class="toLink" @click="toNeedDetail">{{Info.requireId}}</text>
 		        </view>
 		        <view class="midTitle">
 		            <text>课程号:</text>
-		            <text class="toLink" bindtap="toCourseDetail">{{Info.courseId}}</text>
+		            <text class="toLink" @click="toCourseDetail">{{Info.courseId}}</text>
 		        </view>
 		        <view class="midTitle">
 		            <text>需求金额:</text>
@@ -73,6 +73,16 @@
 			}
 		},
 		methods:{
+			toNeedDetail() {
+				uni.navigateTo({
+					url: '/subpkg/student/require/student_require_all_detail?requireId=' + encodeURIComponent(this.Info.requireId)
+				})
+			},
+			toCourseDetail() {
+				uni.navigateTo({
+					url: '/subpkg/teacher/course/teacher_course_all_detail?courseId=' + encodeURIComponent(this.Info.courseId)
+				})
+			},
 			async getInvitationDetail(id) {
 				const { data: result } = await uni.$http.get('/education/invite-info/getInvitationDetail', {inviteId: id})
 				this.Info = result.data.one

+ 12 - 2
education_uni/subpkg/my/order/my_order_detail.vue

@@ -22,11 +22,11 @@
 		        </view>
 		        <view>
 		            <text>需求号</text>
-		            <text class="courseNum" bindtap="toNeedDetail">{{info.requireId}}</text>
+		            <text class="courseNum" @click="toNeedDetail">{{info.requireId}}</text>
 		        </view>
 		        <view>
 		            <text>课程号</text>
-		            <text class="courseNum" bindtap="toCourseDetail">{{info.courseId}}</text>
+		            <text class="courseNum" @click="toCourseDetail">{{info.courseId}}</text>
 		        </view>
 		        <view>
 		            <text>需求金额</text>
@@ -97,6 +97,16 @@
 			}
 		},
 		methods: {
+			toNeedDetail() {
+				uni.navigateTo({
+					url: '/subpkg/student/require/student_require_all_detail?requireId=' + encodeURIComponent(this.info.requireId)
+				})
+			},
+			toCourseDetail() {
+				uni.navigateTo({
+					url: '/subpkg/teacher/course/teacher_course_all_detail?courseId=' + encodeURIComponent(this.info.courseId)
+				})
+			},
 			// 发送申请退款消息
 			async applyForRefund() {
 				this.buttonDisabled = true

+ 8 - 5
education_uni/subpkg/my/suggestion/my_suggestion_detail.vue

@@ -1,5 +1,5 @@
 <template>
-	<view>
+	<view class="wrapper">
 		<!-- 建议号和ID -->
 		<view>
 		    <view>
@@ -75,12 +75,15 @@
 	}
 </script>
 
-<style lang="scss" scoped>
-
+<style lang="scss">
 /* 设置背景 */
 page{
-    padding: 20rpx;
-    background-color: #E2F0D9;
+	height: 100%;
+	background-color: #FFF2CC;
+}
+
+.wrapper {
+	padding: 20rpx;
 }
 
 .benginTwo {

+ 12 - 2
education_uni/subpkg/student/order/student_order_detail.vue

@@ -22,11 +22,11 @@
 		        </view>
 		        <view>
 		            <text>需求号</text>
-		            <text class="courseNum" bindtap="toNeedDetail">{{info.requireId}}</text>
+		            <text class="courseNum" @click="toNeedDetail">{{info.requireId}}</text>
 		        </view>
 		        <view>
 		            <text>课程号</text>
-		            <text class="courseNum" bindtap="toCourseDetail">{{info.courseId}}</text>
+		            <text class="courseNum" @click="toCourseDetail">{{info.courseId}}</text>
 		        </view>
 		        <view>
 		            <text>需求金额</text>
@@ -85,6 +85,16 @@
 			}
 		},
 		methods: {
+			toNeedDetail() {
+				uni.navigateTo({
+					url: '/subpkg/student/require/student_require_all_detail?requireId=' + encodeURIComponent(this.info.requireId)
+				})
+			},
+			toCourseDetail() {
+				uni.navigateTo({
+					url: '/subpkg/teacher/course/teacher_course_all_detail?courseId=' + encodeURIComponent(this.info.courseId)
+				})
+			},
 			// 申请退款
 			async applyForRefund() {
 				const queryObj = {

+ 3 - 1
education_uni/subpkg/student/require/student_require_all_detail.vue

@@ -1,6 +1,6 @@
 <template>
 	<view style="background-color: #E2F0D9;">
-		<my-requiredetail :item="item" :location="location" :marker="marker" :timeAM="timeAM" :timePM="timePM" :timeEvening="timeEvening" :collect="collect" :isShowCollect="isShowCollect" buttonMessage="邀请" @collecting="collecting" @publishButton="invite"></my-requiredetail>
+		<my-requiredetail v-if="showDetail" :item="item" :location="location" :marker="marker" :timeAM="timeAM" :timePM="timePM" :timeEvening="timeEvening" :collect="collect" :isShowCollect="isShowCollect" buttonMessage="邀请" @collecting="collecting" @publishButton="invite"></my-requiredetail>
 		
 		<my-invite :isShowInvite="isShowInvite" :item11="myCourses" @cancelChosed="cancelChosed" @commitChosed="commitChosed" @clickRadio="clickRadio"></my-invite>
 	</view>
@@ -16,6 +16,7 @@
 		},
 		data() {
 			return {
+				showDetail: false,
 				initeCourse: '',
 				myCourses: [],
 				isShowInvite: false,
@@ -55,6 +56,7 @@
 				this.marker[0].longitude = Number(this.location[1])
 				this.courseWeekday = this.item.courseWeekday.split(",")
 				this.parseCourseWeekday()
+				this.showDetail = true
 			},
 			// 查看是否收藏过
 			async getIsCollection() {

+ 3 - 1
education_uni/subpkg/student/require/student_require_my_detail.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<my-requiredetail :item="item" :location="location" :marker="marker" :timeAM="timeAM" :timePM="timePM" :timeEvening="timeEvening" :isShowPrivate="isShowPrivate" buttonMessage="以此为模板新发布" @publishButton="publishButton"></my-requiredetail>
+		<my-requiredetail v-if="showDetail" :item="item" :location="location" :marker="marker" :timeAM="timeAM" :timePM="timePM" :timeEvening="timeEvening" :isShowPrivate="isShowPrivate" buttonMessage="以此为模板新发布" @publishButton="publishButton"></my-requiredetail>
 	</view>
 </template>
 
@@ -10,6 +10,7 @@
 		mixins: [formTime],
 		data() {
 			return {
+				showDetail: false,
 				isShowPrivate: true,
 				item: {},
 				location: [],
@@ -44,6 +45,7 @@
 				this.marker[0].longitude = Number(this.location[1])
 				this.courseWeekday = this.item.courseWeekday.split(",")
 				this.parseCourseWeekday()
+				this.showDetail = true
 			},
 			publishButton() {
 				uni.navigateTo({

+ 14 - 1
education_uni/subpkg/teacher/course/teacher_course_all_detail.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<my-coursedetail :item="course" :location="location" :marker="marker" :timeAM="timeAM" :timePM="timePM" :timeEvening="timeEvening" buttonMessage="邀请" :collect="collect" :isShowCollect="true" @collecting="collecting" @publishButton="invite"></my-coursedetail>
+		<my-coursedetail v-if="showDetail" :item="course" :location="location" :marker="marker" :timeAM="timeAM" :timePM="timePM" :timeEvening="timeEvening" buttonMessage="邀请" :collect="collect" :isShowCollect="true" @collecting="collecting" @publishButton="invite"></my-coursedetail>
 
 		<my-invite :isShowInvite="isShowInvite" :item11="myNeeds" @cancelChosed="cancelChosed" @commitChosed="commitChosed" @clickRadio="clickRadio"></my-invite>
 	</view>
@@ -16,6 +16,7 @@
 		},
 		data() {
 			return {
+				showDetail: false,
 				isShowInvite: false,
 				initeNeeds: '',
 				myNeeds: [],
@@ -38,9 +39,20 @@
 				this.course = JSON.parse(decodeURIComponent(option.item))
 				this.getCourseDetailById(this.course.courseId)
 			}
+			if (option.courseId !== undefined) {
+				this.getPersonCourseDetailById(option.courseId)
+			}
 			this.getIsCollection()
 		},
 		methods:{
+			async getPersonCourseDetailById(id) {
+				const {data: result} = await uni.$http.get('/education/teacher-courses/getPersonCourseDetailById', {courseId: id})
+				this.course = result.data.one
+				if (this.course.viewedCount === null) {
+					this.course.viewedCount = 0
+				}
+				this.formatForm()
+			},
 			// 获取课程详情
 			async getCourseDetailById(id) {
 				const {data: result} = await uni.$http.get('/education/teacher-courses/getCourseDetailById', {courseId: id})
@@ -58,6 +70,7 @@
 				this.marker[0].longitude = Number(this.location[1])
 				this.courseWeekday = this.course.teachTime.split(",")
 				this.parseCourseWeekday()
+				this.showDetail = true
 			},
 			// 查看是否收藏过
 			async getIsCollection() {

+ 3 - 1
education_uni/subpkg/teacher/course/teacher_course_my_detail.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<my-coursedetail :item="course" :location="location" :marker="marker" :timeAM="timeAM" :timePM="timePM" :timeEvening="timeEvening" buttonMessage="以此为模板新发布" :isShowCollect="false" :isShowPrivate="true" @publishButton="publishButton"></my-coursedetail>
+		<my-coursedetail v-if="showDetail" :item="course" :location="location" :marker="marker" :timeAM="timeAM" :timePM="timePM" :timeEvening="timeEvening" buttonMessage="以此为模板新发布" :isShowCollect="false" :isShowPrivate="true" @publishButton="publishButton"></my-coursedetail>
 	</view>
 </template>
 
@@ -10,6 +10,7 @@
 		mixins: [formTime],
 		data() {
 			return {
+				showDetail: false,
 				course: {},
 				location: [],
 				marker: [{
@@ -43,6 +44,7 @@
 				this.marker[0].longitude = Number(this.location[1])
 				this.courseWeekday = this.course.teachTime.split(",")
 				this.parseCourseWeekday()
+				this.showDetail = true
 			},
 			publishButton() {
 				uni.navigateTo({