Browse Source

Merge branch 'zx_1026_1111' of http://git.dayaedu.com/yonge/mec into zx_1020_redis

zouxuan 2 years ago
parent
commit
c28312638b
100 changed files with 894 additions and 3148 deletions
  1. 0 616
      .idea/httpRequests/http-requests-log.http
  2. 0 37
      codegen/pom.xml
  3. 0 63
      codegen/src/main/java/com/yonge/crud/CodegenApplication.java
  4. 0 111
      codegen/src/main/java/com/yonge/crud/core/Configuration.java
  5. 0 144
      codegen/src/main/java/com/yonge/crud/core/CrudSession.java
  6. 0 60
      codegen/src/main/java/com/yonge/crud/core/CrudSessionFactory.java
  7. 0 93
      codegen/src/main/java/com/yonge/crud/core/FreemarkerTemplateEngine.java
  8. 0 84
      codegen/src/main/java/com/yonge/crud/core/GenerateConfiguration.java
  9. 0 59
      codegen/src/main/java/com/yonge/crud/core/db/ConnectionFactory.java
  10. 0 117
      codegen/src/main/java/com/yonge/crud/core/db/DatabaseIntrospector.java
  11. 0 127
      codegen/src/main/java/com/yonge/crud/core/db/model/Column.java
  12. 0 86
      codegen/src/main/java/com/yonge/crud/core/db/model/Table.java
  13. 0 234
      codegen/src/main/java/com/yonge/crud/core/generator/ModuleGenerateIntrospector.java
  14. 0 41
      codegen/src/main/java/com/yonge/crud/core/generator/module/JavaFileGenerator.java
  15. 0 129
      codegen/src/main/java/com/yonge/crud/core/generator/module/SpringGenerator.java
  16. 0 82
      codegen/src/main/java/com/yonge/crud/core/generator/module/SqlMapConfigGenerator.java
  17. 0 160
      codegen/src/main/java/com/yonge/crud/core/util/JavaBeansUtil.java
  18. 0 169
      codegen/src/main/java/com/yonge/crud/core/util/XmlUtil.java
  19. 0 17
      codegen/src/main/resources/generateConfigration.xml
  20. 0 10
      codegen/src/main/resources/template/dao.ftl
  21. 0 44
      codegen/src/main/resources/template/pojo.ftl
  22. 0 9
      codegen/src/main/resources/template/service.ftl
  23. 0 22
      codegen/src/main/resources/template/service_impl.ftl
  24. 0 36
      codegen/src/main/resources/template/spring.ftl
  25. 0 64
      codegen/src/main/resources/template/sqlmap.ftl
  26. 0 11
      codegen/src/main/resources/template/sqlmapConfig.ftl
  27. 2 0
      mec-application/src/main/java/com/ym/mec/AppServerApplication.java
  28. 1 1
      mec-application/src/main/java/com/ym/mec/config/ResourceServerConfig.java
  29. 1 1
      mec-application/src/main/java/com/ym/mec/student/controller/ActivityController.java
  30. 1 1
      mec-application/src/main/java/com/ym/mec/student/controller/ChildrenDayDegreeDetailController.java
  31. 17 2
      mec-application/src/main/java/com/ym/mec/student/controller/ImGroupController.java
  32. 43 0
      mec-application/src/main/java/com/ym/mec/student/controller/ImHistoryMessageController.java
  33. 5 2
      mec-application/src/main/java/com/ym/mec/student/controller/SporadicChargeInfoController.java
  34. 1 1
      mec-application/src/main/java/com/ym/mec/student/controller/StudentManageController.java
  35. 15 2
      mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java
  36. 47 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/ImHistoryMessageController.java
  37. 1 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/VipGroupCategoryController.java
  38. 7 7
      mec-application/src/main/java/com/ym/mec/web/controller/ExportController.java
  39. 13 2
      mec-application/src/main/java/com/ym/mec/web/controller/ImGroupController.java
  40. 72 8
      mec-application/src/main/java/com/ym/mec/web/controller/ImHistoryMessageController.java
  41. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/SporadicChargeInfoController.java
  42. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/StudentStatisticsController.java
  43. 9 2
      mec-application/src/main/java/com/ym/mec/web/controller/education/ImController.java
  44. 11 11
      mec-application/src/main/resources/exportColumnMapper.ini
  45. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java
  46. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java
  47. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java
  48. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SporadicChargeInfoDao.java
  49. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  50. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  51. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityCourseDetailDto.java
  52. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityUserMapperSumDto.java
  53. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseReviewDto.java
  54. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/DegreePayDto.java
  55. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/DoubleEleven2021ActivityDto.java
  56. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/DoubleEleven2021Dto.java
  57. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupMemberDto.java
  58. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupNoticeDto.java
  59. 4 23
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SporadicPayDto.java
  60. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java
  61. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleEvaluate.java
  62. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleReview.java
  63. 55 52
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java
  64. 134 29
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java
  65. 96 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMemberPlus.java
  66. 105 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupPlus.java
  67. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/OrganizationDegreeCourseFee.java
  68. 3 218
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SporadicChargeInfo.java
  69. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupCategory.java
  70. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ActivityCourseType.java
  71. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportEnum.java
  72. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportTypeEnum.java
  73. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexDataType.java
  74. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderDetailTypeEnum.java
  75. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SporadicChargeTypeEnum.java
  76. 3 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/ImGroupMemberPlusMapper.java
  77. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/ImGroupPlusMapper.java
  78. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolStaffMapper.java
  79. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/DoubleEleven2021QueryInfo.java
  80. 2 40
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/SporadicChargeInfoQueryInfo.java
  81. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupMemberWrapper.java
  82. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupWrapper.java
  83. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java
  84. 4 5
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupMemberPlusService.java
  85. 3 2
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupPlusService.java
  86. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java
  87. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SchoolStaffService.java
  88. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/SporadicChargeInfoService.java
  89. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java
  90. 9 2
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  91. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java
  92. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysUserService.java
  93. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java
  94. 53 46
      mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java
  95. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java
  96. 14 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java
  97. 25 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  98. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  99. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberPlusServiceImpl.java
  100. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

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

@@ -1,616 +0,0 @@
-GET http://127.0.0.1:8005/open/queryAllOrg
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-09-18T100913.200.json
-
-###
-
-POST http://127.0.0.1:8005/open/oaOrgIds?userId=2248313
-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-09-15T234119.200.json
-
-###
-
-POST http://127.0.0.1:8005/open/oaOrgIds?userId=2248313
-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-09-15T233859.200.json
-
-###
-
-GET http://127.0.0.1:8005/open/queryAllOrg
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-09-15T233807.200.json
-
-###
-
-GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
-Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
-Proxy-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-15T221721.200.json
-
-###
-
-GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
-Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
-Proxy-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-15T221523.200.json
-
-###
-
-GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
-Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
-Proxy-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-15T221236.200.json
-
-###
-
-GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
-Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
-Proxy-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-15T220649.200.json
-
-###
-
-GET http://127.0.0.1:9002/teacherCourseSchedule/getCourseSchedulesWithDate?date=2023-06-05 00:00:00
-Content-Type: application/json
-Authorization: bearer 4d8e23a1-3acd-42e4-a1ca-b4d595506d98
-Proxy-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-15T220555.200.json
-
-###
-
-GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
-Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
-Proxy-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-15T220546.200.json
-
-###
-
-GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
-Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
-Proxy-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-15T220439.200.json
-
-###
-
-GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
-Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
-Proxy-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-15T220236.200.json
-
-###
-
-GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
-Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
-Proxy-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-15T215903.200.json
-
-###
-
-GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
-Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
-Proxy-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-15T215426.200.json
-
-###
-
-GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
-Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
-Proxy-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-15T215131.200.json
-
-###
-
-POST https://online.lexiaoya.cn/api-backend/open/schoolTeacherStudent/importPlan?fileUrl=https://polestar-oss.oss-cn-shenzhen.aliyuncs.com/assets/excel/0614/0614单簧管导入表.xlsx
-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-06-15T100514.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherCourseSchedule/liveCoursePage
-authorization: bearer 0071d90f-5623-4ee9-a88e-c7adb09efb1c
-Content-Type: application/json
-Content-Length: 149
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-//  "startTime": "2023-06-06 10:14:57",
-//  "endTime": "2023-06-08 10:14:57",
-//  "search": "",
-  "status": "UNDERWAY"
-}
-
-<> 2023-06-14T173156.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherCourseSchedule/liveCoursePage
-authorization: bearer 0071d90f-5623-4ee9-a88e-c7adb09efb1c
-Content-Type: application/json
-Content-Length: 150
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-//  "startTime": "2023-06-06 10:14:57",
-//  "endTime": "2023-06-08 10:14:57",
-//  "search": "",
-  "status": "NOT_START"
-}
-
-<> 2023-06-14T173111.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherCourseSchedule/liveCoursePage
-authorization: bearer a9b023c1-f525-4b95-8723-0ca14b038624
-Content-Type: application/json
-Content-Length: 150
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-//  "startTime": "2023-06-06 10:14:57",
-//  "endTime": "2023-06-08 10:14:57",
-//  "search": "",
-  "status": "NOT_START"
-}
-
-<> 2023-06-14T173045.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentCourseSchedule/queryCourseId?courseId=2162
-Authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-14T154028.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentCourseSchedule/queryCourseId?courseId=2162
-Authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-14T145629.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentCourseSchedule/queryCourseId?courseId=1374
-Authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-14T145450.200.json
-
-###
-
-GET http://127.0.0.1:8005/courseSchedule/getCurrentCourseDetail/1374
-Authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-14T143343.200.json
-
-###
-
-GET http://127.0.0.1:8005/courseSchedule/query?courseScheduleId=1374
-Authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-14T143049.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Content-Type: application/json
-Content-Length: 69
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": "2328",
-  "status": "SHARE",
-  "search": ""
-}
-
-<> 2023-06-14T124937.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Content-Type: application/json
-Content-Length: 69
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": "2328",
-  "status": "SHARE",
-  "search": ""
-}
-
-<> 2023-06-14T124615.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Content-Type: application/json
-Content-Length: 69
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": "2328",
-  "status": "SHARE",
-  "search": ""
-}
-
-<> 2023-06-14T124548.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Content-Type: application/json
-Content-Length: 69
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": "2328",
-  "status": "SHARE",
-  "search": ""
-}
-
-<> 2023-06-14T124526.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Content-Type: application/json
-Content-Length: 69
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": "2328",
-  "status": "SHARE",
-  "search": ""
-}
-
-<> 2023-06-14T124513.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Content-Type: application/json
-Content-Length: 69
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": "2328",
-  "status": "SHARE",
-  "search": ""
-}
-
-<> 2023-06-14T124441.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherCourseSchedule/liveCoursePage
-authorization: bearer a9b023c1-f525-4b95-8723-0ca14b038624
-Content-Type: application/json
-Content-Length: 152
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-//  "startTime": "2023-06-06 10:14:57",
-//  "endTime": "2023-06-08 10:14:57",
-//  "search": "",
-//  "status": "NOT_START"
-}
-
-<> 2023-06-14T111123.200.json
-
-###
-
-POST http://127.0.0.1:8005/vipGroupManage/liveStudentList
-Authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Content-Type: application/json
-Content-Length: 78
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-  "liveGroupId": 102,
-  "search": "测试59611"
-}
-
-<> 2023-06-14T105403.200.json
-
-###
-
-POST http://127.0.0.1:8005/vipGroupManage/liveStudentList
-Authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Content-Type: application/json
-Content-Length: 77
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-  "liveGroupId": 102,
-  "search": "测试5961"
-}
-
-<> 2023-06-14T105355.200.json
-
-###
-
-POST http://127.0.0.1:8005/vipGroupManage/liveStudentList
-Authorization: bearer b2d082f2-2e51-4880-8119-5471c5287bf9
-Content-Type: application/json
-Content-Length: 51
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-  "liveGroupId": 102
-}
-
-<> 2023-06-14T105332.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/liveCourseRemind
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-13T183554.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/liveCourseRemind
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-13T183425.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/liveCourseRemind
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-13T183308.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/liveCourseRemind
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-13T182452.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentVipGroup/joinLiveRoomByShare?courseScheduleId=2179
-Authorization: bearer 093517b0-c9a4-407b-b558-0d71bf157b16
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-12T163044.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentVipGroup/joinLiveRoomByShare?courseScheduleId=2179
-Authorization: bearer 093517b0-c9a4-407b-b558-0d71bf157b16
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-12T095605.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentVipGroup/joinLiveRoomByShare?courseScheduleId=2179
-Authorization: bearer 093517b0-c9a4-407b-b558-0d71bf157b16
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-12T095427.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentVipGroup/joinLiveRoomByShare?courseScheduleId=2179
-Authorization: bearer 093517b0-c9a4-407b-b558-0d71bf157b16
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-12T095323.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentVipGroup/joinLiveRoomByShare?courseScheduleId=2179
-Authorization: bearer 093517b0-c9a4-407b-b558-0d71bf157b16
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-12T095238.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentVipGroup/joinLiveRoomByShare?courseScheduleId=2179
-Authorization: bearer 093517b0-c9a4-407b-b558-0d71bf157b16
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-12T095217.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentVipGroup/joinLiveRoomByShare?courseScheduleId=2179
-Authorization: bearer 093517b0-c9a4-407b-b558-0d71bf157b16
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-12T095045.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentVipGroup/joinLiveRoomByShare?courseScheduleId=2179
-Authorization: bearer 093517b0-c9a4-407b-b558-0d71bf157b16
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-12T094907.200.json
-
-###
-
-GET http://127.0.0.1:9001/studentVipGroup/joinLiveRoomByShare?courseScheduleId=2179
-Authorization: bearer 81d0c352-fcc8-4812-87f5-0f7a68d10451
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-12T094734.200.json
-
-###
-
-POST http://localhost:8005/imSendGroupMessage/send
-Content-Type: application/json
-tenantId: 1
-Authorization: bearer 9b756b90-f27a-4ca9-99b1-da854c72eb3f
-Content-Length: 99
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{"postType":"0","messageContent":"3の3","messageType":"TXT","targetIds":"232","isIncludeSender":0}
-
-<> 2023-06-09T174838.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/closeLiveCourseRoom
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-08T214126.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/closeLiveCourseRoom
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-08T210807.200.json
-
-###
-

+ 0 - 37
codegen/pom.xml

@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>com.ym</groupId>
-		<artifactId>mec</artifactId>
-		<version>1.0</version>
-	</parent>
-
-	<groupId>com.yonge</groupId>
-	<artifactId>codegen</artifactId>
-	<name>codegen</name>
-	<url>http://maven.apache.org</url>
-
-	<properties>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-	</properties>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.freemarker</groupId>
-			<artifactId>freemarker</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>mysql</groupId>
-			<artifactId>mysql-connector-java</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>com.ym</groupId>
-			<artifactId>mec-util</artifactId>
-		</dependency>
-	</dependencies>
-</project>

+ 0 - 63
codegen/src/main/java/com/yonge/crud/CodegenApplication.java

@@ -1,63 +0,0 @@
-package com.yonge.crud;
-
-import java.util.List;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.stream.StreamSource;
-
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-import com.yonge.crud.core.Configuration;
-import com.yonge.crud.core.CrudSession;
-import com.yonge.crud.core.CrudSessionFactory;
-import com.yonge.crud.core.GenerateConfiguration;
-import com.yonge.crud.core.db.model.Table;
-
-@SpringBootApplication
-public class CodegenApplication {
-
-	public static void main(String[] args) throws JAXBException {
-		//SpringApplication.run(CodegenApplication.class, args);
-
-		/*
-		 * Configuration config = new Configuration("oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@192.168.10.134:1521:orcl", "margin_gy",
-		 * "margin_gy", null, "margin_gy");
-		 */
-
-		// "src/generateConfigration.xml"
-		GenerateConfiguration genConfig = toObject("codegen/src/main/resources/generateConfigration.xml", GenerateConfiguration.class);
-
-		Configuration config = genConfig.getDbConfiguration();
-
-		CrudSessionFactory sessionFactory = config.buildCrudSessionFactory();
-		CrudSession session = sessionFactory.openSession();
-		List<Table> tables = session.getTables();
-		String srcBase = genConfig.getSrcBase();
-		String pojoPackageName = genConfig.getPojoPackageName();
-		String daoPackageName = genConfig.getDaoPackageName();
-		String servicePackageName = genConfig.getServicePackageName();
-		String sqlmapPackageName = genConfig.getSqlmapPackageName();
-		String sqlmapConfigPackageName = genConfig.getSqlmapConfigPackageName();
-		for (Table table : tables) {
-			try {
-				session.reverse(table, srcBase, pojoPackageName, sqlmapPackageName, daoPackageName, servicePackageName);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-		// 生成sqlmapConfig
-		session.generateSqlmapConfig(tables, srcBase, sqlmapConfigPackageName, sqlmapPackageName);
-		session.closeSession();
-	}
-
-	public static <T> T toObject(String systemId, Class<T> clazz) throws JAXBException {
-		JAXBContext jc = JAXBContext.newInstance(clazz);
-		Unmarshaller unmarshaller = jc.createUnmarshaller();
-		StreamSource xml = new StreamSource(systemId);
-		JAXBElement<T> je = unmarshaller.unmarshal(xml, clazz);
-		return je.getValue();
-	}
-}

+ 0 - 111
codegen/src/main/java/com/yonge/crud/core/Configuration.java

@@ -1,111 +0,0 @@
-package com.yonge.crud.core;
-
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class Configuration {
-
-	private static final Logger LOGGER = LoggerFactory
-			.getLogger(Configuration.class);
-
-	private String driverClass;
-
-	private String url;
-
-	private String username;
-
-	private String password;
-
-	private String catalog;
-
-	private String schema;
-
-	public Configuration() {
-		// TODO Auto-generated constructor stub
-	}
-
-	public Configuration(String driverClass, String url, String username,
-			String password, String catalog, String schema) {
-		if (StringUtils.isBlank(driverClass)) {
-			LOGGER.warn("driverClass不能为空");
-			return;
-		}
-		if (StringUtils.isBlank(url)) {
-			LOGGER.warn("url不能为空");
-			return;
-		}
-		if (StringUtils.isBlank(username)) {
-			LOGGER.warn("username不能为空");
-			return;
-		}
-		if (StringUtils.isBlank(password)) {
-			LOGGER.warn("password不能为空");
-			return;
-		}
-		if (StringUtils.isBlank(schema)) {
-			LOGGER.warn("schema不能为空");
-			return;
-		}
-		this.driverClass = driverClass;
-		this.url = url;
-		this.username = username;
-		this.password = password;
-		if (catalog != null) {
-			this.catalog = catalog.toUpperCase();
-		}
-		this.schema = schema.toUpperCase();
-	}
-
-	public String getDriverClass() {
-		return driverClass;
-	}
-
-	public void setDriverClass(String driverClass) {
-		this.driverClass = driverClass;
-	}
-
-	public String getUrl() {
-		return url;
-	}
-
-	public void setUrl(String url) {
-		this.url = url;
-	}
-
-	public String getUsername() {
-		return username;
-	}
-
-	public void setUsername(String username) {
-		this.username = username;
-	}
-
-	public String getPassword() {
-		return password;
-	}
-
-	public void setPassword(String password) {
-		this.password = password;
-	}
-
-	public String getCatalog() {
-		return catalog;
-	}
-
-	public void setCatalog(String catalog) {
-		this.catalog = catalog;
-	}
-
-	public String getSchema() {
-		return schema;
-	}
-
-	public void setSchema(String schema) {
-		this.schema = schema;
-	}
-
-	public CrudSessionFactory buildCrudSessionFactory() {
-		return new CrudSessionFactory(this);
-	}
-}

+ 0 - 144
codegen/src/main/java/com/yonge/crud/core/CrudSession.java

@@ -1,144 +0,0 @@
-package com.yonge.crud.core;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.SQLException;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.yonge.crud.core.db.DatabaseIntrospector;
-import com.yonge.crud.core.db.model.Table;
-import com.yonge.crud.core.generator.ModuleGenerateIntrospector;
-
-public class CrudSession {
-
-	private static final Logger LOGGER = LoggerFactory
-			.getLogger(CrudSession.class);
-
-	private Connection connection;
-
-	private DatabaseMetaData dbMetaData;
-
-	private String catalog;
-
-	private String schema;
-
-	private CrudSessionFactory sessionFactory;
-
-	CrudSession(Connection connection, String catalog, String schema,
-			CrudSessionFactory sessionFactory) {
-		if (connection == null) {
-			LOGGER.warn("没有获取连接,不能打开session");
-			return;
-		}
-		this.connection = connection;
-		this.catalog = catalog;
-		this.schema = schema;
-		this.sessionFactory = sessionFactory;
-		try {
-			this.dbMetaData = connection.getMetaData();
-		} catch (SQLException e) {
-			LOGGER.warn("获取数据库连接的元数据失败", e);
-		}
-	}
-
-	/**
-	 * 关闭会话
-	 */
-	public void closeSession() {
-		if (connection != null) {
-			try {
-				connection.close();
-			} catch (SQLException e) {
-				LOGGER.warn("数据库连接关闭失败", e);
-			}
-		}
-	}
-
-	/**
-	 * 获取工厂信息
-	 * 
-	 * @return
-	 */
-	public CrudSessionFactory getFactory() {
-		return sessionFactory;
-	}
-
-	/**
-	 * 获取所有表信息
-	 * 
-	 * @return
-	 */
-	public List<Table> getTables() {
-		DatabaseIntrospector dbIntrospector = new DatabaseIntrospector(
-				dbMetaData);
-		return dbIntrospector.getTables(catalog, schema);
-	}
-
-	/**
-	 * 数据库表的反向工程
-	 * 
-	 * @param table
-	 *            表对象
-	 * @param srcBase
-	 *            生成目录的根路径
-	 * @param pojoPackageName
-	 *            存放pojo的包名称
-	 * @param sqlmapPackageName
-	 *            存放sqlmap的包名称
-	 * @param daoPackageName
-	 *            存放dao的包名称
-	 */
-	public void reverse(Table table, String srcBase, String pojoPackageName,
-			String sqlmapPackageName, String daoPackageName,
-			String servicePackageName) {
-		ModuleGenerateIntrospector
-				.generatePOJO(table, srcBase, pojoPackageName);
-		ModuleGenerateIntrospector.generatSqlmap(this.getFactory()
-				.getMetadata().getDriverClass(), table, srcBase,
-				sqlmapPackageName, daoPackageName);
-		ModuleGenerateIntrospector.generateDaoAndService(table, srcBase,
-				daoPackageName, servicePackageName);
-	}
-
-	/**
-	 * 生成spring的配置文件
-	 * 
-	 * @param tables
-	 *            需要生成spring配置文件对应的表
-	 * @param srcBase
-	 *            根目录
-	 * @param packageName
-	 *            配置文件的包路径
-	 * @param daoPackageName
-	 *            dao的包路径
-	 * @param servicePackageName
-	 *            service的包路径
-	 */
-	public void generateSpringConfig(List<Table> tables, String srcBase,
-			String packageName, String daoPackageName, String servicePackageName) {
-		ModuleGenerateIntrospector.generateSpring(tables, srcBase, packageName,
-				daoPackageName, servicePackageName);
-	}
-
-	/**
-	 * 生成sqlmapConfig文件
-	 * 
-	 * @param tables
-	 *            相关表信息
-	 * @param srcBase
-	 *            生成目标的根目录
-	 * @param packageName
-	 *            sqlmapConfig文件的包路径
-	 * @param sqlmapPackageName
-	 *            sqlmap文件的包路径
-	 */
-	public void generateSqlmapConfig(List<Table> tables, String srcBase,
-			String packageName, String sqlmapPackageName) {
-		ModuleGenerateIntrospector.generateSqlMapConfig(tables, srcBase,
-				sqlmapPackageName, packageName);
-	}
-
-}

+ 0 - 60
codegen/src/main/java/com/yonge/crud/core/CrudSessionFactory.java

@@ -1,60 +0,0 @@
-package com.yonge.crud.core;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.yonge.crud.core.db.ConnectionFactory;
-
-public class CrudSessionFactory {
-
-	private static final Logger LOGGER = LoggerFactory
-			.getLogger(CrudSessionFactory.class);
-
-	private CrudSession session;
-
-	private Connection connection;
-
-	private String catalog;
-
-	private String schema;
-
-	private Configuration config;
-
-	CrudSessionFactory(Configuration config) {
-		LOGGER.debug("数据库的连接信息:url={} user={} password={}", config.getUrl(),
-				config.getUsername(), config.getPassword());
-		try {
-			this.config = config;
-			this.catalog = config.getCatalog();
-			this.schema = config.getSchema();
-			connection = ConnectionFactory.getInstance().getConnection(
-					config.getDriverClass(), config.getUrl(),
-					config.getUsername(), config.getPassword());
-			session = new CrudSession(connection, catalog, schema, this);
-		} catch (SQLException e) {
-			LOGGER.warn("数据库连接创建失败", e);
-		}
-	}
-
-	/**
-	 * 开启一个会话
-	 */
-	public synchronized CrudSession openSession() {
-		if (session == null) {
-			session = new CrudSession(connection, catalog, schema, this);
-		}
-		return session;
-	}
-
-	/**
-	 * 获取元数据
-	 * 
-	 * @return
-	 */
-	public Configuration getMetadata() {
-		return config;
-	}
-}

+ 0 - 93
codegen/src/main/java/com/yonge/crud/core/FreemarkerTemplateEngine.java

@@ -1,93 +0,0 @@
-package com.yonge.crud.core;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import freemarker.template.Configuration;
-import freemarker.template.DefaultObjectWrapper;
-import freemarker.template.Template;
-
-public class FreemarkerTemplateEngine {
-	private static final Logger LOGGER = LoggerFactory
-			.getLogger(FreemarkerTemplateEngine.class);
-
-	private static Configuration cfg;
-
-	static {
-		cfg = new Configuration();
-		cfg.setOutputEncoding("UTF-8");
-		cfg.setClassForTemplateLoading(FreemarkerTemplateEngine.class,
-				"/template/");
-		cfg.setObjectWrapper(new DefaultObjectWrapper());
-	}
-
-	public void render(Map<String, Object> data, String templateFile,
-			File outputFile) {
-		FileWriter fw = null;
-		BufferedWriter bw = null;
-		try {
-			Template temp = cfg.getTemplate(templateFile);
-			fw = new FileWriter(outputFile);
-			bw = new BufferedWriter(fw);
-			temp.process(data, bw);
-			bw.flush();
-		} catch (Exception e) {
-			LOGGER.warn(String.format("将数据%1$s通过FreeMarker模板%2$s生成文件%3$s失败",
-					data, templateFile, outputFile), e);
-		} finally {
-			if (bw != null) {
-				try {
-					bw.close();
-				} catch (IOException e) {
-					LOGGER.warn("BufferedWriter关闭异常");
-				}
-			}
-			if (fw != null) {
-				try {
-					fw.close();
-				} catch (IOException e) {
-					LOGGER.warn("FileWriter关闭异常");
-				}
-			}
-		}
-	}
-
-	public void render(Map<String, Object> data, String templateFile,
-			String outputFile) {
-		FileWriter fw = null;
-		BufferedWriter bw = null;
-		try {
-			Template temp = cfg.getTemplate(templateFile);
-			File file = new File(outputFile);
-			fw = new FileWriter(file);
-			bw = new BufferedWriter(fw);
-			temp.process(data, bw);
-			bw.flush();
-		} catch (Exception e) {
-			LOGGER.warn(String.format("将数据%1$s通过FreeMarker模板%2$s生成文件%3$s失败",
-					data, templateFile, outputFile), e);
-		} finally {
-			if (bw != null) {
-				try {
-					bw.close();
-				} catch (IOException e) {
-					LOGGER.warn("BufferedWriter关闭异常");
-				}
-			}
-			if (fw != null) {
-				try {
-					fw.close();
-				} catch (IOException e) {
-					LOGGER.warn("FileWriter关闭异常");
-				}
-			}
-		}
-	}
-
-}

+ 0 - 84
codegen/src/main/java/com/yonge/crud/core/GenerateConfiguration.java

@@ -1,84 +0,0 @@
-package com.yonge.crud.core;
-
-public class GenerateConfiguration {
-
-	private Configuration dbConfiguration;
-
-	private String srcBase;
-
-	private String pojoPackageName;
-
-	private String daoPackageName;
-
-	private String servicePackageName;
-
-	private String sqlmapPackageName;
-
-	private String sqlmapConfigPackageName;
-
-	private String springConfigPackageName;
-
-	public Configuration getDbConfiguration() {
-		return dbConfiguration;
-	}
-
-	public void setDbConfiguration(Configuration dbConfiguration) {
-		this.dbConfiguration = dbConfiguration;
-	}
-
-	public String getSrcBase() {
-		return srcBase;
-	}
-
-	public void setSrcBase(String srcBase) {
-		this.srcBase = srcBase;
-	}
-
-	public String getPojoPackageName() {
-		return pojoPackageName;
-	}
-
-	public void setPojoPackageName(String pojoPackageName) {
-		this.pojoPackageName = pojoPackageName;
-	}
-
-	public String getDaoPackageName() {
-		return daoPackageName;
-	}
-
-	public void setDaoPackageName(String daoPackageName) {
-		this.daoPackageName = daoPackageName;
-	}
-
-	public String getServicePackageName() {
-		return servicePackageName;
-	}
-
-	public void setServicePackageName(String servicePackageName) {
-		this.servicePackageName = servicePackageName;
-	}
-
-	public String getSqlmapPackageName() {
-		return sqlmapPackageName;
-	}
-
-	public void setSqlmapPackageName(String sqlmapPackageName) {
-		this.sqlmapPackageName = sqlmapPackageName;
-	}
-
-	public String getSqlmapConfigPackageName() {
-		return sqlmapConfigPackageName;
-	}
-
-	public void setSqlmapConfigPackageName(String sqlmapConfigPackageName) {
-		this.sqlmapConfigPackageName = sqlmapConfigPackageName;
-	}
-
-	public String getSpringConfigPackageName() {
-		return springConfigPackageName;
-	}
-
-	public void setSpringConfigPackageName(String springConfigPackageName) {
-		this.springConfigPackageName = springConfigPackageName;
-	}
-}

+ 0 - 59
codegen/src/main/java/com/yonge/crud/core/db/ConnectionFactory.java

@@ -1,59 +0,0 @@
-package com.yonge.crud.core.db;
-
-import java.sql.Connection;
-import java.sql.Driver;
-import java.sql.SQLException;
-import java.util.Properties;
-
-import org.apache.commons.lang3.StringUtils;
-
-public class ConnectionFactory {
-
-	private static ConnectionFactory instance = new ConnectionFactory();
-
-	private static final String ORACLE_DRIVER = "oracle.jdbc.driver.OracleDriver";
-
-	public static ConnectionFactory getInstance() {
-		return instance;
-	}
-
-	private ConnectionFactory() {
-		super();
-	}
-
-	public Connection getConnection(String driverClass, String url,
-			String username, String password) throws SQLException {
-		Driver driver = getDriver(driverClass);
-
-		Properties props = new Properties();
-
-		props.setProperty("user", username);
-
-		props.setProperty("password", password);
-
-		// 只有oracle才需要这个参数
-		if (StringUtils.equals(driverClass, ORACLE_DRIVER)) {
-			props.setProperty("remarksReporting", "true");
-		}
-
-		Connection conn = driver.connect(url, props);
-
-		if (conn == null) {
-			throw new SQLException("连接获取失败");
-		}
-
-		return conn;
-	}
-
-	private Driver getDriver(String driverClass) {
-		Driver driver = null;
-		try {
-			Class<?> clazz = Class.forName(driverClass);
-			driver = (Driver) clazz.newInstance();
-		} catch (Exception e) {
-			throw new RuntimeException("类加载器加载driver失败", e);
-		}
-
-		return driver;
-	}
-}

+ 0 - 117
codegen/src/main/java/com/yonge/crud/core/db/DatabaseIntrospector.java

@@ -1,117 +0,0 @@
-package com.yonge.crud.core.db;
-
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.yonge.crud.core.db.model.Column;
-import com.yonge.crud.core.db.model.Table;
-import com.yonge.crud.core.util.JavaBeansUtil;
-
-public class DatabaseIntrospector {
-	private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseIntrospector.class);
-
-	private DatabaseMetaData dbMetaData;
-
-	public DatabaseIntrospector(DatabaseMetaData dbMetaData) {
-		this.dbMetaData = dbMetaData;
-	}
-
-	public List<Table> getTables(String catalog, String schema) {
-		List<Table> tables = new ArrayList<Table>();
-		if (dbMetaData == null) {
-			LOGGER.warn("DatabaseMetaData对象不能为空");
-			return tables;
-		}
-		ResultSet resultSet = null;
-		try {
-			resultSet = dbMetaData.getTables(catalog, schema, null, new String[] { "TABLE" });
-			Table table = null;
-			while (resultSet.next()) {
-				table = new Table();
-				table.setName(resultSet.getString("TABLE_NAME"));
-				table.setCatalog(resultSet.getString("TABLE_CAT"));
-				table.setRemarks(resultSet.getString("REMARKS"));
-				table.setSchema(resultSet.getString("TABLE_SCHEM"));
-				table.setClassName(JavaBeansUtil.getCamelCaseString(table.getName(), true));
-
-				table.setColumns(getColumns(table));
-				tables.add(table);
-			}
-		} catch (SQLException e) {
-			LOGGER.warn("获取数据库表失败", e);
-		} finally {
-			if (resultSet != null) {
-				try {
-					resultSet.close();
-				} catch (SQLException e) {
-					LOGGER.warn("关闭ResultSet对象出现异常", e);
-				}
-			}
-		}
-		return tables;
-	}
-
-	private List<Column> getColumns(Table table) {
-		List<Column> columns = new ArrayList<Column>();
-		if (table == null) {
-			LOGGER.warn("参数不能为空");
-			return columns;
-		}
-		String tableName = table.getName();
-		String schema = table.getSchema();
-		String name = tableName.toUpperCase();
-		if (dbMetaData == null) {
-			LOGGER.warn("DatabaseMetaData对象不能为空");
-		}
-		ResultSet resultSet = null;
-		Column column = null;
-		try {
-			resultSet = dbMetaData.getPrimaryKeys(table.getCatalog(), schema, tableName);
-			List<String> keyColumns = new ArrayList<String>();
-			while (resultSet.next()) {
-				keyColumns.add(resultSet.getString("COLUMN_NAME"));
-			}
-
-			resultSet = dbMetaData.getColumns(table.getCatalog(), schema, tableName, null);
-			while (resultSet.next()) {
-				column = new Column();
-				// 获得字段名称
-				column.setFieldName(resultSet.getString("COLUMN_NAME"));
-				// 获得字段类型名称
-				column.setJdbcTypeName(resultSet.getString("TYPE_NAME"));
-				// 数据类型
-				column.setDataType(resultSet.getInt("DATA_TYPE"));
-				// 获得字段大小
-				column.setLength(resultSet.getInt("COLUMN_SIZE"));
-				column.setNullable((resultSet.getInt("NULLABLE") == DatabaseMetaData.columnNullable));
-				column.setScale(resultSet.getInt("DECIMAL_DIGITS"));
-				column.setRemarks(resultSet.getString("REMARKS"));
-				for (String key : keyColumns) {
-					if (StringUtils.equalsIgnoreCase(key, column.getFieldName())) {
-						column.setIsPrimaryKey(true);
-					}
-				}
-				columns.add(column);
-			}
-		} catch (SQLException e) {
-			LOGGER.warn("在" + schema + "中获取" + name + "表字段出现异常", e);
-		} finally {
-			if (resultSet != null) {
-				try {
-					resultSet.close();
-				} catch (SQLException e) {
-					LOGGER.warn("关闭ResultSet对象出现异常", e);
-				}
-			}
-		}
-		return columns;
-	}
-
-}

+ 0 - 127
codegen/src/main/java/com/yonge/crud/core/db/model/Column.java

@@ -1,127 +0,0 @@
-package com.yonge.crud.core.db.model;
-
-public class Column {
-
-	/** 字段名称 */
-	private String fieldName;
-
-	/** 是否是主键 */
-	private boolean isPrimaryKey;
-
-	/** 属性名称 */
-	private String propertyName;
-
-	/** JDBC类型 名称 */
-	private String jdbcTypeName;
-
-	/** java类型 */
-	private String javaTypeName;
-
-	/** 数据类型 */
-	private int dataType;
-
-	/** 字段长度 */
-	private int length;
-
-	/** 是否可以为空 */
-	private boolean nullable;
-
-	private int scale;
-
-	/** 描述 */
-	private String remarks;
-
-	public String getFieldName() {
-		return fieldName;
-	}
-
-	public void setFieldName(String fieldName) {
-		this.fieldName = fieldName;
-	}
-
-	public boolean isPrimaryKey() {
-		return isPrimaryKey;
-	}
-
-	public void setIsPrimaryKey(boolean isPrimaryKey) {
-		this.isPrimaryKey = isPrimaryKey;
-	}
-
-	public String getPropertyName() {
-		return propertyName;
-	}
-
-	public void setPropertyName(String propertyName) {
-		this.propertyName = propertyName;
-	}
-
-	public String getJdbcTypeName() {
-		return jdbcTypeName;
-	}
-
-	public void setJdbcTypeName(String jdbcTypeName) {
-		this.jdbcTypeName = jdbcTypeName;
-	}
-
-	public String getJavaTypeName() {
-		return javaTypeName;
-	}
-
-	public void setJavaTypeName(String javaTypeName) {
-		this.javaTypeName = javaTypeName;
-	}
-
-	public int getDataType() {
-		return dataType;
-	}
-
-	public void setDataType(int dataType) {
-		this.dataType = dataType;
-	}
-
-	public int getLength() {
-		return length;
-	}
-
-	public void setLength(int length) {
-		this.length = length;
-	}
-
-	public boolean isNullable() {
-		return nullable;
-	}
-
-	public void setNullable(boolean nullable) {
-		this.nullable = nullable;
-	}
-
-	public int getScale() {
-		return scale;
-	}
-
-	public void setScale(int scale) {
-		this.scale = scale;
-	}
-
-	public String getRemarks() {
-		return remarks;
-	}
-
-	public void setRemarks(String remarks) {
-		this.remarks = remarks;
-	}
-
-	public String toString() {
-		StringBuilder sb = new StringBuilder();
-		sb.append("fieldName = " + fieldName)
-				.append(" isPrimaryKey = " + isPrimaryKey)
-				.append(" propertyName = " + propertyName)
-				.append(" jdbcTypeName = " + jdbcTypeName)
-				.append(" javaTypeName = " + javaTypeName)
-				.append(" dataType = " + dataType)
-				.append(" length = " + length)
-				.append(" nullable = " + nullable).append(" scale = " + scale)
-				.append(" remarks = " + remarks);
-		return sb.toString();
-	}
-}

+ 0 - 86
codegen/src/main/java/com/yonge/crud/core/db/model/Table.java

@@ -1,86 +0,0 @@
-package com.yonge.crud.core.db.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class Table {
-
-	private String name;
-
-	private String schema;
-
-	private String catalog;
-
-	private String remarks;
-
-	private String className;
-
-	private String packageName;
-
-	private List<Column> columns = new ArrayList<Column>();
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public String getSchema() {
-		return schema;
-	}
-
-	public void setSchema(String schema) {
-		this.schema = schema;
-	}
-
-	public String getCatalog() {
-		return catalog;
-	}
-
-	public void setCatalog(String catalog) {
-		this.catalog = catalog;
-	}
-
-	public String getRemarks() {
-		return remarks;
-	}
-
-	public void setRemarks(String remarks) {
-		this.remarks = remarks;
-	}
-
-	public List<Column> getColumns() {
-		return columns;
-	}
-
-	public void setColumns(List<Column> columns) {
-		this.columns = columns;
-	}
-
-	public String getClassName() {
-		return className;
-	}
-
-	public void setClassName(String className) {
-		this.className = className;
-	}
-
-	public String getPackageName() {
-		return packageName;
-	}
-
-	public void setPackageName(String packageName) {
-		this.packageName = packageName;
-	}
-
-	public String toString() {
-		StringBuilder sb = new StringBuilder();
-		sb.append("name = " + name).append(" catalog = " + catalog)
-				.append(" schema = " + schema).append(" remarks = " + remarks)
-				.append(" packageName = " + packageName)
-				.append(" className = " + className);
-		return sb.toString();
-	}
-}

+ 0 - 234
codegen/src/main/java/com/yonge/crud/core/generator/ModuleGenerateIntrospector.java

@@ -1,234 +0,0 @@
-package com.yonge.crud.core.generator;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.yonge.crud.core.db.model.Column;
-import com.yonge.crud.core.db.model.Table;
-import com.yonge.crud.core.generator.module.JavaFileGenerator;
-import com.yonge.crud.core.generator.module.SpringGenerator;
-import com.yonge.crud.core.generator.module.SqlMapConfigGenerator;
-import com.yonge.crud.core.util.JavaBeansUtil;
-
-public class ModuleGenerateIntrospector {
-
-	private static final String DAO_TEMPLATE_NAME = "dao.ftl";
-
-	private static final String POJO_TEMPLATE_NAME = "pojo.ftl";
-
-	private static final String SERVICE_IMPL_TEMPLATE_NAME = "service_impl.ftl";
-
-	private static final String SERVICE_TEMPLATE_NAME = "service.ftl";
-
-	private static final String SQLMAP_TEMPLATE_NAME = "sqlmap.ftl";
-
-	private static final String SQLMAPCONFIG_TEMPLATE_NAME = "sqlmapConfig.ftl";
-
-	private static final String SPRING_TEMPLATE = "spring.ftl";
-
-	private static final String POJO_FILE_SUFFIX = ".java";
-
-	private static final String SQLMAP_FILE_PREFIX = "SqlMap_";
-
-	private static final String XML_FILE_SUFFIX = ".xml";
-
-	private static final String DAO_FILE_SUFFIX = "Dao.java";
-
-	private static final String SERVICE_FILE_SUFFIX = "Service.java";
-
-	private static final String SERVICE_IMPL_FILE_SUFFIX = "ServiceImpl.java";
-
-	private static final String SQLMAP_CONFIG_FILE = "SqlMapConfig.xml";
-
-	private static final String SPRING_CONFIG_FILE = "spring-crud.xml";
-
-	public static void generatePOJO(Table table, String srcBase,
-			String packageName) {
-		List<Column> columns = table.getColumns();
-		for (Column col : columns) {
-			// 转换类型
-			col.setJavaTypeName(JavaBeansUtil.fromJdbcToJava(col));
-			// 转换属性名称
-			col.setPropertyName(JavaBeansUtil.getCamelCaseString(
-					col.getFieldName(), false));
-		}
-		table.setColumns(columns);
-		table.setPackageName(packageName);
-		Map<String, Object> params = new HashMap<String, Object>();
-		params.put("props", columns);
-		params.put("table", table);
-		// 生成pojo
-		JavaFileGenerator entiryGenerator = new JavaFileGenerator();
-		entiryGenerator.generate(params, srcBase, packageName,
-				table.getClassName() + POJO_FILE_SUFFIX, POJO_TEMPLATE_NAME);
-	}
-
-	public static void generatSqlmap(String driverClass, Table table,
-			String srcBase, String sqlMapPackageName, String daoPackageName) {
-		Map<String, Object> params = new HashMap<String, Object>();
-		String className = table.getClassName();
-		params.put("namespace", daoPackageName + "." + className + "Dao");
-		params.put("fullClassName", table.getPackageName() + "." + className);
-		params.put("alias", className);
-		params.put("columns", table.getColumns());
-
-		String tableName = table.getName();
-		params.put("tableName", tableName);
-
-		// 构建sql语句
-		String fields = "", properties = "", criteria = "", orderbyStr = "";
-		Map<String, String> fieldPropMapping = new HashMap<String, String>();
-		int keys = 0;
-		for (Column col : table.getColumns()) {
-			fields += (col.getFieldName() + ",");
-			properties += ("#{" + col.getPropertyName() + "},");
-			fieldPropMapping.put(col.getFieldName(), col.getPropertyName());
-			if (col.isPrimaryKey()) {
-				criteria += (col.getFieldName() + " = #{"
-						+ col.getPropertyName() + "} AND ");
-				++keys;
-				orderbyStr += (col.getFieldName() + ",");
-			}
-		}
-		if (keys > 1) {
-			params.put("paramType", Map.class.getName());
-		}
-		// 清除最后一个"AND"
-		if (StringUtils.isNotBlank(criteria)) {
-			criteria = criteria.substring(0, criteria.length() - 4);
-		}
-		// 删除最后一个“,”
-		fields = fields.substring(0, fields.length() - 1);
-		properties = properties.substring(0, properties.length() - 1);
-
-		String queryBaseSQL = "SELECT * FROM " + tableName;
-		// 全查询
-		String queryFullSQL = queryBaseSQL;
-		if (StringUtils.isNotBlank(orderbyStr)) {
-			orderbyStr = orderbyStr.substring(0, orderbyStr.length() - 1);
-			queryFullSQL += " ORDER BY " + orderbyStr;
-		}
-		params.put("queryFullSQL", queryFullSQL);
-		// 插入
-		String insertSQL = "INSERT INTO " + tableName + " (" + fields
-				+ ") VALUES(" + properties + ")";
-		params.put("insertSQL", insertSQL);
-		if (StringUtils.isNotBlank(criteria)) {
-			// 修改
-			String updateSQL = "UPDATE " + tableName + " <set>\n<if test=\"";
-			for (Entry<String, String> entry : fieldPropMapping.entrySet()) {
-				updateSQL += entry.getValue() + " != null\">\n" + (entry.getKey() + " = #{" + entry.getValue() + "},\n</if>\n<if test=\"");
-			}
-			// 删除最后一个“,”
-			updateSQL = updateSQL.substring(0, updateSQL.length() - 10);
-			updateSQL += ("</set> WHERE " + criteria);
-			params.put("updateSQL", updateSQL);
-			// 根据主键查询
-			String querySingleSQL = queryBaseSQL + " WHERE " + criteria;
-			params.put("querySingleSQL", querySingleSQL);
-			// 根据主键删除
-			String deleteSQL = "DELETE FROM " + tableName + " WHERE "
-					+ criteria;
-			params.put("deleteSQL", deleteSQL);
-		}
-		// 分页查询语句
-		String queryPage = "";
-
-		if (StringUtils.equals(driverClass, "com.mysql.jdbc.Driver")) {
-			// mysql
-			queryPage = queryFullSQL + " <include refid=\"global.limit\"/>";
-		} else if (StringUtils.equals(driverClass,
-				"oracle.jdbc.driver.OracleDriver")) {
-			// oracle
-			queryPage = "SELECT * FROM (SELECT A.*,ROWNUM FROM " + tableName
-					+ " A WHERE ROWNUM <= #endLine# ORDER BY " + orderbyStr
-					+ ") WHERE ROWNUM >= #startLine#";
-		} else if (StringUtils.equals(driverClass, "com.ibm.db2.jcc.DB2Driver")) {
-			// db2
-			queryPage = "SELECT * FROM (SELECT B.*,ROWNUMBER() OVER(ORDER BY "
-					+ orderbyStr
-					+ ") AS RN FROM "
-					+ tableName
-					+ " AS B) AS A WHERE A.RN BETWEEN #startLine# AND #endLine#";
-		}
-		if (StringUtils.isNotBlank(queryPage)) {
-			params.put("queryPage", queryPage);
-		}
-		// 生成sqlmap
-		JavaFileGenerator sqlMapGenerator = new JavaFileGenerator();
-		sqlMapGenerator.generate(params, srcBase, sqlMapPackageName,
-				className+"Mapper" + XML_FILE_SUFFIX,
-				SQLMAP_TEMPLATE_NAME);
-	}
-
-	public static void generateSqlMapConfig(List<Table> tables, String srcBase,
-			String sqlmapPackageName, String sqlMapConfigPackageName) {
-		Map<String, Object> params = new HashMap<String, Object>();
-		params.put("sqlmapPackageName", sqlmapPackageName);
-		params.put("tables", tables);
-		// 生成sqlmap-config
-		SqlMapConfigGenerator sqlMapConfigGenerator = new SqlMapConfigGenerator();
-		sqlMapConfigGenerator.createSqlMapConfigFile(sqlmapPackageName, tables,
-				params, srcBase, sqlMapConfigPackageName, SQLMAP_CONFIG_FILE,
-				SQLMAPCONFIG_TEMPLATE_NAME);
-	}
-
-	public static void generateDaoAndService(Table table, String srcBase,
-			String daoPackageName, String servicePackageName) {
-		Map<String, Object> params = new HashMap<String, Object>();
-		String className = table.getClassName();
-		String pojoFullClassName = table.getPackageName() + "."
-				+ table.getClassName();
-
-		List<Column> primarykeys = new ArrayList<Column>();
-		for (Column col : table.getColumns()) {
-			if (col.isPrimaryKey()) {
-				primarykeys.add(col);
-			}
-		}
-		String paramType = null;
-		if (primarykeys.size() == 1) {
-			paramType = primarykeys.get(0).getJavaTypeName();
-		} else if (primarykeys.size() > 1) {
-			paramType = Map.class.getName();
-		}
-		params.put("pojoFullClassName", pojoFullClassName);
-		params.put("className", className);
-		params.put("paramType", paramType);
-		params.put("daoPackageName", daoPackageName);
-
-		JavaFileGenerator daoGenerator = new JavaFileGenerator();
-		daoGenerator.generate(params, srcBase, daoPackageName, className
-				+ DAO_FILE_SUFFIX, DAO_TEMPLATE_NAME);
-
-		params.put("servicePackageName", servicePackageName);
-
-		JavaFileGenerator serviceGenerator = new JavaFileGenerator();
-		serviceGenerator.generate(params, srcBase, servicePackageName,
-				className + SERVICE_FILE_SUFFIX, SERVICE_TEMPLATE_NAME);
-
-		JavaFileGenerator serviceImplGenerator = new JavaFileGenerator();
-		serviceImplGenerator.generate(params, srcBase, servicePackageName
-				+ File.separator + "impl",
-				className + SERVICE_IMPL_FILE_SUFFIX,
-				SERVICE_IMPL_TEMPLATE_NAME);
-	}
-
-	public static void generateSpring(List<Table> tables, String srcBase,
-			String packageName, String daoPackageName, String servicePackageName) {
-		Map<String, Object> params = new HashMap<String, Object>();
-		params.put("daoPackageName", daoPackageName);
-		params.put("servicePackageName", servicePackageName);
-		params.put("tables", tables);
-		SpringGenerator springGenerator = new SpringGenerator();
-		springGenerator.createSpringFile(daoPackageName, servicePackageName,
-				tables, params, srcBase, packageName, SPRING_CONFIG_FILE,
-				SPRING_TEMPLATE);
-	}
-}

+ 0 - 41
codegen/src/main/java/com/yonge/crud/core/generator/module/JavaFileGenerator.java

@@ -1,41 +0,0 @@
-package com.yonge.crud.core.generator.module;
-
-import java.io.File;
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.yonge.crud.core.FreemarkerTemplateEngine;
-
-public final class JavaFileGenerator extends FreemarkerTemplateEngine {
-	private static final Logger LOGGER = LoggerFactory
-			.getLogger(JavaFileGenerator.class);
-
-	public JavaFileGenerator() {
-		super();
-	}
-
-	public void generate(Map<String, Object> data, String srcBase,
-			String packageName, String targetFile, String templateFile) {
-		StringBuilder buf = new StringBuilder();
-		buf.append(srcBase).append(File.separator);
-		buf.append(packageName.replaceAll("\\.", File.separator
-				+ File.separator));// 单个的File.separator会导致无法通过正则表达式解析
-		buf.append(File.separator);
-		File packageDir = new File(buf.toString());
-		if (!packageDir.exists()) {
-			boolean flag = packageDir.mkdirs();
-			if (!flag) {
-				LOGGER.warn("递归创建文件夹{}失败", packageDir);
-				return;
-			}
-		}
-		buf.append(targetFile);
-		String outputFile = buf.toString();
-		LOGGER.debug("根据输入内容[{},{},{}]得到文件名{}", new Object[] { templateFile,
-				srcBase, packageName, outputFile });
-		render(data, templateFile, outputFile);
-	}
-
-}

+ 0 - 129
codegen/src/main/java/com/yonge/crud/core/generator/module/SpringGenerator.java

@@ -1,129 +0,0 @@
-package com.yonge.crud.core.generator.module;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpressionException;
-
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-import com.yonge.crud.core.FreemarkerTemplateEngine;
-import com.yonge.crud.core.db.model.Table;
-import com.yonge.crud.core.util.XmlUtil;
-
-public class SpringGenerator extends FreemarkerTemplateEngine {
-
-	private static final Logger LOGGER = LoggerFactory
-			.getLogger(SpringGenerator.class);
-
-	public SpringGenerator() {
-		super();
-	}
-
-	public void createSpringFile(String daoPackageName,
-			String servicePackageName, List<Table> tables,
-			Map<String, Object> data, String srcBase, String packageName,
-			String targetFile, String templateFile) {
-		StringBuilder buf = new StringBuilder();
-		buf.append(srcBase).append(File.separator);
-		buf.append(packageName.replaceAll("\\.", File.separator
-				+ File.separator));// 单个的File.separator会导致无法通过正则表达式解析
-		buf.append(File.separator);
-		File dbDir = new File(buf.toString());
-		if (!dbDir.exists()) {
-			boolean flag = dbDir.mkdirs();
-			if (!flag) {
-				LOGGER.warn("递归创建文件夹{}失败", dbDir);
-				return;
-			}
-		}
-		buf.append(targetFile);
-		String outputFile = buf.toString();
-		File file = new File(outputFile);
-		if (file.exists()) {
-			Map<String, String> nsMap = new HashMap<String, String>();
-			nsMap.put("ns", "http://www.springframework.org/schema/beans");
-			try {
-				Document doc = XmlUtil.parse(file);
-				for (Table table : tables) {
-					String className = table.getClassName();
-					if (StringUtils.isNotBlank(className)) {
-						String className_firstLower = Character
-								.toLowerCase(className.charAt(0))
-								+ className.substring(1);
-						Object obj = XmlUtil.queryNodeValue(doc,
-								"//ns:beans/ns:bean[@id='"
-										+ className_firstLower + "Dao']",
-								XPathConstants.NODE, nsMap);
-						if (obj == null) {
-							// 创建dao
-							Element element = doc.createElement("bean");
-							element.setAttribute("id", className_firstLower
-									+ "Dao");
-							element.setAttribute("class",
-									"com.erayt.solar2.db.DaoProxyFactoryBean");
-							// 创建property元素
-							Element subElement = doc.createElement("property");
-							subElement.setAttribute("name", "daoInterface");
-							subElement.setAttribute("value", daoPackageName
-									+ "." + className + "Dao");
-							element.appendChild(subElement);
-
-							subElement = doc.createElement("property");
-							subElement.setAttribute("name", "sqlMapClient");
-							subElement.setAttribute("ref", "sqlMapClient");
-							element.appendChild(subElement);
-							doc.getDocumentElement().appendChild(element);
-
-						} else {
-							LOGGER.warn(targetFile + "中已经存在" + className
-									+ "的DAO配置");
-						}
-
-						obj = XmlUtil.queryNodeValue(doc,
-								"//ns:beans/ns:bean[@id='"
-										+ className_firstLower + "Service']",
-								XPathConstants.NODE, nsMap);
-						if (obj == null) {
-							// 创建service
-							Element element = doc.createElement("bean");
-							element.setAttribute("id", className_firstLower
-									+ "Service");
-							element.setAttribute("class", servicePackageName
-									+ ".impl." + className + "ServiceImpl");
-							doc.getDocumentElement().appendChild(element);
-						} else {
-							LOGGER.warn(targetFile + "中已经存在" + className
-									+ "的SERVICE配置");
-						}
-					}
-				}
-				// 将dom写入文件
-				XmlUtil.writeXmlFile(doc, outputFile);
-				return;
-			} catch (ParserConfigurationException e) {
-				LOGGER.warn("xml文件解析失败", e);
-			} catch (SAXException e) {
-				LOGGER.warn("xml文件解析失败", e);
-			} catch (IOException e) {
-				LOGGER.warn("xml文件解析失败", e);
-			} catch (XPathExpressionException e) {
-				LOGGER.warn("xpath表达式异常", e);
-			}
-		}
-		LOGGER.debug("根据输入内容[{},{},{}]得到文件名{}", new Object[] { templateFile,
-				srcBase, packageName, outputFile });
-		render(data, templateFile, outputFile);
-	}
-
-}

+ 0 - 82
codegen/src/main/java/com/yonge/crud/core/generator/module/SqlMapConfigGenerator.java

@@ -1,82 +0,0 @@
-package com.yonge.crud.core.generator.module;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpressionException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-import com.yonge.crud.core.FreemarkerTemplateEngine;
-import com.yonge.crud.core.db.model.Table;
-import com.yonge.crud.core.util.XmlUtil;
-
-public final class SqlMapConfigGenerator extends FreemarkerTemplateEngine {
-	private static final Logger LOGGER = LoggerFactory
-			.getLogger(SqlMapConfigGenerator.class);
-
-	public void createSqlMapConfigFile(String sqlmapPackageName,
-			List<Table> tables, Map<String, Object> data, String srcBase,
-			String packageName, String targetFile, String templateFile) {
-		StringBuilder buf = new StringBuilder();
-		buf.append(srcBase).append(File.separator);
-		buf.append(packageName.replaceAll("\\.", File.separator
-				+ File.separator));// 单个的File.separator会导致无法通过正则表达式解析
-		buf.append(File.separator);
-		File dbDir = new File(buf.toString());
-		if (!dbDir.exists()) {
-			boolean flag = dbDir.mkdirs();
-			if (!flag) {
-				LOGGER.warn("递归创建文件夹{}失败", dbDir);
-				return;
-			}
-		}
-		buf.append(targetFile);
-		String outputFile = buf.toString();
-		// 判断文件是否存在,如果存在,则在原来的基础上追加
-		File file = new File(outputFile);
-		if (file.exists()) {
-			try {
-				Document doc = XmlUtil.parse(file);
-				for (Table table : tables) {
-					String src = sqlmapPackageName.replace('.', '/')
-							+ "/SqlMap_" + table.getName() + ".xml";
-					Object obj = XmlUtil.queryNodeValue(doc,
-							"//sqlMapConfig/sqlMap[@resource='" + src + "']",
-							XPathConstants.NODE, null);
-					if (obj == null) {
-						// 创建一个新的节点
-						Element element = doc.createElement("sqlMap");
-						element.setAttribute("resource", src);
-						doc.getDocumentElement().appendChild(element);
-					} else {
-						LOGGER.warn(targetFile + "中已经存在" + table.getName()
-								+ "配置");
-					}
-				}
-				// 将dom写入文件
-				XmlUtil.writeXmlFile(doc, outputFile);
-				return;
-			} catch (ParserConfigurationException e) {
-				LOGGER.warn("xml文件解析失败", e);
-			} catch (SAXException e) {
-				LOGGER.warn("xml文件解析失败", e);
-			} catch (IOException e) {
-				LOGGER.warn("xml文件解析失败", e);
-			} catch (XPathExpressionException e) {
-				LOGGER.warn("xpath表达式异常", e);
-			}
-		}
-		LOGGER.debug("根据输入内容[{},{},{}]得到文件名{}", new Object[] { data,
-				templateFile, srcBase, outputFile });
-		render(data, templateFile, outputFile);
-	}
-}

+ 0 - 160
codegen/src/main/java/com/yonge/crud/core/util/JavaBeansUtil.java

@@ -1,160 +0,0 @@
-package com.yonge.crud.core.util;
-
-import java.sql.Types;
-import java.util.regex.Pattern;
-
-import com.yonge.crud.core.db.model.Column;
-
-public class JavaBeansUtil {
-
-	private static final Pattern allowedClassNames = Pattern
-			.compile("[a-zA-Z]+");
-
-	public static String fromJdbcToJava(Column column) {
-		String answer = null;
-		switch (column.getDataType()) {
-		case Types.ARRAY:
-		case Types.DATALINK:
-		case Types.DISTINCT:
-		case Types.JAVA_OBJECT:
-		case Types.NULL:
-		case Types.OTHER:
-		case Types.REF:
-		case Types.STRUCT:
-			answer = "Object";
-			break;
-
-		case Types.BIGINT:
-			answer = "Long";
-			break;
-
-		case Types.BINARY:
-		case Types.BLOB:
-		case Types.LONGVARBINARY:
-		case Types.VARBINARY:
-			answer = "byte[]"; //$NON-NLS-1$
-			break;
-
-		case Types.BIT:
-		case Types.BOOLEAN:
-			answer = "boolean";
-			break;
-		case Types.CHAR:
-		case Types.CLOB:
-		case Types.LONGVARCHAR:
-		case Types.VARCHAR:
-			answer = "String";
-			break;
-
-		case Types.DATE:
-		case Types.TIME:
-		case Types.TIMESTAMP:
-			answer = "java.util.Date";
-			break;
-
-		case Types.DECIMAL:
-			if (column.getScale() > 0 || column.getLength() > 18) {
-				answer = "java.math.BigDecimal";
-			} else if (column.getLength() > 9) {
-				answer = "long";
-			} else if (column.getLength() > 4) {
-				answer = "int";
-			} else {
-				answer = "short";
-			}
-			break;
-
-		case Types.DOUBLE:
-			answer = "double";
-			break;
-
-		case Types.FLOAT:
-		case Types.REAL:
-			answer = "float";
-			break;
-
-		case Types.INTEGER:
-		case Types.TINYINT:
-			answer = "Integer";
-			break;
-
-		case Types.NUMERIC:
-			if (column.getScale() > 0 || column.getLength() > 18) {
-				answer = "java.math.BigDecimal";
-			} else if (column.getLength() > 9) {
-				answer = "long";
-			} else if (column.getLength() > 4) {
-				answer = "int";
-			} else {
-				answer = "short";
-			}
-			break;
-
-		case Types.SMALLINT:
-			answer = "short";
-			break;
-
-
-		default:
-			answer = null;
-			break;
-		}
-
-		return answer;
-	}
-
-	public static String getClassName(String tableName) {
-		String className = tableName;
-		if (allowedClassNames.matcher(className).matches()) {
-			className = tableName;
-		} else {
-			for (String chunk : allowedClassNames.split(tableName)) {
-				className = className.replace(chunk, "");
-			}
-		}
-		if (Character.isLowerCase(className.charAt(0))) {
-			className = className.substring(0, 1).toUpperCase()
-					+ className.substring(1);
-		}
-		return className;
-	}
-
-	public static String getCamelCaseString(String inputString,
-			boolean firstCharacterUppercase) {
-		StringBuilder sb = new StringBuilder();
-
-		boolean nextUpperCase = false;
-		for (int i = 0; i < inputString.length(); i++) {
-			char c = inputString.charAt(i);
-
-			switch (c) {
-			case '_':
-			case '-':
-			case '@':
-			case '$':
-			case '#':
-			case ' ':
-				if (sb.length() > 0) {
-					nextUpperCase = true;
-				}
-				break;
-
-			default:
-				if (nextUpperCase) {
-					sb.append(Character.toUpperCase(c));
-					nextUpperCase = false;
-				} else {
-					sb.append(Character.toLowerCase(c));
-				}
-				break;
-			}
-		}
-
-		if (firstCharacterUppercase) {
-			sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
-		}
-
-		return sb.toString();
-	}
-
-}

+ 0 - 169
codegen/src/main/java/com/yonge/crud/core/util/XmlUtil.java

@@ -1,169 +0,0 @@
-package com.yonge.crud.core.util;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathExpression;
-import javax.xml.xpath.XPathExpressionException;
-import javax.xml.xpath.XPathFactory;
-
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-public class XmlUtil {
-
-	private static final Logger LOGGER = LoggerFactory.getLogger(XmlUtil.class);
-
-	private static final Map<ClassLoader, DocumentBuilderFactory> DOCUMENT_BUILDER_FACTORIES = Collections
-			.synchronizedMap(new WeakHashMap<ClassLoader, DocumentBuilderFactory>());
-
-	/**
-	 * 根据xpath表达式查询目标document中节点的值
-	 * 
-	 * @param doc
-	 *            目标对象
-	 * @param expression
-	 *            xpath表达式
-	 * @param returnType
-	 *            节点值的返回类型(eg:XPathConstants.STRING)
-	 * @param nsMap
-	 *            如果有默认的命名空间,需设置默认的命名空间
-	 * @return
-	 * @throws XPathExpressionException
-	 */
-	public static Object queryNodeValue(final Document doc, String expression,
-			QName returnType, final Map<String, String> nsMap)
-			throws XPathExpressionException {
-		XPathFactory factory = XPathFactory.newInstance();
-		XPath xpath = factory.newXPath();
-
-		xpath.setNamespaceContext(new NamespaceContext() {
-
-			@SuppressWarnings("rawtypes")
-			public Iterator getPrefixes(String namespaceURI) {
-				throw new UnsupportedOperationException();
-			}
-
-			public String getPrefix(String namespaceURI) {
-				throw new UnsupportedOperationException();
-			}
-
-			public String getNamespaceURI(String prefix) {
-				String xmlns = doc.lookupNamespaceURI(prefix);
-				if (StringUtils.isBlank(xmlns)) {
-					xmlns = nsMap.get(prefix);
-				}
-				return xmlns;
-			}
-		});
-
-		XPathExpression expr = xpath.compile(expression);
-
-		return expr.evaluate(doc, returnType);
-	}
-
-	/**
-	 * 将document对象写入filename文件
-	 * 
-	 * @param doc
-	 *            目标对象
-	 * @param filename
-	 *            输出文件名称
-	 */
-	public static void writeXmlFile(Document doc, String filename) {
-		try {
-			// Prepare the DOM document for writing
-			Source source = new DOMSource(doc);
-
-			// Prepare the output file
-			File file = new File(filename);
-			Result result = new StreamResult(file);
-
-			// Write the DOM document to the file
-			Transformer xformer = TransformerFactory.newInstance()
-					.newTransformer();
-			xformer.setOutputProperty(OutputKeys.INDENT, "yes");
-			xformer.transform(source, result);
-		} catch (TransformerException e) {
-			LOGGER.warn("document对象写入文件失败", e);
-		}
-	}
-
-	public static DocumentBuilder getParser()
-			throws ParserConfigurationException {
-		return getDocumentBuilderFactory().newDocumentBuilder();
-	}
-
-	public static Document parse(InputSource is)
-			throws ParserConfigurationException, SAXException, IOException {
-		return getParser().parse(is);
-	}
-
-	public static Document parse(File is) throws ParserConfigurationException,
-			SAXException, IOException {
-		return getParser().parse(is);
-	}
-
-	public static Document parse(InputStream in)
-			throws ParserConfigurationException, SAXException, IOException {
-		if (in == null) {
-			LOGGER.warn("XMLUtils trying to parse a null inputstream");
-		}
-		return getParser().parse(in);
-	}
-
-	public static Document parse(String in)
-			throws ParserConfigurationException, SAXException, IOException {
-		return parse(in.getBytes());
-	}
-
-	public static Document parse(byte[] in)
-			throws ParserConfigurationException, SAXException, IOException {
-		if (in == null) {
-			LOGGER.warn("XMLUtils trying to parse a null bytes");
-			return null;
-		}
-		return getParser().parse(new ByteArrayInputStream(in));
-	}
-
-	private static DocumentBuilderFactory getDocumentBuilderFactory() {
-		ClassLoader loader = Thread.currentThread().getContextClassLoader();
-		if (loader == null) {
-			loader = XmlUtil.class.getClassLoader();
-		}
-		if (loader == null) {
-			return DocumentBuilderFactory.newInstance();
-		}
-		DocumentBuilderFactory factory = DOCUMENT_BUILDER_FACTORIES.get(loader);
-		if (factory == null) {
-			factory = DocumentBuilderFactory.newInstance();
-			factory.setNamespaceAware(true);
-			DOCUMENT_BUILDER_FACTORIES.put(loader, factory);
-		}
-		return factory;
-	}
-}

+ 0 - 17
codegen/src/main/resources/generateConfigration.xml

@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<GenerateConfiguration>
-	<dbConfiguration>
-		<driverClass>com.mysql.jdbc.Driver</driverClass>
-		<url>jdbc:mysql://47.114.176.40:3306/mec_test</url>
-		<username>mec_dev</username>
-		<password>dayaDataOnline@2019</password>
-		<catalog>mec_test</catalog>
-		<schema>mec_test</schema>
-	</dbConfiguration>
-	<srcBase>D:/usr/javabean</srcBase>
-	<pojoPackageName>com.ym.mec.biz.dal.entity</pojoPackageName>
-	<daoPackageName>com.ym.mec.biz.dal.dao</daoPackageName>
-	<servicePackageName>com.ym.mec.biz.service</servicePackageName>
-	<sqlmapPackageName>resources</sqlmapPackageName>
-	<sqlmapConfigPackageName>resources/config</sqlmapConfigPackageName>
-</GenerateConfiguration>

+ 0 - 10
codegen/src/main/resources/template/dao.ftl

@@ -1,10 +0,0 @@
-[#ftl]
-package ${daoPackageName};
-
-import com.ym.mec.common.dal.BaseDAO;
-import ${pojoFullClassName};
-
-public interface ${className}Dao [#if paramType??]extends BaseDAO<${paramType}, ${className}>[/#if] {
-
-	
-}

+ 0 - 44
codegen/src/main/resources/template/pojo.ftl

@@ -1,44 +0,0 @@
-[#ftl]
-package ${table.packageName};
-
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
-/**
- * 对应数据库表(${table.name}):${table.remarks}
- */
-public class ${table.className} {
-
-	[#list props as prop]
-	[#if prop.remarks??]
-	/** ${prop.remarks} */
-	[/#if]
-	private ${prop.javaTypeName} ${prop.propertyName};
-	
-	[/#list]
-	[#list props as prop]
-		[#if prop.javaTypeName == 'boolean']
-	public void set${prop.propertyName?cap_first}(${prop.javaTypeName} ${prop.propertyName}){
-		this.${prop.propertyName} = ${prop.propertyName};
-	}
-	
-	public boolean is${prop.propertyName?cap_first}(){
-		return this.${prop.propertyName};
-	}
-			
-		[#else]
-	public void set${prop.propertyName?cap_first}(${prop.javaTypeName} ${prop.propertyName}){
-		this.${prop.propertyName} = ${prop.propertyName};
-	}
-	
-	public ${prop.javaTypeName} get${prop.propertyName?cap_first}(){
-		return this.${prop.propertyName};
-	}
-			
-		[/#if]
-	[/#list]
-	@Override
-	public String toString() {
-		return ToStringBuilder.reflectionToString(this);
-	}
-
-}

+ 0 - 9
codegen/src/main/resources/template/service.ftl

@@ -1,9 +0,0 @@
-[#ftl]
-package ${servicePackageName};
-
-import ${pojoFullClassName};
-import com.ym.mec.common.service.BaseService;
-
-public interface ${className}Service extends BaseService<${paramType}, ${className}> {
-
-}

+ 0 - 22
codegen/src/main/resources/template/service_impl.ftl

@@ -1,22 +0,0 @@
-[#ftl]
-package ${servicePackageName}.impl;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import com.ym.mec.common.service.impl.BaseServiceImpl;
-import ${pojoFullClassName};
-import ${servicePackageName}.${className}Service;
-import ${daoPackageName}.${className}Dao;
-
-@Service
-public class ${className}ServiceImpl extends BaseServiceImpl<${paramType}, ${className}>  implements ${className}Service {
-	
-	[#assign daoName = className + 'Dao']
-	@Autowired
-	private ${daoName} ${daoName?uncap_first};
-
-	@Override
-	public BaseDAO<${paramType}, ${className}> getDAO() {
-		return ${daoName?uncap_first};
-	}
-	
-}

+ 0 - 36
codegen/src/main/resources/template/spring.ftl

@@ -1,36 +0,0 @@
-[#ftl]
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-This file is auto generated by Ant & FreeMarker.
-DO NOT MODIFY IT.All modified content will be lost when next auto generate.
-这个文件是用ANT和FreeMarker自动生成的。
-不要修改此文件。所有改动将在下次重新自动生成时丢失。
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
-	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
-	xmlns:context="http://www.springframework.org/schema/context"
-	xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
-	default-autowire="byName">
-
-	[#-- 
-	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
-		<property name="configLocation" value="${sqlmapConfigPackageName}/SqlMap_Config.xml" />
-		<property name="dataSource" ref ="${r"${dataSource}"}" />
-	</bean>
-	--]
-	
-	
-	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
-		<property name="dataSource" ref="dataSource" />
-		<property name="configLocation" value="classpath:SqlMapConfig.xml" />
-	</bean>
-	
-	[#list tables as table]
-	<bean id="${table.className?uncap_first}Dao" class="org.mybatis.spring.mapper.MapperFactoryBean">
-		<property name="mapperInterface" value="${daoPackageName}.${table.className}Dao" />
-		<property name="sqlSessionFactory" ref="sqlSessionFactory" />
-	</bean>
-	
-	[/#list]
-</beans>

+ 0 - 64
codegen/src/main/resources/template/sqlmap.ftl

@@ -1,64 +0,0 @@
-[#ftl]
-<?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="${namespace}">
-	
-	<resultMap type="${fullClassName}" id="${alias}">
-	[#list columns as col]
-		<result column="${col.fieldName}" property="${col.propertyName}" />
-	[/#list]
-	</resultMap>
-	
-	[#if querySingleSQL??]
-	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="${alias}" [#if paramType??]parameterType="${paramType}"[/#if]>
-		${querySingleSQL}
-	</select>
-	[/#if]
-	
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="${alias}">
-		${queryFullSQL}
-	</select>
-	
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="${fullClassName}" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
-		</selectKey>
-		-->
-		${insertSQL}
-	</insert>
-	
-	[#if updateSQL??]
-	<!-- 根据主键查询一条记录 -->
-	<update id="update" parameterType="${fullClassName}">
-		${updateSQL}
-	</update>
-	[/#if]
-	
-	[#if deleteSQL??]
-	<!-- 根据主键删除一条记录 -->
-	<delete id="delete" [#if paramType??]parameterType="${paramType}"[/#if]>
-		${deleteSQL}
-	</delete>
-	[/#if]
-	
-	[#if queryPage??]
-	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="${alias}" parameterType="map">
-		${queryPage}
-	</select>
-	[/#if]
-	
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM ${tableName}
-	</select>
-</mapper>
- 

+ 0 - 11
codegen/src/main/resources/template/sqlmapConfig.ftl

@@ -1,11 +0,0 @@
-[#ftl]
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"  
-	"http://mybatis.org/dtd/mybatis-3-config.dtd">
-<configuration>
-	<mappers>
-	[#list tables as table]
-		<mapper resource="${sqlmapPackageName?replace(".","/")}/SqlMap_${table.name}.xml" />
-	[/#list]
-	</mappers>
-</configuration>

+ 2 - 0
mec-application/src/main/java/com/ym/mec/AppServerApplication.java

@@ -1,5 +1,6 @@
 package com.ym.mec;
 
+import com.spring4all.swagger.EnableSwagger2Doc;
 import com.ym.mec.config.AppBeanNameGenerator;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -15,6 +16,7 @@ import org.springframework.context.annotation.Configuration;
 @ComponentScan(basePackages = {"com.ym.mec", "org.snaker.engine", "com.yonge.log", "com.mec.redisson"})
 @MapperScan(basePackages = {"com.ym.mec.biz.**.dao", "com.yonge.datasource.dao", "com.ym.mec.biz.dal.mapper"})
 @Configuration
+@EnableSwagger2Doc
 public class AppServerApplication {
     public static void main(String[] args) {
         new SpringApplicationBuilder(AppServerApplication.class)

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

@@ -32,7 +32,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                 .authorizeRequests()
                 .antMatchers("/api-web/task/**")
                 .hasIpAddress("0.0.0.0/0")
-                .antMatchers(
+                .antMatchers("/v2/api-docs",
                 //common
                         "/*/v2/api-docs", "/*/code/*",
 

+ 1 - 1
mec-application/src/main/java/com/ym/mec/student/controller/ActivityController.java

@@ -82,7 +82,7 @@ public class ActivityController extends BaseController {
         SysUser user = sysUserService.getUser();
         Integer organId = user.getOrganId();
 
-        List<SporadicChargeInfo> activeInfos = sporadicChargeInfoService.getOrganActiveInfo(organId, 12);
+        List<SporadicChargeInfo> activeInfos = sporadicChargeInfoService.getOrganActiveInfo(organId.toString(), 12);
         activeInfos.sort(Comparator.comparing(SporadicChargeInfo::getAmount).reversed());
         if (activeInfos.size() <= 0) {
             return failed("分部活动不存在");

+ 1 - 1
mec-application/src/main/java/com/ym/mec/student/controller/ChildrenDayDegreeDetailController.java

@@ -33,7 +33,7 @@ public class ChildrenDayDegreeDetailController extends BaseController {
     @Autowired
     private StudentDao studentDao;
 
-    @ApiOperation(value = "获取用户已报名的详情,类型 1-专业考级 2-乐理考级 3-vip1v1,4-vip1v2 5-乐理课")
+    @ApiOperation(value = "获取用户已报名的详情,类型 1-专业考级 2-小组考级 3-vip1v1,4-vip1v2 5-小组课")
     @GetMapping("/getUserDegreeInfo")
     public HttpResponseResult<ChildrenDayDetailDto> getFeeInfo() {
         SysUser user = sysUserFeignService.queryUserInfo();

+ 17 - 2
mec-application/src/main/java/com/ym/mec/student/controller/ImGroupController.java

@@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
@@ -14,13 +15,17 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
+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.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
 
 @RequestMapping("${app-config.url.student:}/imGroup")
 @Api(tags = "IM群服务")
@@ -54,7 +59,12 @@ public class ImGroupController extends BaseController {
 		if (imGroupId.contains("S") || imGroupId.contains("I")){
 			imGroupId = imGroupId.substring(1);
 		}
-		return succeed(imGroupService.get(imGroupId));
+		ImGroup imGroup = imGroupService.get(imGroupId);
+		// 设置默认头像
+		if (Objects.nonNull(imGroup.getGroupType()) && StringUtils.isBlank(imGroup.getImg())) {
+			imGroup.setImg(imGroup.getGroupType().getAvatar());
+		}
+		return succeed(imGroup);
 	}
 
 	@ApiOperation("查询群详情(重构版)")
@@ -91,7 +101,12 @@ public class ImGroupController extends BaseController {
 			dto = new ImUserFriendDto();
 			SysUser user = sysUserService.queryUserById(userId);
 			dto.setFriend(user);
-			if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
+
+			List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
+			if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
+				// 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
+				dto.setFriendNickname(Optional.ofNullable(user.getRealName()).filter(StringUtils::isNotBlank).orElse(user.getUsername()));
+			} else if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
 				dto.setFriendNickname(user.getUsername());
 			} else {
 				dto.setFriendNickname(user.getRealName());

+ 43 - 0
mec-application/src/main/java/com/ym/mec/student/controller/ImHistoryMessageController.java

@@ -0,0 +1,43 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.service.ImGroupService;
+import com.ym.mec.biz.service.UploadFileService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.yonge.log.service.HistoryMessageService;
+import com.yonge.log.service.HistoryMessageTenantService;
+import com.yonge.log.wrapper.HistoryMessageTencentWrapper;
+import com.yonge.mongodb.PageInfo;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+@RequestMapping("${app-config.url.student:}/imHistoryMessage")
+@Slf4j
+@RestController
+public class ImHistoryMessageController extends BaseController {
+
+	@Autowired
+	private HistoryMessageService historyMessageService;
+	@Autowired
+	private UploadFileService uploadFileService;
+
+	@Autowired
+	private ImGroupService imGroupService;
+
+    @Autowired
+    private HistoryMessageTenantService historyMessageTenantService;
+
+    @ApiOperation("历史聊天记录查询")
+    @PostMapping(value = "/historyMessage")
+    public HttpResponseResult<PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent>> historyMessage(@RequestBody  HistoryMessageTencentWrapper.HistoryMessageTencentQuery query) throws Exception {
+
+        return succeedData(historyMessageTenantService.historyMessage(query));
+    }
+
+
+}

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

@@ -62,6 +62,7 @@ public class SporadicChargeInfoController extends BaseController {
                 return failed("用户不存在");
             }
             sporadicPayDto.setUserId(sysUser.getId());
+            sporadicPayDto.setOrganId(sysUser.getOrganId());
         }
         if (sporadicPayDto.getRepeatPay() == false) {
         	List<StudentPaymentOrder> studentPaymentOrderList = studentPaymentOrderDao.findPaymentOrderByGroupType(sporadicPayDto.getUserId(), sporadicPayDto.getSporadicId(), "SPORADIC", DealStatusEnum.ING);
@@ -76,7 +77,9 @@ public class SporadicChargeInfoController extends BaseController {
             }
         }
         SporadicChargeInfo info = sporadicChargeInfoService.get(sporadicPayDto.getSporadicId());
-
+        if(sporadicPayDto.getOrganId() == null){
+            sporadicPayDto.setOrganId(Integer.parseInt(info.getOrganId()));
+        }
         if (info.getMaxAmount() != null) {
             String msg = "";
             for (int i = 1; i <= 100; i++) {
@@ -124,7 +127,7 @@ public class SporadicChargeInfoController extends BaseController {
         if (type == null || type <= 0) {
             return failed("参数不合法");
         }
-        SporadicChargeInfo chargeInfo = sporadicChargeInfoService.findByOrganIdAndType(organId, type);
+        SporadicChargeInfo chargeInfo = sporadicChargeInfoService.findByOrganIdAndType(organId.toString(), type);
         if (chargeInfo == null) {
             return failed("分部活动不存在");
         }

+ 1 - 1
mec-application/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -172,7 +172,7 @@ public class StudentManageController extends BaseController {
             // 设置用户Token
             student.setImToken(register.getImToken());
             // 设置用户IM用户ID
-//            student.setImUserId(register.getImUserId());
+            student.setImUserId(register.getImUserId());
         } catch (Exception e) {
             LOGGER.error("注册IM用户Token失败", e);
         }

+ 15 - 2
mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java

@@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
 import com.ym.mec.biz.service.ImGroupNoticeService;
 import com.ym.mec.biz.service.ImGroupService;
@@ -25,6 +26,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 @RequestMapping("${app-config.url.teacher:}/imGroup")
@@ -66,7 +69,12 @@ public class ImGroupController extends BaseController {
 		if (imGroupId.contains("S") || imGroupId.contains("I")){
 			imGroupId = imGroupId.substring(1);
 		}
-		return succeed(imGroupService.get(imGroupId));
+		ImGroup imGroup = imGroupService.get(imGroupId);
+		// 设置默认头像
+		if (Objects.nonNull(imGroup.getGroupType()) && StringUtils.isBlank(imGroup.getImg())) {
+			imGroup.setImg(imGroup.getGroupType().getAvatar());
+		}
+		return succeed(imGroup);
 	}
 
 	@ApiOperation("查询群详情(重构版)")
@@ -114,7 +122,12 @@ public class ImGroupController extends BaseController {
 			dto = new ImUserFriendDto();
 			SysUser user = userLoginService.queryUserById(userId);
 			dto.setFriend(user);
-            if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
+
+			List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
+			if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
+				// 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
+				dto.setFriendNickname(Optional.ofNullable(user.getRealName()).filter(StringUtils::isNotBlank).orElse(user.getUsername()));
+			} else if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
 				dto.setFriendNickname(user.getUsername());
 			} else {
 				dto.setFriendNickname(user.getRealName());

+ 47 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/ImHistoryMessageController.java

@@ -0,0 +1,47 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.biz.service.ImGroupService;
+import com.ym.mec.biz.service.UploadFileService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.entity.UploadReturnBean;
+import com.yonge.log.dal.model.HistoryMessage;
+import com.yonge.log.service.HistoryMessageService;
+import com.yonge.log.service.HistoryMessageTenantService;
+import com.yonge.log.wrapper.HistoryMessageTencentWrapper;
+import com.yonge.mongodb.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.File;
+import java.util.List;
+
+@RequestMapping("${app-config.url.teacher:}/imHistoryMessage")
+@Slf4j
+@RestController
+public class ImHistoryMessageController extends BaseController {
+
+	@Autowired
+	private HistoryMessageService historyMessageService;
+	@Autowired
+	private UploadFileService uploadFileService;
+
+	@Autowired
+	private ImGroupService imGroupService;
+
+    @Autowired
+    private HistoryMessageTenantService historyMessageTenantService;
+
+    @ApiOperation("历史聊天记录查询")
+    @PostMapping(value = "/historyMessage")
+    public HttpResponseResult<PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent>> historyMessage(@RequestBody  HistoryMessageTencentWrapper.HistoryMessageTencentQuery query) throws Exception {
+
+        return succeedData(historyMessageTenantService.historyMessage(query));
+    }
+
+
+}

+ 1 - 1
mec-application/src/main/java/com/ym/mec/teacher/controller/VipGroupCategoryController.java

@@ -52,7 +52,7 @@ public class VipGroupCategoryController extends BaseController {
 	@ApiOperation("全查询")
 	@ApiImplicitParams({
 			@ApiImplicitParam(name = "organId", value = "分部id", dataType = "int", paramType = "query"),
-			@ApiImplicitParam(name = "includeMusicTheory", value = "是否包含乐理", dataType = "int", paramType = "query", defaultValue = "0"),
+			@ApiImplicitParam(name = "includeMusicTheory", value = "是否包含小组", dataType = "int", paramType = "query", defaultValue = "0"),
 			@ApiImplicitParam(name = "groupType", value = "课类别", dataType = "String", paramType = "query", defaultValue = "VIP")
 	})
 	@GetMapping(value = "/queryAll")

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

@@ -266,7 +266,7 @@ public class ExportController extends BaseController {
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "合作单位", "乐团", "学员编号", "学员姓名", "手机号", "声部", "所在班级", "是否预约", "器乐等级", "乐理等级", "是否购买VIP", "是否购买乐理课"}, new String[]{
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "合作单位", "乐团", "学员编号", "学员姓名", "手机号", "声部", "所在班级", "是否预约", "器乐等级", "小组等级", "是否购买VIP", "是否购买小组课"}, new String[]{
                     "organName", "cooperationOrganName", "musicGroupName", "userId", "username", "phone", "subjectName",
                     "currentClass", "isReserve == true ?'是':'否'", "gradeLeave"
                     , "theoryLevel", "buyVipFlag == true ?'是':'否'", "buyTheoryCourseFlag == true ?'是':'否'"}, rows);
@@ -340,7 +340,7 @@ public class ExportController extends BaseController {
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "总成交金额", "总购买人数", "人均购买金额",
                     "20节1v1成交金额", "20节1v1成交人数", "40节1v1成交金额", "40节1v1成交人数", "20节1v2成交金额", "20节1v2成交人数",
-                    "40节1v2成交金额", "40节1v2成交人数", "乐理课成交金额", "乐理课成交人数", "赠送会员人数"}, new String[]{
+                    "40节1v2成交金额", "40节1v2成交人数", "小组课成交金额", "小组课成交人数", "赠送会员人数"}, new String[]{
                     "organName", "totalBuyAmount", "totalBuyNum", "avgBuyAmount", "vip1V120Amount", "vip1V120Num", "vip1V140Amount",
                     "vip1V140Num", "vip1V220Amount", "vip1V220Num", "vip1V240Amount"
                     , "vip1V240Num", "musicTheoryAmount", "musicTheoryNum", "giveMemberNum"}, rows);
@@ -1037,7 +1037,7 @@ public class ExportController extends BaseController {
     public void queryPage(SporadicChargeInfoQueryInfo queryInfo, HttpServletResponse response) throws IOException {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
-        queryInfo.setIsExport(true);
+        queryInfo.setExport(true);
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         List<SporadicChargeInfo> rows = sporadicChargeInfoService.queryDetailPage(queryInfo).getRows();
 //        for (SporadicChargeInfo row : rows) {
@@ -1363,7 +1363,7 @@ public class ExportController extends BaseController {
             }
 
             String[] header = {"分部", "上课日期", "学生编号", "课程编号", "学员是否到课", "课程班名称", "老师", "教材内容", "发音", "节奏",
-                    "乐理", "曲目", "评价备注", "回访日期(布置训练)", "完成app双向沟通", "学员评分", "是否布置训练", "是否提交训练", "是否回复训练", "教务老师", "教务评价"};
+                    "小组", "曲目", "评价备注", "回访日期(布置训练)", "完成app双向沟通", "学员评分", "是否布置训练", "是否提交训练", "是否回复训练", "教务老师", "教务评价"};
             String[] body = {"organName", "classDateStr", "studentId", "id", "attendanceStr", "courseName",
                     "teacherName", "teachingMaterial", "pronunciationStr", "tempoStr", "musicTheoryStr", "song",
                     "memo", "createTimeStr", "hasLiaison", "studentReview", "assignHomeworkStr", "handHomeworkStr", "homeWorkReplied", "eduTeacherName", "courseReview"};
@@ -1727,7 +1727,7 @@ public class ExportController extends BaseController {
                 }
             }
 
-            String[] header = {"分部", "上课日期", "课程编号", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理",
+            String[] header = {"分部", "上课日期", "课程编号", "课程班名称", "老师", "教材内容", "发音", "节奏", "小组",
                     "曲目", "评价备注", "回访日期(布置训练)", "是否布置训练", "是否提交训练", "教务老师", "教务评价"};
             String[] body = {"organName", "classDateStr", "id", "courseName", "teacherName", "teachingMaterial",
                     "pronunciationStr", "tempoStr", "musicTheoryStr", "song", "memo", "createTimeStr", "assignHomeworkStr",
@@ -1778,7 +1778,7 @@ public class ExportController extends BaseController {
         for (DegreeRegistration row : pageList.getRows()) {
 //            row.setActivityTag(map.get(row.getLevel()));
 //            if (row.getType() == DegreeTypeEnum.THEORY) {
-//                row.setSubject("乐理");
+//                row.setSubject("小组");
 //            }
             row.setGender("1".equals(row.getGender()) ? "男" : "女");
             row.setLevel(map.get(row.getLevel()));
@@ -1801,7 +1801,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             String[] header = {"姓名", "性别", "用户编号", "证件号码", "所属城市", "学校", "报考专业", "报考信息", "证书", "联系电话", "备注", "缴费状态", "订单编号", "交易流水号", "报名时间"};
-            String[] body = {"name", "gender", "userId", "idcard",  "organName", "com/ym/app/web/controller/school", "type.code =='GRADE'?'专业考级':'乐理考级'",
+            String[] body = {"name", "gender", "userId", "idcard",  "organName", "com/ym/app/web/controller/school", "type.code =='GRADE'?'专业考级':'小组考级'",
                     "type.code =='GRADE'?subjectName+'/'+level+'/'+money +'元':level+'/'+money +'元'",
                     "theoryCert", "mobile", "memo", "statusStr", "orderNo", "transNo", "createTime"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());

+ 13 - 2
mec-application/src/main/java/com/ym/mec/web/controller/ImGroupController.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
 import com.ym.mec.biz.dal.dto.NameDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
 import com.ym.mec.biz.dal.vo.ImGroupVo;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
@@ -29,6 +30,7 @@ import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
@@ -71,7 +73,12 @@ public class ImGroupController extends BaseController {
 		if (imGroupId.contains("S") || imGroupId.contains("I")){
 			imGroupId = imGroupId.substring(1);
 		}
-		return succeed(imGroupService.get(imGroupId));
+		ImGroup imGroup = imGroupService.get(imGroupId);
+		// 设置默认头像
+		if (Objects.nonNull(imGroup.getGroupType()) && StringUtils.isBlank(imGroup.getImg())) {
+			imGroup.setImg(imGroup.getGroupType().getAvatar());
+		}
+		return succeed(imGroup);
 	}
 
 	@ApiOperation("查询群详情(重构版)")
@@ -130,7 +137,11 @@ public class ImGroupController extends BaseController {
 			dto.setFriend(user);
 			//这里由原来的优先取老师的realName改成了优先取学员的username,
 			// 因为管理员在修改通讯录备注的时候,如果是多角色,优先改的是学员的username
-            if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
+			List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
+			if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
+				// 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
+				dto.setFriendNickname(Optional.ofNullable(user.getRealName()).filter(StringUtils::isNotBlank).orElse(user.getUsername()));
+			} else if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
 				dto.setFriendNickname(user.getUsername());
 			} else {
 				dto.setFriendNickname(user.getRealName());

+ 72 - 8
mec-application/src/main/java/com/ym/mec/web/controller/ImHistoryMessageController.java

@@ -1,26 +1,29 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.biz.dal.entity.ImGroup;
-import com.ym.mec.biz.dal.entity.ImHistoryMessage;
+import com.yonge.log.wrapper.HistoryMessageTencentWrapper;
 import com.ym.mec.biz.service.ImGroupService;
 import com.ym.mec.biz.service.UploadFileService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.UploadReturnBean;
 import com.yonge.log.dal.model.HistoryMessage;
+import com.yonge.log.dal.model.HistoryMessageTencent;
 import com.yonge.log.service.HistoryMessageService;
+import com.yonge.log.service.HistoryMessageTenantService;
+import com.yonge.mongodb.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-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 org.springframework.web.bind.annotation.*;
 
 import java.io.File;
 import java.util.List;
 
 @RequestMapping("${app-config.url.web:}/imHistoryMessage")
 @Api(tags = "系统操作日志")
+@Slf4j
 @RestController
 public class ImHistoryMessageController extends BaseController {
 
@@ -32,6 +35,9 @@ public class ImHistoryMessageController extends BaseController {
 	@Autowired
 	private ImGroupService imGroupService;
 
+    @Autowired
+    private HistoryMessageTenantService historyMessageTenantService;
+
 	@GetMapping("/save")
 	public Object saveImHistoryMessage(String fileDir) throws Exception {
 		File file = new File(fileDir);
@@ -45,19 +51,77 @@ public class ImHistoryMessageController extends BaseController {
 	@PostMapping(value = "/ImportIM")
 	public void ImportIM() throws Exception {
 		com.yonge.mongodb.PageInfo<HistoryMessage> info;
+//        historyMessageService.updateAllStatus(0);
 		//计算总数据量
 		int count = imGroupService.queryInfoCount();
 		//计算调用次数
 		int num = (int) Math.ceil(count / 100);
-		for (int i = 1; i <=num ; i++) {
+		for (int i = 0; i <=num ; i++) {
 			int size =100;
 			//获取融云消息
 			//List<ImGroup> list = imGroupService.lambdaQuery().last("limit "+(page-1)*size+","+size).list();
 			info = imGroupService.getRongYunInfo(1,size);
-			List<HistoryMessage> footer = info.getFooter();
+			List<HistoryMessage> footer = info.getRows();
+            if (CollectionUtils.isEmpty(footer)) {
+                break;
+            }
 			//IM导入
 			imGroupService.importInfo(footer);
 		}
 	}
 
+    @ApiOperation("融云im To 腾讯")
+    @PostMapping(value = "/imToTencent")
+    public void imToTencent() throws Exception {
+
+        // 删除旧数据
+        historyMessageTenantService.deleteOld();
+
+        com.yonge.mongodb.PageInfo<HistoryMessage> info;
+//        historyMessageService.updateAllStatus(0);
+        //计算总数据量
+        long count = historyMessageService.querySyncCount();
+        log.info("总数据量:"+count);
+        //计算调用次数
+        long num = (int) Math.ceil(count / 100);
+        for (long i = 0; i <=num ; i++) {
+            int size =100;
+            //获取融云消息
+            //List<ImGroup> list = imGroupService.lambdaQuery().last("limit "+(page-1)*size+","+size).list();
+            info = historyMessageService.getImToTencent(i,size);
+            List<HistoryMessage> footer = info.getRows();
+            if (CollectionUtils.isEmpty(footer)) {
+                break;
+            }
+            //IM转换
+            imGroupService.imToTencent(footer);
+            log.info("已转换:"+(i+1)*size);
+        }
+    }
+
+    @ApiOperation("初始化消息体")
+    @PostMapping(value = "/initMsgBodyJson")
+    public void initMsgBodyJson() throws Exception {
+        //计算总数据量
+        int count = historyMessageTenantService.initMsgBodyJsonCount();
+        log.info("总数据量:"+count);
+        //计算调用次数
+        int num = (int) Math.ceil(count / 100);
+        for (int i = 0; i <=num ; i++) {
+            int size =100;
+            //获取融云消息
+            //List<ImGroup> list = imGroupService.lambdaQuery().last("limit "+(page-1)*size+","+size).list();
+            historyMessageTenantService.initMsgBodyJson(1,size);
+            log.info("已转换:"+(i+1)*size);
+        }
+    }
+
+    @ApiOperation("历史聊天记录查询")
+    @PostMapping(value = "/historyMessage")
+    public HttpResponseResult<PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent>> historyMessage(@RequestBody  HistoryMessageTencentWrapper.HistoryMessageTencentQuery query) throws Exception {
+
+        return succeedData(imGroupService.historyMessage(query));
+    }
+
+
 }

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

@@ -68,7 +68,7 @@ public class SporadicChargeInfoController extends BaseController {
 			if(user.getOrganId() == null){
 				return failed("分部信息异常");
 			}
-			sporadicChargeInfo.setOrganId(user.getOrganId());
+			sporadicChargeInfo.setOrganId(user.getOrganId().toString());
 		}
 		if(sporadicChargeInfo.getChargeType().equals(SporadicChargeTypeEnum.LUCKY_BAG_ACTIVE)){
 			SporadicChargeInfo info = sporadicChargeInfoService.findByOrganIdAndType(sporadicChargeInfo.getOrganId(), sporadicChargeInfo.getChargeType().getCode());

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

@@ -113,7 +113,7 @@ public class StudentStatisticsController extends BaseController {
         if(Objects.equals(queryInfo.getGroupType(),"VIP")){
             name = "VIP课学员统计";
         }else if(Objects.equals(queryInfo.getGroupType(),"THEORY")){
-            name = "乐理课学员统计";
+            name = "小组课学员统计";
         }
         String fileName = new StringBuffer(name)
                 .append("-")

+ 9 - 2
mec-application/src/main/java/com/ym/mec/web/controller/education/ImController.java

@@ -7,6 +7,8 @@ import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.TeacherService;
 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.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -91,12 +93,17 @@ public class ImController extends BaseController {
     }
 
     @ApiOperation(value = "发送私聊消息")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "targetId", value = "接收人id", required = true, dataType = "String"),
+        @ApiImplicitParam(name = "content", value = "消息内容", required = true, dataType = "String"),
+        @ApiImplicitParam(name = "extra", value = "扩展字段", dataType = "String")
+    })
     @GetMapping("/sendPrivateMessage")
-    public Object sendPrivateMessage(String targetId,String content) {
+    public Object sendPrivateMessage(String targetId,String content, String extra) {
         if (StringUtils.isEmpty(targetId) || StringUtils.isEmpty(content)) {
             return failed("参数校验错误");
         }
-        sysMessageService.sendPrivateMessage(targetId,content);
+        sysMessageService.sendPrivateMessage(targetId,content, extra);
         return succeed();
     }
 }

+ 11 - 11
mec-application/src/main/resources/exportColumnMapper.ini

@@ -7,7 +7,7 @@ headColumns = ["分部", "乐团编号", "乐团名称","合作单位", "乐团
 fieldColumns = ["organName", "id", "name","cooperationOrganName", "status.msg", "courseViewType.msg","chargeTypeName","educationalTeacherName", "teamTeacherName", "groupMemberNum","payNum","createTime","updateTime","hasVerifyMusicalList?'已确认':'未确认'"]
 
 [21年暑期考级活动统计页面详情导出]
-headColumns = ["分部", "合作单位", "乐团","学员编号", "学员姓名", "手机号","声部","所在班级","指导老师", "是否预约", "器乐等级", "乐理等级", "是否购买VIP","是否购买乐理课"]
+headColumns = ["分部", "合作单位", "乐团","学员编号", "学员姓名", "手机号","声部","所在班级","指导老师", "是否预约", "器乐等级", "小组等级", "是否购买VIP","是否购买小组课"]
 fieldColumns = ["organName", "cooperationOrganName", "musicGroupName","userId", "username", "phone","subjectName","currentClass", "realName", "isReserve == true ?'是':'否'","gradeLeave","theoryLevel","buyVipFlag == true ?'是':'否'","buyTheoryCourseFlag == true ?'是':'否'"]
 
 [2021双十一学员购买详情]
@@ -15,7 +15,7 @@ headColumns = ["学员编号", "学员姓名","订单号", "交易金额","交
 fieldColumns = ["userId", "username", "orderNo","amount", "payTime", "createTime","type","giveMember==0?'否':'是'"]
 
 [分部2021双11活动统计导出]
-headColumns = ["分部", "总成交金额","总购买人数", "人均购买金额","20节1v1成交金额", "20节1v1成交人数", "40节1v1成交金额", "40节1v1成交人数", "20节1v2成交金额", "20节1v2成交人数","40节1v2成交金额", "40节1v2成交人数", "乐理课成交金额", "乐理课成交人数", "赠送会员人数"]
+headColumns = ["分部", "总成交金额","总购买人数", "人均购买金额","20节1v1成交金额", "20节1v1成交人数", "40节1v1成交金额", "40节1v1成交人数", "20节1v2成交金额", "20节1v2成交人数","40节1v2成交金额", "40节1v2成交人数", "小组课成交金额", "小组课成交人数", "赠送会员人数"]
 fieldColumns = ["organName", "totalBuyAmount", "totalBuyNum","avgBuyAmount", "vip1V120Amount", "vip1V120Num","vip1V140Amount", "vip1V140Num", "vip1V220Amount", "vip1V220Num","vip1V240Amount" ,"vip1V240Num","musicTheoryAmount","musicTheoryNum","giveMemberNum"]
 
 [学生个人账户余额导出]
@@ -115,15 +115,15 @@ headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订
 fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount","balancePaymentAmount","couponRemitFee", "transferFee", "platformFee", "payTime", "organName","memo"]
 
 [订单列表导出1]
-headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额", "课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它", "汇付手续费","平台手续费", "到账时间","关联乐团ID/VIP课ID","课程形态","类型","收费乐团编号","收费乐团","零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额", "课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它", "汇付手续费","平台手续费", "到账时间","关联乐团ID/VIP课ID","课程形态","类型","收费乐团编号","收费乐团","零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount","balancePaymentAmount","couponRemitFee","musicGroupCourseFee","courseSchoolBuyAmount", "vipCourseFee",  "liveCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee","leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee","retailGoodsFee","largeMusicalFee", "otherFee", "transferFee", "platformFee", "payTime", "musicGroupId","groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [订单列表导出2]
-headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额","课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它","平台手续费", "到账时间",    "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额","课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它","平台手续费", "到账时间",    "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount",  "couponRemitFee",     "musicGroupCourseFee","courseSchoolBuyAmount", "vipCourseFee",  "liveCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee",     "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee","retailGoodsFee","largeMusicalFee", "otherFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [订单列表汇总导出]
-headColumns = ["分部", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额","课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它"]
+headColumns = ["分部", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额","课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它"]
 fieldColumns = ["organName", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount",  "couponRemitFee","musicGroupCourseFee","courseSchoolBuyAmount", "vipCourseFee", "liveCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee","leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee","retailGoodsFee","largeMusicalFee", "otherFee"]
 
 [学员小课记录导出]
@@ -135,7 +135,7 @@ headColumns = ["学员编号", "学员姓名", "性别", "联系电话","入团
 fieldColumns = ["userId", "realName", "gender", "phone","registerTime", "currentGrade", "currentClass", "subjectName", "studentStatus", "paymentStatus.desc" ,"courseFee", "activeName", "hasCourse ? '是' : '否'" ,"carePackage == null || carePackage == 0 ? '不可用' : carePackage == 1 ? '可用' : '已使用'" ,"comeOnPackage == null || comeOnPackage == 0 ? '不可用' : comeOnPackage == 1 ? '可用' : '已使用'" ,"noPaymentAmount == null ? 0 : noPaymentAmount", "quitReason", "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '会员已过期'"]
 
 [评论列表导出]
-headColumns = ["分部", "上课日期", "学生编号", "课程编号", "学员是否到课", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理", "曲目", "评价备注", "回访日期(布置训练)", "完成app双向沟通", "学员评分", "是否布置训练", "是否提交训练", "是否回复训练", "教务老师", "教务评价"]
+headColumns = ["分部", "上课日期", "学生编号", "课程编号", "学员是否到课", "课程班名称", "老师", "教材内容", "发音", "节奏", "小组", "曲目", "评价备注", "回访日期(布置训练)", "完成app双向沟通", "学员评分", "是否布置训练", "是否提交训练", "是否回复训练", "教务老师", "教务评价"]
 fieldColumns = ["organName", "classDateStr", "studentId", "id", "attendanceStr", "courseName",  "teacherName", "teachingMaterial", "pronunciationStr", "tempoStr", "musicTheoryStr", "song",  "memo", "createTimeStr", "hasLiaison", "studentReview", "assignHomeworkStr", "handHomeworkStr", "homeWorkReplied", "eduTeacherName", "courseReview"]
 
 [网管课管理导出]
@@ -159,11 +159,11 @@ headColumns = ["分部", "课程组类型", "课程编号", "时间", "课程名
 fieldColumns = ["organName", "groupType.desc", "courseScheduleId", "startClassTime", "courseName", "teacherId", "teacherName",         "signInStatusStr", "signOutStatusStr", "actualReceipts", "salaryType", "actualSalary", "reduceSalary", "finalSalary",         "confirmStatus.desc", "memo", "deductionReason"]
 
 [vip评论列表导出]
-headColumns = ["分部", "上课日期", "课程编号", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理", "曲目", "评价备注", "回访日期(布置训练)", "是否布置训练", "是否提交训练", "教务老师", "教务评价"]
+headColumns = ["分部", "上课日期", "课程编号", "课程班名称", "老师", "教材内容", "发音", "节奏", "小组", "曲目", "评价备注", "回访日期(布置训练)", "是否布置训练", "是否提交训练", "教务老师", "教务评价"]
 fieldColumns = ["organName", "classDateStr", "id", "courseName", "teacherName", "teachingMaterial",  "pronunciationStr", "tempoStr", "musicTheoryStr", "song", "memo", "createTimeStr", "assignHomeworkStr",  "handHomeworkStr", "eduTeacherName", "courseReview"]
 
 [考级报名导出]
-headColumns = ["姓名", "性别", "身份证号", "城市", "学校", "报考乐器", "报考级别","乐理级别证书", "家长联系电话", "考级费用","备注", "缴费状态", "订单编号", "商户订单号", "报名时间"]
+headColumns = ["姓名", "性别", "身份证号", "城市", "学校", "报考乐器", "报考级别","小组级别证书", "家长联系电话", "考级费用","备注", "缴费状态", "订单编号", "商户订单号", "报名时间"]
 fieldColumns = ["name", "gender == 1?'男':'女'", "idcard", "city", "school", "subject", "level", "theoryCert", "mobile", "money","memo", "status == 2?'已缴费':'未缴费'", "orderNo", "transNo", "createTime"]
 
 [合作单位导出]
@@ -175,11 +175,11 @@ headColumns = ["序号", "业务分部",  "学生编号", "学生姓名", "交
 fieldColumns = ["id", "userOrganName", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee", "transferFee", "platformFee", "payTime", "organName", "memo"]
 
 [财务管理导出1]
-headColumns = ["序号", "业务分部",  "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课",  "直播课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "汇付手续费", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "业务分部",  "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "汇付手续费", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userOrganName", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee","musicGroupCourseFee", "vipCourseFee",  "liveCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "transferFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [财务管理导出2]
-headColumns = ["序号", "业务分部", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课",  "直播课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "业务分部", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userOrganName", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount" , "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee","musicGroupCourseFee", "vipCourseFee",  "liveCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [老师默认课酬导出]
@@ -274,7 +274,7 @@ fieldColumns = ["organName", "username", "userId", "teacherName", "teacherId", "
 headColumns = ["分部", "学员姓名", "学员编号", "指导老师", "指导老师编号", "教务老师", "教务老师编号", "声部课老师", "声部课老师编号", "总课次", "已进行课次", "剩余课次", "上次课时间", "近30天消耗课时", "是否活跃", "课程类型"]
 fieldColumns = ["organName", "username", "userId", "teacherName", "teacherId", "eduName", "eduId",  "subjectTeacherName",  "subjectTeacherId", "totalClassNum", "completedTimes", "remaindTimes", "lastCourseTime", "consumerTimes", "activeFlag", "courseType"]
 
-[乐理课学员课程信息导出]
+[小组课学员课程信息导出]
 headColumns = ["分部", "学员姓名", "学员编号", "指导老师", "指导老师编号", "教务老师", "教务老师编号", "总课次", "已进行课次", "剩余课次", "上次课时间", "年级"]
 fieldColumns = ["organName", "username", "userId", "teacherName", "teacherId", "eduName", "eduId", "totalClassNum", "startClassNum", "subClassNum", "beforeClassNum", "grade"]
 

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

@@ -49,7 +49,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    protected UserDetails retrieveUser(String username, Authentication authentication) throws AuthenticationException {
+    public UserDetails retrieveUser(String username, Authentication authentication) throws AuthenticationException {
         LoginEntity loginEntity = (LoginEntity) authentication.getCredentials();
         if (loginEntity == null) {
             throw new BadCredentialsException("Bad credentials");

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java

@@ -233,4 +233,8 @@ public interface EmployeeDao extends BaseDAO<Integer, Employee> {
     int countEmployeeBasicInfo(Map<String, Object> params);
 
     List<SysUserDto> queryEmployeeBasicInfo(Map<String, Object> params);
+
+    List<Employee> queryBaseInfoByPage(Map<String, Object> params);
+
+    int queryBaseInfoByCount(Map<String, Object> params);
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -435,7 +435,7 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
     //获取vip课订单数量
     List<IndexBaseMonthData> getStudentVipOrderNum(@Param("dayStr") String dayStr,@Param("tenantId") Integer tenantId);
 
-    //获取乐理课订单数量
+    //获取小组课订单数量
     List<IndexBaseMonthData> getStudentTheoryOrderNum(@Param("dayStr") String dayStr,@Param("tenantId") Integer tenantId);
 
     //获取网管课订单数量

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

@@ -12,7 +12,7 @@ import java.util.Map;
 public interface SporadicChargeInfoDao extends BaseDAO<Integer, SporadicChargeInfo> {
     SporadicChargeInfo findInfoById(@Param("id") Integer id);
 
-    SporadicChargeInfo findByOrganIdAndType(@Param("organId") Integer organId, @Param("chargeType") Integer chargeType);
+    SporadicChargeInfo findByOrganIdAndType(@Param("organId") String organId, @Param("chargeType") Integer chargeType);
 
     /**
      * 根据分部和类型获取活动信息
@@ -21,7 +21,7 @@ public interface SporadicChargeInfoDao extends BaseDAO<Integer, SporadicChargeIn
      * @param chargeType
      * @return
      */
-    List<SporadicChargeInfo> getOrganActiveInfo(@Param("organId") Integer organId, @Param("chargeType") Integer chargeType);
+    List<SporadicChargeInfo> getOrganActiveInfo(@Param("organId") String organId, @Param("chargeType") Integer chargeType);
 
     List<SporadicChargeInfo> findSporadicChargeInfos(Map<String, Object> params);
 

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -380,4 +380,9 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     int countMusicGroupStudents(Map<String, Object> paramMap);
 
     List<Student> listByIds(@Param("studentIds") List<Long> studentIds);
+    List<Student> queryBaseInfoByPage(Map<String, Object> params);
+
+    int queryBaseInfoCount(Map<String, Object> params);
+
+    List<SysUser> listUserByIds(@Param("userIds") List<Integer> userIds);
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -547,4 +547,8 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
     * @date 2023/5/8 11:59
     */
     List<BasicUserDto> queryUserByPhones(@Param("phones") List<String> phones);
+
+    List<Teacher> queryBaseInfoByPage(Map<String, Object> params);
+
+    int queryBaseInfoByCount(Map<String, Object> params);
 }

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

@@ -16,7 +16,7 @@ public class ActivityCourseDetailDto {
     @ApiModelProperty(value = "赠送vip", required = false)
     private Integer free_vip = 0;
 
-    @ApiModelProperty(value = "乐理课", required = false)
+    @ApiModelProperty(value = "小组课", required = false)
     private Integer music_theory = 0;
 
     private BigDecimal music_theory_price;

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

@@ -40,7 +40,7 @@ public class ActivityUserMapperSumDto {
     @ApiModelProperty(value = "1v7")
     private String seven;
 
-    @ApiModelProperty(value = "乐理")
+    @ApiModelProperty(value = "小组")
     private String theory;
 
     @ApiModelProperty(value = "网管")

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseReviewDto.java

@@ -92,7 +92,7 @@ public class CourseReviewDto {
     @ApiModelProperty(value = "节奏",required = false)
     private Integer tempo;
 
-    @ApiModelProperty(value = "乐理",required = false)
+    @ApiModelProperty(value = "小组",required = false)
     private Integer musicTheory;
 
     @ApiModelProperty(value = "曲目",required = false)
@@ -122,7 +122,7 @@ public class CourseReviewDto {
     @ApiModelProperty(value = "节奏Str",required = false)
     private String tempoStr;
 
-    @ApiModelProperty(value = "乐理Str",required = false)
+    @ApiModelProperty(value = "小组Str",required = false)
     private String musicTheoryStr;
 
     @ApiModelProperty(value = "作业是否回复",required = false)

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/DegreePayDto.java

@@ -19,7 +19,7 @@ public class DegreePayDto {
     @ApiModelProperty(value = "报考器乐等级必须购Vip课")
     private Boolean needVipCourse = false;
 
-    @ApiModelProperty(value = "乐理等级")
+    @ApiModelProperty(value = "小组等级")
     private Integer theoryLevel;
 
     @ApiModelProperty(value = "vip 1v1")
@@ -28,7 +28,7 @@ public class DegreePayDto {
     @ApiModelProperty(value = "vip 1v2")
     private Boolean vip1v2 = false;
 
-    @ApiModelProperty(value = "乐理课程")
+    @ApiModelProperty(value = "小组课程")
     private Boolean theoryCourse = false;
 
     @ApiModelProperty(value = "支付金额", required = true)

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

@@ -13,7 +13,7 @@ public class DoubleEleven2021ActivityDto {
     @ApiModelProperty(value = "总购买数",required = false)
     private int buyNum = 0;
 
-    @ApiModelProperty(value = "购买的活动类型1、1v1 20节,2、1v1 40节,3、1v2 20节,4、1v2 40节,5、乐理课",required = false)
+    @ApiModelProperty(value = "购买的活动类型1、1v1 20节,2、1v1 40节,3、1v2 20节,4、1v2 40节,5、小组课",required = false)
     private Integer type;
 
     private Integer organId;

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/DoubleEleven2021Dto.java

@@ -49,10 +49,10 @@ public class DoubleEleven2021Dto {
     @ApiModelProperty(value = "1v2 40节课购买人数",required = false)
     private Integer vip1V240Num = 0;
 
-    @ApiModelProperty(value = "乐理课购买金额",required = false)
+    @ApiModelProperty(value = "小组课购买金额",required = false)
     private BigDecimal musicTheoryAmount = BigDecimal.ZERO;
 
-    @ApiModelProperty(value = "乐理课购买人数",required = false)
+    @ApiModelProperty(value = "小组课购买人数",required = false)
     private Integer musicTheoryNum = 0;
 
     public Integer getOrganId() {

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupMemberDto.java

@@ -15,6 +15,9 @@ public class ImGroupMemberDto extends ImGroupMember {
     @ApiModelProperty(value = "群编号;")
     private String groupId;
 
+    @ApiModelProperty("群成员头象")
+    private String avatar;
+
     public String getType() {
         return type;
     }
@@ -43,5 +46,15 @@ public class ImGroupMemberDto extends ImGroupMember {
         return getImGroupId();
     }
 
+    public String getAvatar() {
+        return avatar;
+    }
 
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
 }

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupNoticeDto.java

@@ -4,6 +4,8 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.ImGroupNotice;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.Objects;
+
 public class ImGroupNoticeDto extends ImGroupNotice {
 
 	private SysUser user = new SysUser();
@@ -18,6 +20,9 @@ public class ImGroupNoticeDto extends ImGroupNotice {
 	@ApiModelProperty(value = "是否发送给新人")
 	private Boolean sentToNewMemberFlag;
 
+	@ApiModelProperty("用户名称")
+	private String username;
+
 	public SysUser getUser() {
 		return user;
 	}
@@ -38,4 +43,14 @@ public class ImGroupNoticeDto extends ImGroupNotice {
 		return isIsSentToNewMember();
 	}
 
+	public String getUsername() {
+		if (Objects.nonNull(getUser())) {
+			return getUser().getRealName();
+		}
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
 }

+ 4 - 23
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SporadicPayDto.java

@@ -1,7 +1,9 @@
 package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
+@Data
 public class SporadicPayDto extends PayParamBasicDto {
 
     @ApiModelProperty(value = "用户编号",required = false)
@@ -13,27 +15,6 @@ public class SporadicPayDto extends PayParamBasicDto {
     @ApiModelProperty(value = "购买数量",required = false)
     private Integer num = 1;
 
-    public Integer getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Integer userId) {
-        this.userId = userId;
-    }
-
-    public Integer getSporadicId() {
-        return sporadicId;
-    }
-
-    public void setSporadicId(Integer sporadicId) {
-        this.sporadicId = sporadicId;
-    }
-
-    public Integer getNum() {
-        return num;
-    }
-
-    public void setNum(Integer num) {
-        this.num = num;
-    }
+    @ApiModelProperty(value = "学员分部",required = false)
+    private Integer organId;
 }

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java

@@ -64,8 +64,8 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrderRouteDto {
     @ApiModelProperty(value = "网管课程费用",required = true)
     private BigDecimal practiceCourseFee = BigDecimal.ZERO;
 
-    //乐理课程费用
-    @ApiModelProperty(value = "乐理课程费用",required = true)
+    //小组课程费用
+    @ApiModelProperty(value = "小组课程费用",required = true)
     private BigDecimal theoryCourseFee = BigDecimal.ZERO;
 
     //考级费用

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleEvaluate.java

@@ -54,7 +54,7 @@ public class CourseScheduleEvaluate extends BaseEntity {
 
     private String month;
 
-    @ApiModelProperty(value = "乐理")
+    @ApiModelProperty(value = "小组")
     private String musicTheory;
 
     @ApiModelProperty(value = "乐曲")

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleReview.java

@@ -69,7 +69,7 @@ public class CourseScheduleReview extends BaseEntity {
     private Integer tempo;
 
     /**
-    * 乐理
+    * 小组
     */
     private Integer musicTheory;
 

+ 55 - 52
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java

@@ -1,70 +1,68 @@
 package com.ym.mec.biz.dal.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.ym.mec.common.entity.BaseEntity;
 import com.ym.mec.common.enums.BaseEnum;
-import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
-
 /**
  * 对应数据库表(im_group):
  */
 public class ImGroup extends BaseEntity {
 
 	/**  */
-    @TableId(value = "id_")
 	private String id;
 
-    @ApiModelProperty("学校ID")
-    @TableField(value = "school_id_")
     private Long schoolId;
 
 	/** 群名称 */
-    @TableField(value = "name_")
 	private String name;
-
+	
 	/** 群介绍 */
-    @TableField(value = "introduce_")
 	private String introduce;
-
+	
 	/** 群成员数 */
-    @TableField(value = "member_num_")
 	private Integer memberNum;
-
+	
 	/** 群备注 */
-    @TableField(value = "memo_")
 	private String memo;
-
+	
 	/** 群标签 */
-    @TableField(value = "tags_")
 	private String tags;
-
-    @TableField(value = "img_")
+	
 	private String img;
 
 	/** 乐团群 MUSIC,班级群 CLASS,训练营 TRAINING 学校SCHOOL*/
-    @TableField(value = "type_")
 	private String type;
 
 	private String importFlag;
 
 	public enum GroupTypeEnum implements BaseEnum<String,GroupTypeEnum> {
-		NORMAL("NORMAL", "普通班级"), MIX("MIX", "合奏班级"), HIGH("HIGH", "基础技能班"),
-		VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), PRACTICE("PRACTICE", "网管课"),
-		SNAP("SNAP","临时班级"), COMM("COMM", "对外课程"), HIGH_ONLINE("HIGH_ONLINE", "线上基础技能课"),
-		MUSIC_NETWORK("MUSIC_NETWORK","乐团网管课"),PARENT_MEETING("PARENT_MEETING","家长会"),
-		TRAINING("TRAINING","训练营"),REPERTOIRE_PLAY("REPERTOIRE_PLAY","曲目演奏课"), SCHOOL("SCHOOL","学校衔接群"),LIVE("LIVE","直播课");
+		NORMAL("NORMAL", "普通班级", "https://oss.dayaedu.com/default-images/mec/NORMAL.png"),
+		MIX("MIX", "合奏班级", "https://oss.dayaedu.com/default-images/mec/NORMAL.png"),
+		HIGH("HIGH", "基础技能班", "https://oss.dayaedu.com/default-images/mec/NORMAL.png"),
+		VIP("VIP", "vip课", "https://oss.dayaedu.com/default-images/mec/VIP.png"),
+		DEMO("DEMO", "试听课", "https://oss.dayaedu.com/default-images/mec/NORMAL.png"),
+		PRACTICE("PRACTICE", "网管课", "https://oss.dayaedu.com/default-images/mec/NORMAL.png"),
+		SNAP("SNAP","临时班级", "https://oss.dayaedu.com/default-images/mec/NORMAL.png"),
+		COMM("COMM", "对外课程", "https://oss.dayaedu.com/default-images/mec/NORMAL.png"),
+		HIGH_ONLINE("HIGH_ONLINE", "线上基础技能课", "https://oss.dayaedu.com/default-images/mec/NORMAL.png"),
+		MUSIC_NETWORK("MUSIC_NETWORK","乐团网管课", "https://oss.dayaedu.com/default-images/mec/MUSIC_NETWORK.png"),
+		PARENT_MEETING("PARENT_MEETING","家长会", "https://oss.dayaedu.com/default-images/mec/PARENT_MEETING.png"),
+		TRAINING("TRAINING","训练营", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		REPERTOIRE_PLAY("REPERTOIRE_PLAY","曲目演奏课", "https://oss.dayaedu.com/default-images/mec/REPERTOIRE_PLAY.png"),
+		SCHOOL("SCHOOL","学校衔接群", "https://oss.dayaedu.com/default-images/mec/SCHOOL.png"),
+		LIVE("LIVE","直播课", "https://oss.dayaedu.com/default-images/mec/LIVE.png");
 
 		private String code;
 
 		private String msg;
 
-		GroupTypeEnum(String code, String msg) {
+		private String avatar;
+
+		GroupTypeEnum(String code, String msg, String avatar) {
 			this.code = code;
 			this.msg = msg;
+			this.avatar = avatar;
 		}
 
 		public void setCode(String code) {
@@ -83,10 +81,17 @@ public class ImGroup extends BaseEntity {
 		public String getCode() {
 			return this.code;
 		}
+
+		public String getAvatar() {
+			return avatar;
+		}
+
+		public void setAvatar(String avatar) {
+			this.avatar = avatar;
+		}
 	}
 
 	//群类型
-    @TableField(value = "group_type_")
 	private GroupTypeEnum groupType;
 
 	public GroupTypeEnum getGroupType() {
@@ -98,69 +103,67 @@ public class ImGroup extends BaseEntity {
 	}
 
 	/**  */
-    @TableField(value = "create_time_")
 	private java.util.Date createTime;
-
+	
 	/**  */
-    @TableField(value = "update_time_")
 	private java.util.Date updateTime;
 
-	public Long getSchoolId() {
-		return schoolId;
-	}
+    public Long getSchoolId() {
+        return schoolId;
+    }
 
-	public void setSchoolId(Long schoolId) {
-		this.schoolId = schoolId;
-	}
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
 
-	public void setId(String id){
+    public void setId(String id){
 		this.id = id;
 	}
-
+	
 	public String getId(){
 		return this.id;
 	}
-
+			
 	public void setName(String name){
 		this.name = name;
 	}
-
+	
 	public String getName(){
 		return this.name;
 	}
-
+			
 	public void setIntroduce(String introduce){
 		this.introduce = introduce;
 	}
-
+	
 	public String getIntroduce(){
 		return this.introduce;
 	}
-
+			
 	public void setMemberNum(Integer memberNum){
 		this.memberNum = memberNum;
 	}
-
+	
 	public Integer getMemberNum(){
 		return this.memberNum;
 	}
-
+			
 	public void setMemo(String memo){
 		this.memo = memo;
 	}
-
+	
 	public String getMemo(){
 		return this.memo;
 	}
-
+			
 	public void setTags(String tags){
 		this.tags = tags;
 	}
-
+	
 	public String getTags(){
 		return this.tags;
 	}
-
+			
 	public String getImg() {
 		return img;
 	}
@@ -180,15 +183,15 @@ public class ImGroup extends BaseEntity {
 	public void setCreateTime(java.util.Date createTime){
 		this.createTime = createTime;
 	}
-
+	
 	public java.util.Date getCreateTime(){
 		return this.createTime;
 	}
-
+			
 	public void setUpdateTime(java.util.Date updateTime){
 		this.updateTime = updateTime;
 	}
-
+	
 	public java.util.Date getUpdateTime(){
 		return this.updateTime;
 	}

+ 134 - 29
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java

@@ -1,10 +1,5 @@
 package com.ym.mec.biz.dal.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import com.ym.mec.common.entity.BaseEntity;
@@ -12,64 +7,174 @@ import com.ym.mec.common.entity.BaseEntity;
 /**
  * 对应数据库表(im_group_member):
  */
-@Data
 public class ImGroupMember extends BaseEntity {
 
 	/**  */
-    @TableId(value = "id_", type = IdType.AUTO)
 	private Long id;
 	
 	/**  */
-    @TableField(value = "im_group_id_")
 	private String imGroupId;
 	
 	/**  */
-    @TableField(value = "user_id_")
 	private Integer userId;
-
-    @TableField(value = "nickname_")
+	
 	private String nickname;
 
 	/** 群昵称 */
-    @TableField(exist = false)
 	private String groupNickname;
 	
 	/** 是否是管理员 */
-    @ApiModelProperty("是否是管理员")
-    @TableField(value = "is_admin_")
-	private Boolean isAdmin;
+	private boolean isAdmin;
 	
 	/** 群角色 */
-    @TableField(value = "role_type_")
 	private String roleType;
 
 
     /** 群角色 */
-    @TableField(value = "type_")
     private String type;
 
-    @TableField(exist = false)
 	private Integer memberRankSettingId;
 
-    @TableField(exist = false)
 	private String subjectName;
 
-    @TableField(exist = false)
 	private String subjectId;
 
-    /**
-     * 头像
-     */
-    @TableField(exist = false)
-    private String avatar;
-
-    /**  */
-    @TableField(value = "create_time_")
+	private String avatar;
+	
+	/**  */
 	private java.util.Date createTime;
 	
 	/**  */
-    @TableField(value = "update_time_")
 	private java.util.Date updateTime;
 
+	private Integer tenantId;
+
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+	public String getSubjectId() {
+		return subjectId;
+	}
+
+	public void setSubjectId(String subjectId) {
+		this.subjectId = subjectId;
+	}
+
+	public Integer getMemberRankSettingId() {
+		return memberRankSettingId;
+	}
+
+	public void setMemberRankSettingId(Integer memberRankSettingId) {
+		this.memberRankSettingId = memberRankSettingId;
+	}
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setImGroupId(String imGroupId){
+		this.imGroupId = imGroupId;
+	}
+	
+	public String getImGroupId(){
+		return this.imGroupId;
+	}
+			
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+	
+	public Integer getUserId(){
+		return this.userId;
+	}
+			
+	public String getNickname() {
+		return nickname;
+	}
+
+	public void setNickname(String nickname) {
+		this.nickname = nickname;
+	}
+
+	public void setIsAdmin(boolean isAdmin){
+		this.isAdmin = isAdmin;
+	}
+	
+	public boolean getIsAdmin(){
+		return this.isAdmin;
+	}
+
+	public String getRoleType() {
+		return roleType;
+	}
+
+	public void setRoleType(String roleType) {
+		this.roleType = roleType;
+	}
+
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+
+	public String getGroupNickname() {
+		return groupNickname;
+	}
+
+	public void setGroupNickname(String groupNickname) {
+		this.groupNickname = groupNickname;
+	}
+
+	public String getAvatar() {
+		return avatar;
+	}
+
+	public void setAvatar(String avatar) {
+		this.avatar = avatar;
+	}
+
+	@Override
+	public Integer getTenantId() {
+		return tenantId;
+	}
+
+	@Override
+	public void setTenantId(Integer tenantId) {
+		this.tenantId = tenantId;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
 
 }

+ 96 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMemberPlus.java

@@ -0,0 +1,96 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 对应数据库表(im_group_member):
+ */
+@Data
+@TableName("im_group_member")
+public class ImGroupMemberPlus implements Serializable {
+
+    /**
+     *
+     */
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     *
+     */
+    @TableField(value = "im_group_id_")
+    private String imGroupId;
+
+    /**
+     *
+     */
+    @TableField(value = "user_id_")
+    private Integer userId;
+
+    @TableField(value = "nickname_")
+    private String nickname;
+
+    /**
+     * 群昵称
+     */
+    @TableField(exist = false)
+    private String groupNickname;
+
+    /**
+     * 是否是管理员
+     */
+    @ApiModelProperty("是否是管理员")
+    @TableField(value = "is_admin_")
+    private Boolean isAdmin;
+
+    /**
+     * 群角色
+     */
+    @TableField(value = "role_type_")
+    private String roleType;
+
+
+    /**
+     * 群角色
+     */
+    @TableField(value = "type_")
+    private String type;
+
+    @TableField(exist = false)
+    private Integer memberRankSettingId;
+
+    @TableField(exist = false)
+    private String subjectName;
+
+    @TableField(exist = false)
+    private String subjectId;
+
+    /**
+     * 头像
+     */
+    @TableField(exist = false)
+    private String avatar;
+
+    /**
+     *
+     */
+    @TableField(value = "create_time_")
+    private Date createTime;
+
+    /**
+     *
+     */
+    @TableField(value = "update_time_")
+    private Date updateTime;
+
+    @TableField(value = "tenant_id_")
+    private Integer tenantId;
+}

+ 105 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupPlus.java

@@ -0,0 +1,105 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.io.Serializable;
+
+
+/**
+ * 对应数据库表(im_group):
+ */
+@Data
+@TableName("im_group")
+public class ImGroupPlus implements Serializable {
+
+    /**
+     *
+     */
+    @TableId(value = "id_")
+    private String id;
+
+    @ApiModelProperty("学校ID")
+    @TableField(value = "school_id_")
+    private Long schoolId;
+
+    /**
+     * 群名称
+     */
+    @TableField(value = "name_")
+    private String name;
+
+    /**
+     * 群介绍
+     */
+    @TableField(value = "introduce_")
+    private String introduce;
+
+    /**
+     * 群成员数
+     */
+    @TableField(value = "member_num_")
+    private Integer memberNum;
+
+    /**
+     * 群备注
+     */
+    @TableField(value = "memo_")
+    private String memo;
+
+    /**
+     * 群标签
+     */
+    @TableField(value = "tags_")
+    private String tags;
+
+    @TableField(value = "img_")
+    private String img;
+
+    /**
+     * 乐团群 MUSIC,班级群 CLASS,训练营 TRAINING 学校SCHOOL
+     */
+    @TableField(value = "type_")
+    private String type;
+
+    @TableField(value = "tenant_id_")
+    private Integer tenantId;
+
+
+    @TableField(value = "import_flag_")
+    private String importFlag;
+
+    //群类型
+    @TableField(value = "group_type_")
+    private ImGroup.GroupTypeEnum groupType;
+
+    public ImGroup.GroupTypeEnum getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(ImGroup.GroupTypeEnum groupType) {
+        this.groupType = groupType;
+    }
+
+    /**
+     *
+     */
+    @TableField(value = "create_time_")
+    private java.util.Date createTime;
+
+    /**
+     *
+     */
+    @TableField(value = "update_time_")
+    private java.util.Date updateTime;
+
+    @Override
+    public String toString() {
+        return ToStringBuilder.reflectionToString(this);
+    }
+
+}

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/OrganizationDegreeCourseFee.java

@@ -44,15 +44,15 @@ public class OrganizationDegreeCourseFee extends BaseEntity {
     private BigDecimal vip1v2;
 
     /**
-     * 乐理课原价格
+     * 小组课原价格
      */
-    @ApiModelProperty(value = "乐理课价格")
+    @ApiModelProperty(value = "小组课价格")
     private BigDecimal originalTheory;
 
     /**
-     * 乐理课价格
+     * 小组课价格
      */
-    @ApiModelProperty(value = "乐理课价格")
+    @ApiModelProperty(value = "小组课价格")
     private BigDecimal theory;
 
     /**

+ 3 - 218
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SporadicChargeInfo.java

@@ -3,8 +3,8 @@ package com.ym.mec.biz.dal.entity;
 import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.common.entity.BaseEntity;
-
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -12,6 +12,7 @@ import java.util.Date;
 /**
  * 对应数据库表(sporadic_charge_info):
  */
+@Data
 public class SporadicChargeInfo extends BaseEntity {
 	/**  */
 	private Integer id;
@@ -22,7 +23,7 @@ public class SporadicChargeInfo extends BaseEntity {
 	@ApiModelProperty(value = "收费类型", required = true)
 	private SporadicChargeTypeEnum chargeType;
 
-	private Integer organId;
+	private String organId;
 
 	private String organName;
 
@@ -80,220 +81,4 @@ public class SporadicChargeInfo extends BaseEntity {
 	private YesOrNoEnum openMaxTerm;
 
 	private Integer version;
-
-	public String getMusicGroupName() {
-		return musicGroupName;
-	}
-
-	public void setMusicGroupName(String musicGroupName) {
-		this.musicGroupName = musicGroupName;
-	}
-
-	public String getMusicGroupId() {
-		return musicGroupId;
-	}
-
-	public void setMusicGroupId(String musicGroupId) {
-		this.musicGroupId = musicGroupId;
-	}
-
-	public Integer getOpenFlag() {
-		return openFlag;
-	}
-
-	public void setOpenFlag(Integer openFlag) {
-		this.openFlag = openFlag;
-	}
-
-	public String getUserName() {
-		return userName;
-	}
-
-	public void setUserName(String userName) {
-		this.userName = userName;
-	}
-
-	public Integer getUserId() {
-		return userId;
-	}
-
-	public void setUserId(Integer userId) {
-		this.userId = userId;
-	}
-
-	public Integer getDelFlag() {
-		return delFlag;
-	}
-
-	public void setDelFlag(Integer delFlag) {
-		this.delFlag = delFlag;
-	}
-
-	public String getOrganName() {
-		return organName;
-	}
-
-	public void setOrganName(String organName) {
-		this.organName = organName;
-	}
-
-	public String getOperatorName() {
-		return operatorName;
-	}
-
-	public void setOperatorName(String operatorName) {
-		this.operatorName = operatorName;
-	}
-
-	public BigDecimal getBalance() {
-		return balance;
-	}
-
-	public void setBalance(BigDecimal balance) {
-		this.balance = balance;
-	}
-
-	public Integer getId() {
-		return id;
-	}
-
-	public void setId(Integer id) {
-		this.id = id;
-	}
-
-	public String getTitle() {
-		return title;
-	}
-
-	public void setTitle(String title) {
-		this.title = title;
-	}
-
-	public SporadicChargeTypeEnum getChargeType() {
-		return chargeType;
-	}
-
-	public void setChargeType(SporadicChargeTypeEnum chargeType) {
-		this.chargeType = chargeType;
-	}
-
-	public Integer getOrganId() {
-		return organId;
-	}
-
-	public void setOrganId(Integer organId) {
-		this.organId = organId;
-	}
-
-	public BigDecimal getAmount() {
-		return amount;
-	}
-
-	public void setAmount(BigDecimal amount) {
-		this.amount = amount;
-	}
-
-	public String getDetail() {
-		return detail;
-	}
-
-	public void setDetail(String detail) {
-		this.detail = detail;
-	}
-
-	public Date getCreateTime() {
-		return createTime;
-	}
-
-	public void setCreateTime(Date createTime) {
-		this.createTime = createTime;
-	}
-
-	public Date getUpdateTime() {
-		return updateTime;
-	}
-
-	public void setUpdateTime(Date updateTime) {
-		this.updateTime = updateTime;
-	}
-
-	public Integer getOperatorId() {
-		return operatorId;
-	}
-
-	public void setOperatorId(Integer operatorId) {
-		this.operatorId = operatorId;
-	}
-
-	public BigDecimal getDiscountAmount() {
-		return discountAmount;
-	}
-
-	public void setDiscountAmount(BigDecimal discountAmount) {
-		this.discountAmount = discountAmount;
-	}
-
-	public String getOpenFlagStr() {
-		return openFlagStr;
-	}
-
-	public void setOpenFlagStr(String openFlagStr) {
-		this.openFlagStr = openFlagStr;
-	}
-
-	public String getOrderType() {
-		return orderType;
-	}
-
-	public void setOrderType(String orderType) {
-		this.orderType = orderType;
-	}
-
-	public Integer getMaxNum() {
-		return maxNum;
-	}
-
-	public void setMaxNum(Integer maxNum) {
-		this.maxNum = maxNum;
-	}
-
-	public Integer getPaidNum() {
-		return paidNum;
-	}
-
-	public void setPaidNum(Integer paidNum) {
-		this.paidNum = paidNum;
-	}
-
-	public Integer getVersion() {
-		return version;
-	}
-
-	public void setVersion(Integer version) {
-		this.version = version;
-	}
-
-	public BigDecimal getMaxAmount() {
-		return maxAmount;
-	}
-
-	public void setMaxAmount(BigDecimal maxAmount) {
-		this.maxAmount = maxAmount;
-	}
-
-	public BigDecimal getPaidAmount() {
-		return paidAmount;
-	}
-
-	public void setPaidAmount(BigDecimal paidAmount) {
-		this.paidAmount = paidAmount;
-	}
-
-	public YesOrNoEnum getOpenMaxTerm() {
-		return openMaxTerm;
-	}
-
-	public void setOpenMaxTerm(YesOrNoEnum openMaxTerm) {
-		this.openMaxTerm = openMaxTerm;
-	}
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupCategory.java

@@ -43,7 +43,7 @@ public class VipGroupCategory extends BaseEntity {
 	@ApiModelProperty(value = "线下课单价",required = false)
 	private BigDecimal offlineClassesUnitPrice;
 
-	@ApiModelProperty(value = "是否乐理课")
+	@ApiModelProperty(value = "是否小组课")
 	private Boolean musicTheory = false;
 
 	@ApiModelProperty("购买单价id")

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ActivityCourseType.java

@@ -10,7 +10,7 @@ public enum ActivityCourseType implements BaseEnum<String, ComplaintsStatusEnum>
     FREE_VIP("free_vip", "考级活动赠送课"),
     VIP1("vip1", "考级活动1v1VIP课"),
     VIP2("vip2", "考级活动1v2VIP课"),
-    MUSIC_THEORY("music_theory", "考级活动乐理课");
+    MUSIC_THEORY("music_theory", "考级活动小组课");
 
     private String code;
 

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportEnum.java

@@ -71,7 +71,7 @@ public enum ExportEnum implements BaseEnum<String, ExportEnum> {
     STUDENT_INSTRUMENT("STUDENT_INSTRUMENT", "乐保导出"),
     EXPORT_BILL("EXPORT_BILL", "对账单导出"),
     STUDENT_VIP_COURSE_INFO("STUDENT_VIP_COURSE_INFO", "VIP课学员课程信息导出"),
-    STUDENT_MUSIC_THEORY_COURSE_INFO("STUDENT_MUSIC_THEORY_COURSE_INFO", "乐理课学员课程信息导出"),
+    STUDENT_MUSIC_THEORY_COURSE_INFO("STUDENT_MUSIC_THEORY_COURSE_INFO", "小组课学员课程信息导出"),
     VIP_STUDENT_COURSE_MANAGE("VIP_STUDENT_COURSE_MANAGE", "vip学员课程管理"),
     EXERCISES_SITUATION("EXERCISES_SITUATION", "服务指标导出"),
     EXPORT_STUDENT_SUBCOURSE("EXPORT_STUDENT_SUBCOURSE", "活动资格导出"),

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportTypeEnum.java

@@ -7,7 +7,7 @@ public enum ExportTypeEnum implements BaseEnum<Integer, ExportTypeEnum> {
 	COURSE_SCHEDULE(1, "课表列表"),
 	ROUTE_ORDER(2, "财务管理"),
 	STUDENT_VIP_PRACTICE(3, "VIP网管课耗导出"),
-	STUDENT_MUSIC_THEORY_COURSE_INFO(4, "乐理课学员课程导出"),
+	STUDENT_MUSIC_THEORY_COURSE_INFO(4, "小组课学员课程导出"),
 	STUDENT_VIP_COURSE_INFO(5, "VIP课学员课程信息导出"),
 	VIP_STUDENT_COURSE_MANAGE(6, "vip学员课程管理"),
 	STUDENT_SMALL_CLASS_STATISTICS(7, "学员小课数据统计"),

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexDataType.java

@@ -97,7 +97,7 @@ public enum IndexDataType implements BaseEnum<String, IndexDataType> {
 
     //小课数据统计
     STUDENT_VIP_ORDER_NUM("STUDENT_VIP_ORDER_NUM", "学员vip课订单数量", false, false),
-    STUDENT_THEORY_ORDER_NUM("STUDENT_THEORY_ORDER_NUM", "学员乐理课订单数量", false, false),
+    STUDENT_THEORY_ORDER_NUM("STUDENT_THEORY_ORDER_NUM", "学员小组课订单数量", false, false),
     STUDENT_PRACTICE_ORDER_NUM("STUDENT_PRACTICE_ORDER_NUM", "学员网管课订单数量", false, false),
     ;
 

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderDetailTypeEnum.java

@@ -30,7 +30,7 @@ public enum OrderDetailTypeEnum implements BaseEnum<String, OrderDetailTypeEnum>
     MAINTENANCE("MAINTENANCE","乐保服务"),
     CLOUD_TEACHER("CLOUD_TEACHER","云教练"),
     CLOUD_TEACHER_PLUS("CLOUD_TEACHER_PLUS","云教练"),
-    THEORY_COURSE("THEORY_COURSE", "乐理课"),
+    THEORY_COURSE("THEORY_COURSE", "小组课"),
     REPAIR("REPAIR", "乐器维修"),
     ORGAN_SHARE_PROFIT("ORGAN_SHARE_PROFIT", "分部分润");
 

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SporadicChargeTypeEnum.java

@@ -17,7 +17,8 @@ public enum SporadicChargeTypeEnum implements BaseEnum<Integer, SporadicChargeTy
     DOUBLE_ELEVEN2020(12,"2020双十一活动"),
     HIGH_ONLINE_ACTIVITY(13,"网基课活动"),
     PRACTICE_GROUP_BUY(14,"加油包"),
-    CLOUD_TEACHER_BUY(15,"系统购买");
+    CLOUD_TEACHER_BUY(15,"系统购买"),
+    DOUBLE_ELEVEN2023(16,"2023双十一活动");
 
     private Integer code;
 

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/ImGroupMemberPlusMapper.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 import org.springframework.stereotype.Repository;
 import com.ym.mec.biz.dal.entity.ImGroupMember;
 
@@ -11,8 +12,8 @@ import java.util.List;
  * 2023-08-29 17:18:04
  */
 @Repository
-public interface ImGroupMemberPlusMapper extends BaseMapper<ImGroupMember> {
+public interface ImGroupMemberPlusMapper extends BaseMapper<ImGroupMemberPlus> {
 
 
-    void insertBatch(List<ImGroupMember> imGroupMemberEntity);
+    void insertBatch(List<ImGroupMemberPlus> imGroupMemberEntity);
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/ImGroupPlusMapper.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.ImGroupPlus;
 import org.springframework.stereotype.Repository;
 import com.ym.mec.biz.dal.entity.ImGroup;
 
@@ -9,7 +10,7 @@ import com.ym.mec.biz.dal.entity.ImGroup;
  * 2023-08-29 17:18:04
  */
 @Repository
-public interface ImGroupPlusMapper extends BaseMapper<ImGroup> {
+public interface ImGroupPlusMapper extends BaseMapper<ImGroupPlus> {
 
 	
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolStaffMapper.java

@@ -44,4 +44,7 @@ public interface SchoolStaffMapper extends BaseMapper<SchoolStaff> {
     void delUser(@Param("userId") Long userId);
 
     List<SchoolStaff> getByCoopIdAndType(@Param("cooperationOrganId") Integer cooperationOrganId, @Param("staffType") ESchoolStaffType staffType);
+
+	List<SchoolStaffWrapper.SchoolStaff> selectBaseInfoByPage(@Param("page") IPage<SchoolStaffWrapper.SchoolStaff> page,
+															  @Param("param") SchoolStaffWrapper.SchoolStaffQuery query);
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/page/DoubleEleven2021QueryInfo.java

@@ -13,7 +13,7 @@ public class DoubleEleven2021QueryInfo extends QueryInfo {
 
     private String organId;
 
-    @ApiModelProperty(value = "购买的活动类型1、1v1 20节,2、1v1 40节,3、1v2 20节,4、1v2 40节,5、乐理课",required = false)
+    @ApiModelProperty(value = "购买的活动类型1、1v1 20节,2、1v1 40节,3、1v2 20节,4、1v2 40节,5、小组课",required = false)
     private Integer type;
 
     private Date startTime;

+ 2 - 40
mec-biz/src/main/java/com/ym/mec/biz/dal/page/SporadicChargeInfoQueryInfo.java

@@ -3,7 +3,9 @@ package com.ym.mec.biz.dal.page;
 import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
+@Data
 public class SporadicChargeInfoQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "分部编号",required = false)
@@ -19,44 +21,4 @@ public class SporadicChargeInfoQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "是否关闭", required = true)
     private Integer openFlag;
-
-    public Integer getOpenFlag() {
-        return openFlag;
-    }
-
-    public void setOpenFlag(Integer openFlag) {
-        this.openFlag = openFlag;
-    }
-
-    public boolean getIsExport() {
-        return isExport;
-    }
-
-    public void setIsExport(boolean export) {
-        isExport = export;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getOrganId() {
-        return organId;
-    }
-
-    public void setOrganId(String organId) {
-        this.organId = organId;
-    }
-
-    public SporadicChargeTypeEnum getChargeType() {
-        return chargeType;
-    }
-
-    public void setChargeType(SporadicChargeTypeEnum chargeType) {
-        this.chargeType = chargeType;
-    }
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupMemberWrapper.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -101,7 +102,7 @@ public class ImGroupMemberWrapper {
         private Boolean groupJoin;
 
         @ApiModelProperty("机构ID")
-        private Integer tenantId;
+        private Integer tenantId = TenantContextHolder.getTenantId();
 
         public static ImGroupMember from(String json) {
             return JSON.parseObject(json, ImGroupMember.class);

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupWrapper.java

@@ -1,14 +1,12 @@
 package com.ym.mec.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.slf4j.helpers.MessageFormatter;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -70,7 +68,7 @@ public class ImGroupWrapper {
 
 
         @ApiModelProperty("主键ID")
-        private Long id;
+        private String id;
 
         @ApiModelProperty("群组ID")
         private String groupId;
@@ -117,8 +115,10 @@ public class ImGroupWrapper {
         /** 群标签 */
         private String tags;
 
-        //群类型
+        // 群类型
         private com.ym.mec.biz.dal.entity.ImGroup.GroupTypeEnum groupType;
+
+
         public static ImGroup from(String json) {
             return JSON.parseObject(json, ImGroup.class);
         }
@@ -127,7 +127,7 @@ public class ImGroupWrapper {
             return JSON.toJSONString(this);
         }
 
-        public ImGroup id(Long id) {
+        public ImGroup id(String id) {
             this.id = id;
             return this;
         }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
 import com.ym.mec.biz.dal.page.UserBasicQueryInfo;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 import java.util.HashMap;
 import java.util.List;
@@ -87,4 +88,6 @@ public interface EmployeeService extends BaseService<Integer, Employee> {
     PageInfo<SysUserDto> queryEmployeeBasicInfo(UserBasicQueryInfo queryInfo);
 
     void resetPassword(Integer userId);
+
+    PageInfo<Employee> queryBaseInfoByPage(QueryInfo queryInfo);
 }

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

@@ -1,9 +1,8 @@
 package com.ym.mec.biz.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.dal.entity.ImGroupMember;
+import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 
 import java.util.List;
 
@@ -11,14 +10,14 @@ import java.util.List;
  * 群成员表
  * 2023-08-29 17:18:04
  */
-public interface ImGroupMemberPlusService extends IService<ImGroupMember>  {
+public interface ImGroupMemberPlusService extends IService<ImGroupMemberPlus>  {
 
 	/**
      * 查询详情
      * @param id 详情ID
      * @return ImGroupMember
      */
-	ImGroupMember detail(Long id);
+    ImGroupMemberPlus detail(Long id);
 
 
     /**
@@ -26,5 +25,5 @@ public interface ImGroupMemberPlusService extends IService<ImGroupMember>  {
      *
      * @param imGroupMemberEntity
      */
-    void insertBatch(List<ImGroupMember> imGroupMemberEntity);
+    void insertBatch(List<ImGroupMemberPlus> imGroupMemberEntity);
 }

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupPlusService.java

@@ -2,18 +2,19 @@ package com.ym.mec.biz.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.dal.entity.ImGroupPlus;
 
 /**
  * 即时通讯群组
  * 2023-08-29 17:18:04
  */
-public interface ImGroupPlusService extends IService<ImGroup>  {
+public interface ImGroupPlusService extends IService<ImGroupPlus>  {
 
 	/**
      * 查询详情
      * @param id 详情ID
      * @return ImGroup
      */
-	ImGroup detail(Long id);
+	ImGroupPlus detail(Long id);
      
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java

@@ -1,6 +1,8 @@
 package com.ym.mec.biz.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
+import com.microsvc.toolkit.middleware.im.message.TencentRequest;
 import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService;
 import com.ym.mec.biz.dal.dto.im.BasicUserInfo;
 import com.ym.mec.biz.dal.dto.ImGroupDto;
@@ -12,9 +14,12 @@ import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.common.service.BaseService;
 import com.yonge.log.dal.model.HistoryMessage;
+import com.yonge.log.wrapper.HistoryMessageTencentWrapper;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Map;
 
 public interface ImGroupService extends BaseService<String, ImGroup> {
 
@@ -203,4 +208,21 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
 	 * @throws Exception
 	 */
 	void importInfo(List<HistoryMessage> info) throws Exception;
+
+    void imToTencent(List<HistoryMessage> list);
+
+    @NotNull
+    List<TencentRequest.MessageBody> getGroupMessage(HistoryMessage i, JSONObject jsonObject);
+
+    @NotNull
+    List<TencentRequest.MessageBody> getPrivateMessge(HistoryMessage i, JSONObject jsonObject);
+
+    /**
+     * 查询聊天记录
+     *
+     * @param query 查询条件
+     */
+    com.yonge.mongodb.PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent> historyMessage(HistoryMessageTencentWrapper.HistoryMessageTencentQuery query);
+
+    Map<String,ImGroup> getMapByIds(List<String> groupIdList);
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SchoolStaffService.java

@@ -98,4 +98,7 @@ public interface SchoolStaffService extends IService<SchoolStaff>  {
      * @param schoolStaffUpdate SchoolStaffWrapper.SchoolStaffUpdate
      */
     void updateAccount(SchoolStaffWrapper.SchoolStaffUpdate schoolStaffUpdate);
+
+    IPage<SchoolStaffWrapper.SchoolStaff> selectBaseInfoByPage(IPage<SchoolStaffWrapper.SchoolStaff> page,
+                                                               SchoolStaffWrapper.SchoolStaffQuery query);
 }

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

@@ -33,7 +33,7 @@ public interface SporadicChargeInfoService extends BaseService<Integer, Sporadic
      */
     SporadicChargeInfo getDetail(Integer id);
 
-    SporadicChargeInfo findByOrganIdAndType(Integer organId, Integer type);
+    SporadicChargeInfo findByOrganIdAndType(String organId, Integer type);
 
     /**
      * 开启/关闭缴费
@@ -68,7 +68,7 @@ public interface SporadicChargeInfoService extends BaseService<Integer, Sporadic
      * @param type
      * @return
      */
-    List<SporadicChargeInfo> getOrganActiveInfo(Integer organId, Integer type);
+    List<SporadicChargeInfo> getOrganActiveInfo(String organId, Integer type);
 
     List<SporadicChargeInfo> findByIds(String sporadicIds);
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java

@@ -16,6 +16,7 @@ import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -248,4 +249,8 @@ public interface StudentService extends BaseService<Integer, Student> {
     * @date 2023/5/17 11:25
     */
     void updateStudentMember(Integer userId, Date endTime,String memo,Integer operatorId);
+
+    PageInfo<Student> queryBaseInfoByPage(QueryInfo queryInfo);
+
+    Map<Integer,SysUser> getUserMapByIds(List<Integer> userIds);
 }

+ 9 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -399,12 +399,19 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String TENANT_CLOUD_ROOM_BALANCE_NOTICE = "tenant_cloud_room_balance_notice_";
     // 学校端默认用户头象
     String USER_DEFAULT_AVATAR = "user_default_avatar";
-    // IM服务方案(rongCloud,tencentCloud
-    String IM_SERVICE_PROVIDER = "im_service_provider";
+
+    // 学生默认头象,https://oss.dayaedu.com/default-images/mec/student_default_avatar.png
+    String STUDENT_DEFAULT_AVATAR = "student_default_avatar";
+
+    // 老师默认头象,https://oss.dayaedu.com/default-images/mec/teacher_default_avatar.png
+    String TEACHER_DEFAULT_AVATAR = "teacher_default_avatar";
 
     // 游客默认头像
     String VISITOR_DEFAULT_AVATAR = "visitor_default_avatar";
 
+    // IM服务方案(rongCloud,tencentCloud
+    String IM_SERVICE_PROVIDER = "im_service_provider";
+
     // 网络教室服务提供方配置
     String RTC_SERVICE_PROVIDER = "rtc_service_provider";
 

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java

@@ -199,10 +199,11 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 
 	/**
 	 * 发送私聊消息
-	 * @param studentId
-	 * @param content
+	 * @param studentId 接收人id
+	 * @param content 消息内容
+	 * @param extra 扩展字段
 	 */
-    void sendPrivateMessage(String studentId, String content);
+    void sendPrivateMessage(String studentId, String content, String extra);
 
 	/**
 	 * 发送私聊消息

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysUserService.java

@@ -12,4 +12,8 @@ public interface SysUserService {
     SysUser queryUserById(Integer userId);
 
     Boolean updateSysUser(SysUser user);
+
+    String getImName(SysUser sysUser);
+
+    String getImAvatar(SysUser sysUser);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java

@@ -256,4 +256,6 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
     PageInfo<TeacherMusicStudentOverViewDto> queryTeacherMusicStudentOverViewV2(TeacherServeQueryInfo queryInfo);
 
     Map<Integer,Teacher> getMapByIds(List<Integer> teacherIds);
+
+    PageInfo<Teacher> queryBaseInfoByPage(QueryInfo queryInfo);
 }

+ 53 - 46
mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java

@@ -7,9 +7,8 @@ import com.google.common.collect.Lists;
 import com.microsvc.toolkit.common.tools.ThreadPool;
 import com.microsvc.toolkit.middleware.im.ImPluginContext;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
-import com.microsvc.toolkit.middleware.im.properties.ImConfigProperties;
-import com.ym.mec.biz.dal.entity.ImGroup;
-import com.ym.mec.biz.dal.entity.ImGroupMember;
+import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
+import com.ym.mec.biz.dal.entity.ImGroupPlus;
 import com.ym.mec.biz.dal.enums.EFriendRoleType;
 import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
@@ -43,9 +42,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     @Autowired
     private ImGroupPlusService imGroupService;
     @Autowired
-    private ImConfigProperties imConfig;
-    @Autowired
-    private ImGroupMemberPlusService imGroupMemberService;
+    private ImGroupMemberPlusService imGroupMemberPlusService;
 
     /**
      * IM 用户注册
@@ -122,9 +119,9 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
      */
     @Override
     public String analysisImUserId(String imUserId) {
-        if (StringUtils.isNotBlank(imConfig.getAppPrefix()) && imUserId.startsWith(imConfig.getAppPrefix())) {
-            return imUserId.replace(imConfig.getAppPrefix() + "_", "").split("_")[0];
-        }
+//        if (StringUtils.isNotBlank(imConfig.getAppPrefix()) && imUserId.startsWith(imConfig.getAppPrefix())) {
+//            return imUserId.replace(imConfig.getAppPrefix() + "_", "").split("_")[0];
+//        }
         return imUserId;
     }
 
@@ -139,14 +136,18 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     @Transactional
     public String groupCreate(ImGroupMemberWrapper.ImGroupMember userInfo, ImGroupWrapper.ImGroup imGroup) throws Exception {
 
-        long id = Optional.ofNullable(imGroup.getId()).orElse(IdWorker.getId());
+        String id = Optional.ofNullable(imGroup.getId()).orElse(String.valueOf(IdWorker.getId()));
         // 生成群组ID
         imGroup.id(id)
                 .type(Optional.ofNullable(imGroup.getType()).orElse("CLASS"))
-                .groupId(String.valueOf(id));
+                .groupId(id);
 
-        ImGroup group = JSON.parseObject(imGroup.jsonString(), ImGroup.class);
+        ImGroupPlus group = JSON.parseObject(imGroup.jsonString(), ImGroupPlus.class);
         group.setId(imGroup.getGroupId());
+        // 群默认头象
+        if (StringUtils.isBlank(group.getImg()) && Objects.nonNull(group.getGroupType())) {
+            group.setImg(group.getGroupType().getAvatar());
+        }
         // 保存群组信息
         imGroupService.saveOrUpdate(group);
 
@@ -157,14 +158,19 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
             groupMembers = Lists.newArrayList(userInfo);
 
             groupMembers.add(userInfo.imUserId(imUserId));
-            imGroupMemberService.insertBatch(getImGroupMemberEntity(groupMembers));
+            imGroupMemberPlusService.insertBatch(getImGroupMemberEntity(groupMembers));
 
             // 自动激活学生IM帐号
             registerUser(groupMembers);
         }
 
+        // 群默认头象
+        String groupAvatar = "";
+        if (Objects.nonNull(imGroup.getGroupType())) {
+            groupAvatar = imGroup.getGroupType().getAvatar();
+        }
         // 创建IM群组
-        imPluginContext.getPluginService().groupCreate(imGroup.getGroupId(), imGroup.getName(),imUserId);
+        imPluginContext.getPluginService().groupCreate(imGroup.getGroupId(), imGroup.getName(), groupAvatar, imUserId);
 
         if (userInfo != null) {
             // 添加群成员到当前群组
@@ -174,12 +180,12 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
         return group.getId();
     }
 
-    private List<ImGroupMember> getImGroupMemberEntity(List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
+    private List<ImGroupMemberPlus> getImGroupMemberEntity(List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
         if (CollectionUtils.isEmpty(groupMembers)) {
             return new ArrayList<>();
         }
         return groupMembers.stream().map(o -> {
-            ImGroupMember imGroupMember = new ImGroupMember();
+            ImGroupMemberPlus imGroupMember = new ImGroupMemberPlus();
             imGroupMember.setImGroupId(o.getGroupId());
             imGroupMember.setUserId(o.getUserId().intValue());
             imGroupMember.setNickname(o.getNickname());
@@ -251,25 +257,25 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     public void groupDismiss(String groupId) throws Exception {
 
         // 判定登录用户是否为群主
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
+        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
 
 
         // 获取群成员
-        List<ImGroupMemberWrapper.ImGroupMember> groupMembers = imGroupMemberService.lambdaQuery()
-                .select(ImGroupMember::getUserId, ImGroupMember::getImGroupId, ImGroupMember::getRoleType)
-                .eq(ImGroupMember::getImGroupId, groupId)
+        List<ImGroupMemberWrapper.ImGroupMember> groupMembers = imGroupMemberPlusService.lambdaQuery()
+                .select(ImGroupMemberPlus::getUserId, ImGroupMemberPlus::getImGroupId, ImGroupMemberPlus::getRoleType)
+                .eq(ImGroupMemberPlus::getImGroupId, groupId)
                 .list().stream()
                 .map(x -> ImGroupMemberWrapper.ImGroupMember.builder().userId(x.getUserId().longValue()).groupId(x.getImGroupId()).clientType(x.getRoleType()).build())
                 .collect(Collectors.toList());
 
         // 删除群组
-        imGroupService.remove(Wrappers.<ImGroup>lambdaQuery().eq(ImGroup::getId, groupId));
+        imGroupService.remove(Wrappers.<ImGroupPlus>lambdaQuery().eq(ImGroupPlus::getId, groupId));
 
         // 删除群组成员
-        imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
+        imGroupMemberPlusService.remove(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId, groupId));
 
         // 解散群
         imPluginContext.getPluginService().groupDismiss(imGroup.getId(), getImGroupMembers(groupMembers));
@@ -287,18 +293,19 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     public void groupQuit(GroupMemberWrapper.ImGroupMember imGroupMember, String groupId) throws Exception {
 
         // 判定登录用户是否为群主
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
+        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
 
         // 统计当前群成员用户数
-        long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
+        long count = imGroupMemberPlusService.count(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId
+                , groupId));
 
         // 删除当前用户群成员身份
-        boolean remove = imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery()
-                .eq(ImGroupMember::getImGroupId, groupId)
-                .eq(ImGroupMember::getUserId, imGroupMember.getUserId())
+        boolean remove = imGroupMemberPlusService.remove(Wrappers.<ImGroupMemberPlus>lambdaQuery()
+                .eq(ImGroupMemberPlus::getImGroupId, groupId)
+                .eq(ImGroupMemberPlus::getUserId, imGroupMember.getUserId())
 //                .eq(ImGroupMember::getRoleType, imGroupMember.getRoleType())
         );
         if (!remove) {
@@ -308,8 +315,8 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
         // 修改群组成员数
         imGroupService.lambdaUpdate()
-                .eq(ImGroup::getId, imGroup.getId())
-                .set(ImGroup::getMemberNum, count - 1)
+                .eq(ImGroupPlus::getId, imGroup.getId())
+                .set(ImGroupPlus::getMemberNum, count - 1)
                 .update();
 
         // 群主退出
@@ -333,7 +340,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
 
         // 判定登录用户是否为群主
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
+        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
@@ -347,9 +354,9 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
 
         // 删除当前用户群成员身份
-        boolean remove = imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery()
-                .eq(ImGroupMember::getImGroupId, groupId)
-                .in(ImGroupMember::getUserId, userIds)
+        boolean remove = imGroupMemberPlusService.remove(Wrappers.<ImGroupMemberPlus>lambdaQuery()
+                .eq(ImGroupMemberPlus::getImGroupId, groupId)
+                .in(ImGroupMemberPlus::getUserId, userIds)
         );
         if (!remove) {
             // 用户主动退出群聊失败
@@ -357,12 +364,12 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
         }
 
         // 统计当前群成员用户数
-        long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
+        long count = imGroupMemberPlusService.count(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId, groupId));
 
         // 修改群组成员数
         imGroupService.lambdaUpdate()
-                .eq(ImGroup::getId, imGroup.getId())
-                .set(ImGroup::getMemberNum, count)
+                .eq(ImGroupPlus::getId, imGroup.getId())
+                .set(ImGroupPlus::getMemberNum, count)
                 .update();
         imPluginContext.getPluginService().groupQuit(imGroup.getId(), imGroupMembers);
 
@@ -379,7 +386,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     @Override
     public void groupQuit(Long userId, String clientType, String imGroupId) throws Exception {
 
-        ImGroup imGroup = imGroupService.getById(imGroupId);
+        ImGroupPlus imGroup = imGroupService.getById(imGroupId);
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
@@ -413,9 +420,9 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
             item.id(IdWorker.getId()).imUserId(getImUserId(item.getUserId().toString(), item.getClientType())).setGroupId(imGroupId);
         }
 
-        imGroupMemberService.insertBatch(getImGroupMemberEntity(groupMembers));
+        imGroupMemberPlusService.insertBatch(getImGroupMemberEntity(groupMembers));
         // 判断群ID是否有效
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, imGroupId).last("LIMIT 1").one();
+        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, imGroupId).last("LIMIT 1").one();
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
@@ -446,7 +453,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     public void saveImGroupMemberList(Long imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
 
         // 群组信息
-        ImGroup imGroup = imGroupService.getById(imGroupId);
+        ImGroupPlus imGroup = imGroupService.getById(imGroupId);
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
@@ -466,7 +473,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     public void groupMemberJoin(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
 
         // 群组信息
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, imGroupId).last("LIMIT 1").one();
+        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, imGroupId).last("LIMIT 1").one();
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
@@ -490,15 +497,15 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
      * @param groupId 群组ID
      * @param imGroup ImGroup
      */
-    private void updateGroupMemberNumber(String groupId, ImGroup imGroup) {
+    private void updateGroupMemberNumber(String groupId, ImGroupPlus imGroup) {
 
         // 统计当前群成员用户数
-        long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
+        long count = imGroupMemberPlusService.count(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId, groupId));
 
         // 修改群组成员数
         imGroupService.lambdaUpdate()
-            .eq(ImGroup::getId, imGroup.getId())
-            .set(ImGroup::getMemberNum, count)
+            .eq(ImGroupPlus::getId, imGroup.getId())
+            .set(ImGroupPlus::getMemberNum, count)
             .update();
     }
 
@@ -514,7 +521,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     public void groupJoin(Long userId, String clientType, String imGroupId) throws Exception {
 
         // 群组信息
-        ImGroup imGroup = imGroupService.getById(imGroupId);
+        ImGroupPlus imGroup = imGroupService.getById(imGroupId);
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }

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

@@ -503,7 +503,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 			className.append(StringUtils.join(bySubIds, ","));
 			className.append(vipGroupCategory.getName());
 		} else {
-			className.append("乐理课•");
+			className.append("小组课•");
 		}
 		className.append(StringUtils.join(studentNames, ","));
 		applyBaseInfo.setName(className.toString());

+ 14 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -506,6 +506,20 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         classGroupService.updateClassStudentNum(classGroupId.intValue(), allStudentIds.size());
 
+        if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
+            if (!CollectionUtils.isEmpty(removeStudentIds)){
+                //5、学生退出班级群组
+                imGroupMemberService.quit(classGroup.getId().toString(), new ArrayList<Integer>(removeStudentIds));
+            }
+            if (!CollectionUtils.isEmpty(addStudentIds)) {
+                Map<Integer,String> userRoleMap = new HashMap<>();
+                for (Integer addStudentId : addStudentIds) {
+                    userRoleMap.put(addStudentId, "");
+                }
+                //5、添加进IM群组
+                imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
+            }
+        }
         if (CollectionUtils.isEmpty(classGroupNotStartCourse)) {
             if (!CollectionUtils.isEmpty(addStudentIds)) {
                 if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
@@ -534,23 +548,11 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         if (!CollectionUtils.isEmpty(removeStudentIds)) {
             courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, new ArrayList<>(removeStudentIds));
-            if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
-                //5、学生退出班级群组
-                imGroupMemberService.quit(classGroup.getId().toString(), new ArrayList<Integer>(addStudentIds));
-            }
         }
 
         if (!CollectionUtils.isEmpty(addStudentIds)) {
             courseScheduleStudentPaymentService.createForMusicGroup(classGroup.getMusicGroupId(), classGroupNotStartCourse, new ArrayList<>(addStudentIds));
             studentDao.updateStudentServiceTag(null, new ArrayList<>(addStudentIds), YesOrNoEnum.YES.getCode());
-            if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
-                Map<Integer,String> userRoleMap = new HashMap<>();
-                for (Integer addStudentId : addStudentIds) {
-                    userRoleMap.put(addStudentId, "");
-                }
-                //5、添加进IM群组
-                imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
-            }
         }
 
         //4、调整未上课课酬

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

@@ -25,6 +25,7 @@ import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.service.im.ImGroupCoreService;
+import com.ym.mec.common.page.QueryInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
@@ -731,8 +732,9 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
 
             try {
                 String username = userInfo.getUsername();
-                if (Lists.newArrayList(userInfo.getUserType().split(",")).contains(ClientEnum.TEACHER.getCode())) {
-                    username = Optional.ofNullable(userInfo.getRealName()).orElse(username);
+                List<String> userTypes = Lists.newArrayList(userInfo.getUserType().split(","));
+                if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
+                    username = Optional.ofNullable(userInfo.getRealName()).filter(StringUtils::isNotBlank).orElse(username);
                 }
 
                 imGroupCoreService.register(String.valueOf(userInfo.getId()), "", username, userInfo.getAvatar());
@@ -771,4 +773,25 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
         StringBuffer gym = new StringBuffer("gym").append(user.getPhone().substring(7));
         employeeDao.updatePassword(userId, new BCryptPasswordEncoder().encode(gym.toString()));
     }
+
+    @Override
+    public PageInfo<Employee> queryBaseInfoByPage(QueryInfo queryInfo) {
+        PageInfo<Employee> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<Employee> dataList = new ArrayList<>();
+        int count = queryBaseInfoByCount(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = employeeDao.queryBaseInfoByPage(params);
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    private int queryBaseInfoByCount(Map<String, Object> params) {
+        return employeeDao.queryBaseInfoByCount(params);
+    }
 }

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

@@ -2107,7 +2107,7 @@ public class ExportServiceImpl implements ExportService {
                             row.setVipCourseFee(typeFee);
                         } else if (feeTypeStr.contains("网管课")) {
                             row.setPracticeCourseFee(typeFee);
-                        } else if (feeTypeStr.contains("乐理课")) {
+                        } else if (feeTypeStr.contains("小组课")) {
                             row.setTheoryCourseFee(typeFee);
                         }
                     }
@@ -2459,7 +2459,7 @@ public class ExportServiceImpl implements ExportService {
                                 row.setVipCourseFee(typeFee);
                             } else if (feeTypeStr.contains("网管课")) {
                                 row.setPracticeCourseFee(typeFee);
-                            } else if (feeTypeStr.contains("乐理课")) {
+                            } else if (feeTypeStr.contains("小组课")) {
                                 row.setTheoryCourseFee(typeFee);
                             }
                         }

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberPlusServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 import com.ym.mec.biz.service.ImGroupMemberPlusService;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
@@ -16,7 +17,7 @@ import java.util.List;
  */
 @Slf4j
 @Service
-public class ImGroupMemberPlusServiceImpl extends ServiceImpl<ImGroupMemberPlusMapper, ImGroupMember> implements ImGroupMemberPlusService {
+public class ImGroupMemberPlusServiceImpl extends ServiceImpl<ImGroupMemberPlusMapper, ImGroupMemberPlus> implements ImGroupMemberPlusService {
 
 	/**
      * 查询详情
@@ -24,14 +25,14 @@ public class ImGroupMemberPlusServiceImpl extends ServiceImpl<ImGroupMemberPlusM
      * @return ImGroupMember
      */
 	@Override
-    public ImGroupMember detail(Long id) {
+    public ImGroupMemberPlus detail(Long id) {
         
         return baseMapper.selectById(id);
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void insertBatch(List<ImGroupMember> imGroupMemberEntity) {
+    public void insertBatch(List<ImGroupMemberPlus> imGroupMemberEntity) {
         baseMapper.insertBatch(imGroupMemberEntity);
     }
 

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

@@ -346,6 +346,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 						} else {
 							item.setNickname(realNameMap.get(item.getUserId().intValue()));
 						}
+						item.setImUserId(item.getUserId().toString());
 
 						BasicUserInfo userInfo = teacherDao.getBasicUserInfo(item.getUserId().intValue());
 						// 用户头像

Some files were not shown because too many files changed in this diff