| 
					
				 | 
			
			
				@@ -1,29 +1,143 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.yonge.cooleshow.biz.dal.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.entity.VideoLessonPurchaseRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.toolkit.Wrappers; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.auth.api.client.SysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.entity.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dao.VideoLessonPurchaseRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.VideoLessonPurchaseRecordService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * VideoLessonPurchaseRecordService服务实现类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @author yzp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @date 2022-03-26 00:01:38 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @version v1.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @date 2022-03-26 00:01:38 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  **/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLessonPurchaseRecordDao,VideoLessonPurchaseRecord> implements VideoLessonPurchaseRecordService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLessonPurchaseRecordDao, VideoLessonPurchaseRecord> implements VideoLessonPurchaseRecordService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private final static Logger log = LoggerFactory.getLogger(VideoLessonPurchaseRecordServiceImpl.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private SysUserFeignService sysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private VideoLessonPurchaseRecordDao videoLessonPurchaseRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private VideoLessonGroupDao videoLessonGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public VideoLessonPurchaseRecordDao getDao() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return videoLessonPurchaseRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Description: 购买视频课 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Author: cy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Date: 2022/4/24 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<OrderCreateRes> buyVideoCourse(OrderReq.OrderReqInfo orderReqInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("学生购买视频课程组,请求参数:{}", JSON.toJSONString(orderReqInfo)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long studentId = orderReqInfo.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String orderNo = orderReqInfo.getOrderNo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //校验学生信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getSysUser(studentId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ObjectMapper objectMapper = new ObjectMapper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        VideoLessonPurchaseRecord purchaseRecord = objectMapper.convertValue(orderReqInfo.getBizContent(), VideoLessonPurchaseRecord.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //校验视频课信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long groupId = purchaseRecord.getVideoLessonGroupId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        VideoLessonGroup lessonGroup = videoLessonGroupDao.selectById(groupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (lessonGroup == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("课程组不存在!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderNo="999"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        purchaseRecord.setOrderNo(orderNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        purchaseRecord.setStudentId(studentId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        purchaseRecord.setOrderStatus(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        videoLessonPurchaseRecordDao.insert(purchaseRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        OrderCreateRes orderCreateRes = new OrderCreateRes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setRes(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setMerchId(lessonGroup.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setBizId(orderReqInfo.getCouponId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setOriginalPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setExpectPrice(BigDecimal.valueOf(lessonGroup.getLessonPrice())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setActualPrice(purchaseRecord.getPayMoney()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setGoodNum(lessonGroup.getLessonCount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setGoodType(GoodTypeEnum.VIDEO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HttpResponseResult<OrderCreateRes> httpResponseResult = new HttpResponseResult<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        httpResponseResult.setData(orderCreateRes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return httpResponseResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Description: 购买视频课-成功-回调 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Author: cy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Date: 2022/4/24 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void buyVideoCourseSuccess(UserOrderDetailVo orderParam) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("学生购买视频课-成功-回调,请求参数:{}", JSON.toJSONString(orderParam)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String orderNo = orderParam.getOrderNo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        VideoLessonPurchaseRecord videoGroup = videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(VideoLessonPurchaseRecord::getOrderNo, orderNo)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (videoGroup == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("课程组不存在!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //video_lesson_purchase_record中order_status_改为1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        videoLessonPurchaseRecordDao.updateStatus(orderNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Description: 购买视频课-失败-回调 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Author: cy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Date: 2022/4/24 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void buyVideoCourseFailed(UserOrderDetailVo orderParam) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String orderNo = orderParam.getOrderNo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        VideoLessonPurchaseRecord videoGroup = videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(VideoLessonPurchaseRecord::getOrderNo, orderNo)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (videoGroup == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("课程组不存在!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //删除video_lesson_purchase_record数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        videoLessonPurchaseRecordDao.delete(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(VideoLessonPurchaseRecord::getOrderNo, orderNo)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 获取用户信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private SysUser getSysUser(Long userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return Optional.ofNullable(userId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .map(sysUserFeignService::queryUserById) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orElseThrow(() -> new BizException("用户不存在")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |