|  | @@ -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)
 |