| 
					
				 | 
			
			
				@@ -1,5 +1,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.yonge.cooleshow.biz.dal.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.metadata.IPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -12,6 +14,7 @@ import com.yonge.cooleshow.biz.dal.dao.CourseGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.CheckCourseTimeDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto.CoursePlanDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupStudentSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.*; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -22,7 +25,9 @@ import com.yonge.cooleshow.biz.dal.service.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.support.PageUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.support.WrapperUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.vo.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.constant.SysConfigConstant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.common.entity.HttpResponseResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.exception.BizException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.page.PageInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.toolset.utils.date.DateUtil; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -488,17 +493,14 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 学生购买直播课程组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param param 传入参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     *              <p> - groupId    直播课程组id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     *              <p> - studentId    学员id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     *              <p> - price    购买金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param orderReqInfo 订单信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void buyLiveCourse(Map<String, Object> param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Long studentId = WrapperUtil.toLong(param, "studentId", "学员id不能为空!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<OrderCreateRes> buyLiveCourse(OrderReq.OrderReqInfo orderReqInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> param = WrapperUtil.toMap(orderReqInfo.getBizContent()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long groupId = WrapperUtil.toLong(param, "groupId", "课程组id不能为空!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String priceStr = WrapperUtil.toStr(param, "price", "购买金额不能为空!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取传入金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BigDecimal buyPrice = new BigDecimal(priceStr).setScale(2, RoundingMode.HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long studentId = orderReqInfo.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //校验学生信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         getSysUser(studentId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //课程组信息 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -509,38 +511,47 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (Objects.isNull(courseGroup)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("课程组不存在!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //校验购买金额是否正确 - 如后期加入优惠券之类的要先判断优惠券是否正确,并减去优惠券金额再比较 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (buyPrice.compareTo(courseGroup.getCoursePrice()) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("购买金额不正确!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //课程信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<CourseSchedule> courseList = courseScheduleService.list(Wrappers.<CourseSchedule>lambdaQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .eq(CourseSchedule::getCourseGroupId, groupId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(CourseSchedule::getCourseGroupId, groupId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (CollectionUtils.isEmpty(courseList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("课程组课程不存在!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //校验购买的课程组每节课时间是否和自己的课时冲突 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         batchCheckStudentCourseTime(studentId, courseList, CourseSchedule::getStartTime, CourseSchedule::getEndTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //返回的数据 有用后面aftet的方法使用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String, Object> result = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        result.put("courseGroup", courseGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        result.put("courseList", courseList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        result.put("studentId", studentId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> bizContent = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bizContent.put("courseGroup", courseGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bizContent.put("courseList", courseList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bizContent.put("studentId", studentId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        OrderCreateRes orderCreateRes = new OrderCreateRes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setRes(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setMerchId(courseGroup.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setBizId(courseGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setOriginalPrice(courseGroup.getCoursePrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setExpectPrice(courseGroup.getCoursePrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setBizParam(bizContent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setGoodNum(courseGroup.getCourseNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreateRes.setGoodType(GoodTypeEnum.LIVE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HttpResponseResult<OrderCreateRes> httpResponseResult = new HttpResponseResult<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        httpResponseResult.setData(orderCreateRes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return httpResponseResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 待订单创建完毕后继续后续操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param param 传入参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     *              <p> - courseList    课程列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     *              <p> - studentId    学员id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     *              <p> - courseGroup   直播课程组信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     *              <p> - orderNo   订单号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param afterParam 传入参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     *                   <p> - courseList    课程列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     *                   <p> - studentId    学员id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     *                   <p> - courseGroup   直播课程组信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void buyLiveCourseAfter(Map<String, Object> param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String orderNo = WrapperUtil.toStr(param, "orderNo", "订单号不能为空!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void buyLiveCourseAfter(UserOrderDetailVo afterParam) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> param = WrapperUtil.toMap(afterParam.getBizParam()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String orderNo = afterParam.getOrderNo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long studentId = (Long) param.get("studentId"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<CourseSchedule> courseList = (List<CourseSchedule>) param.get("courseList"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         CourseGroup courseGroup = (CourseGroup) param.get("courseGroup"); 
			 |