liujc 1 år sedan
förälder
incheckning
c4409967d9
77 ändrade filer med 2345 tillägg och 767 borttagningar
  1. 1 0
      .gitignore
  2. 585 0
      .idea/httpRequests/http-requests-log.http
  3. 14 27
      audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java
  4. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/PermissionCheckService.java
  5. 123 119
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java
  6. 7 7
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysMenuServiceImpl.java
  7. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveBroadcastRoomMemberDao.java
  8. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MultiDataSourceHomeStatsDao.java
  9. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  10. 23 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImLiveBroadcastRoomDto.java
  11. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImLiveBroadcastRoom.java
  12. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImLiveBroadcastRoomMember.java
  13. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImLiveRoomBlack.java
  14. 32 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/live/ELiveViewMode.java
  15. 60 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/vo/ImLiveBroadcastRoomMemberVo.java
  16. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/vo/ImLiveBroadcastRoomVo.java
  17. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/vo/RoomUserInfoVo.java
  18. 41 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MultiDataSourceHomeStatsWrapper.java
  19. 42 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomService.java
  20. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MultiDataSourceHomeStatsService.java
  21. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  22. 6 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  23. 5 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  24. 112 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomMemberServiceImpl.java
  25. 407 41
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java
  26. 19 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveRoomBlackServiceImpl.java
  27. 97 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MultiDataSourceHomeStatsServiceImpl.java
  28. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java
  29. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  30. 2 0
      mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml
  31. 49 24
      mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMemberMapper.xml
  32. 3 2
      mec-biz/src/main/resources/config/mybatis/ImLiveRoomBlackMapper.xml
  33. 2 0
      mec-biz/src/main/resources/config/mybatis/ImLiveRoomReservationMapper.xml
  34. 34 0
      mec-biz/src/main/resources/config/mybatis/MultiDataSourceHomeStatsMapper.xml
  35. 21 19
      mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml
  36. 10 4
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  37. 1 2
      mec-biz/src/main/resources/config/mybatis/SysUserCashAccountMapper.xml
  38. 60 60
      mec-common/common-core/src/main/java/com/ym/mec/common/controller/BaseController.java
  39. 19 18
      mec-common/common-core/src/main/java/com/ym/mec/common/exception/BizException.java
  40. 7 1
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  41. 1 0
      mec-student/src/main/java/com/ym/mec/student/config/ResourceServerConfig.java
  42. 5 2
      mec-student/src/main/java/com/ym/mec/student/controller/ImLiveBroadcastRoomController.java
  43. 104 0
      mec-student/src/main/java/com/ym/mec/student/controller/open/OpenLiveBroadcastRoomController.java
  44. 37 0
      mec-student/src/main/java/com/ym/mec/student/controller/open/OpenSysConfigController.java
  45. 11 0
      mec-teacher/src/main/java/com/ym/mec/teacher/TeacherApplication.java
  46. 9 54
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  47. 40 15
      mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java
  48. 11 0
      mec-web/src/main/java/com/ym/mec/web/WebApplication.java
  49. 1 1
      mec-web/src/main/java/com/ym/mec/web/config/PermissionCheckService.java
  50. 5 17
      mec-web/src/main/java/com/ym/mec/web/controller/AppRedemptionCodeController.java
  51. 3 2
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  52. 3 3
      mec-web/src/main/java/com/ym/mec/web/controller/CloudCoachPaymentProgramController.java
  53. 0 7
      mec-web/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java
  54. 7 26
      mec-web/src/main/java/com/ym/mec/web/controller/ContractsController.java
  55. 0 4
      mec-web/src/main/java/com/ym/mec/web/controller/CourseReviewController.java
  56. 6 19
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
  57. 0 4
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleTeacherSalaryController.java
  58. 0 4
      mec-web/src/main/java/com/ym/mec/web/controller/DegreeController.java
  59. 40 58
      mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java
  60. 1 7
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  61. 0 4
      mec-web/src/main/java/com/ym/mec/web/controller/FinancialExpenditureController.java
  62. 12 33
      mec-web/src/main/java/com/ym/mec/web/controller/GoodsController.java
  63. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomMemberController.java
  64. 5 12
      mec-web/src/main/java/com/ym/mec/web/controller/ImSendGroupMessageController.java
  65. 8 10
      mec-web/src/main/java/com/ym/mec/web/controller/ImUserFriendController.java
  66. 3 13
      mec-web/src/main/java/com/ym/mec/web/controller/IndexController.java
  67. 0 7
      mec-web/src/main/java/com/ym/mec/web/controller/IndexErrDataRecordController.java
  68. 5 14
      mec-web/src/main/java/com/ym/mec/web/controller/InspectionController.java
  69. 4 17
      mec-web/src/main/java/com/ym/mec/web/controller/InspectionItemController.java
  70. 9 24
      mec-web/src/main/java/com/ym/mec/web/controller/InspectionItemPlanController.java
  71. 3 11
      mec-web/src/main/java/com/ym/mec/web/controller/ManagerDownloadController.java
  72. 4 19
      mec-web/src/main/java/com/ym/mec/web/controller/MemberRankOrganizationFeeMapperController.java
  73. 4 11
      mec-web/src/main/java/com/ym/mec/web/controller/MemberRankSettingController.java
  74. 38 0
      mec-web/src/main/java/com/ym/mec/web/controller/MultiDataSourceHomeStatsController.java
  75. 3 9
      mec-web/src/main/java/com/ym/mec/web/controller/MusicEnlightenmentQuestionnaireController.java
  76. 3 1
      mec-web/src/main/java/com/ym/mec/web/controller/StudentInstrumentController.java
  77. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/StudentStatisticsController.java

+ 1 - 0
.gitignore

@@ -6,6 +6,7 @@
 .settings
 .project
 *.iml
+*.log
 /lib/
 
 ### 忽略子模块的文件 ###

+ 585 - 0
.idea/httpRequests/http-requests-log.http

@@ -0,0 +1,585 @@
+GET http://127.0.0.1:9001/imLiveBroadcastRoom/joinRoom?roomUid=LIVE-2248336-1684474334299&userId=2248479&microphoneFlag=false
+Authorization: bearer aeec0ea9-4079-4765-aa72-346a7d37e735
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T175057.200.json
+
+###
+
+GET http://127.0.0.1:9001/imLiveBroadcastRoom/joinRoom?roomUid=LIVE-2248336-1684474334299&userId=2248479&microphoneFlag=true
+Authorization: bearer aeec0ea9-4079-4765-aa72-346a7d37e735
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T175049.200.json
+
+###
+
+GET http://127.0.0.1:9001/imLiveBroadcastRoom/joinRoom?roomUid=LIVE-2248336-1684474334299&userId=2248479&microphoneFlag=false
+Authorization: bearer aeec0ea9-4079-4765-aa72-346a7d37e735
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T175037.200.json
+
+###
+
+GET http://127.0.0.1:9001/imLiveBroadcastRoom/joinRoom?roomUid=LIVE-2248336-1684474334299&userId=2248479&microphoneFlag=false
+Authorization: bearer aeec0ea9-4079-4765-aa72-346a7d37e735
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T174858.200.json
+
+###
+
+GET http://127.0.0.1:9001/imLiveBroadcastRoom/joinRoom?roomUid=LIVE-2248336-1684474334299&userId=2248479&microphoneFlag=false
+Authorization: bearer aeec0ea9-4079-4765-aa72-346a7d37e735
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T174628.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 100
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+clientId=student&clientSecret=student&phone=19900990088&smsCode=666666&deviceNum=190e35f7e15650ef33e
+
+<> 2023-05-19T174545.200.json
+
+###
+
+GET http://127.0.0.1:9001/imLiveBroadcastRoom/joinRoom?roomUid=LIVE-2248336-1684474334299&userId=2248380&microphoneFlag=false
+Authorization: bearer b4d5c0d2-3faf-48f3-a5d6-6301cc1e1af6
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T174527.200.json
+
+###
+
+GET http://127.0.0.1:9001/imLiveBroadcastRoom/joinRoom?roomUid=LIVE-2248336-1684474334299&userId=2248380&microphoneFlag=false
+Authorization: bearer b4d5c0d2-3faf-48f3-a5d6-6301cc1e1af6
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T174458.200.json
+
+###
+
+GET http://127.0.0.1:9001/imLiveBroadcastRoom/joinRoom?roomUid=LIVE-2248336-1684474334299&userId=2248380&microphoneFlag=false
+Authorization: bearer b4d5c0d2-3faf-48f3-a5d6-6301cc1e1af6
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T174300.200.json
+
+###
+
+GET http://127.0.0.1:9001/imLiveBroadcastRoom/joinRoom?roomUid=LIVE-2248336-1684474334299&userId=2248380&microphoneFlag=false
+Authorization: bearer b4d5c0d2-3faf-48f3-a5d6-6301cc1e1af6
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T174052.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Authorization: bearer fcf13dd1-6f06-40ae-a36e-22b4df4d5d01
+Content-Type: application/json
+Content-Length: 45
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{
+  "roomUid": "LIVE-2248336-1684474334299"
+}
+
+<> 2023-05-19T173652.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Authorization: bearer fcf13dd1-6f06-40ae-a36e-22b4df4d5d01
+Content-Type: application/json
+Content-Length: 45
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{
+  "roomUid": "LIVE-2248336-1684474334299"
+}
+
+<> 2023-05-19T173417.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Authorization: bearer fcf13dd1-6f06-40ae-a36e-22b4df4d5d01
+Content-Type: application/json
+Content-Length: 2
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{}
+
+<> 2023-05-19T173333.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Authorization: bearer fcf13dd1-6f06-40ae-a36e-22b4df4d5d01
+Content-Length: 2
+Content-Type: */*; charset=UTF-8
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{}
+
+<> 2023-05-19T173320.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Authorization: bearer fcf13dd1-6f06-40ae-a36e-22b4df4d5d01
+Content-Length: 0
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T173307.200.json
+
+###
+
+GET http://127.0.0.1:9001/imLiveBroadcastRoom/joinRoom?roomUid=LIVE-2248336-1684474334299&userId=2248380&microphoneFlag=false
+Authorization: bearer b4d5c0d2-3faf-48f3-a5d6-6301cc1e1af6
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T173156.200.json
+
+###
+
+POST http://localhost:9001/user/update
+Authorization: bearer b4d5c0d2-3faf-48f3-a5d6-6301cc1e1af6
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 45
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+username=ces&currentClass=1&currentGradeNum=3
+
+<> 2023-05-19T172903.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 111
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+clientId=student&clientSecret=student&phone=19900990088&smsCode=666666&deviceNum=190e35f7e15650ef33e&isLessee=1
+
+<> 2023-05-19T172200.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 111
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+clientId=student&clientSecret=student&phone=19900990088&smsCode=666666&deviceNum=190e35f7e15650ef33e&isLessee=1
+
+<> 2023-05-19T172138.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 111
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+clientId=student&clientSecret=student&phone=19900990088&smsCode=666666&deviceNum=190e35f7e15650ef33e&isLessee=1
+
+<> 2023-05-19T172025.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 111
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+clientId=student&clientSecret=student&phone=19900990088&smsCode=666666&deviceNum=190e35f7e15650ef33e&isLessee=1
+
+<> 2023-05-19T171911.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 111
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+clientId=student&clientSecret=student&phone=19900990088&smsCode=666666&deviceNum=190e35f7e15650ef33e&isLessee=1
+
+<> 2023-05-19T171355.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 111
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+clientId=student&clientSecret=student&phone=19900990088&smsCode=666666&deviceNum=190e35f7e15650ef33e&isLessee=1
+
+<> 2023-05-19T171229.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 111
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+clientId=student&clientSecret=student&phone=19900990088&smsCode=666666&deviceNum=190e35f7e15650ef33e&isLessee=1
+
+<> 2023-05-19T171144.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 111
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+clientId=student&clientSecret=student&phone=19900990088&smsCode=666666&deviceNum=190e35f7e15650ef33e&isLessee=1
+
+<> 2023-05-19T171124.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 114
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+clientId=student&clientSecret=student&phone=19900990088&smsCode=666666&deviceNum=190e35f7e15650ef33e&isLessee=true
+
+<> 2023-05-19T171047.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin?clientId=student&clientSecret=student&phone=19900880088&smsCode=666666&isLessee=true
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 0
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T170945.200.json
+
+###
+
+POST http://127.0.0.1:8001/smsLogin?clientId=student&clientSecret=student&phone=19900880088&smsCode=666666&isLessee=true
+Content-Type: application/json
+Content-Length: 0
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-19T170850.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/liveBroadcastRoom/visitorFingerprint?code=0413aiGa1MplkF0RyGGa1sf6S143aiGv
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-18T145501.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/liveBroadcastRoom/visitorFingerprint?code=0413aiGa1MplkF0RyGGa1sf6S143aiGv
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-18T145309.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/sysConfig/queryByParamName?paramName=wechat_appid
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-17T183050.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Content-Type: application/json
+Authorization: bearer 70c30cec-f77c-4871-beaa-ce4b5224bf3e
+Content-Length: 82
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{"rows":10,"page":1,"roomUid":"LIVE-2248324-1683860932420", "excludeBlacklist": 0}
+
+<> 2023-05-12T191018.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Content-Type: application/json
+Authorization: bearer 70c30cec-f77c-4871-beaa-ce4b5224bf3e
+Content-Length: 82
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{"rows":10,"page":1,"roomUid":"LIVE-2248324-1683860932420", "excludeBlacklist": 1}
+
+<> 2023-05-12T191000.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Content-Type: application/json
+Authorization: bearer 70c30cec-f77c-4871-beaa-ce4b5224bf3e
+Content-Length: 59
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{"rows":10,"page":1,"roomUid":"LIVE-2248475-1683777517444"}
+
+<> 2023-05-12T190114.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Content-Type: application/json
+Authorization: bearer 70c30cec-f77c-4871-beaa-ce4b5224bf3e
+Content-Length: 59
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{"rows":10,"page":1,"roomUid":"LIVE-2248475-1683777517444"}
+
+<> 2023-05-12T185307.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Content-Type: application/json
+Authorization: bearer 70c30cec-f77c-4871-beaa-ce4b5224bf3e
+Content-Length: 59
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{"rows":10,"page":1,"roomUid":"LIVE-2248475-1683777517444"}
+
+<> 2023-05-12T184904.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Content-Type: application/json
+Authorization: bearer 70c30cec-f77c-4871-beaa-ce4b5224bf3e
+Content-Length: 59
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{"rows":10,"page":1,"roomUid":"LIVE-2248475-1683777517444"}
+
+<> 2023-05-12T184725.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Content-Type: application/json
+Authorization: bearer 70c30cec-f77c-4871-beaa-ce4b5224bf3e
+Content-Length: 59
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{"rows":10,"page":1,"roomUid":"LIVE-2248475-1683777517444"}
+
+<> 2023-05-12T184519.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Content-Type: application/json
+Authorization: bearer 70c30cec-f77c-4871-beaa-ce4b5224bf3e
+Content-Length: 59
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{"rows":10,"page":1,"roomUid":"LIVE-2248475-1683777517444"}
+
+<> 2023-05-12T184412.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Content-Type: application/json
+Authorization: bearer 70c30cec-f77c-4871-beaa-ce4b5224bf3e
+Content-Length: 59
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{"rows":10,"page":1,"roomUid":"LIVE-2248475-1683777517444"}
+
+<> 2023-05-12T183529.200.json
+
+###
+
+POST http://127.0.0.1:8005/imLiveBroadcastRoomMember/queryRoomMember
+Content-Type: application/json
+Authorization: bearer 70c30cec-f77c-4871-beaa-ce4b5224bf3e
+Content-Length: 59
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+{"rows":10,"page":1,"roomUid":"LIVE-2248475-1683777517444"}
+
+<> 2023-05-12T183456.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/liveBroadcastRoom/visitorRoomInfo?roomUid=LIVE-2248475-1683777517444&userId=10001
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-11T204659.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/liveBroadcastRoom/visitorCredentials?roomUid=LIVE-2248475-1683777517444&fingerprint=111111112
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-11T204644.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/liveBroadcastRoom/visitorJoinRoom?roomUid=LIVE-2248475-1683777517444&userId=10000
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-11T204620.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/liveBroadcastRoom/visitorRoomInfo?roomUid=LIVE-2248475-1683777517444&userId=10000
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-11T204529.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/liveBroadcastRoom/visitorCredentials?roomUid=LIVE-2248475-1683777517444&fingerprint=111111111
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-11T204510.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/liveBroadcastRoom/visitorCredentials?roomUid=LIVE-2248475-1683777517444&fingerprint=111111112
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-11T203037.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/liveBroadcastRoom/visitorCredentials?roomUid=LIVE-2248475-1683777517444&fingerprint=111111111
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-11T203024.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/liveBroadcastRoom/visitorCredentials?roomUid=LIVE-2248475-1683777517444&fingerprint=111111111
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-11T203016.200.json
+
+###
+
+GET http://127.0.0.1:9001/open/liveBroadcastRoom/visitorCredentials?roomUid=LIVE-2248475-1683777517444&fingerprint=111111111
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-05-11T202954.200.json
+
+###
+

+ 14 - 27
audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java

@@ -1,32 +1,8 @@
 package com.yonge.netty.server.service;
 
-import io.netty.channel.Channel;
-
-import java.io.File;
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-import javax.sound.sampled.AudioFormat;
-
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONPath;
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
 import com.ym.mec.biz.dal.enums.DeviceTypeEnum;
 import com.ym.mec.biz.dal.enums.FeatureType;
@@ -45,6 +21,20 @@ import com.yonge.netty.entity.MusicXmlNote;
 import com.yonge.netty.server.handler.NettyChannelManager;
 import com.yonge.netty.server.handler.message.MessageHandler;
 import com.yonge.netty.server.processor.WaveformWriter;
+import io.netty.channel.Channel;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.sound.sampled.AudioFormat;
+import java.io.File;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.Map.Entry;
+import java.util.stream.Collectors;
 
 @Component
 public class AudioCompareHandler implements MessageHandler {
@@ -61,9 +51,6 @@ public class AudioCompareHandler implements MessageHandler {
 	private SysMusicCompareRecordService sysMusicCompareRecordService;
 	
     @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-    @Autowired
     private StoragePluginContext storagePluginContext;
 
 	/**

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/PermissionCheckService.java

@@ -27,7 +27,7 @@ public class PermissionCheckService {
 
 		AuthUser authUser = SecurityUtils.getUser();
 		SysUser user = sysUserService.get(authUser.getUserId());
-		if (user.getTenantId() == -1) {
+		if (user.getTenantId() == -1 || user.getIsSuperAdmin()) {
 			return true;
 		}
 

+ 123 - 119
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java

@@ -29,66 +29,65 @@ import com.ym.mec.common.service.IdGeneratorService;
 
 public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider {
 
-	private UserDetailsService userDetailsService;
+    private UserDetailsService userDetailsService;
 
-	private IdGeneratorService smsCodeService;
+    private IdGeneratorService smsCodeService;
 
-	private SysUserService sysUserService;
-	
-	private SysUserDeviceService sysUserDeviceService;
+    private SysUserService sysUserService;
 
-	private RedisCache<String,Object> redisCache;
+    private SysUserDeviceService sysUserDeviceService;
 
-	@Override
-	protected void additionalAuthenticationChecks(UserDetails userDetails, Authentication authentication) throws AuthenticationException {
+    private RedisCache<String,Object> redisCache;
 
-		if (authentication.getCredentials() == null) {
-			throw new BadCredentialsException(this.messages.getMessage("PhoneAuthenticationProvider.badCredentials", "Bad credentials"));
-		}
-	}
+    @Override
+    protected void additionalAuthenticationChecks(UserDetails userDetails, Authentication authentication) throws AuthenticationException {
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public UserDetails retrieveUser(String username, Authentication authentication) throws AuthenticationException {
-		LoginEntity loginEntity = (LoginEntity) authentication.getCredentials();
-		if (loginEntity == null) {
-			throw new BadCredentialsException("Bad credentials");
-		}
-		String smsCode = loginEntity.getSmsCode();
-		String phone = loginEntity.getPhone();
-		String clientId = loginEntity.getClientId();
+        if (authentication.getCredentials() == null) {
+            throw new BadCredentialsException(this.messages.getMessage("PhoneAuthenticationProvider.badCredentials", "Bad credentials"));
+        }
+    }
 
-		// 验证码验证
-		if (!clientId.startsWith("QR_") && !smsCodeService.verifyValidCode(phone, smsCode)) {
-			throw new BadCredentialsException("验证码校验失败");
-		}
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    protected UserDetails retrieveUser(String username, Authentication authentication) throws AuthenticationException {
+        LoginEntity loginEntity = (LoginEntity) authentication.getCredentials();
+        if (loginEntity == null) {
+            throw new BadCredentialsException("Bad credentials");
+        }
+        String smsCode = loginEntity.getSmsCode();
+        String phone = loginEntity.getPhone();
+        String clientId = loginEntity.getClientId();
 
+        // 验证码验证
+        if (!clientId.startsWith("QR_") && !smsCodeService.verifyValidCode(phone, smsCode)) {
+            throw new BadCredentialsException("验证码校验失败");
+        }
 
-		Boolean isRegister = loginEntity.getIsRegister();
-		
-		String deviceNum = loginEntity.getDeviceNum();
 
+        Boolean isRegister = loginEntity.getIsRegister();
 
+        String deviceNum = loginEntity.getDeviceNum();
 
-		SysUserInfo userInfo;
 
-		if (clientId.startsWith("QR_")) {
-			Object data = redisCache.get(loginEntity.getPhone());
-			if (data == null) {
-				throw new LockedException("用户不存在");
-			} else {
-				redisCache.delete(loginEntity.getPhone());
-				QRLoginDto loginDto = (QRLoginDto) data;
-				if (loginDto.getPrivateKey().equals(loginEntity.getSmsCode())) {
-					userInfo = loginDto.getUserInfo();
-					username = username.replaceAll(loginDto.getCode(),userInfo.getSysUser().getPhone());
-				} else {
-					throw new LockedException("用户不存在");
-				}
-			}
-		} else {
-			userInfo = sysUserService.queryUserInfoByPhone(phone);
-		}
+        SysUserInfo userInfo;
+
+        if (clientId.startsWith("QR_")) {
+            Object data = redisCache.get(loginEntity.getPhone());
+            if (data == null) {
+                throw new LockedException("用户不存在");
+            } else {
+                redisCache.delete(loginEntity.getPhone());
+                QRLoginDto loginDto = (QRLoginDto) data;
+                if (loginDto.getPrivateKey().equals(loginEntity.getSmsCode())) {
+                    userInfo = loginDto.getUserInfo();
+                    username = username.replaceAll(loginDto.getCode(),userInfo.getSysUser().getPhone());
+                } else {
+                    throw new LockedException("用户不存在");
+                }
+            }
+        } else {
+            userInfo = sysUserService.queryUserInfoByPhone(phone);
+        }
 
 		if (userInfo == null) {
 
@@ -100,9 +99,9 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 			if (isRegister == false || StringUtils.equals("SYSTEM", clientId)) {
 				throw new LockedException("用户不存在");
 			}
-			
+
 			userInfo = sysUserService.initUser(loginEntity.getTenantId(), loginEntity.getOrganId(), loginEntity.getPhone(), clientId);
-			
+
 			if (StringUtils.isNotBlank(deviceNum)) {
 				sysUserDeviceService.bindDevice(clientId, userInfo.getSysUser().getId(), deviceNum, userInfo.getSysUser().getTenantId());
 			}
@@ -135,78 +134,83 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 //					!loginEntity.getTenantId().equals(user.getTenantId())){
 //				throw new LockedException("用户已注册");
 //			}
-			if (StringUtils.isNotBlank(deviceNum)) {
-				sysUserDeviceService.bindDevice(clientId, user.getId(), deviceNum, userInfo.getSysUser().getTenantId());
-			}
-
-			if (clientId.startsWith("QR_")) {
-			} else  if (!userInfo.getSysUser().getUserType().contains(clientId)) {
-				if (isRegister == false || StringUtils.equals("SYSTEM", clientId)) {
-					throw new LockedException("用户不存在");
-				} else {
-					user.setUserType(user.getUserType() + "," + clientId);
-					user.setUpdateTime(new Date());
+            if (StringUtils.isNotBlank(deviceNum)) {
+                sysUserDeviceService.bindDevice(clientId, user.getId(), deviceNum, userInfo.getSysUser().getTenantId());
+            }
+
+            if (clientId.startsWith("QR_")) {
+            } else  if (!userInfo.getSysUser().getUserType().contains(clientId)) {
+                if (isRegister == false || StringUtils.equals("SYSTEM", clientId)) {
+                    throw new LockedException("用户不存在");
+                } else {
+                    user.setUserType(user.getUserType() + "," + clientId);
+                    user.setUpdateTime(new Date());
 
                     if (userInfo.getSysUser().getUserType().contains("SCHOOL")) {
                         throw new LockedException("用户已注册");
                     }
-					// 添加userType以及附加信息
-					if (StringUtils.equals("STUDENT", clientId)) {
-						user.setOrganId(Integer.parseInt(loginEntity.getOrganId()));
-						sysUserService.saveStudent(user.getId(),loginEntity.getTenantId());
-					} else if (StringUtils.equals("TEACHER", clientId)) {
-						sysUserService.saveTeacher(user.getId(),loginEntity.getTenantId());
-					}
-					sysUserService.update(user);
-				}
-			}
-		}
-
-		UserDetails loadedUser;
-		try {
-			loadedUser = userDetailsService.loadUserByUsername(username);
-		} catch (UsernameNotFoundException e) {
-			throw e;
-		} catch (Exception e) {
-			throw new InternalAuthenticationServiceException(e.getMessage(), e);
-		}
-
-		if (loadedUser == null) {
-			throw new InternalAuthenticationServiceException("账户不存在");
-		} else {
-			return loadedUser;
-		}
-	}
-
-	@Override
-	protected Authentication createSuccessAuthentication(Object principal, Authentication authentication, UserDetails user) {
-		PhoneAuthenticationToken result = new PhoneAuthenticationToken(principal, authentication.getCredentials(), user.getAuthorities());
-		result.setDetails(authentication.getDetails());
-		return result;
-	}
-
-	@Override
-	public boolean supports(Class<?> aClass) {
-		return PhoneAuthenticationToken.class.isAssignableFrom(aClass);
-	}
-
-	public void setUserDetailsService(UserDetailsService userDetailsService) {
-		this.userDetailsService = userDetailsService;
-	}
-
-	public void setRedisCache(RedisCache<String, Object> redisCache) {
-		this.redisCache = redisCache;
-	}
-
-	public void setSysUserService(SysUserService sysUserService) {
-		this.sysUserService = sysUserService;
-	}
-
-	public void setSmsCodeService(IdGeneratorService smsCodeService) {
-		this.smsCodeService = smsCodeService;
-	}
-
-	public void setSysUserDeviceService(SysUserDeviceService sysUserDeviceService) {
-		this.sysUserDeviceService = sysUserDeviceService;
-	}
+                    // 添加userType以及附加信息
+                    if (StringUtils.equals("STUDENT", clientId)) {
+                        if (StringUtils.isBlank(loginEntity.getOrganId())) {
+                            user.setOrganId(sysUserService.getLesseeOrganId());
+                            loginEntity.setTenantId(1);
+                        } else {
+                            user.setOrganId(Integer.parseInt(loginEntity.getOrganId()));
+                        }
+                        sysUserService.saveStudent(user.getId(),loginEntity.getTenantId());
+                    } else if (StringUtils.equals("TEACHER", clientId)) {
+                        sysUserService.saveTeacher(user.getId(),loginEntity.getTenantId());
+                    }
+                    sysUserService.update(user);
+                }
+            }
+        }
+
+        UserDetails loadedUser;
+        try {
+            loadedUser = userDetailsService.loadUserByUsername(username);
+        } catch (UsernameNotFoundException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new InternalAuthenticationServiceException(e.getMessage(), e);
+        }
+
+        if (loadedUser == null) {
+            throw new InternalAuthenticationServiceException("账户不存在");
+        } else {
+            return loadedUser;
+        }
+    }
+
+    @Override
+    protected Authentication createSuccessAuthentication(Object principal, Authentication authentication, UserDetails user) {
+        PhoneAuthenticationToken result = new PhoneAuthenticationToken(principal, authentication.getCredentials(), user.getAuthorities());
+        result.setDetails(authentication.getDetails());
+        return result;
+    }
+
+    @Override
+    public boolean supports(Class<?> aClass) {
+        return PhoneAuthenticationToken.class.isAssignableFrom(aClass);
+    }
+
+    public void setUserDetailsService(UserDetailsService userDetailsService) {
+        this.userDetailsService = userDetailsService;
+    }
+
+    public void setRedisCache(RedisCache<String, Object> redisCache) {
+        this.redisCache = redisCache;
+    }
+
+    public void setSysUserService(SysUserService sysUserService) {
+        this.sysUserService = sysUserService;
+    }
+
+    public void setSmsCodeService(IdGeneratorService smsCodeService) {
+        this.smsCodeService = smsCodeService;
+    }
+
+    public void setSysUserDeviceService(SysUserDeviceService sysUserDeviceService) {
+        this.sysUserDeviceService = sysUserDeviceService;
+    }
 }

+ 7 - 7
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysMenuServiceImpl.java

@@ -1,11 +1,5 @@
 package com.ym.mec.auth.service.impl;
 
-import java.util.List;
-import java.util.stream.Collectors;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import com.ym.mec.auth.api.dto.MenuQueryInfo;
 import com.ym.mec.auth.api.entity.SysMenu;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -14,6 +8,11 @@ import com.ym.mec.auth.dal.dao.SysUserDao;
 import com.ym.mec.auth.service.SysMenuService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class SysMenuServiceImpl extends BaseServiceImpl<Integer, SysMenu>  implements SysMenuService {
@@ -33,12 +32,13 @@ public class SysMenuServiceImpl extends BaseServiceImpl<Integer, SysMenu>  imple
 		return sysMenuDao.getMenusByRoleId(roleId);
 	}
 
+	@Override
 	public List<SysMenu> findByUser(MenuQueryInfo menuQueryInfo) {
 		SysUser sysUser = sysUserDao.get(menuQueryInfo.getUserId());
 		List<SysMenu> sysMenus;
 		List<SysMenu> sysMenusAllList;
 
-		if(sysUser.getTenantId() == -1 && sysUser.getIsSuperAdmin()){
+		if(sysUser.getIsSuperAdmin()){
 			sysMenus = sysMenuDao.findList(menuQueryInfo.getParentId(),menuQueryInfo.getDelFlag(),menuQueryInfo.getHid());
 			sysMenusAllList = sysMenuDao.findList(null,menuQueryInfo.getDelFlag(),menuQueryInfo.getHid());
 		}else {

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveBroadcastRoomMemberDao.java

@@ -60,5 +60,19 @@ public interface ImLiveBroadcastRoomMemberDao extends BaseMapper<ImLiveBroadcast
      * @param roomUid 房间id
      */
     RoomMemberNumDto queryMemberNum(@Param("roomUid") String roomUid);
+
+    /**
+     * 学后报名乐团
+     * @param studentIds 学生编号
+     * @return List<ImLiveBroadcastRoomMemberVo>
+     */
+    List<ImLiveBroadcastRoomMemberVo> selectStudentMusicGroup(@Param("studentIds") List<Integer> studentIds);
+
+    /**
+     * 学生声部
+     * @param studentIds 学生编号
+     * @return List<ImLiveBroadcastRoomMemberVo>
+     */
+    List<ImLiveBroadcastRoomMemberVo> selectStudentSubject(@Param("studentIds") List<Integer> studentIds);
 }
 

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MultiDataSourceHomeStatsDao.java

@@ -0,0 +1,16 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.wrapper.MultiDataSourceHomeStatsWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface MultiDataSourceHomeStatsDao {
+
+
+    List<MultiDataSourceHomeStatsWrapper.IncomeByDate> clsSummerIncome(@Param("queryDto") MultiDataSourceHomeStatsWrapper.QueryDto queryDto);
+
+    List<MultiDataSourceHomeStatsWrapper.IncomeByDate> gytSummerIncome(@Param("queryDto") MultiDataSourceHomeStatsWrapper.QueryDto queryDto);
+
+    List<MultiDataSourceHomeStatsWrapper.IncomeByDate> gymSummerIncome(@Param("queryDto") MultiDataSourceHomeStatsWrapper.QueryDto queryDto);
+}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -457,5 +457,7 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
 
     List<StudentPaymentOrderExportDto> ExportQueryPage1(Map<String, Object> params);
 
+    List<StudentPaymentOrderExportDto> ExportQueryPage2(Map<String, Object> params);
+
     int queryCount1(Map<String, Object> params);
 }

+ 23 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImLiveBroadcastRoomDto.java

@@ -1,8 +1,8 @@
 package com.ym.mec.biz.dal.dto;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.biz.dal.enums.EUseScene;
+import com.ym.mec.biz.dal.enums.live.ELiveViewMode;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -67,6 +67,12 @@ public class ImLiveBroadcastRoomDto implements Serializable {
     @ApiModelProperty(value = "服务提供方 rongCloud tencentCloud")
     private String serviceProvider;
 
+    @ApiModelProperty("直播观看模式")
+    private ELiveViewMode viewMode;
+
+    @ApiModelProperty("购物车标题")
+    private String shoppingTitle;
+
     @ApiModel(value = "房间配置")
     public static class RoomConfig implements Serializable {
 
@@ -229,5 +235,21 @@ public class ImLiveBroadcastRoomDto implements Serializable {
     public void setServiceProvider(String serviceProvider) {
         this.serviceProvider = serviceProvider;
     }
+
+    public ELiveViewMode getViewMode() {
+        return viewMode;
+    }
+
+    public void setViewMode(ELiveViewMode viewMode) {
+        this.viewMode = viewMode;
+    }
+
+    public String getShoppingTitle() {
+        return shoppingTitle;
+    }
+
+    public void setShoppingTitle(String shoppingTitle) {
+        this.shoppingTitle = shoppingTitle;
+    }
 }
 

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImLiveBroadcastRoom.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.biz.dal.enums.EUseScene;
+import com.ym.mec.biz.dal.enums.live.ELiveViewMode;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -114,6 +115,14 @@ public class ImLiveBroadcastRoom implements Serializable {
     @ApiModelProperty(value = "禁言状态: 0 取消;1禁言")
     private Integer banStatus;
 
+    @TableField("view_mode_")
+    @ApiModelProperty("直播观看模式")
+    private ELiveViewMode viewMode;
+
+    @TableField("shopping_title_")
+    @ApiModelProperty("购物车标题")
+    private String shoppingTitle;
+
     @TableField("created_by_")
     @ApiModelProperty(value = "创建人")
     private Integer createdBy;
@@ -358,5 +367,21 @@ public class ImLiveBroadcastRoom implements Serializable {
     public void setLiveTotalTime(Integer liveTotalTime) {
         this.liveTotalTime = liveTotalTime;
     }
+
+    public ELiveViewMode getViewMode() {
+        return viewMode;
+    }
+
+    public void setViewMode(ELiveViewMode viewMode) {
+        this.viewMode = viewMode;
+    }
+
+    public String getShoppingTitle() {
+        return shoppingTitle;
+    }
+
+    public void setShoppingTitle(String shoppingTitle) {
+        this.shoppingTitle = shoppingTitle;
+    }
 }
 

+ 35 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImLiveBroadcastRoomMember.java

@@ -51,6 +51,9 @@ public class ImLiveBroadcastRoomMember implements Serializable {
     @ApiModelProperty(value = "禁言状态:0取消;1禁言")
     private Integer banStatus;
 
+    @TableField("microphone_flag_")
+    @ApiModelProperty(value = "是否能上麦:0否;1是")
+    private Boolean microphoneFlag;
     @TableField("live_room_status_")
     @ApiModelProperty(value = "直播状态: 0离开;1观看")
     private Integer liveRoomStatus;
@@ -60,12 +63,28 @@ public class ImLiveBroadcastRoomMember implements Serializable {
     @ApiModelProperty(value = "连麦状态 0:未申请1:申请连麦中2:连麦中")
     private Integer whetherMicStatus;
 
+    @TableField("fingerprint_")
+    @ApiModelProperty("游客凭据")
+    private String fingerprint;
+
+    @TableField("visitor_name_")
+    @ApiModelProperty("游客名称")
+    private String visitorName;
+
     @TableField("create_time_")
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
 
     private static final long serialVersionUID = 1L;
 
+    public Boolean getMicrophoneFlag() {
+        return microphoneFlag;
+    }
+
+    public void setMicrophoneFlag(Boolean microphoneFlag) {
+        this.microphoneFlag = microphoneFlag;
+    }
+
     public Integer getWhetherMicStatus() {
         return whetherMicStatus;
     }
@@ -153,5 +172,21 @@ public class ImLiveBroadcastRoomMember implements Serializable {
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
+
+    public String getFingerprint() {
+        return fingerprint;
+    }
+
+    public void setFingerprint(String fingerprint) {
+        this.fingerprint = fingerprint;
+    }
+
+    public String getVisitorName() {
+        return visitorName;
+    }
+
+    public void setVisitorName(String visitorName) {
+        this.visitorName = visitorName;
+    }
 }
 

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImLiveRoomBlack.java

@@ -35,6 +35,14 @@ public class ImLiveRoomBlack implements Serializable {
     @ApiModelProperty(value = "-1公共黑名单 0指定直播间黑名单")
     private Integer type;
 
+    @TableField("fingerprint_")
+    @ApiModelProperty("游客凭据")
+    private String fingerprint;
+
+    @TableField("visitor_name_")
+    @ApiModelProperty("游客名称")
+    private String visitorName;
+
     @TableField("create_by_")
     @ApiModelProperty(value = "创建人")
     private Integer createBy;
@@ -93,6 +101,20 @@ public class ImLiveRoomBlack implements Serializable {
         this.createTime = createTime;
     }
 
+    public String getFingerprint() {
+        return fingerprint;
+    }
+
+    public void setFingerprint(String fingerprint) {
+        this.fingerprint = fingerprint;
+    }
+
+    public String getVisitorName() {
+        return visitorName;
+    }
 
+    public void setVisitorName(String visitorName) {
+        this.visitorName = visitorName;
+    }
 }
 

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/live/ELiveViewMode.java

@@ -0,0 +1,32 @@
+package com.ym.mec.biz.dal.enums.live;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.ym.mec.common.enums.BaseEnum;
+import lombok.Getter;
+
+/**
+ * 直播观看模式
+ */
+@Getter
+public enum ELiveViewMode implements BaseEnum<String, ELiveViewMode> {
+
+    LOGIN("登陆"),
+    VISITOR("游客"),
+    ;
+
+    private final String describe;
+
+    @EnumValue
+    private final String code;
+
+    ELiveViewMode(String describe) {
+        this.describe = describe;
+
+        this.code = this.name();
+    }
+
+    @Override
+    public String getCode() {
+        return code;
+    }
+}

+ 60 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/ImLiveBroadcastRoomMemberVo.java

@@ -38,6 +38,9 @@ public class ImLiveBroadcastRoomMemberVo implements java.io.Serializable {
     
     @ApiModelProperty(value = "分部")
     private String organName;
+
+    @ApiModelProperty("机构编号")
+    private Integer organId;
     
     @ApiModelProperty(value = "乐团")
     private String musicGroupName;
@@ -55,10 +58,49 @@ public class ImLiveBroadcastRoomMemberVo implements java.io.Serializable {
     @ApiModelProperty(value = "是否黑名单")
     private boolean blackFlag;
 
+    @ApiModelProperty("游客凭据")
+    private String fingerprint;
+
+    @ApiModelProperty(value = "是否能上麦:false否;true是")
+    private boolean microphoneFlag;
+
+    public boolean isMicrophoneFlag() {
+        return microphoneFlag;
+    }
+
+    public void setMicrophoneFlag(boolean microphoneFlag) {
+        this.microphoneFlag = microphoneFlag;
+    }
+
     public ImLiveBroadcastRoomSimpleMemberVo getSimpleMemberVo(ImLiveBroadcastRoomMemberVo memberVo) {
         return JSON.parseObject(JSON.toJSONString(memberVo), ImLiveBroadcastRoomSimpleMemberVo.class);
     }
 
+    public ImLiveBroadcastRoomMemberVo roomTitle(String roomTitle) {
+        this.roomTitle = roomTitle;
+        return this;
+    }
+
+    public ImLiveBroadcastRoomMemberVo speakerName(String speakerName) {
+        this.speakerName = speakerName;
+        return this;
+    }
+
+    public ImLiveBroadcastRoomMemberVo subName(String subName) {
+        this.subName = subName;
+        return this;
+    }
+
+    public ImLiveBroadcastRoomMemberVo organName(String organName) {
+        this.organName = organName;
+        return this;
+    }
+
+    public ImLiveBroadcastRoomMemberVo musicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+        return this;
+    }
+
     public static class ImLiveBroadcastRoomSimpleMemberVo {
 
         @ApiModelProperty(value = "学生头像")
@@ -226,4 +268,22 @@ public class ImLiveBroadcastRoomMemberVo implements java.io.Serializable {
 	public void setMusicGroupName(String musicGroupName) {
 		this.musicGroupName = musicGroupName;
 	}
+
+    public String getFingerprint() {
+        return fingerprint;
+    }
+
+    public void setFingerprint(String fingerprint) {
+        this.fingerprint = fingerprint;
+    }
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/ImLiveBroadcastRoomVo.java

@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.microsvc.toolkit.middleware.live.message.LiveRoomConfig;
 import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.biz.dal.enums.EUseScene;
+import com.ym.mec.biz.dal.enums.live.ELiveViewMode;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -127,6 +128,11 @@ public class ImLiveBroadcastRoomVo implements Serializable {
     @ApiModelProperty("视频数量")
     private Integer videoNum;
 
+    @ApiModelProperty("直播观看模式")
+    private ELiveViewMode viewMode;
+
+    @ApiModelProperty("购物车标题")
+    private String shoppingTitle;
 
     @ApiModelProperty("使用场景 正常:NORMAL 音乐:MUSIC")
     private EUseScene useScene;
@@ -434,5 +440,21 @@ public class ImLiveBroadcastRoomVo implements Serializable {
     public void setLiveTotalTime(Integer liveTotalTime) {
         this.liveTotalTime = liveTotalTime;
     }
+
+    public ELiveViewMode getViewMode() {
+        return viewMode;
+    }
+
+    public void setViewMode(ELiveViewMode viewMode) {
+        this.viewMode = viewMode;
+    }
+
+    public String getShoppingTitle() {
+        return shoppingTitle;
+    }
+
+    public void setShoppingTitle(String shoppingTitle) {
+        this.shoppingTitle = shoppingTitle;
+    }
 }
 

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/RoomUserInfoVo.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -24,6 +25,9 @@ public class RoomUserInfoVo extends BaseRoomUserVo implements Serializable  {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date dynamicLookTime;
 
+    @ApiModelProperty("用户头象")
+    private String avatar;
+
     public Integer getTotalViewTime() {
         return totalViewTime;
     }
@@ -56,4 +60,11 @@ public class RoomUserInfoVo extends BaseRoomUserVo implements Serializable  {
         this.tenantId = tenantId;
     }
 
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
 }

+ 41 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MultiDataSourceHomeStatsWrapper.java

@@ -0,0 +1,41 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public class MultiDataSourceHomeStatsWrapper {
+
+    @Data
+    public static class IncomeByDate{
+
+        private BigDecimal totalAmount;
+
+        private String date;
+    }
+
+    @Data
+    public static class summerIncome{
+
+        private String platform;
+
+        private BigDecimal totalAmount;
+
+        private List<IncomeByDate> incomeByDates;
+    }
+
+    @Data
+    public static class QueryDto{
+
+        private String startTime;
+
+        private String endTime;
+
+        private String organIds;
+
+        private String groupBy;
+
+        private String format;
+    }
+}

+ 42 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomService.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.microsvc.toolkit.middleware.live.message.TencentWrapper;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
 import com.ym.mec.biz.dal.dto.LiveRoomStatus;
 import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
@@ -12,6 +13,7 @@ import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
 import com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo;
+import com.ym.mec.biz.dal.vo.RoomUserInfoVo;
 import com.ym.mec.common.entity.ImUserState;
 import com.ym.mec.common.page.PageInfo;
 
@@ -32,6 +34,14 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
 
     ImLiveBroadcastRoomVo queryRoomAndCheck(String roomUid, Integer userId, Integer osType);
 
+    /**
+     * 游客直播间信息
+     * @param roomUid 直播间编号
+     * @param userId 游客编号
+     * @return ImLiveBroadcastRoomVo
+     */
+    ImLiveBroadcastRoomVo visitorRoomInfo(String roomUid, Integer userId);
+
     ImLiveBroadcastRoomVo queryRoomInfo(String roomUid);
 
     void add(ImLiveBroadcastRoomDto dto);
@@ -77,6 +87,38 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
 
     void joinRoom(String roomUid, Integer userId);
 
+    void joinRoom(String roomUid, Integer userId, Boolean microphoneFlag);
+
+    /**
+     * 游客加入直播间
+     * @param roomUid 直播间编号
+     * @param userId 游客编号
+     */
+    void visitorJoinRoom(String roomUid, Integer userId);
+
+    /**
+     * 游客加入直播间凭据
+     * @param roomUid 直播间编号
+     * @param fingerprint 游客凭据
+     * @return RoomUserInfoVo
+     */
+    RoomUserInfoVo getVisitorCredentials(String roomUid, String fingerprint);
+
+    /**
+     * 游客微信身份
+     * @param code 授权码
+     * @return 用户openId
+     */
+    String visitorFingerprint(String code);
+
+    /**
+     * 直播间访问用户信息
+     * @param userId 用户编号
+     * @param roomUid 直播间编号
+     * @return SysUser
+     */
+    SysUser getRoomSysUser(Integer userId, String roomUid);
+
     void startLive(String roomUid, Integer userId,String videoResolution);
 
     void startLive(String roomUid, Integer userId, String videoResolution, String sequence);

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MultiDataSourceHomeStatsService.java

@@ -0,0 +1,14 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.wrapper.MultiDataSourceHomeStatsWrapper;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public interface MultiDataSourceHomeStatsService{
+
+    //收入汇总
+    List<MultiDataSourceHomeStatsWrapper.summerIncome> summerIncome(MultiDataSourceHomeStatsWrapper.QueryDto queryDto);
+
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -407,6 +407,16 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
 
     // 按分部强制开始为腾讯服务提供
     String TENCENT_RTC_SERVICE_PROVIDER = "tencent_rtc_service_provider";
+    
+    // 游客默认头像
+    String VISITOR_DEFAULT_AVATAR = "visitor_default_avatar";
+
+    // 微信公众号appid
+    String WECHAT_APPID = "wechat_appid";
+
+    // 微信公众号secret
+    String WECHAT_SECRET = "wechat_secret";
+
 
     static void checkActivityDate(String startTimeStr, String endTimeStr) {
         if(StringUtils.isEmpty(startTimeStr) || StringUtils.isEmpty(startTimeStr)){

+ 6 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -188,7 +188,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     @Autowired
     private LessonExaminationService lessonExaminationService;
 
-    private final Logger LOGGER = LoggerFactory
+    private final Logger businessLogger = LoggerFactory
             .getLogger(this.getClass());
 
     @Override
@@ -1523,18 +1523,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     	if(CollectionUtils.isEmpty(courseSchedules)){
     		throw new BizException("请指定课程");
 		}
+		businessLogger.info("courseAdjustOnlyWithClassDate: {}",JSON.toJSONString(courseSchedules));
 		Map<Long, CourseSchedule> idCourseMap = courseSchedules.stream().collect(Collectors.toMap(CourseSchedule::getId, c -> c));
 		List<Long> courseIds = courseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
 		List<CourseSchedule> existCourses = courseScheduleDao.findByCourseScheduleIds(courseIds);
 		Date now = new Date();
-
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (null == sysUser) {
-			throw new BizException("获取用户信息失败");
-		}
-
 		//获取操作日志
-		List<CourseScheduleModifyLog> modifyLogs = getModifyLogs(courseIds,existCourses,sysUser.getId(),now);
+		List<CourseScheduleModifyLog> modifyLogs = getModifyLogs(courseIds,existCourses,operatorId,now);
 
 		for (CourseSchedule existCours : existCourses) {
 			if(now.compareTo(existCours.getStartClassTime())>0){
@@ -4144,7 +4139,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			try {
 				tenantAssetsInfoService.deductAmount(updateList);
 			}catch (Exception e){
-				LOGGER.error("deductAmount  >>>>>>>>>",e.getCause());
+				businessLogger.info("deductAmount  >>>>>>>>>",e.getCause());
 			}
 			courseIds = updateList.stream().map(CourseSchedule::getId).collect(Collectors.toList());
 			List<CourseSchedule> beMergeCourses = courseScheduleDao.getBeMergeCourseWithMainCourseIds(courseIds);
@@ -4956,7 +4951,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         if(StringUtils.isEmpty(courseScheduleIds)){
             throw new BizException("参数校验失败");
         }
-        LOGGER.info("清空老师和学生考勤,user:{},参数:{}",user.getId(),courseScheduleIds);
+		businessLogger.info("清空老师和学生考勤,user:{},参数:{}",user.getId(),courseScheduleIds);
         List<Long> courseScheduleId = courseScheduleTeacherSalaryService.querySettlementScheduleId(courseScheduleIds);
         if(courseScheduleId == null || courseScheduleId.size() == 0){
             throw new BizException("课程已结算,无法清除考勤");
@@ -5313,7 +5308,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(schedule == null){
 			throw new BizException("课程不存在");
 		}
-		LOGGER.warn("teacherCourseRates courseScheduleId:{},userId{}",courseScheduleId,user.getId());
+		businessLogger.info("teacherCourseRates courseScheduleId:{},userId{}",courseScheduleId,user.getId());
 		//如果是乐团课
 		List<CourseScheduleRateDto> courseScheduleRateDtos;
 		CourseSchedule courseSchedule;

+ 5 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -423,7 +423,8 @@ public class ExportServiceImpl implements ExportService {
             throw new BizException("请选择服务周期");
         }
         SysUser sysUser = sysUserService.getUser();
-        String organId = organizationService.getEmployeeOrgan(sysUser.getId(), getParam(info, "organId", String.class), sysUser.getIsSuperAdmin());
+        String organId = organizationService.getEmployeeOrgan(sysUser.getId(),
+                getParam(info, "organId", String.class), sysUser.getIsSuperAdmin()&&sysUser.getTenantId() == -1);
         return studentExtracurricularExercisesSituationDao.queryStudentServeInfo(monday,sunday,organId);
     }
 
@@ -984,7 +985,7 @@ public class ExportServiceImpl implements ExportService {
         String organIds = getParam(info, "organIds", String.class);
         Date date = DateUtil.stringToDate(getParam(info, "date", String.class), DateUtil.ISO_EXPANDED_DATE_FORMAT);
         SysUser sysUser = sysUserService.getUser();
-        organIds = organizationService.getEmployeeOrgan(sysUser.getId(), organIds, sysUser.getIsSuperAdmin());
+        organIds = organizationService.getEmployeeOrgan(sysUser.getId(), organIds, sysUser.getIsSuperAdmin()&&sysUser.getTenantId() == -1);
         Date startTime = DateUtil.getFirstDayOfMonth(date);
         Date EndTime = DateUtil.getLastSecondWithDay(DateUtil.getLastDayOfMonth(date));
 
@@ -1089,7 +1090,7 @@ public class ExportServiceImpl implements ExportService {
         String organId = getParam(info, "organId", String.class);
         IndexErrorType errorType = getParam(info, "errorType", IndexErrorType.class);
         SysUser sysUser = sysUserService.getUser();
-        organId = organizationService.getEmployeeOrgan(sysUser.getId(), organId, sysUser.getIsSuperAdmin());
+        organId = organizationService.getEmployeeOrgan(sysUser.getId(), organId, sysUser.getIsSuperAdmin()&&sysUser.getTenantId() == -1);
         List<IndexErrorDataExportDto> result = indexService.exportIndexErrData(organId, errorType);
         if (CollectionUtils.isEmpty(result)) {
             throw new BizException("没有可导出的记录");
@@ -1159,7 +1160,7 @@ public class ExportServiceImpl implements ExportService {
     public void musicGroupNormalStudentNum(HttpServletResponse response, ExportDto exportDto) throws IOException {
         String organIds = getParam(exportDto.getQueryInfo(), "organIds", String.class);
         SysUser sysUser = sysUserService.getUser();
-        organIds = organizationService.getEmployeeOrgan(sysUser.getId(), organIds, sysUser.getIsSuperAdmin());
+        organIds = organizationService.getEmployeeOrgan(sysUser.getId(), organIds, sysUser.getIsSuperAdmin()&&sysUser.getTenantId() == -1);
 
         List<MusicGroupStatusEnum> musicGroupStatusList = new ArrayList<>();
         musicGroupStatusList.add(MusicGroupStatusEnum.PAY);

+ 112 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomMemberServiceImpl.java

@@ -1,26 +1,33 @@
 package com.ym.mec.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ImLiveBroadcastRoomMemberDao;
-import com.ym.mec.biz.dal.dto.LiveRoomStatus;
+import com.ym.mec.biz.dal.dao.OrganizationDao;
+import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember;
+import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomDetailVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo;
-import com.ym.mec.biz.service.ImLiveBroadcastRoomDataService;
-import com.ym.mec.biz.service.ImLiveBroadcastRoomMemberService;
-import com.ym.mec.biz.service.ImLiveRoomVideoService;
+import com.ym.mec.biz.service.*;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.WrapperUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -29,15 +36,22 @@ import java.util.stream.Collectors;
  * @author hgw
  * @since 2022-02-21 14:26:59
  */
+@Slf4j
 @Service("imLiveBroadcastRoomMemberService")
 public class ImLiveBroadcastRoomMemberServiceImpl extends ServiceImpl<ImLiveBroadcastRoomMemberDao, ImLiveBroadcastRoomMember> implements ImLiveBroadcastRoomMemberService {
 
-    private final static Logger log = LoggerFactory.getLogger(ImLiveBroadcastRoomMemberServiceImpl.class);
-
     @Autowired
     private ImLiveBroadcastRoomDataService imLiveBroadcastRoomDataService;
     @Autowired
     private ImLiveRoomVideoService imLiveRoomVideoService;
+    @Autowired
+    private SysConfigService sysConfigService;
+    @Autowired
+    private ImLiveBroadcastRoomService imLiveBroadcastRoomService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private OrganizationDao organizationDao;
 
     @Override
     public ImLiveBroadcastRoomMemberDao getDao() {
@@ -58,13 +72,98 @@ public class ImLiveBroadcastRoomMemberServiceImpl extends ServiceImpl<ImLiveBroa
     @Override
     public PageInfo<ImLiveBroadcastRoomMemberVo> queryRoomMember(Map<String, Object> param) {
         Page<ImLiveBroadcastRoomMemberVo> pageInfo = PageUtil.getPageInfo(param);
-        return PageUtil.pageInfo(baseMapper.queryMemberPage(pageInfo, param));
+
+        IPage<ImLiveBroadcastRoomMemberVo> page = baseMapper.queryMemberPage(pageInfo, param);
+
+        List<ImLiveBroadcastRoomMemberVo> records = page.getRecords();
+
+        if (CollectionUtils.isNotEmpty(records)) {
+
+            // 游客默认头像
+            String defaultAvatar = Optional.ofNullable(sysConfigService.findByParamName(SysConfigService.VISITOR_DEFAULT_AVATAR)
+                            .getParanValue()).orElse("");
+
+            String roomUid = MapUtils.getString(param, "roomUid", RandomStringUtils.random(5));
+            // 直播间信息
+            ImLiveBroadcastRoom room = imLiveBroadcastRoomService.lambdaQuery()
+                    .eq(ImLiveBroadcastRoom::getRoomUid, roomUid)
+                    .last("LIMIT 1")
+                    .one();
+            if (Objects.isNull(room)) {
+                throw new BizException("直播间不存在");
+            }
+            // 直播间主讲老师
+            SysUser speaker = sysUserFeignService.queryUserById(room.getSpeakerId());
+
+            // 机构名称
+            List<Integer> organIds = records.stream()
+                    .map(ImLiveBroadcastRoomMemberVo::getOrganId).distinct().collect(Collectors.toList());
+
+            Map<Integer, String> organMap = organizationDao.findOrgans(organIds).stream()
+                    .collect(Collectors.toMap(Organization::getId, Organization::getName, (o, n) -> n));
+
+            List<Integer> studentIds = records.stream()
+                    .filter(x -> StringUtils.isBlank(x.getFingerprint()))
+                    .map(ImLiveBroadcastRoomMemberVo::getStudentId)
+                    .filter(Objects::nonNull)
+                    .distinct().collect(Collectors.toList());
+
+            // 学生报名乐团
+            Map<Integer, String> musicGroupMap = Maps.newConcurrentMap();
+            // 学生声部名称
+            Map<Integer, String> subjectMap = Maps.newConcurrentMap();
+
+            // 直播客户端查询在线用户信息时,忽略学生相关信息查询
+            if (MapUtils.getIntValue(param, "rows", 10) < 100) {
+
+                for (List<Integer> item : Lists.partition(studentIds, 500)) {
+                    // 并发查询学生信息
+                    Lists.partition(item, 50).parallelStream().forEach(data -> {
+
+                        // 学生报名乐团
+                        Map<Integer, String> musicMap = baseMapper.selectStudentMusicGroup(data).stream()
+                                .filter(x -> Objects.nonNull(x) && Objects.nonNull(x.getStudentId()))
+                                .collect(Collectors.toMap(ImLiveBroadcastRoomMemberVo::getStudentId, x -> Optional.ofNullable(x.getMusicGroupName()).orElse(""), (o, n) -> n));
+
+                        if (MapUtils.isNotEmpty(musicMap)) {
+                            musicGroupMap.putAll(musicMap);
+                        }
+
+                        // 学生声部名称
+                        Map<Integer, String> collect = baseMapper.selectStudentSubject(studentIds).stream()
+                                .filter(x -> Objects.nonNull(x) && Objects.nonNull(x.getStudentId()))
+                                .collect(Collectors.toMap(ImLiveBroadcastRoomMemberVo::getStudentId, x -> Optional.ofNullable(x.getSubName()).orElse(""), (o, n) -> n));
+                        if (MapUtils.isNotEmpty(collect)) {
+                            subjectMap.putAll(collect);
+                        }
+                    });
+                }
+            }
+
+            for (ImLiveBroadcastRoomMemberVo item : records) {
+
+                if (StringUtils.isNotEmpty(item.getFingerprint())) {
+                    // 设置游客默认头像
+                    item.setAvatar(defaultAvatar);
+                } else {
+                    // 设置默认数据
+                    item.subName(subjectMap.getOrDefault(item.getStudentId(), ""))
+                            .organName(organMap.getOrDefault(item.getOrganId(), ""))
+                            .musicGroupName(musicGroupMap.getOrDefault(item.getStudentId(), ""))
+                            .roomTitle(room.getRoomTitle())
+                            .setSpeakerName(speaker.getRealName());
+                }
+
+            }
+        }
+
+        return PageUtil.pageInfo(page);
     }
 
     /**
      * 查询在房间人员
      *
-     * @param roomUid
+     * @param roomUid 直播间编号
      */
     @Override
     public List<Integer> getLiveRoomMember(String roomUid) {

+ 407 - 41
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.google.common.collect.Lists;
+import com.microsvc.toolkit.common.json.ali.AliJSONMap;
 import com.microsvc.toolkit.middleware.live.LivePluginContext;
 import com.microsvc.toolkit.middleware.live.LivePluginService;
 import com.microsvc.toolkit.middleware.live.impl.RongCloudLivePlugin;
@@ -39,6 +40,7 @@ import com.ym.mec.biz.dal.enums.EAnchorStatus;
 import com.ym.mec.biz.dal.enums.EGroupDefinedDataType;
 import com.ym.mec.biz.dal.enums.EOnOffStatus;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.live.ELiveViewMode;
 import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.vo.*;
 import com.ym.mec.biz.redisson.RedissonMessageService;
@@ -55,11 +57,15 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
+import com.ym.mec.util.http.HttpUtil;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.jetbrains.annotations.NotNull;
 import org.joda.time.DateTime;
+import org.redisson.api.RAtomicLong;
 import org.redisson.api.RBucket;
 import org.redisson.api.RLock;
 import org.redisson.api.RMap;
@@ -145,6 +151,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     public static final String LIVE_USER_STATE_TIME = String.join(":", "IM:LIVE_USER_STATE_TIME", USER_ID);
     //主讲人信息
     public static final String LIVE_SPEAKER_INFO = String.join(":", "IM:LIVE_SPEAKER_INFO", ROOM_UID, USER_ID);
+    // 直播间游客信息
+    public static final String LIVE_VISITOR_INFO = String.join(":", "IM:LIVE_VISITOR_INFO", ROOM_UID, USER_ID);
     //主讲人最近一次加入房间的clientIp
     public static final String LIVE_SPEAKER_LAST_CLIENT_IP = String.join(":", "IM:LIVE_SPEAKER_LAST_CLIENT_IP", ROOM_UID, USER_ID);
     //直播提前开始时间
@@ -161,20 +169,25 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      */
     @Override
     public ImLiveBroadcastRoomVo queryRoomAndCheck(String roomUid, Integer userId, Integer osType) {
+
         SysUser sysUser = Optional.ofNullable(userId)
                 .map(this::getSysUser)
                 .orElseGet(this::getSysUser);
+
         // 默认学生端查询
         osType = Optional.ofNullable(osType).orElse(1);
+
+        // 移动端-学生端
         if (osType == 1) {
             //学生端
             return studentQueryRoomAndCheck(roomUid, sysUser);
-        } else if (osType == 2) {
+        }
+        // 移动端-老师端
+        if (osType == 2) {
             //老师端
             return teacherQueryRoomAndCheck(roomUid, sysUser);
         }
-
-        // 直播助手
+        // PC端-直播助手
         if (osType == 3) {
             // 校验直播间是否存在
             ImLiveBroadcastRoomVo vo = Optional.ofNullable(roomUid).map(this::queryRoomInfo)
@@ -188,6 +201,57 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         return queryRoomAndCheck(roomUid, sysUser);
     }
 
+    /**
+     * 游客直播间信息
+     *
+     * @param roomUid 直播间编号
+     * @param userId  游客编号
+     * @return ImLiveBroadcastRoomVo
+     */
+    @Override
+    public ImLiveBroadcastRoomVo visitorRoomInfo(String roomUid, Integer userId) {
+
+        // 直播间游客信息
+        RMap<Integer, String> roomTotalUser = getTotalUserCache(roomUid);
+        if (!roomTotalUser.containsKey(userId)) {
+            throw new BizException("您无法观看该直播,请刷新重试");
+        }
+
+        // 游客信息
+        RoomUserInfoVo userInfo = JSONObject.toJavaObject(JSONObject.parseObject(roomTotalUser.get(userId)),
+                RoomUserInfoVo.class);
+
+        // 游客直播间信息校验
+        ImLiveBroadcastRoomVo roomVo = getVisitorLiveBroadcastRoomVo(roomUid);
+
+        // 用户直播间黑名单
+        roomVo.setBlacklistFlag(0);
+        //黑名单查询-查询当前用户是否在黑名单中
+        int count = imLiveRoomBlackService.count(Wrappers.<ImLiveRoomBlack>lambdaQuery()
+                .eq(ImLiveRoomBlack::getRoomUid, roomVo.getRoomUid())
+                .eq(ImLiveRoomBlack::getUserId, userInfo.getUserId()));
+        if (count > 0) {
+            roomVo.setBlacklistFlag(1);
+        }
+
+        LivePluginService pluginService = livePluginContext.getPluginService(roomVo.getServiceProvider());
+        // 直播房间配置信息
+        String userSig = "";
+        try {
+            // 生成聊天签名
+            userSig = pluginService.register(userInfo.getUserId().toString(), userInfo.getUserName(), userInfo.getAvatar());
+
+        } catch (Exception e) {
+            log.error("直播房间游客注册失败: userId={}", userInfo.getUserId(), e);
+        }
+
+        // 直播房间统计信息
+        getRoomData(roomVo);
+
+        // 直播间配置信息
+        return roomVo.userSig(userSig).liveRoomConfig(pluginService.getLiveRoomConfig());
+    }
+
     public ImLiveBroadcastRoomVo studentQueryRoomAndCheck(String roomUid, SysUser sysUser) {
         //如果是学生端,则需要检查是否有权限进入
         Map<String, Object> param = new HashMap<>();
@@ -1004,7 +1068,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         userid = setFromUserId(userid,roomVo);
         // 消息发送用户
         LiveRoomMessage.MessageUser messageUser = null;
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        SysUser sysUser = getRoomSysUser(Integer.parseInt(userid), roomVo.getRoomUid());
         if (Objects.nonNull(sysUser)) {
             // 发送用户信息
             messageUser = LiveRoomMessage.MessageUser
@@ -1059,7 +1123,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         String fromUserId = setFromUserId(userid, roomVo);
         // 消息发送用户
         LiveRoomMessage.MessageUser messageUser = null;
-        SysUser sysUser = sysUserFeignService.queryUserById(Integer.parseInt(userid));
+        SysUser sysUser = getRoomSysUser(Integer.parseInt(userid), roomVo.getRoomUid());
         if (Objects.nonNull(sysUser)) {
             // 发送用户信息
             messageUser = LiveRoomMessage.MessageUser
@@ -1118,7 +1182,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         // 直播间统计数据
         getRoomData(roomVo);
 
-        String userId = setFromUserId(fromUserId.toString(),roomVo);
+        String userId = setFromUserId(fromUserId.toString(), roomVo);
         // 缓存JoinRoom用户信息到redis
         RBucket<Object> bucket = redissonClient.getBucket(RedissonMessageService.LIVE_ROOM_MEMBER + roomUid);
         if (!bucket.isExists()) {
@@ -1129,7 +1193,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
 
         // 消息发送用户
         LiveRoomMessage.MessageUser messageUser = null;
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        SysUser sysUser = getRoomSysUser(fromUserId, roomUid);
         if (Objects.nonNull(sysUser)) {
             // 发送用户信息
             messageUser = LiveRoomMessage.MessageUser
@@ -1365,6 +1429,12 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      * @param userId  用户id
      */
     public void joinRoom(String roomUid, Integer userId) {
+        joinRoom(roomUid, userId, true);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void joinRoom(String roomUid, Integer userId,Boolean microphoneFlag) {
         //查询房间信息
         ImLiveBroadcastRoomVo imLiveBroadcastRoomVo = getImLiveBroadcastRoomVo(roomUid);
         if (Objects.isNull(imLiveBroadcastRoomVo)) {
@@ -1383,13 +1453,29 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             throw new BizException("当前用户所在机构没有加入直播间的权限");
         }
 
+        // 加入直播间用户信息
+        joinRoomUserInfo(roomUid, userId, imLiveBroadcastRoomVo,microphoneFlag);
+    }
+
+    /**
+     * 加入直播间用户信息
+     * @param roomUid 直播间编号
+     * @param userId 用户编号
+     * @param imLiveBroadcastRoomVo ImLiveBroadcastRoomVo
+     */
+    private void joinRoomUserInfo(String roomUid, Integer userId, ImLiveBroadcastRoomVo imLiveBroadcastRoomVo) {
+        joinRoomUserInfo(roomUid, userId, imLiveBroadcastRoomVo,true);
+    }
+    private void joinRoomUserInfo(String roomUid, Integer userId, ImLiveBroadcastRoomVo imLiveBroadcastRoomVo,Boolean microphoneFlag) {
+
         //记录用户当前房间uid
         redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, userId.toString())).set(roomUid, 12L, TimeUnit.HOURS);
-        //房间累计用户信息-指只要进入到该房间的用户都要记录
-        RMap<Integer, String> roomTotalUser = getTotalUserCache(roomUid);
+
         //判断是否第一次进房间
         RoomUserInfoVo userInfo;
-        Date now = new Date();
+
+        //房间累计用户信息-指只要进入到该房间的用户都要记录
+        RMap<Integer, String> roomTotalUser = getTotalUserCache(roomUid);
         if (roomTotalUser.containsKey(userId)) {
             //多次进入更新动态进入时间
             userInfo = JSONObject.toJavaObject(JSONObject.parseObject(roomTotalUser.get(userId)), RoomUserInfoVo.class);
@@ -1403,30 +1489,34 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             if (Objects.isNull(liveRoomMember)) {
 
                 // 初次进入房间
-                getLiveRoomUserInfo(userId, imLiveBroadcastRoomVo, now);
+                getLiveRoomUserInfo(userId, imLiveBroadcastRoomVo, microphoneFlag);
             } else {
                 // 更新直播间用户信息
                 ImLiveBroadcastRoomMember roomMember = new ImLiveBroadcastRoomMember();
                 roomMember.setId(liveRoomMember.getId());
                 roomMember.setOnlineStatus(1);
                 roomMember.setLiveRoomStatus(1);
+                roomMember.setMicrophoneFlag(microphoneFlag);
 
                 liveBroadcastRoomMemberService.updateById(roomMember);
             }
 
         } else {
             //第一次进该房间 写入用户首次进入时间
-            userInfo = getLiveRoomUserInfo(userId, imLiveBroadcastRoomVo, now);
+            userInfo = getLiveRoomUserInfo(userId, imLiveBroadcastRoomVo, microphoneFlag);
         }
+
         //查询主讲人信息
         RBucket<RoomSpeakerInfo> speakerCache = getRoomSpeakerInfoCache(roomUid, imLiveBroadcastRoomVo.getSpeakerId().toString());
         if (speakerCache.isExists()) {
             //如果用户进来时主讲人已经开启直播则修改学生观看时间
             Integer state = speakerCache.get().getState();
             if (Objects.nonNull(state) && state == 0 && imLiveBroadcastRoomVo.getPushStatus() == 1) {
-                userInfo.setDynamicLookTime(now);
+                userInfo.setDynamicLookTime(DateTime.now().toDate());
             }
         }
+
+        // 直播间用户、在线用户数据缓存
         roomTotalUser.fastPut(userId, JSONObject.toJSONString(userInfo));
         //在线人员列表
         RMap<Integer, String> onlineUserInfo = getOnlineUserCache(roomUid);
@@ -1441,12 +1531,234 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             this.sendBlackJoinRoom(userId, imLiveBroadcastRoomVo);
         }
 
-
-        log.info("join sendOnlineUserCount>>>>   roomUid: {}  fromUserId:{}  count:{}", roomUid, userId, onlineUserInfo.size());
+        log.info("joinRoom>>>> sendOnlineUserCount>>>>   roomUid: {}  fromUserId:{}  count:{}", roomUid, userId, onlineUserInfo.size());
         log.info("joinRoom>>>> userInfo: {}", JSONObject.toJSONString(userInfo));
     }
 
     /**
+     * 游客加入直播间
+     *
+     * @param roomUid 直播间编号
+     * @param userId  游客编号
+     */
+    @Override
+    public void visitorJoinRoom(String roomUid, Integer userId) {
+
+        // 游客直播间信息
+        ImLiveBroadcastRoomVo roomVo = getVisitorLiveBroadcastRoomVo(roomUid);
+
+        // 加入直播间用户信息
+        joinRoomUserInfo(roomUid, userId, roomVo,false);
+    }
+
+    /**
+     * 游客访问直播间信息
+     *
+     * @param roomUid 直播间编号
+     */
+    private ImLiveBroadcastRoomVo getVisitorLiveBroadcastRoomVo(String roomUid) {
+        // 查询直播间信息
+        ImLiveBroadcastRoomVo roomVo = getImLiveBroadcastRoomVo(roomUid);
+        if (Objects.isNull(roomVo) || roomVo.getRoomState() == 1) {
+            log.info("visitorJoinRoom>>>> joinRoom LIVE_ROOM_CANCEL roomUid: {}", roomUid);
+            throw new BizException("直播间不存在");
+        }
+
+        // 判断当前直播间观看模式是否为游客模式且,直播状态
+        if (ELiveViewMode.VISITOR != roomVo.getViewMode()) {
+            log.info("visitorJoinRoom>>>> joinRoom LOGOUT roomUid: {} viewMode: {}", roomUid, roomVo.getViewMode());
+            throw new BizException("请登陆");
+        }
+
+        // 判断当前直播间是否在直播中,直播状态 0未开始 1开始 2结束
+        if (roomVo.getLiveState() == 0) {
+            log.info("visitorJoinRoom>>>> joinRoom LIVE_NOT_START roomUid: {} liveState: {}", roomUid, roomVo.getLiveState());
+
+            Date liveStartTime = DateUtil.addMinutes(roomVo.getLiveStartTime(), -PRE_LIVE_TIME_MINUTE);
+            throw new BizException(DateUtil.format(liveStartTime, "yyyy年MM月dd日 HH点mm分") + " 可进入直播间准备");
+        }
+        if (roomVo.getLiveState() == 2) {
+            log.info("visitorJoinRoom>>>> joinRoom LIVE_CLOSED roomUid: {} liveState: {}", roomUid, roomVo.getLiveState());
+
+            //如果直播结束了还是推广状态则将推广修改为取消
+            if (roomVo.getPopularize() == 1) {
+                this.update(Wrappers.<ImLiveBroadcastRoom>lambdaUpdate()
+                        .set(ImLiveBroadcastRoom::getPopularize, 0)
+                        .eq(ImLiveBroadcastRoom::getId, roomVo.getId()));
+            }
+
+            throw new BizException("直播已结束!");
+        }
+
+        return roomVo;
+    }
+
+    /**
+     * 游客加入直播间凭据
+     *
+     * @param roomUid     直播间编号
+     * @param fingerprint 游客凭据
+     * @return RoomUserInfoVo
+     */
+    @Override
+    public RoomUserInfoVo getVisitorCredentials(String roomUid, String fingerprint) {
+
+        // 游客直播间信息校验
+        ImLiveBroadcastRoomVo roomVo = getVisitorLiveBroadcastRoomVo(roomUid);
+
+        String today = DateTime.now().toString("yyyyMMdd");
+        // 为当前游客生成惟一用户ID
+        String cacheKey = MessageFormat.format("fingerprint:{0}:{1}", today, fingerprint);
+        RBucket<Object> bucket = redissonClient.getBucket(cacheKey);
+
+        Integer userId;
+        if (bucket.isExists()) {
+
+            // 查询游客用户ID
+            userId = Optional.ofNullable(bucket.get()).map(x -> (int) x).orElse(-1);
+        } else {
+
+            // 用户Id缓存key
+            String userIdKey = MessageFormat.format("fingerprint:userId:{0}", today);
+
+            RAtomicLong atomicLong = redissonClient.getAtomicLong(userIdKey);
+            if (!atomicLong.isExists()) {
+                // 设置默认初始化值
+                atomicLong.set(1000);
+                // 设置缓存失效时间
+                atomicLong.expire(1L, TimeUnit.DAYS);
+            }
+
+            // 生成游客用户ID
+            userId = (int) atomicLong.getAndIncrement();
+            // 设置用户ID缓存
+            bucket.set(userId, 12L, TimeUnit.HOURS);
+        }
+
+        //房间累计用户信息-指只要进入到该房间的用户都要记录
+        RMap<Integer, String> roomTotalUser = getTotalUserCache(roomUid);
+
+        RoomUserInfoVo userInfo;
+        if (roomTotalUser.containsKey(userId)) {
+            //多次进入更新动态进入时间
+            userInfo = JSONObject.toJavaObject(JSONObject.parseObject(roomTotalUser.get(userId)), RoomUserInfoVo.class);
+
+            Integer exists = liveBroadcastRoomMemberService.lambdaQuery()
+                    .eq(ImLiveBroadcastRoomMember::getTenantId, userInfo.getTenantId())
+                    .eq(ImLiveBroadcastRoomMember::getRoomUid, roomUid)
+                    .eq(ImLiveBroadcastRoomMember::getUserId, userInfo.getUserId())
+                    .count();
+
+            if (exists <= 0) {
+                // 初次进入房间
+                getLiveRoomVisitorInfo(userId, roomVo, fingerprint);
+            }
+
+        } else {
+            //第一次进该房间 写入用户首次进入时间
+            userInfo = getLiveRoomVisitorInfo(userId, roomVo, fingerprint);
+        }
+
+        // 缓存用户信息
+        roomTotalUser.fastPut(userId, JSONObject.toJSONString(userInfo));
+
+        // 游客缓存信息
+        getRoomVisitorInfoCache(roomUid, userId.toString()).set(userInfo, 12L, TimeUnit.HOURS);
+
+        // 返回直播间访客信息
+        return userInfo;
+    }
+
+    /**
+     * 游客微信身份
+     *
+     * @param code 授权码
+     * @return 用户openId
+     */
+    @Override
+    public String visitorFingerprint(String code) {
+
+        // 微信公众号appId
+        String appId = sysConfigDao.findConfigValue(SysConfigService.WECHAT_APPID);
+        // 微信公众号secret
+        String secret = sysConfigDao.findConfigValue(SysConfigService.WECHAT_SECRET);
+
+        if (StringUtils.isAnyBlank(appId, secret, code)) {
+            // 若微信未配置,产生64位随机数
+            return RandomStringUtils.random(64);
+        }
+
+        try {
+            // 获取用户OpenId接口
+            String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code";
+
+            // 封装请求参数
+            url = MessageFormat.format(url, appId, secret, code);
+
+            String wxMpOAuth2AccessTokenUrl = HttpUtil.get(url, null);
+            log.info("请求微信授权接口的参数:{}", wxMpOAuth2AccessTokenUrl);
+            if (StringUtils.isEmpty(wxMpOAuth2AccessTokenUrl)) {
+                throw new BizException(999,"授权失败,请重新授权");
+            }
+            Map<String, Object> weChatRes = AliJSONMap.tomap(wxMpOAuth2AccessTokenUrl);
+
+            if (!weChatRes.containsKey("openid")) {
+                log.error("获取微信openId失败:[{}]", JSON.toJSONString(weChatRes));
+
+                throw new BizException(999,"授权失败,请重新授权");
+            }
+
+            return MapUtils.getString(weChatRes, "openid", "");
+
+        } catch (Exception e) {
+            log.error("获取微信openId失败:[{}]", e.getMessage(), e);
+
+            throw new BizException(999,"授权失败,请重新授权");
+        }
+
+    }
+
+    /**
+     * 获取直播间游客信息
+     * @param userId 游客编号
+     * @param imLiveBroadcastRoomVo ImLiveBroadcastRoomVo
+     * @param fingerprint 游客凭据
+     * @return RoomUserInfoVo
+     */
+    private RoomUserInfoVo getLiveRoomVisitorInfo(Integer userId, ImLiveBroadcastRoomVo imLiveBroadcastRoomVo, String fingerprint) {
+
+        RoomUserInfoVo userInfo = new RoomUserInfoVo();
+        // 生成游客账号信息,缓存信息
+        userInfo.setTenantId(-1);
+        userInfo.setUserId(userId);
+        userInfo.setUserName(MessageFormat.format("游客{0}", String.valueOf(userId)));
+        userInfo.setTotalViewTime(0);
+        userInfo.setFirstJoinTime(DateTime.now().toDate());
+
+        // 游客默认头像
+        String defaultAvatar = sysConfigDao.findByParamName(SysConfigService.VISITOR_DEFAULT_AVATAR).getParanValue();
+        userInfo.setAvatar(Optional.ofNullable(defaultAvatar).orElse(""));
+
+        // 记录直播间用户信息
+        ImLiveBroadcastRoomMember roomMember = new ImLiveBroadcastRoomMember();
+        roomMember.setTenantId(userInfo.getTenantId());
+        roomMember.setRoomUid(imLiveBroadcastRoomVo.getRoomUid());
+        roomMember.setUserId(userInfo.getUserId());
+        roomMember.setJoinTime(DateTime.now().toDate());
+        roomMember.setTotalTime(0);
+        roomMember.setOnlineStatus(1);
+        roomMember.setBanStatus(0);
+        roomMember.setLiveRoomStatus(1);
+        roomMember.setFingerprint(fingerprint);
+        roomMember.setVisitorName(userInfo.getUserName());
+
+        // 保存直播间用户信息
+        liveBroadcastRoomMemberService.save(roomMember);
+
+        return userInfo;
+    }
+
+    /**
      * 发送黑名单进入消息
      * @param userId 用户id
      */
@@ -1462,18 +1774,21 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         String fromUserid = setFromUserId(userId.toString(),roomVo);
         // 消息发送用户
         LiveRoomMessage.MessageUser messageUser = null;
-        SysUser sysUser = sysUserFeignService.queryUserById(userId);
+
+        // 直播间访问用户信息
+        SysUser sysUser = getRoomSysUser(userId, roomUid);
         if (Objects.nonNull(sysUser)) {
             // 发送用户信息
             messageUser = LiveRoomMessage.MessageUser
-                .builder()
-                .sendUserId(sysUser.getId().toString())
-                .sendUserName(sysUser.getUsername())
-                .avatarUrl(sysUser.getAvatar())
-                .blackFlag(true)
-                .build();
+                    .builder()
+                    .sendUserId(sysUser.getId().toString())
+                    .sendUserName(sysUser.getUsername())
+                    .avatarUrl(sysUser.getAvatar())
+                    .blackFlag(true)
+                    .build();
         }
 
+
         LiveRoomMessage.MessageContent messageContent = LiveRoomMessage.MessageContent
             .builder()
             .sendUserInfo(messageUser)
@@ -1492,23 +1807,58 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             livePluginContext.getPluginService(roomVo.getServiceProvider()).sendChatRoomMessage(message);
             log.info("sendBlackJoinRoom>>>> message: {}", JSONObject.toJSONString(message));
         } catch (Exception e) {
-            log.error("sendBlackJoinRoom>>>> error {}", e.getMessage());
             log.error("sendBlackJoinRoom>>>> sendMessage {} :", JSONObject.toJSONString(message));
+            log.error("sendBlackJoinRoom>>>> error", e);
+        }
+    }
+
+    /**
+     * 直播间访问用户信息
+     * @param userId 用户编号
+     * @param roomUid 直播间编号
+     * @return SysUser
+     */
+    @Override
+    public SysUser getRoomSysUser(Integer userId, String roomUid) {
+
+        SysUser sysUser = null;
+        // 直播间游客或学生用户匹配
+        RBucket<RoomUserInfoVo> visitorInfoCache = getRoomVisitorInfoCache(roomUid, userId.toString());
+        if (getRoomVisitorInfoCache(roomUid, userId.toString()).isExists()) {
+
+            // 游客身份信息
+            RoomUserInfoVo userInfoVo = visitorInfoCache.get();
+            if (Objects.nonNull(userInfoVo)) {
+                sysUser = new SysUser();
+                sysUser.setId(userInfoVo.getUserId());
+                sysUser.setUsername(userInfoVo.getUserName());
+                sysUser.setAvatar(userInfoVo.getAvatar());
+            }
+
+        } else {
+
+            // 登录用户信息
+            sysUser = sysUserFeignService.queryUserById(userId);
         }
+
+        return sysUser;
     }
 
     /**
      * 获取直播间用户信息
      * @param userId 用户id
      * @param imLiveBroadcastRoomVo 直播间信息
-     * @param now 当前时间
      * @return RoomUserInfoVo
      */
     @NotNull
-    private RoomUserInfoVo getLiveRoomUserInfo(Integer userId, ImLiveBroadcastRoomVo imLiveBroadcastRoomVo, Date now) {
+    private RoomUserInfoVo getLiveRoomUserInfo(Integer userId, ImLiveBroadcastRoomVo imLiveBroadcastRoomVo) {
+        return getLiveRoomUserInfo(userId, imLiveBroadcastRoomVo,true);
+
+    }
+    private RoomUserInfoVo getLiveRoomUserInfo(Integer userId, ImLiveBroadcastRoomVo imLiveBroadcastRoomVo,Boolean microphoneFlag) {
 
         RoomUserInfoVo userInfo = getUserInfo(userId);
-        userInfo.setFirstJoinTime(now);
+        userInfo.setFirstJoinTime(DateTime.now().toDate());
         userInfo.setTotalViewTime(0);
 
         // 记录直播间用户信息
@@ -1521,6 +1871,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         roomMember.setOnlineStatus(1);
         roomMember.setBanStatus(0);
         roomMember.setLiveRoomStatus(1);
+        roomMember.setMicrophoneFlag(microphoneFlag);
 
         // 保存直播间用户信息
         liveBroadcastRoomMemberService.save(roomMember);
@@ -1785,6 +2136,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      * 定时任务,每分钟执行
      * 提前30分钟主动去融云注册并创建房间
      */
+    @Transactional
     public void createLiveRoom() {
         log.info("createLiveRoom>>>>");
         RBucket<Object> createLock = redissonClient.getBucket("IM:LIVE_ROOM_CREATE_LOCK");
@@ -1891,6 +2243,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                                                    .build();
 
                     // 生成录制任务
+                    log.info("createLiveRoom>>>>>> recordStart:{}", recordStart.jsonString());
                     pluginService.rtcRoomRecordStart(recordStart);
                 }
 
@@ -1922,7 +2275,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             }
 
         } catch (Exception e) {
-            log.error(">>>>>>>>>> createLiveRoom error roomUid:{} msg:{}", room.getRoomUid(), e.getMessage());
+            log.error(">>>>>>>>>> createLiveRoom error roomUid:{}", room.getRoomUid(), e);
             throw new BizException(e.getMessage());
         }
     }
@@ -2087,18 +2440,20 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         }
     }
 
+    /**
+     * 直播间统计数据
+     * 观看数、点赞数,在线人数
+     * @param roomVo ImLiveBroadcastRoomVo
+     */
     private void getRoomData(ImLiveBroadcastRoomVo roomVo) {
-        //点赞数
-        Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomVo.getRoomUid())).get();
-        if (Objects.isNull(like)) {
-            like = 0;
-        }
 
-        like = syncLikeCount(roomVo.getRoomUid());
+        // 同步点赞数
+        int likeNums = syncLikeCount(roomVo.getRoomUid());
 
-        roomVo.setLikeNum((int) like);
+        roomVo.setLikeNum(likeNums);
         roomVo.setTotalLookNum(0);
         roomVo.setLookNum(0);
+
         //累计总用户数量
         // roomVo.setTotalLookNum(getNum.apply(this::getTotalUserCache, roomVo.getRoomUid()));
         // //在房间观看用户数量
@@ -2606,24 +2961,24 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      * 同步直播间点赞数
      *
      * @param roomUid 直播间uid
-     * @return
+     * @return int
      */
     @Override
-    @Transactional
     public int syncLikeCount(String roomUid) {
+
+        // 直播间信息
         ImLiveBroadcastRoomVo room = getImLiveBroadcastRoomVo(roomUid);
         if (room == null) {
             return 0;
         }
 
+        // 融云直播间
         if (room.getServiceProvider().equals(RongCloudLivePlugin.PLUGIN_NAME)) {
             //点赞数
-            Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).get();
-            if (Objects.isNull(like)) {
-                like = 0;
-            }
-            return (int) like;
+            return (int) Optional.ofNullable(redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).get()).orElse(0);
         }
+
+        // 腾讯云直播
         LivePluginService pluginService = livePluginContext.getPluginService(room.getServiceProvider());
         List<TencentWrapper.ChatRoomGroupCounter> chatRoomGroupCounters = null;
         try {
@@ -2648,6 +3003,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                                                                       .eq(ImLiveBroadcastRoomData::getRoomUid, roomUid)
                                                                       .last("limit 1")
                                                                       .one();
+            // 同步点赞数
             if (one != null) {
                 ImLiveBroadcastRoomData imLiveBroadcastRoomData = new ImLiveBroadcastRoomData();
                 imLiveBroadcastRoomData.setId(one.getId());
@@ -2735,6 +3091,16 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         return redissonClient.getBucket(LIVE_SPEAKER_INFO.replace(USER_ID, userId).replace(ROOM_UID, roomUid));
     }
 
+    /**
+     * 直播间游客信息
+     * @param roomUid 直播间编号
+     * @param userId 游客编号
+     * @return RBucket<RoomUserInfoVo>
+     */
+    private RBucket<RoomUserInfoVo> getRoomVisitorInfoCache(String roomUid, String userId) {
+        return redissonClient.getBucket(LIVE_VISITOR_INFO.replace(USER_ID, userId).replace(ROOM_UID, roomUid));
+    }
+
     private RoomUserInfoVo getUserInfo(Integer userId) {
         RoomUserInfoVo userInfo = new RoomUserInfoVo();
         userInfo.setUserId(userId);

+ 19 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveRoomBlackServiceImpl.java

@@ -11,9 +11,11 @@ import com.microsvc.toolkit.middleware.live.message.LiveRoomMessage;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ImLiveRoomBlackDao;
+import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember;
 import com.ym.mec.biz.dal.entity.ImLiveRoomBlack;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.ImLiveRoomBlackVo;
+import com.ym.mec.biz.service.ImLiveBroadcastRoomMemberService;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
 import com.ym.mec.biz.service.ImLiveRoomBlackService;
 import com.ym.mec.common.entity.ImRoomMessage;
@@ -47,6 +49,8 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
     private LivePluginContext livePluginContext;
     @Autowired
     private ImLiveBroadcastRoomService imLiveBroadcastRoomService;
+    @Autowired
+    private ImLiveBroadcastRoomMemberService imLiveBroadcastRoomMemberService;
 
     /**
      * 查询当前机构学生 -下拉框
@@ -94,6 +98,18 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
             imLiveRoomBlack.setType(0);
             imLiveRoomBlack.setCreateBy(getSysUser().getId());
             imLiveRoomBlack.setCreateTime(new Date());
+
+            // 直播间访问游客信息
+            ImLiveBroadcastRoomMember roomMember = imLiveBroadcastRoomMemberService.lambdaQuery()
+                    .eq(ImLiveBroadcastRoomMember::getRoomUid, roomUid)
+                    .eq(ImLiveBroadcastRoomMember::getUserId, userId)
+                    .last("LIMIT 1")
+                    .one();
+            if (Objects.nonNull(roomMember)) {
+                imLiveRoomBlack.setFingerprint(roomMember.getFingerprint());
+                imLiveRoomBlack.setVisitorName(roomMember.getVisitorName());
+            }
+
             this.save(imLiveRoomBlack);
             ImLiveBroadcastRoomVo roomVo = imLiveBroadcastRoomService.queryRoomInfo(roomUid);
             if (roomVo == null) {
@@ -103,7 +119,7 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
                 log.info("直播房间未开播,不需要发送消息");
                 return;
             }
-            setBlack( userId, roomVo);
+            setBlack(userId, roomVo);
         });
     }
 
@@ -115,7 +131,7 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
         LivePluginService pluginService = livePluginContext.getPluginService(roomVo.getServiceProvider());
         try {
 
-            SysUser sysUser = sysUserFeignService.queryUserById(userId);
+            SysUser sysUser = imLiveBroadcastRoomService.getRoomSysUser(userId, roomVo.getRoomUid());
             if (sysUser == null) {
                 log.error("用户不存在");
                 return;
@@ -192,6 +208,7 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
         message.setIsIncludeSender(1);
         message.setObjectName(type);
         message.setToChatRoomId(roomUid);
+
         HashMap<String, Integer> sendMap = new HashMap<>();
         sendMap.put("userId", userId);
         message.setFromUserId(fromUserId.toString());

+ 97 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MultiDataSourceHomeStatsServiceImpl.java

@@ -0,0 +1,97 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.MultiDataSourceHomeStatsDao;
+import com.ym.mec.biz.dal.wrapper.MultiDataSourceHomeStatsWrapper;
+import com.ym.mec.biz.service.MultiDataSourceHomeStatsService;
+import com.ym.mec.util.date.DateUtil;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class MultiDataSourceHomeStatsServiceImpl implements MultiDataSourceHomeStatsService {
+
+    @Resource
+    private MultiDataSourceHomeStatsDao multiDataSourceHomeStatsDao;
+
+    @Override
+    public List<MultiDataSourceHomeStatsWrapper.summerIncome> summerIncome(MultiDataSourceHomeStatsWrapper.QueryDto queryDto) {
+        Date startTime = DateUtil.stringToDate(queryDto.getStartTime(),DateUtil.DEFAULT_PATTERN);
+        Date endTime = DateUtil.stringToDate(queryDto.getEndTime(),DateUtil.DEFAULT_PATTERN);
+        List<String> dates;
+        if(DateUtil.daysBetween(startTime, endTime) <= 31){
+            queryDto.setGroupBy("%Y年-%m月-%d日");
+            queryDto.setFormat("%Y年%m月%d日");
+            dates = DateUtil.getDatesBetweenByDay(startTime, endTime);
+        } else if (DateUtil.monthsBetween(startTime, endTime) <= 12) {
+            queryDto.setGroupBy("%Y-%m");
+            queryDto.setFormat("%Y年%m月");
+            dates = DateUtil.getDatesBetweenByMonth(startTime, endTime);
+        }else {
+            queryDto.setGroupBy("%Y");
+            queryDto.setFormat("%Y年");
+            dates = DateUtil.getDatesBetweenByYear(startTime, endTime);
+        }
+        //获取酷乐秀收入
+        List<MultiDataSourceHomeStatsWrapper.IncomeByDate> clsIncomeDateList = multiDataSourceHomeStatsDao.clsSummerIncome(queryDto);
+        //获取管乐团收入
+        List<MultiDataSourceHomeStatsWrapper.IncomeByDate> gytIncomeDateList = multiDataSourceHomeStatsDao.gytSummerIncome(queryDto);
+        //获取管乐迷收入
+        List<MultiDataSourceHomeStatsWrapper.IncomeByDate> gymIncomeDateList = multiDataSourceHomeStatsDao.gymSummerIncome(queryDto);
+
+        Map<String, MultiDataSourceHomeStatsWrapper.IncomeByDate> clsMap = clsIncomeDateList.stream().
+                collect(Collectors.groupingBy(e -> e.getDate(), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0))));
+        Set<String> clsKeySet = clsMap.keySet();
+        List<MultiDataSourceHomeStatsWrapper.IncomeByDate> clsList = new ArrayList<>();
+
+        Map<String, MultiDataSourceHomeStatsWrapper.IncomeByDate> gytMap = gytIncomeDateList.stream().
+                collect(Collectors.groupingBy(e -> e.getDate(), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0))));
+        Set<String> gytKeySet = gytMap.keySet();
+        List<MultiDataSourceHomeStatsWrapper.IncomeByDate> gytList = new ArrayList<>();
+
+        Map<String, MultiDataSourceHomeStatsWrapper.IncomeByDate> gymMap = gymIncomeDateList.stream().
+                collect(Collectors.groupingBy(e -> e.getDate(), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0))));
+        Set<String> gymKeySet = gymMap.keySet();
+        List<MultiDataSourceHomeStatsWrapper.IncomeByDate> gymList = new ArrayList<>();
+
+        // 遍历日期列表,补全数据并添加到结果集中
+        for (String date : dates) {
+            this.addItem(clsKeySet,clsList,date,clsMap);
+            this.addItem(gytKeySet,gytList,date,gytMap);
+            this.addItem(gymKeySet,gymList,date,gymMap);
+        }
+        List<MultiDataSourceHomeStatsWrapper.summerIncome> result = new ArrayList<>();
+        result.add(this.init("cls",clsList));
+        result.add(this.init("gyt",gytList));
+        result.add(this.init("gym",gymList));
+        return result;
+    }
+
+    private MultiDataSourceHomeStatsWrapper.summerIncome init(String platForm,List<MultiDataSourceHomeStatsWrapper.IncomeByDate> itemList){
+        MultiDataSourceHomeStatsWrapper.summerIncome income = new MultiDataSourceHomeStatsWrapper.summerIncome();
+        income.setPlatform(platForm);
+        income.setTotalAmount(itemList.stream().map(e->e.getTotalAmount()).reduce(BigDecimal.ZERO,BigDecimal::add));
+        income.setIncomeByDates(itemList);
+        return income;
+    }
+
+    private void addItem(Set<String> keySet,List<MultiDataSourceHomeStatsWrapper.IncomeByDate> itemList,String date,
+                        Map<String, MultiDataSourceHomeStatsWrapper.IncomeByDate> itemMap){
+        if (keySet.contains(date)) {
+            // 如果存在对应日期的数据,则添加到结果集中
+            itemList.add(itemMap.get(date));
+        } else {
+            // 如果不存在对应日期的数据,则创建一个新的IncomeByDate对象,并设置totalAmount为0
+            MultiDataSourceHomeStatsWrapper.IncomeByDate newIncomeByDate = new MultiDataSourceHomeStatsWrapper.IncomeByDate();
+            newIncomeByDate.setDate(date);
+            newIncomeByDate.setTotalAmount(BigDecimal.ZERO);
+            itemList.add(newIncomeByDate);
+        }
+    }
+
+
+}

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java

@@ -64,7 +64,7 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	@Override
 	public List<Organization> queryEmployeeOrgan(){
 		SysUser sysUser = sysUserService.getUser();
-		String organIds = this.getEmployeeOrgan(sysUser.getId(), "", sysUser.getIsSuperAdmin());
+		String organIds = this.getEmployeeOrgan(sysUser.getId(), "", sysUser.getIsSuperAdmin()&&sysUser.getTenantId() == -1);
 		return organizationDao.queryEmployeeOrgan(organIds);
 	}
 
@@ -134,7 +134,7 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	@Override
 	public String getEmployeeOrgan(Object organIds) {
 		SysUser sysUser = sysUserService.getUser();
-		return this.getEmployeeOrgan(sysUser.getId(),organIds == null?"":organIds.toString(),sysUser.getIsSuperAdmin());
+		return this.getEmployeeOrgan(sysUser.getId(),organIds == null?"":organIds.toString(),sysUser.getIsSuperAdmin()&&sysUser.getTenantId() == -1);
 	}
 
 	@Override

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -1702,6 +1702,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     public List<OperatingTotalIncomeDto> queryOperatingSummaryIncome(Map<String, Object> params) {
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderDao.ExportQueryPage1(params);
+        studentPaymentOrderExportDtos.addAll(studentPaymentOrderDao.ExportQueryPage2(params));
         long i = 1;
         //获取机构费率
         List<Long> otherOrderIds = studentPaymentOrderExportDtos.stream().filter(e -> e.getGroupType() != GroupType.GOODS_SELL

+ 2 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml

@@ -65,6 +65,8 @@
         a.ban_status_ AS banStatus,
         a.created_time_ AS createdTime,
         a.service_provider_ as serviceProvider,
+        a.view_mode_ AS viewMode,
+        a.shopping_title_ AS shoppingTitle,
         a.use_scene_ as useScene
         from im_live_broadcast_room as a
         left join tenant_info AS t on a.tenant_id_ = t.id_

+ 49 - 24
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMemberMapper.xml

@@ -25,34 +25,28 @@
     </insert>
 
     <select id="queryMemberPage" resultType="com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo">
-        select i.room_uid_ as roomUid,
-        i.room_title_ as roomTitle,
-        tu.real_name_ speakerName,
-        a.user_id_ as studentId,
-        a.whether_mic_status_ as whetherMicStatus,
-        su.username_ as studentName,
-        su.avatar_ as avatar,
-        su.phone_ as phone,
-        b.name_ as subName,
-        o.name_ organName,
-        GROUP_CONCAT(distinct mg.name_) musicGroupName,
-        a.join_time_ as joinTime,
-        a.total_time_ as totalViewTime,
-        if(ib.user_id_ is null, 0, 1) as blackFlag
-        from im_live_broadcast_room_member as a
-        left join im_live_broadcast_room as i on a.room_uid_ = i.room_uid_
-        left join sys_user as su on su.id_ = a.user_id_
-        left join student st on su.id_ = st.user_id_
-		LEFT JOIN student_registration sr ON sr.user_id_ = a.user_id_
-		LEFT JOIN music_group mg ON  mg.id_ = sr.music_group_id_
-        left join subject as b on st.subject_id_list_ = b.id_
-		left join `sys_user` tu on tu.`id_` = i.`speaker_id_` 
-		LEFT JOIN `organization` o on o.`id_` = su.`organ_id_`
-        left join im_live_room_black ib on ib.room_uid_ = a.room_uid_ and ib.user_id_ = a.user_id_
+        select
+            a.room_uid_ as roomUid,
+            a.user_id_ as studentId,
+            a.whether_mic_status_ as whetherMicStatus,
+            a.fingerprint_ as fingerprint,
+            IFNULL(su.username_, a.visitor_name_) as studentName,
+            su.avatar_ as avatar,
+            su.phone_ as phone,
+            su.organ_id_ AS organId,
+            a.join_time_ as joinTime,
+            a.total_time_ as totalViewTime,
+            if(ib.user_id_ is null, 0, 1) as blackFlag,
+            a.microphone_flag_ as microphoneFlag
+        from
+            im_live_broadcast_room_member as a
+            left join sys_user as su on su.id_ = a.user_id_
+            left join im_live_room_black ib on ib.room_uid_ = a.room_uid_ and ib.user_id_ = a.user_id_
         where a.room_uid_ = #{param.roomUid}
         <if test="param.search != null ">
             AND (
             a.user_id_ LIKE CONCAT('%', #{param.search},'%')
+            OR a.visitor_name_ LIKE CONCAT('%', #{param.search},'%')
             OR su.username_ LIKE CONCAT('%', #{param.search},'%')
             )
         </if>
@@ -62,6 +56,17 @@
         <if test="param.whetherMicStatus != null">
             and a.whether_mic_status_ = #{param.whetherMicStatus}
         </if>
+        <if test="param.excludeBlacklist != null and param.excludeBlacklist == 1">
+            AND ib.user_id_ is null
+        </if>
+        <if test="param.visitorQuery != null">
+            <if test="param.visitorQuery == 1">
+                AND a.fingerprint_ IS NOT NULL
+            </if>
+            <if test="param.visitorQuery == 0">
+                AND a.fingerprint_ IS NULL
+            </if>
+        </if>
         group by a.user_id_
         ORDER BY a.join_time_
     </select>
@@ -99,4 +104,24 @@
         where room_uid_ = #{roomUid}
         group by room_uid_
     </select>
+
+    <!--学后报名乐团-->
+    <select id="selectStudentMusicGroup" resultType="com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo">
+        select
+            sr.user_id_ as studentId, GROUP_CONCAT(distinct mg.name_) musicGroupName
+        from
+            student_registration sr LEFT JOIN music_group mg ON  mg.id_ = sr.music_group_id_
+        WHERE sr.user_id_ IN (<foreach collection="studentIds" separator="," item="item">#{item}</foreach>)
+    </select>
+    <!--学后报名乐团-->
+
+    <!--学生声部信息-->
+    <select id="selectStudentSubject" resultType="com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo">
+        SELECT
+            st.user_id_ as studentId, b.name_ as subName
+        FROM
+            student st left join subject as b on st.subject_id_list_ = b.id_
+        WHERE st.user_id_ IN (<foreach collection="studentIds" separator="," item="item">#{item}</foreach>)
+    </select>
+    <!--学生声部信息-->
 </mapper>

+ 3 - 2
mec-biz/src/main/resources/config/mybatis/ImLiveRoomBlackMapper.xml

@@ -49,8 +49,8 @@
 
     <select id="queryBlackList"  parameterType="map" resultType="com.ym.mec.biz.dal.vo.ImLiveRoomBlackVo">
         select a.user_id_,
-               b.username_,
-               b.real_name_,
+               IFNULL(b.username_, a.visitor_name_) AS username,
+               IFNULL(b.real_name_, a.visitor_name_) AS realName,
                b.phone_,
                a.create_time_
         from im_live_room_black as a
@@ -60,6 +60,7 @@
         <if test="param.search != null ">
             and (
             a.`user_id_` LIKE CONCAT('%', #{param.search},'%')
+            OR a.`visitor_name_` LIKE CONCAT('%', #{param.search},'%')
             OR b.`username_` LIKE CONCAT('%', #{param.search},'%')
             OR b.`phone_` LIKE CONCAT('%', #{param.search},'%')
             )

+ 2 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveRoomReservationMapper.xml

@@ -46,6 +46,8 @@
         a.created_time_ AS createdTime,
         a.service_provider_ as serviceProvider,
         a.popularize_type_ AS popularizeType,
+        a.view_mode_ AS viewMode,
+        a.shopping_title_ AS shoppingTitle,
         IF(d.user_id_ is null, 0, 1) as reserve
         from (
         select *

+ 34 - 0
mec-biz/src/main/resources/config/mybatis/MultiDataSourceHomeStatsMapper.xml

@@ -0,0 +1,34 @@
+<?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.ym.mec.biz.dal.dao.MultiDataSourceHomeStatsDao">
+
+    <select id="clsSummerIncome"
+            resultType="com.ym.mec.biz.dal.wrapper.MultiDataSourceHomeStatsWrapper$IncomeByDate">
+        select DATE_FORMAT(account_period_time_,#{queryDto.format}) `date`,SUM(trans_amount_) totalAmount
+        from cooleshow_pro.platform_cash_account_record where in_or_out_ = 'IN' AND post_status_ = 'RECORDED'
+        AND DATE_FORMAT(account_period_time_,'%Y-%m-%d') BETWEEN #{queryDto.startTime} AND #{queryDto.endTime}
+        group by DATE_FORMAT(account_period_time_,#{queryDto.groupBy});
+    </select>
+    <select id="gytSummerIncome"
+            resultType="com.ym.mec.biz.dal.wrapper.MultiDataSourceHomeStatsWrapper$IncomeByDate">
+        select DATE_FORMAT(create_time_,#{queryDto.format}) `date`,SUM(current_price_) totalAmount
+        from jmedu_pro.user_payment_order where status_ = 'PAID'
+        AND DATE_FORMAT(create_time_,'%Y-%m-%d') BETWEEN #{queryDto.startTime} AND #{queryDto.endTime}
+        group by DATE_FORMAT(create_time_,#{queryDto.groupBy})
+    </select>
+    <select id="gymSummerIncome"
+            resultType="com.ym.mec.biz.dal.wrapper.MultiDataSourceHomeStatsWrapper$IncomeByDate">
+        SELECT DATE_FORMAT(pay_time_,#{queryDto.format}) `date`,SUM(CASE WHEN actual_amount_ IS NULL THEN 0 ELSE actual_amount_ END +
+        CASE WHEN balance_payment_amount_ IS NULL THEN 0 ELSE balance_payment_amount_ END) totalAmount
+        FROM student_payment_order
+        where status_ = 'SUCCESS' AND DATE_FORMAT(pay_time_,'%Y-%m-%d') BETWEEN #{queryDto.startTime} AND #{queryDto.endTime}
+        <if test="queryDto.organIds != null and queryDto.organIds != ''">
+            AND FIND_IN_SET(organ_id_,#{queryDto.organIds})
+        </if>
+        GROUP BY DATE_FORMAT(pay_time_,#{queryDto.groupBy})
+    </select>
+</mapper>

+ 21 - 19
mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml

@@ -210,16 +210,18 @@
 		where #{month} BETWEEN DATE_FORMAT(orc.start_date_,'%Y-%m') AND DATE_FORMAT(orc.end_date_,'%Y-%m') AND orc.cloud_price_ > 0 AND orc.start_date_  IS NOT NULL;
 	</select>
 	<select id="sumRefundAmount" resultType="java.util.Map">
-		select organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure where process_id_ IN (19,20,23) AND fee_project_ != 25
-		AND DATE_FORMAT(create_time_,'%Y-%m') = #{month} AND amount_ > 0 group by organ_id_;
+		select organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure where process_id_ IN (19,22,23,28,51) AND fee_project_ = 19
+		AND effective_time_ = #{month} AND amount_ > 0 and del_flag_ = 0 group by organ_id_;
 	</select>
 	<select id="sumVariableCosts" resultType="java.util.Map">
 		select fe.organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure fe
-		where DATE_FORMAT(fe.create_time_,'%Y-%m') = #{month} AND fee_project_ BETWEEN 6 AND 21 AND process_id_ = 28 group by fe.organ_id_;
+		where effective_time_ = #{month} AND amount_ > 0 and del_flag_ = 0
+		AND fee_project_ BETWEEN 6 AND 21 AND process_id_ IN (19,22,23,28,51) group by fe.organ_id_;
 	</select>
 	<select id="sumFixedCosts" resultType="java.util.Map">
 		select fe.organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure fe
-		where DATE_FORMAT(fe.create_time_,'%Y-%m') = #{month} AND fee_project_ IN (1,2,3,4,5) AND process_id_ = 28 group by fe.organ_id_;
+		where effective_time_ = #{month} AND amount_ > 0 and del_flag_ = 0
+		AND fee_project_ IN (1,2,3,4,5) AND process_id_ IN (19,22,23,28,51) group by fe.organ_id_;
 	</select>
 	<select id="sumCloudPreAmount" resultType="java.util.Map">
 		select cto.organ_id_ 'key',TRUNCATE(SUM(operating_amount_ / (TIMESTAMPDIFF(DAY,cto.start_time_,cto.end_time_) + 1) *
@@ -355,21 +357,21 @@
     <select id="queryOASummaryExpenses" resultType="com.ym.mec.biz.dal.dto.OASummaryExpensesDto">
 		SELECT
 			o.name_ AS organName,
-			SUM(CASE WHEN fee_project_ = 3 THEN fe.amount_ ELSE 0 END) AS house,
-			SUM(CASE WHEN fee_project_ = 4 THEN fe.amount_ ELSE 0 END) AS office,
-			SUM(CASE WHEN fee_project_ = 5 THEN fe.amount_ ELSE 0 END) AS mainsProperty,
-			SUM(CASE WHEN fee_project_ = 6 THEN fe.amount_ ELSE 0 END) AS travel,
-			SUM(CASE WHEN fee_project_ = 7 THEN fe.amount_ ELSE 0 END) AS services,
-			SUM(CASE WHEN fee_project_ = 8 THEN fe.amount_ ELSE 0 END) AS welfare,
-			SUM(CASE WHEN fee_project_ = 9 THEN fe.amount_ ELSE 0 END) AS activities,
-			SUM(CASE WHEN fee_project_ = 10 THEN fe.amount_ ELSE 0 END) AS traffic,
-			SUM(CASE WHEN fee_project_ = 11 THEN fe.amount_ ELSE 0 END) AS certificates,
-			SUM(CASE WHEN fee_project_ IN (12,20) THEN fe.amount_ ELSE 0 END) AS instrument,
-			SUM(CASE WHEN fee_project_ = 15 THEN fe.amount_ ELSE 0 END) AS communications,
-			SUM(CASE WHEN fee_project_ = 16 THEN fe.amount_ ELSE 0 END) AS postalTransport,
-			SUM(CASE WHEN fee_project_ = 17 THEN fe.amount_ ELSE 0 END) AS hospitality,
-			SUM(CASE WHEN fee_project_ = 19 THEN fe.amount_ ELSE 0 END) AS refund,
-			SUM(CASE WHEN fee_project_ = 26 THEN fe.amount_ ELSE 0 END) AS other,
+			SUM(CASE WHEN fee_project_ = 3 THEN fe.current_amount_ ELSE 0 END) AS house,
+			SUM(CASE WHEN fee_project_ = 4 THEN fe.current_amount_ ELSE 0 END) AS office,
+			SUM(CASE WHEN fee_project_ = 5 THEN fe.current_amount_ ELSE 0 END) AS mainsProperty,
+			SUM(CASE WHEN fee_project_ = 6 THEN fe.current_amount_ ELSE 0 END) AS travel,
+			SUM(CASE WHEN fee_project_ = 7 THEN fe.current_amount_ ELSE 0 END) AS services,
+			SUM(CASE WHEN fee_project_ = 8 THEN fe.current_amount_ ELSE 0 END) AS welfare,
+			SUM(CASE WHEN fee_project_ = 9 THEN fe.current_amount_ ELSE 0 END) AS activities,
+			SUM(CASE WHEN fee_project_ = 10 THEN fe.current_amount_ ELSE 0 END) AS traffic,
+			SUM(CASE WHEN fee_project_ = 11 THEN fe.current_amount_ ELSE 0 END) AS certificates,
+			SUM(CASE WHEN fee_project_ IN (12,20) THEN fe.current_amount_ ELSE 0 END) AS instrument,
+			SUM(CASE WHEN fee_project_ = 15 THEN fe.current_amount_ ELSE 0 END) AS communications,
+			SUM(CASE WHEN fee_project_ = 16 THEN fe.current_amount_ ELSE 0 END) AS postalTransport,
+			SUM(CASE WHEN fee_project_ = 17 THEN fe.current_amount_ ELSE 0 END) AS hospitality,
+			SUM(CASE WHEN fee_project_ = 19 THEN fe.current_amount_ ELSE 0 END) AS refund,
+			SUM(CASE WHEN fee_project_ = 26 THEN fe.current_amount_ ELSE 0 END) AS other,
 			SUM(CASE WHEN hc.human_cost_type_ = 'FIXED' THEN hc.amount_ ELSE 0 END) AS fixedHumanCost,
 			SUM(CASE WHEN hc.human_cost_type_ = 'VARIABLE' THEN hc.amount_ ELSE 0 END) AS variableHumanCost,
 			SUM(CASE WHEN hc.human_cost_type_ = 'NETWORK_CLASSROOM' THEN hc.amount_ ELSE 0 END) AS network,

+ 10 - 4
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -767,11 +767,17 @@
         FROM student_payment_order spo
         LEFT JOIN student_payment_order_detail spod on spo.id_ = spod.payment_order_id_
         LEFT JOIN sporadic_charge_info sci on spo.music_group_id_ = sci.id_
-        left join music_group mg ON mg.id_ = spo.music_group_id_ AND spo.group_type_ = 'MUSIC' AND spo.type_ = 'APPLY'
-        where ((mg.musical_instruments_provide_status_ = 1 AND mg.musical_instruments_provide_time_ = #{month}) OR
-               (DATE_FORMAT(spo.pay_time_,'%Y-%m') = #{month} AND (mg.musical_instruments_provide_status_ IS NULL OR mg.musical_instruments_provide_status_ = 1)))
+        where DATE_FORMAT(spo.pay_time_,'%Y-%m') = #{month} AND spo.order_no_ NOT IN (select distinct order_no_ from sell_order where DATE_FORMAT(delivery_time_,'%Y-%m') = #{month})
         AND spo.tenant_id_ = 1 AND spo.status_ = 'SUCCESS'
-        ORDER BY spo.id_ ASC
+    </select>
+    <select id="ExportQueryPage2" resultMap="orderAndDetail" parameterType="map">
+        select spo.*,spod.id_ detail_id_,spod.type_ detail_type_,spod.price_
+                              detail_price_,spod.kit_group_purchase_type_ detail_kit_group_purchase_type_,
+               sci.charge_type_ from (select distinct order_no_ from sell_order where DATE_FORMAT(delivery_time_,'%Y-%m') = #{month}) so
+                                         left join student_payment_order spo ON so.order_no_ = spo.order_no_
+                                         LEFT JOIN student_payment_order_detail spod on spo.id_ = spod.payment_order_id_
+                                         LEFT JOIN sporadic_charge_info sci on spo.music_group_id_ = sci.id_
+        where spo.tenant_id_ = 1 AND spo.status_ = 'SUCCESS'
     </select>
     <resultMap id="SporadicChargeInfoDtoMap" type="com.ym.mec.biz.dal.dto.SporadicChargeInfoDto">
         <result property="organName" column="organ_name_"/>

+ 1 - 2
mec-biz/src/main/resources/config/mybatis/SysUserCashAccountMapper.xml

@@ -41,8 +41,7 @@
     </select>
 
     <!-- 向数据库增加一条记录 -->
-    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysUserCashAccount" useGeneratedKeys="true"
-            keyColumn="id" keyProperty="id">
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysUserCashAccount" useGeneratedKeys="true">
         INSERT INTO sys_user_cash_account
             (user_id_, currency_, create_time_, update_time, tenant_id_)
         VALUES (#{userId}, #{currency}, now(), now(), #{tenantId})

+ 60 - 60
mec-common/common-core/src/main/java/com/ym/mec/common/controller/BaseController.java

@@ -31,48 +31,48 @@ import java.util.stream.Collectors;
 @ControllerAdvice
 public class BaseController {
 
-	private final static Logger logger = LoggerFactory.getLogger(BaseController.class);
+    private final static Logger logger = LoggerFactory.getLogger(BaseController.class);
 
-	public static <T> HttpResponseResult<T> succeed(T object) {
-		return getResponseData(true, HttpStatus.OK, object, "");
-	}
+    public static <T> HttpResponseResult<T> succeed(T object) {
+        return getResponseData(true, HttpStatus.OK, object, "");
+    }
 
-	public static <T> HttpResponseResult<T> succeed() {
-		return getResponseData(true, HttpStatus.OK, null, "");
-	}
+    public static <T> HttpResponseResult<T> succeed() {
+        return getResponseData(true, HttpStatus.OK, null, "");
+    }
 
-	public static <T> HttpResponseResult<T> succeedData(T obj) {
-		return getResponseData(true, HttpStatus.OK, obj, "操作成功");
-	}
+    public static <T> HttpResponseResult<T> succeedData(T obj) {
+        return getResponseData(true, HttpStatus.OK, obj, "操作成功");
+    }
 
-	public static <T> HttpResponseResult<T> warned(String message) {
-		return failed(HttpStatus.MULTI_STATUS, message);
-	}
+    public static <T> HttpResponseResult<T> warned(String message) {
+        return failed(HttpStatus.MULTI_STATUS, message);
+    }
 
-	public static <T> HttpResponseResult<T> failed() {
-		return failed("");
-	}
+    public static <T> HttpResponseResult<T> failed() {
+        return failed("");
+    }
 
-	public static <T> HttpResponseResult<T> failed(String msg) {
-		return failed(HttpStatus.INTERNAL_SERVER_ERROR, msg);
-	}
+    public static <T> HttpResponseResult<T> failed(String msg) {
+        return failed(HttpStatus.INTERNAL_SERVER_ERROR, msg);
+    }
 
-	public static <T> HttpResponseResult<T> failed(HttpStatus statusCode, String msg) {
-		return getResponseData(false, statusCode, null, msg);
-	}
+    public static <T> HttpResponseResult<T> failed(HttpStatus statusCode, String msg) {
+        return getResponseData(false, statusCode, null, msg);
+    }
 
-	public static <T> HttpResponseResult<T> failed(HttpStatus statusCode, T data, String msg) {
-		return getResponseData(false, statusCode, data, msg);
-	}
+    public static <T> HttpResponseResult<T> failed(HttpStatus statusCode, T data, String msg) {
+        return getResponseData(false, statusCode, data, msg);
+    }
 
-	private static <T> HttpResponseResult<T> getResponseData(boolean status, HttpStatus statusCode, T data, String message) {
-		HttpResponseResult<T> obj = new HttpResponseResult<T>();
-		obj.setStatus(status);
-		obj.setCode(statusCode.value());
-		obj.setData(data);
-		obj.setMsg(message);
-		return obj;
-	}
+    private static <T> HttpResponseResult<T> getResponseData(boolean status, HttpStatus statusCode, T data, String message) {
+        HttpResponseResult<T> obj = new HttpResponseResult<T>();
+        obj.setStatus(status);
+        obj.setCode(statusCode.value());
+        obj.setData(data);
+        obj.setMsg(message);
+        return obj;
+    }
 
 	private static <T> HttpResponseResult<T> getResponseData(boolean status, int statusCode, T data, String message) {
 		HttpResponseResult<T> obj = new HttpResponseResult<T>();
@@ -125,34 +125,34 @@ public class BaseController {
                     .collect(Collectors.joining());
             return failed(errorMsg);
         }
-		try {
-			Map<String,Object> paramMap = new HashMap<>(2);
-			JSONObject jsonObject = new JSONObject();
-			jsonObject.put("content","系统繁忙请及时处理: " + request.getRequestURL() + "   " + e);
-			paramMap.put("text",jsonObject.toJSONString());
-			paramMap.put("msgtype","text");
-			Map<String,String> headers = new HashMap<>(1);
-			headers.put("Content-Type","application/json");
-			HttpUtil.postForHttps(dingTalkRobotsSecurityParam(),JSON.toJSONString(paramMap),headers);
-		}catch (Exception exception){
-			logger.error("System Error", exception);
-		}
+        try {
+            Map<String,Object> paramMap = new HashMap<>(2);
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("content","系统繁忙请及时处理: " + request.getRequestURL() + "   " + e);
+            paramMap.put("text",jsonObject.toJSONString());
+            paramMap.put("msgtype","text");
+            Map<String,String> headers = new HashMap<>(1);
+            headers.put("Content-Type","application/json");
+            HttpUtil.postForHttps(dingTalkRobotsSecurityParam(),JSON.toJSONString(paramMap),headers);
+        }catch (Exception exception){
+            logger.error("System Error", exception);
+        }
         if (StringUtils.isNotBlank(e.getMessage())) {
             return failed(e.getMessage());
         }
-		return failed("系统繁忙");
-	}
-
-	public String dingTalkRobotsSecurityParam() throws Exception{
-		Long timestamp = System.currentTimeMillis();
-		String secret = "SEC5e3b73acccb12fc2a2a7d36d416c1967c66adb99a75dce24ecc324b50e528a29";
-		String stringToSign = timestamp + "\n" + secret;
-		Mac mac = Mac.getInstance("HmacSHA256");
-		mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
-		byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
-		String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
-		StringBuffer sb = new StringBuffer("https://api.dingtalk.com/robot/send?access_token=22d7b3b54ea7f1633c640dfdf17083d0731c3757719a84bd333740a8b18eb035&timestamp=");
-		sb.append(timestamp).append("&sign=").append(sign);
-		return sb.toString();
-	}
+        return failed("系统繁忙");
+    }
+
+    public String dingTalkRobotsSecurityParam() throws Exception{
+        Long timestamp = System.currentTimeMillis();
+        String secret = "SEC405b2e5f38aaae6472b242ee53607fb4a6549cf05a72bdf6482ec3799d5576ec";
+        String stringToSign = timestamp + "\n" + secret;
+        Mac mac = Mac.getInstance("HmacSHA256");
+        mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
+        byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
+        String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
+        StringBuffer sb = new StringBuffer("https://oapi.dingtalk.com/robot/send?access_token=ffa98e1f0f5f4cff586a228699281a7955e305fd6f55145af8e8da5ea794d033&timestamp=");
+        sb.append(timestamp).append("&sign=").append(sign);
+        return sb.toString();
+    }
 }

+ 19 - 18
mec-common/common-core/src/main/java/com/ym/mec/common/exception/BizException.java

@@ -10,13 +10,13 @@ public class BizException extends RuntimeException {
 	 */
 	private static final long serialVersionUID = -4562885563376566463L;
 
-	public BizException() {
-		super();
-	}
+    public BizException() {
+        super();
+    }
 
-	public BizException(String message) {
-		super(message);
-	}
+    public BizException(String message) {
+        super(message);
+    }
 
 	public BizException(Integer code, String message) {
 		super(message);
@@ -28,19 +28,20 @@ public class BizException extends RuntimeException {
 		super(cause);
 	}
 
-	public BizException(String message, Throwable cause) {
-		super(message, cause);
-	}
+    public BizException(String message, Throwable cause) {
+        super(message, cause);
+    }
 
-	public BizException(String message, Object... arguments) {
-		super(MessageFormatter.arrayFormat(message, arguments));
-	}
+    public BizException(String message, Object... arguments) {
+        super(MessageFormatter.arrayFormat(message, arguments));
+    }
 
-	public BizException(String message, Throwable cause, Object... args) {
-		super(MessageFormatter.arrayFormat(message, args), cause);
-	}
+    public BizException(String message, Throwable cause, Object... args) {
+        super(MessageFormatter.arrayFormat(message, args), cause);
+    }
 
-	public int getCode() {
-		return code;
-	}
+    public int getCode() {
+        return code;
+    }
 }
+

+ 7 - 1
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -1046,6 +1046,12 @@ public class RoomServiceImpl implements RoomService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean display(String roomId, int type, String uri, String targetUserId) throws Exception {
+
+        // 重置uri为空字符串
+        if (StringUtils.isBlank(uri) || "null".equals(uri)) {
+            uri = "";
+        }
+
         SysUser authUser = sysUserFeignService.queryUserInfo();
         String userId = authUser.getId().toString();
         log.info("display in room: {}, type = {}, uri = {}", roomId, type, uri);
@@ -1211,7 +1217,7 @@ public class RoomServiceImpl implements RoomService {
             wbmsg.setWhiteboardId(wbId);
             wbmsg.setWhiteboardName(name);
             imHelper.publishMessage(userId, roomId, wbmsg);
-            String display = "display://type=2?userId=" + userId + "?uri=" + wbId;
+            String display = "display://type=2?userId=" + userId + "?uri=" + Optional.ofNullable(wbId).orElse("");
             roomDao.updateDisplayByRid(roomId, display);
 
             RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);

+ 1 - 0
mec-student/src/main/java/com/ym/mec/student/config/ResourceServerConfig.java

@@ -49,6 +49,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                 "/studentCompetition/get","/musicGroup/preRegister",
                 "/tenantInfo/queryTenantInfoByOrgan/**",
                 "/subject/list","/tenantApply/add","/questionnaireUserResult/add","/questionnaireTopic/getDetail",
+                "/open/**", "/liveGoodsMapper/page", "/liveGoodsMapper/getGoodsDetail",
                 "/musicEnlightenmentQuestionnaire/addEnlightenmentQuestionnaire", "/musicEnlightenmentQuestionnaire/getUserMusicEnlightenmentQuestionnaire").permitAll().anyRequest().authenticated().and().httpBasic();
     }
 

+ 5 - 2
mec-student/src/main/java/com/ym/mec/student/controller/ImLiveBroadcastRoomController.java

@@ -56,8 +56,11 @@ public class ImLiveBroadcastRoomController extends BaseController {
 
     @ApiOperation("学生-进入房间")
     @GetMapping("/joinRoom")
-    public HttpResponseResult<Object> joinRoom(String roomUid, Integer userId) {
-        imLiveBroadcastRoomService.joinRoom(roomUid, userId);
+    public HttpResponseResult<Object> joinRoom(String roomUid, Integer userId,Boolean microphoneFlag) {
+        if (microphoneFlag == null) {
+            microphoneFlag = true;
+        }
+        imLiveBroadcastRoomService.joinRoom(roomUid, userId,microphoneFlag);
         return succeed();
     }
 

+ 104 - 0
mec-student/src/main/java/com/ym/mec/student/controller/open/OpenLiveBroadcastRoomController.java

@@ -0,0 +1,104 @@
+package com.ym.mec.student.controller.open;
+
+import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.dal.vo.RoomUserInfoVo;
+import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.entity.ImUserState;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 直播房间开放接口
+ *
+ */
+@Api(tags = "直播房间开放接口")
+@RestController
+@RequestMapping("/open/liveBroadcastRoom")
+public class OpenLiveBroadcastRoomController extends BaseController {
+
+    /**
+     * 服务对象
+     */
+    @Resource
+    private ImLiveBroadcastRoomService imLiveBroadcastRoomService;
+
+    @ApiOperation("直播间游客微信身份")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "code", value = "微信身份code", required = true, dataType = "String"),
+    })
+    @GetMapping("/visitorFingerprint")
+    public HttpResponseResult<String> visitorFingerprint(@RequestParam String code) {
+
+        // 游客访问直播间凭据信息
+        return succeed(imLiveBroadcastRoomService.visitorFingerprint(code));
+    }
+
+    @ApiOperation("直播间游客访问凭据")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "roomUid", value = "直播间编号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "fingerprint", value = "游客凭据", required = true, dataType = "String")
+    })
+    @GetMapping("/visitorCredentials")
+    public HttpResponseResult<RoomUserInfoVo> visitorCredentials(@RequestParam String roomUid,
+                                                                 @RequestParam String fingerprint) {
+
+        // 游客访问直播间凭据信息
+        return succeed(imLiveBroadcastRoomService.getVisitorCredentials(roomUid, fingerprint));
+    }
+
+
+    @ApiOperation("游客查询房间信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "roomUid", value = "房间编号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "userId", value = "游客编号", required = true, dataType = "Integer"),
+    })
+    @GetMapping("/visitorRoomInfo")
+    public HttpResponseResult<ImLiveBroadcastRoomVo> visitorRoomInfo(@RequestParam String roomUid, @RequestParam Integer userId) {
+
+        return succeed(imLiveBroadcastRoomService.visitorRoomInfo(roomUid, userId));
+    }
+
+    @ApiOperation("游客-进入房间")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "roomUid", value = "房间编号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "userId", value = "游客编号", required = true, dataType = "Integer"),
+    })
+    @GetMapping("/visitorJoinRoom")
+    public HttpResponseResult<Object> visitorJoinRoom(@RequestParam String roomUid, @RequestParam Integer userId) {
+
+        // 校验请求参数
+        if (StringUtils.isAnyBlank(roomUid) || Objects.isNull(userId)) {
+            throw new BizException("请求参数错误");
+        }
+
+        // 游客加入直播间
+        imLiveBroadcastRoomService.visitorJoinRoom(roomUid, userId);
+
+        return succeed();
+    }
+
+    @ApiOperation("游客退出直播间")
+    @PostMapping("/visitorQuitRoom")
+    public HttpResponseResult<Object> visitorQuitRoom(@RequestBody List<ImUserState> userState) {
+        imLiveBroadcastRoomService.opsRoom(userState);
+        return succeed();
+    }
+
+}
+

+ 37 - 0
mec-student/src/main/java/com/ym/mec/student/controller/open/OpenSysConfigController.java

@@ -0,0 +1,37 @@
+package com.ym.mec.student.controller.open;
+
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/** 
+ * 系统配置控制层
+ */
+@RestController
+@Api(tags = "系统参数设置")
+@RequestMapping(value = "open/sysConfig")
+public class OpenSysConfigController extends BaseController {
+
+	@Autowired
+	private SysConfigService sysConfigService;
+
+	@ApiOperation(value = "查询参数")
+	@GetMapping(value = "queryByParamName")
+	public Object queryByParamName(String paramName) {
+		if(StringUtils.isBlank(paramName)){
+			return failed("参数不能为空");
+		}
+		return succeed(sysConfigService.findByParamName(paramName));
+	}
+}

+ 11 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/TeacherApplication.java

@@ -5,6 +5,8 @@ import javax.servlet.Filter;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.logging.LogLevel;
+import org.springframework.boot.logging.LoggingSystem;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
@@ -30,6 +32,8 @@ public class TeacherApplication {
 
 	public static void main(String[] args) {
 		SpringApplication.run(TeacherApplication.class, args);
+
+		configureGlobalLogger();
 	}
 
 	@Bean
@@ -55,4 +59,11 @@ public class TeacherApplication {
 		registration.setOrder(1);
 		return registration;
 	}
+
+
+	private static void configureGlobalLogger() {
+		LoggingSystem loggingSystem = LoggingSystem.get(ClassLoader.getSystemClassLoader());
+		// 设置业务日志记录器的日志级别为INFO
+		loggingSystem.setLogLevel("businessLogger", LogLevel.INFO);
+	}
 }

+ 9 - 54
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -1,6 +1,5 @@
 package com.ym.mec.teacher.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
@@ -47,14 +46,13 @@ public class TeacherCourseScheduleController extends BaseController {
     @Autowired
     private StudentAttendanceService studentAttendanceService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private StudentAttendanceDao studentAttendanceDao;
     @Autowired
     private SysTenantConfigService sysTenantConfigService;
     @Autowired
     private ClassGroupStudentMapperDao classGroupStudentMapperDao;
-
     @Autowired
     private SubjectService subjectService;
 
@@ -75,10 +73,7 @@ public class TeacherCourseScheduleController extends BaseController {
         if(Objects.isNull(date)){
             return failed("请指定日期!");
         }
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(null == user){
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser user = sysUserService.getUser();
         if(null == user.getTenantId()){
             return failed("用户机构信息异常,请联系管理员");
         }
@@ -103,27 +98,16 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation(value = "根据月份获取该月历史有课的日期")
     @GetMapping("/getHistoryCourseScheduleDateByMonth")
     public Object getHistoryCourseScheduleDateByTeacher(@ApiParam(value = "月份", required = true) @RequestParam Date month) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(null==user){
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
         if(Objects.isNull(month)){
             return failed(HttpStatus.FORBIDDEN, "请指定日期!");
         }
-        return succeed(scheduleService.getHistoryCourseScheduleDateByTeacher(user.getId(),month));
+        return succeed(scheduleService.getHistoryCourseScheduleDateByTeacher(sysUserService.getUserId(),month));
     }
 
     @ApiOperation(value = "根据日期获取当日历史课程")
     @GetMapping("/getHistoryCourseSchedulesWithDate")
     public Object getHistoryCourseSchedulesWithDate(@ApiParam(value = "日期", required = true) Date date){
-        if(Objects.isNull(date)){
-            return failed("请指定日期!");
-        }
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(null==user){
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherHistoryCourseSchedulesWithDate(user.getId(),date);
+        List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherHistoryCourseSchedulesWithDate(sysUserService.getUserId(),date);
         Map<String,Object> result = new HashMap<>();
         result.put("rows",teacherCourseSchedulesWithDate);
         result.put("appealDaysRange",1);
@@ -143,11 +127,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation(value = "获取老师指定班级的排课")
     @GetMapping("/queryTeacherClassCourseSchedule")
     public Object queryTeacherClassCourseSchedule(CourseScheduleQueryInfo queryInfo){
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(null==user){
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        queryInfo.setUserId(user.getId().longValue());
+        queryInfo.setUserId(sysUserService.getUserId().longValue());
         return succeed(scheduleService.queryTeacherClassCourseSchedule(queryInfo));
     }
 
@@ -155,11 +135,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @GetMapping("/queryTeacherVipClassCourseSchedule")
     public Object queryTeacherVipClassCourseSchedule(CourseScheduleQueryInfo queryInfo){
         Map<String,Object> result = new HashMap<>();
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(null==user){
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        queryInfo.setUserId(user.getId().longValue());
+        queryInfo.setUserId(sysUserService.getUserId().longValue());
         result.put("rows",scheduleService.queryTeacherVipClassCourseSchedule(queryInfo));
         result.put("appealHoursRange",4);
         return succeed(result);
@@ -181,13 +157,6 @@ public class TeacherCourseScheduleController extends BaseController {
         return succeed(studentAttendanceService.getCurrentCourseStudents(queryInfo));
     }
 
-//    @ApiOperation(value = "课程批量调整")
-//    @PostMapping("/batchUpdateCourseSchedule")
-//    public Object batchUpdateCourseSchedule(@RequestBody BatchInsertCoursesDto batchInsertCoursesDto){
-//        scheduleService.batchUpdateCourseSchedule(batchInsertCoursesDto);
-//        return succeed();
-//    }
-
     @ApiOperation(value = "课时调整")
     @PostMapping(value = "/classStartDateAdjust",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     @AuditLogAnnotation(operateName = "课时调整")
@@ -205,9 +174,6 @@ public class TeacherCourseScheduleController extends BaseController {
         if(Objects.isNull(oldCourseSchedule.getTenantId())){
             return failed("课程机构信息异常");
         }
-        /*if(oldCourseSchedule.getGroupType() != GroupType.VIP){
-        	return failed("客户端只能调整VIP课");
-        }*/
         Date now = new Date();
         if(now.compareTo(oldCourseSchedule.getStartClassTime())>0){
             throw new BizException("进行中或已结束课程不可调整");
@@ -356,11 +322,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @PostMapping("/courseAdjustOnlyWithClassDate")
     @AuditLogAnnotation(operateName = "课程批量调整")
     public HttpResponseResult courseAdjustOnlyWithClassDate(@RequestBody List<CourseSchedule> courseSchedules){
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(null==user){
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        scheduleService.courseAdjustOnlyWithClassDate(courseSchedules,user.getId());
+        scheduleService.courseAdjustOnlyWithClassDate(courseSchedules,sysUserService.getUserId());
         return succeed();
     }
 
@@ -368,10 +330,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @PostMapping("/courseEvaluateList")
     @AuditLogAnnotation(operateName = "课程评价列表")
     public HttpResponseResult courseEvaluateList(@RequestBody EvaluateCourseQueryInfo queryInfo){
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(null==user){
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser user = sysUserService.getUser();
         queryInfo.setTeacherId(user.getId());
         String offlineSignInEarlyForwardTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_IN_EARLY_FORWARD_TIME, user.getTenantId());
         String configValue1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP, user.getTenantId());
@@ -411,11 +370,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @PostMapping("/queryStudyStandardWaitVisit")
     @AuditLogAnnotation(operateName = "学习标准待回访列表")
     public HttpResponseResult queryStudyStandardWaitVisit(EvaluateCourseQueryInfo queryInfo){
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(null==user){
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        queryInfo.setTeacherId(user.getId());
+        queryInfo.setTeacherId(sysUserService.getUserId());
         return succeed(scheduleService.queryStudyStandardWaitVisit(queryInfo));
     }
 

+ 40 - 15
mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

@@ -28,6 +28,10 @@ public class DateUtil {
 
 	public static final String DATE_FORMAT_MIN = "yyyy年MM月dd日";
 
+	public static final String DATE_FORMAT_MONTH = "yyyy年MM月";
+
+	public static final String DATE_FORMAT_YEAR = "yyyy年";
+
 	/**
 	 * 默认使用的Locale。默认Locale为 US
 	 */
@@ -969,6 +973,42 @@ public class DateUtil {
 		return df.format(date);
 	}
 
+	public static List<String> getDatesBetweenByDay(Date startTime, Date endTime) {
+		List<String> dates = new ArrayList<>();
+		// 循环遍历日期并格式化为字符串
+		Date currentDate = startTime;
+		while (!currentDate.after(endTime)) {
+			String dateString = DateUtil.format(currentDate,DATE_FORMAT_MIN);
+			dates.add(dateString);
+			currentDate = DateUtil.addDays(currentDate,1);
+		}
+		return dates;
+	}
+
+	public static List<String> getDatesBetweenByMonth(Date startTime, Date endTime) {
+		List<String> dates = new ArrayList<>();
+		// 循环遍历日期并格式化为字符串
+		Date currentDate = startTime;
+		while (!currentDate.after(endTime)) {
+			String dateString = DateUtil.format(currentDate,DATE_FORMAT_MONTH);
+			dates.add(dateString);
+			currentDate = DateUtil.addMonths(currentDate,1);
+		}
+		return dates;
+	}
+
+	public static List<String> getDatesBetweenByYear(Date startTime, Date endTime) {
+		List<String> dates = new ArrayList<>();
+		// 循环遍历日期并格式化为字符串
+		Date currentDate = startTime;
+		while (!currentDate.after(endTime)) {
+			String dateString = DateUtil.format(currentDate,DATE_FORMAT_YEAR);
+			dates.add(dateString);
+			currentDate = DateUtil.addYears(currentDate,1);
+		}
+		return dates;
+	}
+
 	/**
 	 * @describe 获取时间段内对应星期数的集合
 	 * @author Joburgess
@@ -1417,19 +1457,4 @@ public class DateUtil {
 		}
 		return false;
 	}
-
-	public static void main(String[] args) throws ParseException {
-		// DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
-//		DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//		 System.out.println(daysBetween(df.parse("2017-07-20 10:07:42"), df.parse(df.format(new Date()))));
-//		System.out.println(getWeekMondayWithDate(new Date()));
-//		System.out.println(getNextWeekMonday(new Date()));
-//		System.out.println(getNextWeekSunday(new Date()));
-//		System.out.println(dayEnd(new Date()));
-//		System.out.println(format(getLastDayOfMonth(new Date()),CHINESE_DATA_FORMAT));
-//		System.out.println(monthsBetween(df1.parse("2020-01-18 12:00:00"),df1.parse("2020-04-19 12:00:00")));
-//		System.out.println(getNextWeekMonday(new Date()));
-
-		contents("2022-10-25 10:11:11","2022-10-25 11:11:11",new Date());
-	}
 }

+ 11 - 0
mec-web/src/main/java/com/ym/mec/web/WebApplication.java

@@ -5,6 +5,8 @@ import javax.servlet.Filter;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.logging.LogLevel;
+import org.springframework.boot.logging.LoggingSystem;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
@@ -30,6 +32,9 @@ public class WebApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(WebApplication.class, args);
+
+        // 配置全局的日志记录器
+        configureGlobalLogger();
     }
 
     @Bean
@@ -55,4 +60,10 @@ public class WebApplication {
         return registration;
     }
 
+    private static void configureGlobalLogger() {
+        LoggingSystem loggingSystem = LoggingSystem.get(ClassLoader.getSystemClassLoader());
+        // 设置业务日志记录器的日志级别为INFO
+        loggingSystem.setLogLevel("businessLogger", LogLevel.INFO);
+    }
+
 }

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/config/PermissionCheckService.java

@@ -27,7 +27,7 @@ public class PermissionCheckService {
 		}
 
 		SysUser user = sysUserFeignService.queryUserInfo();
-		if(user.getTenantId() == -1 && user.getIsSuperAdmin()){
+		if(user.getIsSuperAdmin()){
 			return true;
 		}
 

+ 5 - 17
mec-web/src/main/java/com/ym/mec/web/controller/AppRedemptionCodeController.java

@@ -1,21 +1,16 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.entity.AppRedemptionCode;
+import com.ym.mec.biz.service.AppRedemptionCodeService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.ApiOperation;
-
-import javax.annotation.Resource;
-
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.AppRedemptionCode;
-import com.ym.mec.biz.service.AppRedemptionCodeService;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.entity.HttpResponseResult;
+import javax.annotation.Resource;
 
 /**
  * 兑换码分配表(RedemptionCode)表控制层
@@ -32,19 +27,12 @@ public class AppRedemptionCodeController extends BaseController {
     @Resource
     private AppRedemptionCodeService appRedemptionCodeService;
 
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
     @ApiOperation(value = "分配url")
     @GetMapping(value = "allocation")
     public HttpResponseResult<AppRedemptionCode> allocation(@RequestParam("userId")Integer userId) throws Exception {
         if (userId == null) {
             throw new Exception("用户Id必须填写");
         }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
         return succeed(appRedemptionCodeService.allocation(userId));
     }
 

+ 3 - 2
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -18,6 +18,7 @@ import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
@@ -46,7 +47,7 @@ public class ClassGroupController extends BaseController {
     @Autowired
     private ClassGroupTeacherMapperService classGroupTeacherMapperService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private OrganizationService organizationService;
 
@@ -348,7 +349,7 @@ public class ClassGroupController extends BaseController {
 
     @GetMapping("queryUserInfo")
     public HttpResponseResult queryUserInfo(Integer userId) {
-        SysUser sysUser = sysUserFeignService.queryUserById(userId);
+        SysUser sysUser = sysUserService.queryUserById(userId);
         return succeed(sysUser.getUsername());
     }
 

+ 3 - 3
mec-web/src/main/java/com/ym/mec/web/controller/CloudCoachPaymentProgramController.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.entity.CloudCoachPaymentProgram;
 import com.ym.mec.biz.dal.page.CloudCoachPaymentProgramQueryInfo;
 import com.ym.mec.biz.service.CloudCoachPaymentProgramService;
 import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
@@ -23,7 +24,7 @@ public class CloudCoachPaymentProgramController extends BaseController {
     @Autowired
     private CloudCoachPaymentProgramService cloudCoachPaymentProgramService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private OrganizationService organizationService;
 
@@ -31,8 +32,7 @@ public class CloudCoachPaymentProgramController extends BaseController {
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('cloudCoachPaymentProgram/add')")
     public Object add(@RequestBody CloudCoachPaymentProgram cloudCoachPaymentProgram){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        cloudCoachPaymentProgram.setOperator(sysUser.getId());
+        cloudCoachPaymentProgram.setOperator(sysUserService.getUserId());
         cloudCoachPaymentProgramService.add(cloudCoachPaymentProgram);
         return succeed();
     }

+ 0 - 7
mec-web/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java

@@ -1,16 +1,13 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.entity.CloudTeacherStudent;
-import com.ym.mec.biz.dal.entity.TenantOrderRecord;
 import com.ym.mec.biz.dal.page.CloudTeacherAddQueryInfo;
 import com.ym.mec.biz.dal.page.CloudTeacherOrderQueryInfo;
 import com.ym.mec.biz.service.CloudTeacherOrderService;
 import com.ym.mec.biz.service.OrganizationService;
-import com.ym.mec.biz.service.TenantOrderRecordService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -34,10 +31,6 @@ public class CloudTeacherOrderController extends BaseController {
 
     @Autowired
     private CloudTeacherOrderService cloudTeacherOrderService;
-
-    @Autowired
-    private TenantOrderRecordService tenantOrderRecordService;
-
     @Autowired
     private OrganizationService organizationService;
 

+ 7 - 26
mec-web/src/main/java/com/ym/mec/web/controller/ContractsController.java

@@ -4,6 +4,7 @@ import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -23,7 +24,7 @@ import com.ym.mec.common.controller.BaseController;
 public class ContractsController extends BaseController {
 
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
+	private SysUserService sysUserService;
 
 	@Autowired
 	private ContractService contractService;
@@ -31,51 +32,31 @@ public class ContractsController extends BaseController {
 	@ApiOperation("查询注册协议")
 	@GetMapping(value = "queryRegisterContract")
 	public Object queryRegisterContract() {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("获取用户信息失败");
-		}
-		return succeed(contractService.queryRegisterContract(sysUser.getId()));
+		return succeed(contractService.queryRegisterContract(sysUserService.getUserId()));
 	}
 
 	@ApiOperation("查询商品协议")
 	@GetMapping(value = "queryGoodsContract")
 	public Object queryGoodsContract(String musicGroupId, String goodsIds, KitGroupPurchaseTypeEnum kitGroupPurchaseTypeEnum) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("获取用户信息失败");
-		}
-		return succeed(contractService.queryGoodsContract(sysUser.getId(), musicGroupId, goodsIds, kitGroupPurchaseTypeEnum));
+		return succeed(contractService.queryGoodsContract(sysUserService.getUserId(), musicGroupId, goodsIds, kitGroupPurchaseTypeEnum));
 	}
 
 	@ApiOperation("查询乐团课程协议")
 	@GetMapping(value = "queryMusicGroupCoursesContract")
 	public Object queryMusicGroupCoursesContract(String musicGroupId) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("获取用户信息失败");
-		}
-		return succeed(contractService.queryMusicGroupCoursesContract(sysUser.getId(), musicGroupId));
+		return succeed(contractService.queryMusicGroupCoursesContract(sysUserService.getUserId(), musicGroupId));
 	}
 
 	@ApiOperation("查询VIP课程协议")
 	@GetMapping(value = "queryVipGroupCoursesContract")
 	public Object queryVipGroupCoursesContract(Long vipGroupId) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("获取用户信息失败");
-		}
-		return succeed(contractService.queryVipGroupCoursesContract(sysUser.getId(), vipGroupId));
+		return succeed(contractService.queryVipGroupCoursesContract(sysUserService.getUserId(), vipGroupId));
 	}
 
 	@ApiOperation("查询陪练课课程协议")
 	@GetMapping(value = "queryPracticeCoursesContract")
 	public Object queryPracticeCoursesContract(int courseSectionNum, Date startDate, Date endDate, BigDecimal fee) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("获取用户信息失败");
-		}
-		return succeed(contractService.queryPracticeCoursesContract(sysUser.getId(), courseSectionNum, startDate, endDate, fee));
+		return succeed(contractService.queryPracticeCoursesContract(sysUserService.getUserId(), courseSectionNum, startDate, endDate, fee));
 	}
 
 	@PostMapping("transferProduceContract")

+ 0 - 4
mec-web/src/main/java/com/ym/mec/web/controller/CourseReviewController.java

@@ -1,7 +1,5 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.page.CourseReviewQueryInfo;
 import com.ym.mec.biz.service.CourseReviewService;
 import com.ym.mec.biz.service.OrganizationService;
@@ -21,8 +19,6 @@ import org.springframework.web.bind.annotation.RestController;
 public class CourseReviewController extends BaseController {
 
     @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
     private OrganizationService organizationService;
     @Autowired
     private CourseReviewService courseReviewService;

+ 6 - 19
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -1,6 +1,5 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ClassGroupDao;
 import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
@@ -51,7 +50,7 @@ public class CourseScheduleController extends BaseController {
     @Autowired
     private CourseScheduleComplaintsService courseScheduleComplaintsService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private MusicGroupService musicGroupService;
     @Autowired
@@ -201,11 +200,7 @@ public class CourseScheduleController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/courseMerge','system')")
     @PostMapping(value = "/courseMerge",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public HttpResponseResult courseMerge(CourseMergeDto courseMergeInfo){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        courseMergeInfo.setOperatorId(sysUser.getId());
+        courseMergeInfo.setOperatorId(sysUserService.getUserId());
         return courseScheduleService.courseMerge(courseMergeInfo);
     }
 
@@ -213,11 +208,7 @@ public class CourseScheduleController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/mergeCourseSplit','system')")
     @PostMapping(value = "/mergeCourseSplit",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public HttpResponseResult mergeCourseSplit(Long mainCourseId){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        courseScheduleService.mergeCourseSplit(mainCourseId, sysUser.getId());
+        courseScheduleService.mergeCourseSplit(mainCourseId, sysUserService.getUserId());
         return succeed();
     }
 
@@ -304,11 +295,11 @@ public class CourseScheduleController extends BaseController {
     		return failed("对应课程已做出调整");
     	}
     	
-    	SysUser user = sysUserFeignService.queryUserById(complaints.getUserId());
+    	SysUser user = sysUserService.queryUserById(complaints.getUserId());
     	complaints.getUser().setUsername(user.getUsername());
     	
     	CourseSchedule courseSchedule = courseScheduleService.get(complaints.getCourseScheduleId());
-    	SysUser teacher = sysUserFeignService.queryUserById(courseSchedule.getActualTeacherId());
+    	SysUser teacher = sysUserService.queryUserById(courseSchedule.getActualTeacherId());
     	courseSchedule.getTeacher().setUsername(teacher.getUsername());
     	
     	ModelMap model = new ModelMap();
@@ -366,11 +357,7 @@ public class CourseScheduleController extends BaseController {
     @PostMapping("/batchCourseAdjust")
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchCourseAdjust')")
     public Object batchCourseAdjust(@RequestBody BatchCourseAdjustDto batchCourseAdjustInfo){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        batchCourseAdjustInfo.setOperatorId(sysUser.getId());
+        batchCourseAdjustInfo.setOperatorId(sysUserService.getUserId());
         return courseScheduleService.batchCourseAdjust(batchCourseAdjustInfo);
     }
 

+ 0 - 4
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleTeacherSalaryController.java

@@ -1,7 +1,5 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
 import com.ym.mec.biz.dal.dto.TeacherAttendancesDto;
 import com.ym.mec.biz.dal.enums.TeacherSalaryConfirmStatus;
@@ -35,8 +33,6 @@ public class CourseScheduleTeacherSalaryController extends BaseController {
     @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
     private OrganizationService organizationService;
 
     @ApiOperation(value = "分页查询教师薪酬列表")

+ 0 - 4
mec-web/src/main/java/com/ym/mec/web/controller/DegreeController.java

@@ -3,7 +3,6 @@ package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.page.DegreeQueryInfo;
 import com.ym.mec.biz.service.DegreeRegistrationService;
-import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
@@ -22,14 +21,11 @@ public class DegreeController extends BaseController { ;
 
     @Autowired
     private DegreeRegistrationService degreeRegistrationService;
-    @Autowired
-    private OrganizationService organizationService;
 
     @ApiOperation(value = "查询收费列表")
     @GetMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('degree/queryPage')")
     public HttpResponseResult queryPage(DegreeQueryInfo queryInfo) {
-//        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         queryInfo.setSort("create_time_");
         queryInfo.setOrder("DESC");
         return succeed(degreeRegistrationService.getPageList(queryInfo));

+ 40 - 58
mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java

@@ -1,6 +1,5 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
@@ -10,10 +9,7 @@ import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
 import com.ym.mec.biz.dal.page.UserBasicQueryInfo;
-import com.ym.mec.biz.service.EmployeeService;
-import com.ym.mec.biz.service.OrganizationService;
-import com.ym.mec.biz.service.StudentManageService;
-import com.ym.mec.biz.service.SysEmployeePositionService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
@@ -43,7 +39,7 @@ public class EmployeeController extends BaseController {
     @Autowired
     private EmployeeService employeeService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private StudentManageService studentManageService;
     @Autowired
@@ -73,10 +69,6 @@ public class EmployeeController extends BaseController {
     @GetMapping("/queryPlatformEmploy")
     @PreAuthorize("@pcs.hasPermissions('employee/queryPlatformEmploy')")
     public Object queryPlatformEmploy(EmployeeQueryInfo queryInfo) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
         queryInfo.setOrganId(null);
         queryInfo.setTenantId(-1);
         return succeed(employeeService.queryEmployByOrganId(queryInfo));
@@ -152,15 +144,12 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "修改用户")
     @PostMapping("/updateUser")
     public HttpResponseResult update(SysUser sysUser) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user != null) {
-            Date date = new Date();
-            sysUser.setId(user.getId());
-            sysUser.setUpdateTime(date);
-            studentManageService.updateUser(sysUser);
-            return succeed();
-        }
-        return failed("获取用户失败");
+        SysUser user = sysUserService.getUser();
+        Date date = new Date();
+        sysUser.setId(user.getId());
+        sysUser.setUpdateTime(date);
+        studentManageService.updateUser(sysUser);
+        return succeed();
     }
 
     @ApiOperation(value = "获取所有员工")
@@ -173,52 +162,45 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "获取用户信息")
     @GetMapping("/queryUserInfo")
     public HttpResponseResult apiQueryUserInfo() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser != null && sysUser.getId() != null){
-            Employee employee = employeeService.get(sysUser.getId());
-            sysUser.setOrganName(organizationService.getOrganName(employee.getOrganIdList()));
-            sysUser.setRoles(employeeDao.queryUserRole(sysUser.getId()));
-            sysUser.setContactAddress(employee.getContactAddress());
-            sysUser.setPostalCode(employee.getPostalCode());
-            sysUser.setDeptId(employee.getDeptId());
-            sysUser.setDeptIds(employee.getDeptIds());
-            sysUser.setPostIds(employee.getPostIds());
-            sysUser.setBankCard(employee.getBankCard());
-            sysUser.setOpenBankAddress(employee.getOpenBankAddress());
-            sysUser.setPostDeptIds(employee.getPostDeptIds());
-            sysUser.setOrganIdList(employee.getOrganIdList());
-
-            // 默认初始密钥
-            int phoneStrLen = sysUser.getPhone().length();
-            String defaultPassword = "gym" + sysUser.getPhone().substring(phoneStrLen - 4, phoneStrLen);
-            // 密码重置标识
-            sysUser.setResetFlag(false);
-
-            String password = sysUser.getPassword();
-            if (StringUtils.isNotBlank(password)
-                    && (new BCryptPasswordEncoder().matches(ParamEnum.INIT_PASSWORD.getCode().toString(), password)
-                    || new BCryptPasswordEncoder().matches(defaultPassword, password))) {
-                sysUser.setResetFlag(true);
-            }
-            
-            List<SysEmployeePositionDto> sysEmployeePositionDtoList = sysEmployeePositionService.queryByUserId(sysUser.getId());
-            if(sysEmployeePositionDtoList != null && sysEmployeePositionDtoList.size() > 0){
-                sysUser.setPositions(StringUtils.join(sysEmployeePositionDtoList.stream().map(SysEmployeePositionDto :: getRoleId).collect(Collectors.toSet()),","));
-                sysUser.setPositionName(sysEmployeePositionDtoList.stream().map(SysEmployeePositionDto :: getPositionName).collect(Collectors.joining(",")));
-            }
-            return succeed(sysUser);
+        SysUser sysUser = sysUserService.getUser();
+        Employee employee = employeeService.get(sysUser.getId());
+        sysUser.setOrganName(organizationService.getOrganName(employee.getOrganIdList()));
+        sysUser.setRoles(employeeDao.queryUserRole(sysUser.getId()));
+        sysUser.setContactAddress(employee.getContactAddress());
+        sysUser.setPostalCode(employee.getPostalCode());
+        sysUser.setDeptId(employee.getDeptId());
+        sysUser.setDeptIds(employee.getDeptIds());
+        sysUser.setPostIds(employee.getPostIds());
+        sysUser.setBankCard(employee.getBankCard());
+        sysUser.setOpenBankAddress(employee.getOpenBankAddress());
+        sysUser.setPostDeptIds(employee.getPostDeptIds());
+        sysUser.setOrganIdList(employee.getOrganIdList());
+
+        // 默认初始密钥
+        int phoneStrLen = sysUser.getPhone().length();
+        String defaultPassword = "gym" + sysUser.getPhone().substring(phoneStrLen - 4, phoneStrLen);
+        // 密码重置标识
+        sysUser.setResetFlag(false);
+
+        String password = sysUser.getPassword();
+        if (StringUtils.isNotBlank(password)
+                && (new BCryptPasswordEncoder().matches(ParamEnum.INIT_PASSWORD.getCode().toString(), password)
+                || new BCryptPasswordEncoder().matches(defaultPassword, password))) {
+            sysUser.setResetFlag(true);
         }
-        return failed("获取用户信息失败");
+
+        List<SysEmployeePositionDto> sysEmployeePositionDtoList = sysEmployeePositionService.queryByUserId(sysUser.getId());
+        if(sysEmployeePositionDtoList != null && sysEmployeePositionDtoList.size() > 0){
+            sysUser.setPositions(StringUtils.join(sysEmployeePositionDtoList.stream().map(SysEmployeePositionDto :: getRoleId).collect(Collectors.toSet()),","));
+            sysUser.setPositionName(sysEmployeePositionDtoList.stream().map(SysEmployeePositionDto :: getPositionName).collect(Collectors.joining(",")));
+        }
+        return succeed(sysUser);
     }
 
     @ApiOperation(value = "获取所选用户离职所需交接信息")
     @GetMapping("/levelDetail")
     @PreAuthorize("@pcs.hasPermissions('employee/levelDetail')")
     public HttpResponseResult levelDetail(Integer userId){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
         return succeed(employeeService.levelDetail(userId));
     }
 

+ 1 - 7
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -58,8 +58,6 @@ public class ExportController extends BaseController {
     @Autowired
     private OrganizationService organizationService;
     @Autowired
-    private VipGroupDao vipGroupDao;
-    @Autowired
     private MusicGroupDao musicGroupDao;
     @Autowired
     private VipGroupService vipGroupService;
@@ -94,10 +92,6 @@ public class ExportController extends BaseController {
     @Autowired
     private CooperationOrganService cooperationOrganService;
     @Autowired
-    private StudentPaymentOrderDao studentPaymentOrderDao;
-    @Autowired
-    private StudentDao studentDao;
-    @Autowired
     private MusicGroupPaymentCalenderDetailService musicGroupPaymentCalenderDetailService;
     @Autowired
     private TeacherService teacherService;
@@ -199,7 +193,7 @@ public class ExportController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('export/exportMusicGroupCourseList')")
     public HttpResponseResult exportMusicGroupCourseList(ExportUserAccountQueryInfo queryInfo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(), queryInfo.getOrganId(), sysUser.getIsSuperAdmin()));
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(), queryInfo.getOrganId(), sysUser.getIsSuperAdmin()&&sysUser.getTenantId() == -1));
         Integer i = musicGroupDao.countMusicGroupCourseList(queryInfo);
         if (Objects.isNull(i) || i <= 0) {
             throw new BizException("没有可导出的记录");

+ 0 - 4
mec-web/src/main/java/com/ym/mec/web/controller/FinancialExpenditureController.java

@@ -1,7 +1,5 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.page.FinancialExpenditureQueryInfo;
 import com.ym.mec.biz.service.FinancialExpenditureService;
 import com.ym.mec.biz.service.OrganizationService;
@@ -23,8 +21,6 @@ public class FinancialExpenditureController extends BaseController {
     @Autowired
     private FinancialExpenditureService financialExpenditureService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
     private OrganizationService organizationService;
 
     @ApiOperation(value = "删除财务支出")

+ 12 - 33
mec-web/src/main/java/com/ym/mec/web/controller/GoodsController.java

@@ -1,36 +1,27 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.GoodsCategory;
 import com.ym.mec.biz.dal.entity.GoodsProcurement;
-import com.ym.mec.biz.dal.enums.AccountType;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.GoodsQuery;
+import com.ym.mec.biz.dal.page.GoodsQueryInfo;
 import com.ym.mec.biz.service.GoodsCategoryService;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.exception.BizException;
+import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-import com.ym.mec.biz.dal.page.GoodsQueryInfo;
-import com.ym.mec.biz.service.GoodsService;
-import com.ym.mec.common.controller.BaseController;
+import java.util.Date;
+import java.util.Objects;
 
 @RequestMapping("goods")
 @Api(tags = "商品(教材、辅件)服务")
@@ -42,7 +33,7 @@ public class GoodsController extends BaseController {
     @Autowired
     private GoodsCategoryService goodsCategoryService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private EmployeeDao employeeDao;
 
@@ -50,11 +41,7 @@ public class GoodsController extends BaseController {
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('goods/add')")
     public Object add(Goods goods){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        goodsService.addGoods(goods,sysUser.getId());
+        goodsService.addGoods(goods,sysUserService.getUserId());
         return succeed();
     }
 
@@ -62,11 +49,7 @@ public class GoodsController extends BaseController {
     @PostMapping("/addGoodsProcurement")
     @PreAuthorize("@pcs.hasPermissions('goods/addGoodsProcurement')")
     public Object addGoodsProcurement(GoodsProcurement goodsProcurement){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        goodsProcurement.setOperatorId(sysUser.getId());
+        goodsProcurement.setOperatorId(sysUserService.getUserId());
         goodsService.addGoodsProcurement(goodsProcurement);
         return succeed();
     }
@@ -118,11 +101,7 @@ public class GoodsController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('goods/queryPage')")
     public Object queryPage(GoodsQueryInfo queryInfo){
         queryInfo.setOrganId(null);
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        Employee employee = employeeDao.get(sysUser.getId());
+        Employee employee = employeeDao.get(sysUserService.getUserId());
         if (queryInfo.getStudentShowOrganId() == null &&
                 queryInfo.getEducationShowOrganId() == null &&
                 queryInfo.getCourseFeeShowOrganId() == null &&

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomMemberController.java

@@ -52,6 +52,8 @@ public class ImLiveBroadcastRoomMemberController extends BaseController {
             @ApiImplicitParam(name = "roomUid", dataType = "String", value = "房间uid"),
             @ApiImplicitParam(name = "onlineStatus", dataType = "String ", value = "0:离线 1:在线  不传是全部"),
             @ApiImplicitParam(name = "whetherMicStatus", dataType = "String", value = "连麦状态 0:未申请1:申请连麦中2:连麦中"),
+            @ApiImplicitParam(name = "excludeBlacklist", dataType = "Integer", value = "黑名单排除 0:不排除 1:排除"),
+            @ApiImplicitParam(name = "visitorQuery", dataType = "Integer", value = "游客查询 0:学员 1:游客"),
             @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
             @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
     })

+ 5 - 12
mec-web/src/main/java/com/ym/mec/web/controller/ImSendGroupMessageController.java

@@ -1,13 +1,12 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.ImSendGroupMessage;
 import com.ym.mec.biz.dal.page.ImGroupQueryInfo;
 import com.ym.mec.biz.dal.page.ImSendGroupMessageQueryInfo;
 import com.ym.mec.biz.service.ImGroupService;
 import com.ym.mec.biz.service.ImSendGroupMessageService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
@@ -33,15 +32,13 @@ public class ImSendGroupMessageController extends BaseController {
     @Autowired
     private ImGroupService imGroupService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
 
     @ApiOperation("获取群消息列表")
     @PostMapping(value = "/queryPage")
     @PreAuthorize("@pcs.hasPermissions('imSendGroupMessage/queryPage')")
     public HttpResponseResult<PageInfo<ImSendGroupMessage>> queryPage(ImSendGroupMessageQueryInfo queryInfo) throws Exception {
-        SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
-                orElseThrow(() -> new Exception("请登录"));
-        queryInfo.setSenderId(sysUser.getId().toString());
+        queryInfo.setSenderId(sysUserService.getUserId().toString());
         return succeed(imSendGroupMessageService.queryPage(queryInfo));
     }
 
@@ -91,9 +88,7 @@ public class ImSendGroupMessageController extends BaseController {
     @PostMapping(value = "/queryGroupPage")
     @PreAuthorize("@pcs.hasPermissions('imSendGroupMessage/queryGroupPage')")
     public HttpResponseResult<PageInfo<ImGroup>> queryGroupPage(ImGroupQueryInfo imGroupQueryInfo) throws Exception {
-        SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
-                orElseThrow(() -> new Exception("请登录"));
-        imGroupQueryInfo.setUserId(sysUser.getId());
+        imGroupQueryInfo.setUserId(sysUserService.getUserId());
         if(imGroupQueryInfo.getImSendGroupMessageId() != null){
             ImSendGroupMessage imSendGroupMessage = Optional.ofNullable(imSendGroupMessageService.get(imGroupQueryInfo.getImSendGroupMessageId())).
                     orElseThrow(()->new BizException("消息不存在"));
@@ -130,9 +125,7 @@ public class ImSendGroupMessageController extends BaseController {
     @PostMapping(value = "/queryGroupPage1")
     @PreAuthorize("@pcs.hasPermissions('imSendGroupMessage/queryGroupPage1')")
     public HttpResponseResult<PageInfo<ImGroup>> queryGroupPage1(ImGroupQueryInfo imGroupQueryInfo) throws Exception {
-        SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
-                orElseThrow(() -> new Exception("请登录"));
-        imGroupQueryInfo.setUserId(sysUser.getId());
+        imGroupQueryInfo.setUserId(sysUserService.getUserId());
         if(imGroupQueryInfo.getImSendGroupMessageId() != null){
             ImSendGroupMessage imSendGroupMessage = Optional.ofNullable(imSendGroupMessageService.get(imGroupQueryInfo.getImSendGroupMessageId())).
                     orElseThrow(()->new BizException("消息不存在"));

+ 8 - 10
mec-web/src/main/java/com/ym/mec/web/controller/ImUserFriendController.java

@@ -1,15 +1,16 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.service.ImUserFriendService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 @RequestMapping("imUserFriend")
 @Api(tags = "IM通讯录")
@@ -20,7 +21,7 @@ public class ImUserFriendController extends BaseController {
 	private ImUserFriendService imUserFriendService;
 
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
+	private SysUserService sysUserService;
 
 	@ApiOperation("添加好友")
 	@PostMapping(value = "/add")
@@ -28,16 +29,14 @@ public class ImUserFriendController extends BaseController {
 			@ApiImplicitParam(name = "nickname", value = "昵称", required = true, dataType = "String"),
 			@ApiImplicitParam(name = "friendUserId", value = "好友编号", required = true, dataType = "Integer")})
 	public Object addFriend(Integer friendUserId, String nickname, String memo) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		return succeed(imUserFriendService.addFriend(sysUser.getId(),friendUserId,nickname,memo));
+		return succeed(imUserFriendService.addFriend(sysUserService.getUserId(),friendUserId,nickname,memo));
 	}
 
 	@ApiOperation("删除好友")
 	@PostMapping(value = "/del")
 	@ApiImplicitParams({ @ApiImplicitParam(name = "friendUserId", value = "好友编号", required = true, dataType = "Integer")})
 	public Object quitGroup(Integer friendUserId) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		return succeed(imUserFriendService.deleteFriend(sysUser.getId(),friendUserId));
+		return succeed(imUserFriendService.deleteFriend(sysUserService.getUserId(),friendUserId));
 	}
 
 	@ApiOperation("修改昵称,备注")
@@ -46,7 +45,6 @@ public class ImUserFriendController extends BaseController {
 			@ApiImplicitParam(name = "nickname", value = "昵称", required = true, dataType = "String"),
 			@ApiImplicitParam(name = "friendUserId", value = "好友编号", required = true, dataType = "Integer")})
 	public Object updateFriend(Integer friendUserId, String nickname, String memo) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		return succeed(imUserFriendService.updateFriendNickname(sysUser.getId(),friendUserId,nickname,memo));
+		return succeed(imUserFriendService.updateFriendNickname(sysUserService.getUserId(),friendUserId,nickname,memo));
 	}
 }

+ 3 - 13
mec-web/src/main/java/com/ym/mec/web/controller/IndexController.java

@@ -1,6 +1,5 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.DecimalMapDto;
@@ -10,9 +9,9 @@ import com.ym.mec.biz.dal.page.IndexDataQueryInfo;
 import com.ym.mec.biz.dal.page.OrganCloudStudyStudentDataQueryInfo;
 import com.ym.mec.biz.service.IndexBaseMonthDataService;
 import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.Api;
@@ -20,7 +19,6 @@ import io.swagger.annotations.ApiOperation;
 import org.redisson.api.RBucket;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -47,7 +45,7 @@ public class IndexController extends BaseController {
 	@Autowired
 	private DemoGroupDao demoGroupDao;
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
+	private SysUserService sysUserService;
 	@Autowired
 	private OrganizationService organizationService;
 	@Autowired
@@ -62,11 +60,6 @@ public class IndexController extends BaseController {
 	@ApiOperation(value = "获取首页数据")
 	@GetMapping("/index")
 	public Object index() {
-
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null || sysUser.getId() == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
 		String organId = organizationService.getEmployeeOrgan("");
 
 		Integer tenantId = TenantContextHolder.getTenantId();
@@ -118,10 +111,7 @@ public class IndexController extends BaseController {
 
 	@GetMapping("/hasIndexErrData")
 	public HttpResponseResult hasIndexErrData(String organId){
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			throw new BizException("用户信息获取失败");
-		}
+		SysUser sysUser = sysUserService.getUser();
 		RBucket<Map<String, Boolean>> bucket = redissonClient.getBucket("index:hasIndexErrData " + sysUser.getId());
 		Map<String, Boolean> map = bucket.get();
 		if(map == null || map.size() == 0){

+ 0 - 7
mec-web/src/main/java/com/ym/mec/web/controller/IndexErrDataRecordController.java

@@ -1,7 +1,5 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.CourseScheduleEndDto;
 import com.ym.mec.biz.dal.dto.IndexErrorDataExportDto;
 import com.ym.mec.biz.dal.entity.InspectionItem;
@@ -18,16 +16,13 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.ArrayList;
 import java.util.Date;
-import java.util.Map;
 
 /**
  * @Author Joburgess
@@ -39,8 +34,6 @@ import java.util.Map;
 public class IndexErrDataRecordController extends BaseController {
 
     @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
     private OrganizationService organizationService;
     @Autowired
     private IndexErrDataRecordService indexErrDataRecordService;

+ 5 - 14
mec-web/src/main/java/com/ym/mec/web/controller/InspectionController.java

@@ -1,12 +1,12 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.entity.Inspection;
 import com.ym.mec.biz.dal.page.InspectionQueryInfo;
 import com.ym.mec.biz.service.InspectionService;
 import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
@@ -16,7 +16,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
 import java.util.List;
 
 @Api(tags = "巡查任务")
@@ -27,20 +26,16 @@ public class InspectionController extends BaseController {
     private InspectionService inspectionService;
     @Autowired
     private OrganizationService organizationService;
-    @Resource
-    private SysUserFeignService sysUserFeignService;
     @Autowired
     private MusicGroupDao musicGroupDao;
+    @Autowired
+    private SysUserService sysUserService;
 
     @ApiOperation(value = "添加巡查任务")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('inspection/add')")
     public HttpResponseResult<List<Inspection>> add(@RequestBody List<Inspection> inspections) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        return succeed(inspectionService.add(inspections, sysUser.getId()));
+        return succeed(inspectionService.add(inspections, sysUserService.getUserId()));
     }
 
     @ApiOperation(value = "删除巡查任务")
@@ -54,11 +49,7 @@ public class InspectionController extends BaseController {
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('inspection/update')")
     public HttpResponseResult<Inspection> update(@RequestBody Inspection inspection) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        return succeed(inspectionService.updateInspection(inspection, sysUser.getId()));
+        return succeed(inspectionService.updateInspection(inspection, sysUserService.getUserId()));
     }
 
     @ApiOperation(value = "巡查任务列表")

+ 4 - 17
mec-web/src/main/java/com/ym/mec/web/controller/InspectionItemController.java

@@ -1,29 +1,22 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.auth.api.entity.SysUserRole;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
-import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.InspectionItem;
-import com.ym.mec.biz.dal.enums.SysUserRoleEnum;
 import com.ym.mec.biz.dal.page.InspectionQueryInfo;
 import com.ym.mec.biz.service.InspectionItemService;
 import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.entity.Mapper;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-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.RestController;
 
-import javax.annotation.Resource;
-import java.util.*;
+import java.util.Date;
 
 @Api(tags = "巡查任务事项")
 @RequestMapping("inspectionItem")
@@ -33,17 +26,11 @@ public class InspectionItemController extends BaseController {
     private InspectionItemService inspectionItemService;
     @Autowired
     private OrganizationService organizationService;
-    @Resource
-    private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "修改巡查任务事项")
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('inspectionItem/update')")
     public HttpResponseResult<InspectionItem> update(InspectionItem inspectionItem) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
         inspectionItem.setUpdateTime(new Date());
         inspectionItemService.update(inspectionItem);
         return succeed(inspectionItem);

+ 9 - 24
mec-web/src/main/java/com/ym/mec/web/controller/InspectionItemPlanController.java

@@ -1,29 +1,26 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.entity.Employee;
-import com.ym.mec.biz.dal.entity.Inspection;
 import com.ym.mec.biz.dal.entity.InspectionItemPlan;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.page.InspectionItemPlanQueryInfo;
 import com.ym.mec.biz.service.InspectionItemPlanService;
 import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
-import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -34,7 +31,7 @@ public class InspectionItemPlanController extends BaseController {
     @Autowired
     private InspectionItemPlanService inspectionItemPlanService;
     @Resource
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private OrganizationService organizationService;
     @Autowired
@@ -44,11 +41,7 @@ public class InspectionItemPlanController extends BaseController {
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('inspectionItemPlan/add')")
     public HttpResponseResult<InspectionItemPlan> add(InspectionItemPlan inspectionItemPlan) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        inspectionItemPlan.setOperatorUserId(sysUser.getId());
+        inspectionItemPlan.setOperatorUserId(sysUserService.getUserId());
         return succeed(inspectionItemPlanService.add(inspectionItemPlan));
     }
 
@@ -56,11 +49,7 @@ public class InspectionItemPlanController extends BaseController {
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('inspectionItemPlan/update')")
     public HttpResponseResult<InspectionItemPlan> update(InspectionItemPlan inspectionItemPlan) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        inspectionItemPlan.setOperatorUserId(sysUser.getId());
+        inspectionItemPlan.setOperatorUserId(sysUserService.getUserId());
         inspectionItemPlanService.updatePlan(inspectionItemPlan);
         return succeed(inspectionItemPlan);
     }
@@ -86,14 +75,10 @@ public class InspectionItemPlanController extends BaseController {
     @PostMapping("/updateMemo")
     @PreAuthorize("@pcs.hasPermissions('inspectionItemPlan/updateMemo')")
     public HttpResponseResult<InspectionItemPlan> updateMemo(Long id, String memo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
         InspectionItemPlan inspectionItemPlan = inspectionItemPlanService.get(id);
         inspectionItemPlan.setMemo(memo);
         inspectionItemPlan.setUpdateTime(new Date());
-        inspectionItemPlan.setOperatorUserId(sysUser.getId());
+        inspectionItemPlan.setOperatorUserId(sysUserService.getUserId());
         inspectionItemPlanService.update(inspectionItemPlan);
         return succeed(inspectionItemPlan);
     }

+ 3 - 11
mec-web/src/main/java/com/ym/mec/web/controller/ManagerDownloadController.java

@@ -1,13 +1,9 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.page.ManagerDownloadQueryInfo;
-import com.ym.mec.biz.dal.page.OrganizationQueryInfo;
 import com.ym.mec.biz.service.ManagerDownloadService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -25,17 +21,13 @@ public class ManagerDownloadController extends BaseController {
     @Autowired
     private ManagerDownloadService managerDownloadService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
 
     @ApiOperation(value = "分页查询列表")
     @GetMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('managerDownload/queryPage')")
     public Object queryPage(ManagerDownloadQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        queryInfo.setUserId(sysUser.getId());
+        queryInfo.setUserId(sysUserService.getUserId());
         return succeed(managerDownloadService.queryPage(queryInfo));
     }
 

+ 4 - 19
mec-web/src/main/java/com/ym/mec/web/controller/MemberRankOrganizationFeeMapperController.java

@@ -1,27 +1,20 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
-import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.MemberRankOrganizationFeeMapper;
 import com.ym.mec.biz.dal.page.MemberRankFeeQueryInfo;
 import com.ym.mec.biz.service.MemberRankOrganizationFeeMapperService;
 import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.exception.BizException;
 import com.ym.mec.util.collection.MapUtil;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Arrays;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 @RequestMapping("memberRankOrganizationFeeMapper")
@@ -32,7 +25,7 @@ public class MemberRankOrganizationFeeMapperController extends BaseController {
     @Autowired
     private MemberRankOrganizationFeeMapperService memberRankOrganizationFeeMapperService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private OrganizationService organizationService;
 
@@ -41,11 +34,7 @@ public class MemberRankOrganizationFeeMapperController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('memberRankOrganizationFeeMapper/add')")
     @AuditLogAnnotation(operateName = "新增系统功能类型")
     public Object add(@RequestBody MemberRankOrganizationFeeMapper memberRankOrganizationFeeMapper) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            throw new BizException("用户信息获取失败");
-        }
-        memberRankOrganizationFeeMapper.setOperatorId(sysUser.getId());
+        memberRankOrganizationFeeMapper.setOperatorId(sysUserService.getUserId());
         memberRankOrganizationFeeMapperService.add(memberRankOrganizationFeeMapper);
         return succeed();
     }
@@ -54,11 +43,7 @@ public class MemberRankOrganizationFeeMapperController extends BaseController {
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('memberRankOrganizationFeeMapper/update')")
     public Object update(@RequestBody MemberRankOrganizationFeeMapper memberRankOrganizationFeeMapper) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            throw new BizException("用户信息获取失败");
-        }
-        memberRankOrganizationFeeMapper.setOperatorId(sysUser.getId());
+        memberRankOrganizationFeeMapper.setOperatorId(sysUserService.getUserId());
         memberRankOrganizationFeeMapperService.updateFee(memberRankOrganizationFeeMapper);
         return succeed();
     }

+ 4 - 11
mec-web/src/main/java/com/ym/mec/web/controller/MemberRankSettingController.java

@@ -4,6 +4,7 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.MemberRankSetting;
 import com.ym.mec.biz.service.MemberRankSettingService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.QueryInfo;
@@ -24,18 +25,14 @@ public class MemberRankSettingController extends BaseController {
     @Autowired
     private MemberRankSettingService memberRankSettingService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
 
     @ApiOperation(value = "新增")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('memberRankSetting/add')")
     @AuditLogAnnotation(operateName = "新增会员等级")
     public Object add(@RequestBody MemberRankSetting memberRankSetting) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            throw new BizException("请登录");
-        }
-        memberRankSetting.setOperator(sysUser.getId());
+        memberRankSetting.setOperator(sysUserService.getUserId());
         memberRankSettingService.add(memberRankSetting);
         return succeed();
     }
@@ -52,11 +49,7 @@ public class MemberRankSettingController extends BaseController {
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('memberRankSetting/update')")
     public Object update(@RequestBody MemberRankSetting memberRankSetting) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            throw new BizException("请登录");
-        }
-        memberRankSetting.setOperator(sysUser.getId());
+        memberRankSetting.setOperator(sysUserService.getUserId());
         memberRankSettingService.updateSetting(memberRankSetting);
         return succeed();
     }

+ 38 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MultiDataSourceHomeStatsController.java

@@ -0,0 +1,38 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.dto.ActivityPlanAddDto;
+import com.ym.mec.biz.dal.wrapper.MultiDataSourceHomeStatsWrapper;
+import com.ym.mec.biz.service.ActivityPlanService;
+import com.ym.mec.biz.service.MultiDataSourceHomeStatsService;
+import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api(tags = "首页多数据源统计")
+@RequestMapping("multiDataSourceHomeStats")
+@RestController
+public class MultiDataSourceHomeStatsController extends BaseController {
+
+    @Autowired
+    private MultiDataSourceHomeStatsService multiDataSourceHomeStatsService;
+    @Autowired
+    private OrganizationService organizationService;
+
+    @ApiOperation(value = "收入统计")
+    @PostMapping("/summerIncome")
+    @PreAuthorize("@pcs.hasPermissions('multiDataSourceHomeStats/summerIncome')")
+    public HttpResponseResult<List<MultiDataSourceHomeStatsWrapper.summerIncome>> summerIncome(@RequestBody MultiDataSourceHomeStatsWrapper.QueryDto queryDto){
+        queryDto.setOrganIds(organizationService.getEmployeeOrgan(queryDto.getOrganIds()));
+        return succeed(multiDataSourceHomeStatsService.summerIncome(queryDto));
+    }
+}

+ 3 - 9
mec-web/src/main/java/com/ym/mec/web/controller/MusicEnlightenmentQuestionnaireController.java

@@ -1,18 +1,16 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.MusicEnlightenmentQuestionnaireStatDto;
 import com.ym.mec.biz.dal.entity.MusicEnlightenmentQuestionnaire;
 import com.ym.mec.biz.dal.page.MusicEnlightenmentQuestionnaireQueryInfo;
 import com.ym.mec.biz.service.MusicEnlightenmentQuestionnaireService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -34,7 +32,7 @@ public class MusicEnlightenmentQuestionnaireController extends BaseController {
     @Autowired
     private MusicEnlightenmentQuestionnaireService musicEnlightenmentQuestionnaireService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
 
     @ApiOperation(value = "启蒙课问卷列表")
     @GetMapping("queryPage")
@@ -47,11 +45,7 @@ public class MusicEnlightenmentQuestionnaireController extends BaseController {
     @PostMapping("sendParentMeetingNotice")
     @PreAuthorize("@pcs.hasPermissions('musicEnlightenmentQuestionnaire/sendParentMeetingNotice')")
     public HttpResponseResult<Boolean> sendParentMeetingNotice(String musicGroupId, Date meetingDate, String address) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "用户信息获取失败");
-        }
-        return musicEnlightenmentQuestionnaireService.sendParentMeetingNotice(sysUser.getId(), musicGroupId, meetingDate, address) ? succeed() : failed();
+        return musicEnlightenmentQuestionnaireService.sendParentMeetingNotice(sysUserService.getUserId(), musicGroupId, meetingDate, address) ? succeed() : failed();
     }
 
     @ApiOperation(value = "启蒙课问卷统计")

+ 3 - 1
mec-web/src/main/java/com/ym/mec/web/controller/StudentInstrumentController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller;
 
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -31,6 +32,8 @@ import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.annotations.Param;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -62,7 +65,6 @@ public class StudentInstrumentController extends BaseController {
     @Autowired
     private StudentInstrumentDao studentInstrumentDao;
 
-
     @ApiOperation(value = "乐器保养列表")
     @GetMapping("/getList")
     //@PreAuthorize("@pcs.hasPermissions('studentInstrument/getList')")

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/StudentStatisticsController.java

@@ -106,7 +106,7 @@ public class StudentStatisticsController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('studentStatistics/exportStudentSmallClassStatisticsSum')")
     public HttpResponseResult exportStudentSmallClassStatisticsSum(StudentStatisticsQueryInfo queryInfo) throws IOException {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganId(),sysUser.getIsSuperAdmin()));
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganId(),sysUser.getIsSuperAdmin()&&sysUser.getTenantId() == -1));
         int countStatistics = studentStatisticsService.countStatistics(queryInfo);
         if (countStatistics <= 0) {
             throw new BizException("没有可导出的记录");