Browse Source

Merge branch 'online' into dev_1_3_2_20220815

liujunchi 2 years ago
parent
commit
4992325b12
58 changed files with 592 additions and 219 deletions
  1. 5 5
      audio-analysis/src/main/java/com/yonge/netty/dto/ChunkAnalysis.java
  2. 30 11
      audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java
  3. 3 3
      audio-analysis/src/test/java/com/yonge/netty/client/NettyClient.java
  4. 0 0
      audio-analysis/src/test/resources/悬崖上的金鱼姬1 速度160.json
  5. 3 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java
  6. 5 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java
  7. 39 25
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/PhoneAuthenticationProvider.java
  8. 1 1
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/SysUserService.java
  9. 5 3
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java
  10. 12 0
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/entity/SysNewsInformation.java
  11. 4 2
      cooleshow-cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  12. 19 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/ActivityStateTask.java
  13. 12 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityEvaluationController.java
  14. 11 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityRewardController.java
  15. 14 7
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserOrderClient.java
  16. 0 4
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/task/TaskController.java
  17. 1 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityEvaluationDao.java
  18. 29 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanDao.java
  19. 9 12
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/ActivityPlanSearch.java
  20. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicSheetSearch.java
  21. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java
  22. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlan.java
  23. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Subject.java
  24. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysNewsInformation.java
  25. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityEvaluationService.java
  26. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityRewardService.java
  27. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java
  28. 27 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityEvaluationServiceImpl.java
  29. 23 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanServiceImpl.java
  30. 9 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java
  31. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  32. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  33. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java
  34. 16 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  35. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  36. 9 13
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderPaymentServiceImpl.java
  37. 22 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  38. 18 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  39. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetDetailVo.java
  40. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherAuthEntryRecordVo.java
  41. 26 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherMusicSheetListVo.java
  42. 25 36
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityEvaluationMapper.xml
  43. 39 4
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanMapper.xml
  44. 2 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityRegistrationMapper.xml
  45. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  46. 2 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleRecordMapper.xml
  47. 27 28
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicAlbumMapper.xml
  48. 20 9
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  49. 6 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  50. 2 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthEntryRecordMapper.xml
  51. 3 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml
  52. 1 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VideoLessonController.java
  53. 2 3
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java
  54. 0 9
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupController.java
  55. 1 0
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/MusicSheetController.java
  56. 23 0
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/TeacherController.java
  57. 5 0
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenSubjectController.java
  58. 9 0
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenVideoGroupController.java

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

@@ -8,7 +8,7 @@ public class ChunkAnalysis {
 
 	private double durationTime;
 
-	private int frequency;
+	private double frequency;
 
 	private int splDb;
 
@@ -18,7 +18,7 @@ public class ChunkAnalysis {
 	
 	private boolean isPeak;
 
-	public ChunkAnalysis(double startTime, double endTime, int frequency, int splDb, int power, int amplitude) {
+	public ChunkAnalysis(double startTime, double endTime, double frequency, int splDb, int power, int amplitude) {
 		this.startTime = startTime;
 		this.endTime = endTime;
 		this.frequency = frequency;
@@ -28,7 +28,7 @@ public class ChunkAnalysis {
 		this.durationTime = endTime - startTime;
 	}
 
-	public ChunkAnalysis(int frequency, int splDb, int power) {
+	public ChunkAnalysis(double frequency, int splDb, int power) {
 		this.frequency = frequency;
 		this.splDb = splDb;
 		this.power = power;
@@ -58,11 +58,11 @@ public class ChunkAnalysis {
 		this.durationTime = durationTime;
 	}
 
-	public int getFrequency() {
+	public double getFrequency() {
 		return frequency;
 	}
 
-	public void setFrequency(int frequency) {
+	public void setFrequency(double frequency) {
 		this.frequency = frequency;
 	}
 

+ 30 - 11
audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java

@@ -540,7 +540,7 @@ public class UserChannelContext {
 		
 		List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
 		
-		double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote);
+		double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote, floatingRange);
 		double correctedEndTime = correctedStartTime + musicXmlNote.getDuration();
 		
 		chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(correctedStartTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(correctedEndTime)).collect(Collectors.toList());
@@ -675,7 +675,7 @@ public class UserChannelContext {
 		
 		List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
 		
-		double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote);
+		double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote, floatingRange);
 		double correctedEndTime = correctedStartTime + musicXmlNote.getDuration();
 		
 		//重新计算延迟
@@ -698,14 +698,14 @@ public class UserChannelContext {
 		
 		List<ChunkAnalysis> chunkList = new ArrayList<ChunkAnalysis>(chunkAnalysisList);
 		
-		List<Integer> chunkFrequencyList = chunkList.stream().map(t -> t.getFrequency()).filter(t -> t.doubleValue() > MusicalInstrumentsPitchRange.get(subjectId, standardFrequecy).getMinPitch() && t.doubleValue() < MusicalInstrumentsPitchRange.get(subjectId, standardFrequecy).getMaxPitch())
+		List<Double> chunkFrequencyList = chunkList.stream().map(t -> t.getFrequency()).filter(t -> t.doubleValue() > MusicalInstrumentsPitchRange.get(subjectId, standardFrequecy).getMinPitch() && t.doubleValue() < MusicalInstrumentsPitchRange.get(subjectId, standardFrequecy).getMaxPitch())
 				.collect(Collectors.toList());
 		
 		if (chunkFrequencyList.size() == 0) {
 			return -1;
 		}
 
-		int frequency = (int) (chunkFrequencyList.stream().mapToInt(t -> t).sum() / chunkFrequencyList.size());
+		int frequency = (int) (chunkFrequencyList.stream().mapToDouble(t -> t).sum() / chunkFrequencyList.size());
 
 		return frequency;
 	}
@@ -725,7 +725,7 @@ public class UserChannelContext {
 		
 		List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
 		
-		double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote);
+		double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote, floatingRange);
 		double correctedEndTime = correctedStartTime + musicXmlNote.getDuration();
 		
 		chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(correctedStartTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(correctedEndTime)).collect(Collectors.toList());
@@ -895,7 +895,7 @@ public class UserChannelContext {
 		
 		List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
 		
-		double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote);
+		double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote, floatingRange);
 		double correctedEndTime = correctedStartTime + musicXmlNote.getDuration();
 		
 		chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(correctedStartTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(correctedEndTime)).collect(Collectors.toList());
@@ -981,7 +981,7 @@ public class UserChannelContext {
 		return tempo;
 	}
 	
-	private double queryFirstNoteStartTime(List<ChunkAnalysis> chunkAnalysisList, MusicXmlNote musicXmlNote) {
+	private double queryFirstNoteStartTime(List<ChunkAnalysis> chunkAnalysisList, MusicXmlNote musicXmlNote, double floatingRange) {
 		
 		if(chunkAnalysisList == null || chunkAnalysisList.size() == 0){
 			LOGGER.debug("[查询第一个音]找不到数据,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
@@ -1004,10 +1004,29 @@ public class UserChannelContext {
 			MusicXmlNote preMusicXmlNote = getCurrentMusicNote(null, musicXmlNote.getMusicalNotesIndex() - 1);
 			if((int)preMusicXmlNote.getFrequency() == (int)musicXmlNote.getFrequency()){
 				Optional<ChunkAnalysis> optional = chunkAnalysisList.stream().filter(t -> t.getFrequency() <= MusicalInstrumentsPitchRange.get(subjectId, standardFrequecy).getMinPitch()).findFirst();
-				if(optional.isPresent()){
-					LOGGER.debug("[查询第一个音]与上一个音同音,有断开,correctedStartTime:{}", optional.get().getEndTime());
-					return optional.get().getEndTime();
-				}else{
+				if (optional.isPresent()) {// 与上一个音同音,有断开
+					
+					double restNotes = optional.get().getEndTime();
+
+					optional = chunkAnalysisList
+							.stream()
+							.filter(t -> t.getStartTime() >= restNotes && t.getFrequency() > MusicalInstrumentsPitchRange.get(subjectId, standardFrequecy).getMinPitch()
+									&& t.getFrequency() < MusicalInstrumentsPitchRange.get(subjectId, standardFrequecy).getMaxPitch()).findFirst();
+					if(optional.isPresent()){
+						LOGGER.debug("[查询第一个音]与上一个音同音,有断开,correctedStartTime:{}", optional.get().getStartTime());
+						return optional.get().getStartTime();
+					}else{
+						
+						if((int)musicXmlNote.getFrequency() == -1){
+							LOGGER.debug("[查询第一个音]与上一个音同音,有断开,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
+							return musicXmlNote.getTimeStamp() + dynamicOffset;
+						}else{
+							LOGGER.debug("[查询第一个音]与上一个音同音,有断开,correctedStartTime:{}", musicXmlNote.getTimeStamp() + floatingRange + dynamicOffset);
+							return musicXmlNote.getTimeStamp() + floatingRange + dynamicOffset;
+						}
+					}
+
+				} else {
 					LOGGER.debug("[查询第一个音]与上一个音同音,未断开,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 					return musicXmlNote.getTimeStamp() + dynamicOffset;
 				}

+ 3 - 3
audio-analysis/src/test/java/com/yonge/netty/client/NettyClient.java

@@ -84,17 +84,17 @@ public class NettyClient {
 	        handler.handshakeFuture().sync();
 	        
 			//step1发送xml
-			String step1 = FileUtils.readFileToString(FileUtils.toFile(WebSocketClientHandler.class.getResource("/扬基歌88.json")));
+			String step1 = FileUtils.readFileToString(FileUtils.toFile(WebSocketClientHandler.class.getResource("/悬崖上的金鱼姬1 速度160.json")));
 			channel.writeAndFlush(new TextWebSocketFrame(step1));
 			
 			String step2 = "{\"header\":{\"commond\":\"recordStart\",\"type\":\"SOUND_COMPARE\",\"status\":200}}";
 			channel.writeAndFlush(new TextWebSocketFrame(step2));
 			
-			String step3 = "{\"body\":{\"offsetTime\":89},\"uuid\":\"1657779786620650261\",\"header\":{\"commond\":\"audioPlayStart\",\"type\":\"SOUND_COMPARE\"}}";
+			String step3 = "{\"body\":{\"offsetTime\":1302},\"uuid\":\"1657779786620650261\",\"header\":{\"commond\":\"audioPlayStart\",\"type\":\"SOUND_COMPARE\"}}";
 			channel.writeAndFlush(new TextWebSocketFrame(step3));
 			
 			//step4 发送wav
-			String fileName = "/扬基歌_速度88.wav";
+			String fileName = "/悬崖上的金鱼姬1 速度160.wav";
 			AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(FileUtils.toFile(WebSocketClientHandler.class.getResource(fileName)));
 			
 			AudioFormat baseFormat = audioInputStream.getFormat();

File diff suppressed because it is too large
+ 0 - 0
audio-analysis/src/test/resources/悬崖上的金鱼姬1 速度160.json


+ 3 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -78,4 +78,7 @@ public interface AdminFeignService {
     @GetMapping("/open/userOrder/contractRecord")
     HttpResponseResult<Boolean> contractRecord(@RequestBody ContractDto contract);
 
+    //老师课酬
+    @PostMapping(value = "/task/activityState")
+    HttpResponseResult activityState();
 }

+ 5 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java

@@ -60,4 +60,9 @@ public class AdminFeignServiceFallback implements AdminFeignService {
     public HttpResponseResult<Boolean> contractRecord(ContractDto contract) {
         return null;
     }
+
+    @Override
+    public HttpResponseResult activityState() {
+        return null;
+    }
 }

+ 39 - 25
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/PhoneAuthenticationProvider.java

@@ -74,6 +74,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
             if (isRegister == false || StringUtils.equals("SYSTEM", clientId)) {
                 throw new LockedException("用户不存在");
             }
+
             userInfo = sysUserService.registerUser(loginEntity.getPhone(), clientId, loginUserType);
 
             if (StringUtils.isNotBlank(deviceNum)) {
@@ -91,38 +92,51 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
             if (StringUtils.isNotBlank(deviceNum)) {
                 sysUserDeviceService.bindDevice(clientId, user.getId(), deviceNum);
             }
-            if (!userInfo.getSysUser().getUserType().contains(clientId)) {
-                if(StringUtils.equals("SYSTEM", clientId)){
+            //登录
+            if (userInfo.getSysUser().getUserType().contains(clientId)){
+                return login(username);
+            }
+            //官网登录
+            if(StringUtils.isNotEmpty(loginUserType) && userInfo.getSysUser().getUserType().contains(loginUserType)){
+                return login(username);
+            }
+
+            /**********************************注册*********************************************/
+            //不能注册的
+            if(isRegister == false || StringUtils.equals("SYSTEM", clientId)){
+                throw new LockedException("用户不存在");
+            }
+
+            user.setUpdateTime(new Date());
+            if(StringUtils.isNotEmpty(loginUserType)){
+                if (StringUtils.equalsIgnoreCase(loginUserType, "TEACHER")) {
+                    user.setUserType(user.getUserType() + "," + loginUserType);
+                    sysUserService.saveTeacher(user);
+                } else if (StringUtils.equalsIgnoreCase(loginUserType, "STUDENT")) {
+                    user.setUserType(user.getUserType() + "," + loginUserType);
+                    sysUserService.saveStudent(user);
+                }else {
                     throw new LockedException("用户不存在");
                 }
-                if(isRegister == false
-                        && (StringUtils.isEmpty(loginUserType) || !(userInfo.getSysUser().getUserType().contains(loginUserType)))){
+            }else if(StringUtils.isNotEmpty(clientId)){
+                if (StringUtils.equalsIgnoreCase(clientId, "TEACHER")) {
+                    user.setUserType(user.getUserType() + "," + clientId);
+                    sysUserService.saveTeacher(user);
+                } else if (StringUtils.equalsIgnoreCase(clientId, "STUDENT")) {
+                    user.setUserType(user.getUserType() + "," + clientId);
+                    sysUserService.saveStudent(user);
+                } else {
                     throw new LockedException("用户不存在");
                 }
-
-                if(isRegister == true){
-                    user.setUpdateTime(new Date());
-                    if (StringUtils.equalsIgnoreCase(loginUserType, "TEACHER")) {
-                        user.setUserType(user.getUserType() + "," + loginUserType);
-                        sysUserService.saveTeacher(user);
-                    } else if (StringUtils.equalsIgnoreCase(loginUserType, "STUDENT")) {
-                        user.setUserType(user.getUserType() + "," + loginUserType);
-                        sysUserService.saveStudent(user);
-                    } else if (StringUtils.equalsIgnoreCase(clientId, "TEACHER")) {
-                        user.setUserType(user.getUserType() + "," + clientId);
-                        sysUserService.saveTeacher(user);
-                    } else if (StringUtils.equalsIgnoreCase(clientId, "STUDENT")) {
-                        user.setUserType(user.getUserType() + "," + clientId);
-                        sysUserService.saveStudent(user);
-                    } else {
-                        throw new LockedException("用户不存在");
-                    }
-                    sysUserService.update(user);
-                }
-
+            }else{
+                throw new LockedException("用户不存在");
             }
+            sysUserService.update(user);
         }
+        return login(username);
+    }
 
+    private UserDetails login(String username){
         UserDetails loadedUser;
         try {
             loadedUser = userDetailsService.loadUserByUsername(username);

+ 1 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/SysUserService.java

@@ -135,7 +135,7 @@ public interface SysUserService extends BaseService<Long, SysUser> {
     /**
      * 保存teacher数据
      *
-     * @param userId
+     * @param sysUser
      */
     void saveTeacher(SysUser sysUser);
 

+ 5 - 3
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java

@@ -179,7 +179,6 @@ public class TokenController extends BaseController {
         if (accessToken.isExpired()) {
             return failed(HttpStatus.FORBIDDEN, "token 已过期");
         }
-
         return succeed();
     }
 
@@ -188,8 +187,11 @@ public class TokenController extends BaseController {
     @ApiOperation(value = "获取二维码登录code(不需要鉴权)")
     public HttpResponseResult<QRLoginDto> getQRLoginCode(
             @ApiParam(value = "clientId", required = true) @RequestParam("clientId") String clientId,
-            @ApiParam(value = "clientSecret", required = true) @RequestParam("clientSecret") String clientSecret) {
-        //todo 验证客户端id
+            @ApiParam(value = "clientSecret", required = true) @RequestParam("clientSecret") String clientSecret,
+            @ApiParam(value = "code") String code) {
+        if(StringUtils.isNotEmpty(code)){
+            redissonClient.getBucket(CacheNameEnum.QR_LOGIN_CODE.getRedisKey(code)).delete();
+        }
 
         QRLoginDto qrLogin = new QRLoginDto();
 

+ 12 - 0
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/dal/entity/SysNewsInformation.java

@@ -98,6 +98,18 @@ public class SysNewsInformation {
 	@ApiModelProperty(value = "客户端类型    STUDENT:学生端  WEBSITE:官网  TEACHER :老师端")
 	private String clientType;
 
+	@ApiModelProperty("官网背景色")
+	private String background;
+
+
+	public String getBackground() {
+		return background;
+	}
+
+	public void setBackground(String background) {
+		this.background = background;
+	}
+
 	public String getClientType() {
 		return clientType;
 	}

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

@@ -31,6 +31,7 @@
 		<result column="link_type_" property="linkType" />
 		<result column="create_by_" property="createBy" />
 		<result column="client_type_" property="clientType" />
+		<result column="background_" property="background" />
 	</resultMap>
 	
 	<resultMap type="com.yonge.cooleshow.cms.dto.SysNewsInformationDto" id="SysNewsInformationDto" extends="SysNewsInformation">
@@ -115,8 +116,8 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.yonge.cooleshow.cms.dal.entity.SysNewsInformation" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO sys_news_information (id_,title_,content_,cover_image_,video_cover_image_,type_,online_time_,offline_time_,sub_type_,status_,create_time_,update_time_,link_url_,href_target_,order_,del_flag_,memo_,attribute1_,attribute2_,subject_id_list_,create_by_,update_by_,show_time_,link_type_,client_type_)
-		VALUES(#{id},#{title},#{content},#{coverImage},#{videoCoverImage},#{type},#{onlineTime},#{offlineTime},#{subType},#{status, typeHandler=com.yonge.toolset.mybatis.dal.CustomEnumTypeHandler},now(),now(),#{linkUrl},#{hrefTarget},#{order},0,#{memo},#{attribute1},#{attribute2},#{subjectIdList},#{createBy},#{updateBy},#{showTime},#{linkType},#{clientType})
+		INSERT INTO sys_news_information (id_,title_,content_,cover_image_,video_cover_image_,type_,online_time_,offline_time_,sub_type_,status_,create_time_,update_time_,link_url_,href_target_,order_,del_flag_,memo_,attribute1_,attribute2_,subject_id_list_,create_by_,update_by_,show_time_,link_type_,client_type_,background_)
+		VALUES(#{id},#{title},#{content},#{coverImage},#{videoCoverImage},#{type},#{onlineTime},#{offlineTime},#{subType},#{status, typeHandler=com.yonge.toolset.mybatis.dal.CustomEnumTypeHandler},now(),now(),#{linkUrl},#{hrefTarget},#{order},0,#{memo},#{attribute1},#{attribute2},#{subjectIdList},#{createBy},#{updateBy},#{showTime},#{linkType},#{clientType},#{background})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -146,6 +147,7 @@
 				update_by_ = #{updateBy},
 				link_type_ = #{linkType},
 				client_type_ = #{clientType},
+			background_ = #{background},
 				show_time_ = #{showTime}
 		</set>
 		WHERE id_ = #{id}

+ 19 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/ActivityStateTask.java

@@ -0,0 +1,19 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.task.core.BaseTask;
+import com.yonge.cooleshow.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ActivityStateTask extends BaseTask {
+
+    @Autowired
+    private AdminFeignService adminFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        Object o = adminFeignService.activityState();
+    }
+}

+ 12 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityEvaluationController.java

@@ -1,5 +1,7 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ActivityEvaluationDto;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
@@ -14,9 +16,11 @@ import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.toolset.base.util.StringUtil;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
 
 import com.yonge.cooleshow.biz.dal.vo.ActivityEvaluationVo;
@@ -32,7 +36,8 @@ public class ActivityEvaluationController extends BaseController {
 
     @Autowired
     private ActivityEvaluationService activityEvaluationService;
-    
+	@Resource
+	private SysUserFeignService sysUserFeignService;
     /**
      * 查询分页
      */
@@ -59,7 +64,11 @@ public class ActivityEvaluationController extends BaseController {
 	@ApiOperation(value = "批量增加曲目")
 	@PreAuthorize("@pcs.hasPermissions('activityEvaluation/addBatch')")
 	public HttpResponseResult addBatch(@Valid @RequestBody ActivityEvaluationDto param) {
-    	return status(activityEvaluationService.addBatch(param));
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if (user == null || null == user.getId()) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+    	return status(activityEvaluationService.addBatch(param,user));
 	}
 
  	/**
@@ -87,6 +96,7 @@ public class ActivityEvaluationController extends BaseController {
 		}
 		query.setAuditStatus(AuthStatusEnum.PASS);
 		query.setState(YesOrNoEnum.YES);
+		query.setAuditVersion(YesOrNoEnum.NO);
 
 		IPage<MusicSheetVo> musicSheetVoIPage = activityEvaluationService.musicPage(PageUtil.getPage(query), query);
 		return succeed(PageUtil.pageInfo(musicSheetVoIPage));

+ 11 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityRewardController.java

@@ -1,5 +1,7 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ActivityRewardDto;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -10,9 +12,11 @@ import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.toolset.base.util.StringUtil;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
 
 import com.yonge.cooleshow.biz.dal.vo.ActivityRewardVo;
@@ -27,6 +31,8 @@ public class ActivityRewardController extends BaseController {
 
     @Autowired
     private ActivityRewardService activityRewardService;
+	@Resource
+	private SysUserFeignService sysUserFeignService;
 
 	/**
      * 通过奖品id查询单条
@@ -66,6 +72,10 @@ public class ActivityRewardController extends BaseController {
     @ApiOperation(value = "新增或修改", notes = "传入activityReward")
 	@PreAuthorize("@pcs.hasPermissions('activityReward/submit')")
 	public HttpResponseResult submit(@Valid @RequestBody ActivityRewardDto activityReward) {
-        return status(activityRewardService.submit(activityReward));
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if (user == null || null == user.getId()) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+        return status(activityRewardService.submit(activityReward, user));
     }
 }

+ 14 - 7
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserOrderClient.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.admin.controller.open;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.yonge.cooleshow.biz.dal.entity.UserOrder;
 import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment;
 import com.yonge.cooleshow.biz.dal.entity.UserOrderRefundBill;
 import com.yonge.cooleshow.common.entity.ContractDto;
@@ -134,7 +135,7 @@ public class UserOrderClient extends BaseController {
      */
     @PostMapping("/testCallback")
     public void testCallback(@RequestBody PaymentCallBack data) {
-        if(!debugMode){
+        if (!debugMode) {
             return;
         }
         if (MethodNameEnum.executePayment.equals(data.getMethodName())) {
@@ -152,7 +153,7 @@ public class UserOrderClient extends BaseController {
     @GetMapping("/setSuccessStatus")
     @ApiOperation(value = "完成所有订单(测试用)")
     public HttpResponseResult<Boolean> setSuccessStatus() {
-        if(!debugMode){
+        if (!debugMode) {
             return HttpResponseResult.failed("当前环境不允许调用");
         }
         userOrderService.setSuccessStatus();
@@ -164,18 +165,24 @@ public class UserOrderClient extends BaseController {
     public HttpResponseResult<Boolean> setOrderStatus(
             @RequestParam("orderNo") String orderNo,
             @RequestParam("orderStatus") OrderStatusEnum orderStatus) {
-        if(!debugMode){
+        if (!debugMode) {
             return HttpResponseResult.failed("当前环境不允许调用");
         }
-        userOrderService.setOrderStatus(orderNo, orderStatus);
-        return succeed(true);
+
+        UserOrder param = new UserOrder();
+        param.setOrderNo(orderNo);
+        param.setStatus(orderStatus);
+        Boolean aBoolean = DistributedLock.of(redissonClient)
+                .runIfLockToFunction(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(orderNo)
+                        , userOrderService::setOrderStatus, param, 10L);
+        return succeed(aBoolean);
     }
 
     @GetMapping("/orderRefound")
     @ApiOperation(value = "退款(测试用)")
     public HttpResponseResult<UserOrderRefundBill> orderRefound(
             @RequestParam("orderNo") String orderNo) {
-        if(!debugMode){
+        if (!debugMode) {
             return HttpResponseResult.failed("当前环境不允许调用");
         }
         return userOrderRefundService.orderRefound(orderNo);
@@ -187,7 +194,7 @@ public class UserOrderClient extends BaseController {
     @PostMapping("/contractRecord")
     @ApiOperation(value = "签协议 商城调用", notes = "签协议 商城调用")
     public HttpResponseResult<Boolean> contractRecord(@RequestBody ContractDto contract) {
-        paymentService.setContractRecord(contract.getType(),contract.getUserId());
+        paymentService.setContractRecord(contract.getType(), contract.getUserId());
         return succeed(true);
     }
 }

+ 0 - 4
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/task/TaskController.java

@@ -1,13 +1,9 @@
 package com.yonge.cooleshow.admin.task;
 
-import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
 import com.yonge.cooleshow.biz.dal.service.*;
-import com.yonge.cooleshow.biz.dal.wordfilter.WordContext;
-import com.yonge.cooleshow.biz.dal.wordfilter.WordFilter;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import io.swagger.annotations.Api;
 import org.redisson.api.RBucket;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;

+ 1 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityEvaluationDao.java

@@ -33,8 +33,6 @@ public interface ActivityEvaluationDao extends BaseMapper<ActivityEvaluation> {
 
 	List<ActivityEvaluationVo> selectAll(@Param("param") ActivityEvaluationSearch activityEvaluation);
 
-	List<Long> selectUnjoinMusicIds(@Param("activityId") Long activityId, @Param("musicSheetIds") List<Long> musicSheetIds);
-
     /**
      * 批量给活动添加曲目
      *
@@ -42,7 +40,7 @@ public interface ActivityEvaluationDao extends BaseMapper<ActivityEvaluation> {
      * @param musicSheetIds
      * @return
      */
-    Integer addBatch(@Param("activityId") Long activityId, @Param("musicSheetIds") List<Long> musicSheetIds);
+    Integer addBatch(@Param("activityId") Long activityId,@Param("userId") Long userId , @Param("musicSheetIds") List<Long> musicSheetIds);
 
 	/**
 	 * 获取活动曲目信息

+ 29 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanDao.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.entity.ActivityUserReward;
 import com.yonge.cooleshow.biz.dal.vo.MusicActivityVo;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
@@ -29,6 +30,20 @@ public interface ActivityPlanDao extends BaseMapper<ActivityPlan> {
 	 * @return: com.yonge.cooleshow.biz.dal.vo.ActivityPlanVo
 	 */
 	List<ActivityPlanVo> selectPage(@Param("page") IPage page, @Param("param") ActivityPlanSearch activityPlan);
+	/**
+	 <if test="param.startTime !=null or param.endTime !=null">
+		 and NOT (
+			 <trim prefixOverrides="OR">
+				 <if test="param.startTime !=null">
+					OR t.activity_end_ &lt; #{param.startTime}
+				 </if>
+				 <if test="param.endTime !=null">
+					OR t.activity_start_ &gt; #{param.endTime}
+				 </if>
+			 </trim>
+		 )
+	 </if>
+	 */
 
 	/**
 	 * 评测活动 活动难度
@@ -43,4 +58,18 @@ public interface ActivityPlanDao extends BaseMapper<ActivityPlan> {
 	 * @return
 	 */
     List<ActivityPlan> activityState();
+
+	/**
+	 * 需要发奖的活动
+	 * @return
+	 */
+    List<ActivityPlan> activityReward();
+
+	/**
+	 *
+	 * @param activityPlanId
+	 * @param activityType
+	 * @return
+	 */
+	List<ActivityUserReward> getUserReward(@Param("activityPlanId")Long activityPlanId,@Param("activityType") String activityType);
 }

+ 9 - 12
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/ActivityPlanSearch.java

@@ -8,6 +8,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.util.Date;
 
 /**
  * @Author: liweifan
@@ -25,11 +26,11 @@ public class ActivityPlanSearch extends QueryInfo{
 	@ApiModelProperty(value = "活动开始时间")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-	private LocalDateTime startTime;
+	private Date startTime;
 	@ApiModelProperty(value = "活动结束时间")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-	private LocalDateTime endTime;
+	private Date endTime;
 
 	public String getActivityName() {
 		return activityName;
@@ -55,23 +56,19 @@ public class ActivityPlanSearch extends QueryInfo{
 		this.activityState = activityState;
 	}
 
-	public LocalDateTime getStartTime() {
+	public Date getStartTime() {
 		return startTime;
 	}
 
-	public void setStartTime(LocalDateTime startTime) {
-		if(null != startTime){
-			this.startTime = LocalDateTime.of(startTime.toLocalDate(), LocalTime.MIN);
-		}
+	public void setStartTime(Date startTime) {
+		this.startTime = startTime;
 	}
 
-	public LocalDateTime getEndTime() {
+	public Date getEndTime() {
 		return endTime;
 	}
 
-	public void setEndTime(LocalDateTime endTime) {
-		if(null != endTime){
-			this.endTime = LocalDateTime.of(endTime.toLocalDate(), LocalTime.MAX);
-		}
+	public void setEndTime(Date endTime) {
+		this.endTime = endTime;
 	}
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicSheetSearch.java

@@ -57,7 +57,7 @@ public class MusicSheetSearch  extends QueryInfo{
     @ApiModelProperty(value = "收费类型(FREE:免费;VIP:会员;CHARGE:单曲收费)")
     private ChargeTypeEnum chargeType;  //收费类型(0:免费;1:会员;2:单曲收费)
 
-    @ApiModelProperty(value = "查看我自己的曲目",required = true)
+    @ApiModelProperty(value = "查看我自己的曲目")
     private Boolean myself;
 
 

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java

@@ -14,7 +14,7 @@ public class VideoLessonGroupSearch extends QueryInfo {
     @ApiModelProperty(value = "是否上架 (0:否  1:是)")
     private Integer shelvesFlag;
 
-    @ApiModelProperty(value = "审核状态(DOING:审核中 PASS:已上架 UNPASS:审核失败 UNSHELVES: 下架)")
+    @ApiModelProperty(value = "审核状态(DOING:审核中 PASS:已上架 UNPASS:审核失败 OUT_SALE: 下架)")
     private String auditStatus;
 
     @ApiModelProperty(value = "视频课组id")

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlan.java

@@ -88,6 +88,9 @@ public class ActivityPlan implements Serializable {
     @ApiModelProperty("活动状态 0 停用 1 启用 ")
 	@TableField(value = "activity_state_")
     private Integer activityState;
+    @ApiModelProperty("发奖状态 0 未发奖 1 已发奖 ")
+    @TableField(value = "reward_flag_")
+    private Integer rewardFlag;
     @ApiModelProperty("创建时间 ")
 	@TableField(value = "create_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -264,4 +267,12 @@ public class ActivityPlan implements Serializable {
     public void setShareRate(BigDecimal shareRate) {
         this.shareRate = shareRate;
     }
+
+    public Integer getRewardFlag() {
+        return rewardFlag;
+    }
+
+    public void setRewardFlag(Integer rewardFlag) {
+        this.rewardFlag = rewardFlag;
+    }
 }

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Subject.java

@@ -31,6 +31,9 @@ public class Subject implements Serializable {
 	
 	@ApiModelProperty(value = "图片地址",required = false)
 	private String img;
+
+	@ApiModelProperty("声部默认频率")
+	private Integer aiDefaultFrequency;
 	
 	/**  */
 	private java.util.Date createTime;
@@ -48,6 +51,14 @@ public class Subject implements Serializable {
 	@ApiModelProperty(value = "子节点列表",required = false)
 	private List<Subject> subjects;
 
+	public Integer getAiDefaultFrequency() {
+		return aiDefaultFrequency;
+	}
+
+	public void setAiDefaultFrequency(Integer aiDefaultFrequency) {
+		this.aiDefaultFrequency = aiDefaultFrequency;
+	}
+
 	public List<Subject> getSubjects() {
 		return subjects;
 	}

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysNewsInformation.java

@@ -96,6 +96,18 @@ public class SysNewsInformation {
 	@ApiModelProperty(value = "客户端类型    STUDENT:学生端  WEBSITE:官网")
 	private String clientType;
 
+	@ApiModelProperty("官网背景色")
+	private String background;
+
+
+	public String getBackground() {
+		return background;
+	}
+
+	public void setBackground(String background) {
+		this.background = background;
+	}
+
 	public String getClientType() {
 		return clientType;
 	}

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityEvaluationService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ActivityEvaluationDto;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.vo.ActivityEvaluationVo;
@@ -40,7 +41,7 @@ public interface ActivityEvaluationService extends IService<ActivityEvaluation>
 	 * @param param
 	 * @return
 	 */
-    Boolean addBatch(ActivityEvaluationDto param);
+    Boolean addBatch(ActivityEvaluationDto param, SysUser user);
 
 	/**
 	 * 获取活动曲目细腻

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityRewardService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ActivityRewardDto;
 import com.yonge.cooleshow.biz.dal.vo.ActivityRewardVo;
 import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardSearch;
@@ -36,7 +37,7 @@ public interface ActivityRewardService extends IService<ActivityReward>  {
      */
     IPage<ActivityRewardVo> selectPage(IPage<ActivityRewardVo> page, ActivityRewardSearch query);
 
-	Boolean submit(ActivityRewardDto activityReward);
+	Boolean submit(ActivityRewardDto activityReward, SysUser user);
 
 	/**
 	 * 获取活动所有奖品

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java

@@ -163,7 +163,7 @@ public interface UserOrderService extends IService<UserOrder> {
      * @param: orderStatus
      * @updateTime 2022/4/29 18:41
      */
-    void setOrderStatus(String orderNo, OrderStatusEnum orderStatus);
+    Boolean setOrderStatus(UserOrder param);
 
     /**
      * 订单完成

+ 27 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityEvaluationServiceImpl.java

@@ -1,13 +1,19 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ActivityEvaluationDto;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
+import com.yonge.cooleshow.biz.dal.service.ActivityPlanService;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
 import com.yonge.cooleshow.biz.dal.vo.ActivityMusicVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.toolset.base.exception.BizException;
 import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -17,6 +23,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.ActivityEvaluationSearch;
 import com.yonge.cooleshow.biz.dal.dao.ActivityEvaluationDao;
 import com.yonge.cooleshow.biz.dal.service.ActivityEvaluationService;
 
+import java.util.Date;
 import java.util.List;
 
 import java.util.Map;
@@ -26,6 +33,8 @@ import java.util.stream.Collectors;
 @Service
 public class ActivityEvaluationServiceImpl extends ServiceImpl<ActivityEvaluationDao, ActivityEvaluation> implements ActivityEvaluationService {
     private final static Logger log = LoggerFactory.getLogger(ActivityEvaluationServiceImpl.class);
+    @Autowired
+    private ActivityPlanService activityPlanService;
 
     @Override
     public ActivityEvaluationVo detail(Long id) {
@@ -43,12 +52,26 @@ public class ActivityEvaluationServiceImpl extends ServiceImpl<ActivityEvaluatio
     }
 
     @Override
-    public Boolean addBatch(ActivityEvaluationDto param) {
+    public Boolean addBatch(ActivityEvaluationDto param, SysUser user) {
         List<Long> musicSheetIds = WrapperUtil.toLongList(param.getMusicSheetIds());
-        //过滤出未添加的曲子
-        musicSheetIds = baseMapper.selectUnjoinMusicIds(param.getActivityId(), musicSheetIds);
+
+        List<ActivityEvaluation> activityEvaluations = baseMapper.selectList(Wrappers.<ActivityEvaluation>lambdaQuery()
+                .eq(ActivityEvaluation::getActivityId, param.getActivityId())
+        );
+
+        List<Long> oldMusicSheetIds = activityEvaluations.stream().map(o -> o.getMusicSheetId()).collect(Collectors.toList());
+        musicSheetIds.removeAll(oldMusicSheetIds);
+
+        if ((oldMusicSheetIds.size() + musicSheetIds.size()) > 10) {
+            throw new BizException("添加的曲目不能多余10首");
+        }
         if (CollectionUtils.isNotEmpty(musicSheetIds)) {
-            baseMapper.addBatch(param.getActivityId(), musicSheetIds);
+            baseMapper.addBatch(param.getActivityId(), user.getId(), musicSheetIds);
+            //更新修改人和修改时间
+            activityPlanService.update(Wrappers.<ActivityPlan>lambdaUpdate()
+                    .set(ActivityPlan::getUpdateBy, user.getId())
+                    .eq(ActivityPlan::getId,param.getActivityId())
+            );
         }
         return true;
     }

+ 23 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanServiceImpl.java

@@ -57,6 +57,9 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
     private ActivityRewardService activityRewardService;
 
     @Autowired
+    private ActivityUserRewardService activityUserRewardService;
+
+    @Resource
     private SysUserFeignService sysUserFeignService;
 
     @Autowired
@@ -141,13 +144,17 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
             if (detail.getActivityEnd().before(now)) {
                 return false;
             }
-            if (detail.getActivityStart().before(now)) {
+            if (detail.getActivityStart().after(now)) {
                 activityPlan.setActivityStart(now);
             }
+            activityPlan.setActivityState(activityState);
+        } else {
+            activityPlan.setActivityState(2);
+            //取消活动所有订单
+            cancelActivityOrder(detail);
         }
 
         activityPlan.setId(activityId);
-        activityPlan.setActivityState(activityState);
         activityPlan.setUpdateBy(id);
         activityPlan.setUpdateTime(new Date());
 
@@ -177,6 +184,9 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
     @Override
     public MusicActivityVo getActivityInfo(Long activityPlanId, SysUser user) {
         ActivityPlan activityPlan = this.getById(activityPlanId);
+        if (activityPlan.getActivityState() != 1) {
+            activityPlan.setActivityState(0);
+        }
 
         MusicActivityVo activityVo = new MusicActivityVo();
         BeanUtils.copyProperties(activityPlan, activityVo);
@@ -329,6 +339,15 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
                 cancelActivityOrder(activityPlan);
             }
         }
+        //活动发奖
+        List<ActivityPlan> rewardList = baseMapper.activityReward();
+        for (ActivityPlan activityPlan : rewardList) {
+            List<ActivityUserReward> activityUserRewardList = baseMapper.getUserReward(activityPlan.getId(), activityPlan.getActivityType().getCode());
+            activityUserRewardService.saveBatch(activityUserRewardList);
+            //活动置为已发奖
+            activityPlan.setRewardFlag(1);
+            updateById(activityPlan);
+        }
     }
 
     private void cancelActivityOrder(ActivityPlan activityPlan) {
@@ -359,7 +378,7 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
             receivers.put(userId, user.getPhone());
 
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.ACTIVITY_JOIN_MESSAGE, receivers, null,
-                    0, null, ClientEnum.STUDENT.getCode(), user.getUsername(), activityName);
+                    0, null, ClientEnum.STUDENT.getCode(), activityName);
 
         } catch (Exception e) {
             log.error("活动参与发送消息失败--> {}", e.fillInStackTrace());
@@ -375,7 +394,7 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
         ActivityPlan activityPlan = getById(planId);
 
         if (activityPlan.getActivityState() == 0) {
-            throw new BizException("活动已停止");
+            throw new BizException("活动已结束");
         }
         if (new Date().compareTo(activityPlan.getActivityStart()) < 0) {
             throw new BizException("活动未开始");

+ 9 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.ActivityPlanDao;
 import com.yonge.cooleshow.biz.dal.dto.ActivityRewardDto;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
@@ -18,6 +19,7 @@ import com.yonge.cooleshow.biz.dal.service.ActivityRewardService;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 
@@ -45,18 +47,21 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean submit(ActivityRewardDto activityReward) {
+    public Boolean submit(ActivityRewardDto activityReward, SysUser user) {
+        ActivityPlan activityPlan = new ActivityPlan();
+        activityPlan.setId(activityReward.getActivityId());
         //更改活动状态
         if(activityReward.getDraftFlag() == 0){
-            ActivityPlan activityPlan = new ActivityPlan();
-            activityPlan.setId(activityReward.getActivityId());
             activityPlan.setDraftFlag(activityReward.getDraftFlag());
-            activityPlanDao.updateById(activityPlan);
         }
+        activityPlan.setUpdateBy(user.getId());
+        activityPlanDao.updateById(activityPlan);
 
         if(null == activityReward.getId()){
+            activityReward.setCreateBy(user.getId());
             return createActivityReward(activityReward);
         }else{
+            activityReward.setUpdateBy(user.getId());
             return updateActivityReward(activityReward);
         }
     }

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java

@@ -358,6 +358,9 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         boolean courseTypeFlag = CourseScheduleEnum.existCourseType(dto.getCourseType(), "课程类型不正确!").equals(CourseScheduleEnum.PRACTICE);
         //先自校验传入时间是否交集
         List<CourseTimeEntity> timeList = dto.getTimeList();
+        if (CollectionUtils.isEmpty(timeList)) {
+            throw new BizException("课程时间不能为空");
+        }
         if (timeList.size() > 1) {
             for (int i = 0; i < timeList.size(); i++) {
                 if (i == timeList.size() - 1) {

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -2043,11 +2043,13 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             e.printStackTrace();
         }
 
-        //清除统计缓存
         for (Long studentId : studentIds) {
+            //清除学生缓存
             redissonClient.getBucket(CacheNameEnum.STUDENT_TOTAL.getRedisKey(studentId)).delete();
+            //发生推送通知
             pianoSend(teacherId, studentId);
         }
+        //清除老师缓存
         redissonClient.getBucket(CacheNameEnum.TEACHER_TOTAL.getRedisKey(teacherId)).delete();
     }
 

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java

@@ -274,8 +274,8 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         String roomTitle = WrapperUtil.toStr(param, "roomTitle", "房间标题不能为空!");
         String liveRemark = WrapperUtil.toStr(param, "liveRemark", "直播间描述不能为空!");
         Integer liveTime = WrapperUtil.toInt(param, "liveTime", "请选择直播时长!");
-        if (roomTitle.length() > 12) {
-            throw new BizException("房间标题不能超出20个字");
+        if (roomTitle.length() > 20) {
+            throw new BizException("直播标题不能超出20个字");
         }
         Date liveStartTime = new Date();
         Date liveEndTime = DateUtil.addMinutes(liveStartTime, liveTime);

+ 16 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java

@@ -85,6 +85,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
     private SysUserFeignService sysUserFeignService;
 
     @Autowired
+    private TeacherTotalService totalService;
+
+    @Autowired
     private SysMessageService sysMessageService;
 
     @Autowired
@@ -842,6 +845,13 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         teacherMusicSheetListVo.setUserId(teacherVo.getUserId());
         teacherMusicSheetListVo.setEntryFlag(teacherVo.getEntryFlag());
         teacherMusicSheetListVo.setMusicianFlag(teacherVo.getMusicianFlag());
+        teacherMusicSheetListVo.setTag(teacherVo.getTag());
+
+        TeacherTotal total = totalService.getTotalById(detail.getUserId());
+        if (total != null) {
+            teacherMusicSheetListVo.setFansNum(total.getFansNum());
+        }
+        teacherMusicSheetListVo.setIsVip(teacherVo.getIsVip());
 
         if (sysUser != null) {
             // 老师关注
@@ -865,6 +875,12 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         musicSheetSearch.setPage(1);
         musicSheetSearch.setRows(5);
         List<MusicSheetVo> musicSheetVos = baseMapper.selectPage(PageUtil.getPage(musicSheetSearch), musicSheetSearch);
+        musicSheetVos = musicSheetVos .stream() .filter(musicAlbumVo -> !musicAlbumVo.getId()
+                                                              .equals(musicSheetId))
+                                                             .collect(Collectors.toList());
+        if (musicSheetVos.size() > 4) {
+            musicSheetVos = musicSheetVos.subList(0,4);
+        }
         teacherMusicSheetListVo.setMusicSheetList(musicSheetVos);
 
         musicSheetWebsiteDetailVo.setTeacher(teacherMusicSheetListVo);

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -118,6 +118,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         teacherHomeVo.setIdCardNo(ValueUtil.fuzzyIdCard(teacherHomeVo.getIdCardNo()));
         teacherHomeVo.setPhone(ValueUtil.fuzzyMobile(teacherHomeVo.getPhone()));
         teacherHomeVo.setHeardUrl(teacher.getAvatar());
+        teacherHomeVo.setIsVip(teacher.getIsVip());
         int num = DateUtil.daysBetween(new Date(), teacher.getMembershipEndTime());
         teacherHomeVo.setMembershipDays(num < 0 ? 0 : num);
         if (YesOrNoEnum.YES.equals(teacher.getEntryFlag())) {

+ 9 - 13
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderPaymentServiceImpl.java

@@ -107,21 +107,17 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
             param.setPaymentNo(orderPayment.getPaymentNo());
             param.setReason(reason);
 
-            try {
-                BaseResult<ClosePayment> responseResult = paymentClient.closePayment(param);
-                log.info("关单返回: {}", JSONObject.toJSONString(responseResult));
-                if (!responseResult.getStatus()) {
-                    orderPayment.setCloseStatus(TradeStatusEnum.failed);
-                    orderPayment.setCloseFailMsg(responseResult.getMsg());
+            BaseResult<ClosePayment> responseResult = paymentClient.closePayment(param);
+            log.info("关单返回: {}", JSONObject.toJSONString(responseResult));
+            if (!responseResult.getStatus()) {
+                orderPayment.setCloseStatus(TradeStatusEnum.failed);
+                orderPayment.setCloseFailMsg(responseResult.getMsg());
+            } else {
+                if (responseResult.getData().getHasNotify()) {
+                    orderPayment.setCloseStatus(TradeStatusEnum.pending);
                 } else {
-                    if (responseResult.getData().getHasNotify()) {
-                        orderPayment.setCloseStatus(TradeStatusEnum.pending);
-                    } else {
-                        orderPayment.setCloseStatus(TradeStatusEnum.succeeded);
-                    }
+                    orderPayment.setCloseStatus(TradeStatusEnum.succeeded);
                 }
-            } catch (Exception e) {
-                e.printStackTrace();
             }
         }
         updateById(orderPayment);

+ 22 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -210,8 +210,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         OrderSearch query = new OrderSearch();
         query.setStatus("WAIT_PAY,PAYING");
         List<UserOrderVo> userOrderVos = selectAllList(query);
-        for (UserOrderVo userOrderVo : userOrderVos) {
-            testOrderSuccess(userOrderVo);
+         for (UserOrderVo userOrderVo : userOrderVos) {
+             DistributedLock.of(redissonClient)
+                     .runIfLockCanGet(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(userOrderVo.getOrderNo())
+                             , () -> testOrderSuccess(userOrderVo.getOrderNo()), 60L, TimeUnit.SECONDS);
         }
     }
 
@@ -227,7 +229,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void setOrderStatus(String orderNo, OrderStatusEnum orderStatus) {
+    public Boolean setOrderStatus(UserOrder param) {
+        String orderNo = param.getOrderNo();
+        OrderStatusEnum orderStatus = param.getStatus();
+
         UserOrderVo detail = detail(orderNo, null);
         if (OrderStatusEnum.WAIT_PAY.equals(detail.getStatus())
                 || OrderStatusEnum.PAYING.equals(detail.getStatus())) {
@@ -239,9 +244,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
                 doOrderCancel(detail, orderStatus, "测试接口-订单交易失败");
             }
             if (OrderStatusEnum.PAID.equals(orderStatus)) {
-                testOrderSuccess(detail);
+                testOrderSuccess(detail.getOrderNo());
             }
         }
+        return true;
     }
 
 
@@ -907,7 +913,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             //获取当前活动的分润比例
             ActivityPlan byId = activityPlanService.getById(bizId);
             if (null != byId && null != byId.getShareRate()) {
-                return byId.getShareRate();
+                return byId.getShareRate().divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
             }
         }
         return BigDecimal.ZERO;
@@ -951,10 +957,19 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public void testOrderSuccess(UserOrderVo detail) {
-        if (null == detail || StringUtil.isEmpty(detail.getOrderNo())) {
+    public void testOrderSuccess(String orderNo) {
+        if (StringUtil.isEmpty(orderNo)) {
+            return;
+        }
+        UserOrderVo detail = detail(orderNo, null);
+        if (null == detail) {
             return;
         }
+        if (!OrderStatusEnum.WAIT_PAY.equals(detail.getStatus())
+                && !OrderStatusEnum.PAYING.equals(detail.getStatus())) {
+            return;
+        }
+
         //关闭当前正在支付的订单
         orderPaymentService.closePaymentAndReqOpen(detail.getOrderNo(), "交易取消");
 

+ 18 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java

@@ -29,6 +29,7 @@ import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.string.MessageFormatter;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
+import io.netty.util.internal.StringUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -81,6 +82,14 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
      */
     @Override
     public IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch query) {
+        if(!StringUtil.isNullOrEmpty(query.getAuditStatus())){
+            if(query.getAuditStatus().equals("OUT_SALE")){
+                query.setAuditStatus(null);
+                query.setShelvesFlag(0);
+            }else{
+                query.setShelvesFlag(1);
+            }
+        }
         return page.setRecords(baseMapper.selectPage(page, query));
     }
 
@@ -361,6 +370,15 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
     @Override
     public IPage<LessonGroupVo> selectLessonGroup(IPage<LessonGroupVo> page, VideoLessonGroupSearch query) {
         query.setAuditStatus(AuthStatusEnum.PASS.getCode());
+
+        if(!StringUtil.isNullOrEmpty(query.getAuditStatus())){
+            if(query.getAuditStatus().equals("OUT_SALE")){
+                query.setAuditStatus(null);
+                query.setShelvesFlag(0);
+            }else{
+                query.setShelvesFlag(1);
+            }
+        }
         return page.setRecords(baseMapper.selectLessonGroup(page, query));
     }
 

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetDetailVo.java

@@ -43,9 +43,20 @@ public class MusicSheetDetailVo extends MusicSheet {
     @ApiModelProperty("声部code")
     private String code;
 
+    @ApiModelProperty("声部频率")
+    private Integer aiDefaultFrequency;
+
     @ApiModelProperty("审核理由")
     private String reason;
 
+    public Integer getAiDefaultFrequency() {
+        return aiDefaultFrequency;
+    }
+
+    public void setAiDefaultFrequency(Integer aiDefaultFrequency) {
+        this.aiDefaultFrequency = aiDefaultFrequency;
+    }
+
     public String getOrderNo() {
         return orderNo;
     }

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherAuthEntryRecordVo.java

@@ -31,6 +31,17 @@ public class TeacherAuthEntryRecordVo extends TeacherAuthEntryRecord {
     @ApiModelProperty("审核人 ")
     private String verifyUser;
 
+    @ApiModelProperty("用户名")
+    private String username;
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
     public String getRealName() {
         return realName;
     }

+ 26 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherMusicSheetListVo.java

@@ -18,6 +18,9 @@ public class TeacherMusicSheetListVo {
     @ApiModelProperty("老师id")
     private Long userId;
 
+    @ApiModelProperty("老师点亮图标 STYLE:个人风采 VIDEO:视频课 LIVE:直播课,MUSIC:曲目 ")
+    private String tag;
+
     @ApiModelProperty("上传老师名称")
     private String userName;
 
@@ -31,14 +34,34 @@ public class TeacherMusicSheetListVo {
     private YesOrNoEnum musicianFlag;
 
     @ApiModelProperty("粉丝数")
-    private Long fansNum;
+    private Integer fansNum;
 
     @ApiModelProperty("是否关注 0 : 否 1:是")
     private YesOrNoEnum star = YesOrNoEnum.NO;
 
+    @ApiModelProperty(value = "是否会员 0否 1是")
+    private YesOrNoEnum isVip;
+
     @ApiModelProperty("老师曲目 默认最新的5个")
     private List<MusicSheetVo> musicSheetList;
 
+
+    public String getTag() {
+        return tag;
+    }
+
+    public void setTag(String tag) {
+        this.tag = tag;
+    }
+
+    public YesOrNoEnum getIsVip() {
+        return isVip;
+    }
+
+    public void setIsVip(YesOrNoEnum isVip) {
+        this.isVip = isVip;
+    }
+
     public YesOrNoEnum getStar() {
         return star;
     }
@@ -87,11 +110,11 @@ public class TeacherMusicSheetListVo {
         this.musicianFlag = musicianFlag;
     }
 
-    public Long getFansNum() {
+    public Integer getFansNum() {
         return fansNum;
     }
 
-    public void setFansNum(Long fansNum) {
+    public void setFansNum(Integer fansNum) {
         this.fansNum = fansNum;
     }
 

+ 25 - 36
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityEvaluationMapper.xml

@@ -53,21 +53,10 @@
         <include refid="selectSql"/>
     </select>
 
-    <select id="selectUnjoinMusicIds" resultType="java.lang.Long">
-        select t.id_ from music_sheet t
-        where t.id_ IN
-        <foreach collection="musicSheetIds" item="item" open="(" separator="," close=")">
-            #{item}
-        </foreach>
-        and not exists (
-            select 1 from activity_evaluation e where e.activity_id_ = #{activityId} and t.id_ = e.music_sheet_id_
-        )
-    </select>
-
     <insert id="addBatch">
-        insert into activity_evaluation (activity_id_, music_sheet_id_) values
+        insert into activity_evaluation (activity_id_,create_by_, music_sheet_id_) values
         <foreach collection="musicSheetIds" item="item" separator="," index="index">
-            (#{activityId,jdbcType=BIGINT},#{item,jdbcType=BIGINT})
+            (#{activityId,jdbcType=BIGINT},#{userId,jdbcType=BIGINT},#{item,jdbcType=BIGINT})
         </foreach>
     </insert>
 
@@ -85,7 +74,7 @@
         left join music_sheet ms on ms.id_ = ae.music_sheet_id_
         left join subject s on s.id_ = ms.music_subject_
         <where>
-            ms.del_flag_ = 0 and ms.state_ = 1
+            ms.del_flag_ = 0
             <if test="activityPlanId != null">
                 and ae.activity_id_ = #{activityPlanId}
             </if>
@@ -93,32 +82,32 @@
     </select>
 
     <select id="selectActivityUser" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityMusicVo">
-        select t.score
-        ,t.username_ as username
-        ,t.avatar_ as userAvatar
+        select t2.score
+        ,t2.username_ as username
+        ,t2.avatar_ as userAvatar
         ,s.name_ as userSubject
-        ,t.evaluationId
-        ,t.userId
+        ,t2.evaluationId
+        ,t2.userId
         from
-        (select
+        (select aem2.evaluation_id_ as evaluationId
+            ,su.id_ as userId
+            ,su.username_
+            ,su.avatar_
+            ,t.score
+        from (select
             max(aem.score_) as score,
-            aem.evaluation_id_,
-            aem.user_id_,
-        su.username_,
-        su.avatar_,
-        su.id_ as userId,
-        aem.evaluation_id_ as evaluationId
+            aem.evaluation_id_
+            from  activity_evaluation_record aem
+            where
+                aem.score_ is not null   and aem.activity_id_ = #{activityPlanId}
+            group by aem.evaluation_id_
+                       ) t
+            left join activity_evaluation_record aem2 on aem2.score_ = t.score and t.evaluation_id_ = aem2.evaluation_id_
+            left join sys_user su on su.id_ = aem2.user_id_
+            where aem2.activity_id_ = #{activityPlanId} and su.del_flag_ = 0 group by t.score,t.evaluation_id_
 
-        from  activity_evaluation_record aem
-        left join sys_user su on su.id_ = aem.user_id_
-        <where>
-            su.del_flag_ = 0 and aem.score_ is not null
-            <if test="activityPlanId != null">
-                and aem.activity_id_ = #{activityPlanId}
-            </if>
-        </where>
-        group by aem.evaluation_id_) t
-        left join student stu on stu.user_id_ = t.user_id_
+        ) t2
+        left join student stu on stu.user_id_ = t2.userId
         left join subject s on s.id_ = stu.subject_id_
 
     </select>

+ 39 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanMapper.xml

@@ -41,7 +41,7 @@
         , t.registration_price_ as registrationPrice
         , t.share_rate_ as shareRate
         , t.draft_flag_ as draftFlag
-        , t.activity_state_ as activityState
+        , if(t.activity_state_ = 1, 1, 0) as activityState
         , t.create_time_ as createTime
         , t.create_by_ as createBy
         , t.update_time_ as updateTime
@@ -70,13 +70,18 @@
                 and t.draft_flag_ = #{param.draftFlag}
             </if>
             <if test="param.activityState != null">
-                and t.activity_state_ = #{param.activityState}
+                <if test="param.activityState == 0">
+                    and (t.activity_state_ = 0 or t.activity_state_ = 2)
+                </if>
+                <if test="param.activityState == 1">
+                    and t.activity_state_ = 1
+                </if>
             </if>
             <if test="param.startTime !=null">
-                <![CDATA[AND t.activity_end_ >= #{param.startTime} ]]>
+                and t.activity_start_ &gt;= #{param.startTime}
             </if>
             <if test="param.endTime !=null">
-                <![CDATA[AND t.activity_start_ <= #{param.endTime} ]]>
+                and t.activity_end_ &lt;= #{param.endTime}
             </if>
         </where>
         order by t.id_ desc
@@ -96,4 +101,34 @@
             or (t.activity_end_ &lt;= now() and activity_state_ = 1)
         )
     </select>
+
+    <select id="activityReward" resultType="com.yonge.cooleshow.biz.dal.entity.ActivityPlan">
+        select <include refid="baseColumns"/> from activity_plan t where t.reward_flag_ = 0 and t.activity_end_ &lt;= now()
+    </select>
+
+    <select id="getUserReward" resultType="com.yonge.cooleshow.biz.dal.entity.ActivityUserReward">
+        <if test="null != activityType and 'EVALUATION' == activityType">
+            select
+                a.activity_id_ as activityId,
+                a.evaluation_id_ as bizId,
+                b.user_id_ as userId,
+                c.id_ as rewardId
+            from (
+                select
+                    a.activity_id_,a.evaluation_id_,a.score_,min(b.create_time_) as create_time_
+                from(
+                    select
+                        activity_id_,evaluation_id_, max(score_) as score_
+                    from activity_evaluation_record where activity_id_ = #{activityPlanId} and score_ is not null
+                    group by activity_id_,evaluation_id_
+                ) a
+                left join activity_evaluation_record b on a.activity_id_ = b.activity_id_ and a.evaluation_id_ = b.evaluation_id_ and a.score_ = b.score_
+                GROUP BY a.activity_id_,a.evaluation_id_,a.score_
+            ) a
+            left join activity_evaluation_record b
+                on a.activity_id_ = b.activity_id_ and a.evaluation_id_ = b.evaluation_id_
+                and a.score_ = b.score_ and a.create_time_ = b.create_time_
+            left join activity_reward c on a.activity_id_ = c.activity_id_
+        </if>
+    </select>
 </mapper>

+ 2 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityRegistrationMapper.xml

@@ -52,8 +52,8 @@
             left join (
                 select
                     ar.activity_id_,aer.user_id_,
-                    group_concat(ms.music_sheet_name_) as music_sheet_name_,
-                    count(aer.id_) as num_,
+                    group_concat(DISTINCT ms.music_sheet_name_) as music_sheet_name_,
+                    sum(if(aer.score_ is null, 0, 1)) as num_,
                     max(aer.score_) as max_score_
                 from activity_registration ar
 		        left join activity_evaluation_record aer on ar.activity_id_ = aer.activity_id_ and ar.user_id_ = aer.user_id_

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -613,7 +613,7 @@
         LEFT JOIN sys_user u ON g.teacher_id_=u.id_
         LEFT JOIN `subject` s ON g.lesson_subject_=s.id_
         LEFT JOIN (SELECT video_lesson_group_id_ ,COUNT(1) AS count_ FROM video_lesson_purchase_record WHERE order_status_='PAID' GROUP BY video_lesson_group_id_) r ON g.id_= r.video_lesson_group_id_
-        WHERE u.del_flag_ = 0 and g.audit_status_='PASS' and #{appAuditVersion} = g.audit_version_
+        WHERE u.del_flag_ = 0 and g.audit_status_='PASS' and g.shelves_flag_ = 1 and #{appAuditVersion} = g.audit_version_
         ORDER BY g.create_time_ DESC LIMIT 4
     </select>
     <select id="selectRecentCourses" resultType="com.yonge.cooleshow.biz.dal.vo.StudentHomePage$RecentCourses">

+ 2 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleRecordMapper.xml

@@ -28,7 +28,7 @@
     <select id="selectConsumeTimeList" resultType="com.yonge.cooleshow.biz.dal.vo.CourseScheduleRecordVo">
         SELECT
             s.id_ AS courseId,
-            g.name_ AS groupName,
+            CONCAT(g.name_,'-第',s.class_num_,'课') AS groupName,
             g.subject_id_ AS subjectId,
             sb.name_ AS subjectName,
             s.status_ AS `status`,
@@ -73,7 +73,7 @@
         s.end_time_ AS endTime,
         s.single_course_time_ AS singleCourseTime,
         a.count_ AS studentCount,
-        (CASE WHEN s.status_ = 'NOT_START' THEN 0 ELSE ( a.count_ + 1 )*(a.count_)* s.single_course_time_ END) AS consumTime,
+        (CASE WHEN s.status_ = 'NOT_START' THEN 0 ELSE (a.count_)* s.single_course_time_ END) AS consumTime,
         i.id_ AS imGroupId
         FROM course_schedule s
         LEFT JOIN course_group g ON s.course_group_id_ = g.id_

+ 27 - 28
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicAlbumMapper.xml

@@ -45,11 +45,11 @@
         ,(select group_concat(s.name_) from subject s
         where find_in_set(s.id_,t.subject_id_) and s.del_flag_ = 0 ) as subjectNames
         ,(select count(1) as num
-        from album_music_relate amr
-        join music_sheet ms on amr.music_sheet_id_ = ms.id_
-        left join sys_user su on su.id_ = ms.user_id_
-        where ms.del_flag_ = 0 and ms.state_ = 1 and ms.audit_status_ = 'PASS' and su.del_flag_ = 0
-        and amr.album_id_ = t.id_) as musicSheetCount
+            from album_music_relate amr
+            join music_sheet ms on amr.music_sheet_id_ = ms.id_
+            left join sys_user su on su.id_ = ms.user_id_
+            where ms.del_flag_ = 0 and ms.state_ = 1 and ms.audit_status_ = 'PASS' and su.del_flag_ = 0
+            and amr.album_id_ = t.id_) as musicSheetCount
         ,t2.num as albumFavoriteCount
         from music_album t
         left join (select count(1) as num,af.album_id_ from album_favorite af
@@ -166,23 +166,23 @@
 
     <select id="selectMusicAlbumById" resultType="com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo">
         select <include refid="Base_Column_List"/>
-        ,(select group_concat(mt.name_) from music_tag mt
-        where find_in_set(mt.id_,t.album_tag_) and mt.del_flag_ = 0 and mt.state_ = 1) as musicTagNames
-        ,(select group_concat(s.name_) from subject s
-        where find_in_set(s.id_,t.subject_id_) and s.del_flag_ = 0 ) as subjectNames
-        , t1.num as musicSheetCount
-        ,t2.num as albumFavoriteCount
+            ,(select group_concat(mt.name_) from music_tag mt
+            where find_in_set(mt.id_,t.album_tag_) and mt.del_flag_ = 0 and mt.state_ = 1) as musicTagNames
+            ,(select group_concat(s.name_) from subject s
+            where find_in_set(s.id_,t.subject_id_) and s.del_flag_ = 0 ) as subjectNames
+            , (
+                select count(1) as num from album_music_relate amr
+                join music_sheet ms on amr.music_sheet_id_ = ms.id_
+                left join sys_user su on su.id_ = ms.user_id_
+                where ms.del_flag_ = 0 and ms.state_ = 1 and ms.audit_status_ = 'PASS' and su.del_flag_ = 0
+                and amr.album_id_ = t.id_
+            ) as musicSheetCount
+            ,(
+                select count(1) as num from album_favorite af
+                left join sys_user su on af.user_id_ = su.id_
+                where su.del_flag_ = 0 and af.album_id_ = t.id_
+            ) as albumFavoriteCount
         from music_album t
-        left join (select count(1) as num,amr.album_id_
-            from album_music_relate amr
-            join music_sheet ms on amr.music_sheet_id_ = ms.id_
-            left join sys_user su on su.id_ = ms.user_id_
-            where ms.del_flag_ = 0 and ms.state_ = 1 and ms.audit_status_ = 'PASS' and su.del_flag_ = 0
-            group by amr.album_id_) t1 on t1.album_id_ = t.id_
-        left join (select count(1) as num,af.album_id_ from album_favorite af
-            left join sys_user su on af.user_id_ = su.id_
-            where su.del_flag_ = 0 group by af.album_id_
-        ) t2 on t2.album_id_ = t.id_
         where t.id_ = #{musicAlbumId}
     </select>
 
@@ -192,15 +192,14 @@
         where find_in_set(mt.id_,t.album_tag_) and mt.del_flag_ = 0 and mt.state_ = 1) as musicTagNames
         ,(select group_concat(s.name_) from subject s
         where find_in_set(s.id_,t.subject_id_) and s.del_flag_ = 0 ) as subjectNames
-        ,if( t1.num>0,t1.num,0) as musicSheetCount
+        ,(select count(1) as num
+        from album_music_relate amr
+        join music_sheet ms on amr.music_sheet_id_ = ms.id_
+        left join sys_user su on su.id_ = ms.user_id_
+        where ms.del_flag_ = 0 and ms.state_ = 1 and ms.audit_status_ = 'PASS' and su.del_flag_ = 0
+       and amr.album_id_ = t.id_) as musicSheetCount
         ,if(t2.num >0,t2.num,0) as albumFavoriteCount
         from music_album t
-        left join (select count(1) as num,amr.album_id_
-            from album_music_relate amr
-            join music_sheet ms on amr.music_sheet_id_ = ms.id_
-            left join sys_user su on su.id_ = ms.user_id_
-            where ms.del_flag_ = 0 and ms.state_ = 1 and ms.audit_status_ = 'PASS' and su.del_flag_ = 0
-        group by amr.album_id_) t1 on t1.album_id_ = t.id_
         left join (select count(1) as num,af.album_id_ from album_favorite af
             left join sys_user su on af.user_id_ = su.id_
             where su.del_flag_ = 0 group by af.album_id_

+ 20 - 9
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -136,7 +136,7 @@
     <select id="selectAlbumDetailPage" resultType="com.yonge.cooleshow.biz.dal.vo.MusicSheetVo">
         select distinct <include refid="Base_Column_List"/>
         ,(select group_concat(mt.name_) from music_tag mt
-        where find_in_set(mt.id_,t.music_tag_) and mt.del_flag_ = 0  and mt.state_ = 1) as musicTagNames
+            where find_in_set(mt.id_,t.music_tag_) and mt.del_flag_ = 0  and mt.state_ = 1) as musicTagNames
         ,(select group_concat(s.name_) from subject s
             where find_in_set(s.id_,t.music_subject_) and s.del_flag_ = 0 ) as subjectNames
         ,(select count(1) from music_favorite f
@@ -204,6 +204,7 @@
             ) as musicTagNames
             ,s2.name_ as subjectNames
             ,s2.code_ as code
+            ,s2.ai_default_frequency_ as aiDefaultFrequency
         FROM music_sheet t
         left join music_sheet_accompaniment msa on msa.music_sheet_id_ = t.id_
         left join sys_user su on t.create_by_ = su.id_
@@ -251,6 +252,7 @@
         <result column="code" jdbcType="VARCHAR" property="code"/>
         <result column="reason" jdbcType="VARCHAR" property="reason"/>
         <result column="notation" jdbcType="VARCHAR" property="notation"/>
+        <result column="aiDefaultFrequency" jdbcType="VARCHAR" property="aiDefaultFrequency"/>
         <collection property="background" ofType="com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment">
             <id column="accompanimentId" jdbcType="BIGINT" property="id"/>
             <result column="accompanimentMusicSheetId" jdbcType="BIGINT" property="musicSheetId"/>
@@ -298,7 +300,11 @@
                 and #{param.auditVersion} = t.audit_version_
             </if>
         </where>
-        order by t.top_flag_ desc, t.sort_number_ desc, t2.num desc,  t.id_ desc
+        order by
+        <if test="param.myself == null or param.myself == false ">
+            t.top_flag_ desc, t.sort_number_ desc, t2.num desc,
+        </if>
+        t.id_ desc
     </select>
 
     <select id="selectMyMusicPage" resultType="com.yonge.cooleshow.biz.dal.vo.MusicSheetVo">
@@ -520,15 +526,12 @@
     </select>
 
     <select id="selectMusicNum" resultType="com.yonge.cooleshow.biz.dal.vo.HomeMusicSheetVo">
-
         select
             sum(if(ms.source_type_ = 'PLATFORM',1,0)) as musicSheetPlatformCount,
             sum(if(ms.source_type_ = 'TEACHER',1,0)) as musicSheetTeacherCount,
             count(1) as musicSheetCount
         from music_sheet ms
         where ms.state_ = 1 and ms.del_flag_ = 0 and ms.audit_status_ = 'PASS' and ms.charge_type_ = 'CHARGE'
-
-
     </select>
 
     <select id="selectPayMusicSheet" resultType="com.yonge.cooleshow.biz.dal.vo.HomeMusicSheetVo$MusicSheetSmall">
@@ -548,7 +551,6 @@
         GROUP BY ms.id_
         ORDER BY count(DISTINCT pr.student_id_)  DESC,ms.id_ desc
         limit 5
-
     </select>
 
     <select id="selectTeacherCount" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherAuditMusicSheetVo">
@@ -560,7 +562,6 @@
         from
             music_sheet t
         where t.user_id_ = #{userId}
-
     </select>
 
     <select id="queryStudentTotal" resultType="com.yonge.cooleshow.biz.dal.vo.StudentTotalVo">
@@ -568,7 +569,7 @@
             t.user_id_ as userId,
             a.musicAlbumNum,
             b.musicSheetNum
-        from teacher t
+        from student t
         left join (
             select
                 user_id_, count(1) as musicAlbumNum
@@ -591,13 +592,18 @@
             </where>
             group by user_id_
         ) b on t.user_id_ = b.user_id_
+        <where>
+            <if test="null != userId">
+                and t.user_id_ = #{userId}
+            </if>
+        </where>
     </select>
 
     <select id="queryTeacherTotal" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherTotalVo">
         select
             t.user_id_ as userId,
             a.musicSheetNum as musicSheetNum
-        from student t
+        from teacher t
         left join (
             select
                 user_id_, count(1) as musicSheetNum
@@ -608,5 +614,10 @@
             </if>
             group by user_id_
         ) a on t.user_id_ = a.user_id_
+        <where>
+            <if test="null != userId">
+                and t.user_id_ = #{userId}
+            </if>
+        </where>
     </select>
 </mapper>

+ 6 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -11,6 +11,7 @@
         <result column="code_" property="code"/>
         <result column="parent_subject_id_" property="parentSubjectId"/>
         <result column="img_" property="img"/>
+        <result column="ai_default_frequency_" property="aiDefaultFrequency"/>
         <result column="desc_" property="desc"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
@@ -70,8 +71,8 @@
     <insert id="insert" parameterType="com.yonge.cooleshow.biz.dal.entity.Subject" useGeneratedKeys="true"
             keyColumn="id"
             keyProperty="id">
-        INSERT INTO subject (id_,name_,code_,parent_subject_id_,img_,create_time_,update_time_,desc_)
-        VALUES(#{id},#{name},#{code},#{parentSubjectId},#{img},now(),now(),#{desc})
+        INSERT INTO subject (id_,name_,code_,parent_subject_id_,img_,create_time_,update_time_,desc_,ai_default_frequency_)
+        VALUES(#{id},#{name},#{code},#{parentSubjectId},#{img},now(),now(),#{desc},#{aiDefaultFrequency})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -99,6 +100,9 @@
             <if test="desc != null">
                 desc_ = #{desc},
             </if>
+            <if test="aiDefaultFrequency != null">
+                ai_default_frequency_ = #{aiDefaultFrequency},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>

+ 2 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthEntryRecordMapper.xml

@@ -43,6 +43,7 @@
             ifnull(u.real_name_,u.username_) as realName,
             u.id_card_no_ as idCardNo,
             u.phone_ as phone,
+            u.username_ as username,
             u.gender_ as gender,
             v.username_ as verifyUser,
             (
@@ -82,6 +83,7 @@
             ifnull(u.real_name_,u.username_) as realName,
 			u.id_card_no_ as idCardNo,
 			u.phone_ as phone,
+            u.username_ as username,
 			u.gender_ as gender,
 			(
                 SELECT GROUP_CONCAT(name_ ORDER by locate(id_,t.subject_id_)) FROM subject WHERE FIND_IN_SET(id_,t.subject_id_)

+ 3 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

@@ -138,6 +138,9 @@
 			<if test="param.teacherId !=null">
 				AND g.teacher_id_ = #{param.teacherId}
 			</if>
+			<if test="param.auditVersion != null">
+				AND g.audit_version_ = #{param.auditVersion}
+			</if>
 			<if	test="param.lessonSubject != null and param.lessonSubject != ''">
 				AND g.lesson_subject_ = #{param.lessonSubject}
 			</if>

+ 1 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VideoLessonController.java

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonEvaluateSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonEvaluate;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonEvaluateService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
@@ -97,7 +98,6 @@ public class VideoLessonController extends BaseController {
     @ApiOperation(value = "查询视频课组")
     @PostMapping(value = "/selectGroup")
     public HttpResponseResult<PageInfo<LessonGroupVo>> page(@RequestBody VideoLessonGroupSearch query) {
-
         // 检查app版本
         query.setAuditVersion(appVersionInfoService.getAppAuditVersion(query.getPlatform(),query.getVersion()));
 

+ 2 - 3
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

@@ -129,8 +129,7 @@ public class MusicSheetController extends BaseController {
             query.setCreateBy(sysUser.getId());
             if (query.getAuditStatus() != null && AuthStatusEnum.PASS.getCode().equals(query.getAuditStatus().getCode())) {
                 query.setState(YesOrNoEnum.YES);
-            }
-            if (query.getAuditStatus() != null && AuthStatusEnum.OUT_SALE.getCode().equals(query.getAuditStatus().getCode())) {
+            } else if (query.getAuditStatus() != null && AuthStatusEnum.OUT_SALE.getCode().equals(query.getAuditStatus().getCode())) {
                 query.setState(YesOrNoEnum.NO);
                 query.setAuditStatus(AuthStatusEnum.PASS);
             }
@@ -147,7 +146,7 @@ public class MusicSheetController extends BaseController {
             query.setMyself(false);
         }
 
-        IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectPage(PageUtil.getPage(query), query);
+        IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectStudentPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(musicSheetVoIPage));
     }
 

+ 0 - 9
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupController.java

@@ -64,15 +64,6 @@ public class VideoLessonGroupController extends BaseController {
         if (sysUser == null || sysUser.getId() == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        if(!StringUtil.isNullOrEmpty(query.getAuditStatus())){
-            if(query.getAuditStatus().equals("UNSHELVES")){
-                query.setAuditStatus(null);
-                query.setShelvesFlag(0);
-            }else{
-                query.setShelvesFlag(1);
-            }
-        }
-
         if (query.getMyself() == null || query.getMyself()) {
             query.setTeacherId(sysUser.getId());
         } else {

+ 1 - 0
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/MusicSheetController.java

@@ -108,6 +108,7 @@ public class MusicSheetController extends BaseController {
             query.setState(YesOrNoEnum.YES);
         }
         query.setSourceType(SourceTypeEnum.TEACHER);
+        query.setMyself(true);
 
         IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectPage(PageUtil.getPage(query), query);
 

+ 23 - 0
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/TeacherController.java

@@ -5,7 +5,9 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.TeacherDto;
 import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.service.StudentStarService;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.MyFens;
 import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
@@ -31,6 +33,8 @@ public class TeacherController extends BaseController {
     @Autowired
     private TeacherService teacherService;
     @Autowired
+    private StudentStarService studentStarService;
+    @Autowired
     private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "我的-查询教师基本信息")
@@ -122,4 +126,23 @@ public class TeacherController extends BaseController {
         IPage<MyFens> pages = teacherService.queryMyFans(PageUtil.getPage(query), sysUser.getId());
         return succeed(PageUtil.pageInfo(pages));
     }
+
+    @ApiOperation(value = "关注/取消关注")
+    @GetMapping("/starOrUnStar")
+    public HttpResponseResult<Boolean> starOrUnStar(@ApiParam(value = "老师ID", required = true) @RequestParam("userId") Long userId,
+                                                    @ApiParam(value = "状态 0 取消关注 1 关注", required = true) @RequestParam("starStatus") Integer starStatus) {
+        if (null == userId) {
+            return failed("缺少老师ID");
+        }
+        YesOrNoEnum starStatusEnum = YesOrNoEnum.valueOf(starStatus);
+        if (null == starStatusEnum) {
+            return failed("缺少关注状态");
+        }
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return studentStarService.starOrUnStar(user.getId(), userId, starStatusEnum);
+    }
+
 }

+ 5 - 0
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenSubjectController.java

@@ -59,6 +59,11 @@ public class OpenSubjectController extends BaseController {
                 row.setParentSubjectName(map.get(row.getParentSubjectId()).getName());
             }
         });
+        List<Subject> collect = pageInfo.getRows()
+                                        .stream()
+                                        .filter(row -> row.getParentSubjectId() != null && row.getParentSubjectId() > 0)
+                                        .collect(Collectors.toList());
+        pageInfo.setRows(collect);
         return succeed(pageInfo);
     }
 }

+ 9 - 0
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenVideoGroupController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailVo;
@@ -36,6 +37,8 @@ public class OpenVideoGroupController extends BaseController {
     @Autowired
     private VideoLessonGroupDetailService videoLessonGroupDetailService;
 
+    @Autowired
+    private AppVersionInfoService appVersionInfoService;
     /**
     * @Description: 查询视频课组
     * @Author: cy
@@ -45,6 +48,9 @@ public class OpenVideoGroupController extends BaseController {
     @PostMapping(value = "/page")
     public HttpResponseResult<PageInfo<VideoLessonGroupVo>> page(@RequestBody VideoLessonGroupSearch query) {
         query.setAuditStatus(AuthStatusEnum.PASS.getCode());
+
+        // 检查app版本
+        query.setAuditVersion(appVersionInfoService.getAppAuditVersion(query.getPlatform(),query.getVersion()));
         IPage<VideoLessonGroupVo> pages = videoLessonGroupService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
     }
@@ -75,6 +81,9 @@ public class OpenVideoGroupController extends BaseController {
     @ApiOperation(value = "其他课程")
     @PostMapping("/otherLesson")
     public HttpResponseResult<List<VideoLessonGroupVo>> otherLesson(@RequestBody VideoLessonGroupSearch query) {
+
+        // 检查app版本
+        query.setAuditVersion(appVersionInfoService.getAppAuditVersion(query.getPlatform(),query.getVersion()));
         return succeed(videoLessonGroupService.selectPage(query));
     }
 }

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