|
@@ -1,30 +1,33 @@
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseScheduleRepliedDao;
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseScheduleRepliedDao;
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
|
|
import com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto;
|
|
import com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
|
|
import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
|
|
import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
|
|
import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
|
|
import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
|
|
import com.yonge.cooleshow.biz.dal.dto.search.PracticeTeacherSearch;
|
|
import com.yonge.cooleshow.biz.dal.dto.search.PracticeTeacherSearch;
|
|
import com.yonge.cooleshow.biz.dal.entity.*;
|
|
import com.yonge.cooleshow.biz.dal.entity.*;
|
|
import com.yonge.cooleshow.biz.dal.enums.CourseGroupEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.CourseGroupEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
|
|
import com.yonge.cooleshow.biz.dal.service.*;
|
|
import com.yonge.cooleshow.biz.dal.service.*;
|
|
import com.yonge.cooleshow.biz.dal.support.PageUtil;
|
|
import com.yonge.cooleshow.biz.dal.support.PageUtil;
|
|
import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
|
|
import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
|
|
-import com.yonge.cooleshow.biz.dal.vo.CourseStudent;
|
|
|
|
-import com.yonge.cooleshow.biz.dal.vo.MyCourseVo;
|
|
|
|
-import com.yonge.cooleshow.biz.dal.vo.PracticeTeacherVo;
|
|
|
|
-import com.yonge.cooleshow.biz.dal.vo.TeacherLiveCourseInfoVo;
|
|
|
|
|
|
+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.constant.SysConfigConstant;
|
|
|
|
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
|
|
import com.yonge.cooleshow.common.exception.BizException;
|
|
import com.yonge.cooleshow.common.exception.BizException;
|
|
import com.yonge.cooleshow.common.page.PageInfo;
|
|
import com.yonge.cooleshow.common.page.PageInfo;
|
|
import com.yonge.toolset.utils.date.DateUtil;
|
|
import com.yonge.toolset.utils.date.DateUtil;
|
|
@@ -43,6 +46,7 @@ import java.time.temporal.TemporalAdjusters;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.function.BiConsumer;
|
|
import java.util.function.BiConsumer;
|
|
import java.util.function.Function;
|
|
import java.util.function.Function;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 老师课程表(CourseSchedule)表服务实现类
|
|
* 老师课程表(CourseSchedule)表服务实现类
|
|
@@ -787,24 +791,30 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
param.put("endDate", lastDay.toString());
|
|
param.put("endDate", lastDay.toString());
|
|
Page<CourseStudent> pageInfo = PageUtil.getPageInfo(param);
|
|
Page<CourseStudent> pageInfo = PageUtil.getPageInfo(param);
|
|
pageInfo.setAsc(" cs.start_time_");
|
|
pageInfo.setAsc(" cs.start_time_");
|
|
- return PageUtil.pageInfo(baseMapper.queryStudentLiveCourse(pageInfo,param));
|
|
|
|
|
|
+ return PageUtil.pageInfo(baseMapper.queryStudentLiveCourse(pageInfo, param));
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
- * @Description: 创建陪练课
|
|
|
|
|
|
+ * @Description: 学生购买陪练课
|
|
* @Author: cy
|
|
* @Author: cy
|
|
- * @Date: 2022/4/20
|
|
|
|
|
|
+ * @Date: 2022/4/21
|
|
*/
|
|
*/
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
- public void creatPractice(PracticeScheduleDto scheduleDto){
|
|
|
|
- //创建单号
|
|
|
|
- String orderNo="";
|
|
|
|
|
|
+ public HttpResponseResult<OrderCreateRes> buyPracticeCourse(OrderReq.OrderReqInfo orderReqInfo) {
|
|
|
|
+ log.info("学生购买陪练课,请求参数:{}", JSON.toJSONString(orderReqInfo));
|
|
|
|
+ Long studentId = orderReqInfo.getUserId();
|
|
|
|
+
|
|
|
|
+// PracticeScheduleDto scheduleDto= (PracticeScheduleDto) orderReqInfo.getBizContent();
|
|
|
|
+ ObjectMapper objectMapper = new ObjectMapper();
|
|
|
|
+ PracticeScheduleDto scheduleDto = objectMapper.convertValue(orderReqInfo.getBizContent(), PracticeScheduleDto.class);
|
|
|
|
+
|
|
|
|
+ String orderNo = orderReqInfo.getOrderNo();
|
|
scheduleDto.setType(CourseScheduleEnum.PRACTICE.getCode());
|
|
scheduleDto.setType(CourseScheduleEnum.PRACTICE.getCode());
|
|
scheduleDto.setStatus(CourseGroupEnum.NOT_SALE.getCode());
|
|
scheduleDto.setStatus(CourseGroupEnum.NOT_SALE.getCode());
|
|
scheduleDto.setMixStudentNum(1);
|
|
scheduleDto.setMixStudentNum(1);
|
|
|
|
+ scheduleDto.setStudentId(studentId);
|
|
|
|
|
|
- //写入course_group
|
|
|
|
|
|
+ //course_group
|
|
baseMapper.addCourseGroup(scheduleDto);
|
|
baseMapper.addCourseGroup(scheduleDto);
|
|
Long groupId = scheduleDto.getGroupId();
|
|
Long groupId = scheduleDto.getGroupId();
|
|
|
|
|
|
@@ -818,12 +828,12 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
schedule.setEndTime(date.getEndTime());
|
|
schedule.setEndTime(date.getEndTime());
|
|
schedule.setCourseGroupId(groupId);
|
|
schedule.setCourseGroupId(groupId);
|
|
schedule.setType(CourseScheduleEnum.PRACTICE.getCode());
|
|
schedule.setType(CourseScheduleEnum.PRACTICE.getCode());
|
|
- schedule.classNum(i+1);
|
|
|
|
|
|
+ schedule.classNum(i + 1);
|
|
schedule.setTeacherId(scheduleDto.getTeacherId());
|
|
schedule.setTeacherId(scheduleDto.getTeacherId());
|
|
schedule.setLock(1);
|
|
schedule.setLock(1);
|
|
schedule.setStatus(CourseScheduleEnum.NOT_START.getCode());
|
|
schedule.setStatus(CourseScheduleEnum.NOT_START.getCode());
|
|
schedule.setCreatedBy(scheduleDto.getStudentId());
|
|
schedule.setCreatedBy(scheduleDto.getStudentId());
|
|
- //写入course_schedule
|
|
|
|
|
|
+ //course_schedule
|
|
baseMapper.insert(schedule);
|
|
baseMapper.insert(schedule);
|
|
|
|
|
|
Long scheduleId = schedule.getId();
|
|
Long scheduleId = schedule.getId();
|
|
@@ -836,17 +846,65 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
payment.setOriginalPrice(unitPrice);
|
|
payment.setOriginalPrice(unitPrice);
|
|
payment.setExpectPrice(unitPrice);
|
|
payment.setExpectPrice(unitPrice);
|
|
payment.setActualPrice(unitPrice);
|
|
payment.setActualPrice(unitPrice);
|
|
- //写course_schedule_student_payment
|
|
|
|
|
|
+ //course_schedule_student_payment
|
|
courseScheduleStudentPaymentService.save(payment);
|
|
courseScheduleStudentPaymentService.save(payment);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ OrderCreateRes orderCreateRes = new OrderCreateRes();
|
|
|
|
+ orderCreateRes.setRes(true);
|
|
|
|
+ orderCreateRes.setMerchId(scheduleDto.getTeacherId());
|
|
|
|
+ orderCreateRes.setBizId(groupId);
|
|
|
|
+ orderCreateRes.setOriginalPrice(scheduleDto.getCoursePrice());
|
|
|
|
+ orderCreateRes.setExpectPrice(scheduleDto.getCoursePrice());
|
|
|
|
+ orderCreateRes.setGoodNum(scheduleDto.getCourseNum());
|
|
|
|
+ orderCreateRes.setGoodType(GoodTypeEnum.PRACTICE);
|
|
|
|
+ HttpResponseResult<OrderCreateRes> httpResponseResult = new HttpResponseResult<>();
|
|
|
|
+ httpResponseResult.setData(orderCreateRes);
|
|
|
|
+ return httpResponseResult;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 陪练课下单
|
|
|
|
- *
|
|
|
|
- * 调用下单接口
|
|
|
|
- * 成功:将course_schedule中lock_改为0
|
|
|
|
- * 失败:回滚以上数据
|
|
|
|
|
|
+ * 学生购买陪练课-成功-回调
|
|
|
|
+ */
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void buyPracticeCourseSuccess(UserOrderDetailVo orderParam) {
|
|
|
|
+ log.info("学生购买陪练课-成功-回调,请求参数:{}", JSON.toJSONString(orderParam));
|
|
|
|
+ String orderNo = orderParam.getOrderNo();
|
|
|
|
+ List<CourseScheduleStudentPayment> paymentList = paymentDao.selectList(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
|
|
|
|
+ .eq(CourseScheduleStudentPayment::getOrderNo, orderNo));
|
|
|
|
+ if (paymentList.isEmpty()) {
|
|
|
|
+ throw new BizException("订单不存在!");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //course_schedule中lock_改为0
|
|
|
|
+ List<Long> scheduleIds = paymentList.stream().map(CourseScheduleStudentPayment::getCourseId).collect(Collectors.toList());
|
|
|
|
+ baseMapper.updateLock(scheduleIds);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 学生购买陪练课-失败-回调
|
|
*/
|
|
*/
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void buyPracticeCourseFailed(String orderNo) {
|
|
|
|
+ List<CourseScheduleStudentPayment> paymentList = paymentDao.selectList(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
|
|
|
|
+ .eq(CourseScheduleStudentPayment::getOrderNo, orderNo));
|
|
|
|
+ if (paymentList.isEmpty()) {
|
|
|
|
+ throw new BizException("订单不存在!");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<Long> scheduleIds = paymentList.stream().map(CourseScheduleStudentPayment::getCourseId).collect(Collectors.toList());
|
|
|
|
+ Long courseGroupId = paymentList.get(0).getCourseGroupId();
|
|
|
|
+
|
|
|
|
+ //删除course_schedule_student_payment数据
|
|
|
|
+ courseScheduleStudentPaymentService.remove(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
|
|
|
|
+ .eq(CourseScheduleStudentPayment::getOrderNo, orderNo));
|
|
|
|
+ //删除course_schedule数据
|
|
|
|
+ this.removeByIds(scheduleIds);
|
|
|
|
+ //删除course_group数据
|
|
|
|
+ courseGroupService.removeById(courseGroupId);
|
|
|
|
+
|
|
|
|
+ //修改订单为失败
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|