Explorar o código

Merge branch 'zx_saas_imGroup' of http://git.dayaedu.com/yonge/mec into feature/1020-tencent-im

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java
zouxuan hai 1 ano
pai
achega
2ed8b259b7
Modificáronse 100 ficheiros con 1977 adicións e 2536 borrados
  1. 36 5
      audio-analysis/pom.xml
  2. 3 2
      audio-analysis/src/main/java/com/yonge/netty/dto/HardLevelEnum.java
  3. 6 2
      audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java
  4. 3 5
      audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java
  5. 4 6
      audio-analysis/src/main/resources/bootstrap-pre.properties
  6. 3 2
      audio-analysis/src/main/resources/bootstrap-prod.properties
  7. 20 2
      audio-analysis/src/main/resources/logback-spring.xml
  8. 0 1
      cms/pom.xml
  9. 5 1
      cms/src/main/java/com/ym/mec/cms/controller/NewsController.java
  10. 3 1
      cms/src/main/java/com/ym/mec/cms/dal/dao/SysNewsInformationDao.java
  11. 13 1
      cms/src/main/java/com/ym/mec/cms/dal/entity/TenantInfo.java
  12. 1 1
      cms/src/main/java/com/ym/mec/cms/service/SysNewsTypeService.java
  13. 2 2
      cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsInformationServiceImpl.java
  14. 5 6
      cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsTypeServiceImpl.java
  15. 4 3
      cms/src/main/resources/bootstrap-pre.properties
  16. 3 2
      cms/src/main/resources/bootstrap-prod.properties
  17. 8 2
      cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  18. 1 2
      cms/src/main/resources/config/mybatis/TenantInfoMapper.xml
  19. 20 2
      cms/src/main/resources/logback-spring.xml
  20. 0 37
      codegen/pom.xml
  21. 0 63
      codegen/src/main/java/com/yonge/crud/CodegenApplication.java
  22. 0 111
      codegen/src/main/java/com/yonge/crud/core/Configuration.java
  23. 0 144
      codegen/src/main/java/com/yonge/crud/core/CrudSession.java
  24. 0 60
      codegen/src/main/java/com/yonge/crud/core/CrudSessionFactory.java
  25. 0 93
      codegen/src/main/java/com/yonge/crud/core/FreemarkerTemplateEngine.java
  26. 0 84
      codegen/src/main/java/com/yonge/crud/core/GenerateConfiguration.java
  27. 0 59
      codegen/src/main/java/com/yonge/crud/core/db/ConnectionFactory.java
  28. 0 117
      codegen/src/main/java/com/yonge/crud/core/db/DatabaseIntrospector.java
  29. 0 127
      codegen/src/main/java/com/yonge/crud/core/db/model/Column.java
  30. 0 86
      codegen/src/main/java/com/yonge/crud/core/db/model/Table.java
  31. 0 234
      codegen/src/main/java/com/yonge/crud/core/generator/ModuleGenerateIntrospector.java
  32. 0 41
      codegen/src/main/java/com/yonge/crud/core/generator/module/JavaFileGenerator.java
  33. 0 129
      codegen/src/main/java/com/yonge/crud/core/generator/module/SpringGenerator.java
  34. 0 82
      codegen/src/main/java/com/yonge/crud/core/generator/module/SqlMapConfigGenerator.java
  35. 0 160
      codegen/src/main/java/com/yonge/crud/core/util/JavaBeansUtil.java
  36. 0 169
      codegen/src/main/java/com/yonge/crud/core/util/XmlUtil.java
  37. 0 17
      codegen/src/main/resources/generateConfigration.xml
  38. 0 10
      codegen/src/main/resources/template/dao.ftl
  39. 0 44
      codegen/src/main/resources/template/pojo.ftl
  40. 0 9
      codegen/src/main/resources/template/service.ftl
  41. 0 22
      codegen/src/main/resources/template/service_impl.ftl
  42. 0 36
      codegen/src/main/resources/template/spring.ftl
  43. 0 64
      codegen/src/main/resources/template/sqlmap.ftl
  44. 0 11
      codegen/src/main/resources/template/sqlmapConfig.ftl
  45. 10 1
      mec-application/src/main/java/com/ym/mec/AppServerApplication.java
  46. 24 0
      mec-application/src/main/java/com/ym/mec/config/CachingContentFilter.java
  47. 106 0
      mec-application/src/main/java/com/ym/mec/config/MyServletRequestWrapper.java
  48. 2 1
      mec-application/src/main/java/com/ym/mec/config/ResourceServerConfig.java
  49. 69 15
      mec-application/src/main/java/com/ym/mec/student/controller/ActivityController.java
  50. 1 1
      mec-application/src/main/java/com/ym/mec/student/controller/ChildrenDayDegreeDetailController.java
  51. 1 1
      mec-application/src/main/java/com/ym/mec/student/controller/ImGroupController.java
  52. 72 0
      mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java
  53. 3 0
      mec-application/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  54. 9 30
      mec-application/src/main/java/com/ym/mec/student/controller/RepairController.java
  55. 22 2
      mec-application/src/main/java/com/ym/mec/student/controller/SmsCodeController.java
  56. 25 12
      mec-application/src/main/java/com/ym/mec/student/controller/SporadicChargeInfoController.java
  57. 18 0
      mec-application/src/main/java/com/ym/mec/student/controller/StudentController.java
  58. 33 48
      mec-application/src/main/java/com/ym/mec/student/controller/StudentManageController.java
  59. 1 31
      mec-application/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  60. 5 3
      mec-application/src/main/java/com/ym/mec/student/controller/SysMusicCompareRecordController.java
  61. 23 19
      mec-application/src/main/java/com/ym/mec/student/controller/SysMusicScoreCategoriesController.java
  62. 36 0
      mec-application/src/main/java/com/ym/mec/student/controller/SysSuggestionTypeController.java
  63. 64 0
      mec-application/src/main/java/com/ym/mec/student/controller/UserController.java
  64. 108 0
      mec-application/src/main/java/com/ym/mec/student/controller/UserMusicController.java
  65. 87 0
      mec-application/src/main/java/com/ym/mec/student/controller/UserMusicStarController.java
  66. 51 0
      mec-application/src/main/java/com/ym/mec/student/controller/open/OpenAppVersionInfoController.java
  67. 76 0
      mec-application/src/main/java/com/ym/mec/student/controller/open/OpenUserMusicController.java
  68. 46 0
      mec-application/src/main/java/com/ym/mec/student/controller/open/OpenUserMusicStarController.java
  69. 12 2
      mec-application/src/main/java/com/ym/mec/teacher/controller/CloudStudyController.java
  70. 4 14
      mec-application/src/main/java/com/ym/mec/teacher/controller/CourseHomeworkController.java
  71. 15 64
      mec-application/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesController.java
  72. 2 2
      mec-application/src/main/java/com/ym/mec/teacher/controller/GoodsController.java
  73. 82 39
      mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java
  74. 38 5
      mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupMemberController.java
  75. 73 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/LessonCoursewareController.java
  76. 21 2
      mec-application/src/main/java/com/ym/mec/teacher/controller/SmsCodeController.java
  77. 15 7
      mec-application/src/main/java/com/ym/mec/teacher/controller/StudentController.java
  78. 7 4
      mec-application/src/main/java/com/ym/mec/teacher/controller/SysMessageController.java
  79. 9 4
      mec-application/src/main/java/com/ym/mec/teacher/controller/SysMusicCompareRecordController.java
  80. 25 21
      mec-application/src/main/java/com/ym/mec/teacher/controller/SysMusicScoreCategoriesController.java
  81. 36 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/SysSuggestionTypeController.java
  82. 39 17
      mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherController.java
  83. 6 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  84. 17 68
      mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java
  85. 8 6
      mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherSubjectController.java
  86. 62 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/UserController.java
  87. 106 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/UserMusicController.java
  88. 78 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/UserMusicStarController.java
  89. 1 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/VipGroupCategoryController.java
  90. 76 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenUserMusicController.java
  91. 29 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenUserMusicStarController.java
  92. 26 0
      mec-application/src/main/java/com/ym/mec/vo/PageUtil.java
  93. 46 23
      mec-application/src/main/java/com/ym/mec/web/controller/APIController.java
  94. 22 5
      mec-application/src/main/java/com/ym/mec/web/controller/AppVersionInfoController.java
  95. 13 1
      mec-application/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  96. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java
  97. 2 2
      mec-application/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
  98. 18 17
      mec-application/src/main/java/com/ym/mec/web/controller/ExportController.java
  99. 54 8
      mec-application/src/main/java/com/ym/mec/web/controller/GoodsController.java
  100. 2 2
      mec-application/src/main/java/com/ym/mec/web/controller/HfMerchantConfigController.java

+ 36 - 5
audio-analysis/pom.xml

@@ -56,16 +56,42 @@
 		<dependency>
 			<groupId>com.ym</groupId>
 			<artifactId>mec-auth-api</artifactId>
+			<exclusions>
+				<exclusion>
+					<artifactId>netty-common</artifactId>
+					<groupId>io.netty</groupId>
+				</exclusion>
+				<exclusion>
+					<artifactId>netty-transport</artifactId>
+					<groupId>io.netty</groupId>
+				</exclusion>
+				<exclusion>
+					<artifactId>netty-resolver</artifactId>
+					<groupId>io.netty</groupId>
+				</exclusion>
+				<exclusion>
+					<artifactId>netty-buffer</artifactId>
+					<groupId>io.netty</groupId>
+				</exclusion>
+				<exclusion>
+					<artifactId>netty-resolver-dns</artifactId>
+					<groupId>io.netty</groupId>
+				</exclusion>
+				<exclusion>
+					<artifactId>netty-handler</artifactId>
+					<groupId>io.netty</groupId>
+				</exclusion>
+				<exclusion>
+					<artifactId>netty-codec</artifactId>
+					<groupId>io.netty</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 
 		<dependency>
 			<groupId>com.ym</groupId>
 			<artifactId>mec-biz</artifactId>
 			<exclusions>
-				<!-- <exclusion>
-            		<groupId>org.redisson</groupId>
-            		<artifactId>redisson-spring-boot-starter</artifactId>
-				</exclusion> -->
 				<exclusion>
 					<artifactId>netty-common</artifactId>
 					<groupId>io.netty</groupId>
@@ -103,13 +129,18 @@
 			<version>4.1.68.Final</version>
 		</dependency>
 	</dependencies>
-	
+
 	<build>
 		<plugins>
 			<plugin>
 				<groupId>org.springframework.boot</groupId>
 				<artifactId>spring-boot-maven-plugin</artifactId>
 			</plugin>
+			<plugin>
+				<groupId>com.spotify</groupId>
+				<artifactId>docker-maven-plugin</artifactId>
+				<version>1.2.2</version>
+			</plugin>
 		</plugins>
 	</build>
 </project>

+ 3 - 2
audio-analysis/src/main/java/com/yonge/netty/dto/HardLevelEnum.java

@@ -9,7 +9,7 @@ public enum HardLevelEnum implements BaseEnum<String, HardLevelEnum> {
 	 * 完成度范围, 未演奏的范围
 	 */
 	//BEGINNER("入门级", 3, 5, 5, 5, 10, 10, 13, 15, 60, 10), 
-	BEGINNER("入门级", 5, 5, 3, 3, 6, 8, 13, 15, 95, 10), 
+	BEGINNER("入门级", 3, 5, 10, 10, 15, 15, 22, 22, 75, 25), 
 	/**
 	 * 进阶级, 振幅阈值, 频率阈值 <br>
 	 * 节奏有效范围(1分音符), 节奏有效范围(2分音符), 节奏有效范围(4分音符), 节奏有效范围(8分音符), 节奏有效范围(16分音符), 节奏有效范围(32分音符)<br>
@@ -22,7 +22,8 @@ public enum HardLevelEnum implements BaseEnum<String, HardLevelEnum> {
 	 * 节奏有效范围(1分音符), 节奏有效范围(2分音符), 节奏有效范围(4分音符), 节奏有效范围(8分音符), 节奏有效范围(16分音符), 节奏有效范围(32分音符)<br>
 	 * 完成度范围, 未演奏的范围
 	 */
-	PERFORMER("大师级", 3, 3, 3, 5, 10, 10, 13, 15, 95, 10);
+	//PERFORMER("大师级", 3, 3, 3, 5, 10, 10, 13, 15, 95, 10);
+	PERFORMER("大师级", 3, 3, 3, 3, 6, 8, 13, 15, 95, 10);
 
 	private String msg;
 

+ 6 - 2
audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java

@@ -732,7 +732,7 @@ public class UserChannelContext {
 
 		ChunkAnalysis firstChunkAnalysis = chunkAnalysisList.get(0);
 		
-		Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) < Double.doubleToLongBits(firstChunkAnalysis.getStartTime())).reduce((first, second) -> second);
+		Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(firstChunkAnalysis.getStartTime())).reduce((first, second) -> second);
 
 		ChunkAnalysis lastChunkAnalysis = null;
 		if (chunkAnalysisOptional.isPresent()) {
@@ -892,7 +892,7 @@ public class UserChannelContext {
 			return chunkList.stream().filter(t -> t.getAmplitude() > hardLevel.getAmplitudeThreshold()).count() <= 0;
 		}
 		
-		Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) < Double.doubleToLongBits(firstChunkAnalysis.getStartTime())).reduce((first, second) -> second);
+		Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(firstChunkAnalysis.getStartTime())).reduce((first, second) -> second);
 
 		ChunkAnalysis lastChunkAnalysis = new ChunkAnalysis(0, 0, -1, 0, 0, 0);;
 		if (chunkAnalysisOptional.isPresent()) {
@@ -915,6 +915,10 @@ public class UserChannelContext {
 		
 		//int range = hardLevel.getAmplitudeThreshold();
 		int range = 5;
+		
+		if(StringUtils.equalsIgnoreCase(evaluationCriteria, EvaluationCriteriaEnum.DECIBELS.getCode())) {
+			range = 50;
+		}
 
 		for (int i = 1; i < chunkAmplitudeList.size(); i++) {
 			if (chunkAmplitudeList.get(i - 1) + range >= chunkAmplitudeList.get(i)) {

+ 3 - 5
audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java

@@ -12,6 +12,7 @@ import com.ym.mec.biz.dal.enums.HeardLevelEnum;
 import com.ym.mec.biz.service.SysMusicCompareRecordService;
 import com.ym.mec.thirdparty.storage.StoragePluginContext;
 import com.ym.mec.thirdparty.storage.provider.KS3StoragePlugin;
+import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.upload.UploadUtil;
 import com.yonge.audio.analysis.AudioFloatConverter;
 import com.yonge.audio.utils.ArrayUtil;
@@ -54,9 +55,6 @@ public class AudioCompareHandler implements MessageHandler {
 	@Autowired
 	private SysMusicCompareRecordService sysMusicCompareRecordService;
 	
-    @Autowired
-    private StoragePluginContext storagePluginContext;
-
 	/**
 	 * @describe 采样率
 	 */
@@ -149,7 +147,7 @@ public class AudioCompareHandler implements MessageHandler {
 				
 				MusicXmlNote musicXmlNote = musicXmlBasicInfo.getMusicXmlInfos().stream().max(Comparator.comparing(MusicXmlNote::getTimeStamp)).get();
 				sysMusicCompareRecord.setSourceTime((float) ((musicXmlNote.getTimeStamp()+musicXmlNote.getDuration())/1000));
-				sysMusicCompareRecordService.insert(sysMusicCompareRecord, null);
+				sysMusicCompareRecordService.insert(sysMusicCompareRecord);
 				channelContext.setRecordId(sysMusicCompareRecord.getId());
 			}
 			break;
@@ -220,7 +218,7 @@ public class AudioCompareHandler implements MessageHandler {
 					
 					sysMusicCompareRecord.setHeardLevel(HeardLevelEnum.valueOf(channelContext.getHardLevel().name()));
 					
-					sysMusicCompareRecordService.saveMusicCompareData(sysMusicCompareRecord, musicXmlBasicInfo.getCampId());
+					sysMusicCompareRecordService.saveMusicCompareData(sysMusicCompareRecord);
 				}
 				
 				int totalPlayTimeOfCurrentDate = sysMusicCompareRecordService.queryCurrentDatePlayTimeByUserId(sysMusicCompareRecord.getUserId());

+ 4 - 6
mec-web/src/main/resources/bootstrap-prod.properties → audio-analysis/src/main/resources/bootstrap-pre.properties

@@ -1,16 +1,14 @@
-#\u6307\u5b9a\u5f00\u53d1\u73af\u5883
-#spring.profiles.active=dev
-#\u670d\u52a1\u5668\u5730\u5740
 spring.cloud.nacos.config.server-addr=10.206.0.12:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=b7aee20b-41e8-43d8-8e2d-45b6447f66ae
+spring.cloud.nacos.config.namespace=59e3c24c-a617-4632-a8d0-2766b3cf6d44
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
-spring.cloud.nacos.config.prefix=web
+spring.cloud.nacos.config.prefix=audio-analysis
 #\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
 spring.cloud.nacos.config.file-extension=yaml
 #\u662f\u5426\u52a8\u6001\u5237\u65b0
-spring.cloud.nacos.config.refresh.enabled=true
+spring.cloud.refresh.enabled=true
 #\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
 spring.cloud.nacos.config.enabled=true
+spring.cloud.nacos.config.shared-dataids=base.yaml

+ 3 - 2
audio-analysis/src/main/resources/bootstrap-prod.properties

@@ -3,7 +3,7 @@
 #\u670d\u52a1\u5668\u5730\u5740
 spring.cloud.nacos.config.server-addr=10.206.0.12:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=b7aee20b-41e8-43d8-8e2d-45b6447f66ae
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
@@ -11,6 +11,7 @@ spring.cloud.nacos.config.prefix=audio-analysis
 #\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
 spring.cloud.nacos.config.file-extension=yaml
 #\u662f\u5426\u52a8\u6001\u5237\u65b0
-spring.cloud.nacos.config.refresh.enabled=true
+spring.cloud.refresh.enabled=true
 #\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
 spring.cloud.nacos.config.enabled=true
+spring.cloud.nacos.config.shared-dataids=base.yaml

+ 20 - 2
audio-analysis/src/main/resources/logback-spring.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="10 seconds">
 
-	<property name="LOG_HOME" value="/mdata/logs/audio-analysis-%d{yyyy-MM-dd_HH}-%i.log" />
+	<property name="LOG_HOME" value="${LOG_HOME}/audio-analysis-%d{yyyy-MM-dd_HH}-%i.log" />
 	<property name="CONSOLE_LOG_PATTERN"
 		value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
 
@@ -27,6 +27,17 @@
 		</encoder>
 	</appender>
 
+	<appender name="plumelog" class="com.plumelog.logback.appender.RedisAppender">
+		<appName>mec-audio</appName>
+		<redisHost>10.206.0.13:26379,10.206.0.16:26379,10.206.0.8:26379</redisHost>
+		<redisAuth>dyym</redisAuth>
+		<model>sentinel</model>
+		<masterName>mymaster</masterName>
+		<env>prod</env>
+		<redisDb>10</redisDb>
+		<runModel>2</runModel>
+	</appender>
+
 	<logger name="com.yonge" level="info" />
 
 	<!--开发环境:打印控制台 -->
@@ -47,7 +58,14 @@
 	<!--生产环境:输出到文件 -->
 	<springProfile name="prod">
 		<root level="WARN">
-			<appender-ref ref="stdout" />
+			<appender-ref ref="plumelog" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+	<!--生产环境:输出到文件 -->
+	<springProfile name="pre">
+		<root level="WARN">
+			<appender-ref ref="plumelog" />
 			<appender-ref ref="file" />
 		</root>
 	</springProfile>

+ 0 - 1
cms/pom.xml

@@ -79,7 +79,6 @@
 			<artifactId>dynamic-datasource</artifactId>
 		</dependency>
 	</dependencies>
-	
 	<build>
 		<plugins>
 			<plugin>

+ 5 - 1
cms/src/main/java/com/ym/mec/cms/controller/NewsController.java

@@ -207,9 +207,13 @@ public class NewsController extends BaseController {
 	public Object listWithTree(Integer id, String memo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         Integer userId = null;
+        String organIds = "";
         if(sysUser != null && sysUser.getId() != null){
             userId = sysUser.getId();
+            if(id.equals(23)){
+                organIds = sysNewsInformationDao.queryTeacherOrgan(userId);
+            }
         }
-        return succeed(sysNewsTypeService.listWithTree(id,memo,userId));
+        return succeed(sysNewsTypeService.listWithTree(id,memo,userId,organIds));
 	}
 }

+ 3 - 1
cms/src/main/java/com/ym/mec/cms/dal/dao/SysNewsInformationDao.java

@@ -31,11 +31,13 @@ public interface SysNewsInformationDao extends BaseDAO<Long, SysNewsInformation>
 	
 	SysNewsInformationDto queryById(Long id);
 
-	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType,@Param("memo") String memo);
+	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType, @Param("memo") String memo, @Param("organIds") String organIds);
 
     Boolean countStudentAttendanceError(@Param("startTime") String startTime, @Param("userId") Integer userId);
 
     Integer queryHomework(Integer teacherId);
 
     int queryPractice(@Param("userId") Integer userId, @Param("date") String date);
+
+	String queryTeacherOrgan(Integer userId);
 }

+ 13 - 1
cms/src/main/java/com/ym/mec/cms/dal/entity/TenantInfo.java

@@ -1,5 +1,6 @@
 package com.ym.mec.cms.dal.entity;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -30,13 +31,24 @@ public class TenantInfo {
 	
 	/** 数据源 */
 	private String dataSource;
+
+	@ApiModelProperty(value = "管理员账号id")
+	private Integer userId;
 	
 	/**  */
 	private java.util.Date createTime;
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	public Integer getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
 	public void setId(Integer id){
 		this.id = id;
 	}

+ 1 - 1
cms/src/main/java/com/ym/mec/cms/service/SysNewsTypeService.java

@@ -13,5 +13,5 @@ public interface SysNewsTypeService extends BaseService<Integer, SysNewsType> {
 	//根据父级查询子集
 	List<SysNewsTypeTree> queryByParentId(Integer parentId);
 
-	List<SysNewsType> listWithTree(Integer id,String memo,Integer userId);
+	List<SysNewsType> listWithTree(Integer id,String memo,Integer userId,String organIds);
 }

+ 2 - 2
cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsInformationServiceImpl.java

@@ -21,7 +21,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.time.LocalDate;
 import java.util.*;
 
 @Service
@@ -90,6 +89,8 @@ public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNews
 		if(count == 0){
 			queryInfo.setMemo(null);
 		}
+		// App按钮查询时重置默认查询条件rows=100
+		queryInfo.setRows(100);
 		PageInfo<SysNewsInformation> app = queryHomePage(queryInfo);
 		if(!CollectionUtils.isEmpty(app.getRows()) && user != null && user.getId() != null){
 			
@@ -166,5 +167,4 @@ public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNews
 		}
 		return true;
 	}
-
 }

+ 5 - 6
cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsTypeServiceImpl.java

@@ -19,9 +19,7 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -61,14 +59,14 @@ public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType
         return sysNewsTypeDao.queryByParentId(parentId);
     }
 
-    public List<SysNewsType> listWithTree(Integer id, String memo,Integer userId) {
+    public List<SysNewsType> listWithTree(Integer id, String memo,Integer userId,String organIds) {
         SysNewsType newsType = sysNewsTypeDao.get(id);
         List<SysNewsType> all = sysNewsTypeDao.findAll(null);
         String startTime = DateUtil.format(DateUtil.getFirstDayOfMonth(DateUtil.addMonths(new Date(), -1)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
         all.forEach(e -> {
-            List<SysNewsInformation> list = informationDao.queryBySubType(e.getId(), memo);
+            List<SysNewsInformation> list = informationDao.queryBySubType(e.getId(), memo,organIds);
             if (CollectionUtils.isEmpty(list)) {
-            	list = informationDao.queryBySubType(e.getId(), null);
+            	list = informationDao.queryBySubType(e.getId(), null,organIds);
             }
             Iterator<SysNewsInformation> iterator = list.iterator();
 			SysNewsInformation sni = null;
@@ -120,4 +118,5 @@ public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType
                 .collect(Collectors.toList());
         return childrenList;
     }
+
 }

+ 4 - 3
mec-student/src/main/resources/bootstrap-prod.properties → cms/src/main/resources/bootstrap-pre.properties

@@ -3,14 +3,15 @@
 #\u670d\u52a1\u5668\u5730\u5740
 spring.cloud.nacos.config.server-addr=10.206.0.12:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=b7aee20b-41e8-43d8-8e2d-45b6447f66ae
+spring.cloud.nacos.config.namespace=59e3c24c-a617-4632-a8d0-2766b3cf6d44
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
-spring.cloud.nacos.config.prefix=student
+spring.cloud.nacos.config.prefix=cms
 #\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
 spring.cloud.nacos.config.file-extension=yaml
 #\u662f\u5426\u52a8\u6001\u5237\u65b0
-spring.cloud.nacos.config.refresh.enabled=true
+spring.cloud.refresh.enabled=true
 #\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
 spring.cloud.nacos.config.enabled=true
+spring.cloud.nacos.config.shared-dataids=base.yaml

+ 3 - 2
cms/src/main/resources/bootstrap-prod.properties

@@ -3,7 +3,7 @@
 #\u670d\u52a1\u5668\u5730\u5740
 spring.cloud.nacos.config.server-addr=10.206.0.12:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=b7aee20b-41e8-43d8-8e2d-45b6447f66ae
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
@@ -11,6 +11,7 @@ spring.cloud.nacos.config.prefix=cms
 #\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
 spring.cloud.nacos.config.file-extension=yaml
 #\u662f\u5426\u52a8\u6001\u5237\u65b0
-spring.cloud.nacos.config.refresh.enabled=true
+spring.cloud.refresh.enabled=true
 #\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
 spring.cloud.nacos.config.enabled=true
+spring.cloud.nacos.config.shared-dataids=base.yaml

+ 8 - 2
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -313,6 +313,9 @@
 		<if test="memo != null and memo !=''">
 			AND memo_ = #{memo}
 		</if>
+		<if test="organIds != null and organIds !=''">
+			AND (INTE_ARRAY(#{organIds},organ_id_list_) OR organ_id_list_ IS NULL OR organ_id_list_ = '')
+		</if>
 		ORDER BY order_ DESC
 	</select>
     <select id="countStudentAttendanceError" resultType="java.lang.Boolean">
@@ -321,10 +324,10 @@
 		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_ AND cssp.user_id_ = sa.user_id_
 		LEFT JOIN teacher_attendance ta on ta.course_schedule_id_ = cs.id_
 		LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
-		where cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND csts.user_id_ = #{userId} AND cs.status_ = 'OVER' AND cs.class_date_ BETWEEN #{startTime} AND DATE(NOW())
+		where cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1 AND csts.user_id_ = #{userId} AND cs.status_ = 'OVER' AND cs.class_date_ BETWEEN #{startTime} AND DATE(NOW())
 		AND (sa.id_ IS NULL OR (sa.status_ = 'TRUANT' AND sa.visit_flag_ = 0))
 		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
-		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
+		AND cs.merge_flag_ IN (0,1) AND cssp.id_ IS NOT NULL
 		AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
 	</select>
 
@@ -358,4 +361,7 @@
 
 
     </select>
+	<select id="queryTeacherOrgan" resultType="java.lang.String">
+		select organ_id_ from teacher where id_ = #{userId}
+	</select>
 </mapper>

+ 1 - 2
cms/src/main/resources/config/mybatis/TenantInfoMapper.xml

@@ -9,6 +9,7 @@
 		<result column="address_" property="address" />
 		<result column="domain_name_" property="domainName" />
 		<result column="logo_url_" property="logoUrl" />
+		<result column="user_id_" property="userId" />
 		<result column="contact_name_" property="contactName" />
 		<result column="contact_phone_" property="contactPhone" />
 		<result column="data_source_" property="dataSource" />
@@ -31,8 +32,6 @@
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.cms.dal.entity.TenantInfo"
 		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
-			AS ID FROM DUAL </selectKey> -->
 		INSERT INTO tenant_info
 		(id_,name_,address_,domain_name_,logo_url_,contact_name_,contact_phone_,data_source_,create_time_,update_time_)
 		VALUES(#{id},#{name},#{address},#{domainName},#{logoUrl},#{contactName},#{contactPhone},#{dataSource},#{createTime},#{updateTime})

+ 20 - 2
cms/src/main/resources/logback-spring.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="10 seconds">
 
-	<property name="LOG_HOME" value="/mdata/logs/cms-%d{yyyy-MM-dd_HH}-%i.log" />
+	<property name="LOG_HOME" value="${LOG_HOME}/cms-%d{yyyy-MM-dd_HH}-%i.log" />
 	<property name="CONSOLE_LOG_PATTERN"
 		value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
 
@@ -27,6 +27,17 @@
 		</encoder>
 	</appender>
 
+	<appender name="plumelog" class="com.plumelog.logback.appender.RedisAppender">
+		<appName>mec-audio</appName>
+		<redisHost>10.206.0.13:26379,10.206.0.16:26379,10.206.0.8:26379</redisHost>
+		<redisAuth>dyym</redisAuth>
+		<model>sentinel</model>
+		<masterName>mymaster</masterName>
+		<env>prod</env>
+		<redisDb>10</redisDb>
+		<runModel>2</runModel>
+	</appender>
+
 	<logger name="com.ym.mec" level="INFO" />
 
 	<!--本地环境:打印控制台 -->
@@ -55,7 +66,14 @@
 	<!--生产环境:输出到文件 -->
 	<springProfile name="prod">
 		<root level="WARN">
-			<appender-ref ref="stdout" />
+			<appender-ref ref="plumelog" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+	<!--生产环境:输出到文件 -->
+	<springProfile name="pre">
+		<root level="WARN">
+			<appender-ref ref="plumelog" />
 			<appender-ref ref="file" />
 		</root>
 	</springProfile>

+ 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>

+ 10 - 1
mec-application/src/main/java/com/ym/mec/AppServerApplication.java

@@ -5,6 +5,8 @@ import com.ym.mec.config.AppBeanNameGenerator;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.logging.LogLevel;
+import org.springframework.boot.logging.LoggingSystem;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.ComponentScan;
@@ -13,7 +15,7 @@ import org.springframework.context.annotation.Configuration;
 @SpringBootApplication
 @EnableDiscoveryClient
 @EnableFeignClients("com.ym.mec")
-@ComponentScan(basePackages = {"com.ym.mec", "org.snaker.engine", "com.yonge.log", "com.mec.redisson"})
+@ComponentScan(basePackages = {"com.ym.mec", "org.snaker.engine", "com.yonge.log", "com.mec.redisson", "com.dayaedu.cbs.openfeign"})
 @MapperScan(basePackages = {"com.ym.mec.biz.**.dao", "com.yonge.datasource.dao", "com.ym.mec.biz.dal.mapper"})
 @Configuration
 @EnableSwagger2Doc
@@ -22,5 +24,12 @@ public class AppServerApplication {
         new SpringApplicationBuilder(AppServerApplication.class)
                 .beanNameGenerator(new AppBeanNameGenerator())
                 .run(args);
+        configureGlobalLogger();
+    }
+
+    private static void configureGlobalLogger() {
+        LoggingSystem loggingSystem = LoggingSystem.get(ClassLoader.getSystemClassLoader());
+        // 设置业务日志记录器的日志级别为INFO
+        loggingSystem.setLogLevel("businessLogger", LogLevel.INFO);
     }
 }

+ 24 - 0
mec-application/src/main/java/com/ym/mec/config/CachingContentFilter.java

@@ -0,0 +1,24 @@
+package com.ym.mec.config;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.filter.OncePerRequestFilter;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * 替换Request对象
+ */
+@Component
+public class CachingContentFilter extends OncePerRequestFilter {
+
+    @Override
+    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
+        if (!(request instanceof MyServletRequestWrapper)) {
+            request = new MyServletRequestWrapper(request);
+        }
+        filterChain.doFilter(request, response);
+    }
+}

+ 106 - 0
mec-application/src/main/java/com/ym/mec/config/MyServletRequestWrapper.java

@@ -0,0 +1,106 @@
+package com.ym.mec.config;
+
+import org.apache.commons.io.IOUtils;
+import javax.servlet.ReadListener;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+/**
+ * 包装HttpServletRequest
+ */
+public class MyServletRequestWrapper extends HttpServletRequestWrapper {
+
+    private final byte[] body;
+
+    public MyServletRequestWrapper(HttpServletRequest request) throws IOException {
+        super(request);
+        body = IOUtils.toByteArray(super.getInputStream());
+    }
+
+    @Override
+    public BufferedReader getReader() throws IOException {
+        return new BufferedReader(new InputStreamReader(getInputStream()));
+    }
+
+    @Override
+    public ServletInputStream getInputStream() throws IOException {
+        return new RequestBodyCachingInputStream(body);
+    }
+
+    private class RequestBodyCachingInputStream extends ServletInputStream {
+        private byte[] body;
+        private int lastIndexRetrieved = -1;
+        private ReadListener listener;
+
+        public RequestBodyCachingInputStream(byte[] body) {
+            this.body = body;
+        }
+
+        @Override
+        public int read() throws IOException {
+            if (isFinished()) {
+                return -1;
+            }
+            int i = body[lastIndexRetrieved + 1];
+            lastIndexRetrieved++;
+            if (isFinished() && listener != null) {
+                try {
+                    listener.onAllDataRead();
+                } catch (IOException e) {
+                    listener.onError(e);
+                    throw e;
+                }
+            }
+            return i;
+        }
+
+        @Override
+        public boolean isFinished() {
+            return lastIndexRetrieved == body.length - 1;
+        }
+
+        @Override
+        public boolean isReady() {
+            return isFinished();
+        }
+
+        @Override
+        public void setReadListener(ReadListener listener) {
+            if (listener == null) {
+                throw new IllegalArgumentException("listener cann not be null");
+            }
+            if (this.listener != null) {
+                throw new IllegalArgumentException("listener has been set");
+            }
+            this.listener = listener;
+            if (!isFinished()) {
+                try {
+                    listener.onAllDataRead();
+                } catch (IOException e) {
+                    listener.onError(e);
+                }
+            } else {
+                try {
+                    listener.onAllDataRead();
+                } catch (IOException e) {
+                    listener.onError(e);
+                }
+            }
+        }
+
+        @Override
+        public int available() throws IOException {
+            return body.length - lastIndexRetrieved - 1;
+        }
+
+        @Override
+        public void close() throws IOException {
+            lastIndexRetrieved = body.length - 1;
+            body = null;
+        }
+    }
+}

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

@@ -66,7 +66,8 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                         "/api-web/tenantInfo/info/*", "/api-web/tenantInfo/checkInfo/*", "/api-web/tenantInfo/pay/*","/api-web/tenantInfo/testCheck", "/api-web/tenantInfo/getContract/*",
                         "/api-web/tenantPreJoin/add","/api-web/imLiveBroadcastRoom/queryRoomInfo","/api-web/imLiveBroadcastRoom/test",
                         "/api-web/eduOrganization/queryAllOrgan","/api-web/eduOrganization/queryAll","/api-web/eduOrganization/getOrganCooperation","/api-web/import/oaUploadFile",
-                        "/api-web/tenantInfo/callback/**","/api-web/adapay/callback","/api-web/temp/*", "/api-web/open/**","/api-web/schoolActivity/detail/*","/api-web/yeepay/callback/**"
+                        "/api-web/tenantInfo/callback/**","/api-web/adapay/callback","/api-web/temp/*", "/api-web/open/**","/api-web/schoolActivity/detail/*",
+                        "/api-web/yeepay/callback/**","/api-web/hfMerchantConfig/queryByTenantId"
 
                 )
                 .permitAll().anyRequest().authenticated().and().httpBasic();

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

@@ -1,20 +1,11 @@
 package com.ym.mec.student.controller;
 
-import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.ActivityDetailDto;
-import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.VipGroupActivity;
-import com.ym.mec.biz.service.MarketActivityService;
-import com.ym.mec.biz.service.SporadicChargeInfoService;
-import com.ym.mec.biz.service.SysUserService;
-import com.ym.mec.biz.service.VipGroupActivityService;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
@@ -22,7 +13,10 @@ import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -51,7 +45,13 @@ public class ActivityController extends BaseController {
     @Autowired
     private StudentDao studentDao;
     @Autowired
+    private VipGroupDao vipGroupDao;
+    @Autowired
     private VipGroupCategoryDao vipGroupCategoryDao;
+    @Autowired
+    private MusicGroupPlanMakingService musicGroupPlanMakingService;
+    @Autowired
+    private SubjectService subjectService;
 
     @ApiOperation("活动购买")
     @PostMapping(value = "/buy")
@@ -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("分部活动不存在");
@@ -109,7 +109,7 @@ public class ActivityController extends BaseController {
         return succeed(resultMap);
     }
 
-    @ApiOperation("获取2022云教练活动列表")
+/*    @ApiOperation("获取2022云教练活动列表")
     @PostMapping(value = "/queryActivity")
     @AuditLogAnnotation(operateName = "获取2022云教练活动列表")
     public HttpResponseResult<List<VipGroupActivity>> queryActivity(){
@@ -117,8 +117,43 @@ public class ActivityController extends BaseController {
         List<Cloud2022ActivityDto> cloud2022ActivityDtos = JSONArray.parseArray(configValue, Cloud2022ActivityDto.class);
         String collect = cloud2022ActivityDtos.stream().map(e -> e.getActivityId()).collect(Collectors.joining(","));
         return succeed(vipGroupActivityService.getDao().queryByIds(collect));
+    }*/
+
+    @ApiOperation("获取2023乐理直播活动列表")
+    @PostMapping(value = "/queryTheoryLiveActivity")
+    @AuditLogAnnotation(operateName = "获取2023乐理直播活动列表")
+    public HttpResponseResult<List<VipGroup>> queryTheoryLiveActivity(){
+        String configValue = sysConfigDao.findConfigValue("2023_double_eleven_active_config");
+        JSONObject jsonObject = JSONObject.parseObject(configValue);
+        String theoryLive = jsonObject.getString("theoryLive");
+        //转换成long数组
+        List<Long> longs = Arrays.stream(theoryLive.split(",")).map(Long::parseLong).collect(Collectors.toList());
+        return succeed(vipGroupDao.getVipGroupByIds(longs));
+    }
+    @ApiOperation("获取2023商品列表")
+    @PostMapping(value = "/queryGoodsActivity")
+    @AuditLogAnnotation(operateName = "获取2023商品列表")
+    public HttpResponseResult<JSONObject> queryGoodsActivity(){
+        String configValue = sysConfigDao.findConfigValue("2023_double_eleven_active_config");
+        JSONObject jsonObject = JSONObject.parseObject(configValue);
+        return succeed(jsonObject.getJSONObject("musical"));
+    }
+    @ApiOperation("校验用户分部是否参与活动")
+    @PostMapping(value = "/checkActivityOrgan")
+    @AuditLogAnnotation(operateName = "校验用户分部是否参与活动")
+    public HttpResponseResult<Boolean> checkActivityOrgan(){
+        String configValue = sysConfigDao.findConfigValue("2023_activity_organ");
+        if (StringUtils.isEmpty(configValue)) {
+            return succeed(true);
+        }
+        SysUser user = sysUserService.getUser();
+        if(configValue.contains(user.getOrganId().toString())){
+            return succeed(true);
+        }
+        return succeed(false);
     }
 
+
     @ApiOperation(value = "学员已购买的双十一活动信息")
     @GetMapping("/queryStudentDoubleEleven2022Order")
     public Object queryStudentDoubleEleven2022Order() {
@@ -169,6 +204,25 @@ public class ActivityController extends BaseController {
         return succeed(vipGroupActivity);
     }
 
+    @ApiOperation(value = "查询乐团编制")
+    @GetMapping(value = "/querySubject")
+    public HttpResponseResult<MusicGroupPlanMakingDto> query(Integer id) throws Exception {
+        MusicGroupPlanMaking pm = musicGroupPlanMakingService.get(id);
+
+        if (pm != null) {
+            MusicGroupPlanMakingDto dto = new MusicGroupPlanMakingDto();
+
+            BeanUtils.copyProperties(pm, dto);
+
+            List<Subject> subjectList = subjectService.findBySubjectByIdList(pm.getSubjectIdList());
+            if (subjectList != null) {
+                dto.setSubjectMap(subjectList.stream().collect(Collectors.toMap(Subject::getId, Subject::getName)));
+            }
+            return succeed(dto);
+        }
+        return succeed();
+    }
+
     @ApiOperation(value = "根据课程类型获取对应课程活动方案")
     @GetMapping("/findByVipGroupCategory")
     public HttpResponseResult<List<VipGroupActivity>> findByVipGroupCategory(){

+ 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();

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

@@ -82,7 +82,7 @@ public class ImGroupController extends BaseController {
             return failed(HttpStatus.NO_CONTENT, "群组不存在");
         }
 		// 设置默认头像
-		if (Objects.nonNull(imGroup.getGroupType()) && StringUtils.isBlank(imGroup.getImg())) {
+		if (Objects.nonNull(imGroup) && Objects.nonNull(imGroup.getGroupType()) && StringUtils.isBlank(imGroup.getImg())) {
 			imGroup.setImg(imGroup.getGroupType().getAvatar());
 		}
 		return succeed(imGroup);

+ 72 - 0
mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java

@@ -0,0 +1,72 @@
+package com.ym.mec.student.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayaedu.cbs.openfeign.client.CoursewareFeignService;
+import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
+import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
+import com.ym.mec.biz.service.LessonCoursewareService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+@RequestMapping("${app-config.url.student:}/lessonCourseware")
+@Api(tags = "课件教材")
+@RestController
+public class LessonCoursewareController extends BaseController {
+
+	@Resource
+	private CoursewareFeignService coursewareFeignService;
+	@Resource
+	private LessonCoursewareService lessonCoursewareService;
+
+	@ApiOperation(value = "分页查询已添加的课件")
+	@PostMapping("/queryLessonCourseware")
+	public HttpResponseResult<PageInfo<LessonCoursewareWrapper.LessonCoursewareDto>> queryLessonCourseware(@RequestBody LessonCoursewareWrapper.LessonCoursewareQuery query){
+		query.setEnable(true);
+		IPage<LessonCoursewareWrapper.LessonCoursewareDto> pages = lessonCoursewareService.selectPage(QueryInfo.getPage(query), query);
+		return succeed(PageUtil.pageInfo(pages));
+	}
+
+	@ApiOperation(value = "获取课件详情")
+	@GetMapping("/getLessonCoursewareDetail/{id}")
+	public HttpResponseResult<CbsLessonCoursewareWrapper.LessonCourseware> getLessonCoursewareDetail(@PathVariable("id") Long id){
+		return succeed(coursewareFeignService.lessonCoursewareDetail(id).feignData());
+	}
+
+	@ApiOperation(value = "获取课件关联的课程列表")
+	@GetMapping("/getLessonCoursewareCourseList/{id}")
+	public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id){
+		List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(id).feignData();
+		if (CollectionUtils.isNotEmpty(courseScheduleCoursewareDetails)) {
+			String jsonString = JSONObject.toJSONString(courseScheduleCoursewareDetails);
+			List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetailList = JSONObject.parseArray(jsonString, LessonCoursewareWrapper.CourseScheduleCoursewareDetail.class);
+			return succeed(courseScheduleCoursewareDetailList);
+		}
+		return succeed(new ArrayList<>());
+	}
+
+	@ApiOperation(value = "获取课程详情")
+	@GetMapping("/getLessonCourseDetail/{id}")
+	public HttpResponseResult<CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") String id){
+		return succeed(coursewareFeignService.lessonCoursewareDetailDetail(Long.parseLong(id)).feignData());
+	}
+
+	@ApiOperation(value = "获取课件关联的声部列表")
+	@GetMapping("/getLessonCoursewareSubjectList")
+	public HttpResponseResult<List<Subject>> getLessonCoursewareSubjectList(){
+		return succeed(lessonCoursewareService.getDao().getLessonCoursewareSubjectList());
+	}
+}

+ 3 - 0
mec-application/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -131,6 +131,9 @@ public class MusicGroupController extends BaseController {
             //如果乐器和辅件都买过/那么看是否购买过其他的缴费项
             if (typeList.contains(OrderDetailTypeEnum.MUSICAL) && typeList.contains(OrderDetailTypeEnum.ACCESSORIES)) {
                 MusicGroupPaymentCalender paymentCalender = musicGroupPaymentCalenderService.getApplyCalenderByMusicId(musicGroupId);
+                if(Objects.isNull(paymentCalender)){
+                    throw new BizException("当前乐团不存在报名缴费项,请联系管理员");
+                }
                 HashMap<String, Object> calenderDetail = new HashMap<>(5);
                 musicGroupPaymentCalenderService.getCalenderDetail(calenderDetail,paymentCalender.getId());
                 boolean flag = true;

+ 9 - 30
mec-application/src/main/java/com/ym/mec/student/controller/RepairController.java

@@ -1,7 +1,6 @@
 package com.ym.mec.student.controller;
 
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.StudentGoodsSell;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
@@ -34,7 +33,7 @@ import java.util.Optional;
 public class RepairController extends BaseController {
 
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private StudentRepairService studentRepairService;
     @Autowired
@@ -50,11 +49,7 @@ public class RepairController extends BaseController {
     @PostMapping(value = "/addGoodsSellOrder")
     public HttpResponseResult addGoodsSellOrder(@RequestBody StudentGoodsSell studentGoodsSell) throws Exception {
         if(studentGoodsSell.getUserId() == null){
-            SysUser sysUser = sysUserFeignService.queryUserInfo();
-            if (sysUser == null) {
-                throw new BizException("请登录");
-            }
-            studentGoodsSell.setUserId(sysUser.getId());
+            studentGoodsSell.setUserId(sysUserService.getUserId());
         }
         if (studentGoodsSell.getIsRepeatPay() == false) {
             List<StudentPaymentOrder> list = studentPaymentOrderService.queryByCondition(GroupType.GOODS_SELL, null, studentGoodsSell.getUserId(), DealStatusEnum.ING,
@@ -94,11 +89,7 @@ public class RepairController extends BaseController {
     @ApiOperation("获取维修记录")
     @GetMapping(value = "/getStudentRepairList")
     public HttpResponseResult getStudentRepairList(RepairStudentQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        queryInfo.setStudentId(sysUser.getId());
+        queryInfo.setStudentId(sysUserService.getUserId());
         queryInfo.setPayStatus(2);
         return succeed(studentRepairService.queryPage(queryInfo));
     }
@@ -107,7 +98,7 @@ public class RepairController extends BaseController {
     @GetMapping(value = "/getRepairInfo")
     public HttpResponseResult getRepairInfo(Integer id,Integer studentId) {
         Optional.ofNullable(studentId)
-                .map(sysUserFeignService::queryUserById)
+                .map(sysUserService::queryUserById)
                 .orElseThrow(() -> new BizException("用户信息获取失败"));
 
         StudentRepair repairInfo = studentRepairService.getRepairInfo(id);
@@ -120,31 +111,23 @@ public class RepairController extends BaseController {
     @ApiOperation("支付维修单")
     @PostMapping(value = "/payRepair")
     public HttpResponseResult payRepair(@RequestBody StudentRepair repairInfo) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        sysUserService.getUser();
         return succeed(studentRepairService.payRepair(repairInfo));
     }
 
     @ApiOperation("获取维修技师信息")
     @PostMapping(value = "/getRepairer")
     public HttpResponseResult getRepairer() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = sysUserService.getUser();
         return succeed(studentRepairService.getStudentRepairer(sysUser.getId(),sysUser.getOrganId()));
     }
 
     @ApiOperation(value = "分页查询商品(教材、辅件)列表")
     @GetMapping("/queryGoodsPage")
     public Object queryPage(GoodsQueryInfo queryInfo){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            throw new BizException("请先登录");
-        }
+        SysUser sysUser = sysUserService.getUser();
         queryInfo.setStudentShowOrganId(sysUser.getOrganId().toString());
+        queryInfo.setTenantId(sysUser.getTenantId());
         return succeed(goodsService.queryPage(queryInfo));
     }
 
@@ -157,11 +140,7 @@ public class RepairController extends BaseController {
     @ApiOperation(value = "分页查询学员商品订单")
     @GetMapping("/queryStudentGoodsOrders")
     public Object queryStudentGoodsOrders(GoodsSellQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        queryInfo.setStudentId(sysUser.getId());
+        queryInfo.setStudentId(sysUserService.getUserId());
         return succeed(studentGoodsSellService.queryStudentGoodsOrders(queryInfo));
     }
 

+ 22 - 2
mec-application/src/main/java/com/ym/mec/student/controller/SmsCodeController.java

@@ -5,6 +5,7 @@ import com.wf.captcha.utils.CaptchaUtil;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.service.SmsCodeService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.security.SecurityConstants;
 import io.swagger.annotations.Api;
@@ -37,8 +38,27 @@ public class SmsCodeController extends BaseController {
     @ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String")
     @PostMapping(value = "/sendSms")
     public Object sendLoginVerifyCode(String mobile) throws Exception {
-        smsCodeService.sendValidCode(mobile);
-        return succeed();
+        throw new BizException("你所使用的不是最新版本,请更新后使用");
+    }
+
+    @ApiOperation(value = "发送登录短信验证码")
+    @ApiImplicitParams({ @ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "code", value = "验证码", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "type", value = "验证码类型(register  login)", required = true, dataType = "String")})
+    @PostMapping(value = "/sendSmsCode")
+    public HttpResponseResult<Object> sendLoginVerifyCode1(String mobile, String code,String type) throws Exception {
+        if(StringUtils.isEmpty(mobile) || StringUtils.isEmpty(code)){
+            return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
+        }
+        String redisKey = MessageTypeEnum.KAPTCHA_SESSION_KEY + mobile;
+        RBucket<String> bucket = redissonClient.getBucket(redisKey);
+        if(bucket.isExists()){
+            if(StringUtils.equalsIgnoreCase(bucket.get(),code)){
+                smsCodeService.sendValidCode(mobile);
+                return succeed();
+            }
+        }
+        return failed(SecurityConstants.VERIFY_FAILURE);
     }
 
     @ApiOperation(value = "校验短信验证码")

+ 25 - 12
mec-application/src/main/java/com/ym/mec/student/controller/SporadicChargeInfoController.java

@@ -11,6 +11,7 @@ import com.ym.mec.biz.dal.enums.PayStatus;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.biz.service.SporadicChargeInfoService;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
@@ -18,6 +19,7 @@ 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;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
@@ -33,7 +35,7 @@ public class SporadicChargeInfoController extends BaseController {
     @Autowired
     private SporadicChargeInfoService sporadicChargeInfoService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
@@ -44,7 +46,21 @@ public class SporadicChargeInfoController extends BaseController {
     @ApiOperation(value = "单查询")
     @GetMapping("/get")
     public Object get(Integer id, Integer userId) {
-        return succeed(sporadicChargeInfoService.findDetail(id, userId));
+        SysUser sysUser = sysUserService.getUser();
+        SporadicChargeInfo detail = sporadicChargeInfoService.findDetail(id, userId);
+        if (detail == null) {
+            throw new BizException("数据不存在");
+        }
+        if (StringUtils.isNotEmpty(detail.getOrganId())) {
+            String[] split = detail.getOrganId().split(",");
+            for (String s : split) {
+                if (StringUtils.equals(s,sysUser.getOrganId().toString())) {
+                    return succeed(detail);
+                }
+            }
+            throw new BizException("您所在分部不参与此活动");
+        }
+        return succeed(detail);
     }
 
 
@@ -57,11 +73,9 @@ public class SporadicChargeInfoController extends BaseController {
             throw new BizException("参数校验失败");
         }
         if (sporadicPayDto.getUserId() == null) {
-            SysUser sysUser = sysUserFeignService.queryUserInfo();
-            if (sysUser == null || sysUser.getId() == null) {
-                return failed("用户不存在");
-            }
+            SysUser sysUser = sysUserService.getUser();
             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 +90,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++) {
@@ -112,19 +128,16 @@ public class SporadicChargeInfoController extends BaseController {
     @GetMapping("/activityInfo")
     @ApiImplicitParams({@ApiImplicitParam(name = "type", value = "类型(福袋活动6)", required = true, dataType = "String")})
     public HttpResponseResult activityInfo(Integer type) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        SysUser sysUser = sysUserService.getUser();
         if (sysUser == null || sysUser.getId() == null) {
             return failed("请先登录");
         }
-        if (sysUser.getOrganId() == null) {
-            return failed("用户信息有误,没有分部信息");
-        }
         Integer organId = sysUser.getOrganId();
 
         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("分部活动不存在");
         }

+ 18 - 0
mec-application/src/main/java/com/ym/mec/student/controller/StudentController.java

@@ -2,9 +2,11 @@ package com.ym.mec.student.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.RegisterUserDto;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.StudentPreRegistration;
 import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -25,6 +27,8 @@ public class StudentController extends BaseController {
 
     @Resource
     private SysUserFeignService sysUserFeignService;
+	@Resource
+	private SysUserService sysUserService;
     @Autowired
     private StudentService studentService;
 
@@ -57,4 +61,18 @@ public class StudentController extends BaseController {
 		}
 		return succeed();
 	}
+
+	@ApiOperation("补充基本信息")
+	@PostMapping(value = "/updateBasicInfo")
+	public Object updateBasicInfo(RegisterUserDto registerUserDto) {
+		SysUser user = sysUserService.getUser();
+		user.setUsername(registerUserDto.getUsername());
+		sysUserService.updateSysUser(user);
+		Student student = studentService.get(user.getId());
+		student.setSubjectIdList(registerUserDto.getSubjectId().toString());
+		student.setCurrentGradeNum(registerUserDto.getCurrentGradeNum());
+		student.setUpdateTime(new Date());
+		studentService.update(student);
+		return succeed();
+	}
 }

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

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
 import com.ym.mec.biz.dal.dto.CashAccountDetail;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.page.SysSuggestionQueryInfo;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.biz.service.im.ImGroupCoreService;
@@ -19,12 +20,14 @@ import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 import com.ym.mec.util.upload.UploadUtil;
 import io.swagger.annotations.*;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -42,7 +45,7 @@ public class StudentManageController extends BaseController {
     @Autowired
     private SysSuggestionService suggestionService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private SysUserCashAccountService sysUserCashAccountService;
     @Autowired
@@ -129,10 +132,7 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "新增建议")
     @PostMapping("suggestion/add")
     public Object add(SysSuggestion sysSuggestion) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("请重新登录");
-        }
+        SysUser sysUser = sysUserService.getUser();
     	sysSuggestion.setClientType("STUDENT");
         sysSuggestion.setUserId(sysUser.getId().longValue());
         if(StringUtils.isEmpty(sysSuggestion.getMobileNo())){
@@ -142,14 +142,26 @@ public class StudentManageController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "分页查询")
+    @PostMapping("sysSuggestion/queryPage")
+    public Object queryPage(@RequestBody SysSuggestionQueryInfo queryInfo) {
+        queryInfo.setUserId(sysUserService.getUserId());
+        queryInfo.setClientType("STUDENT");
+        return succeed(suggestionService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "获取详情")
+    @GetMapping("sysSuggestion/detail")
+    public HttpResponseResult<SysSuggestion> detail(Long id) {
+        return succeed(suggestionService.getDetail(id));
+    }
+
+
 
     @ApiOperation(value = "获取学员基本信息")
     @GetMapping("student/queryUserInfo")
 	public Object queryUserInfo(String platform) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
+		SysUser user = sysUserService.getUser();
 		Student student = studentService.get(user.getId());
 		student.setId(user.getId());
 		student.setUsername(user.getUsername());
@@ -271,21 +283,14 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "获取用户账户信息")
     @GetMapping("userCashAccount/get")
     public Object add() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("请重新登录");
-        }
-        return succeed(sysUserCashAccountService.get(sysUser.getId()));
+        SysUser sysUser = sysUserService.getUser();
+        return succeed(sysUserCashAccountService.get(sysUserService.getUserId()));
     }
 
     @ApiOperation(value = "分页查询用户交易明细")
     @GetMapping("userCashAccountDetail/queryPage")
     public Object queryPage(CashAccountDetail queryInfo) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(user == null || user.getId() != null){
-            return failed("请重新登录");
-        }
-        queryInfo.setUserId(user.getId());
+        queryInfo.setUserId(sysUserService.getUserId());
         return succeed(sysUserCashAccountDetailService.queryPage(queryInfo));
     }
 
@@ -295,11 +300,7 @@ public class StudentManageController extends BaseController {
         if(sysUserBankCard == null){
             return failed("参数校验异常");
         }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null || sysUser.getId() == null){
-            return failed("获取用户失败");
-        }
-        sysUserBankCard.setUserId(sysUser.getId());
+        sysUserBankCard.setUserId(sysUserService.getUserId());
         return succeed(sysUserBankCardService.add(sysUserBankCard));
     }
 
@@ -309,36 +310,24 @@ public class StudentManageController extends BaseController {
         if(id == null){
             return failed("参数校验失败");
         }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null || sysUser.getId() == null){
-            return failed("获取用户信息失败");
-        }
-        sysUserBankCardService.del(id,sysUser.getId());
+        sysUserBankCardService.del(id,sysUserService.getUserId());
         return succeed();
     }
 
     @ApiOperation(value = "分页查询银行卡信息列表")
     @GetMapping("userBankCard/queryPage")
     public Object queryPage() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null || sysUser.getId() == null){
-            return failed("获取用户失败");
-        }
-        return succeed(sysUserBankCardService.findByUser(sysUser.getId()));
+        return succeed(sysUserBankCardService.findByUser(sysUserService.getUserId()));
     }
 
     @ApiOperation(value = "修改用户")
     @PostMapping(value = "user/update", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
     public Object update(SysUser sysUser) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user != null) {
-            Date date = new Date();
-            sysUser.setId(user.getId());
-            sysUser.setUpdateTime(date);
-            studentManageService.updateUser(sysUser);
-            return succeed();
-        }
-        return failed("获取用户失败");
+        Date date = new Date();
+        sysUser.setId(sysUserService.getUserId());
+        sysUser.setUpdateTime(date);
+        studentManageService.updateUser(sysUser);
+        return succeed();
     }
 
     /**
@@ -360,11 +349,7 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "获取用户所在分部的年级列表)")
     @GetMapping("studentManage/getGradeList")
     public HttpResponseResult<Map<Integer,String>> getGradeList() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("请重新登录");
-        }
-        return succeed(organizationService.getGradeList(sysUser.getOrganId()));
+        return succeed(organizationService.getGradeList(sysUserService.getUser().getOrganId()));
     }
 
     @ApiOperation(value = "url短链接")

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

@@ -97,8 +97,6 @@ public class StudentOrderController extends BaseController {
     @Autowired
     private VipGroupActivityService vipGroupActivityService;
     @Autowired
-    private SellOrderService sellOrderService;
-    @Autowired
     private TenantOrderRecordService tenantOrderRecordService;
     @Autowired
     private OrderPayOpsService orderPayOpsService;
@@ -477,7 +475,7 @@ public class StudentOrderController extends BaseController {
     @GetMapping("/setSuccessStatus")
     public HttpResponseResult setSuccessStatus(String orderNo) throws Exception {
         if (!profiles.equals("dev") && !profiles.equals("test")) {
-            return failed("非法操作");
+//            return failed("非法操作");
         }
         List<StudentPaymentOrder> payingOrders = studentPaymentOrderService.findOrdersByStatus(DealStatusEnum.ING);
 
@@ -888,34 +886,6 @@ public class StudentOrderController extends BaseController {
         return succeed(musicGroupRegCalender);
     }
 
-    @GetMapping("fixSellOrder")
-    public HttpResponseResult<List<SellOrder>> fixSellOrder(String orderNo) {
-        StudentPaymentOrder order = studentPaymentOrderService.findOrderByOrderNo(orderNo);
-        List<SellOrder> sellOrders = new ArrayList<>();
-        if (order == null || !order.getStatus().equals(DealStatusEnum.SUCCESS) || !order.getType().equals(OrderTypeEnum.APPLY)) {
-            return succeed(sellOrders);
-        }
-
-        List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailService.getOrderGoodsDetail(order.getId());
-        //销售订单详情
-        if (orderDetails.size() > 0) {
-            MusicGroup musicGroup = musicGroupService.get(order.getMusicGroupId());
-            BigDecimal couponRemitFee = order.getCouponRemitFee();
-            if (couponRemitFee.compareTo(BigDecimal.ZERO) > 0) {
-                BigDecimal musicFee = orderDetails.stream().filter(o -> o.getType().getCode().equals("MUSICAL")
-                                || o.getType().getCode().equals("ACCESSORIES") || o.getType().getCode().equals("TEACHING"))
-                        .map(o -> o.getPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
-                BigDecimal expectAmount = order.getExpectAmount();
-                //获取比例
-                BigDecimal ratioAmount = musicFee.divide(expectAmount, 6, BigDecimal.ROUND_HALF_UP);
-                //获取分配的减免金额
-                couponRemitFee = couponRemitFee.multiply(ratioAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
-            }
-            sellOrders = sellOrderService.addOrderDetail2SellOrder(orderDetails, order, musicGroup, couponRemitFee);
-        }
-        return succeed(sellOrders);
-
-    }
 
     @ApiImplicitParams({
             @ApiImplicitParam(name = "queryDate", dataType = "String", value = "年月"),

+ 5 - 3
mec-application/src/main/java/com/ym/mec/student/controller/SysMusicCompareRecordController.java

@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Date;
 import java.util.Objects;
 
 /**
@@ -36,17 +37,18 @@ public class SysMusicCompareRecordController extends BaseController {
 
     @ApiOperation(value = "添加记录")
     @PostMapping("add")
-    public HttpResponseResult add(SysMusicCompareRecord record,Integer campId){
+    public HttpResponseResult add(SysMusicCompareRecord record){
         if(Objects.isNull(record.getFeature())){
             return failed("请设置功能点");
         }
         Integer userId = sysUserService.getUserId();
         record.setUserId(userId);
         record.setClientId("student");
+        record.setCreateTime(new Date());
 
-        log.warn(" add record info; record:{},campId :{}",record,campId);
+        log.warn(" add record info; record:{}",record);
         
-        sysMusicCompareRecordService.insert(record,campId);
+        sysMusicCompareRecordService.insert(record);
         
         ModelMap model = new ModelMap();
         model.put("totalPlayTimeOfCurrentDate", sysMusicCompareRecordService.queryCurrentDatePlayTimeByUserId(userId));

+ 23 - 19
mec-application/src/main/java/com/ym/mec/student/controller/SysMusicScoreCategoriesController.java

@@ -1,34 +1,31 @@
 package com.ym.mec.student.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.dto.MusicScoreQueryInfo;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.TenantConfig;
 import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
+import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.SysMusicScoreCategoriesService;
-import com.ym.mec.biz.service.TenantConfigService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+
 @RequestMapping("${app-config.url.student:}/sysMusicScoreCategories")
 @Api(tags = "曲库分类服务")
 @RestController
 public class SysMusicScoreCategoriesController extends BaseController {
 
-    @Autowired
+    @Resource
     private SysMusicScoreCategoriesService sysMusicScoreCategoriesService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-    
-    @Autowired
-    private TenantConfigService tenantConfigService;
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
+    private OrganizationService organizationService;
 
 
     @ApiOperation(value = "分页查询")
@@ -40,14 +37,21 @@ public class SysMusicScoreCategoriesController extends BaseController {
     @ApiOperation(value = "树状列表")
     @GetMapping("/queryTree")
     public Object queryTree(MusicScoreQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null || sysUser.getId() == null){
-        	return failed(HttpStatus.FORBIDDEN, "请登录");
+        SysUser sysUser = sysUserService.getUser();
+        String teachingMaterialIds = organizationService.getTeachingMaterialIds(sysUser.getOrganId().toString(),sysUser.getTenantId());
+        return succeed(sysMusicScoreCategoriesService.queryCategoriesTreeList(teachingMaterialIds, queryInfo.getEnable()));
+    }
+
+    @ApiOperation(value = "树状列表")
+    @GetMapping("/queryTree1")
+    public Object queryTree1(MusicScoreQueryInfo queryInfo) {
+        queryInfo.setEnable(true);
+        SysUser sysUser = sysUserService.getUser();
+        String teachingMaterialIds = organizationService.getTeachingMaterialIds(sysUser.getOrganId().toString(),sysUser.getTenantId());
+        if(teachingMaterialIds.contains(queryInfo.getParentId().toString())){
+            return succeed(sysMusicScoreCategoriesService.queryTree(queryInfo));
         }
-        
-        TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>().eq("tenant_id_", sysUser.getTenantId()));
-        
-        return succeed(sysMusicScoreCategoriesService.queryCategoriesTreeList(tenantConfig.getTeachingMaterialId(), queryInfo.getEnable()));
+        return succeed();
     }
 
     @ApiOperation(value = "获取分类详情")

+ 36 - 0
mec-application/src/main/java/com/ym/mec/student/controller/SysSuggestionTypeController.java

@@ -0,0 +1,36 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.entity.SysSuggestionType;
+import com.ym.mec.biz.service.SysSuggestionTypeService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.tenant.TenantContextHolder;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Api(tags = "意见反馈类型")
+@RestController
+@RequestMapping("${app-config.url.student:}/sysSuggestionType/")
+public class SysSuggestionTypeController extends BaseController {
+
+    @Autowired
+    private SysSuggestionTypeService sysSuggestionTypeService;
+
+    @ApiOperation(value = "查询所有")
+    @PostMapping("queryAll")
+    public HttpResponseResult<List<SysSuggestionType>> queryAll() {
+        return succeed(sysSuggestionTypeService.lambdaQuery()
+                .eq(SysSuggestionType::getTenantId, TenantContextHolder.getTenantId())
+                .orderByDesc(SysSuggestionType::getId).list());
+    }
+
+}

+ 64 - 0
mec-application/src/main/java/com/ym/mec/student/controller/UserController.java

@@ -0,0 +1,64 @@
+package com.ym.mec.student.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserInfoWrapper;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 用户通讯录表(ImUserFriend)表控制层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:59
+ */
+@Api(tags = "用户通讯录表")
+@RestController
+@Slf4j
+@RequestMapping("${app-config.url.student:}/user")
+public class UserController extends BaseController {
+
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+
+
+
+    @ApiOperation(value = "更新更新IM用户信息", notes = "更新用户信息")
+    @PostMapping("/updateImUserInfo")
+    public HttpResponseResult<JSONObject> updateImUserInfo(@Validated @RequestBody UserInfoWrapper.UpdateUser info) {
+
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        info.setUserId(user.getId().intValue());
+        info.setClient(ClientEnum.STUDENT);
+
+
+        sysUserService.imDeviceId(info);
+        return succeed();
+    }
+
+}
+

+ 108 - 0
mec-application/src/main/java/com/ym/mec/student/controller/UserMusicController.java

@@ -0,0 +1,108 @@
+package com.ym.mec.student.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import com.ym.mec.biz.dal.entity.UserMusic;
+import com.ym.mec.biz.service.UserMusicService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static com.ym.mec.common.controller.BaseController.failed;
+
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.student:}/userMusic")
+@Api(tags = "用户曲目作品")
+public class UserMusicController  extends BaseController {
+
+    @Autowired
+    private UserMusicService userMusicService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @ApiOperation(value = "详情", notes = "用户曲目作品-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<UserMusicWrapper.UserMusic> detail(@PathVariable("id") Long id) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        UserMusicWrapper.UserMusicQuery build = UserMusicWrapper.UserMusicQuery.builder().id(id).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(build), build,
+            JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.STUDENT.name()).build());
+        List<UserMusicWrapper.UserMusic> records = pages.getRecords();
+        if (records.isEmpty()) {
+            throw new BizException(999,"作品已删除");
+        }
+
+        return succeed(records.get(0));
+    }
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusicQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicWrapper.UserMusic>> page(@RequestBody UserMusicWrapper.UserMusicQuery query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        query.setUserId(user.getId().longValue());
+        query.setClientType(ClientEnum.STUDENT);
+        JwtUserInfo<Object> userInfo = JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.STUDENT.name()).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(query), query, userInfo);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+
+    @ApiOperation(value = "保存草稿/发布作品", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusic")
+    @PostMapping("/save")
+    public HttpResponseResult<String> add(@Validated @RequestBody UserMusicWrapper.AddUserMusic userMusic) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        userMusic.setUserId(user.getId().longValue());
+        userMusic.setClientType(ClientEnum.STUDENT);
+        // 新增数据
+        ;
+
+        return succeed(userMusicService.save(userMusic).toString());
+    }
+
+    @ApiOperation(value = "删除", notes = "用户曲目作品- 传入id")
+    @PostMapping("/remove")
+    public HttpResponseResult<Boolean> remove(@RequestParam String id) {
+
+        if (StringUtils.isBlank(id)) {
+            throw new BizException( "id不能为空");
+        }
+        List<String> list = Arrays.asList(id.split(","));
+
+        userMusicService.lambdaUpdate()
+            .in(UserMusic::getId, list)
+            .set(UserMusic::getDelFlag, true)
+            .update();
+
+        return succeed(true);
+    }
+}

+ 87 - 0
mec-application/src/main/java/com/ym/mec/student/controller/UserMusicStarController.java

@@ -0,0 +1,87 @@
+package com.ym.mec.student.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alipay.service.schema.util.StringUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.UserMusicStar;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper;
+import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.biz.service.SubjectService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.UserMusicStarService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.student:}/userMusicStar")
+@Api(tags = "用户曲目作品点赞记录")
+public class UserMusicStarController  extends BaseController {
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+    @Autowired
+    private StudentService studentService;
+
+    @Autowired
+    private SubjectService subjectService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品点赞记录- 传入 UserMusicStarWrapper.UserMusicStarQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicStarWrapper.UserMusicStar>> page(@RequestBody @Validated UserMusicStarWrapper.UserMusicStarQuery query) {
+
+        IPage<UserMusicStarWrapper.UserMusicStar> pages = userMusicStarService.selectPage(QueryInfo.getPage(query), query);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+
+
+    @ApiOperation(value = "点赞/取消点赞")
+    @PostMapping("/star")
+    public HttpResponseResult<JSONObject> star(@Validated @RequestBody UserMusicStarWrapper.Star star) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        star.setUserId(user.getId().longValue());
+        star.setClientType(ClientEnum.STUDENT);
+        // 新增数据
+        userMusicStarService.star(star);
+
+        return succeed();
+    }
+}

+ 51 - 0
mec-application/src/main/java/com/ym/mec/student/controller/open/OpenAppVersionInfoController.java

@@ -0,0 +1,51 @@
+package com.ym.mec.student.controller.open;
+
+
+import com.microsvc.toolkit.common.response.template.R;
+import com.ym.mec.biz.dal.entity.AppVersionInfo;
+import com.ym.mec.biz.service.AppVersionInfoService;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Optional;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.student:}/open/appVersionInfo")
+@Api(tags = "app版本信息管理")
+public class OpenAppVersionInfoController {
+
+    @Autowired
+    private AppVersionInfoService appVersionInfoService;
+
+    @ApiOperation("根据app客户端查询最近的app版本")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "platform", value = "平台名称", required = true, dataType = "String", paramType =
+                    "path"),
+            @ApiImplicitParam(name = "status", value = "状态", required = true, dataType = "String",
+                    paramType = "newest/history")
+    })
+    @GetMapping(value = "/queryLatestByPlatform")
+    public R<AppVersionInfo> queryLatestByPlatform(String platform, String status) {
+        String appStatus = Optional.ofNullable(status).orElse("newest");
+        if ("history".equals(appStatus)) {
+            appStatus = "newest,history";
+        }
+        List<AppVersionInfo> list = appVersionInfoService.queryLatestByPlatform(platform, appStatus);
+        if (list.size() > 0) {
+            return R.from(list.get(0));
+        }
+        throw new BizException("未找到数据");
+    }
+}

+ 76 - 0
mec-application/src/main/java/com/ym/mec/student/controller/open/OpenUserMusicController.java

@@ -0,0 +1,76 @@
+package com.ym.mec.student.controller.open;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import com.ym.mec.biz.service.UserMusicService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.student:}/open/userMusic")
+@Api(tags = "用户曲目作品")
+public class OpenUserMusicController  extends BaseController {
+
+    @Autowired
+    private UserMusicService userMusicService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+
+    @ApiOperation(value = "详情", notes = "用户曲目作品-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<UserMusicWrapper.UserMusic> detail(@PathVariable("id") Long id) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        JwtUserInfo userInfo = null;
+        if (user != null && null != user.getId()) {
+            userInfo = JwtUserInfo.builder()
+                .clientType(ClientEnum.STUDENT.name())
+                .userId(user.getId().toString())
+                .build();
+        }
+        UserMusicWrapper.UserMusicQuery build = UserMusicWrapper.UserMusicQuery.builder().id(id).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(build), build
+            ,userInfo);
+        List<UserMusicWrapper.UserMusic> records = pages.getRecords();
+        if (records.isEmpty()) {
+            throw new BizException(999,"作品已删除");
+        }
+
+        return succeed(records.get(0));
+    }
+
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusicQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicWrapper.UserMusic>> page(@RequestBody UserMusicWrapper.UserMusicQuery query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        JwtUserInfo userInfo = null;
+        if (user != null && null != user.getId()) {
+            userInfo = JwtUserInfo.builder()
+                .clientType(ClientEnum.STUDENT.name())
+                .userId(user.getId().toString())
+                .build();
+        }
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(query), query
+            ,userInfo);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+}

+ 46 - 0
mec-application/src/main/java/com/ym/mec/student/controller/open/OpenUserMusicStarController.java

@@ -0,0 +1,46 @@
+package com.ym.mec.student.controller.open;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.common.response.template.R;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.UserMusicStar;
+import com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper;
+import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.UserMusicStarService;
+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.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.student:}/open/userMusicStar")
+@Api(tags = "用户曲目作品点赞记录")
+public class OpenUserMusicStarController {
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+    @Autowired
+    private StudentService studentService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+}

+ 12 - 2
mec-application/src/main/java/com/ym/mec/teacher/controller/CloudStudyController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.teacher.controller;
 
+import com.ym.mec.biz.dal.dao.StudentTeacherMapperDao;
 import com.ym.mec.biz.dal.dto.CountStudentTrainDataDto;
 import com.ym.mec.biz.dal.dto.MusicCompareRankingDto;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
@@ -12,10 +13,14 @@ import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+import java.util.List;
+
 import static com.ym.mec.biz.dal.enums.FeatureType.CLOUD_STUDY_EVALUATION;
 
 /**
@@ -27,10 +32,12 @@ import static com.ym.mec.biz.dal.enums.FeatureType.CLOUD_STUDY_EVALUATION;
 @RequestMapping("${app-config.url.teacher:}/cloudStudy")
 public class CloudStudyController extends BaseController {
 
-    @Autowired
+    @Resource
     private SysUserService sysUserService;
-    @Autowired
+    @Resource
     private SysMusicCompareRecordService sysMusicCompareRecordService;
+    @Resource
+    private StudentTeacherMapperDao studentTeacherMapperDao;
 
     @ApiOperation("查询乐团学员训练数据")
     @GetMapping("queryMusicGroupStudentTrainData")
@@ -48,6 +55,9 @@ public class CloudStudyController extends BaseController {
     @GetMapping("countStudentTrain")
     public HttpResponseResult<PageInfo<CountStudentTrainDataDto>> countStudentTrain(SysMusicCompareRecordQueryInfo queryInfo){
         queryInfo.setTeacherId(sysUserService.getUserId());
+        //获取老师关联的学员列表
+        List<Integer> studentIdList = studentTeacherMapperDao.queryStudentIds(queryInfo.getTeacherId(),null);
+        queryInfo.setStudentIdList(studentIdList);
         return succeed(sysMusicCompareRecordService.countStudentTrain(queryInfo));
     }
 

+ 4 - 14
mec-application/src/main/java/com/ym/mec/teacher/controller/CourseHomeworkController.java

@@ -1,7 +1,5 @@
 package com.ym.mec.teacher.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CourseHomeworkDao;
 import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
 import com.ym.mec.biz.dal.dto.CourseHomeworkWrapper;
@@ -12,10 +10,7 @@ import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.enums.ELessonTrainingType;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
-import com.ym.mec.biz.service.CourseHomeworkService;
-import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
-import com.ym.mec.biz.service.StudentCourseHomeworkService;
-import com.ym.mec.biz.service.StudentLessonTrainingDetailService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
@@ -23,7 +18,6 @@ import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -47,7 +41,7 @@ public class CourseHomeworkController extends BaseController {
     @Autowired
     private ExtracurricularExercisesReplyService extracurricularExercisesReplyService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
 
     @Autowired
     private StudentLessonTrainingDetailService studentLessonTrainingDetailService;
@@ -65,12 +59,8 @@ public class CourseHomeworkController extends BaseController {
 
     @ApiOperation(value = "根据班级获取教师布置的作业")
     @GetMapping("/findTeacherCourseHomeworkByClassGroup")
-    public Object findTeacherCourseHomeworkByClassGroup(CourseHomeworkQueryInfo queryInfo){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(sysUser)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
-        queryInfo.setUserId(sysUser.getId().longValue());
+    public HttpResponseResult<List<Map<String, Object>>> findTeacherCourseHomeworkByClassGroup(CourseHomeworkQueryInfo queryInfo){
+        queryInfo.setUserId(sysUserService.getUserId().longValue());
         return succeed(courseHomeworkService.findTeacherCourseHomeworkByClassGroup(queryInfo));
     }
 

+ 15 - 64
mec-application/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesController.java

@@ -1,9 +1,6 @@
 package com.ym.mec.teacher.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
 import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
@@ -18,6 +15,7 @@ import com.ym.mec.biz.dal.page.TeacherServeHomeworkQueryInfo;
 import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
 import com.ym.mec.biz.service.ExtracurricularExercisesService;
 import com.ym.mec.biz.service.StudentExtracurricularExercisesSituationService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
@@ -25,7 +23,6 @@ import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -48,25 +45,18 @@ public class ExtracurricularExercisesController extends BaseController {
     @Autowired
     private StudentExtracurricularExercisesSituationService studentExtracurricularExercisesSituationService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private StudentRegistrationDao studentRegistrationDao;
     @Autowired
     private ClassGroupStudentMapperDao classGroupStudentMapperDao;
     @Autowired
-    private StudentDao studentDao;
-
-    @Autowired
     private SubjectDao subjectDao;
 
     @ApiOperation(value = "获取教师有服务指标的课程列表")
     @GetMapping("/queryTeacherServeHomeworkDetail")
     public HttpResponseResult queryTeacherServeHomeworkDetail(TeacherServeHomeworkQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        queryInfo.setTeacherId(sysUser.getId());
+        queryInfo.setTeacherId(sysUserService.getUserId());
         return succeed(studentExtracurricularExercisesSituationService.queryTeacherServeHomeworkDetail1(queryInfo));
     }
 
@@ -74,22 +64,14 @@ public class ExtracurricularExercisesController extends BaseController {
     @ApiOperation(value = "获取教师有服务指标的课程列表")
     @GetMapping("/queryTeacherServeHomeworkDetail/v2")
     public HttpResponseResult<PageInfo<CourseHomeworkWrapper.CourseHomeworkList>> queryTeacherServeHomeworkDetailV2(CourseHomeworkWrapper.CourseHomeworkQuery queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        queryInfo.setTeacherId(sysUser.getId());
+        queryInfo.setTeacherId(sysUserService.getUserId());
         return succeed(studentExtracurricularExercisesSituationService.queryTeacherServeHomeworkDetailV2(queryInfo));
     }
 
     @ApiOperation(value = "获取教师课外作业列表")
     @GetMapping("/queryTeacherExtraHomeworkDetail/v2")
     public HttpResponseResult<PageInfo<CourseHomeworkWrapper.CourseHomeworkList>> queryTeacherExtraHomeworkDetailV2(CourseHomeworkWrapper.CourseHomeworkQuery queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        queryInfo.setTeacherId(sysUser.getId());
+        queryInfo.setTeacherId(sysUserService.getUserId());
         return succeed(studentExtracurricularExercisesSituationService.queryTeacherExtraHomeworkDetailV2(queryInfo));
     }
 
@@ -97,11 +79,7 @@ public class ExtracurricularExercisesController extends BaseController {
     @ApiOperation(value = "获取老师训练统计")
     @GetMapping("/getStatistics")
     public HttpResponseResult getStatistics(ExtraExercilseQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        queryInfo.setTeacherId(sysUser.getId());
+        queryInfo.setTeacherId(sysUserService.getUserId());
         return succeed(studentExtracurricularExercisesSituationService.getStatistics(queryInfo));
     }
 
@@ -115,11 +93,7 @@ public class ExtracurricularExercisesController extends BaseController {
     @PostMapping("/createExtraExercises")
     @AuditLogAnnotation(operateName = "创建课外训练")
     private HttpResponseResult createExtraExercises(ExtracurricularExercises exercises){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(sysUser)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
-        exercises.setTeacherId(sysUser.getId());
+        exercises.setTeacherId(sysUserService.getUserId());
         exercises.setGroupType(ELessonTrainingType.EXTRACURRICULAR.getCode());
         extracurricularExercisesService.createExtraExercises(exercises);
         return succeed();
@@ -129,17 +103,13 @@ public class ExtracurricularExercisesController extends BaseController {
     @PostMapping("/createExtraExercisesForJson")
     @AuditLogAnnotation(operateName = "创建课外训练")
     private HttpResponseResult createExtraExercisesForJson(@RequestBody ExtracurricularExercises exercises){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(sysUser)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
         if(null == exercises.getExpireDate()){
             Calendar instance = Calendar.getInstance();
             instance.add(Calendar.WEEK_OF_MONTH,1);
             exercises.setExpireDate(instance.getTime());
         }
 
-        exercises.setTeacherId(sysUser.getId());
+        exercises.setTeacherId(sysUserService.getUserId());
         extracurricularExercisesService.createExtraExercises(exercises);
         return succeed();
     }
@@ -147,22 +117,14 @@ public class ExtracurricularExercisesController extends BaseController {
     @ApiOperation(value = "获取课外训练列表")
     @GetMapping("/findExtraExercilses")
     private HttpResponseResult findExtraExercilses(ExtraExercilseQueryInfo queryInfo){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(sysUser)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
-        queryInfo.setTeacherId(sysUser.getId());
+        queryInfo.setTeacherId(sysUserService.getUserId());
         return succeed(extracurricularExercisesService.findExtraExercilses(queryInfo));
     }
 
     @ApiOperation(value = "获取已布置训练列表(包含课后,课外)")
     @GetMapping("/findExtraExercilsesHomeworks")
     private HttpResponseResult findExtraExercilsesHomeworks(ExtraExercilseQueryInfo queryInfo){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(sysUser)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
-        queryInfo.setTeacherId(sysUser.getId());
+        queryInfo.setTeacherId(sysUserService.getUserId());
         return succeed(extracurricularExercisesService.findExtraExercilsesHomeworks(queryInfo));
     }
 
@@ -178,21 +140,13 @@ public class ExtracurricularExercisesController extends BaseController {
     @ApiOperation(value = "获取待布置学员列表")
     @GetMapping("/getDontServeStudents")
     public HttpResponseResult getDontServeStudents(String search, String musicGroupId, Long classGroupId, Integer subjectId,Integer hasMember,String studentIds){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(sysUser)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
-        return succeed(extracurricularExercisesService.getDontServeStudents(sysUser.getId(), search, musicGroupId, classGroupId, subjectId,hasMember,studentIds));
+        return succeed(extracurricularExercisesService.getDontServeStudents(sysUserService.getUserId(), search, musicGroupId, classGroupId, subjectId,hasMember,studentIds));
     }
 
     @ApiOperation(value = "获取待布置学员乐团列表")
     @GetMapping("/getDontServeStudentMusicGroups")
     public HttpResponseResult getDontServeStudentMusicGroups(String search){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(sysUser)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
-        List<BasicUserDto> dontServeStudents = extracurricularExercisesService.getDontServeStudents(sysUser.getId(), search, null, null,null,null,null);
+        List<BasicUserDto> dontServeStudents = extracurricularExercisesService.getDontServeStudents(sysUserService.getUserId(), search, null, null,null,null,null);
         if(CollectionUtils.isEmpty(dontServeStudents)){
             return succeed(Collections.emptyList());
         }
@@ -204,12 +158,9 @@ public class ExtracurricularExercisesController extends BaseController {
     @ApiOperation(value = "获取服务学员查询条件")
     @GetMapping("/getDontServeStudentQueryCondition")
     public HttpResponseResult getDontServeStudentQueryCondition(String musicGroupId){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(sysUser)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
         Map<String, Object> result = new HashMap<>();
-        List<BasicUserDto> dontServeStudents = extracurricularExercisesService.getDontServeStudents(sysUser.getId(), null, musicGroupId, null, null,null,null);
+        Integer userId = sysUserService.getUserId();
+        List<BasicUserDto> dontServeStudents = extracurricularExercisesService.getDontServeStudents(userId, null, musicGroupId, null, null,null,null);
         if(CollectionUtils.isEmpty(dontServeStudents)){
             result.put("musicGroups", Collections.emptyList());
             result.put("classGroups", Collections.emptyList());
@@ -220,7 +171,7 @@ public class ExtracurricularExercisesController extends BaseController {
         List<MusicGroup> studentNormalMusicGroups = studentRegistrationDao.getStudentNormalMusicGroups(studentIds);
         result.put("musicGroups", studentNormalMusicGroups);
 
-        List<ClassGroup> classGroups = classGroupStudentMapperDao.getStudentClassGroupWithTeacher(studentIds, sysUser.getId(), musicGroupId);
+        List<ClassGroup> classGroups = classGroupStudentMapperDao.getStudentClassGroupWithTeacher(studentIds, userId, musicGroupId);
         result.put("classGroups", classGroups);
 
 //        List<Subject> studentSubjects = studentDao.getStudentSubjects(studentIds);

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

@@ -1,7 +1,7 @@
 package com.ym.mec.teacher.controller;
 
-import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.GoodsCategory;
+import com.ym.mec.biz.dal.wrapper.GoodsWrapper;
 import com.ym.mec.biz.service.GoodsCategoryService;
 import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.common.controller.BaseController;
@@ -29,7 +29,7 @@ public class GoodsController extends BaseController {
     @ApiOperation(value = "根据商品(教材、辅件)编号查询商品(教材、辅件)")
     @GetMapping("/get/{id}")
     public Object get(@ApiParam(value = "商品(教材、辅件)编号", required = true) @PathVariable("id") Integer id) {
-        Goods goods = goodsService.getDetail(id);
+        GoodsWrapper.Goods goods = goodsService.getDetail(id);
         GoodsCategory goodsCategory = goodsCategoryService.get(goods.getGoodsCategoryId());
         if (Objects.nonNull(goodsCategory)) {
             goods.setGoodsCategoryName(goodsCategory.getName());

+ 82 - 39
mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java

@@ -1,29 +1,33 @@
 package com.ym.mec.teacher.controller;
 
 import com.google.common.collect.Lists;
+import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
+import com.ym.mec.biz.dal.dto.ImGroupNoticeDto;
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
+import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.vo.ImUserWrapper;
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 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.http.HttpStatus;
-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 org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -34,40 +38,79 @@ import java.util.stream.Collectors;
 @RestController
 public class ImGroupController extends BaseController {
 
-	@Autowired
+	@Resource
 	private ImGroupService imGroupService;
-
-	@Autowired
+	@Resource
 	private ImUserFriendService imUserFriendService;
-
-	@Autowired
+	@Resource
+	private ImGroupMemberService imGroupMemberService;
+	@Resource
 	private ImGroupNoticeService imGroupNoticeService;
+	@Resource
+	private SysUserService sysUserService;
+    @Resource
+    private ImGroupMemberPlusService imGroupMemberPlusService;
 
-	@Autowired
-	private SysUserService userLoginService;
+	@ApiOperation(value = "全体禁言/解除禁言")
+	@PostMapping("/muteAll")
+	public HttpResponseResult<Object> muteAll(@RequestBody ImGroupWrapper.GroupMuteAll groupMuteAll) {
+		if (StringUtils.isEmpty(groupMuteAll.getGroupId()) || groupMuteAll.getMuteAll() == null){
+			throw new BizException("参数错误");
+		}
+		imGroupService.muteAll(groupMuteAll);
+		return succeed();
+	}
 
-    @Autowired
-    private ImGroupMemberPlusService imGroupMemberPlusService;
+	@ApiOperation(" 移交群主")
+	@PostMapping(value = "/groupChangeOwner")
+	public Object groupChangeOwner(@RequestBody ImGroupWrapper.GroupTransferOwner groupTransferOwner) {
+		if (StringUtils.isEmpty(groupTransferOwner.getImGroupId()) || StringUtils.isEmpty(groupTransferOwner.getUserId())){
+			throw new com.microsvc.toolkit.common.webportal.exception.BizException("参数错误");
+		}
+		groupTransferOwner.setCurrentOwner(sysUserService.getUserId().toString());
+		if(StringUtils.equals(groupTransferOwner.getUserId(),groupTransferOwner.getCurrentOwner())){
+			throw new com.microsvc.toolkit.common.webportal.exception.BizException("不能转交给自己");
+		}
+		imGroupService.transferOwner(groupTransferOwner);
+		return succeed();
+	}
+
+	@ApiOperation("解散群")
+	@PostMapping(value = "/dismissGroup")
+	@ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String")
+	public HttpResponseResult<Object> dismissGroup(String imGroupId) {
+		imGroupService.dismissGroup(imGroupId,sysUserService.getUserId().toString());
+		return succeed();
+	}
+
+	@ApiOperation("退群")
+	@PostMapping(value = "/quitGroup")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "String")})
+	public Object quitGroup(String imGroupId, String userId) {
+		List<Integer> userIds = Arrays.stream(userId.split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
+		return succeed(imGroupMemberService.quit(imGroupId,userIds));
+	}
 
 	@ApiOperation("查询群列表")
 	@GetMapping(value = "/queryGroupList")
-	public Object queryGroupList(String search,String groupType) {
-		return succeed(imGroupService.queryByUserId(userLoginService.getUserId(), search,groupType));
+	public HttpResponseResult<List<ImGroup>> queryGroupList(String search, String groupType) {
+		return succeed(imGroupService.queryByUserId(sysUserService.getUserId(), search,groupType));
 	}
 
 
     @ApiOperation("查询群列表-v2")
     @GetMapping(value = "/queryGroupList/v2")
-    public Object queryGroupListV2(String search,String groupType,String musicGroupId,String classType) {
+    public HttpResponseResult<List<ImGroup>> queryGroupListV2(String search, String groupType, String musicGroupId, String classType) {
         if (StringUtils.isNotBlank(classType) && classType.equals("SINGLE")) {
             classType = "NORMAL";
         }
-        return succeed(imGroupService.queryByUserIdV2(userLoginService.getUserId(), search,groupType,musicGroupId,classType));
+        return succeed(imGroupService.queryByUserIdV2(sysUserService.getUserId(), search,groupType,musicGroupId,classType));
     }
 
 	@ApiOperation("查询群详情")
 	@GetMapping(value = "/queryGroupDetail")
-	public Object queryGroupDetail(String imGroupId) {
+	public HttpResponseResult<ImGroup> queryGroupDetail(String imGroupId) {
 		if (imGroupId.contains("S") || imGroupId.contains("I")){
 			imGroupId = imGroupId.substring(1);
 		}
@@ -78,14 +121,14 @@ public class ImGroupController extends BaseController {
         }
         ImGroupMemberPlus admin = imGroupMemberPlusService.lambdaQuery()
             .eq(ImGroupMemberPlus::getImGroupId, imGroup.getId())
-            .eq(ImGroupMemberPlus::getUserId, userLoginService.getUser().getId())
+            .eq(ImGroupMemberPlus::getUserId, sysUserService.getUser().getId())
             .last("limit 1").one();
         if (admin == null) {
             // 该用户不在该群,无权限查看,处理用户退出群后,查看历史消息校验
             return failed(HttpStatus.NO_CONTENT, "群组不存在");
         }
 		// 设置默认头像
-		if (Objects.nonNull(imGroup.getGroupType()) && StringUtils.isBlank(imGroup.getImg())) {
+		if (Objects.nonNull(imGroup) && Objects.nonNull(imGroup.getGroupType()) && StringUtils.isBlank(imGroup.getImg())) {
 			imGroup.setImg(imGroup.getGroupType().getAvatar());
 		}
 		return succeed(imGroup);
@@ -107,7 +150,7 @@ public class ImGroupController extends BaseController {
         }
         ImGroupMemberPlus admin = imGroupMemberPlusService.lambdaQuery()
             .eq(ImGroupMemberPlus::getImGroupId, imGroup.getId())
-            .eq(ImGroupMemberPlus::getUserId, userLoginService.getUser().getId())
+            .eq(ImGroupMemberPlus::getUserId, sysUserService.getUser().getId())
             .last("limit 1").one();
         if (admin == null) {
             // 该用户不在该群,无权限查看,处理用户退出群后,查看历史消息校验
@@ -118,36 +161,36 @@ public class ImGroupController extends BaseController {
 
 	@ApiOperation("查询群成员列表")
 	@GetMapping(value = "/queryGroupMemberList")
-	public Object queryGroupMemberList(String imGroupId) {
+	public HttpResponseResult<List<ImGroupMemberDto>> queryGroupMemberList(String imGroupId) {
 		return succeed(imGroupService.queryMemberById(imGroupId));
 	}
 
 	@ApiOperation("查询群学生列表")
 	@GetMapping(value = "/queryGroupStudentList")
-	public Object queryGroupStudentList(String imGroupId) {
+	public HttpResponseResult<List<ImGroupMemberDto>> queryGroupStudentList(String imGroupId) {
 		return succeed(imGroupService.queryMemberById(imGroupId).stream().filter(e -> StringUtils.isBlank(e.getRoleType())).collect(Collectors.toList()));
 	}
 
 
     @ApiOperation("查询群学生列表v2")
     @GetMapping(value = "/queryGroupStudentList/v2")
-    public Object queryGroupStudentListV2(String imGroupId,String search,Integer subjectId,Boolean vipFlag) {
+    public HttpResponseResult<List<ImGroupMemberDto>> queryGroupStudentListV2(String imGroupId, String search, Integer subjectId, Boolean vipFlag) {
         return succeed(imGroupService.queryMemberByIdV2(imGroupId,search,subjectId,vipFlag).stream().filter(e -> StringUtils.isBlank(e.getRoleType())).collect(Collectors.toList()));
     }
 
 	@ApiOperation("查询群成员详情")
 	@GetMapping(value = "/queryGroupMemberDetail")
-	public Object queryGroupMemberDetail(String imGroupId, Integer userId) {
+	public HttpResponseResult<ImGroupMemberDto> queryGroupMemberDetail(String imGroupId, Integer userId) {
 		return succeed(imGroupService.queryMember(imGroupId, userId));
 	}
 
 	@ApiOperation("查询好友详情")
 	@GetMapping(value = "/queryFriendDetail")
-	public Object queryFriendDetail(Integer userId) {
-		ImUserFriendDto dto = imUserFriendService.queryFriendDetail(userLoginService.getUserId(), userId);
+	public HttpResponseResult<ImUserFriendDto> queryFriendDetail(Integer userId) {
+		ImUserFriendDto dto = imUserFriendService.queryFriendDetail(sysUserService.getUserId(), userId);
 		if (dto == null) {
 			dto = new ImUserFriendDto();
-			SysUser user = userLoginService.queryUserById(userId);
+			SysUser user = sysUserService.queryUserById(userId);
 			dto.setFriend(user);
 
 			List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
@@ -172,10 +215,10 @@ public class ImGroupController extends BaseController {
 	})
 	@GetMapping(value = "/imUserFriend/getDetail/{userId}")
 	public HttpResponseResult<ImUserWrapper.ImUserFriend> getImUserFriendDetail(@PathVariable("userId") Integer userId) {
-		ImUserFriendDto dto = imUserFriendService.queryFriendDetail(userLoginService.getUserId(), userId);
+		ImUserFriendDto dto = imUserFriendService.queryFriendDetail(sysUserService.getUserId(), userId);
 		if (dto == null) {
 			dto = new ImUserFriendDto();
-			SysUser user = userLoginService.queryUserById(userId);
+			SysUser user = sysUserService.queryUserById(userId);
 			dto.setFriend(user);
 			if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
 				dto.setFriendNickname(user.getUsername());
@@ -203,8 +246,8 @@ public class ImGroupController extends BaseController {
 
 	@ApiOperation("查询好友列表")
 	@GetMapping(value = "/queryFriendList")
-	public Object queryFriendList(String search) {
-		return succeed(imUserFriendService.queryFriendListByUserId(userLoginService.getUserId(), search));
+	public HttpResponseResult<List<ImUserFriendDto>> queryFriendList(String search) {
+		return succeed(imUserFriendService.queryFriendListByUserId(sysUserService.getUserId(), search));
 	}
 
 	@ApiOperation("查询好友列表(重构版)")
@@ -212,7 +255,7 @@ public class ImGroupController extends BaseController {
 	public HttpResponseResult<List<ImUserWrapper.ImUserFriend>> queryImUserFriendList(String search) {
 
 		// 好友关系列表
-		List<ImUserFriendDto> friendDtos = imUserFriendService.queryFriendListByUserId(userLoginService.getUserId(), search);
+		List<ImUserFriendDto> friendDtos = imUserFriendService.queryFriendListByUserId(sysUserService.getUserId(), search);
 
 		List<ImUserWrapper.ImUserFriend> wrappers = Lists.newArrayList();
 		if (CollectionUtils.isNotEmpty(friendDtos)) {
@@ -240,23 +283,23 @@ public class ImGroupController extends BaseController {
 
 	@ApiOperation("查询好友中的学生列表")
 	@GetMapping(value = "/queryFriendStudentList")
-	public Object queryFriendStudentList(String search) {
-		return succeed(imUserFriendService.queryFriendListByUserId(userLoginService.getUserId(), search).stream().filter(e -> StringUtils.isBlank(e.getTags()))
+	public HttpResponseResult<List<ImUserFriendDto>> queryFriendStudentList(String search) {
+		return succeed(imUserFriendService.queryFriendListByUserId(sysUserService.getUserId(), search).stream().filter(e -> StringUtils.isBlank(e.getTags()))
 				.collect(Collectors.toList()));
 	}
 
 
     @ApiOperation("查询好友中的学生列表-v2")
     @GetMapping(value = "/queryFriendStudentList/v2")
-    public Object queryFriendStudentListV2(String search,String musicGroupId,Integer subjectId,Boolean vipFlag) {
-        return succeed(imUserFriendService.queryFriendListByUserIdV2(userLoginService.getUserId(), search,musicGroupId,subjectId,vipFlag)
+    public HttpResponseResult<List<ImUserFriendDto>> queryFriendStudentListV2(String search, String musicGroupId, Integer subjectId, Boolean vipFlag) {
+        return succeed(imUserFriendService.queryFriendListByUserIdV2(sysUserService.getUserId(), search,musicGroupId,subjectId,vipFlag)
                 .stream().filter(e -> StringUtils.isBlank(e.getTags()))
                 .collect(Collectors.toList()));
     }
 
 	@ApiOperation("查询群公告列表")
 	@GetMapping(value = "/queryNoticeList")
-	public Object queryNoticeList(ImGroupNoticeQueryInfo queryInfo) {
+	public HttpResponseResult<PageInfo<ImGroupNoticeDto>> queryNoticeList(ImGroupNoticeQueryInfo queryInfo) {
 		return succeed(imGroupNoticeService.queryPage(queryInfo));
 	}
 }

+ 38 - 5
mec-web/src/main/java/com/ym/mec/web/controller/ImGroupMemberController.java → mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupMemberController.java

@@ -1,7 +1,9 @@
-package com.ym.mec.web.controller;
+package com.ym.mec.teacher.controller;
 
+import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
 import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
+import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -10,20 +12,51 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
+import org.apache.commons.collections.CollectionUtils;
 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("imGroupMember")
+import javax.annotation.Resource;
+import java.util.Optional;
+
+@RequestMapping("${app-config.url.teacher:}/imGroupMember")
 @Api(tags = "IM群成员服务")
 @RestController
 public class ImGroupMemberController extends BaseController {
 
-	@Autowired
+	@Resource
 	private ImGroupMemberService imGroupMemberService;
 
+	@ApiOperation(value = "群成员禁言", notes = "群成员禁言- 传入 ImGroupMemberVo.GroupMemberMute")
+	@PostMapping("/groupMute")
+	public HttpResponseResult<Object> groupMemberMute(@RequestBody ImGroupMemberWrapper.GroupMemberMute member) {
+		// 群成员不能为空
+		if (CollectionUtils.isEmpty(member.getUserIds())) {
+			throw BizException.from("群成员不能为空");
+		}
+		// 群成员禁言时长无效
+		if (member.getGroupMute() && Optional.of(member.getMuteTime()).orElse(0) <= 0) {
+			throw BizException.from("群成员禁言时长无效");
+		}
+		// 更新群成员禁言
+		imGroupMemberService.groupMemberMute(member);
+		return succeed();
+	}
+
+	@ApiOperation(value = "群成员身份设置", notes = "群成员身份设置- 传入 ImGroupMemberVo.GroupMemberRole")
+	@PostMapping("/groupRole")
+	public HttpResponseResult<Object> groupMemberRole(@RequestBody ImGroupMemberWrapper.GroupMemberRole member) {
+		// 群成员不能为空
+		if (CollectionUtils.isEmpty(member.getUserIds())) {
+			throw BizException.from("群成员不能为空");
+		}
+		// 更新群成员禁言
+		imGroupMemberService.groupMemberRole(member);
+		return succeed();
+	}
+
 	@ApiOperation("分页查询群成员列表")
 	@PostMapping(value = "/queryGroupMemberPage")
 	public HttpResponseResult<PageInfo<ImGroupMemberDto>> queryGroupMemberPage(GroupMemberQueryInfo queryInfo) {

+ 73 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/LessonCoursewareController.java

@@ -0,0 +1,73 @@
+package com.ym.mec.teacher.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayaedu.cbs.openfeign.client.CoursewareFeignService;
+import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
+import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
+import com.ym.mec.biz.service.LessonCoursewareService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+@RequestMapping("${app-config.url.teacher:}/lessonCourseware")
+@Api(tags = "课件教材")
+@RestController
+public class LessonCoursewareController extends BaseController {
+
+	@Autowired
+	private CoursewareFeignService coursewareFeignService;
+	@Resource
+	private LessonCoursewareService lessonCoursewareService;
+
+	@ApiOperation(value = "分页查询已添加的课件")
+	@PostMapping("/queryLessonCourseware")
+	public HttpResponseResult<PageInfo<LessonCoursewareWrapper.LessonCoursewareDto>> queryLessonCourseware(@RequestBody LessonCoursewareWrapper.LessonCoursewareQuery query){
+		query.setEnable(true);
+		IPage<LessonCoursewareWrapper.LessonCoursewareDto> pages = lessonCoursewareService.selectPage(QueryInfo.getPage(query), query);
+		return succeed(PageUtil.pageInfo(pages));
+	}
+
+	@ApiOperation(value = "获取课件详情")
+	@GetMapping("/getLessonCoursewareDetail/{id}")
+	public HttpResponseResult<CbsLessonCoursewareWrapper.LessonCourseware> getLessonCoursewareDetail(@PathVariable("id") Long id){
+		return succeed(coursewareFeignService.lessonCoursewareDetail(id).feignData());
+	}
+
+	@ApiOperation(value = "获取课件关联的课程列表")
+	@GetMapping("/getLessonCoursewareCourseList/{id}")
+	public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id){
+		List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(id).feignData();
+		if (CollectionUtils.isNotEmpty(courseScheduleCoursewareDetails)) {
+			String jsonString = JSONObject.toJSONString(courseScheduleCoursewareDetails);
+			List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetailList = JSONObject.parseArray(jsonString, LessonCoursewareWrapper.CourseScheduleCoursewareDetail.class);
+			return succeed(courseScheduleCoursewareDetailList);
+		}
+		return succeed(new ArrayList<>());
+	}
+
+	@ApiOperation(value = "获取课程详情")
+	@GetMapping("/getLessonCourseDetail/{id}")
+	public HttpResponseResult<CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") String id){
+		return succeed(coursewareFeignService.lessonCoursewareDetailDetail(Long.parseLong(id)).feignData());
+	}
+
+	@ApiOperation(value = "获取课件关联的声部列表")
+	@GetMapping("/getLessonCoursewareSubjectList")
+	public HttpResponseResult<List<Subject>> getLessonCoursewareSubjectList(){
+		return succeed(lessonCoursewareService.getDao().getLessonCoursewareSubjectList());
+	}
+}

+ 21 - 2
mec-application/src/main/java/com/ym/mec/teacher/controller/SmsCodeController.java

@@ -5,6 +5,7 @@ import com.wf.captcha.utils.CaptchaUtil;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.service.SmsCodeService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.security.SecurityConstants;
 import io.swagger.annotations.Api;
@@ -37,8 +38,26 @@ public class SmsCodeController extends BaseController {
     @ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String")
     @PostMapping(value = "/sendSms")
     public Object sendLoginVerifyCode(String mobile) throws Exception {
-        smsCodeService.sendValidCode(mobile);
-        return succeed();
+        throw new BizException("你所使用的不是最新版本,请更新后使用");
+    }
+
+    @ApiOperation(value = "发送登录短信验证码")
+    @ApiImplicitParams({ @ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "code", value = "验证码", required = true, dataType = "String") })
+    @PostMapping(value = "/sendSmsCode")
+    public HttpResponseResult<Object> sendLoginVerifyCode1(String mobile, String code) throws Exception {
+        if(StringUtils.isEmpty(mobile) || StringUtils.isEmpty(code)){
+            return failed(SecurityConstants.PARAM_VERIFY_EXCEPTION);
+        }
+        String redisKey = MessageTypeEnum.KAPTCHA_SESSION_KEY + mobile;
+        RBucket<String> bucket = redissonClient.getBucket(redisKey);
+        if(bucket.isExists()){
+            if(StringUtils.equalsIgnoreCase(bucket.get(),code)){
+                smsCodeService.sendValidCode(mobile);
+                return succeed();
+            }
+        }
+        return failed(SecurityConstants.VERIFY_FAILURE);
     }
 
     @ApiOperation(value = "校验短信验证码")

+ 15 - 7
mec-application/src/main/java/com/ym/mec/teacher/controller/StudentController.java

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.dto.BaseMapDto;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.CloudTeacherActiveWapper;
 import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.StudentManageQueryInfo;
@@ -11,13 +12,13 @@ import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.apache.commons.collections.CollectionUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -29,15 +30,15 @@ import java.util.stream.Collectors;
 @RestController
 public class StudentController extends BaseController {
 
-    @Autowired
+    @Resource
     private SysUserCashAccountService sysUserCashAccountService;
     @Resource
     private SysUserService sysUserService;
-    @Autowired
+    @Resource
     private StudentManageService studentManageService;
-    @Autowired
+    @Resource
     private CourseScheduleService courseScheduleService;
-    @Autowired
+    @Resource
     private StudentAttendanceService studentAttendanceService;
 
     @ApiOperation(value = "获取学员异常考勤列表")
@@ -46,8 +47,8 @@ public class StudentController extends BaseController {
         queryInfo.setTeacherIdList(sysUserService.getUserId().toString());
         queryInfo.setSearchType("STUDENT_ERR_ATTENDANCE");
         Date date = new Date();
-        queryInfo.setStartTime(DateUtil.getFirstDayOfMonth(DateUtil.addMonths(date, -1)));
-        queryInfo.setEndTime(date);
+        queryInfo.setStartTime(DateUtil.format(DateUtil.getFirstDayOfMonth(DateUtil.addMonths(date, -1)),DateUtil.DEFAULT_PATTERN));
+        queryInfo.setEndTime(DateUtil.format(date,DateUtil.DEFAULT_PATTERN));
         return succeed(courseScheduleService.endFindCourseSchedules(queryInfo));
     }
 
@@ -75,6 +76,13 @@ public class StudentController extends BaseController {
         return succeed(sysUserCashAccountService.get(id));
     }
 
+    @ApiOperation(value = "云教练统计")
+    @PostMapping("/cloudTeacherActive")
+    public HttpResponseResult<CloudTeacherActiveWapper.ResultMap> cloudTeacherActive(@RequestBody CloudTeacherActiveWapper.Query queryInfo){
+        queryInfo.setTeacherId(sysUserService.getUserId());
+        return succeed(studentManageService.cloudTeacherActiveStatistics(queryInfo));
+    }
+
 
     @ApiOperation(value = "获取学生列表")
     @PostMapping("/queryStudentList")

+ 7 - 4
mec-application/src/main/java/com/ym/mec/teacher/controller/SysMessageController.java

@@ -2,25 +2,28 @@ package com.ym.mec.teacher.controller;
 
 import com.alibaba.fastjson.JSON;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.SysMessageVo;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.validator.CommonValidator;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 @RestController
 @Api(tags = "消息服务")

+ 9 - 4
mec-application/src/main/java/com/ym/mec/teacher/controller/SysMusicCompareRecordController.java

@@ -3,17 +3,16 @@ package com.ym.mec.teacher.controller;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
+import com.ym.mec.biz.dal.page.MusicCompareRecordWapper;
 import com.ym.mec.biz.service.SysMusicCompareRecordService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 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.util.Objects;
 
@@ -46,6 +45,12 @@ public class SysMusicCompareRecordController extends BaseController {
         return succeed(sysMusicCompareRecordService.insert(record));
     }
 
+    @ApiOperation(value = "获取学员评测记录列表")
+    @PostMapping("queryPageByStudent")
+    public HttpResponseResult<PageInfo<MusicCompareRecordWapper.Result>> queryPageByStudent(@RequestBody MusicCompareRecordWapper.Query query){
+        return succeed(sysMusicCompareRecordService.queryPageByStudent(query));
+    }
+
     @ApiOperation(value = "用户最后一次评测数据")
     @GetMapping("getLastEvaluationMusicalNotesPlayStats")
     public HttpResponseResult getLastEvaluationMusicalNotesPlayStats(Long recordId){

+ 25 - 21
mec-application/src/main/java/com/ym/mec/teacher/controller/SysMusicScoreCategoriesController.java

@@ -1,37 +1,37 @@
 package com.ym.mec.teacher.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.dto.MusicScoreQueryInfo;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.TenantConfig;
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
+import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.SysMusicScoreCategoriesService;
-import com.ym.mec.biz.service.TeacherService;
-import com.ym.mec.biz.service.TenantConfigService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+
 @RequestMapping("${app-config.url.teacher:}/sysMusicScoreCategories")
 @Api(tags = "曲库分类服务")
 @RestController
 public class SysMusicScoreCategoriesController extends BaseController {
 
-    @Autowired
+    @Resource
     private SysMusicScoreCategoriesService sysMusicScoreCategoriesService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
-    private TeacherService teacherService;
-    
-    @Autowired
-    private TenantConfigService tenantConfigService;
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
+    private OrganizationService organizationService;
+    @Resource
+    private TeacherDao teacherDao;
 
 
     @ApiOperation(value = "分页查询")
@@ -43,14 +43,18 @@ public class SysMusicScoreCategoriesController extends BaseController {
     @ApiOperation(value = "树状列表")
     @GetMapping("/queryTree")
     public Object queryTree(MusicScoreQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
+        SysUser sysUser = sysUserService.getUser();
+        //获取老师分部
+        Teacher teacher = teacherDao.get(sysUser.getId());
+        if (teacher == null) {
+            return failed(HttpStatus.BAD_REQUEST, "老师信息不存在");
+        }
+        String organId = teacher.getTeacherOrganId() + "";
+        if (StringUtils.isNotEmpty(teacher.getFlowOrganRange())){
+            organId = organId + "," + teacher.getFlowOrganRange();
         }
-        
-        TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>().eq("tenant_id_", sysUser.getTenantId()));
-        
-        return succeed(sysMusicScoreCategoriesService.queryCategoriesTreeList(tenantConfig.getTeachingMaterialId(), queryInfo.getEnable()));
+        String teachingMaterialIds = organizationService.getTeachingMaterialIds(organId,sysUser.getTenantId());
+        return succeed(sysMusicScoreCategoriesService.queryCategoriesTreeList(teachingMaterialIds, queryInfo.getEnable()));
     }
 
     @ApiOperation(value = "获取分类详情")

+ 36 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/SysSuggestionTypeController.java

@@ -0,0 +1,36 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.biz.dal.entity.SysSuggestionType;
+import com.ym.mec.biz.service.SysSuggestionTypeService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.tenant.TenantContextHolder;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Api(tags = "意见反馈类型")
+@RestController
+@RequestMapping("${app-config.url.teacher:}/sysSuggestionType/")
+public class SysSuggestionTypeController extends BaseController {
+
+    @Autowired
+    private SysSuggestionTypeService sysSuggestionTypeService;
+
+    @ApiOperation(value = "分页查询")
+    @PostMapping("queryAll")
+    public HttpResponseResult<List<SysSuggestionType>> queryAll() {
+        return succeed(sysSuggestionTypeService.lambdaQuery()
+                .eq(SysSuggestionType::getTenantId, TenantContextHolder.getTenantId())
+                .orderByDesc(SysSuggestionType::getId).list());
+    }
+
+}

+ 39 - 17
mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherController.java

@@ -1,11 +1,10 @@
 package com.ym.mec.teacher.controller;
 
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.StudentCourseHomework;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ELessonTrainingType;
 import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.page.*;
@@ -14,6 +13,7 @@ import com.ym.mec.biz.service.*;
 import com.ym.mec.biz.service.im.ImGroupCoreService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
@@ -25,6 +25,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -52,6 +53,8 @@ public class TeacherController extends BaseController {
     private StudentRegistrationService studentRegistrationService;
     @Autowired
     private ImGroupCoreService imGroupCoreService;
+    @Autowired
+    private CourseScheduleDao courseScheduleDao;
 
     @Autowired
     private StudentCourseHomeworkService studentCourseHomeworkService;
@@ -71,9 +74,16 @@ public class TeacherController extends BaseController {
         return succeed(teacherService.queryOrganList(sysUserService.getUserId()));
     }
 
+    @ApiOperation(value = "课程配置课件")
+    @GetMapping("/configCourseware")
+    public HttpResponseResult configCourseware(Long courseId,String coursewareDetailId) {
+        courseScheduleDao.configCourseware(courseId,coursewareDetailId);
+        return succeed();
+    }
+
     @ApiOperation(value = "根据教师编号查询教师基本信息")
     @GetMapping("/queryUserInfo")
-    public Object queryUserInfo() {
+    public HttpResponseResult<Teacher> queryUserInfo() {
 		Teacher teacher = Optional.ofNullable(teacherService.get(sysUserService.getUserId())).
                 orElseThrow(()->new BizException("老师信息不存在"));
 		//专业技能
@@ -100,76 +110,88 @@ public class TeacherController extends BaseController {
     @ApiOperation(value = "根据教师编号查询教师基本信息")
     @GetMapping("/get")
     @ApiParam(value = "教师编号", required = true)
-    public Object get(Integer id) {
+    public HttpResponseResult<Teacher> get(Integer id) {
         return succeed(teacherService.getDetail(id));
     }
 
     @ApiOperation(value = "根据教师编号查询教师课程班列表")
     @GetMapping("/getClass")
     @ApiParam(value = "教师编号", required = true)
-    public Object getClassGroup(Integer id) {
+    public HttpResponseResult<List<ClassGroup>> getClassGroup(Integer id) {
         return succeed(classGroupService.findClassGroup4Teacher(id));
     }
 
     @ApiOperation(value = "获取老师乐团课程信息列表")
     @GetMapping("/getTeacherMusicClass")
     @ApiParam(value = "教师编号", required = true)
-    public Object getTeacherMusicClass(TeacherMusicClassQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<TeacherMusicClassInfoDto>> getTeacherMusicClass(TeacherMusicClassQueryInfo queryInfo){
         return succeed(classGroupService.getTeacherMusicClass(queryInfo));
     }
 
+    @ApiOperation(value = "获取老师关联的乐团列表")
+    @GetMapping("/queryTeacherMusicGroup")
+    public HttpResponseResult<List<MusicGroup>> queryTeacherMusicGroup(){
+        return succeed(classGroupService.getDao().queryTeacherMusicGroup(sysUserService.getUserId()));
+    }
+
+    @ApiOperation(value = "获取老师所在乐团的班级列表")
+    @GetMapping("/queryTeacherMusicClass")
+    public HttpResponseResult<List<ClassGroup>> queryTeacherMusicClass(String musicGroupId){
+        return succeed(classGroupService.getDao().queryTeacherMusicClass(musicGroupId,sysUserService.getUserId()));
+    }
+
     @ApiOperation(value = "获取老师VIP课程信息列表")
     @GetMapping("/getTeacherVipClass")
-    public Object getTeacherVipClass(VipClassQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<TeacherVipClassInfoDto>> getTeacherVipClass(VipClassQueryInfo queryInfo){
         return succeed(classGroupService.getTeacherVipClass(queryInfo));
     }
 
     @ApiOperation(value = "获取教师所有聊天群组")
     @GetMapping("/queryTeacherGroups")
-    public Object queryTeacherGroups(String search){
+    public HttpResponseResult<List<ImGroupModel>> queryTeacherGroups(String search){
         return succeed(teacherService.queryTeacherGroups(sysUserService.getUserId(),search));
     }
 
     @ApiOperation(value = "获取当前教师通讯录列表")
     @GetMapping("/queryGroupStudents")
-    public Object queryGroupStudents(String search){
+    public HttpResponseResult<List<BasicUserDto>> queryGroupStudents(String search){
         return succeed(teacherService.queryGroupStudents(sysUserService.getUserId(),search));
     }
 
     @ApiOperation(value = "获取当前教师通讯录学员列表")
     @GetMapping("/queryGroupStudentList")
-    public Object queryGroupStudentList(String search){
+    public HttpResponseResult<List<BasicUserDto>> queryGroupStudentList(String search){
         return succeed(teacherService.queryGroupStudentList(sysUserService.getUserId(),search));
     }
 
     @ApiOperation(value = "分页查询群公告列表")
     @GetMapping(value = "/queryNoticePage")
-    public Object queryNoticePage(QueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<ImGroupNotice>> queryNoticePage(QueryInfo queryInfo){
         return succeed(imGroupNoticeService.queryPage(queryInfo));
     }
 
     @ApiOperation(value = "获取教师上课结算列表")
     @GetMapping("/queryCloses")
-    public Object queryCloses(TeacherCloseQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<TeacherCloseDto>> queryCloses(TeacherCloseQueryInfo queryInfo){
         return succeed(teacherService.queryCloses(queryInfo));
     }
 
     @ApiOperation(value = "获取教师上课课酬未结算总额")
     @GetMapping("/sumTeacherNoPay")
-    public Object findTeacherNoPay(Integer teacherId){
+    public HttpResponseResult<BigDecimal> findTeacherNoPay(Integer teacherId){
         return succeed(teacherService.findTeacherNoPay(teacherId));
     }
 
     @ApiOperation(value = "获取乐团学院学员报名列表")
     @GetMapping("/queryStudentApply")
-    public Object queryMusicGroupStudentApply(queryMusicGroupStudentQueryInfo queryInfo) {
+    public HttpResponseResult<PageInfo<MusicGroupStudentApplyDto>> queryMusicGroupStudentApply(queryMusicGroupStudentQueryInfo queryInfo) {
         return succeed(teacherService.queryMusicGroupStudentApply(queryInfo));
     }
 
     @ApiOperation(value = "通过乐团编号查询乐团科目规划")
     @GetMapping("/querySubByMusicGroupId")
     @ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
-    public Object findSubByMusicGroupId(String musicGroupId){
+    public HttpResponseResult<List<Subject>> findSubByMusicGroupId(String musicGroupId){
         return succeed(subjectService.findSubByMusicGroupId(musicGroupId));
     }
 
@@ -180,7 +202,7 @@ public class TeacherController extends BaseController {
 			@ApiImplicitParam(name = "idcardFrontImg", value = "身份证正面", required = true, dataType = "String"),
 			@ApiImplicitParam(name = "idcardBackImg", value = "身份证背面", required = true, dataType = "String"),
 			@ApiImplicitParam(name = "idcardHandImg", value = "手持身份证照", required = true, dataType = "String") })
-	public Object realNameAuthentication(String realName, String idcardNo, String idcardFrontImg, String idcardBackImg, String idcardHandImg) {
+	public HttpResponseResult<Object> realNameAuthentication(String realName, String idcardNo, String idcardFrontImg, String idcardBackImg, String idcardHandImg) {
 		teacherService.realNameAuthentication(sysUserService.getUserId(), realName, idcardNo, idcardFrontImg, idcardBackImg, idcardHandImg);
 		return succeed();
 	}

+ 6 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -96,6 +96,12 @@ public class TeacherCourseScheduleController extends BaseController {
         return succeed(result);
     }
 
+    @ApiOperation(value = "获取最近的一节课")
+    @PostMapping("/getRecentCourseSchedule")
+    public HttpResponseResult<CourseScheduleDto> getRecentCourseSchedule(Long courseId){
+        return succeed(scheduleService.getRecentCourseSchedule(sysUserService.getUserId(),courseId));
+    }
+
     @ApiOperation(value = "根据月份获取该月历史有课的日期")
     @GetMapping("/getHistoryCourseScheduleDateByMonth")
     public Object getHistoryCourseScheduleDateByTeacher(@ApiParam(value = "月份", required = true) @RequestParam Date month) {

+ 17 - 68
mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherManageController.java

@@ -1,12 +1,12 @@
 package com.ym.mec.teacher.controller;
 
-import com.ksyun.ks3.dto.PostObjectFormFields;
-import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.CashAccountDetail;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.entity.SysSuggestion;
 import com.ym.mec.biz.dal.entity.SysUserBankCard;
+import com.ym.mec.biz.dal.page.SysSuggestionQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -21,42 +21,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dto.CashAccountDetail;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.entity.SysSuggestion;
-import com.ym.mec.biz.dal.entity.SysUserBankCard;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.CooperationOrganService;
-import com.ym.mec.biz.service.StudentRegistrationService;
-import com.ym.mec.biz.service.SysSuggestionService;
-import com.ym.mec.biz.service.SysUserBankCardService;
-import com.ym.mec.biz.service.SysUserCashAccountDetailService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
-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.ym.mec.thirdparty.entity.UploadSign;
-import com.ym.mec.util.upload.UploadUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-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.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-
 import java.util.List;
 
 @Api(tags = "教师管理")
@@ -67,7 +31,7 @@ public class TeacherManageController extends BaseController {
     @Autowired
     private SysSuggestionService suggestionService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private SysUserCashAccountService sysUserCashAccountService;
     @Autowired
@@ -131,10 +95,7 @@ public class TeacherManageController extends BaseController {
     @ApiOperation(value = "新增建议")
     @PostMapping("suggestion/add")
     public Object add(SysSuggestion sysSuggestion) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("请重新登录");
-        }
+        SysUser sysUser = sysUserService.getUser();
         sysSuggestion.setUserId(sysUser.getId().longValue());
     	sysSuggestion.setClientType("TEACHER");
         if(StringUtils.isEmpty(sysSuggestion.getMobileNo())){
@@ -144,6 +105,14 @@ public class TeacherManageController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "分页查询")
+    @PostMapping("sysSuggestion/queryPage")
+    public Object queryPage(@RequestBody SysSuggestionQueryInfo queryInfo) {
+        queryInfo.setUserId(sysUserService.getUserId());
+        queryInfo.setClientType("TEACHER");
+        return succeed(suggestionService.queryPage(queryInfo));
+    }
+
     @ApiOperation(value = "根据群编号,获取群组基本信息")
     @GetMapping("/course/findGroupById")
     public Object findGroupById(String imGroupId){
@@ -177,21 +146,13 @@ public class TeacherManageController extends BaseController {
     @ApiOperation(value = "获取用户账户信息")
     @GetMapping("userCashAccount/get")
     public Object add() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("请重新登录");
-        }
-        return succeed(sysUserCashAccountService.get(sysUser.getId()));
+        return succeed(sysUserCashAccountService.get(sysUserService.getUserId()));
     }
 
     @ApiOperation(value = "分页查询用户交易明细")
     @GetMapping("userCashAccountDetail/queryPage")
     public Object queryPage(CashAccountDetail queryInfo) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(user == null || user.getId() != null){
-            return failed("请重新登录");
-        }
-        queryInfo.setUserId(user.getId());
+        queryInfo.setUserId(sysUserService.getUserId());
         return succeed(sysUserCashAccountDetailService.queryPage(queryInfo));
     }
 
@@ -201,11 +162,7 @@ public class TeacherManageController extends BaseController {
         if(sysUserBankCard == null){
             return failed("参数校验异常");
         }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null || sysUser.getId() == null){
-            return failed("获取用户失败");
-        }
-        sysUserBankCard.setUserId(sysUser.getId());
+        sysUserBankCard.setUserId(sysUserService.getUserId());
         return succeed(sysUserBankCardService.add(sysUserBankCard));
     }
 
@@ -215,22 +172,14 @@ public class TeacherManageController extends BaseController {
         if(id == null){
             return failed("参数校验失败");
         }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null || sysUser.getId() == null){
-            return failed("获取用户信息失败");
-        }
-        sysUserBankCardService.del(id,sysUser.getId());
+        sysUserBankCardService.del(id,sysUserService.getUserId());
         return succeed();
     }
 
     @ApiOperation(value = "分页查询银行卡信息列表")
     @GetMapping("userBankCard/queryPage")
     public Object queryPage() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null || sysUser.getId() == null){
-            return failed("获取用户失败");
-        }
-        return succeed(sysUserBankCardService.findByUser(sysUser.getId()));
+        return succeed(sysUserBankCardService.findByUser(sysUserService.getUserId()));
     }
 
     @ApiOperation(value = "调剂学生报名专业")

+ 8 - 6
mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherSubjectController.java

@@ -2,16 +2,19 @@ package com.ym.mec.teacher.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.service.SubjectService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -23,14 +26,14 @@ import java.util.Objects;
 @RestController
 public class TeacherSubjectController extends BaseController {
 
-    @Autowired
+    @Resource
     private SubjectService subjectService;
-    @Autowired
+    @Resource
     private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "获取教师所在科目列表")
     @GetMapping("/findTeacherSubjets")
-    public Object findTeacherSubjets(){
+    public HttpResponseResult<List<Subject>> findTeacherSubjets(){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(Objects.isNull(sysUser)){
             return failed(HttpStatus.FORBIDDEN,"请登录");
@@ -40,8 +43,7 @@ public class TeacherSubjectController extends BaseController {
 
     @ApiOperation(value = "获取子集科目列表")
     @GetMapping("/findSubSubjects")
-    public Object findSubSubjects(Integer tenantId){
+    public HttpResponseResult<List<Subject>> findSubSubjects(Integer tenantId){
         return succeed(subjectService.findSubSubjects(null));
     }
-
 }

+ 62 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/UserController.java

@@ -0,0 +1,62 @@
+package com.ym.mec.teacher.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserInfoWrapper;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+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;
+
+/**
+ * 用户通讯录表(ImUserFriend)表控制层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:59
+ */
+@Api(tags = "用户通讯录表")
+@RestController
+@Slf4j
+@RequestMapping("${app-config.url.teacher:}/user")
+public class UserController extends BaseController {
+
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+
+
+
+    @ApiOperation(value = "更新更新IM用户信息", notes = "更新用户信息")
+    @PostMapping("/updateImUserInfo")
+    public HttpResponseResult<JSONObject> updateImUserInfo(@Validated @RequestBody UserInfoWrapper.UpdateUser info) {
+
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        info.setUserId(user.getId().intValue());
+        info.setClient(ClientEnum.TEACHER);
+
+
+        sysUserService.imDeviceId(info);
+        return succeed();
+    }
+
+}
+

+ 106 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/UserMusicController.java

@@ -0,0 +1,106 @@
+package com.ym.mec.teacher.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.UserMusic;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import com.ym.mec.biz.service.UserMusicService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/userMusic")
+@Api(tags = "用户曲目作品")
+public class UserMusicController  extends BaseController {
+
+    @Autowired
+    private UserMusicService userMusicService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @ApiOperation(value = "详情", notes = "用户曲目作品-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<UserMusicWrapper.UserMusic> detail(@PathVariable("id") Long id) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        UserMusicWrapper.UserMusicQuery build = UserMusicWrapper.UserMusicQuery.builder().id(id).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(build), build,
+            JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.TEACHER.name()).build());
+        List<UserMusicWrapper.UserMusic> records = pages.getRecords();
+        if (records.isEmpty()) {
+            throw new BizException(999,"作品已删除");
+        }
+
+        return succeed(records.get(0));
+    }
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusicQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicWrapper.UserMusic>> page(@RequestBody UserMusicWrapper.UserMusicQuery query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        query.setUserId(user.getId().longValue());
+        query.setClientType(ClientEnum.TEACHER);
+        JwtUserInfo<Object> userInfo = JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.TEACHER.name()).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(query), query, userInfo);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+
+    @ApiOperation(value = "保存草稿/发布作品", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusic")
+    @PostMapping("/save")
+    public HttpResponseResult<JSONObject> add(@Validated @RequestBody UserMusicWrapper.AddUserMusic userMusic) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        userMusic.setUserId(user.getId().longValue());
+        userMusic.setClientType(ClientEnum.TEACHER);
+        // 新增数据
+        userMusicService.save(userMusic);
+
+        return succeed();
+    }
+
+    @ApiOperation(value = "删除", notes = "用户曲目作品- 传入id")
+    @PostMapping("/remove")
+    public HttpResponseResult<Boolean> remove(@RequestParam String id) {
+
+        if (StringUtils.isBlank(id)) {
+            throw new BizException( "id不能为空");
+        }
+        List<String> list = Arrays.asList(id.split(","));
+
+        userMusicService.lambdaUpdate()
+            .in(UserMusic::getId, list)
+            .set(UserMusic::getDelFlag, true)
+            .update();
+
+        return succeed(true);
+    }
+}

+ 78 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/UserMusicStarController.java

@@ -0,0 +1,78 @@
+package com.ym.mec.teacher.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alipay.service.schema.util.StringUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.entity.UserMusicStar;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicStarWrapper;
+import com.ym.mec.biz.service.*;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/userMusicStar")
+@Api(tags = "用户曲目作品点赞记录")
+public class UserMusicStarController  extends BaseController {
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品点赞记录- 传入 UserMusicStarWrapper.UserMusicStarQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicStarWrapper.UserMusicStar>> page(@RequestBody @Validated UserMusicStarWrapper.UserMusicStarQuery query) {
+
+        IPage<UserMusicStarWrapper.UserMusicStar> pages = userMusicStarService.selectPage(QueryInfo.getPage(query), query);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+
+
+    @ApiOperation(value = "点赞/取消点赞")
+    @PostMapping("/star")
+    public HttpResponseResult<JSONObject> star(@Validated @RequestBody UserMusicStarWrapper.Star star) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        star.setUserId(user.getId().longValue());
+        star.setClientType(ClientEnum.TEACHER);
+        // 新增数据
+        userMusicStarService.star(star);
+
+        return succeed();
+    }
+}

+ 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")

+ 76 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenUserMusicController.java

@@ -0,0 +1,76 @@
+package com.ym.mec.teacher.controller.open;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.dal.wrapper.UserMusicWrapper;
+import com.ym.mec.biz.service.UserMusicService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/open/userMusic")
+@Api(tags = "用户曲目作品")
+public class OpenUserMusicController  extends BaseController {
+
+    @Autowired
+    private UserMusicService userMusicService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+
+    @ApiOperation(value = "详情", notes = "用户曲目作品-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<UserMusicWrapper.UserMusic> detail(@PathVariable("id") Long id) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        JwtUserInfo userInfo = null;
+        if (user != null && null != user.getId()) {
+            userInfo = JwtUserInfo.builder()
+                .clientType(ClientEnum.TEACHER.name())
+                .userId(user.getId().toString())
+                .build();
+        }
+        UserMusicWrapper.UserMusicQuery build = UserMusicWrapper.UserMusicQuery.builder().id(id).build();
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(build), build
+            ,userInfo);
+        List<UserMusicWrapper.UserMusic> records = pages.getRecords();
+        if (records.isEmpty()) {
+            throw new BizException(999,"作品已删除");
+        }
+
+        return succeed(records.get(0));
+    }
+
+
+    @ApiOperation(value = "查询分页", notes = "用户曲目作品- 传入 UserMusicWrapper.UserMusicQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<UserMusicWrapper.UserMusic>> page(@RequestBody UserMusicWrapper.UserMusicQuery query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        JwtUserInfo userInfo = null;
+        if (user != null && null != user.getId()) {
+            userInfo = JwtUserInfo.builder()
+                .clientType(ClientEnum.TEACHER.name())
+                .userId(user.getId().toString())
+                .build();
+        }
+        IPage<UserMusicWrapper.UserMusic> pages = userMusicService.selectPage(QueryInfo.getPage(query), query
+            ,userInfo);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+}

+ 29 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenUserMusicStarController.java

@@ -0,0 +1,29 @@
+package com.ym.mec.teacher.controller.open;
+
+import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.UserMusicStarService;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.teacher:}/open/userMusicStar")
+@Api(tags = "用户曲目作品点赞记录")
+public class OpenUserMusicStarController {
+
+    @Autowired
+    private UserMusicStarService userMusicStarService;
+
+    @Autowired
+    private StudentService studentService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+}

+ 26 - 0
mec-application/src/main/java/com/ym/mec/vo/PageUtil.java

@@ -0,0 +1,26 @@
+package com.ym.mec.vo;
+
+import com.ym.mec.common.page.PageInfo;
+
+import java.util.Objects;
+
+/**
+ * @author hgw
+ * Created by 2021-12-03
+ */
+public class PageUtil {
+
+    public static <T> PageInfo<T> pageInfo(com.microsvc.toolkit.common.response.paging.PageInfo<T> source) {
+        if (Objects.isNull(source)) {
+            return new PageInfo<>(1, 20);
+        }
+        int total = Integer.parseInt(String.valueOf(source.getTotal()));
+        int limit = Integer.parseInt(String.valueOf(source.getLimit()));
+        PageInfo<T> resultPage = new PageInfo<>();
+        resultPage.setRows(source.getRows());
+        resultPage.setPageNo(Long.valueOf(source.getCurrent()).intValue());
+        resultPage.setLimit(limit);
+        resultPage.setTotal(total);
+        return resultPage;
+    }
+}

+ 46 - 23
mec-application/src/main/java/com/ym/mec/web/controller/APIController.java

@@ -10,18 +10,16 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.entity.MallCreateOrderModel;
-import com.ym.mec.common.entity.OrderCancelModel;
-import com.ym.mec.common.entity.RefundModel;
+import com.ym.mec.common.dto.SchoolDto;
+import com.ym.mec.common.entity.*;
 import com.ym.mec.thirdparty.adapay.entity.BaseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.List;
@@ -31,32 +29,34 @@ import java.util.Map;
 @Api(tags = "对外接口")
 @RestController
 public class APIController extends BaseController {
-	@Autowired
+	@Resource
 	private SysUserCashAccountDao sysUserCashAccountDao;
-	@Autowired
+	@Resource
 	private TeacherDao teacherDao;
-	@Autowired
+	@Resource
 	private EmployeeDao employeeDao;
-	@Autowired
+	@Resource
 	private PracticeLessonApplyService practiceLessonApplyService;
-	@Autowired
+	@Resource
 	private PracticeGroupService practiceGroupService;
-	@Autowired
+	@Resource
 	private ImGroupService imGroupService;
-	@Autowired
+	@Resource
 	private SysUserFeignService sysUserFeignService;
-	@Autowired
+	@Resource
 	private SysTenantConfigService sysTenantConfigService;
-	@Autowired
+	@Resource
 	private SysUserService sysUserService;
-	@Autowired
+	@Resource
 	private VipGroupService vipGroupService;
-
-	@Autowired
+	@Resource
 	private SysConfigService sysConfigService;
-
-	@Autowired
+	@Resource
 	private StudentPaymentOrderService studentPaymentOrderService;
+	@Resource
+	private GoodsService goodsService;
+	@Resource
+	private CooperationOrganService cooperationOrganService;
 
 	@GetMapping("/createCashAccount")
 	public Boolean createCashAccount(Integer userId,Integer tenantId) {
@@ -146,24 +146,30 @@ public class APIController extends BaseController {
 	// 商城订单优惠券金额
 	@PostMapping("/couponAmount")
 	public HttpResponseResult<Map> couponAmount(@RequestBody MallCreateOrderModel model) {
-			return succeed(studentPaymentOrderService.couponAmount(model));
+		return succeed(studentPaymentOrderService.couponAmount(model));
 	}
 
 	// 商城保存订单详情数据
 	@PostMapping("/mallSaveOrderInfo")
 	public HttpResponseResult<Map> mallSaveOrderInfo(@RequestBody MallCreateOrderModel model) {
-			studentPaymentOrderService.mallSaveOrderInfo(model);
-			return succeed();
+		studentPaymentOrderService.mallSaveOrderInfo(model);
+		return succeed();
 	}
 
 	// 商城支付成功/失败修改订单状态
 	@PostMapping("/updateOrder")
 	public HttpResponseResult updateOrder(@RequestBody Map map) throws Exception {
-
 		studentPaymentOrderService.updateOrder(map);
 		return succeed();
 	}
 
+	// 同步商城订单发货状态
+	@PostMapping("/updateShippedStatus")
+	public HttpResponseResult updateShippedStatus(@RequestBody List<OrderSkuSync> orderSkuSyncs) throws Exception {
+		studentPaymentOrderService.updateShippedStatus(orderSkuSyncs);
+		return succeed();
+	}
+
 
 	/**
 	 * 商城取消订单接口
@@ -229,4 +235,21 @@ public class APIController extends BaseController {
 
 		return succeed(balance);
 	}
+
+	// 组合商品状态同步
+	@PostMapping("/goodsStatusSynchronize")
+	public HttpResponseResult<Boolean> goodsStatusSynchronize(@RequestBody List<GoodsSubModel> goodsSubModelList) {
+		return succeed(goodsService.goodsStatusSynchronize(goodsSubModelList));
+	}
+
+	// 组合商品库存同步
+	@PostMapping("/goodsStockCountSynchronize")
+	public HttpResponseResult<Boolean> goodsStockCountSynchronize(@RequestBody List<GoodsSubStockModel> goodsSubStockModels) {
+		return succeed(goodsService.goodsStockCountSynchronize(goodsSubStockModels));
+	}
+
+	@PostMapping("/schoolListByIds")
+	public HttpResponseResult<List<SchoolDto>> coopListByIds(@RequestBody List<Integer> coopIds) {
+		return succeed(cooperationOrganService.coopListByIds(coopIds));
+	}
 }

+ 22 - 5
mec-application/src/main/java/com/ym/mec/web/controller/AppVersionInfoController.java

@@ -3,12 +3,15 @@ package com.ym.mec.web.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.biz.dal.entity.AppVersionInfo;
 import com.ym.mec.biz.dal.entity.AppVersionInfoBak;
+import com.ym.mec.biz.dal.wrapper.AppVersionInfoWrapper;
 import com.ym.mec.biz.service.AppVersionInfoService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 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.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -30,23 +33,37 @@ public class AppVersionInfoController extends BaseController {
 	@ApiOperation("分页查询")
 	@GetMapping(value = "/list")
 	@PreAuthorize("@pcs.hasPermissions('appVersionInfo/list')")
-	public Object getList(QueryInfo queryInfo) {
+	public Object getList(AppVersionInfoWrapper.AppVersionInfoQuery queryInfo) {
 		return succeed(appVersionInfoService.queryPage(queryInfo));
 	}
 
 	@ApiOperation("根据app客户端查询对象")
 	@ApiImplicitParam(name = "platform", value = "平台名称", required = true, dataType = "String", paramType = "path")
 	@GetMapping(value = "/queryByPlatform")
-	public Object queryByPlatform(String platform) {
+	public Object queryByPlatform(String platform,String localVersion) {
 		List<AppVersionInfo> list = appVersionInfoService.queryNewestByPlatform(platform);
-		if (list.size() > 0) {
+		if (CollectionUtils.isNotEmpty(list)) {
 			AppVersionInfo appVersionInfo = list.get(0);
-			if(appVersionInfo.getVersion().equals("2.0.9") && appVersionInfo.getPlatform().equals("android-education")){
+			if("2.0.9".equals(appVersionInfo.getVersion()) && "android-education".equals(appVersionInfo.getPlatform())){
 				AppVersionInfoBak appVersionInfoBak = JSONObject.parseObject(JSONObject.toJSONString(appVersionInfo),AppVersionInfoBak.class);
 				appVersionInfoBak.setDownloadUrl(new String(appVersionInfo.getDownloadUrl()));
+				/*if (StringUtils.isEmpty(localVersion)) {
+					appVersionInfoBak.setIsForceUpdate(true);
+				}*/
 				return succeed(appVersionInfoBak);
 			}
-			return succeed(list.get(0));
+			//如果应用版本跨多个版本时若其中任何一个版本有强制更新,返回字段标记为强制更新
+			if(!appVersionInfo.getIsForceUpdate() && StringUtils.isNotEmpty(localVersion)){
+				//是否需要强制更新
+				AppVersionInfo forceUpdate = appVersionInfoService.checkForceUpdate(platform,localVersion);
+				if(forceUpdate != null){
+					appVersionInfo.setIsForceUpdate(true);
+				}
+			}
+			/*if (StringUtils.isEmpty(localVersion)) {
+				appVersionInfo.setIsForceUpdate(true);
+			}*/
+			return succeed(appVersionInfo);
 		}
 		return failed();
 	}

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

@@ -435,7 +435,8 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "学校端-场地管理列表")
     @PostMapping("/teachingPointCourse")
-    public HttpResponseResult<PageInfo<TeachingPointWrapper.CourseTeachingPoint>> teachingPoint(@RequestBody TeachingPointWrapper.TeachingPointQuery queryInfo,@RequestHeader Integer coopId) {
+    public HttpResponseResult<PageInfo<TeachingPointWrapper.CourseTeachingPoint>>
+    teachingPoint(@RequestBody TeachingPointWrapper.TeachingPointQuery queryInfo,@RequestHeader Integer coopId) {
         if (coopId == null) {
             return succeed(new PageInfo<>());
         }
@@ -449,6 +450,17 @@ public class ClassGroupController extends BaseController {
         return succeed(PageUtil.pageInfo(courseTeachingPointIPage));
     }
 
+    @ApiOperation(value = "管理端-场地管理列表")
+    @PostMapping("/eduTeachingPointCourse")
+    public HttpResponseResult<PageInfo<TeachingPointWrapper.CourseTeachingPoint>>
+    eduTeachingPointCourse(@RequestBody TeachingPointWrapper.TeachingPointQuery queryInfo) {
+        if (queryInfo.getCourseStatus() == null) {
+            queryInfo.setCourseStatus(CourseStatusEnum.OVER);
+        }
+        IPage<TeachingPointWrapper.CourseTeachingPoint> courseTeachingPointIPage = courseScheduleService.teachingPointCourse(queryInfo);
+        return succeed(PageUtil.pageInfo(courseTeachingPointIPage));
+    }
+
     @ApiOperation(value = "学校端-场地设置列表")
     @PostMapping("/teachingPointClass")
     public HttpResponseResult<PageInfo<TeachingPointWrapper.ClassTeachingPoint>> teachingPointClass(@RequestBody TeachingPointWrapper.TeachingPointQuery queryInfo,@RequestHeader Integer coopId) {

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

@@ -50,7 +50,7 @@ public class CloudTeacherOrderController extends BaseController {
     public HttpResponseResult<PageInfo<CloudTeacherStudent>> queryInactive(@RequestBody CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) throws Exception {
         Integer tenantId = TenantContextHolder.getTenantId();
         cloudTeacherOrderQueryInfo.setTenantId(tenantId);
-        String organIds = organizationService.getEmployeeOrgan("");
+        String organIds = organizationService.getEmployeeOrgan(cloudTeacherOrderQueryInfo.getOrganIds());
         if (StringUtils.isEmpty(cloudTeacherOrderQueryInfo.getStatus())) {
             cloudTeacherOrderQueryInfo.setStatus("1,4");
         }

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

@@ -19,13 +19,13 @@ import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.ModelMap;
-import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -357,7 +357,7 @@ public class CourseScheduleController extends BaseController {
 				return failed("请指定班级");
 			}
     		List<ClassGroup> classGroupList = classGroupDao.findClassGroupByMusicGroupIdAndType(batchInsertCoursesDto.getMusicGroupId(), ClassGroupTypeEnum.valueOf(batchInsertCoursesDto.getType().getCode()));
-    		if(classGroupList == null || classGroupList.size() == 0){
+    		if(CollectionUtils.isEmpty(classGroupList)){
     			return failed("没有查询到班级信息");
     		}
     		batchInsertCoursesDto.setClassGroupId(classGroupList.get(0).getId());

+ 18 - 17
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);
@@ -521,16 +521,17 @@ public class ExportController extends BaseController {
     public void exportGoods(HttpServletResponse response, GoodsQueryInfo queryInfo) throws IOException {
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
-        List<Goods> rows = goodsService.queryPage(queryInfo).getRows();
+        List<Goods> rows = goodsService.exportGoods(queryInfo);
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"商品编号", "货号", "品牌", "商品名称",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学员展示分部","教务展示分部","课程收费团展示分部","会员团展示分部", "免费团展示分部","乐器置换展示分部", "分部成本", "商品编号", "货号", "品牌", "商品名称",
                     "是否组合商品", "商品类型", "商品分类", "具体型号", "内部库存", "税务库存", "库存类型", "市场价(元)",
-                    "零售价(元)", "商品团购价(元)", "商品描述", "商品详情", "是否上下架"}, new String[]{
-                    "id", "sn", "brand", "name",
+                    "零售价(元)", "商品团购价(元)", "商品描述", "商品详情", "是否上下架","子商品编号","子商品名称","子商品成本","子商品货号"}, new String[]{
+                    "studentShowOrganName","educationShowOrganName","courseFeeShowOrganName","memberFeeShowOrganName","freeFeeShowOrganName","replacementShowOrganName",
+                    "organCostPrice", "id", "sn", "brand", "name",
                     "complementGoodsIdList == null || complementGoodsIdList == '' ? '否':'是'",
                     "type.desc", "goodsCategoryName", "specification", "stockCount", "taxStockCount", "stockType.msg", "marketPrice",
-                    "discountPrice", "groupPurchasePrice", "brief", "desc", "status.msg"}, rows);
+                    "discountPrice", "groupPurchasePrice", "brief", "desc", "status.msg","childId","childName","childOrganCostPrice","childSn"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=goods-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1037,7 +1038,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 +1364,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 +1728,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 +1779,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()));
@@ -2287,9 +2288,9 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             String[] header = {"老师编号", "老师名称", "所属分部", "老师状态", "专业技能", "联系电话", "工作类型",
-                    "员工状态", "已开小课", "试听课安排", "开放网管课", "转正日期", "离职日期"};
+                    "已开小课", "试听课安排", "开放网管课", "转正日期", "离职日期"};
             String[] body = {"id", "realName", "organName", "lockFlag == 0?'正常':lockFlag == 1?'冻结':'锁定'", "splitSubjectName", "phone", "jobNature.msg",
-                    "isProbationPeriod.msg", "vipNum", "demoNum", "isSupportExtraPracticeLesson?'是':'否'", "formalStaffDate", "demissionDate"};
+                    "vipNum", "demoNum", "isSupportExtraPracticeLesson?'是':'否'", "formalStaffDate", "demissionDate"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=teacherPage-" + DateUtil.getDate(new Date()) + ".xls");
@@ -2825,11 +2826,11 @@ public class ExportController extends BaseController {
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员姓名", "学员编号", "老师姓名", "老师编号",
-                    "课程组编号", "课程编号", "课程名称", "课程组类型", "课程类型", "上课时间","签到时间", "签退时间", "考勤状态","来源"}, new String[]{
-                    "courseSchedule.organization.name", "username", "userId", "courseSchedule.teacherName", "teacherId", "musicGroupId", "courseScheduleId",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员姓名", "学员编号", "专业", "老师姓名", "老师编号",
+                    "课程组编号","课程组名称", "课程编号", "课程名称", "课程组类型", "课程类型", "上课时间","签到时间", "签退时间", "考勤状态","是否达标","来源"}, new String[]{
+                    "courseSchedule.organization.name", "username", "userId","subjectName", "courseSchedule.teacherName", "teacherId", "musicGroupId", "musicGroupName", "courseScheduleId",
                     "courseSchedule.name", "groupType.desc", "courseSchedule.type.msg", "classTimeStr", "signInTime",
-                    "signOutTime", "status.msg","joinCourseType.msg"}, rows);
+                    "signOutTime", "status.msg","qualifiedFlag == null || qualifiedFlag == 0? '未达标' : '已达标'","joinCourseType.msg"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=courseAttendance-" + DateUtil.getDate(new Date()) + ".xls");

+ 54 - 8
mec-application/src/main/java/com/ym/mec/web/controller/GoodsController.java

@@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.entity.GoodsProcurement;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.GoodsQuery;
 import com.ym.mec.biz.dal.page.GoodsQueryInfo;
+import com.ym.mec.biz.dal.wrapper.GoodsWrapper;
 import com.ym.mec.biz.service.GoodsCategoryService;
 import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.biz.service.SysUserService;
@@ -18,10 +19,20 @@ import io.swagger.annotations.ApiParam;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 @RequestMapping("${app-config.url.web:}/goods")
 @Api(tags = "商品(教材、辅件)服务")
@@ -40,19 +51,27 @@ public class GoodsController extends BaseController {
     @ApiOperation(value = "新增商品(教材、辅件)")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('goods/add')")
-    public Object add(Goods goods){
-        goodsService.addGoods(goods,sysUserService.getUserId());
+    public Object add(@RequestBody GoodsWrapper.Goods goods) {
+        goodsService.addGoods(Collections.singletonList(goods), sysUserService.getUserId());
         return succeed();
     }
 
-    @ApiOperation(value = "新增商品清单")
+    @ApiOperation(value = "新增商品(教材、辅件)")
+    @PostMapping("/addBatch")
+    @PreAuthorize("@pcs.hasPermissions('goods/addBatch')")
+    public Object addBatch(@RequestBody List<GoodsWrapper.Goods> goodsList) {
+        goodsService.addGoods(goodsList, sysUserService.getUserId());
+        return succeed();
+    }
+
+/*    @ApiOperation(value = "新增商品清单")
     @PostMapping("/addGoodsProcurement")
     @PreAuthorize("@pcs.hasPermissions('goods/addGoodsProcurement')")
     public Object addGoodsProcurement(GoodsProcurement goodsProcurement){
         goodsProcurement.setOperatorId(sysUserService.getUserId());
         goodsService.addGoodsProcurement(goodsProcurement);
         return succeed();
-    }
+    }*/
 
     @ApiOperation(value = "删除商品(教材、辅件)")
     @PostMapping("/del/{id}")
@@ -79,16 +98,16 @@ public class GoodsController extends BaseController {
     @ApiOperation(value = "修改商品(教材、辅件)")
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('goods/update')")
-    public Object update(Goods goods){
+    public Object update(@RequestBody GoodsWrapper.Goods goods){
         goods.setUpdateTime(new Date());
-        goodsService.update(goods);
+        goodsService.updateGoods(goods);
         return succeed();
     }
 
     @ApiOperation(value = "根据商品(教材、辅件)编号查询商品(教材、辅件)")
     @GetMapping("/get/{id}")
     public Object get(@ApiParam(value = "商品(教材、辅件)编号", required = true) @PathVariable("id") Integer id){
-        Goods goods = goodsService.getDetail(id);
+        GoodsWrapper.Goods goods = goodsService.getDetail(id);
         GoodsCategory goodsCategory = goodsCategoryService.get(goods.getGoodsCategoryId());
         if(Objects.nonNull(goodsCategory)){
             goods.setGoodsCategoryName(goodsCategory.getName());
@@ -120,4 +139,31 @@ public class GoodsController extends BaseController {
     public Object findGoodsBySubId(GoodsQuery goodsQuery){
         return succeed(goodsService.findGoodsBySubId(goodsQuery));
     }
+
+
+    @ApiOperation(value = "查询商城商品列表分页")
+    @GetMapping("/queryGoodsSubByPage")
+//    @PreAuthorize("@pcs.hasPermissions('goods/queryGoodsSubByPage')")
+    public Object queryGoodsSubByPage(GoodsWrapper.GoodsSubQuery query) {
+        return succeed(goodsService.queryGoodsSubByPage(query));
+
+    }
+
+    @ApiOperation(value = "查询商品类型")
+    @GetMapping("/queryGoodsTypeList")
+    public Object queryGoodsTypeList() {
+        return succeed(goodsService.queryGoodsTypeList());
+    }
+
+    @ApiOperation(value = "查询商品分类")
+    @GetMapping("/queryGoodsCategoryList")
+    public Object queryGoodsCategoryList() {
+        return succeed(goodsService.queryGoodsCategoryList());
+    }
+
+    @ApiOperation(value = "查询商品品牌")
+    @GetMapping("/queryGoodsBrandList")
+    public Object queryGoodsBrandList() {
+        return succeed(goodsService.queryGoodsBrandList());
+    }
 }

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

@@ -68,8 +68,8 @@ public class HfMerchantConfigController extends BaseController {
     }
 
     @ApiOperation("根据机构id查询汇付商户配置")
-    @GetMapping(value = "/queryByTenantId/{payerName}/{id}")
-    public HttpResponseResult<HfMerchantConfig> queryByTenantId(@PathVariable("payerName") String payerName, @ApiParam(value = "机构ID", required = true) @PathVariable("id") Integer id) {
+    @GetMapping(value = "/queryByTenantId")
+    public HttpResponseResult<HfMerchantConfig> queryByTenantId(String payerName, Integer id) {
         return succeed(hfMerchantConfigService.queryByTenantId(id, payerName));
     }
 

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio