| 
					
				 | 
			
			
				@@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.extension.service.additional.update.impl.LambdaU 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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.biz.dal.dao.MusicAlbumDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.support.WrapperUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.enums.ActivityShareEnum; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -114,6 +116,8 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private StudentStarService studentStarService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private UserOrderService userOrderService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private MusicAlbumDao musicAlbumMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public MusicSheetDao getDao() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return musicSheetDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -286,7 +290,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (ChargeTypeEnum.CHARGE.getCode().equals(detail.getChargeType().getCode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 学生须判断是否能播放曲目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentId, detail.getId(), userType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentId, detail.getId(), userType, PurchaseRecordTypeEnum.MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (musicSheetPurchaseRecord != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 detail.setOrderStatus(musicSheetPurchaseRecord.getOrderStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 detail.setOrderNo(musicSheetPurchaseRecord.getOrderNo()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -297,7 +301,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (ChargeTypeEnum.VIP.getCode().equals(detail.getChargeType().getCode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 先判断是否购买过 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    studentId, detail.getId(), userType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentId, detail.getId(), userType, PurchaseRecordTypeEnum.MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (musicSheetPurchaseRecord != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 detail.setPlay(YesOrNoEnum.YES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -645,24 +649,53 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         MusicSheetPayDto musicSheetPayDto = JSON.parseObject( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 JSON.toJSONString(orderReqInfo.getBizContent()), MusicSheetPayDto.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        MusicSheet musicSheet = this.getById(musicSheetPayDto.getMusicSheetId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         OrderCreateRes orderCreateRes = new OrderCreateRes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (musicSheet == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("不存在曲目信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setGoodType(orderCreateRes.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setGoodNum(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setOrderType(orderReqInfo.getOrderType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        switch (orderReqInfo.getOrderType()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case MUSIC: // 单曲 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    MusicSheet musicSheet = this.getById(musicSheetPayDto.getMusicSheetId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (musicSheet == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        throw new BizException("不存在曲目信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 检查已经购买 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        checkoutPay(orderReqInfo.getUserId(), musicSheetPayDto.getMusicSheetId(), musicSheetPayDto.getClientType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orderCreateRes.setRes(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!musicSheet.getSourceType().getCode().equals(SourceTypeEnum.PLATFORM.getCode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        orderCreateRes.setMerchId(musicSheet.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderCreateRes.setRes(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!musicSheet.getSourceType().getCode().equals(SourceTypeEnum.PLATFORM.getCode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            orderCreateRes.setMerchId(musicSheet.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orderCreateRes.setBizId(musicSheet.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orderCreateRes.setOriginalPrice(musicSheet.getMusicPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orderCreateRes.setExpectPrice(musicSheet.getMusicPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case ALBUM: // 专辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    MusicAlbum album = musicAlbumMapper.selectById(musicSheetPayDto.getMusicSheetId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (Objects.isNull(album)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        throw new BizException("无效的专辑信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orderCreateRes.setRes(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orderCreateRes.setMerchId(0L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orderCreateRes.setBizId(album.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orderCreateRes.setOriginalPrice(BigDecimal.valueOf(album.getAlbumPrice())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orderCreateRes.setExpectPrice(BigDecimal.valueOf(album.getAlbumPrice())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderCreateRes.setGoodType(orderCreateRes.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderCreateRes.setBizId(musicSheet.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderCreateRes.setGoodNum(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderCreateRes.setOriginalPrice(musicSheet.getMusicPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderCreateRes.setExpectPrice(musicSheet.getMusicPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 检查已经购买,抛出已购买异常 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        checkoutPay(orderReqInfo.getUserId(), musicSheetPayDto.getMusicSheetId(), musicSheetPayDto.getClientType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                PurchaseRecordTypeEnum.valueOf(orderReqInfo.getOrderType().getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return HttpResponseResult.succeed(orderCreateRes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -674,12 +707,13 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param musicSheetId 曲目id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param clientType 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void checkoutPay(Long userId, Long musicSheetId, String clientType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void checkoutPay(Long userId, Long musicSheetId, String clientType, PurchaseRecordTypeEnum purchaseType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<MusicSheetPurchaseRecord> list = musicSheetPurchaseRecordService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .lambdaQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq(MusicSheetPurchaseRecord::getMusicSheetId, musicSheetId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq(MusicSheetPurchaseRecord::getStudentId, userId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq(MusicSheetPurchaseRecord::getClientType, clientType) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(MusicSheetPurchaseRecord::getPurchaseType, purchaseType) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq(MusicSheetPurchaseRecord::getOrderStatus, OrderStatusEnum.PAID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .list(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!CollectionUtils.isEmpty(list)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -786,8 +820,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param serviceFeeAmount  服务费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void addMusicSheetPurchaseRecord(UserOrderDetailVo userOrderDetailVo, BigDecimal actualPrice, BigDecimal serviceFeeAmount) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .checkPurchase(userOrderDetailVo.getUserId(), userOrderDetailVo.getBizId(), userOrderDetailVo.getOrderClient()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userOrderDetailVo.getUserId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userOrderDetailVo.getBizId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userOrderDetailVo.getOrderClient(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                PurchaseRecordTypeEnum.valueOf(userOrderDetailVo.getOrderType().getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (musicSheetPurchaseRecord == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             musicSheetPurchaseRecord = new MusicSheetPurchaseRecord(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -801,6 +838,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicSheetPurchaseRecord.setMusicSheetServiceFee(serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicSheetPurchaseRecord.setOrderStatus(OrderStatusEnum.PAID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicSheetPurchaseRecord.setStudentId(userOrderDetailVo.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheetPurchaseRecord.setPurchaseType(PurchaseRecordTypeEnum.valueOf(userOrderDetailVo.getOrderType().getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicSheetPurchaseRecordService.saveOrUpdate(musicSheetPurchaseRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -826,8 +864,11 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void orderAfterSheet(UserOrderDetailVo userOrderDetailVo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 保存购买记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .checkPurchase(userOrderDetailVo.getUserId(), userOrderDetailVo.getBizId(), userOrderDetailVo.getOrderClient()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userOrderDetailVo.getUserId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userOrderDetailVo.getBizId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userOrderDetailVo.getOrderClient(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                PurchaseRecordTypeEnum.valueOf(userOrderDetailVo.getOrderType().getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (musicSheetPurchaseRecord == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             musicSheetPurchaseRecord = new MusicSheetPurchaseRecord(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -838,14 +879,19 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicSheetPurchaseRecord.setOriginalPrice(userOrderDetailVo.getOriginalPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicSheetPurchaseRecord.setOrderStatus(OrderStatusEnum.WAIT_PAY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicSheetPurchaseRecord.setStudentId(userOrderDetailVo.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheetPurchaseRecord.setPurchaseType(PurchaseRecordTypeEnum.valueOf(userOrderDetailVo.getOrderType().getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicSheetPurchaseRecordService.saveOrUpdate(musicSheetPurchaseRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void buyMusicSheetCancel(UserOrderDetailVo userOrderDetailVo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .checkPurchase(userOrderDetailVo.getUserId(), userOrderDetailVo.getBizId(), userOrderDetailVo.getOrderClient()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService.checkPurchase( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userOrderDetailVo.getUserId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userOrderDetailVo.getBizId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userOrderDetailVo.getOrderClient(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                PurchaseRecordTypeEnum.valueOf(userOrderDetailVo.getOrderType().getCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (musicSheetPurchaseRecord == null) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicSheetPurchaseRecordService.removeById(musicSheetPurchaseRecord.getId()); 
			 |