Browse Source

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into zx_saas_message

# Conflicts:
#	mec-auth/pom.xml
#	mec-common/common-core/pom.xml
zouxuan 1 year ago
parent
commit
fe4c6218a6
100 changed files with 2100 additions and 721 deletions
  1. 4 4
      audio-analysis/src/main/java/com/yonge/netty/dto/ChunkAnalysis.java
  2. 1 1
      audio-analysis/src/main/java/com/yonge/netty/dto/HardLevelEnum.java
  3. 73 58
      audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java
  4. 4 4
      audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java
  5. 1 1
      cms/src/main/java/com/ym/mec/cms/dal/dao/SysNewsInformationDao.java
  6. 18 7
      cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsTypeServiceImpl.java
  7. 3 0
      cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  8. 3 1
      mec-application/src/main/java/com/ym/mec/student/controller/CloudStudyController.java
  9. 2 8
      mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java
  10. 9 30
      mec-application/src/main/java/com/ym/mec/student/controller/RepairController.java
  11. 1 31
      mec-application/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  12. 2 1
      mec-application/src/main/java/com/ym/mec/student/controller/SysMusicCompareRecordController.java
  13. 12 2
      mec-application/src/main/java/com/ym/mec/teacher/controller/CloudStudyController.java
  14. 2 2
      mec-application/src/main/java/com/ym/mec/teacher/controller/GoodsController.java
  15. 29 17
      mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherController.java
  16. 8 6
      mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherSubjectController.java
  17. 46 23
      mec-application/src/main/java/com/ym/mec/web/controller/APIController.java
  18. 6 0
      mec-application/src/main/java/com/ym/mec/web/controller/AppVersionInfoController.java
  19. 2 2
      mec-application/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
  20. 2 2
      mec-application/src/main/java/com/ym/mec/web/controller/ExportController.java
  21. 54 8
      mec-application/src/main/java/com/ym/mec/web/controller/GoodsController.java
  22. 13 1
      mec-application/src/main/java/com/ym/mec/web/controller/ImportController.java
  23. 12 0
      mec-application/src/main/java/com/ym/mec/web/controller/MusicGroupCalenderRefundPeriodController.java
  24. 3 0
      mec-application/src/main/java/com/ym/mec/web/controller/ReplacementInstrumentActivityController.java
  25. 1 20
      mec-application/src/main/java/com/ym/mec/web/controller/StudentPaymentRouteOrderController.java
  26. 2 1
      mec-application/src/main/java/com/ym/mec/web/controller/StudentRepairController.java
  27. 5 2
      mec-application/src/main/java/com/ym/mec/web/controller/TaskController.java
  28. 69 0
      mec-application/src/main/java/com/ym/mec/web/controller/education/EduCloudStudyController.java
  29. 59 0
      mec-application/src/main/java/com/ym/mec/web/controller/education/EduCooperationOrganController.java
  30. 34 10
      mec-application/src/main/java/com/ym/mec/web/controller/education/EduRepairController.java
  31. 11 0
      mec-application/src/main/java/com/ym/mec/web/controller/education/EduSubjectController.java
  32. 67 0
      mec-application/src/main/java/com/ym/mec/web/controller/school/SchoolCloudStudyController.java
  33. 43 0
      mec-application/src/main/java/com/ym/mec/web/controller/school/SchoolCooperationOrganController.java
  34. 87 0
      mec-application/src/main/java/com/ym/mec/web/controller/school/SchoolStudentHomeworkController.java
  35. 21 0
      mec-application/src/main/resources/columnMapper.ini
  36. 3 0
      mec-application/src/main/resources/logback-spring.xml
  37. 104 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysConfig.java
  38. 24 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysConfigDao.java
  39. 9 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/CbsQrCodeScanServiceImpl.java
  40. 34 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/ExceptionLogController.java
  41. 21 0
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysConfigMapper.xml
  42. 3 0
      mec-auth/mec-auth-server/src/main/resources/logback-spring.xml
  43. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  44. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/GoodsDao.java
  45. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupCalenderRefundPeriodDao.java
  46. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  47. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderAddressDao.java
  48. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderGoodsDao.java
  49. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderRepairDao.java
  50. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SellOrderDao.java
  51. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  52. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java
  53. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  54. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentRouteOrderDao.java
  55. 8 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  56. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRepairDao.java
  57. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  58. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectGoodsMapperDao.java
  59. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysAreaDao.java
  60. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ComplementGoodsDto.java
  61. 3 95
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CooperationCalenderRefundDto.java
  62. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CooperationCalenderRefundUpdateDto.java
  63. 12 80
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseTimeDto.java
  64. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/GoodsNameDto.java
  65. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/GoodsOrderItemVO.java
  66. 0 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupMemberDto.java
  67. 8 192
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentBaseCalender.java
  68. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OutOrderInfoDto.java
  69. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ReplacementInstrumentActivityStatDto.java
  70. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupCourseAdjustInfoDto.java
  71. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WaitSendMessageDto.java
  72. 14 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Goods.java
  73. 49 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/GoodsSub.java
  74. 11 96
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupCalenderRefundPeriod.java
  75. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalender.java
  76. 73 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderAddress.java
  77. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderCourseSettings.java
  78. 66 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderGoods.java
  79. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ReplacementInstrument.java
  80. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SellOrder.java
  81. 36 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentGoodsSell.java
  82. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrder.java
  83. 56 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrderAddress.java
  84. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicCompareRecord.java
  85. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  86. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderTypeEnum.java
  87. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/TemplateTypeEnum.java
  88. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/GoodsSubMapper.java
  89. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/StudentPaymentOrderAddressMapper.java
  90. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/GoodsQuery.java
  91. 33 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/GoodsQueryInfo.java
  92. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentAttendanceQueryInfo.java
  93. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentQueryInfo.java
  94. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/SysMusicCompareRecordQueryInfo.java
  95. 63 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/GoodsSubWrapper.java
  96. 256 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/GoodsWrapper.java
  97. 71 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicGroupCalenderRefundPeriodWrapper.java
  98. 67 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicGroupPaymentCalenderAddressWrapper.java
  99. 63 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/StudentPaymentOrderAddressWrapper.java
  100. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

+ 4 - 4
audio-analysis/src/main/java/com/yonge/netty/dto/ChunkAnalysis.java

@@ -12,13 +12,13 @@ public class ChunkAnalysis {
 
 	private int splDb;
 
-	private int power;
+	private float power;
 	
 	private int amplitude;
 	
 	private boolean isPeak;
 
-	public ChunkAnalysis(double startTime, double endTime, int frequency, int splDb, int power, int amplitude) {
+	public ChunkAnalysis(double startTime, double endTime, int frequency, int splDb, float power, int amplitude) {
 		this.startTime = startTime;
 		this.endTime = endTime;
 		this.frequency = frequency;
@@ -74,11 +74,11 @@ public class ChunkAnalysis {
 		this.splDb = splDb;
 	}
 
-	public int getPower() {
+	public float getPower() {
 		return power;
 	}
 
-	public void setPower(int power) {
+	public void setPower(float power) {
 		this.power = power;
 	}
 

+ 1 - 1
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("入门级", 3, 5, 10, 10, 15, 15, 22, 22, 75, 25), 
+	BEGINNER("入门级", 3, 5, 10, 10, 15, 15, 22, 22, 75, 10), 
 	/**
 	 * 进阶级, 振幅阈值, 频率阈值 <br>
 	 * 节奏有效范围(1分音符), 节奏有效范围(2分音符), 节奏有效范围(4分音符), 节奏有效范围(8分音符), 节奏有效范围(16分音符), 节奏有效范围(32分音符)<br>

+ 73 - 58
audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java

@@ -346,8 +346,10 @@ public class UserChannelContext {
 		}
 		
 		int splDb = (int) Signals.soundPressureLevel(samples);
-		int power = (int) Signals.power(samples);
-		int amplitude = 0;
+		float power = Signals.power(samples);
+		int amplitude = (int) Signals.norm(samples);
+		
+		int decibels = (int) Signals.decibels(samples);
 		if(StringUtils.equalsIgnoreCase(evaluationCriteria, EvaluationCriteriaEnum.AMPLITUDE.getCode())) {
 			amplitude = (int) Signals.norm(samples);
 		}else if(StringUtils.equalsIgnoreCase(evaluationCriteria, EvaluationCriteriaEnum.DECIBELS.getCode())){
@@ -377,7 +379,7 @@ public class UserChannelContext {
 		
 		if (noteAnalysis.getMusicalNotesIndex() >= 0 && noteAnalysis.getMusicalNotesIndex() <= getTotalMusicNoteIndex(null)) {
 			
-			LOGGER.debug("user:{}  delayProcessed:{}  dynamicOffset:{}  Frequency:{}  splDb:{}  amplitude:{}  time:{}", user, delayProcessed, dynamicOffset, playFrequency, splDb, amplitude, playTime);
+			LOGGER.debug("user:{}  delayProcessed:{}  dynamicOffset:{}  Frequency:{}  splDb:{}  power:{}  amplitude:{} decibels:{}  time:{}", user, delayProcessed, dynamicOffset, playFrequency, splDb, power, amplitude, decibels, playTime);
 			
 			ChunkAnalysis chunkAnalysis = new ChunkAnalysis(playTime - durationTime, playTime, playFrequency, splDb, power, amplitude);
 			
@@ -792,66 +794,56 @@ public class UserChannelContext {
 			totalTimes = chunkList.size();
 		}
 		
+		/**
 		if (maxTimes * 100 / totalTimes < hardLevel.getIntegrityRange()) {
-			tempo = false;
 			LOGGER.debug("节奏错误原因:信号分堆后的最大数量不足指定的完成比例");
-		}
-		
-		/**
-		for (int i = 0; i < chunkList.size(); i++) {
-			chunkAnalysis = chunkList.get(i);
-			if (chunkAnalysis != null) {
-				if (chunkAnalysis.getFrequency() > MIN_FREQUECY) {
-					
-					tempo = true;
-					if (firstPeakIndex == -1) {
-						firstPeakIndex = i;
-						noteFrequencyRange = new NoteFrequencyRange(standardFrequecy, chunkAnalysis.getFrequency());
-					} else if (noteFrequencyRange.getMinFrequency() > chunkAnalysis.getFrequency()
-							|| chunkAnalysis.getFrequency() > noteFrequencyRange.getMaxFrequency()) {// 判断是否是同一个音
-						//是否是低八度或高八度
-						if(!((noteFrequencyRange.getMinFrequency() < chunkAnalysis.getFrequency() * 2 && chunkAnalysis.getFrequency() * 2 < noteFrequencyRange.getMaxFrequency())
-								|| (noteFrequencyRange.getMinFrequency() < chunkAnalysis.getFrequency() / 2 && chunkAnalysis.getFrequency() / 2 < noteFrequencyRange.getMaxFrequency()))){
-							tempo = false;
-							LOGGER.debug("节奏错误原因:不是同一个音[{}]:{}-{}", chunkAnalysis.getFrequency(), noteFrequencyRange.getMinFrequency(), noteFrequencyRange.getMaxFrequency());
-							break;
-						}
-					}
-					if (isContinue == false) {
-						if ((i + 1) / chunkAnalysisList.size() < hardLevel.getIntegrityRange()) {
-							if (unplayedSize > 0) {
-								tempo = false;
-								LOGGER.debug("节奏错误原因:信号不连续");
-								break;
-							}
-						}
-					}
-				} else {
-					if (tempo == true) {
-						isContinue = false;
-						unplayedSize++;
-					}
-				}
-			}
+			return false;
 		}
 		*/
 		
-		if (tempo) {
-			// 判断进入时间点
-			if(firstPeakIndex * 100 /chunkList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator(), musicXmlNote.getDuration())){
-				tempo = false;
-				LOGGER.debug("节奏错误原因:进入时间点太晚");
-			}else{
-				//判断是否与上一个音延续下来的
+		// 判断进入时间点
+		if(firstPeakIndex * 100 /chunkList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator(), musicXmlNote.getDuration())){
+			LOGGER.debug("节奏错误原因:进入时间点太晚");
+			return false;
+		}else{
+			//判断是否与上一个音延续下来的
+			if(correctedStartTime == musicXmlNote.getTimeStamp() + dynamicOffset) {
 				if(firstChunkAnalysis.getFrequency() > MIN_FREQUECY && lastChunkAnalysis.getFrequency() > MIN_FREQUECY){
 					tempo = new NoteFrequencyRange(standardFrequecy, firstChunkAnalysis.getFrequency()).equals(new NoteFrequencyRange(standardFrequecy, lastChunkAnalysis.getFrequency())) == false;
 					if(tempo == false){
 						LOGGER.debug("节奏错误原因:上一个音[{}]延续下来导致的", lastChunkAnalysis.getFrequency());
+						return false;
 					}
 				}
 			}
 		}
 		
+		//判断过程中声音是否有起伏
+		float minValue = 0;
+		int depth = 0;
+		
+		for (int i = 1; i < chunkList.size(); i++) {
+			
+			if(i == 1) {
+				minValue = chunkList.get(i - 1).getSplDb();
+			}
+			if (Math.abs(minValue - chunkList.get(i).getSplDb()) >= 6) {
+				LOGGER.debug("范围内查询到音波信号,correctedStartTime:{}", chunkList.get(i).getStartTime());
+				break;
+			}
+			
+			minValue = Math.min(minValue , chunkList.get(i).getSplDb());
+			
+			/**
+			if (depth >= 2 && Math.max(chunkList.get(i - 1).getPower(), chunkList.get(i).getPower()) / Math.min(chunkList.get(i - 1).getPower(), chunkList.get(i).getPower()) >= 2) {
+				tempo = false;
+				depth++;
+				LOGGER.debug("节奏错误原因:声波不稳定[{}]", chunkList.get(i).getEndTime());
+				break;
+			}
+			*/
+		}
+		
 		return tempo;
 	}
 	
@@ -999,17 +991,38 @@ public class UserChannelContext {
 			}
 		}
 		
+		double startTime = 0;
+		float minValue = 0;
+		for (int i = 1; i < chunkAnalysisList.size(); i++) {
+			
+			if(i == 1) {
+				minValue = chunkAnalysisList.get(i - 1).getSplDb();
+			}
+			if (Math.abs(minValue - chunkAnalysisList.get(i).getSplDb()) >= 6) {
+				LOGGER.debug("范围内查询到音波信号,correctedStartTime:{}", chunkAnalysisList.get(i).getStartTime());
+				startTime = chunkAnalysisList.get(i).getStartTime();
+				break;
+			}
+			
+			minValue = Math.min(minValue , chunkAnalysisList.get(i).getSplDb());
+			
+			/**
+			if (Math.max(chunkAnalysisList.get(i - 1).getPower(), chunkAnalysisList.get(i).getPower()) / Math.min(chunkAnalysisList.get(i - 1).getPower(), chunkAnalysisList.get(i).getPower()) >= 2) {
+				LOGGER.debug("范围内查询到音波信号,correctedStartTime:{}", chunkAnalysisList.get(i).getStartTime());
+				startTime = chunkAnalysisList.get(i).getStartTime();
+				break;
+			}
+			*/
+		}
+		
 		//判断是否与上一个音是同一个音符
 		if(musicXmlNote.getMusicalNotesIndex() > 0){
 			MusicXmlNote preMusicXmlNote = getCurrentMusicNote(null, musicXmlNote.getMusicalNotesIndex() - 1);
 			if((int)preMusicXmlNote.getFrequency() == (int)musicXmlNote.getFrequency()){
 				Optional<ChunkAnalysis> optional = chunkAnalysisList.stream().filter(t -> t.getFrequency() <= MIN_FREQUECY).findFirst();
 				if(optional.isPresent()){
-					LOGGER.debug("与上一个音同音,有断开,correctedStartTime:{}", optional.get().getStartTime());
-					return optional.get().getEndTime();
-				}else{
-					LOGGER.debug("与上一个音同音,未断开,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
-					return musicXmlNote.getTimeStamp() + dynamicOffset;
+					LOGGER.debug("与上一个音同音,有断开,correctedStartTime:{}", optional.get().getEndTime());
+					return Math.max(optional.get().getEndTime(), startTime);
 				}
 			}
 		}
@@ -1021,15 +1034,17 @@ public class UserChannelContext {
 		for (ChunkAnalysis ca : chunkAnalysisList) {
 			noteFrequencyRange = new NoteFrequencyRange(standardFrequecy, ca.getFrequency());
 			if (standardNote.equals(noteFrequencyRange)) {
-				LOGGER.debug("范围内查询到信号,correctedStartTime:{}", ca.getStartTime());
-				return ca.getStartTime();
+				LOGGER.debug("范围内查询到音高信号,correctedStartTime:{}", ca.getStartTime());
+				return Math.max(ca.getStartTime(), startTime);
 			}
 		}
 		
-		LOGGER.debug("范围内未查询到信号,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
+		if(startTime  == 0) {
+			LOGGER.debug("范围内未查询到信号,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
+		}
 
 		//return chunkAnalysisList.get(chunkAnalysisList.size() - 1).getEndTime();
-		return musicXmlNote.getTimeStamp() + dynamicOffset;
+		return Math.max(musicXmlNote.getTimeStamp() + dynamicOffset, startTime);
 	}
 
 	private void reduceNoise(List<ChunkAnalysis> chunkAnalysisList, EvaluationCriteriaEnum criteria) {

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

@@ -73,7 +73,7 @@ public class AudioCompareHandler implements MessageHandler {
 	/**
 	 * @describe 采样大小
 	 */
-	private int bufferSize = 1024 * 1;
+	private int bufferSize = 1024 * 2;
 
 	private boolean signed = true;
 
@@ -141,7 +141,7 @@ public class AudioCompareHandler implements MessageHandler {
 				sysMusicCompareRecord.setDeviceType(DeviceTypeEnum.valueOf(musicXmlBasicInfo.getPlatform()));
 				sysMusicCompareRecord.setSpeed(musicXmlBasicInfo.getSpeed());
 				sysMusicCompareRecord.setPartIndex(musicXmlBasicInfo.getPartIndex());
-				
+				sysMusicCompareRecord.setSubjectId(musicXmlBasicInfo.getSubjectId());
 				//SysUser sysUser = sysUserFeignService.queryUserById(sysMusicCompareRecord.getUserId());
 				sysMusicCompareRecord.setTenantId(musicXmlBasicInfo.getTenantId());
 				
@@ -238,8 +238,8 @@ public class AudioCompareHandler implements MessageHandler {
 
 			Integer offsetTime = dataObj.getInteger("offsetTime");
 			Integer micDelay = dataObj.getInteger("micDelay");
-			channelContext.setMicDelayMS(micDelay + offsetTime);
-			channelContext.setOffsetMS(0);
+			channelContext.setMicDelayMS(0);
+			channelContext.setOffsetMS(micDelay + offsetTime);
 			channelContext.setHandlerSwitch(true);
 
 			break;

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

@@ -31,7 +31,7 @@ public interface SysNewsInformationDao extends BaseDAO<Long, SysNewsInformation>
 	
 	SysNewsInformationDto queryById(Long id);
 
-	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType, @Param("memo") String memo, @Param("organIds") String organIds);
+	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType, @Param("memo") String memo, @Param("organIds") String organIds, @Param("excludeFunctionIds") String excludeFunctionIds);
 
     Boolean countStudentAttendanceError(@Param("startTime") String startTime, @Param("userId") Integer userId);
 

+ 18 - 7
cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsTypeServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.cms.service.impl;
 
+import com.ym.mec.cms.dal.dao.SysConfigDao;
 import com.ym.mec.cms.dal.dao.SysNewsInformationDao;
 import com.ym.mec.cms.dal.dao.SysNewsTypeDao;
 import com.ym.mec.cms.dal.entity.SysNewsInformation;
@@ -17,6 +18,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -24,12 +26,14 @@ import java.util.stream.Collectors;
 
 @Service
 public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType> implements SysNewsTypeService {
-    @Autowired
+    @Resource
     private SysNewsTypeDao sysNewsTypeDao;
-    @Autowired
+    @Resource
     private SysNewsInformationDao informationDao;
-    @Autowired
+    @Resource
     private WebFeignService webFeignService;
+    @Resource
+    private SysConfigDao sysConfigDao;
 
     @Override
     public BaseDAO<Integer, SysNewsType> getDAO() {
@@ -61,12 +65,19 @@ public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType
 
     public List<SysNewsType> listWithTree(Integer id, String memo,Integer userId,String organIds) {
         SysNewsType newsType = sysNewsTypeDao.get(id);
+        //获取需要排除的用户编号
+        String excludeUserIds = sysConfigDao.findConfigValue("exclude_user_ids");
+        String excludeFunctionIds = null;
+        if(StringUtils.isNotEmpty(excludeUserIds) && excludeUserIds.contains(userId.toString())){
+            //获取需要排除的功能点编号
+            excludeFunctionIds = sysConfigDao.findConfigValue("exclude_function_ids");
+        }
         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,organIds);
+        for (SysNewsType e : all) {
+            List<SysNewsInformation> list = informationDao.queryBySubType(e.getId(), memo,organIds,excludeFunctionIds);
             if (CollectionUtils.isEmpty(list)) {
-            	list = informationDao.queryBySubType(e.getId(), null,organIds);
+            	list = informationDao.queryBySubType(e.getId(), null,organIds,excludeFunctionIds);
             }
             Iterator<SysNewsInformation> iterator = list.iterator();
 			SysNewsInformation sni = null;
@@ -86,7 +97,7 @@ public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType
                 }
     		}
             e.setInformationList(list);
-        });
+        }
         List<SysNewsType> treeMenus = all.stream()
                 .filter((e) -> e.getParentId().equals(newsType.getParentId()))
                 .map((menu) -> menu.setChildren(getChildren(menu, all)))

+ 3 - 0
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -313,6 +313,9 @@
 		<if test="memo != null and memo !=''">
 			AND memo_ = #{memo}
 		</if>
+		<if test="excludeFunctionIds != null and excludeFunctionIds !=''">
+			AND NOT FIND_IN_SET(id_,#{excludeFunctionIds})
+		</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>

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

@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 /**
  * @Author Joburgess
  * @Date 2021/8/11 0011
@@ -38,7 +40,7 @@ public class CloudStudyController extends BaseController {
 
     @ApiOperation("学员训练数据统计")
     @GetMapping("studentTrainData")
-    public HttpResponseResult studentTrainData(SysMusicCompareRecordQueryInfo queryInfo){
+    public HttpResponseResult<Map<String, Object>> studentTrainData(SysMusicCompareRecordQueryInfo queryInfo){
         queryInfo.setUserId(sysUserService.getUserId());
         return succeed(sysMusicCompareRecordService.studentTrainData(queryInfo));
     }

+ 2 - 8
mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java

@@ -16,13 +16,7 @@ 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.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 org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -33,7 +27,7 @@ import java.util.List;
 @RestController
 public class LessonCoursewareController extends BaseController {
 
-	@Autowired
+	@Resource
 	private CoursewareFeignService coursewareFeignService;
 	@Resource
 	private LessonCoursewareService lessonCoursewareService;

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

+ 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 = "年月"),

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

@@ -1,5 +1,6 @@
 package com.ym.mec.student.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
 import com.ym.mec.biz.service.SysMusicCompareRecordService;
 import com.ym.mec.biz.service.SysUserService;
@@ -58,7 +59,7 @@ public class SysMusicCompareRecordController extends BaseController {
 
     @ApiOperation(value = "用户最后一次评测数据")
     @GetMapping("getLastEvaluationMusicalNotesPlayStats")
-    public HttpResponseResult getLastEvaluationMusicalNotesPlayStats(Long recordId){
+    public HttpResponseResult<JSONObject> getLastEvaluationMusicalNotesPlayStats(Long recordId){
         return succeed(sysMusicCompareRecordService.getLastEvaluationMusicalNotesPlayStats(sysUserService.getUserId(), recordId));
     }
 

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

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

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

@@ -4,9 +4,7 @@ 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.*;
@@ -15,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;
@@ -26,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;
 
@@ -83,7 +83,7 @@ public class TeacherController extends BaseController {
 
     @ApiOperation(value = "根据教师编号查询教师基本信息")
     @GetMapping("/queryUserInfo")
-    public Object queryUserInfo() {
+    public HttpResponseResult<Teacher> queryUserInfo() {
 		Teacher teacher = Optional.ofNullable(teacherService.get(sysUserService.getUserId())).
                 orElseThrow(()->new BizException("老师信息不存在"));
 		//专业技能
@@ -110,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));
     }
 
@@ -190,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();
 	}

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

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

+ 6 - 0
mec-application/src/main/java/com/ym/mec/web/controller/AppVersionInfoController.java

@@ -47,6 +47,9 @@ public class AppVersionInfoController extends BaseController {
 			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);
 			}
 			//如果应用版本跨多个版本时若其中任何一个版本有强制更新,返回字段标记为强制更新
@@ -57,6 +60,9 @@ public class AppVersionInfoController extends BaseController {
 					appVersionInfo.setIsForceUpdate(true);
 				}
 			}
+			/*if (StringUtils.isEmpty(localVersion)) {
+				appVersionInfo.setIsForceUpdate(true);
+			}*/
 			return succeed(appVersionInfo);
 		}
 		return failed();

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

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

@@ -2827,10 +2827,10 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员姓名", "学员编号", "专业", "老师姓名", "老师编号",
-                    "课程组编号","课程组名称", "课程编号", "课程名称", "课程组类型", "课程类型", "上课时间","签到时间", "签退时间", "考勤状态","来源"}, 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());
+    }
 }

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

@@ -60,11 +60,23 @@ public class ImportController extends BaseController {
     private StudentVisitService studentVisitService;
 
 
-    @ApiOperation(value = "导入商品")
+/*    @ApiOperation(value = "导入商品")
     @PostMapping(value = "goods")
     @PreAuthorize("@pcs.hasPermissions('import/goods')")
     public HttpResponseResult<List<Goods>> importGoods(@RequestParam("file") MultipartFile file) throws Exception {
         return succeed(goodsService.importGoods(file, sysUserService.getUserId()));
+    }*/
+
+    @ApiOperation(value = "导入商品")
+    @PostMapping(value = "goodsV2")
+//    @PreAuthorize("@pcs.hasPermissions('import/goodsV2')")
+    public HttpResponseResult<String> importGoodsV2(@RequestParam("file") MultipartFile file) throws Exception {
+        String errFile = goodsService.importGoodsV2(file, sysUserService.getUserId());
+        if (StringUtils.isEmpty(errFile)) {
+            return succeed();
+        } else {
+            return failed(errFile);
+        }
     }
 
     @ApiOperation(value = "导入财务支出")

+ 12 - 0
mec-application/src/main/java/com/ym/mec/web/controller/MusicGroupCalenderRefundPeriodController.java

@@ -1,6 +1,8 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.dto.CooperationCalenderRefundDto;
+import com.ym.mec.biz.dal.dto.CooperationCalenderRefundUpdateDto;
+import com.ym.mec.biz.dal.entity.MusicGroupCalenderRefundPeriod;
 import com.ym.mec.biz.dal.page.CooperationRefundQueryInfo;
 import com.ym.mec.biz.service.MusicGroupCalenderRefundPeriodService;
 import com.ym.mec.biz.service.OrganizationService;
@@ -18,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.HashMap;
+import java.util.List;
 
 @RequestMapping("${app-config.url.web:}/musicGroupCalenderRefundPeriod")
 @Api(tags = "学校缴费项目缴费周期")
@@ -49,4 +52,13 @@ public class MusicGroupCalenderRefundPeriodController extends BaseController {
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(musicGroupCalenderRefundPeriodService.queryCoopCalender(queryInfo));
     }
+
+    @ApiOperation(value = "批量修改")
+    @PostMapping("/batchUpdate")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupCalenderRefundPeriod/batchUpdate')")
+    @AuditLogAnnotation(operateName = "批量修改")
+    public HttpResponseResult batchUpdate(@RequestBody List<CooperationCalenderRefundUpdateDto> refundPeriods) {
+        musicGroupCalenderRefundPeriodService.batchUpdate(refundPeriods);
+        return succeed();
+    }
 }

+ 3 - 0
mec-application/src/main/java/com/ym/mec/web/controller/ReplacementInstrumentActivityController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.beust.jcommander.internal.Lists;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.biz.dal.dao.ReplacementInstrumentActivityDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
@@ -89,6 +90,7 @@ public class ReplacementInstrumentActivityController extends BaseController {
         ReplacementInstrumentCooperation byCooperationId = replacementInstrumentCooperationService.get(oldReplacementInstrumentActivity.getReplacementInstrumentCooperationId());
         if (byCooperationId.getOpenPay().equals(YesOrNoEnum.YES) && oldReplacementInstrumentActivity.getInstrumentsId() == null && replacementInstrumentActivity.getInstrumentsId() != null) {
             Goods goods = goodsService.get(replacementInstrumentActivity.getInstrumentsId());
+            goods.setBrand(goodsService.getBrandMap().getOrDefault(goods.getBrand(),goods.getBrand()));
             Map<Integer, String> userMap = new HashMap<>();
             Map<Integer, String> userPhoneMap = new HashMap<>();
             Integer userId = oldReplacementInstrumentActivity.getUserId();
@@ -126,6 +128,7 @@ public class ReplacementInstrumentActivityController extends BaseController {
         }
         if (openFlag == 1) {
             Goods goods = goodsService.get(replacementInstrumentActivity.getInstrumentsId());
+            goods.setBrand(goodsService.getBrandMap().getOrDefault(goods.getBrand(),goods.getBrand()));
             Map<Integer, String> userMap = new HashMap<>();
             Map<Integer, String> userPhoneMap = new HashMap<>();
             Integer userId = replacementInstrumentActivity.getUserId();

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

@@ -1,13 +1,9 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.biz.dal.dao.SellOrderDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.OutOrderInfoDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
-import com.ym.mec.biz.dal.entity.SellOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
@@ -43,10 +39,6 @@ public class StudentPaymentRouteOrderController extends BaseController {
     private OrganizationService organizationService;
     @Autowired
     private StudentPaymentOrderDao studentPaymentOrderDao;
-    @Autowired
-    private SellOrderDao sellOrderDao;
-    @Autowired
-    private StudentPaymentRouteOrderDao studentPaymentRouteOrderDao;
 
     @ApiOperation(value = "财务订单列表")
     @GetMapping("/finance")
@@ -143,18 +135,7 @@ public class StudentPaymentRouteOrderController extends BaseController {
     @GetMapping("/getOrderInfo")
     @PreAuthorize("@pcs.hasPermissions('routeOrder/getOrderInfo')")
     public HttpResponseResult<OutOrderInfoDto> getOrderInfo(Long orderId) {
-        OutOrderInfoDto outOrderInfoDto = new OutOrderInfoDto();
-        StudentPaymentOrder order = studentPaymentOrderDao.get(orderId);
-        outOrderInfoDto.setStudentPaymentOrder(order);
-        StudentPaymentRouteOrder routeOrder = studentPaymentRouteOrderDao.getByOrderNo(order.getOrderNo());
-        outOrderInfoDto.setCalenderId(routeOrder.getCalenderId());
-        List<SellOrder> sellOrders = sellOrderDao.getOrderSellOrder(orderId);
-        BigDecimal goodsAmount = sellOrders.stream().map(SellOrder::getActualAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-        BigDecimal serviceAmount = outOrderInfoDto.getStudentPaymentOrder().getActualAmount().subtract(goodsAmount);
-        outOrderInfoDto.setServiceAmount(serviceAmount);
-        outOrderInfoDto.setGoodsAmount(goodsAmount);
-        outOrderInfoDto.setSellOrders(sellOrders);
-        return succeed(outOrderInfoDto);
+        return succeed(studentPaymentRouteOrderService.getRouteOrder(orderId));
     }
 
     @ApiOperation(value = "删除订单")

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

@@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -88,7 +89,7 @@ public class StudentRepairController extends BaseController {
             }
             List<RepairGoodsDto> repairGoodsDtos = JSONObject.parseArray(row.getGoodsJson(), RepairGoodsDto.class);
             BigDecimal repairGoodsAmount = repairGoodsDtos.stream().map(RepairGoodsDto::getGroupPurchasePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-            BigDecimal goodsRouteAmount = (row.getAmount().add(repairGoodsAmount).subtract(row.getExemptionAmount())).multiply(repairGoodsAmount).divide(row.getAmount().add(repairGoodsAmount), 2, BigDecimal.ROUND_DOWN);
+            BigDecimal goodsRouteAmount = (row.getAmount().add(repairGoodsAmount).subtract(row.getExemptionAmount())).multiply(repairGoodsAmount).divide(row.getAmount().add(repairGoodsAmount), 2, RoundingMode.DOWN);
             BigDecimal repairRouteAmount = row.getAmount().add(repairGoodsAmount).subtract(row.getExemptionAmount()).subtract(goodsRouteAmount);
             String goodiesStr = repairGoodsDtos.stream().map(RepairGoodsDto::getName).collect(Collectors.joining(","));
             row.setGoodsJson(goodiesStr);

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

@@ -140,9 +140,10 @@ public class TaskController extends BaseController {
     private DegreeService degreeService;
 	@Autowired
 	private ImPluginContext imPluginContext;
-
     @Autowired
     private UserMusicService userMusicService;
+    @Autowired
+    private MusicGroupPaymentCalenderRepairService musicGroupPaymentCalenderRepairService;
 
 	@GetMapping(value = "/initSysMusicCompareDayData")
 	public void initSysMusicCompareDayData(){
@@ -234,9 +235,11 @@ public class TaskController extends BaseController {
 	}
 
 	@GetMapping(value = "/pushWaitSendMessageTask")
-	// 每天9点推送前一天22点之后的推送消息
 	public void pushWaitSendMessageTask(){
+		// 每天9点推送前一天22点之后的推送消息
 		sysMessageService.pushWaitSendMessageTask();
+		// 学校缴费回款提醒
+		musicGroupPaymentCalenderRepairService.pushWaitSendMessageTask();
 	}
 
 	@GetMapping(value = "/repertoryWarn")

+ 69 - 0
mec-application/src/main/java/com/ym/mec/web/controller/education/EduCloudStudyController.java

@@ -0,0 +1,69 @@
+package com.ym.mec.web.controller.education;
+
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dto.CountStudentTrainDataDto;
+import com.ym.mec.biz.dal.dto.MusicCompareRankingDto;
+import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
+import com.ym.mec.biz.dal.page.SysMusicCompareRecordQueryInfo;
+import com.ym.mec.biz.service.OrganizationService;
+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.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static com.ym.mec.biz.dal.enums.FeatureType.CLOUD_STUDY_EVALUATION;
+
+/**
+ * @author zx
+ */
+@Api("云教练")
+@RestController
+@RequestMapping("${app-config.url.web:}/eduCloudStudy")
+public class EduCloudStudyController extends BaseController {
+
+    @Resource
+    private SysMusicCompareRecordService sysMusicCompareRecordService;
+    @Resource
+    private StudentDao studentDao;
+    @Resource
+    private OrganizationService organizationService;
+
+    @ApiOperation("查询乐团学员训练数据")
+    @GetMapping("queryMusicGroupStudentTrainData")
+    public HttpResponseResult<PageInfo<MusicCompareRankingDto>> queryMusicGroupStudentTrainData(SysMusicCompareRecordQueryInfo queryInfo){
+        return succeed(sysMusicCompareRecordService.queryMusicGroupStudentTrainData(queryInfo));
+    }
+
+    @ApiOperation("学员训练数据")
+    @GetMapping("queryStudentTrainData")
+    public HttpResponseResult<PageInfo<SysMusicCompareRecord>> queryStudentTrainData(SysMusicCompareRecordQueryInfo queryInfo){
+        return succeed(sysMusicCompareRecordService.queryStudentTrainData(queryInfo));
+    }
+
+    @ApiOperation("学员训练统计")
+    @GetMapping("countStudentTrain")
+    public HttpResponseResult<PageInfo<CountStudentTrainDataDto>> countStudentTrain(SysMusicCompareRecordQueryInfo queryInfo){
+        //获取分部下学员列表
+        List<Integer> userIds = studentDao.queryByOrganIds(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
+        queryInfo.setStudentIdList(userIds);
+        return succeed(sysMusicCompareRecordService.countStudentTrain(queryInfo));
+    }
+
+    @ApiOperation("学员评测列表")
+    @GetMapping("queryMusicCompareRecord")
+    public HttpResponseResult<PageInfo<SysMusicCompareRecord>> queryMusicCompareRecord(SysMusicCompareRecordQueryInfo queryInfo){
+        if(queryInfo.getFeatureType() == null){
+            queryInfo.setFeatureType(CLOUD_STUDY_EVALUATION);
+        }
+        return succeed(sysMusicCompareRecordService.queryPage(queryInfo));
+    }
+
+}

+ 59 - 0
mec-application/src/main/java/com/ym/mec/web/controller/education/EduCooperationOrganController.java

@@ -0,0 +1,59 @@
+package com.ym.mec.web.controller.education;
+
+import com.ym.mec.biz.dal.dao.ClassGroupDao;
+import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.page.CooperationOrganQueryInfo;
+import com.ym.mec.biz.service.CooperationOrganService;
+import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RequestMapping("${app-config.url.web:}/eduCooperationOrgan")
+@Api(tags = "合作单位(教学点)服务")
+@RestController
+public class EduCooperationOrganController extends BaseController {
+
+    @Resource
+    private CooperationOrganService cooperationOrganService;
+    @Resource
+    private OrganizationService organizationService;
+    @Resource
+    private ClassGroupDao classGroupDao;
+
+    @ApiOperation(value = "分页查询合作单位(教学点)列表")
+    @GetMapping("/queryPage")
+    public HttpResponseResult<PageInfo<CooperationOrgan>> queryPage(CooperationOrganQueryInfo queryInfo) {
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
+        return succeed(cooperationOrganService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "根据分部获取合作单位(教学点)列表")
+    @GetMapping("/queryByOrganId")
+    public HttpResponseResult<List<CooperationOrgan>> queryByOrganId(String organId, Boolean enable) {
+        return succeed(cooperationOrganService.queryByOrganId(organizationService.getEmployeeOrgan(organId),enable));
+    }
+
+    @ApiOperation(value = "合作单位的乐团")
+    @GetMapping("/musicGroupPage")
+    public HttpResponseResult<List<MusicGroup>> musicGroupPage(String organId,String coopId) {
+        return succeed(cooperationOrganService.musicGroupPage(organizationService.getEmployeeOrgan(organId),coopId));
+    }
+
+    @ApiOperation(value = "获取乐团班级列表")
+    @GetMapping("/musicGroupClassPage")
+    public HttpResponseResult<List<ClassGroup>> musicGroupClassPage(String musicGroupId) {
+        return succeed(classGroupDao.findClassGroups(musicGroupId));
+    }
+}

+ 34 - 10
mec-application/src/main/java/com/ym/mec/web/controller/education/EduRepairController.java

@@ -1,6 +1,9 @@
 package com.ym.mec.web.controller.education;
 
 
+import com.alibaba.fastjson.JSON;
+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.EmployeeDao;
 import com.ym.mec.biz.dal.dao.StudentInstrumentDao;
@@ -12,21 +15,26 @@ import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.dto.BrandDto;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.mall.MallFeignService;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang.math.NumberUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 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:}/eduRepair")
 @Api(tags = "教务维修服务")
@@ -53,17 +61,20 @@ public class EduRepairController extends BaseController {
     private StudentInstrumentService studentInstrumentService;
     @Autowired
     private StudentInstrumentDao studentInstrumentDao;
+    @Resource
+    private MallFeignService mallFeignService;
 
     @ApiOperation("获取学生列表")
     @GetMapping(value = "/getStudents")
     public HttpResponseResult<PageInfo<BasicUserDto>> getStudents(RepairStudentQueryInfo queryInfo) {
-        Integer userId = sysUserService.getUserId();
-        Employee employee = employeeDao.get(userId);
+        SysUser user = sysUserService.getUser();
+        Employee employee = employeeDao.get(user.getId());
         if (Objects.isNull(employee)) {
             return failed(HttpStatus.NOT_ACCEPTABLE, "员工信息不存在");
         }
-        queryInfo.setEmployeeId(userId);
+        queryInfo.setEmployeeId(user.getId());
         queryInfo.setOrganIdList(employee.getOrganIdList());
+        queryInfo.setTenantId(user.getTenantId());
         return succeed(studentRepairService.getStudents(queryInfo));
     }
 
@@ -99,12 +110,6 @@ public class EduRepairController extends BaseController {
         SysUser sysUser = sysUserService.getUser();
         repairInfo.setEmployeeId(sysUser.getId());
         repairInfo.setEmployeeName(sysUser.getRealName());
-//        if(repairInfo.getSendType().equals(1)){
-//            Employee employee = employeeDao.get(sysUser.getId());
-//            if(StringUtils.isBlank(employee.getContactAddress())){
-//                return failed("联系地址为空,请联系相关人员在\"员工管理\"完善");
-//            }
-//        }
         return succeed(studentRepairService.addRepair(repairInfo));
     }
 
@@ -113,7 +118,26 @@ public class EduRepairController extends BaseController {
     public HttpResponseResult getStudentRepairList(RepairStudentQueryInfo queryInfo) {
         queryInfo.setEmployeeId(sysUserService.getUserId());
         queryInfo.setPayStatus(2);
-        return succeed(studentRepairService.queryPage(queryInfo));
+        PageInfo<StudentRepair> repairPageInfo = studentRepairService.queryPage(queryInfo);
+        List<StudentRepair> rows = repairPageInfo.getRows();
+        if (!rows.isEmpty()) {
+            Map<Long, String> brandIdNameMap = mallFeignService.getList().stream().collect(Collectors.toMap(BrandDto::getId, BrandDto::getName));
+            rows.forEach(row -> {
+                String goodsJson = row.getGoodsJson();
+                if (StringUtils.isNotEmpty(goodsJson)) {
+                    JSONArray goods = JSON.parseArray(goodsJson);
+                    for (Object good : goods) {
+                        JSONObject goodObject = (JSONObject) good;
+                        String brand = goodObject.getString("brand");
+                        if (Objects.nonNull(brand) && NumberUtils.isNumber(brand)) {
+                            goodObject.put("brandName", brandIdNameMap.getOrDefault(Long.valueOf(brand), ""));
+                        }
+                    }
+                    row.setGoodsJson(JSON.toJSONString(goods));
+                }
+            });
+        }
+        return succeed(repairPageInfo);
     }
 
     @ApiOperation("获取乐器种类")

+ 11 - 0
mec-application/src/main/java/com/ym/mec/web/controller/education/EduSubjectController.java

@@ -1,7 +1,9 @@
 package com.ym.mec.web.controller.education;
 
+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;
@@ -9,6 +11,8 @@ 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;
+
 @RequestMapping("${app-config.url.web:}/eduSubject")
 @Api(tags = "教务端科目服务")
 @RestController
@@ -28,4 +32,11 @@ public class EduSubjectController extends BaseController {
     public Object get(String subjectIdList){
         return succeed(subjectService.findBySubjectByIdList(subjectIdList));
     }
+
+
+    @ApiOperation(value = "获取指定名称的科目列表")
+    @GetMapping("/findByNames")
+    public HttpResponseResult<List<Subject>> findByNames() {
+        return succeed(subjectService.getDao().findByNames());
+    }
 }

+ 67 - 0
mec-application/src/main/java/com/ym/mec/web/controller/school/SchoolCloudStudyController.java

@@ -0,0 +1,67 @@
+package com.ym.mec.web.controller.school;
+
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dto.CountStudentTrainDataDto;
+import com.ym.mec.biz.dal.dto.MusicCompareRankingDto;
+import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
+import com.ym.mec.biz.dal.page.SysMusicCompareRecordQueryInfo;
+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.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+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;
+
+/**
+ * @author zx
+ */
+@Api("云教练")
+@RestController
+@RequestMapping("${app-config.url.web:}/schoolCloudStudy")
+public class SchoolCloudStudyController extends BaseController {
+
+    @Resource
+    private SysMusicCompareRecordService sysMusicCompareRecordService;
+    @Resource
+    private StudentDao studentDao;
+
+    @ApiOperation("查询乐团学员训练数据")
+    @GetMapping("queryMusicGroupStudentTrainData")
+    public HttpResponseResult<PageInfo<MusicCompareRankingDto>> queryMusicGroupStudentTrainData(SysMusicCompareRecordQueryInfo queryInfo){
+        return succeed(sysMusicCompareRecordService.queryMusicGroupStudentTrainData(queryInfo));
+    }
+
+    @ApiOperation("学员训练数据")
+    @GetMapping("queryStudentTrainData")
+    public HttpResponseResult<PageInfo<SysMusicCompareRecord>> queryStudentTrainData(SysMusicCompareRecordQueryInfo queryInfo){
+        return succeed(sysMusicCompareRecordService.queryStudentTrainData(queryInfo));
+    }
+
+    @ApiOperation("学员训练统计")
+    @GetMapping("countStudentTrain")
+    public HttpResponseResult<PageInfo<CountStudentTrainDataDto>> countStudentTrain(SysMusicCompareRecordQueryInfo queryInfo,@RequestHeader Integer coopId){
+        //获取合作单位下学员列表
+        List<Integer> userIds = studentDao.queryByCoopIds(coopId);
+        queryInfo.setStudentIdList(userIds);
+        return succeed(sysMusicCompareRecordService.countStudentTrain(queryInfo));
+    }
+
+    @ApiOperation("学员评测列表")
+    @GetMapping("queryMusicCompareRecord")
+    public HttpResponseResult<PageInfo<SysMusicCompareRecord>> queryMusicCompareRecord(SysMusicCompareRecordQueryInfo queryInfo){
+        if(queryInfo.getFeatureType() == null){
+            queryInfo.setFeatureType(CLOUD_STUDY_EVALUATION);
+        }
+        return succeed(sysMusicCompareRecordService.queryPage(queryInfo));
+    }
+
+}

+ 43 - 0
mec-application/src/main/java/com/ym/mec/web/controller/school/SchoolCooperationOrganController.java

@@ -0,0 +1,43 @@
+package com.ym.mec.web.controller.school;
+
+import com.ym.mec.biz.dal.dao.ClassGroupDao;
+import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.service.CooperationOrganService;
+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.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RequestMapping("${app-config.url.web:}/schoolCooperationOrgan")
+@Api(tags = "合作单位(教学点)服务")
+@RestController
+public class SchoolCooperationOrganController extends BaseController {
+
+    @Resource
+    private CooperationOrganService cooperationOrganService;
+    @Resource
+    private ClassGroupDao classGroupDao;
+
+    @ApiOperation(value = "合作单位的乐团")
+    @GetMapping("/musicGroupPage")
+    public HttpResponseResult<List<MusicGroup>> musicGroupPage(@RequestHeader Integer coopId) {
+        if (coopId == null) {
+            return succeed();
+        }
+        return succeed(cooperationOrganService.musicGroupPage(coopId));
+    }
+
+    @ApiOperation(value = "获取乐团班级列表")
+    @GetMapping("/musicGroupClassPage")
+    public HttpResponseResult<List<ClassGroup>> musicGroupClassPage(String musicGroupId) {
+        return succeed(classGroupDao.findClassGroups(musicGroupId));
+    }
+}

+ 87 - 0
mec-application/src/main/java/com/ym/mec/web/controller/school/SchoolStudentHomeworkController.java

@@ -5,6 +5,8 @@ import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.enums.EHomeWorkStatus;
 import com.ym.mec.biz.dal.enums.ELessonTrainingType;
 import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo;
 import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryDto;
@@ -23,6 +25,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -46,6 +49,10 @@ public class SchoolStudentHomeworkController extends BaseController {
     private StudentAttendanceService studentAttendanceService;
     @Resource
     private MusicGroupDao musicGroupDao;
+    @Resource
+    private SubjectService subjectService;
+    @Resource
+    private CourseHomeworkService courseHomeworkService;
     @ApiOperation(value = "获取教师有服务指标的课程列表")
     @PostMapping("/queryHomework")
     public HttpResponseResult<PageInfo<CourseHomeworkWrapper.CourseHomeworkList>>
@@ -56,6 +63,9 @@ public class SchoolStudentHomeworkController extends BaseController {
             return succeed(new PageInfo<>());
         }
         queryInfo.setMusicGroupIds(musicGroupIds);
+        if(queryInfo.getHomeWorkStatus() == null){
+            queryInfo.setHomeWorkStatus(EHomeWorkStatus.ASSIGNED);
+        }
         return succeed(studentExtracurricularExercisesSituationService.queryTeacherServeHomeworkDetailV2(queryInfo));
     }
 
@@ -85,6 +95,27 @@ public class SchoolStudentHomeworkController extends BaseController {
         return succeed(lessonExaminationService.queryPage(queryInfo));
     }
 
+    @ApiOperation(value = "获取单个进度评测")
+    @GetMapping("getOneLessonExamination")
+    public HttpResponseResult<LessonExaminationResultDto> queryPage(Long lessonExaminationId) {
+        LessonExaminationQueryInfo queryInfo = new LessonExaminationQueryInfo();
+        queryInfo.setLessonExaminationId(lessonExaminationId);
+        LessonExaminationResultDto resultDto = lessonExaminationService.queryPage(queryInfo).getRows().get(0);
+        return succeed(resultDto);
+    }
+
+    @ApiOperation(value = "获取进度评测学员列表")
+    @PostMapping("queryLessonExaminationPage")
+    public HttpResponseResult<PageInfo<StudentLessonExaminationDto>> queryLessonExaminationPage(@RequestBody StudentLessonExaminationQueryInfo queryInfo) {
+        return succeed(studentLessonExaminationService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "获取学员评测详情列表")
+    @PostMapping("queryStudentLessonExaminationDetail")
+    public HttpResponseResult<List<StudentLessonExaminationDetailDto>> queryStudentLessonExaminationDetail(@RequestBody StudentLessonExaminationQueryDto query) {
+        return succeed(studentLessonExaminationDetailService.queryAll(query));
+    }
+
     @ApiOperation(value = "学员请假列表")
     @PostMapping("queryStudentLeave")
     public HttpResponseResult<PageInfo<CourseHomeworkWrapper.StudentLeaveResult>>
@@ -143,5 +174,61 @@ public class SchoolStudentHomeworkController extends BaseController {
             return succeed(studentCourseHomeworkService.findExtracurricularExercisesDetailPublicV2(courseScheduleId, userId, type));
         }
     }
+
+    @ApiOperation(value = "根据课程计划获取需要交作业的学生声部-公用")
+    @PostMapping("/findCourseStudentsSubjectPublic/v2")
+    public HttpResponseResult<List<Subject>> findCourseStudentsSubjectPublicV2(@Validated @RequestBody StudentLessonTrainingDetailWrapper.StudentLessonTrainingQuery query){
+        List<StudentCourseHomework> studentCourseHomeworkByCourseV2;
+        if(ELessonTrainingType.HOMEWORK.equals(query.getType())){
+            if (Objects.isNull(query.getCourseScheduleId())) {
+                throw new BizException("请指定课程");
+            }
+            studentCourseHomeworkByCourseV2 = studentCourseHomeworkService.findStudentCourseHomeworkByCourseV2(
+                    query);
+        }else{
+            studentCourseHomeworkByCourseV2 = studentCourseHomeworkService.findExtraExerciseStudentsV2(query);
+        }
+
+        if (org.springframework.util.CollectionUtils.isEmpty(studentCourseHomeworkByCourseV2)) {
+            return succeed(new ArrayList<>());
+        }
+        // 获取声部
+        List<Integer> collect = studentCourseHomeworkByCourseV2.stream().map(StudentCourseHomework::getSubjectId).collect(
+                Collectors.toList());
+
+        return succeed(subjectService.findBySubjectByIdList(collect));
+
+    }
+
+    @ApiOperation(value = "获取作业详情")
+    @GetMapping(value = "/findCourseHomeworkDetail")
+    public HttpResponseResult<CourseHomeworkWrapper.CourseHomeworkList> findCourseHomeworkDetail(Integer courseScheduleId,ELessonTrainingType type){
+        if (ELessonTrainingType.HOMEWORK.equals(type)) {
+            return succeed(courseHomeworkService.findCourseHomeworkDetail(courseScheduleId));
+        } else {
+            return succeed(courseHomeworkService.findCourseExtraHomeworkDetail(courseScheduleId));
+        }
+    }
+
+    @ApiOperation(value = "根据课程计划获取需要交作业的学生统计")
+    @PostMapping("/findCourseStudentsPublicSubject/v2")
+    public HttpResponseResult<CourseHomeworkWrapper.StudentHomeworkRecordStat> findCourseStudentsPublicSubjectV2(@Validated @RequestBody StudentLessonTrainingDetailWrapper.StudentLessonTrainingQuery query){
+        List<StudentCourseHomework> list;
+        if(ELessonTrainingType.HOMEWORK.equals(query.getType())){
+            if (Objects.isNull(query.getCourseScheduleId())) {
+                throw new BizException("请指定课程");
+            }
+            list =  (studentCourseHomeworkService.findStudentCourseHomeworkByCourseV2(query));
+        }else{
+            list =  (studentCourseHomeworkService.findExtraExerciseStudentsV2(query));
+        }
+
+        CourseHomeworkWrapper.StudentHomeworkRecordStat stat = new CourseHomeworkWrapper.StudentHomeworkRecordStat();
+        stat.setAllNum(list.size());
+        stat.setFinishNum((int) list.stream().filter(StudentCourseHomework::getFinishFlag).count());
+        stat.setUnFinishNum(stat.getAllNum()-stat.getFinishNum());
+        stat.setStudentCourseHomeworkList(list);
+        return succeed(stat);
+    }
 }
 

+ 21 - 0
mec-application/src/main/resources/columnMapper.ini

@@ -14,6 +14,27 @@
 商品描述 = brief
 商品详情 = desc
 
+[组合商品导入模板]
+组合商品名称 = name
+组合商品货号 = sn
+组合商品市场价 = marketPrice
+组合商品零售价 = discountPrice
+组合商品团购价 = groupPurchasePrice
+组合商品品牌 = brand
+组合商品类型 = type
+组合商品分类 = goodsCategoryName
+组合商品型号 = specification
+移动端可用分部 = educationShowOrganName
+课程收费团可用分部 = courseFeeShowOrganName
+会员收费乐团可售分部 = memberFeeShowOrganName
+免费乐团可售分部 = freeFeeShowOrganName
+乐器置换可售分部 = replacementShowOrganName
+组合商品描述 = brief
+组合商品详情 = desc
+组合商品图片 = image
+子商品名称 = subGoodsName
+SKU = sku
+子商品成本 = goodsPrice
 
 [财务支出导入模板]
 财务流程编号 = financialProcessNo

+ 3 - 0
mec-application/src/main/resources/logback-spring.xml

@@ -117,6 +117,9 @@
             <appender-ref ref="file"/>
             <appender-ref ref="plumelog"/>
         </root>
+        <Logger name="org.redisson" level="INFO" additivity="false">
+            <appender-ref ref="file" level="INFO" />
+        </Logger>
     </springProfile>
     <!--生产环境:输出到文件 -->
     <springProfile name="pre">

+ 104 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysConfig.java

@@ -0,0 +1,104 @@
+package com.ym.mec.auth.api.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(sys_config):
+ */
+public class SysConfig {
+
+	/**  */
+	private Long id;
+	
+	/** 参数名称 */
+	@ApiModelProperty(value = "参数名称", required = true)
+	private String paramName;
+	
+	/** 参数值 */
+	@ApiModelProperty(value = "参数值", required = true)
+	private String paranValue;
+	
+	/** 描述 */
+	@ApiModelProperty(value = "描述", required = true)
+	private String description;
+	
+	/** 创建时间 */
+	private java.util.Date createOn;
+	
+	/** 修改时间 */
+	private java.util.Date modifyOn;
+	
+	@ApiModelProperty(value = "消息组", required = true)
+	private String group;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setParamName(String paramName){
+		this.paramName = paramName;
+	}
+	
+	public String getParamName(){
+		return this.paramName;
+	}
+			
+	public void setParanValue(String paranValue){
+		this.paranValue = paranValue;
+	}
+	
+	public String getParanValue(){
+		return this.paranValue;
+	}
+
+	public <T> T getParanValue(Class<T> cla){
+		try {
+			return cla.cast(cla.getMethod("valueOf", String.class).invoke(cla.getInterfaces(),this.paranValue));
+		} catch (Exception e) {
+			return (T)this.paranValue.getClass();
+		}
+	}
+			
+	public void setDescription(String description){
+		this.description = description;
+	}
+	
+	public String getDescription(){
+		return this.description;
+	}
+			
+	public void setCreateOn(java.util.Date createOn){
+		this.createOn = createOn;
+	}
+	
+	public java.util.Date getCreateOn(){
+		return this.createOn;
+	}
+			
+	public void setModifyOn(java.util.Date modifyOn){
+		this.modifyOn = modifyOn;
+	}
+	
+	public java.util.Date getModifyOn(){
+		return this.modifyOn;
+	}
+			
+	public String getGroup() {
+		return group;
+	}
+
+	public void setGroup(String group) {
+		this.group = group;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 24 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysConfigDao.java

@@ -0,0 +1,24 @@
+package com.ym.mec.auth.dal.dao;
+
+import com.ym.mec.auth.api.entity.SysConfig;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface SysConfigDao extends BaseDAO<Long, SysConfig> {
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/9
+     * @params [paramName]
+     * @return com.ym.mec.biz.dal.entity.SysConfig
+     * @describe 根据配置名称获取配置信息
+     */
+    SysConfig findByParamName(String paramName);
+
+    /**
+     * 获取value
+     * @param paramName
+     * @return
+     */
+    String findConfigValue(String paramName);
+	
+}

+ 9 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/CbsQrCodeScanServiceImpl.java

@@ -5,9 +5,11 @@ import com.dayaedu.cbs.openfeign.wrapper.qrcode.CbsQrCodeScanWrapper;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.core.service.CustomTokenServices;
+import com.ym.mec.auth.dal.dao.SysConfigDao;
 import com.ym.mec.auth.service.SysUserService;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.oauth2.provider.OAuth2Authentication;
 import org.springframework.stereotype.Service;
@@ -25,6 +27,8 @@ public class CbsQrCodeScanServiceImpl{
     private SysUserService sysUserService;
     @Resource
     private SysUserFeignService sysUserFeignService;
+    @Resource
+    private SysConfigDao sysConfigDao;
 
     public CbsQrCodeScanWrapper.UserInfo userInfo(CbsQrCodeScanWrapper.QrCodeScanUserInfoReq req) {
         CbsQrCodeScanWrapper.UserInfo userInfo = new CbsQrCodeScanWrapper.UserInfo();
@@ -41,6 +45,11 @@ public class CbsQrCodeScanServiceImpl{
         if (sysUser == null) {
             throw new BizException(HttpStatus.UNAUTHORIZED.value(), "用户不存在");
         }
+        //获取需要排除的用户编号
+        String excludeUserIds = sysConfigDao.findConfigValue("exclude_user_ids");
+        if(StringUtils.isNotEmpty(excludeUserIds) && excludeUserIds.contains(sysUser.getId().toString())){
+            throw new BizException("扫码登陆失败: 用户已锁定");
+        }
         //调用登陆接口
         HttpResponseResult<Map<String,Object>> result = sysUserFeignService.smsLogin(phone, "qr_teacher", UUID.randomUUID().toString(), "qr_teacher");
         if (result != null){

+ 34 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/ExceptionLogController.java

@@ -0,0 +1,34 @@
+package com.ym.mec.auth.web.controller;
+
+import com.dayaedu.cbs.common.enums.EAppKey;
+import com.dayaedu.cbs.openfeign.client.SysExceptionLogFeignClientService;
+import com.dayaedu.cbs.openfeign.wrapper.courseware.SysExceptionLogVo;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+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.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+public class ExceptionLogController extends BaseController {
+
+	@Resource
+	private SysExceptionLogFeignClientService sysExceptionLogFeignClientService;
+
+	@PostMapping("sysExceptionLog/save")
+	public HttpResponseResult save(@RequestBody List<SysExceptionLogVo.SysExceptionLog> sysExceptionLogVos) {
+		if(CollectionUtils.isEmpty(sysExceptionLogVos)){
+			return succeed();
+		}
+		sysExceptionLogVos.forEach(sysExceptionLogVo -> {
+			sysExceptionLogVo.setAppKey(EAppKey.GYM);
+		});
+		sysExceptionLogFeignClientService.add(sysExceptionLogVos).feignData();
+		return succeed();
+	}
+
+}

+ 21 - 0
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysConfigMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<mapper namespace="com.ym.mec.auth.dal.dao.SysConfigDao">
+
+	<resultMap type="com.ym.mec.auth.api.entity.SysConfig" id="SysConfig">
+		<result column="id_" property="id" />
+		<result column="param_name_" property="paramName" />
+		<result column="paran_value_" property="paranValue" />
+		<result column="description_" property="description" />
+		<result column="create_on_" property="createOn" />
+		<result column="modify_on_" property="modifyOn" />
+		<result column="group_" property="group" />
+	</resultMap>
+	<select id="findByParamName" resultMap="SysConfig">
+		SELECT * FROM sys_config WHERE param_name_ = #{paramName}
+	</select>
+    <select id="findConfigValue" resultType="java.lang.String">
+		SELECT paran_value_ FROM sys_config WHERE param_name_ = #{paramName}
+	</select>
+</mapper>

+ 3 - 0
mec-auth/mec-auth-server/src/main/resources/logback-spring.xml

@@ -44,6 +44,9 @@
 			<appender-ref ref="plumelog" />
 			<appender-ref ref="file" />
 		</root>
+		<Logger name="org.redisson" level="INFO" additivity="false">
+			<appender-ref ref="file" level="INFO" />
+		</Logger>
 	</springProfile>
 	<!--生产环境:输出到文件 -->
 	<springProfile name="pre">

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -6,6 +6,7 @@ import java.util.Set;
 
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.CourseScheduleStatistics;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.entity.ClassGroup;
@@ -873,4 +874,10 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     void modifyStudentNum(@Param("classGroupId") Integer classGroupId, @Param("num") int num);
 
     boolean checkStudentNum(@Param("classGroupId") Integer classGroupId);
+
+    //获取老师关联的乐团
+    List<MusicGroup> queryTeacherMusicGroup(@Param("teacherId") Integer teacherId);
+
+    //获取老师关联的乐团下的班级
+    List<ClassGroup> queryTeacherMusicClass(@Param("musicGroupId") String musicGroupId, @Param("teacherId") Integer teacherId);
 }

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

@@ -202,4 +202,8 @@ public interface GoodsDao extends BaseDAO<Integer, Goods> {
     BigDecimal getOrganCostPrice(@Param("complementGoodsIdList") String complementGoodsIdList);
 
     List<Goods> exportGoods(Map<String, Object> params);
+
+    void updateStatus(@Param("goodIdList") List<Integer> goodIdList, @Param("status") Boolean status);
+
+    void updateStock(@Param("goodsList") List<Goods> goodsList);
 }

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

@@ -29,4 +29,6 @@ public interface MusicGroupCalenderRefundPeriodDao extends BaseDAO<Integer, Musi
     void deleteByCalenderId(@Param("calenderId") Long calenderId);
 
     void batchUpdate(@Param("refundPeriods") List<MusicGroupCalenderRefundPeriod> refundPeriods);
+
+    List<MusicGroupCalenderRefundPeriod> queryByIds(@Param("periodsIds") List<Integer> periodsIds);
 }

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

@@ -412,6 +412,8 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      */
     List<MusicGroup> findByCooperationId(@Param("cooperationId") Integer cooperationOrganId);
 
+    List<MusicGroup> findByCoopIdAndOrganId(@Param("organIds") String organIds, @Param("coopId") String coopId);
+
     /**
      * 批量修改乐团主管
      *

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderAddressDao.java

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderAddress;
+
+public interface MusicGroupPaymentCalenderAddressDao extends BaseMapper<MusicGroupPaymentCalenderAddress> {
+
+}
+

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderGoodsDao.java

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderGoods;
+
+public interface MusicGroupPaymentCalenderGoodsDao extends BaseMapper<MusicGroupPaymentCalenderGoods> {
+
+}
+

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderRepairDao.java

@@ -1,13 +1,20 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.WaitSendMessageDto;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderRepair;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 public interface MusicGroupPaymentCalenderRepairDao extends BaseDAO<Long, MusicGroupPaymentCalenderRepair> {
 
 
     void deleteByCalenderId(@Param("calenderId") Long calenderId);
 
     MusicGroupPaymentCalenderRepair findByCalenderId(@Param("calenderId") Long calenderId);
+
+    List<WaitSendMessageDto> queryWaitSendMessage();
+
+    void updateSendRemind(@Param("ids") List<Integer> ids);
 }

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

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
 import com.ym.mec.biz.dal.entity.OperatingReport;
 import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.OrderSkuSync;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
@@ -241,4 +242,8 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
     List<Map<Long, String>> getMallProductMap(@Param("productIdList") Set<String> productIdList, @Param("database") String database);
 
     List<String> getMallProductCategory(@Param("database") String database);
+
+    List<SellOrder> queryByOrganNos(@Param("orderNos") List<String> orderNos);
+
+    void deleteByOrderNo(@Param("orderNo") String orderNo);
 }

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

@@ -398,4 +398,15 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     //查询会员学员
     List<Integer> queryMemberStudent(@Param("memberFlag") Boolean memberFlag, @Param("studentIdList") List<Integer> studentIdList);
 
+    //指定学员中有已结束,且没有未开始的学员
+    List<Integer> queryHasEndVipStudent(@Param("studentIdList") List<Integer> studentIdList);
+
+    //指定学员中有未开始的学员
+    List<Integer> queryHasNotStartVipStudent(@Param("studentIdList") List<Integer> studentIdList);
+
+    //获取分部下学员列表
+    List<Integer> queryByOrganIds(@Param("organIds") String organIds);
+
+    //获取合作单位下学员列表
+    List<Integer> queryByCoopIds(@Param("coopId") Integer coopId);
 }

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

@@ -166,7 +166,8 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
 
     List<Long> queryCourseIdByClassDate(@Param("firstDayOfMonth") Date firstDayOfMonth,
                                        @Param("lastDayOfMonth") Date lastDayOfMonth,
-                                       @Param("teacherId") Integer teacherId);
+                                       @Param("teacherId") Integer teacherId,
+                                        @Param("musicGroupIds") List<String> musicGroupIds);
 
     /**
      * 统计服务周期内可布置的作业和训练数量

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

@@ -480,4 +480,6 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
     Integer queryPaymentStudentCount(Map<String, Object> params);
 
     List<Double11StaticWrapper.StudentCount> count2023Double11StudentsByOrgan(@Param("param") Double11StaticWrapper.SaleStaticConfigParam configParam);
+
+    void deleteByOrderNo(@Param("orderNo") String orderNo);
 }

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

@@ -98,4 +98,6 @@ public interface StudentPaymentRouteOrderDao extends BaseDAO<Long, StudentPaymen
     FeeFlagNumDto getCountFeeFlagNum(@Param("orderNo") String orderNo);
 
     List<FeeFlagNumDto> queryCountFeeFlagNum(@Param("orderNos") List<String> orderNos);
+
+    List<StudentPaymentRouteOrder> queryByOrderNos(@Param("outOrderNos") List<String> outOrderNos);
 }

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

@@ -288,12 +288,12 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
     List<Map<String, Integer>> countNormalNum(String musicGroupIds);
 
     /**
-     * 获取乐团在读人数
+     * 获取乐团在读学员列表
      *
      * @param musicGroupId
      * @return
      */
-    List<Integer> queryNormalUserList(String musicGroupId);
+    List<Integer> queryNormalUserList(@Param("musicGroupId") String musicGroupId);
 
     /**
      * 获取学员基本信息
@@ -771,4 +771,10 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
     void updateCourseFee(@Param("id") Long id, @Param("musicalFee") BigDecimal musicalFee);
 
     void batchUpdate(@Param("studentRegistrations") List<StudentRegistration> studentRegistrations);
+
+    //获取乐团在读学员列表
+    List<Integer> findNormalStu(@Param("musicGroupId") String musicGroupId, @Param("classGroupId") Integer classGroupId);
+
+    //获取指定学员中在读的学员
+    List<Integer> queryNormalUserByIds(@Param("studentIdList") List<Integer> studentIdList);
 }

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

@@ -98,4 +98,6 @@ public interface StudentRepairDao extends com.ym.mec.common.dal.BaseDAO<Integer,
      * @return int
      */
     List<Integer> countStuEducation(@Param("studentId") Integer studentId);
+
+    StudentRepair getByOrderNo(@Param("orderNo") String orderNo);
 }

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

@@ -173,4 +173,5 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     List<StudentSubjectDto> getSubjectByStudentId(@Param("studentIds") Set studentIds);
 
+    List<Subject> findByNames();
 }

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

@@ -36,4 +36,6 @@ public interface SubjectGoodsMapperDao extends BaseDAO<Long, SubjectGoodsMapper>
      * @return
      */
     List<SubjectGoodsDto> querySubjectGoods(Map<String, Object> params);
+
+    List<SubjectGoodsMapper> queryByCategoryIds(@Param("categoryIdList") List<Integer> categoryIdList);
 }

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

@@ -27,4 +27,6 @@ public interface SysAreaDao extends BaseDAO<Integer, SysArea> {
     SysArea getParentArea(Integer id);
 
     SysArea queryByCode(String code);
+
+    List<SysArea> queryByIds(@Param("areaIds") List<String> areaIds);
 }

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ComplementGoodsDto.java

@@ -0,0 +1,14 @@
+package com.ym.mec.biz.dal.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ComplementGoodsDto {
+        private Integer skuStockId;
+
+        private Integer goodsId;
+
+        private BigDecimal organCostPrice;
+}

+ 3 - 95
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CooperationCalenderRefundDto.java

@@ -2,9 +2,11 @@ package com.ym.mec.biz.dal.dto;
 
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.math.BigDecimal;
 
+@Data
 public class CooperationCalenderRefundDto {
 
     @ApiModelProperty(value = "缴费项目编号",required = false)
@@ -43,99 +45,5 @@ public class CooperationCalenderRefundDto {
     @ApiModelProperty(value = "合同",required = false)
     private String contractUrl;
 
-    public String getContractUrl() {
-        return contractUrl;
-    }
-
-    public void setContractUrl(String contractUrl) {
-        this.contractUrl = contractUrl;
-    }
-
-    public Long getCalenderId() {
-        return calenderId;
-    }
-
-    public void setCalenderId(Long calenderId) {
-        this.calenderId = calenderId;
-    }
-
-    public String getMusicGroupId() {
-        return musicGroupId;
-    }
-
-    public void setMusicGroupId(String musicGroupId) {
-        this.musicGroupId = musicGroupId;
-    }
-
-    public String getMusicGroupName() {
-        return musicGroupName;
-    }
-
-    public void setMusicGroupName(String musicGroupName) {
-        this.musicGroupName = musicGroupName;
-    }
-
-    public String getBatchNo() {
-        return batchNo;
-    }
-
-    public void setBatchNo(String batchNo) {
-        this.batchNo = batchNo;
-    }
-
-    public String getPaymentType() {
-        return paymentType;
-    }
-
-    public void setPaymentType(String paymentType) {
-        this.paymentType = paymentType;
-    }
-
-    public String getCalenderFeeType() {
-        return calenderFeeType;
-    }
-
-    public void setCalenderFeeType(String calenderFeeType) {
-        this.calenderFeeType = calenderFeeType;
-    }
-
-    public BigDecimal getReceivable() {
-        return receivable;
-    }
-
-    public void setReceivable(BigDecimal receivable) {
-        this.receivable = receivable;
-    }
-
-    public BigDecimal getIncome() {
-        return income;
-    }
-
-    public void setIncome(BigDecimal income) {
-        this.income = income;
-    }
-
-    public BigDecimal getPrepaidFee() {
-        return prepaidFee;
-    }
-
-    public void setPrepaidFee(BigDecimal prepaidFee) {
-        this.prepaidFee = prepaidFee;
-    }
-
-    public String getNextRefundDate() {
-        return nextRefundDate;
-    }
-
-    public void setNextRefundDate(String nextRefundDate) {
-        this.nextRefundDate = nextRefundDate;
-    }
-
-    public String getRefundStatus() {
-        return refundStatus;
-    }
-
-    public void setRefundStatus(String refundStatus) {
-        this.refundStatus = refundStatus;
-    }
+    private String memo;
 }

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CooperationCalenderRefundUpdateDto.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class CooperationCalenderRefundUpdateDto {
+
+    @ApiModelProperty(value = "回款周期编号",required = false)
+    private Integer id;
+
+    @ApiModelProperty(value = "回款金额",required = false)
+    private BigDecimal refundAmount;
+
+    @ApiModelProperty(value = "回款时间",required = false)
+    private String refundDate;
+
+    @ApiModelProperty(value = "责任人",required = false)
+    private Integer responsiblePerson;
+
+    @ApiModelProperty(value = "修改原因",required = false)
+    private String memo;
+}

+ 12 - 80
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseTimeDto.java

@@ -3,18 +3,30 @@ package com.ym.mec.biz.dal.dto;
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
+import java.time.LocalDateTime;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
+@Data
 public class CourseTimeDto {
 
 
     @ApiModelProperty(value = "课程类型", required = true)
     private CourseSchedule.CourseScheduleType courseType;
 
+    @ApiModelProperty(value = "开始排课时间(原来按周排课参数,从外层,提到内层)")
+    private Date courseCreateStartTime;
+
     @ApiModelProperty(value = "排课星期几")
     private Integer dayOfWeek;
+//    当前排课日期
+    private LocalDateTime calendar;
+
+    @ApiModelProperty(value = "间隔天数(默认7)")
+    private Integer intervalDays = 7;
 
     @ApiModelProperty(value = "开始排课日期,如果有值,则单独循环")
     private Date startDate;
@@ -43,22 +55,6 @@ public class CourseTimeDto {
     @ApiModelProperty(value = "课程老师设置", required = true)
     private List<ClassGroupTeacherMapper> classGroupTeacherMapperList;
 
-    public int getExpectCourseMinutes() {
-        return expectCourseMinutes;
-    }
-
-    public void setExpectCourseMinutes(int expectCourseMinutes) {
-        this.expectCourseMinutes = expectCourseMinutes;
-    }
-
-    public List<ClassGroupTeacherMapper> getClassGroupTeacherMapperList() {
-        return classGroupTeacherMapperList;
-    }
-
-    public void setClassGroupTeacherMapperList(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) {
-        this.classGroupTeacherMapperList = classGroupTeacherMapperList;
-    }
-
     public Boolean getHoliday() {
         return isHoliday;
     }
@@ -66,68 +62,4 @@ public class CourseTimeDto {
     public void setHoliday(Boolean holiday) {
         isHoliday = holiday;
     }
-
-    public CourseSchedule.CourseScheduleType getCourseType() {
-        return courseType;
-    }
-
-    public void setCourseType(CourseSchedule.CourseScheduleType courseType) {
-        this.courseType = courseType;
-    }
-
-    public Date getStartDate() {
-        return startDate;
-    }
-
-    public void setStartDate(Date startDate) {
-        this.startDate = startDate;
-    }
-
-    public Date getEndDate() {
-        return endDate;
-    }
-
-    public void setEndDate(Date endDate) {
-        this.endDate = endDate;
-    }
-
-    public Integer getDayOfWeek() {
-        return dayOfWeek;
-    }
-
-    public void setDayOfWeek(Integer dayOfWeek) {
-        this.dayOfWeek = dayOfWeek;
-    }
-
-    public String getStartClassTime() {
-        return startClassTime;
-    }
-
-    public void setStartClassTime(String startClassTime) {
-        this.startClassTime = startClassTime;
-    }
-
-    public String getEndClassTime() {
-        return endClassTime;
-    }
-
-    public void setEndClassTime(String endClassTime) {
-        this.endClassTime = endClassTime;
-    }
-
-    public int getExpectCourseNum() {
-        return expectCourseNum;
-    }
-
-    public void setExpectCourseNum(int expectCourseNum) {
-        this.expectCourseNum = expectCourseNum;
-    }
-
-    public int getCourseNum() {
-        return courseNum;
-    }
-
-    public void setCourseNum(int courseNum) {
-        this.courseNum = courseNum;
-    }
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/GoodsNameDto.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class GoodsNameDto {
+	@ApiModelProperty(value = "商品数量", required = false)
+	private Integer goodsNum = 1;
+
+	@ApiModelProperty(value = "商品编号", required = false)
+	private Integer goodsId;
+
+	@ApiModelProperty(value = "商品名称", required = false)
+	private String goodsName;
+
+}

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

@@ -29,4 +29,5 @@ public class GoodsOrderItemVO {
     private String promotionName; // 促销名称
     private BigDecimal realAmount; // 实际支付金额
     private int returnStatus; // 退货状态
+    private String productType; // 商品类型
 }

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

@@ -5,19 +5,13 @@ import com.ym.mec.biz.dal.entity.ImGroupMember;
 import io.swagger.annotations.ApiModelProperty;
 
 public class ImGroupMemberDto extends ImGroupMember {
-
 	private SysUser user = new SysUser();
-
     private String type;
-
     private String imUserId;
-
     @ApiModelProperty(value = "群编号;")
     private String groupId;
-
     @ApiModelProperty("群成员头象")
     private String avatar;
-
     public String getType() {
         return type;
     }

+ 8 - 192
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentBaseCalender.java

@@ -4,11 +4,13 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
+@Data
 public class MusicGroupPaymentBaseCalender {
 	@ApiModelProperty(value = "是否继续操作", required = true)
 	private Boolean confirmCreate = false;
@@ -40,6 +42,12 @@ public class MusicGroupPaymentBaseCalender {
 	@ApiModelProperty(value = "批次号", required = false)
 	private String batchNo;
 
+	@ApiModelProperty(value = "商品采购相关信息", required = false)
+	private List<MusicGroupPaymentCalenderGoods> calenderGoodsList;
+
+	@ApiModelProperty(value = "收货地址相关信息", required = false)
+	private MusicGroupPaymentCalenderAddress calenderAddress;
+
 	@ApiModelProperty(value = "会员相关缴费信息", required = false)
 	private MusicGroupPaymentCalenderMember calenderMember;
 
@@ -79,196 +87,4 @@ public class MusicGroupPaymentBaseCalender {
 	@ApiModelProperty(value = "缴费项目名称", required = false)
 	private String name;
 
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public String getContractUrl() {
-		return contractUrl;
-	}
-
-	public void setContractUrl(String contractUrl) {
-		this.contractUrl = contractUrl;
-	}
-
-	public BigDecimal getCurrentTotalAmount() {
-		return currentTotalAmount;
-	}
-
-	public void setCurrentTotalAmount(BigDecimal currentTotalAmount) {
-		this.currentTotalAmount = currentTotalAmount;
-	}
-
-	public List<MusicGroupCalenderRefundPeriod> getMusicGroupCalenderRefundPeriods() {
-		return musicGroupCalenderRefundPeriods;
-	}
-
-	public void setMusicGroupCalenderRefundPeriods(List<MusicGroupCalenderRefundPeriod> musicGroupCalenderRefundPeriods) {
-		this.musicGroupCalenderRefundPeriods = musicGroupCalenderRefundPeriods;
-	}
-
-	public String getCalenderFeeJson() {
-		return calenderFeeJson;
-	}
-
-	public void setCalenderFeeJson(String calenderFeeJson) {
-		this.calenderFeeJson = calenderFeeJson;
-	}
-
-	public String getCalenderFeeType() {
-		return calenderFeeType;
-	}
-
-	public void setCalenderFeeType(String calenderFeeType) {
-		this.calenderFeeType = calenderFeeType;
-	}
-
-	public Boolean getConfirmCreate() {
-		return confirmCreate;
-	}
-
-	public void setConfirmCreate(Boolean confirmCreate) {
-		this.confirmCreate = confirmCreate;
-	}
-
-	public Long getCalenderId() {
-		return calenderId;
-	}
-
-	public void setCalenderId(Long calenderId) {
-		this.calenderId = calenderId;
-	}
-
-	public CalenderAddStudent getCalenderAddStudent() {
-		return calenderAddStudent;
-	}
-
-	public void setCalenderAddStudent(CalenderAddStudent calenderAddStudent) {
-		this.calenderAddStudent = calenderAddStudent;
-	}
-
-	public List<MusicGroupPaymentCalenderActivity> getCalenderActivityList() {
-		return calenderActivityList;
-	}
-
-	public void setCalenderActivityList(List<MusicGroupPaymentCalenderActivity> calenderActivityList) {
-		this.calenderActivityList = calenderActivityList;
-	}
-
-	public MusicGroupPaymentCalenderRepair getMusicRepair() {
-		return musicRepair;
-	}
-
-	public void setMusicRepair(MusicGroupPaymentCalenderRepair musicRepair) {
-		this.musicRepair = musicRepair;
-	}
-
-	public MusicGroup getMusicGroup() {
-		return musicGroup;
-	}
-
-	public void setMusicGroup(MusicGroup musicGroup) {
-		this.musicGroup = musicGroup;
-	}
-
-	public Date getStartPaymentDate() {
-		return startPaymentDate;
-	}
-
-	public void setStartPaymentDate(Date startPaymentDate) {
-		this.startPaymentDate = startPaymentDate;
-	}
-
-	public Date getDeadlinePaymentDate() {
-		return deadlinePaymentDate;
-	}
-
-	public void setDeadlinePaymentDate(Date deadlinePaymentDate) {
-		this.deadlinePaymentDate = deadlinePaymentDate;
-	}
-
-	public MusicGroupPaymentCalenderMember getCalenderMember() {
-		return calenderMember;
-	}
-
-	public void setCalenderMember(MusicGroupPaymentCalenderMember calenderMember) {
-		this.calenderMember = calenderMember;
-	}
-
-	public String getMusicGroupId() {
-		return musicGroupId;
-	}
-
-	public void setMusicGroupId(String musicGroupId) {
-		this.musicGroupId = musicGroupId;
-	}
-
-	public Integer getMusicGroupOrganizationCourseSettingId() {
-		return musicGroupOrganizationCourseSettingId;
-	}
-
-	public void setMusicGroupOrganizationCourseSettingId(Integer musicGroupOrganizationCourseSettingId) {
-		this.musicGroupOrganizationCourseSettingId = musicGroupOrganizationCourseSettingId;
-	}
-
-	public PayUserType getPayUserType() {
-		return payUserType;
-	}
-
-	public void setPayUserType(PayUserType payUserType) {
-		this.payUserType = payUserType;
-	}
-
-	public PaymentType getPaymentType() {
-		return paymentType;
-	}
-
-	public void setPaymentType(PaymentType paymentType) {
-		this.paymentType = paymentType;
-	}
-
-	public String getMemo() {
-		return memo;
-	}
-
-	public void setMemo(String memo) {
-		this.memo = memo;
-	}
-
-	public List<MusicGroupPaymentCalenderCourseSettings> getMusicGroupPaymentCalenderCourseSettingsList() {
-		return musicGroupPaymentCalenderCourseSettingsList;
-	}
-
-	public void setMusicGroupPaymentCalenderCourseSettingsList(List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList) {
-		this.musicGroupPaymentCalenderCourseSettingsList = musicGroupPaymentCalenderCourseSettingsList;
-	}
-
-	public String getBatchNo() {
-		return batchNo;
-	}
-
-	public void setBatchNo(String batchNo) {
-		this.batchNo = batchNo;
-	}
-
-	public String getPaymentItemShowState() {
-		return paymentItemShowState;
-	}
-
-	public void setPaymentItemShowState(String paymentItemShowState) {
-		this.paymentItemShowState = paymentItemShowState;
-	}
-
-	public Boolean getIsShowSalePrice() {
-		return isShowSalePrice;
-	}
-
-	public void setIsShowSalePrice(Boolean isShowSalePrice) {
-		this.isShowSalePrice = isShowSalePrice;
-	}
-
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OutOrderInfoDto.java

@@ -20,8 +20,30 @@ public class OutOrderInfoDto {
     @ApiModelProperty(value = "缴费单号",required = true)
     private Long calenderId;
 
+    @ApiModelProperty(value = "合作单位",required = true)
+    private String coopName;
+
+    @ApiModelProperty(value = "商品详情",required = true)
+    private List<GoodsNameDto> goodsSellDtos;
+
     private List<SellOrder> sellOrders;
 
+    public List<GoodsNameDto> getGoodsSellDtos() {
+        return goodsSellDtos;
+    }
+
+    public void setGoodsSellDtos(List<GoodsNameDto> goodsSellDtos) {
+        this.goodsSellDtos = goodsSellDtos;
+    }
+
+    public String getCoopName() {
+        return coopName;
+    }
+
+    public void setCoopName(String coopName) {
+        this.coopName = coopName;
+    }
+
     public List<SellOrder> getSellOrders() {
         return sellOrders;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ReplacementInstrumentActivityStatDto.java

@@ -19,6 +19,8 @@ public class ReplacementInstrumentActivityStatDto extends ReplacementInstrumentA
     /** 品牌 */
     private String brand;
 
+    private String brandName;
+
     /** 型号 */
     private String specification;
 
@@ -158,4 +160,12 @@ public class ReplacementInstrumentActivityStatDto extends ReplacementInstrumentA
     public void setBalance(BigDecimal balance) {
         this.balance = balance;
     }
+
+    public String getBrandName() {
+        return brandName;
+    }
+
+    public void setBrandName(String brandName) {
+        this.brandName = brandName;
+    }
 }

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

@@ -23,7 +23,7 @@ public class VipGroupCourseAdjustInfoDto {
     @ApiModelProperty(value = "需要调整的vip课排课计划的编号")
     private String courseScheduleIds;
 
-    @ApiModelProperty(value = "开始排课时间")
+    @ApiModelProperty(value = "开始排课时间(兼容历史版本)")
     private Date courseCreateStartTime;
 
     @ApiModelProperty(value = "教学形式")

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WaitSendMessageDto.java

@@ -0,0 +1,22 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class WaitSendMessageDto {
+
+    private Integer id;
+
+    @ApiModelProperty(value = "学校名称", required = false)
+    private String schoolName;
+
+    @ApiModelProperty(value = "缴费批次", required = false)
+    private String batchNo;
+
+    @ApiModelProperty(value = "责任人手机号", required = false)
+    private String phone;
+
+    @ApiModelProperty(value = "用户编号", required = false)
+    private Integer userId;
+}

+ 14 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Goods.java

@@ -53,8 +53,8 @@ public class Goods {
 	@ApiModelProperty(value = "库存数量",required = false)
 	private Integer stockCount;
 
-	@ApiModelProperty(value = "税务库存")
-	private Integer taxStockCount;
+//	@ApiModelProperty(value = "税务库存")
+//	private Integer taxStockCount;
 
 	/** 总销量数 */
 	@ApiModelProperty(value = "总销量数",required = false)
@@ -114,6 +114,10 @@ public class Goods {
 	@ApiModelProperty(value = "附件商品列表编号(用逗号分开)",required = false)
 	private String complementGoodsIdList;
 
+	/** 发布时间 */
+//	@ApiModelProperty(value = "附件商品详情",required = false)
+//	private String complementGoodsJson;
+
 	/** 辅件列表 */
 	@ApiModelProperty(value = "辅件列表(子商品)",required = false)
 	private List<Goods> goodsList;
@@ -175,6 +179,12 @@ public class Goods {
 	@ApiModelProperty(value = "库存预警")
 	private YesOrNoEnum stockWarning;
 
+	@ApiModelProperty(value = "是否是组合商品,1:是,0:不是")
+	private Boolean groupGoods;
+
+	@ApiModelProperty(value = "是否删除")
+	private Boolean delFlag;
+
 	private Integer tenantId = TenantContextHolder.getTenantId();
 
 	private String childId;
@@ -185,6 +195,8 @@ public class Goods {
 
 	private String childOrganCostPrice;
 
+	private String brandName;
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 49 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/GoodsSub.java

@@ -0,0 +1,49 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+import java.math.BigDecimal;
+
+/**
+ * 组合商品,子商品信息
+ * 2024-02-21 16:24:38
+ */
+@Data
+@ApiModel(" GoodsSub-组合商品,子商品信息")
+@TableName("goods_sub")
+public class GoodsSub implements Serializable {
+
+    @ApiModelProperty("id")
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("商品编号")
+    @TableField(value = "goods_id_")
+    private Integer goodsId;
+
+    @ApiModelProperty("商城商品编号")
+    @TableField(value = "mall_goods_id_")
+    private Integer mallGoodsId;
+
+    @ApiModelProperty("sku编号")
+    @TableField(value = "sku_")
+    private Integer sku;
+
+    @ApiModelProperty("商品状态,1:上架、0:下架")
+    @TableField(value = "goods_status_")
+    private Boolean goodsStatus;
+
+    @ApiModelProperty("成本")
+    @TableField(value = "goods_price_")
+    private BigDecimal goodsPrice;
+
+}

+ 11 - 96
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupCalenderRefundPeriod.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
@@ -9,6 +10,7 @@ import java.math.BigDecimal;
 /**
  * 对应数据库表(music_group_calender_refund_period):
  */
+@Data
 public class MusicGroupCalenderRefundPeriod {
 
 	/**  */
@@ -40,6 +42,15 @@ public class MusicGroupCalenderRefundPeriod {
 
 	@ApiModelProperty(value = "订单编号",required = false)
 	private String orderNos;
+
+	@ApiModelProperty(value = "备注",required = false)
+	private String memo;
+
+	@ApiModelProperty(value = "责任人",required = false)
+	private Integer responsiblePerson;
+
+	@ApiModelProperty(value = "是否发送回款提醒",required = false)
+	private Boolean sendRemind = false;
 	
 	/**  */
 	private java.util.Date createTime;
@@ -47,102 +58,6 @@ public class MusicGroupCalenderRefundPeriod {
 	/**  */
 	private java.util.Date updateTime;
 
-	public String getOrderNos() {
-		return orderNos;
-	}
-
-	public void setOrderNos(String orderNos) {
-		this.orderNos = orderNos;
-	}
-
-	public BigDecimal getIncome() {
-		return income;
-	}
-
-	public void setIncome(BigDecimal income) {
-		this.income = income;
-	}
-
-	public Boolean getRefundFlag() {
-		return refundFlag;
-	}
-
-	public void setRefundFlag(Boolean refundFlag) {
-		this.refundFlag = refundFlag;
-	}
-
-	public void setId(Integer id){
-		this.id = id;
-	}
-	
-	public Integer getId(){
-		return this.id;
-	}
-			
-	public void setOrganId(Integer organId){
-		this.organId = organId;
-	}
-	
-	public Integer getOrganId(){
-		return this.organId;
-	}
-			
-	public void setCooperationOrganId(Integer cooperationOrganId){
-		this.cooperationOrganId = cooperationOrganId;
-	}
-	
-	public Integer getCooperationOrganId(){
-		return this.cooperationOrganId;
-	}
-			
-	public void setCalenderId(Long calenderId){
-		this.calenderId = calenderId;
-	}
-	
-	public Long getCalenderId(){
-		return this.calenderId;
-	}
-			
-	public void setRefundDate(String refundDate){
-		this.refundDate = refundDate;
-	}
-	
-	public String getRefundDate(){
-		return this.refundDate;
-	}
-			
-	public void setRefundAmount(java.math.BigDecimal refundAmount){
-		this.refundAmount = refundAmount;
-	}
-	
-	public java.math.BigDecimal getRefundAmount(){
-		return this.refundAmount;
-	}
-			
-	public void setSubRefundAmount(java.math.BigDecimal subRefundAmount){
-		this.subRefundAmount = subRefundAmount;
-	}
-	
-	public java.math.BigDecimal getSubRefundAmount(){
-		return this.subRefundAmount;
-	}
-			
-	public void setCreateTime(java.util.Date createTime){
-		this.createTime = createTime;
-	}
-	
-	public java.util.Date getCreateTime(){
-		return this.createTime;
-	}
-			
-	public void setUpdateTime(java.util.Date updateTime){
-		this.updateTime = updateTime;
-	}
-	
-	public java.util.Date getUpdateTime(){
-		return this.updateTime;
-	}
-			
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

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

@@ -76,7 +76,7 @@ public class MusicGroupPaymentCalender extends BaseEntity {
 
 	public enum PaymentType implements BaseEnum<String, PaymentType> {
 		ADD_STUDENT("新增学员"), ADD_COURSE("临时加课"), MUSIC_APPLY("乐团报名"),
-		MUSIC_RENEW("乐团续费"),SPAN_GROUP_CLASS_ADJUST("跨团班级调整");
+		MUSIC_RENEW("乐团续费"),SPAN_GROUP_CLASS_ADJUST("跨团班级调整"),GOODS_PURCHASE("商品采购");
 
 		private String desc;
 

+ 73 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderAddress.java

@@ -0,0 +1,73 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@ApiModel(value = "music_group_payment_calender_address")
+@Data
+public class MusicGroupPaymentCalenderAddress implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @TableField("calender_id_")
+    @ApiModelProperty(value = "缴费项目编号")
+    private Long calenderId;
+
+    @TableField("order_no_")
+    @ApiModelProperty("订单编号")
+    private String orderNo;
+
+    @TableField("delivery_flag_")
+    @ApiModelProperty("是否发货")
+    private Boolean deliveryFlag = false;
+
+    @TableField("name_")
+    @ApiModelProperty(value = "收货人")
+    private String name;
+
+    @TableField("phone_")
+    @ApiModelProperty(value = "收货人手机号")
+    private String phone;
+
+    @TableField("province_")
+    @ApiModelProperty(value = "省")
+    private String province;
+
+    @TableField("city_")
+    @ApiModelProperty(value = "市")
+    private String city;
+
+    @TableField("region_")
+    @ApiModelProperty(value = "区")
+    private String region;
+
+    @TableField("post_code_")
+    @ApiModelProperty(value = "邮编")
+    private String postCode;
+
+    @TableField("address_")
+    @ApiModelProperty(value = "详细地址")
+    private String address;
+
+    @TableField("delivery_detail_")
+    @ApiModelProperty(value = "商品发货明细,用于同步订单的发货信息")
+    private String deliveryDetail;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+}
+

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

@@ -40,7 +40,6 @@ public class MusicGroupPaymentCalenderCourseSettings extends BaseEntity {
 	@ApiModelProperty(value = "是否学生可选", required = false)
 	private boolean isStudentOptional = true;
 
-
 	/**  */
 	private java.util.Date createTime;
 	

+ 66 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderGoods.java

@@ -0,0 +1,66 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ym.mec.biz.dal.enums.GoodsType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@ApiModel(value = "music_group_payment_calender_goods")
+@Data
+public class MusicGroupPaymentCalenderGoods implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @TableField("calender_id_")
+    @ApiModelProperty(value = "缴费项目编号")
+    private Long calenderId;
+
+    @TableField("goods_id_")
+    @ApiModelProperty(value = "商品编号")
+    private Integer goodsId;
+
+    @TableField("goods_name_")
+    @ApiModelProperty(value = "商品名称")
+    private String goodsName;
+
+    @TableField("goods_type_")
+    @ApiModelProperty(value = "商品类型", required = false)
+    private String goodsType;
+
+    @TableField("goods_sn_")
+    @ApiModelProperty(value = "商品货号")
+    private String goodsSn;
+
+    @TableField("child_goods_json_")
+    @ApiModelProperty(value = "子商品明细")
+    private String childGoodsJson;
+
+    @TableField("num_")
+    @ApiModelProperty(value = "数量")
+    private Integer num;
+
+    @TableField("single_price_")
+    @ApiModelProperty(value = "单价")
+    private java.math.BigDecimal singlePrice;
+
+    @TableField("total_price_")
+    @ApiModelProperty(value = "总价")
+    private java.math.BigDecimal totalPrice;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+}
+

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

@@ -17,6 +17,8 @@ public class ReplacementInstrument extends BaseEntity {
 	
 	/** 品牌 */
 	private String brand;
+
+	private String brandName;
 	
 	/** 型号 */
 	private String specification;
@@ -129,7 +131,15 @@ public class ReplacementInstrument extends BaseEntity {
 	public java.util.Date getUpdateTime(){
 		return this.updateTime;
 	}
-			
+
+	public String getBrandName() {
+		return brandName;
+	}
+
+	public void setBrandName(String brandName) {
+		this.brandName = brandName;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SellOrder.java

@@ -72,6 +72,9 @@ public class SellOrder{
     @ApiModelProperty(value="商品id")
     private Integer goodsId;
 
+    @ApiModelProperty(value="商品sku_id")
+    private Integer goodsSkuId;
+
     @ApiModelProperty(value="商品名称")
     private String goodsName;
 

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

@@ -79,7 +79,42 @@ public class StudentGoodsSell extends BaseEntity {
 	// 商品来源类型 MALL商城
 	private String goodsType;
 
-	public String getGoodsType() {
+    // contactName ,contactMobile,address
+
+    // 收货人
+    private String contactName;
+
+    // 收货人手机号
+    private String contactMobile;
+
+    // 详细地址
+    private String address;
+
+    public String getContactName() {
+        return contactName;
+    }
+
+    public void setContactName(String contactName) {
+        this.contactName = contactName;
+    }
+
+    public String getContactMobile() {
+        return contactMobile;
+    }
+
+    public void setContactMobile(String contactMobile) {
+        this.contactMobile = contactMobile;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getGoodsType() {
 		return goodsType;
 	}
 

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

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -139,4 +140,7 @@ public class StudentPaymentOrder extends BaseEntity {
 	private Long calenderId;
 
 	private Integer cooperationId;
+
+	// 需要关闭的订单号
+	private List<String> closeOrderNoList;
 }

+ 56 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrderAddress.java

@@ -0,0 +1,56 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+
+/**
+ * 学生订单收货地址
+ * 2024-03-01 12:05:41
+ */
+@Data
+@ApiModel(" StudentPaymentOrderAddress-学生订单收货地址")
+@TableName("student_payment_order_address")
+public class StudentPaymentOrderAddress implements Serializable {
+
+    @ApiModelProperty("id") 
+	    @TableId(value = "id_")
+	    private Long id;
+
+    @ApiModelProperty("订单号") 
+	@TableField(value = "order_no_")
+    private String orderNo;
+
+    @ApiModelProperty("收货人") 
+	@TableField(value = "contact_name_")
+    private String contactName;
+
+    @ApiModelProperty("收货人手机号") 
+	@TableField(value = "contact_mobile_")
+    private String contactMobile;
+
+    @ApiModelProperty("详细地址") 
+	@TableField(value = "address_")
+    private String address;
+
+    @ApiModelProperty("省") 
+	@TableField(value = "province_id_")
+    private Integer provinceId;
+
+    @ApiModelProperty("市") 
+	@TableField(value = "city_id_")
+    private Integer cityId;
+
+    @ApiModelProperty("县/街道") 
+	@TableField(value = "county_id_")
+    private Integer countyId;
+
+}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicCompareRecord.java

@@ -85,6 +85,8 @@ public class SysMusicCompareRecord extends BaseEntity {
 	//文件是否过期
 	private boolean expire;
 
+	private Integer subjectId;
+
 	public SysMusicCompareRecord(FeatureType feature) {
 		this.feature = feature;
 	}

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

@@ -258,6 +258,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     SMS_TENANT_RECHARGE("SMS_TENANT_RECHARGE",   "云教室充值"),
     SMS_TENANT_INSUFFICIENT_BALANCE("SMS_TENANT_INSUFFICIENT_BALANCE",  "余额不足"),
     SMS_TENANT_EXPIRE("SMS_TENANT_EXPIRE",  "云教室欠费"),
+    SMS_WAIT_REMINDER_PAYMENT("SMS_WAIT_REMINDER_PAYMENT",  "待回款提醒"),
 
 
     STUDENT_SMS_CLOUD_PAYMENT("STUDENT_SMS_CLOUD_PAYMENT",  "待缴费订单"),

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

@@ -38,6 +38,7 @@ public enum OrderTypeEnum implements BaseEnum<String, OrderTypeEnum> {
     ACTIVITY("ACTIVITY", "活动购买"),
     MEMBER("MEMBER", "会员购买"),
     LIVE_BUY("LIVE_BUY", "直播购物"),
+    SCHOOL_GOODS_PURCHASE("SCHOOL_GOODS_PURCHASE","学校商品采购"),
     MALL_BUY("MALL_BUY", "商城购物");
 
 

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

@@ -4,6 +4,7 @@ import com.ym.mec.common.enums.BaseEnum;
 
 public enum TemplateTypeEnum implements BaseEnum<String, TemplateTypeEnum> {
     GOODS("GOODS","商品导入模板"),
+    GOODS_GROUP("GOODS_GROUP","组合商品导入模板"),
     ROUTE_ORDER("ROUTE_ORDER","财务管理导入模板"),
     FINANCIAL_EXPENDITURE("FINANCIAL_EXPENDITURE","财务支出导入模板"),
     REDEMPTIONCODE("REDEMPTION_CODE", "兑换码分配模板表"),

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/GoodsSubMapper.java

@@ -0,0 +1,25 @@
+package com.ym.mec.biz.dal.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.dto.ComplementGoodsDto;
+import com.ym.mec.biz.dal.entity.GoodsSub;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 组合商品,子商品信息
+ * 2024-02-21 16:24:38
+ */
+@Repository
+public interface GoodsSubMapper extends BaseMapper<GoodsSub> {
+
+
+    void saveBatch(@Param("goodsSubs") List<GoodsSub> goodsSubs);
+
+    void updateStatus(@Param("goodsSubIdList") List<Integer> goodsSubIdList, @Param("status") Boolean status);
+
+    List<ComplementGoodsDto> queryChildGoods(@Param("goodsId") Integer goodsId);
+}

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/StudentPaymentOrderAddressMapper.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.dal.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderAddress;
+import com.ym.mec.biz.dal.wrapper.StudentPaymentOrderAddressWrapper;
+
+/**
+ * 学生订单收货地址
+ * 2024-03-01 12:05:41
+ */
+@Repository
+public interface StudentPaymentOrderAddressMapper extends BaseMapper<StudentPaymentOrderAddress> {
+
+	/**
+	 * 分页查询
+	 * @param page IPage<StudentPaymentOrderAddressWrapper.StudentPaymentOrderAddress>
+	 * @param param StudentPaymentOrderAddressWrapper.StudentPaymentOrderAddressQuery
+	 * @return List<StudentPaymentOrderAddressWrapper.StudentPaymentOrderAddress>
+	 */
+	List<StudentPaymentOrderAddress> selectPage(@Param("page") IPage<StudentPaymentOrderAddress> page, @Param("param") StudentPaymentOrderAddressWrapper.StudentPaymentOrderAddressQuery param);
+	
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/GoodsQuery.java

@@ -27,6 +27,8 @@ public class GoodsQuery {
 
     private Integer subjectId;
 
+    private Boolean delFlag;
+
     public String getType() {
         return type;
     }
@@ -90,4 +92,12 @@ public class GoodsQuery {
     public void setReplacementShowOrganId(Integer replacementShowOrganId) {
         this.replacementShowOrganId = replacementShowOrganId;
     }
+
+    public Boolean getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Boolean delFlag) {
+        this.delFlag = delFlag;
+    }
 }

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/GoodsQueryInfo.java

@@ -52,6 +52,15 @@ public class GoodsQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "此参数为1则不按分部查询")
     private Integer noOrganSearch;
 
+    @ApiModelProperty(value = "品牌ID")
+    private String brandId;
+
+    @ApiModelProperty(value = "商品名称")
+    private String name;
+
+    @ApiModelProperty(value = "货号")
+    private String sn;
+
     private Integer subjectId;
 
     public Integer getNoOrganSearch() {
@@ -173,4 +182,28 @@ public class GoodsQueryInfo extends QueryInfo {
 	public void setFreeFeeShowOrganId(String freeFeeShowOrganId) {
 		this.freeFeeShowOrganId = freeFeeShowOrganId;
 	}
+
+    public String getBrandId() {
+        return brandId;
+    }
+
+    public void setBrandId(String brandId) {
+        this.brandId = brandId;
+    }
+
+    public String getSn() {
+        return sn;
+    }
+
+    public void setSn(String sn) {
+        this.sn = sn;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentAttendanceQueryInfo.java

@@ -61,4 +61,7 @@ public class StudentAttendanceQueryInfo extends QueryInfo {
     private Boolean visitFlag;
 
     private Boolean orderFlag;
+
+    @ApiModelProperty(value = "是否达标1是0否")
+    private Boolean qualifiedFlag;
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentQueryInfo.java

@@ -19,6 +19,8 @@ public class StudentQueryInfo extends QueryInfo {
 
     private Integer organId;
 
+    private String organIds;
+
     private List<String> organIdList;
 
     private String cloudStudyUseTime;
@@ -29,6 +31,14 @@ public class StudentQueryInfo extends QueryInfo {
     
     private Date cloudTeacherTrainEndDate;
 
+    public String getOrganIds() {
+        return organIds;
+    }
+
+    public void setOrganIds(String organIds) {
+        this.organIds = organIds;
+    }
+
     public String getGroupType() {
         return groupType;
     }

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/SysMusicCompareRecordQueryInfo.java

@@ -7,6 +7,8 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * @Author Joburgess
  * @Date 2021/8/11 0011
@@ -22,12 +24,26 @@ public class SysMusicCompareRecordQueryInfo extends QueryInfo {
 
     private String endTime;
 
+    @ApiModelProperty("乐团")
     private String musicGroupId;
 
+    @ApiModelProperty("班级")
+    private Integer classGroupId;
+
     private int orderType;
 
+    @ApiModelProperty("是否是会员")
     private Boolean memberFlag;
 
+    @ApiModelProperty("是否乐团学员(进行中乐团在读学员)")
+    private Boolean musicFlag = false;
+
+    @ApiModelProperty("是否有已结束的小课(没有未开始)")
+    private Boolean hasEndVipFlag = false;
+
+    @ApiModelProperty("是否有未开始的小课")
+    private Boolean hasNotStartVipFlag = false;
+
     @ApiModelProperty("排序字段:TRAINDAYS(训练天数);TRAINTIME(训练时长);TRAINNUM(训练次数)")
     private String sortField = "TRAINDAYS";
 
@@ -38,4 +54,7 @@ public class SysMusicCompareRecordQueryInfo extends QueryInfo {
     private Boolean visitFlag;
 
     private Integer organId;
+
+    //基础数据
+    private List<Integer> studentIdList;
 }

+ 63 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/GoodsSubWrapper.java

@@ -0,0 +1,63 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.Optional;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * 组合商品,子商品信息
+ * 2024-02-26 15:42:42
+ */
+@ApiModel(value = "GoodsSubWrapper对象", description = "组合商品,子商品信息查询对象")
+public class GoodsSubWrapper {
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" GoodsSubQuery-组合商品,子商品信息")
+    public static class GoodsSubQuery implements QueryInfo {
+
+        @ApiModelProperty("当前页")
+        private Integer page;
+
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+
+        @ApiModelProperty("关键字匹配")
+        private String keyword;
+
+        public String getKeyword() {
+            return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
+        }
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static GoodsSubQuery from(String json) {
+            return JSON.parseObject(json, GoodsSubQuery.class);
+        }
+    }
+
+    @ApiModel(" GoodsSub-组合商品,子商品信息")
+    public static class GoodsSub {
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static GoodsSub from(String json) {
+            return JSON.parseObject(json, GoodsSub.class);
+        }
+    }
+
+}

+ 256 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/GoodsWrapper.java

@@ -0,0 +1,256 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.StockType;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.common.tenant.TenantContextHolder;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class GoodsWrapper {
+
+    @ApiModel("商品")
+    @Data
+    public static class Goods {
+
+        @ApiModelProperty(value = "商品编号")
+        private Integer id;
+
+        @ApiModelProperty(value = "产品分类")
+        private Integer goodsCategoryId;
+
+        @ApiModelProperty(value = "产品分类名称")
+        private String goodsCategoryName;
+
+        @ApiModelProperty(value = "商品货号")
+        private String sn;
+
+        @ApiModelProperty(value = "商品名称")
+        private String name;
+
+        @ApiModelProperty(value = "品牌")
+        private String brand;
+
+        @ApiModelProperty(value = "规格")
+        private String specification;
+
+        @ApiModelProperty(value = "展示图片的地址")
+        private String image;
+
+        @ApiModelProperty(value = "库存数量")
+        private Integer stockCount;
+
+        @ApiModelProperty(value = "税务库存")
+        private Integer taxStockCount;
+
+        @ApiModelProperty(value = "总销量数")
+        private Integer sellCount;
+
+        @ApiModelProperty(value = "市场销售价")
+        private BigDecimal marketPrice;
+
+        @ApiModelProperty(value = "商品零售价")
+        private BigDecimal discountPrice;
+
+        @ApiModelProperty(value = "团购价")
+        private BigDecimal groupPurchasePrice;
+
+        @ApiModelProperty(value = "商品价格1")
+        private BigDecimal costPrice;
+
+        @ApiModelProperty(value = "协议成本价")
+        private BigDecimal agreeCostPrice;
+
+        @ApiModelProperty(value = "分部成本价")
+        private BigDecimal organCostPrice;
+
+        @ApiModelProperty(value = "页面简介")
+        private String brief;
+
+        @ApiModelProperty(value = "商品的详细描述")
+        private String desc;
+
+        @ApiModelProperty(value = "是否是新品(1,是  0,否)")
+        private YesOrNoEnum isNew;
+
+        @ApiModelProperty(value = "是否置顶(1,置顶   0,不置顶)")
+        private YesOrNoEnum isTop;
+
+        @ApiModelProperty(value = "状态(1,上架  0,下架)")
+        private YesOrNoEnum status;
+
+        @ApiModelProperty(value = "备注")
+        private String memo;
+
+        @ApiModelProperty(value = "发布时间")
+        private Date publishTime;
+
+        @ApiModelProperty(value = "附件商品列表编号(用逗号分开)")
+        private String complementGoodsIdList;
+
+        @ApiModelProperty(value = "辅件列表(子商品)")
+        private List<com.ym.mec.biz.dal.entity.Goods> goodsList;
+
+        private String subjectIds;
+
+        private java.util.Date createTime;
+
+        private java.util.Date updateTime;
+
+        @ApiModelProperty(value = "商品类型")
+        private GoodsType type;
+
+        @ApiModelProperty(value = "备查货号,进货渠道")
+        private String supplyChannel;
+
+        @ApiModelProperty(value = "客户端展示分部")
+        private String studentShowOrganId;
+
+        @ApiModelProperty(value = "教务端展示分部")
+        private String educationShowOrganId;
+
+        @ApiModelProperty(value = "课程收费团展示分部")
+        private String courseFeeShowOrganId;
+
+        @ApiModelProperty(value = "会员收费团展示分部")
+        private String memberFeeShowOrganId;
+
+        @ApiModelProperty(value = "免费团展示分部")
+        private String freeFeeShowOrganId;
+
+        @ApiModelProperty(value = "乐器置换展示分部")
+        private String replacementShowOrganId;
+
+        @ApiModelProperty(value = "客户端展示分部")
+        private String studentShowOrganName;
+
+        @ApiModelProperty(value = "教务端展示分部")
+        private String educationShowOrganName;
+
+        @ApiModelProperty(value = "课程收费团展示分部")
+        private String courseFeeShowOrganName;
+
+        @ApiModelProperty(value = "会员收费团展示分部")
+        private String memberFeeShowOrganName;
+
+        @ApiModelProperty(value = "免费团展示分部")
+        private String freeFeeShowOrganName;
+
+        @ApiModelProperty(value = "乐器置换展示分部")
+        private String replacementShowOrganName;
+
+        @ApiModelProperty(value = "库存类型")
+        private StockType stockType;
+
+        @ApiModelProperty(value = "库存预警")
+        private YesOrNoEnum stockWarning;
+
+        @ApiModelProperty(value = "是否是组合商品,1:是,0:不是")
+        private Boolean groupGoods;
+
+        private Integer tenantId = TenantContextHolder.getTenantId();
+
+        private String childId;
+
+        private String childName;
+
+        private String childSn;
+
+        private String childOrganCostPrice;
+
+        @ApiModelProperty(value = "品牌名称")
+        private String brandName;
+
+        private List<GoodsSub> goodsSubList = new ArrayList<>();
+
+        @Override
+        public String toString() {
+            return ToStringBuilder.reflectionToString(this);
+        }
+    }
+
+
+    @Data
+    @ApiModel(" GoodsSub_-组合商品,子商品信息")
+    public static class GoodsSub {
+
+        @ApiModelProperty("id")
+        private Integer id;
+
+        @ApiModelProperty("商品编号")
+        private Integer goodsId;
+
+        @ApiModelProperty("商城商品编号")
+        private Integer mallGoodsId;
+
+        @ApiModelProperty("商城商品名称")
+        private String mallGoodsName;
+
+        @ApiModelProperty("skuID")
+        private Integer sku;
+
+        @ApiModelProperty("sku编号")
+        private String skuCode;
+
+        @ApiModelProperty("销售价格")
+        private BigDecimal price;
+
+        @ApiModelProperty("商品状态,1:上架、0:下架")
+        private Boolean goodsStatus;
+
+        @ApiModelProperty("成本")
+        private BigDecimal goodsPrice;
+
+        @ApiModelProperty("货号")
+        private String productSn;
+
+        @ApiModelProperty("品牌ID")
+        private Long brandId;
+
+        @ApiModelProperty("品牌名称")
+        private String brandName;
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static GoodsSub from(String json) {
+            return JSON.parseObject(json, GoodsSub.class);
+        }
+    }
+
+
+    @Data
+    @ApiModel("商城商品分页查询参数")
+    public static class GoodsSubQuery extends QueryInfo {
+
+        @ApiModelProperty("上架状态,1:上架,0:下架")
+        private Integer publishStatus;
+
+        @ApiModelProperty("商品名称模糊关键字")
+        private String keyword;
+
+        @ApiModelProperty("商品货号")
+        private String productSn;
+
+        @ApiModelProperty("商品编号,多个逗号隔开")
+        private String productIds;
+
+        @ApiModelProperty("商品分类")
+        private Long productCategoryId;
+
+        @ApiModelProperty("商品品牌")
+        private Long brandId;
+
+    }
+
+}

+ 71 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicGroupCalenderRefundPeriodWrapper.java

@@ -0,0 +1,71 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.math.BigDecimal;
+
+public class MusicGroupCalenderRefundPeriodWrapper {
+
+
+    @Data
+    public static class MusicGroupCalenderRefundPeriod {
+
+        /**  */
+        private Integer id;
+
+        @ApiModelProperty(value = "分部",required = false)
+        private Integer organId;
+
+        @ApiModelProperty(value = "合作单位编号",required = false)
+        private Integer cooperationOrganId;
+
+        @ApiModelProperty(value = "缴费项目编号",required = false)
+        private Long calenderId;
+
+        @ApiModelProperty(value = "回款时间",required = false)
+        private String refundDate;
+
+        @ApiModelProperty(value = "回款金额",required = false)
+        private java.math.BigDecimal refundAmount;
+
+        @ApiModelProperty(value = "已回款金额",required = false)
+        private java.math.BigDecimal income = BigDecimal.ZERO;
+
+        @ApiModelProperty(value = "剩余待回款金额",required = false)
+        private java.math.BigDecimal subRefundAmount;
+
+        @ApiModelProperty(value = "是否完成回款",required = false)
+        private Boolean refundFlag = false;
+
+        @ApiModelProperty(value = "订单编号",required = false)
+        private String orderNos;
+
+        @ApiModelProperty(value = "备注",required = false)
+        private String memo;
+
+        @ApiModelProperty(value = "责任人",required = false)
+        private Integer responsiblePerson;
+
+
+        @ApiModelProperty(value = "责任人",required = false)
+        private String responsiblePersonName;
+        private String responsiblePersonPhone;
+
+        @ApiModelProperty(value = "是否发送回款提醒",required = false)
+        private Boolean sendRemind = false;
+
+        /**  */
+        private java.util.Date createTime;
+
+        /**  */
+        private java.util.Date updateTime;
+
+        @Override
+        public String toString() {
+            return ToStringBuilder.reflectionToString(this);
+        }
+
+    }
+}

+ 67 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicGroupPaymentCalenderAddressWrapper.java

@@ -0,0 +1,67 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class MusicGroupPaymentCalenderAddressWrapper {
+
+
+    @Data
+    public static class MusicGroupPaymentCalenderAddress{
+        @ApiModelProperty(value = "主键")
+        private Long id;
+
+        @ApiModelProperty(value = "缴费项目编号")
+        private Long calenderId;
+
+        @ApiModelProperty("订单编号")
+        private String orderNo;
+
+        @ApiModelProperty("是否发货")
+        private Boolean deliveryFlag = false;
+
+        @ApiModelProperty(value = "收货人")
+        private String name;
+
+        @ApiModelProperty(value = "收货人手机号")
+        private String phone;
+
+        @ApiModelProperty(value = "省")
+        private String province;
+
+        @ApiModelProperty(value = "市")
+        private String city;
+
+        @ApiModelProperty(value = "区")
+        private String region;
+
+
+        @ApiModelProperty(value = "省")
+        private String provinceName;
+
+        @ApiModelProperty(value = "市")
+        private String cityName;
+
+        @ApiModelProperty(value = "区")
+        private String regionName;
+
+        @ApiModelProperty(value = "邮编")
+        private String postCode;
+
+        @ApiModelProperty(value = "详细地址")
+        private String address;
+
+        @ApiModelProperty(value = "创建时间")
+        private Date createTime;
+
+        @ApiModelProperty(value = "更新时间")
+        private Date updateTime;
+    }
+}

+ 63 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/StudentPaymentOrderAddressWrapper.java

@@ -0,0 +1,63 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.Optional;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * 学生订单收货地址
+ * 2024-03-01 12:05:41
+ */
+@ApiModel(value = "StudentPaymentOrderAddressWrapper对象", description = "学生订单收货地址查询对象")
+public class StudentPaymentOrderAddressWrapper {
+
+    @Data
+	@Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" StudentPaymentOrderAddressQuery-学生订单收货地址")
+    public static class StudentPaymentOrderAddressQuery implements QueryInfo {
+    
+    	@ApiModelProperty("当前页")
+        private Integer page;
+        
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+        
+        @ApiModelProperty("关键字匹配")
+		private String keyword;
+        
+        public String getKeyword() {
+            return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
+        }
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static StudentPaymentOrderAddressQuery from(String json) {
+            return JSON.parseObject(json, StudentPaymentOrderAddressQuery.class);
+        }
+    }  
+
+	@ApiModel(" StudentPaymentOrderAddress-学生订单收货地址")
+    public static class StudentPaymentOrderAddress {
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static StudentPaymentOrderAddress from(String json) {
+            return JSON.parseObject(json, StudentPaymentOrderAddress.class);
+        }
+	}
+
+}

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

@@ -622,4 +622,5 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
     List<ClassGroup> getClassGroupByMusicIds(List<String> musicGroupIds);
 
     List<StudentAttendanceViewDto> getLiveCurrentCourseStudents(LiveGroupWrapper.LiveCourseStudentQuery query);
+
 }

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