| 
					
				 | 
			
			
				@@ -1,11 +1,17 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.yonge.cooleshow.biz.dal.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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.auth.api.enums.SysUserType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.dto.MusicSheetPayDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.search.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.*; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -13,6 +19,8 @@ import com.yonge.cooleshow.biz.dal.enums.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.support.PageUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.vo.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.common.entity.HttpResponseResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.exception.BizException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.LoggerFactory; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -25,6 +33,7 @@ import org.springframework.util.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Optional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -59,6 +68,12 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private MusicSheetAuthRecordService musicSheetAuthRecordService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private SysUserFeignService sysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private UserAccountService userAccountService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public MusicSheetDao getDao() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return musicSheetDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -290,4 +305,85 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return this.saveOrUpdate(musicSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<OrderCreateRes> buyMusicSheetCheck(OrderReq.OrderReqInfo orderReqInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 下单前的验证 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getSysUser(orderReqInfo.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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("不存在曲目信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 检查已经购买 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        checkoutPay(orderReqInfo.getUserId(),musicSheetPayDto.getMusicSheetId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setRes(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setMerchId(musicSheet.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setGoodType(orderCreateRes.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setBizId(musicSheet.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setGoodNum(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setOriginalPrice(musicSheet.getMusicPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setExpectPrice(musicSheet.getMusicPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return  HttpResponseResult.succeed(orderCreateRes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 检查是否已购买当前曲目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param userId 用户id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param musicSheetId 曲目id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void checkoutPay(Long userId, Long musicSheetId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<MusicSheetPurchaseRecord> list = musicSheetPurchaseRecordService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .lambdaQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(MusicSheetPurchaseRecord::getMusicSheetId, musicSheetId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(MusicSheetPurchaseRecord::getStudentId, userId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(MusicSheetPurchaseRecord::getOrderStatus, YesOrNoEnum.YES) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .list(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!CollectionUtils.isEmpty(list)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw  new BizException("已经购买了当前曲目"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void buyMusicSheetSuccess(UserOrderDetailVo userOrderDetailVo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 保存购买记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MusicSheetPurchaseRecord musicSheetPurchaseRecord = new MusicSheetPurchaseRecord(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheetPurchaseRecord.setMusicSheetId(userOrderDetailVo.getBizId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheetPurchaseRecord.setOrderNo(userOrderDetailVo.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheetPurchaseRecord.setPurchasePrice(userOrderDetailVo.getExpectPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheetPurchaseRecord.setPurchaseTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheetPurchaseRecord.setTeacherId(userOrderDetailVo.getMerchId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheetPurchaseRecord.setOrderStatus(YesOrNoEnum.YES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheetPurchaseRecord.setStudentId(userOrderDetailVo.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicSheetPurchaseRecordService.save(musicSheetPurchaseRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 加入账户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserAccountRecordDto userAccountRecordDto = new UserAccountRecordDto(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userAccountRecordDto.setUserId(userOrderDetailVo.getMerchId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userAccountRecordDto.setFrozenType(FrozenTypeEnum.NONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userAccountRecordDto.setTransAmount(musicSheetPurchaseRecord.getPurchasePrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userAccountRecordDto.setInOrOut(InOrOutEnum.IN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userAccountRecordDto.setBizType(AccountBizTypeEnum.MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userAccountRecordDto.setBizId(musicSheetPurchaseRecord.getMusicSheetId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userAccountRecordDto.setBizName(userOrderDetailVo.getGoodName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userAccountRecordDto.setOrderNo(userOrderDetailVo.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userAccountService.accountChange(userAccountRecordDto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private SysUser getSysUser(Long userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return Optional.ofNullable(userId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                       .map(sysUserFeignService::queryUserById) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                       .orElseThrow(() -> new BizException("用户不存在")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |