| 
					
				 | 
			
			
				@@ -112,7 +112,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean saveMp3AndAccompaniment(MusicSheetDto musicSheetDto, Long userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public boolean saveMp3AndAccompaniment(MusicSheetDto musicSheetDto, Long userId, Long originalMusicSheetId, Long lastMusicSheetId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         MusicSheet musicSheet = new MusicSheet(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BeanUtils.copyProperties(musicSheetDto, musicSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //保存主表 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -122,7 +122,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.saveOrUpdate(musicSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (musicSheet.getAuditStatus() == null || AuthStatusEnum.DOING.getCode().equals(musicSheet.getAuditStatus().getCode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            musicSheetAuthRecordService.setAuditDoing(musicSheet.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            musicSheetAuthRecordService.setAuditDoing(musicSheet.getId(), originalMusicSheetId, lastMusicSheetId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long sheetId = musicSheet.getId(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -369,20 +369,22 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("曲目已经过审批"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        boolean flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (musicSheetAuthRecordService.audit(param, userId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            musicSheet.setAuditStatus(param.getAuthStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            musicSheet.setUpdateBy(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            musicSheet.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (AuthStatusEnum.PASS.getCode().equals(param.getAuthStatus().getCode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                musicSheet.setState(YesOrNoEnum.YES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        boolean flag; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long originalMusicSheetId = musicSheetAuthRecordService.audit(param, userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheet.setAuditStatus(param.getAuthStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheet.setUpdateBy(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheet.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (AuthStatusEnum.PASS.getCode().equals(param.getAuthStatus().getCode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            musicSheet.setState(YesOrNoEnum.YES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 替换曲目id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            replaceMusicSheet(param, musicSheet, originalMusicSheetId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 修改老师标签 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                teacherService.setTeacherTag(musicSheet.getUserId(), TeacherTagEnum.MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 修改老师标签 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teacherService.setTeacherTag(musicSheet.getUserId(), TeacherTagEnum.MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            flag = this.updateById(musicSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        flag = this.updateById(musicSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 发送审核通知 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Long, String> receivers = new HashMap<>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -397,6 +399,29 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return flag; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void replaceMusicSheet(TeacherMusicSheetAuditReq param, MusicSheet musicSheet, Long originalMusicSheetId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!musicSheet.getId().equals(originalMusicSheetId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            musicSheet.setId(originalMusicSheetId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MusicSheet originalMusicSheet = getById(originalMusicSheetId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            originalMusicSheet.setId(param.getMusicSheetId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.saveOrUpdate(originalMusicSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 替换 伴奏 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<MusicSheetAccompaniment> musicSheetAccompanimentList = musicSheetAccompanimentService.getByMusicSheetId( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                                                              musicSheet.getId()).stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                                                      .peek(musicSheetAccompaniment -> musicSheetAccompaniment.setMusicSheetId( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                                                              originalMusicSheetId)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                                                      .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<MusicSheetAccompaniment> originalMusicSheetAccompanimentList = musicSheetAccompanimentService.getByMusicSheetId( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                                                                      originalMusicSheetId).stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                                                              .peek(musicSheetAccompaniment -> musicSheetAccompaniment.setMusicSheetId( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                                                                      musicSheet.getId())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                                                              .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            musicSheetAccompanimentList.addAll(originalMusicSheetAccompanimentList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            musicSheetAccompanimentService.saveOrUpdateBatch(musicSheetAccompanimentList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 发送曲目审核消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void sendMusicSheetAuditMessage(TeacherMusicSheetAuditReq param, MusicSheet musicSheet, Map<Long, String> receivers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (AuthStatusEnum.PASS.getCode().equals(param.getAuthStatus().getCode())) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -437,31 +462,30 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public boolean saveMusicSheet(MusicSheetDto musicSheetDto, Long userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         MusicSheet oldMusicSheet = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long originalMusicSheetId = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long lastMusicSheetId = musicSheetDto.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (musicSheetDto.getId() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             oldMusicSheet = getById(musicSheetDto.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 保存审核拒绝的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (musicSheetDto.getId() != null && AuthStatusEnum.DOING.getCode().equals(musicSheetDto.getAuditStatus().getCode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 保存删除的曲目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (oldMusicSheet.getAuditStatus().equals(AuthStatusEnum.UNPASS)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                oldMusicSheet.setId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (oldMusicSheet != null && !AuthStatusEnum.DOING.equals(oldMusicSheet.getAuditStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 oldMusicSheet.setDelFlag(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                this.save(oldMusicSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 删除的曲目的伴奏 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                musicSheetAccompanimentService.lambdaUpdate() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                              .eq(MusicSheetAccompaniment::getMusicSheetId,musicSheetDto.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                              .set(MusicSheetAccompaniment::getMusicSheetId,oldMusicSheet.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                              .update(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 审核拒绝的原因 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                musicSheetAuthRecordService.lambdaUpdate() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                           .eq(MusicSheetAuthRecord::getMusicSheetId,musicSheetDto.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                           .set(MusicSheetAuthRecord::getMusicSheetId,oldMusicSheet.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                           .update(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.saveOrUpdate(oldMusicSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<MusicSheetAuthRecord> list = musicSheetAuthRecordService.lambdaQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                             .eq(MusicSheetAuthRecord::getMusicSheetId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                                 musicSheetDto.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                             .list(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!CollectionUtils.isEmpty(list)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    originalMusicSheetId = list.get(0).getOriginalMusicSheetId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                musicSheetDto.setId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (musicSheetDto.getId() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (musicSheetDto.getId() != null && musicSheetDto.getSourceType().equals(SourceTypeEnum.PLATFORM)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             musicSheetAccompanimentService.delByMusicSheetId(musicSheetDto.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -480,7 +504,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (CollectionUtils.isEmpty(list)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 throw new BizException("mp3音频文件对应的主音或者伴奏文件没有提供"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return saveMp3AndAccompaniment(musicSheetDto, userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return saveMp3AndAccompaniment(musicSheetDto, userId,originalMusicSheetId,lastMusicSheetId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             MusicSheet musicSheet = new MusicSheet(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BeanUtils.copyProperties(musicSheetDto, musicSheet); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -489,7 +513,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             musicSheet.setState(YesOrNoEnum.NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.saveOrUpdate(musicSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (musicSheet.getAuditStatus() == null || AuthStatusEnum.DOING.getCode().equals(musicSheet.getAuditStatus().getCode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                musicSheetAuthRecordService.setAuditDoing(musicSheet.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                musicSheetAuthRecordService.setAuditDoing(musicSheet.getId(),originalMusicSheetId,lastMusicSheetId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return true; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -998,6 +1022,24 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public MusicSheetDetailVo auditDetail(Long authMusicSheetId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MusicSheetAuthRecord musicSheetAuthRecord = musicSheetAuthRecordService.getById(authMusicSheetId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MusicSheetDetailVo detail = detail(musicSheetAuthRecord.getMusicSheetId(), null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<MusicSheetDetailVo> musicSheetDetailVos = auditDetailList(authMusicSheetId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!CollectionUtils.isEmpty(musicSheetDetailVos)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            detail.setLastMusicSheet(musicSheetDetailVos.get(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return detail; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<MusicSheetDetailVo> auditDetailList(Long authMusicSheetId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MusicSheetAuthRecord musicSheetAuthRecord = musicSheetAuthRecordService.getById(authMusicSheetId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return baseMapper.auditDetailList(musicSheetAuthRecord.getOriginalMusicSheetId(),authMusicSheetId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private SysUser getSysUser(Long userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return Optional.ofNullable(userId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .map(sysUserFeignService::queryUserById) 
			 |