|  | @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.common.enums.SysUserType;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.common.enums.PostStatusEnum;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.dto.MusicSheetExport;
 | 
	
	
		
			
				|  | @@ -45,14 +45,15 @@ import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * MusicSheetService服务实现类
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * @author yzp
 | 
	
		
			
				|  |  | - * @date 2022-03-26 00:01:37
 | 
	
		
			
				|  |  |   * @version v1.0
 | 
	
		
			
				|  |  | + * @date 2022-03-26 00:01:37
 | 
	
		
			
				|  |  |   **/
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  | -public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet> implements MusicSheetService {
 | 
	
		
			
				|  |  | +public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet> implements MusicSheetService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private static final  Logger log = LoggerFactory.getLogger(MusicSheetServiceImpl.class);
 | 
	
		
			
				|  |  | +    private static final Logger log = LoggerFactory.getLogger(MusicSheetServiceImpl.class);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private MusicSheetDao musicSheetDao;
 | 
	
	
		
			
				|  | @@ -107,7 +108,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) {
 | 
	
		
			
				|  |  |          MusicSheet musicSheet = new MusicSheet();
 | 
	
		
			
				|  |  |          BeanUtils.copyProperties(musicSheetDto, musicSheet);
 | 
	
		
			
				|  |  |          //保存主表
 | 
	
	
		
			
				|  | @@ -130,7 +131,6 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public IPage<MusicSheetVo> selectPage(IPage<MusicSheetVo> page, MusicSheetSearch query) {
 | 
	
		
			
				|  |  |          return page.setRecords(baseMapper.selectPage(page, query));
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -138,7 +138,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |      public boolean state(Long id) {
 | 
	
		
			
				|  |  |          MusicSheet musicSheet = this.getById(id);
 | 
	
		
			
				|  |  |          if (musicSheet == null) {
 | 
	
		
			
				|  |  | -            throw  new BizException("未找到曲目信息");
 | 
	
		
			
				|  |  | +            throw new BizException("未找到曲目信息");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (YesOrNoEnum.NO.getCode().equals(musicSheet.getState().getCode())) {
 | 
	
		
			
				|  |  |              musicSheet.setState(YesOrNoEnum.YES);
 | 
	
	
		
			
				|  | @@ -172,14 +172,14 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |          musicSheetShareVo.setName(sysUser.getUsername());
 | 
	
		
			
				|  |  |          musicSheetShareVo.setAvatar(sysUser.getAvatar());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        String teacherMusicShareUrl= sysConfigService.findConfigValue(SysConfigConstant.TEACHER_MUSIC_SHEET_SHARE_URL);
 | 
	
		
			
				|  |  | +        String teacherMusicShareUrl = sysConfigService.findConfigValue(SysConfigConstant.TEACHER_MUSIC_SHEET_SHARE_URL);
 | 
	
		
			
				|  |  |          musicSheetShareVo.setUrl(MessageFormatter.arrayFormat(teacherMusicShareUrl, sysUser.getId()));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return musicSheetShareVo;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public MusicSheetDetailVo detail(Long id, SysUser sysUser,SysUserType userType) {
 | 
	
		
			
				|  |  | +    public MusicSheetDetailVo detail(Long id, SysUser sysUser,ClientEnum userType) {
 | 
	
		
			
				|  |  |          MusicSheetDetailVo detail = baseMapper.detail(id);
 | 
	
		
			
				|  |  |          if (detail == null) {
 | 
	
		
			
				|  |  |              throw new BizException("未找到曲目信息");
 | 
	
	
		
			
				|  | @@ -193,12 +193,18 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (ChargeTypeEnum.FREE.getCode().equals(detail.getChargeType().getCode())) {
 | 
	
		
			
				|  |  |              detail.setPlay(YesOrNoEnum.YES);
 | 
	
		
			
				|  |  | -        }  else if (SysUserType.STUDENT.getCode().equals(userType.getCode())) {
 | 
	
		
			
				|  |  | -            setStudentMusicSheet(sysUser.getId(), detail);
 | 
	
		
			
				|  |  | +        }  else if (ClientEnum.STUDENT.getCode().equals(userType.getCode())
 | 
	
		
			
				|  |  | +                || ClientEnum.TEACHER.getCode().equals(userType.getCode())) {
 | 
	
		
			
				|  |  | +            // 2022 7 20  老师也能购买曲目
 | 
	
		
			
				|  |  | +            if (ClientEnum.TEACHER.getCode().equals(userType.getCode()) && detail.getUserId().equals(sysUser.getId())) {
 | 
	
		
			
				|  |  | +                detail.setPlay(YesOrNoEnum.YES);
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                setMusicSheetPlay(sysUser.getId(), detail,userType);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              detail.setPlay(YesOrNoEnum.YES);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if (SysUserType.STUDENT.getCode().equals(userType.getCode())) {
 | 
	
		
			
				|  |  | +        if (ClientEnum.STUDENT.getCode().equals(userType.getCode())) {
 | 
	
		
			
				|  |  |              // 学生进入小酷Ai练习,添加一条练习记录
 | 
	
		
			
				|  |  |              musicSheetPracticeRecordService.addRecord(id, sysUser.getId());
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -208,16 +214,18 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 设置学生曲目信息
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  | -     * @param studentId 学生id
 | 
	
		
			
				|  |  | +     * 2022 7 20  老师也能购买曲目
 | 
	
		
			
				|  |  | +     *  @param studentId 学生id
 | 
	
		
			
				|  |  |       * @param detail 曲目详情
 | 
	
		
			
				|  |  | +     * @param userType 用户类型
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    private void setStudentMusicSheet(Long studentId, MusicSheetDetailVo detail) {
 | 
	
		
			
				|  |  | +    private void setMusicSheetPlay(Long studentId, MusicSheetDetailVo detail, ClientEnum userType) {
 | 
	
		
			
				|  |  |          detail.setPlay(YesOrNoEnum.NO);
 | 
	
		
			
				|  |  |          // 单曲购买 判断购买记录,有记录课播放
 | 
	
		
			
				|  |  |          if (ChargeTypeEnum.CHARGE.getCode().equals(detail.getChargeType().getCode())) {
 | 
	
		
			
				|  |  |              // 学生须判断是否能播放曲目
 | 
	
		
			
				|  |  |              MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase(
 | 
	
		
			
				|  |  | -                    studentId, detail.getId());
 | 
	
		
			
				|  |  | +                    studentId, detail.getId(),userType);
 | 
	
		
			
				|  |  |              if (musicSheetPurchaseRecord != null) {
 | 
	
		
			
				|  |  |                  detail.setOrderStatus(musicSheetPurchaseRecord.getOrderStatus());
 | 
	
		
			
				|  |  |                  detail.setOrderNo(musicSheetPurchaseRecord.getOrderNo());
 | 
	
	
		
			
				|  | @@ -225,11 +233,19 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |                      detail.setPlay(YesOrNoEnum.YES);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -        } else if  (ChargeTypeEnum.VIP.getCode().equals(detail.getChargeType().getCode())) {
 | 
	
		
			
				|  |  | +        } else if (ChargeTypeEnum.VIP.getCode().equals(detail.getChargeType().getCode())) {
 | 
	
		
			
				|  |  |              // 会员 判断是否为会员, 会员可播放
 | 
	
		
			
				|  |  | -            StudentVo studentVo = studentService.detail(studentId);
 | 
	
		
			
				|  |  | -            if (studentVo != null && YesOrNoEnum.YES.getCode().equals(studentVo.getIsVip().getCode())) {
 | 
	
		
			
				|  |  | -                detail.setPlay(YesOrNoEnum.YES);
 | 
	
		
			
				|  |  | +            // todo 老师会员判断
 | 
	
		
			
				|  |  | +            if (userType.equals(ClientEnum.STUDENT)) {
 | 
	
		
			
				|  |  | +                StudentVo studentVo = studentService.detail(studentId);
 | 
	
		
			
				|  |  | +                if (studentVo != null && YesOrNoEnum.YES.getCode().equals(studentVo.getIsVip().getCode())) {
 | 
	
		
			
				|  |  | +                    detail.setPlay(YesOrNoEnum.YES);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            } else if (userType.equals(ClientEnum.TEACHER)) {
 | 
	
		
			
				|  |  | +                TeacherVo teacher= teacherService.detail(studentId);
 | 
	
		
			
				|  |  | +                if (teacher != null && YesOrNoEnum.YES.getCode().equals(teacher.getIsVip().getCode())) {
 | 
	
		
			
				|  |  | +                    detail.setPlay(YesOrNoEnum.YES);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -272,26 +288,26 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public IPage<MusicSheetVo> myMusic(IPage<MusicSheetVo> page, StudentMusicSheetSearch query) {
 | 
	
		
			
				|  |  | -        return page.setRecords(baseMapper.selectMyMusicPage(page,query));
 | 
	
		
			
				|  |  | +        return page.setRecords(baseMapper.selectMyMusicPage(page, query));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public IPage<MusicSheetVo> favoriteMusic(IPage<MusicSheetVo> page, StudentMusicSheetSearch query) {
 | 
	
		
			
				|  |  | -        return page.setRecords(baseMapper.selectFavoriteMusicPage(page,query));
 | 
	
		
			
				|  |  | +        return page.setRecords(baseMapper.selectFavoriteMusicPage(page, query));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public IPage<MusicSheetVo> practiceMusic(IPage<MusicSheetVo> page, StudentMusicSheetSearch query) {
 | 
	
		
			
				|  |  |          // 预计最近练习表数据量会很多
 | 
	
		
			
				|  |  |          // 先找到最近练习的曲目id 在根据曲目id进行精确查找
 | 
	
		
			
				|  |  | -        IPage<Long> practiceMusicIdPage = musicSheetPracticeRecordService.selectPracticeMusic(query,page.getPages(),page.getSize());
 | 
	
		
			
				|  |  | +        IPage<Long> practiceMusicIdPage = musicSheetPracticeRecordService.selectPracticeMusic(query, page.getPages(), page.getSize());
 | 
	
		
			
				|  |  |          List<Long> practiceMusicIdList = practiceMusicIdPage.getRecords();
 | 
	
		
			
				|  |  |          if (CollectionUtils.isEmpty(practiceMusicIdList)) {
 | 
	
		
			
				|  |  |              page.setRecords(new ArrayList<>());
 | 
	
		
			
				|  |  |              return page;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // 构建分页信息
 | 
	
		
			
				|  |  | -        page.setRecords(baseMapper.selectPracticeMusicPage(query,practiceMusicIdList));
 | 
	
		
			
				|  |  | +        page.setRecords(baseMapper.selectPracticeMusicPage(query, practiceMusicIdList));
 | 
	
		
			
				|  |  |          page.setPages(practiceMusicIdPage.getPages());
 | 
	
		
			
				|  |  |          page.setCurrent(practiceMusicIdPage.getCurrent());
 | 
	
		
			
				|  |  |          page.setSize(practiceMusicIdPage.getSize());
 | 
	
	
		
			
				|  | @@ -301,17 +317,17 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public IPage<StudentMusicSheetOrderVo> selectStudentOrderPage(IPage<StudentMusicSheetOrderVo> page, StudentMusicSheetOrderSearch query) {
 | 
	
		
			
				|  |  | -        return page.setRecords(baseMapper.selectStudentOrderPage(page,query));
 | 
	
		
			
				|  |  | +        return page.setRecords(baseMapper.selectStudentOrderPage(page, query));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public IPage<TeacherMusicSheetVo> selectTeacherPage(IPage<TeacherMusicSheetVo> page, TeacherMusicSheetSearch query) {
 | 
	
		
			
				|  |  | -        return page.setRecords(baseMapper.selectTeacherPage(page,query));
 | 
	
		
			
				|  |  | +        return page.setRecords(baseMapper.selectTeacherPage(page, query));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public IPage<TeacherMusicSheetVo> selectAuditPage(IPage<TeacherMusicSheetVo> page, TeacherMusicSheetAuditSearch query) {
 | 
	
		
			
				|  |  | -        return page.setRecords(baseMapper.selectAuditPage(page,query));
 | 
	
		
			
				|  |  | +        return page.setRecords(baseMapper.selectAuditPage(page, query));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -320,31 +336,35 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          MusicSheet musicSheet = this.getById(param.getMusicSheetId());
 | 
	
		
			
				|  |  |          if (musicSheet == null) {
 | 
	
		
			
				|  |  | -            throw  new BizException("未找到曲目信息");
 | 
	
		
			
				|  |  | +            throw new BizException("未找到曲目信息");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (!AuthStatusEnum.DOING.getCode().equals(musicSheet.getAuditStatus().getCode())) {
 | 
	
		
			
				|  |  | -            throw  new BizException("曲目已经过审批");
 | 
	
		
			
				|  |  | +            throw new BizException("曲目已经过审批");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          boolean flag = false;
 | 
	
		
			
				|  |  | -        if (musicSheetAuthRecordService.audit(param,userId)) {
 | 
	
		
			
				|  |  | +        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);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 修改老师标签
 | 
	
		
			
				|  |  | +                teacherService.setTeacherTag(musicSheet.getUserId(), TeacherTagEnum.MUSIC);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            flag =  this.updateById(musicSheet);
 | 
	
		
			
				|  |  | +            flag = this.updateById(musicSheet);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 发送审核通知
 | 
	
		
			
				|  |  | -        Map<Long,String> receivers = new HashMap<>();
 | 
	
		
			
				|  |  | +        Map<Long, String> receivers = new HashMap<>();
 | 
	
		
			
				|  |  |          SysUser teacher = sysUserFeignService.queryUserById(musicSheet.getUserId());
 | 
	
		
			
				|  |  |          receivers.put(musicSheet.getUserId(), teacher.getPhone());
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  |              sendMusicSheetAuditMessage(param, musicSheet, receivers);
 | 
	
		
			
				|  |  |          } catch (Exception e) {
 | 
	
		
			
				|  |  | -            log.warn("曲目审核消息发送失败,{}",e.getMessage());
 | 
	
		
			
				|  |  | +            log.warn("曲目审核消息发送失败,{}", e.getMessage());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return flag;
 | 
	
	
		
			
				|  | @@ -354,11 +374,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |      private void sendMusicSheetAuditMessage(TeacherMusicSheetAuditReq param, MusicSheet musicSheet, Map<Long, String> receivers) {
 | 
	
		
			
				|  |  |          if (AuthStatusEnum.PASS.getCode().equals(param.getAuthStatus().getCode())) {
 | 
	
		
			
				|  |  |              sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.MUSIC_SHEET_AUTH_PASS,
 | 
	
		
			
				|  |  | -                           receivers, null, 0, null, ClientEnum.TEACHER.getCode(), musicSheet.getMusicSheetName());
 | 
	
		
			
				|  |  | -        } else if (AuthStatusEnum.UNPASS.getCode().equals(param.getAuthStatus().getCode())){
 | 
	
		
			
				|  |  | +                    receivers, null, 0, null, ClientEnum.TEACHER.getCode(), musicSheet.getMusicSheetName());
 | 
	
		
			
				|  |  | +        } else if (AuthStatusEnum.UNPASS.getCode().equals(param.getAuthStatus().getCode())) {
 | 
	
		
			
				|  |  |              sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.MUSIC_SHEET_AUTH_UNPASS,
 | 
	
		
			
				|  |  | -                   receivers, null, 0, null, ClientEnum.TEACHER.getCode(), musicSheet.getMusicSheetName(),
 | 
	
		
			
				|  |  | -                   param.getRemark());
 | 
	
		
			
				|  |  | +                    receivers, null, 0, null, ClientEnum.TEACHER.getCode(), musicSheet.getMusicSheetName(),
 | 
	
		
			
				|  |  | +                    param.getRemark());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -377,17 +397,17 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public Integer countTeacherMusicSheet(SysUser sysUser) {
 | 
	
		
			
				|  |  |          return this.lambdaQuery()
 | 
	
		
			
				|  |  | -                .eq(MusicSheet::getAuditStatus,AuthStatusEnum.PASS)
 | 
	
		
			
				|  |  | -                .eq(MusicSheet::getCreateBy,sysUser.getId())
 | 
	
		
			
				|  |  | -                .eq(MusicSheet::getState,YesOrNoEnum.YES)
 | 
	
		
			
				|  |  | -                .eq(MusicSheet::getDelFlag,YesOrNoEnum.NO)
 | 
	
		
			
				|  |  | -                .eq(MusicSheet::getSourceType,SourceTypeEnum.TEACHER.getCode())
 | 
	
		
			
				|  |  | +                .eq(MusicSheet::getAuditStatus, AuthStatusEnum.PASS)
 | 
	
		
			
				|  |  | +                .eq(MusicSheet::getCreateBy, sysUser.getId())
 | 
	
		
			
				|  |  | +                .eq(MusicSheet::getState, YesOrNoEnum.YES)
 | 
	
		
			
				|  |  | +                .eq(MusicSheet::getDelFlag, YesOrNoEnum.NO)
 | 
	
		
			
				|  |  | +                .eq(MusicSheet::getSourceType, SourceTypeEnum.TEACHER.getCode())
 | 
	
		
			
				|  |  |                  .count();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public boolean saveMusicSheet(MusicSheetDto musicSheetDto,Long userId) {
 | 
	
		
			
				|  |  | +    public boolean saveMusicSheet(MusicSheetDto musicSheetDto, Long userId) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (musicSheetDto.getId() != null) {
 | 
	
		
			
				|  |  |              musicSheetAccompanimentService.delByMusicSheetId(musicSheetDto.getId());
 | 
	
	
		
			
				|  | @@ -398,15 +418,15 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 删除曲目专辑关联
 | 
	
		
			
				|  |  | -        delAlbumSheetRef(musicSheetDto.getId(),musicSheetDto.getMusicSubject());
 | 
	
		
			
				|  |  | +        delAlbumSheetRef(musicSheetDto.getId(), musicSheetDto.getMusicSubject());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          List<MusicSheetAccompaniment> list;
 | 
	
		
			
				|  |  | -        if (!AudioTypeEnum.MIDI.getCode().equals(musicSheetDto.getAudioType().getCode())){
 | 
	
		
			
				|  |  | +        if (!AudioTypeEnum.MIDI.getCode().equals(musicSheetDto.getAudioType().getCode())) {
 | 
	
		
			
				|  |  |              list = musicSheetDto.getBackground();
 | 
	
		
			
				|  |  | -            if (CollectionUtils.isEmpty(list)){
 | 
	
		
			
				|  |  | +            if (CollectionUtils.isEmpty(list)) {
 | 
	
		
			
				|  |  |                  throw new BizException("mp3音频文件对应的主音或者伴奏文件没有提供");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            return saveMp3AndAccompaniment(musicSheetDto,userId);
 | 
	
		
			
				|  |  | +            return saveMp3AndAccompaniment(musicSheetDto, userId);
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              MusicSheet musicSheet = new MusicSheet();
 | 
	
		
			
				|  |  |              BeanUtils.copyProperties(musicSheetDto, musicSheet);
 | 
	
	
		
			
				|  | @@ -425,12 +445,12 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 删除专辑曲目关联
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  | -     * @param id 曲目id
 | 
	
		
			
				|  |  | +     * @param id        曲目id
 | 
	
		
			
				|  |  |       * @param subjectId 声部id
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    private void delAlbumSheetRef(Long id,String subjectId) {
 | 
	
		
			
				|  |  | +    private void delAlbumSheetRef(Long id, String subjectId) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (id == null ) {
 | 
	
		
			
				|  |  | +        if (id == null) {
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          MusicSheet musicSheet = this.getById(id);
 | 
	
	
		
			
				|  | @@ -458,8 +478,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 检查已经购买
 | 
	
		
			
				|  |  | -        checkoutPay(orderReqInfo.getUserId(),musicSheetPayDto.getMusicSheetId());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        checkoutPay(orderReqInfo.getUserId(), musicSheetPayDto.getMusicSheetId(),musicSheetPayDto.getClientType());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          orderCreateRes.setRes(true);
 | 
	
	
		
			
				|  | @@ -469,36 +488,35 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |          orderCreateRes.setGoodNum(1);
 | 
	
		
			
				|  |  |          orderCreateRes.setOriginalPrice(musicSheet.getMusicPrice());
 | 
	
		
			
				|  |  |          orderCreateRes.setExpectPrice(musicSheet.getMusicPrice());
 | 
	
		
			
				|  |  | -        return  HttpResponseResult.succeed(orderCreateRes);
 | 
	
		
			
				|  |  | +        return HttpResponseResult.succeed(orderCreateRes);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 检查是否已购买当前曲目
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * @param userId 用户id
 | 
	
		
			
				|  |  | +     *  @param userId       用户id
 | 
	
		
			
				|  |  |       * @param musicSheetId 曲目id
 | 
	
		
			
				|  |  | +     * @param clientType
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    private void checkoutPay(Long userId, Long musicSheetId) {
 | 
	
		
			
				|  |  | +    private void checkoutPay(Long userId, Long musicSheetId, String clientType) {
 | 
	
		
			
				|  |  |          List<MusicSheetPurchaseRecord> list = musicSheetPurchaseRecordService
 | 
	
		
			
				|  |  |                  .lambdaQuery()
 | 
	
		
			
				|  |  |                  .eq(MusicSheetPurchaseRecord::getMusicSheetId, musicSheetId)
 | 
	
		
			
				|  |  |                  .eq(MusicSheetPurchaseRecord::getStudentId, userId)
 | 
	
		
			
				|  |  | -                .eq(MusicSheetPurchaseRecord::getOrderStatus,OrderStatusEnum.PAID)
 | 
	
		
			
				|  |  | +                .eq(MusicSheetPurchaseRecord::getClientType, clientType)
 | 
	
		
			
				|  |  | +                .eq(MusicSheetPurchaseRecord::getOrderStatus, OrderStatusEnum.PAID)
 | 
	
		
			
				|  |  |                  .list();
 | 
	
		
			
				|  |  |          if (!CollectionUtils.isEmpty(list)) {
 | 
	
		
			
				|  |  | -            throw  new BizException("已经购买了当前曲目");
 | 
	
		
			
				|  |  | +            throw new BizException("已经购买了当前曲目");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional
 | 
	
		
			
				|  |  |      public void buyMusicSheetSuccess(UserOrderDetailVo userOrderDetailVo) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          MusicSheet musicSheet = this.getById(userOrderDetailVo.getBizId());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          // 曲目服务费比例
 | 
	
		
			
				|  |  | -        String musicSheetServiceFee= sysConfigService.findConfigValue(SysConfigConstant.MUSIC_SHEET_SERVICE_FEE);
 | 
	
		
			
				|  |  | +        String musicSheetServiceFee = sysConfigService.findConfigValue(SysConfigConstant.MUSIC_SHEET_SERVICE_FEE);
 | 
	
		
			
				|  |  |          BigDecimal serviceFee = new BigDecimal(musicSheetServiceFee).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
 | 
	
		
			
				|  |  |          //支付金额
 | 
	
		
			
				|  |  |          BigDecimal actualPrice = userOrderDetailVo.getActualPrice();
 | 
	
	
		
			
				|  | @@ -516,17 +534,17 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 消息通知
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  | -            sendBuyMessage(userOrderDetailVo.getMerchId(),userOrderDetailVo.getUserId(),userOrderDetailVo.getBizId());
 | 
	
		
			
				|  |  | -        }catch (Exception e) {
 | 
	
		
			
				|  |  | -            log.warn("学生购买曲目消息推送失败 {}",e.getMessage());
 | 
	
		
			
				|  |  | +            sendBuyMessage(userOrderDetailVo.getMerchId(), userOrderDetailVo.getUserId(), userOrderDetailVo.getBizId());
 | 
	
		
			
				|  |  | +        } catch (Exception e) {
 | 
	
		
			
				|  |  | +            log.warn("学生购买曲目消息推送失败 {}", e.getMessage());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 发送购买消息通知
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  | -     * @param teacherId 老师id
 | 
	
		
			
				|  |  | -     * @param studentId 学生id
 | 
	
		
			
				|  |  | +     * @param teacherId    老师id
 | 
	
		
			
				|  |  | +     * @param studentId    学生id
 | 
	
		
			
				|  |  |       * @param musicSheetId 曲目id
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -535,35 +553,35 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |          SysUser teacher = sysUserFeignService.queryUserById(teacherId);
 | 
	
		
			
				|  |  |          SysUser student = sysUserFeignService.queryUserById(studentId);
 | 
	
		
			
				|  |  |          if (StringUtil.isEmpty(teacher.getPhone())) {
 | 
	
		
			
				|  |  | -            log.warn("teacher id {} name {} 手机号不存在,消息推送失败",teacher.getId(),teacher.getUsername());
 | 
	
		
			
				|  |  | +            log.warn("teacher id {} name {} 手机号不存在,消息推送失败", teacher.getId(), teacher.getUsername());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          MusicSheet musicSheet = this.getById(musicSheetId);
 | 
	
		
			
				|  |  |          // 推送老师
 | 
	
		
			
				|  |  | -        Map<Long,String> teacherReceivers = new HashMap<>();
 | 
	
		
			
				|  |  | +        Map<Long, String> teacherReceivers = new HashMap<>();
 | 
	
		
			
				|  |  |          teacherReceivers.put(teacherId, teacher.getPhone());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
 | 
	
		
			
				|  |  | -                                           MessageTypeEnum.STUDENT_BUY_TEACHER_MUSIC_SHEET, teacherReceivers, null,
 | 
	
		
			
				|  |  | -                                           0, null,ClientEnum.TEACHER.getCode(),student.getUsername(),musicSheet.getMusicSheetName());
 | 
	
		
			
				|  |  | +                MessageTypeEnum.STUDENT_BUY_TEACHER_MUSIC_SHEET, teacherReceivers, null,
 | 
	
		
			
				|  |  | +                0, null, ClientEnum.TEACHER.getCode(), student.getUsername(), musicSheet.getMusicSheetName());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 推送学生
 | 
	
		
			
				|  |  | -        Map<Long,String> studentReceivers = new HashMap<>();
 | 
	
		
			
				|  |  | +        Map<Long, String> studentReceivers = new HashMap<>();
 | 
	
		
			
				|  |  |          studentReceivers.put(studentId, student.getPhone());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          String url = sysMessageService.selectConfigUrl(MessageTypeEnum.STUDENT_BUY_MUSIC_SHEET_SUCCESS.getCode());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
 | 
	
		
			
				|  |  | -                                           MessageTypeEnum.STUDENT_BUY_MUSIC_SHEET_SUCCESS, studentReceivers, null,
 | 
	
		
			
				|  |  | -                                           0, url,ClientEnum.STUDENT.getCode(),musicSheet.getMusicSheetName());
 | 
	
		
			
				|  |  | +                MessageTypeEnum.STUDENT_BUY_MUSIC_SHEET_SUCCESS, studentReceivers, null,
 | 
	
		
			
				|  |  | +                0, url, ClientEnum.STUDENT.getCode(), musicSheet.getMusicSheetName());
 | 
	
		
			
				|  |  |          // 推送学生
 | 
	
		
			
				|  |  | -        Map<Long,String> studentSMS = new HashMap<>();
 | 
	
		
			
				|  |  | +        Map<Long, String> studentSMS = new HashMap<>();
 | 
	
		
			
				|  |  |          studentSMS.put(studentId, student.getPhone());
 | 
	
		
			
				|  |  |          // 推送短信
 | 
	
		
			
				|  |  |          url = sysMessageService.selectConfigUrl(MessageTypeEnum.SMS_STUDENT_BUY_MUSIC_SHEET_SUCCESS.getCode());
 | 
	
		
			
				|  |  |          sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_STUDENT_BUY_MUSIC_SHEET_SUCCESS,
 | 
	
		
			
				|  |  | -        studentSMS,null,0,url,null,musicSheet.getMusicSheetName());
 | 
	
		
			
				|  |  | +                studentSMS, null, 0, url, null, musicSheet.getMusicSheetName());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return true;
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -572,15 +590,16 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |       * 保存购买记录
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  |       * @param userOrderDetailVo 订单信息
 | 
	
		
			
				|  |  | -     * @param actualPrice  付款价格
 | 
	
		
			
				|  |  | -     * @param serviceFeeAmount 服务费
 | 
	
		
			
				|  |  | +     * @param actualPrice       付款价格
 | 
	
		
			
				|  |  | +     * @param serviceFeeAmount  服务费
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      private void addMusicSheetPurchaseRecord(UserOrderDetailVo userOrderDetailVo, BigDecimal actualPrice, BigDecimal serviceFeeAmount) {
 | 
	
		
			
				|  |  |          MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService
 | 
	
		
			
				|  |  | -                .checkPurchase(userOrderDetailVo.getUserId(), userOrderDetailVo.getBizId());
 | 
	
		
			
				|  |  | +                .checkPurchase(userOrderDetailVo.getUserId(), userOrderDetailVo.getBizId(),userOrderDetailVo.getOrderClient());
 | 
	
		
			
				|  |  |          if (musicSheetPurchaseRecord == null) {
 | 
	
		
			
				|  |  |              musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        musicSheetPurchaseRecord.setClientType(userOrderDetailVo.getOrderClient());
 | 
	
		
			
				|  |  |          musicSheetPurchaseRecord.setMusicSheetId(userOrderDetailVo.getBizId());
 | 
	
		
			
				|  |  |          musicSheetPurchaseRecord.setOrderNo(userOrderDetailVo.getOrderNo());
 | 
	
		
			
				|  |  |          musicSheetPurchaseRecord.setPurchasePrice(actualPrice);
 | 
	
	
		
			
				|  | @@ -597,23 +616,46 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |       * 添加金额到老师账户
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  |       * @param userOrderDetailVo 订单信息
 | 
	
		
			
				|  |  | -     * @param actualPrice 付款价格
 | 
	
		
			
				|  |  | -     * @param serviceFeeAmount 服务费
 | 
	
		
			
				|  |  | -     * @param musicSheetId 曲目id
 | 
	
		
			
				|  |  | +     * @param actualPrice       付款价格
 | 
	
		
			
				|  |  | +     * @param serviceFeeAmount  服务费
 | 
	
		
			
				|  |  | +     * @param musicSheetId      曲目id
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      private void addTeacherAccount(UserOrderDetailVo userOrderDetailVo, BigDecimal actualPrice, BigDecimal serviceFeeAmount,
 | 
	
		
			
				|  |  |                                     Long musicSheetId) {
 | 
	
		
			
				|  |  | -        UserAccountRecordDto userAccountRecordDto = new UserAccountRecordDto();
 | 
	
		
			
				|  |  | -        userAccountRecordDto.setUserId(userOrderDetailVo.getMerchId());
 | 
	
		
			
				|  |  | -        userAccountRecordDto.setFrozenType(FrozenTypeEnum.NONE);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        userAccountRecordDto.setTransAmount(actualPrice.subtract(serviceFeeAmount).setScale(2, RoundingMode.HALF_UP));
 | 
	
		
			
				|  |  | -        userAccountRecordDto.setInOrOut(InOrOutEnum.IN);
 | 
	
		
			
				|  |  | -        userAccountRecordDto.setBizType(AccountBizTypeEnum.MUSIC);
 | 
	
		
			
				|  |  | -        userAccountRecordDto.setBizId(musicSheetId);
 | 
	
		
			
				|  |  | -        userAccountRecordDto.setBizName(userOrderDetailVo.getGoodName());
 | 
	
		
			
				|  |  | -        userAccountRecordDto.setOrderNo(userOrderDetailVo.getOrderNo());
 | 
	
		
			
				|  |  | -        userAccountService.accountChange(userAccountRecordDto);
 | 
	
		
			
				|  |  | +        BigDecimal transAmount = actualPrice.subtract(serviceFeeAmount).setScale(2, RoundingMode.HALF_UP);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //插入老师账户变更记录
 | 
	
		
			
				|  |  | +        HttpResponseResult<UserAccountRecord> recordRes = userAccountService.accountRecord(
 | 
	
		
			
				|  |  | +                new UserAccountRecordDto(userOrderDetailVo.getMerchId(), PostStatusEnum.WAIT, transAmount, InOrOutEnum.IN,
 | 
	
		
			
				|  |  | +                        AccountBizTypeEnum.MUSIC, musicSheetId, userOrderDetailVo.getGoodName(), userOrderDetailVo.getOrderNo()));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (recordRes.getStatus()) {
 | 
	
		
			
				|  |  | +            userAccountService.accountChange(recordRes.getData().getId(), PostStatusEnum.RECORDED);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //todo 插入平台实收
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //判断是否分润
 | 
	
		
			
				|  |  | +        if (null != userOrderDetailVo.getRecomUserId()) {
 | 
	
		
			
				|  |  | +            // 分润比例
 | 
	
		
			
				|  |  | +            BigDecimal shareFeeRate = new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.MUSIC_SHARE_FEE))
 | 
	
		
			
				|  |  | +                    .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //分润金额
 | 
	
		
			
				|  |  | +            BigDecimal shareFee = serviceFeeAmount.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //插入分润老师账户变更记录
 | 
	
		
			
				|  |  | +            HttpResponseResult<UserAccountRecord> recomRecordRes = userAccountService.accountRecord(
 | 
	
		
			
				|  |  | +                    new UserAccountRecordDto(userOrderDetailVo.getRecomUserId(), PostStatusEnum.WAIT, shareFee, InOrOutEnum.IN,
 | 
	
		
			
				|  |  | +                            AccountBizTypeEnum.MUSIC_SHARE, musicSheetId, userOrderDetailVo.getGoodName(), userOrderDetailVo.getOrderNo()));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (recomRecordRes.getStatus()) {
 | 
	
		
			
				|  |  | +                userAccountService.accountChange(recomRecordRes.getData().getId(), PostStatusEnum.RECORDED);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //todo 插入平台分润支出
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -621,7 +663,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |      public void orderAfterSheet(UserOrderDetailVo userOrderDetailVo) {
 | 
	
		
			
				|  |  |          // 保存购买记录
 | 
	
		
			
				|  |  |          MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService
 | 
	
		
			
				|  |  | -                .checkPurchase(userOrderDetailVo.getUserId(),userOrderDetailVo.getBizId());
 | 
	
		
			
				|  |  | +                .checkPurchase(userOrderDetailVo.getUserId(),userOrderDetailVo.getBizId(),userOrderDetailVo.getOrderClient());
 | 
	
		
			
				|  |  |          if (musicSheetPurchaseRecord == null) {
 | 
	
		
			
				|  |  |              musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -638,7 +680,8 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void buyMusicSheetCancel(UserOrderDetailVo userOrderDetailVo) {
 | 
	
		
			
				|  |  |          MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService
 | 
	
		
			
				|  |  | -                .checkPurchase(userOrderDetailVo.getUserId(),userOrderDetailVo.getBizId());
 | 
	
		
			
				|  |  | +                .checkPurchase(userOrderDetailVo.getUserId(),userOrderDetailVo.getBizId(),userOrderDetailVo.getOrderClient());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          if (musicSheetPurchaseRecord == null) return;
 | 
	
		
			
				|  |  |          musicSheetPurchaseRecordService.removeById(musicSheetPurchaseRecord.getId());
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -688,9 +731,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |                  continue;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              MusicSheetExport sheetExport = readerProperty.getClazz();
 | 
	
		
			
				|  |  | -            BeanUtils.copyProperties(sheetExport,musicSheetDto);
 | 
	
		
			
				|  |  | +            BeanUtils.copyProperties(sheetExport, musicSheetDto);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if(AudioTypeEnum.MIDI.getCode().equals(musicSheetDto.getAudioType().getCode())) {
 | 
	
		
			
				|  |  | +            if (AudioTypeEnum.MIDI.getCode().equals(musicSheetDto.getAudioType().getCode())) {
 | 
	
		
			
				|  |  |                  musicSheetDto.setMp3Type(null);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -703,7 +746,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |              StringBuilder musicTagIds = new StringBuilder();
 | 
	
		
			
				|  |  |              if (musicTags == null || musicTags.equals("")) {
 | 
	
		
			
				|  |  |                  errMsgList.add(new ErrMsg(readerProperty.getRowIndex(), "曲目标签不能为空"));
 | 
	
		
			
				|  |  | -            }  else {
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  |                  String[] stringList = musicTags.split("[,,]");
 | 
	
		
			
				|  |  |                  List<MusicTag> childrenMusicTag = new ArrayList<>();
 | 
	
		
			
				|  |  |                  for (MusicTagVo musicTagVo : musicTagVoList) {
 | 
	
	
		
			
				|  | @@ -739,8 +782,8 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |                      childrenSubject.addAll(subject.getSubjects());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  List<Subject> collect = childrenSubject.stream()
 | 
	
		
			
				|  |  | -                       .filter(subject -> subject.getName().equals(sheetExport.getMusicSubjects()))
 | 
	
		
			
				|  |  | -                       .collect(Collectors.toList());
 | 
	
		
			
				|  |  | +                        .filter(subject -> subject.getName().equals(sheetExport.getMusicSubjects()))
 | 
	
		
			
				|  |  | +                        .collect(Collectors.toList());
 | 
	
		
			
				|  |  |                  if (CollectionUtils.isEmpty(collect)) {
 | 
	
		
			
				|  |  |                      errMsgList.add(new ErrMsg(readerProperty.getRowIndex(), "曲目声部名错误:" + sheetExport.getMusicSubjects()));
 | 
	
		
			
				|  |  |                  } else {
 | 
	
	
		
			
				|  | @@ -764,11 +807,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |              musicSheetDtoList.add(musicSheetDto);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if(!CollectionUtils.isEmpty(errMsgList)) {
 | 
	
		
			
				|  |  | +        if (!CollectionUtils.isEmpty(errMsgList)) {
 | 
	
		
			
				|  |  |              throw new ExcelException("导入异常", errMsgList);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        musicSheetDtoList.forEach(musicSheetDto -> saveMusicSheet(musicSheetDto,userId));
 | 
	
		
			
				|  |  | +        musicSheetDtoList.forEach(musicSheetDto -> saveMusicSheet(musicSheetDto, userId));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -776,7 +819,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |      public MusicSheetWebsiteDetailVo websiteDetail(Long musicSheetId, SysUser sysUser) {
 | 
	
		
			
				|  |  |          MusicSheetDetailVo detail = detail(musicSheetId, null, null);
 | 
	
		
			
				|  |  |          MusicSheetWebsiteDetailVo musicSheetWebsiteDetailVo = new MusicSheetWebsiteDetailVo();
 | 
	
		
			
				|  |  | -        BeanUtils.copyProperties(detail,musicSheetWebsiteDetailVo);
 | 
	
		
			
				|  |  | +        BeanUtils.copyProperties(detail, musicSheetWebsiteDetailVo);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 曲目收藏数
 | 
	
		
			
				|  |  |          long musicSheetFavoriteNum = musicFavoriteService.getMusicSheetFavoriteNum(musicSheetId);
 | 
	
	
		
			
				|  | @@ -834,9 +877,24 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
 | 
	
		
			
				|  |  |          return baseMapper.queryStudentTotal(userId);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public ShareProfitVo shareMusicSheetProfit(SysUser sysUser, Long musicSheetId) {
 | 
	
		
			
				|  |  | +        ShareProfitVo result = new ShareProfitVo();
 | 
	
		
			
				|  |  | +        MusicSheetDetailVo musicSheet = detail(musicSheetId,null,null);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        result.setTeacherId(sysUser.getId());
 | 
	
		
			
				|  |  | +        result.setType("MUSIC");
 | 
	
		
			
				|  |  | +        result.setMusicSheet(musicSheet);
 | 
	
		
			
				|  |  | +        result.setAvatar(sysUser.getAvatar());
 | 
	
		
			
				|  |  | +        result.setName(sysUser.getUsername());
 | 
	
		
			
				|  |  | +        String teacherMusicShareProfitUrl= sysConfigService.findConfigValue(SysConfigConstant.TEACHER_MUSIC_SHEET_SHARE_PROFIT_URL);
 | 
	
		
			
				|  |  | +        result.setUrl(MessageFormatter.arrayFormat(teacherMusicShareProfitUrl,musicSheetId, sysUser.getId()));
 | 
	
		
			
				|  |  | +        return result;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private SysUser getSysUser(Long userId) {
 | 
	
		
			
				|  |  |          return Optional.ofNullable(userId)
 | 
	
		
			
				|  |  | -                       .map(sysUserFeignService::queryUserById)
 | 
	
		
			
				|  |  | -                       .orElseThrow(() -> new BizException("用户不存在"));
 | 
	
		
			
				|  |  | +                .map(sysUserFeignService::queryUserById)
 | 
	
		
			
				|  |  | +                .orElseThrow(() -> new BizException("用户不存在"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |