|  | @@ -1,5 +1,6 @@
 | 
	
		
			
				|  |  |  package com.yonge.cooleshow.biz.dal.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import java.text.MessageFormat;
 | 
	
		
			
				|  |  |  import java.util.Date;
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
		
			
				|  |  |  import java.util.Map;
 | 
	
	
		
			
				|  | @@ -130,7 +131,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
 | 
	
		
			
				|  |  |              query.setSubjectIds(musicAlbum.getSubjectId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // 判断专辑收费类型;非免费类型,只能添加平台曲目
 | 
	
		
			
				|  |  | -            if (!ChargeTypeEnum.FREE.match(musicAlbum.getPaymentType())) {
 | 
	
		
			
				|  |  | +            /*if (!ChargeTypeEnum.FREE.match(musicAlbum.getPaymentType())) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  // 曲目来源
 | 
	
		
			
				|  |  |                  query.setSourceType(SourceTypeEnum.PLATFORM);
 | 
	
	
		
			
				|  | @@ -143,7 +144,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
 | 
	
		
			
				|  |  |                      query.setChargeType(ChargeTypeEnum.valueOf(musicAlbum.getPaymentType()));
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +            }*/
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectAlbumDetailPage(page,query);
 | 
	
	
		
			
				|  | @@ -162,7 +163,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 付费专辑,需要校验是否已存在购买记录
 | 
	
		
			
				|  |  | -        if (!ChargeTypeEnum.VIP.match(musicAlbum.getPaymentType())) {
 | 
	
		
			
				|  |  | +        /*if (!ChargeTypeEnum.VIP.match(musicAlbum.getPaymentType())) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // 统计付费专辑的购买数量
 | 
	
		
			
				|  |  |              Integer count = musicSheetPurchaseRecordMapper.selectCount(Wrappers.<MusicSheetPurchaseRecord>lambdaQuery()
 | 
	
	
		
			
				|  | @@ -172,7 +173,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
 | 
	
		
			
				|  |  |              if (Optional.ofNullable(count).orElse(0) > 0) {
 | 
	
		
			
				|  |  |                  throw new BizException("当前专辑已有购买记录");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        }*/
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          List<Long> musicSheetIdList = StringUtil.toLongList(musicSheetIds);
 | 
	
		
			
				|  |  |          return albumMusicRelateService.delMusicSheet(albumId,musicSheetIdList);
 | 
	
	
		
			
				|  | @@ -238,14 +239,20 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 非付费类型,已添加曲目或者已购买,不允许修改付费方式
 | 
	
		
			
				|  |  |          MusicAlbum album = getById(musicAlbum.getId());
 | 
	
		
			
				|  |  | +        if (Objects.isNull(album)) {
 | 
	
		
			
				|  |  | +            throw new BizException("无效的专辑ID");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 专辑从免费修改为付费方式,需要判断当前免费单曲数量
 | 
	
		
			
				|  |  |          if (Objects.nonNull(musicAlbum.getPaymentType())
 | 
	
		
			
				|  |  | +                && ChargeTypeEnum.FREE.match(album.getPaymentType())
 | 
	
		
			
				|  |  |                  && !album.getPaymentType().equals(musicAlbum.getPaymentType())) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            Integer count = albumMusicRelateMapper.selectCount(Wrappers.<AlbumMusicRelate>lambdaQuery()
 | 
	
		
			
				|  |  | -                    .eq(AlbumMusicRelate::getAlbumId, musicAlbum.getId()));
 | 
	
		
			
				|  |  | +            Map<Long, Integer> collect = getBaseMapper().selectAlbumMusicSheetStatInfo(album.getId(), ChargeTypeEnum.FREE).stream()
 | 
	
		
			
				|  |  | +                    .collect(Collectors.toMap(StatGroupWrapper::getId, StatGroupWrapper::getTotal, (o, n) -> n));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if (Optional.ofNullable(count).orElse(0) > 0) {
 | 
	
		
			
				|  |  | -                throw new BizException("当前专辑已添加曲目");
 | 
	
		
			
				|  |  | +            if (collect.getOrDefault(album.getId(), 0) > 2) {
 | 
	
		
			
				|  |  | +                throw new BizException(MessageFormat.format("当前专辑免费单曲数为 {0}, 已超过免费数量", collect.get(album.getId())));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 |