|
@@ -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("用户不存在"));
|
|
|
+ }
|
|
|
}
|