|
|
@@ -2,13 +2,11 @@ package cn.seecoder.courselearning.serviceimpl.order;
|
|
|
|
|
|
import cn.seecoder.courselearning.mapperservice.*;
|
|
|
import cn.seecoder.courselearning.po.*;
|
|
|
+import cn.seecoder.courselearning.service.course.CourseService;
|
|
|
import cn.seecoder.courselearning.service.order.CourseOrderService;
|
|
|
+import cn.seecoder.courselearning.service.user.UserService;
|
|
|
import cn.seecoder.courselearning.util.Constant;
|
|
|
-import cn.seecoder.courselearning.util.JSONHelper;
|
|
|
-import cn.seecoder.courselearning.vo.CouponVO;
|
|
|
-import cn.seecoder.courselearning.vo.CourseOrderVO;
|
|
|
-import cn.seecoder.courselearning.vo.ResultVO;
|
|
|
-import com.fasterxml.jackson.databind.util.BeanUtil;
|
|
|
+import cn.seecoder.courselearning.vo.*;
|
|
|
import org.omg.CORBA.IntHolder;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -17,6 +15,7 @@ import javax.annotation.Resource;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -35,6 +34,11 @@ public class CourseOrderServiceImpl implements CourseOrderService {
|
|
|
@Resource
|
|
|
CourseMapper courseMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ CourseService courseService;
|
|
|
+ @Resource
|
|
|
+ UserService userService;
|
|
|
+
|
|
|
@Override
|
|
|
public ResultVO<CourseOrderVO> insertCourseOrder(CourseOrderVO orderVO) {
|
|
|
CourseOrder order;
|
|
|
@@ -199,6 +203,55 @@ public class CourseOrderServiceImpl implements CourseOrderService {
|
|
|
return new ResultVO<>(Constant.REQUEST_SUCCESS,"获取订单信息成功",orderVO);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public ResultVO<Boolean> payOrder(Integer orderId) {
|
|
|
+ CourseOrder order = orderMapper.selectByPrimaryKey(orderId);
|
|
|
+ // 当订单状态为未支付时,检查用户余额是否足够
|
|
|
+ UserVO userVO = userService.getUser(order.getUserId());
|
|
|
+
|
|
|
+ if(userVO.getBalance()>=order.getCost()){
|
|
|
+ userService.decreaseBalance(userVO.getId(),order.getCost());
|
|
|
+ // 支付成功,将订单存入数据库
|
|
|
+ ResultVO<CourseOrderVO> resultVO = updateCourseOrder(orderId,Constant.ORDER_STATUS_SUCCESS);
|
|
|
+ if (resultVO.getCode().equals(Constant.REQUEST_SUCCESS)){
|
|
|
+ return new ResultVO<>(Constant.REQUEST_SUCCESS,"付款成功");
|
|
|
+ }else{
|
|
|
+ return new ResultVO<>(Constant.REQUEST_FAIL,resultVO.getMsg());
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ return new ResultVO<>(Constant.REQUEST_FAIL,"付款失败,余额不足");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建订单,没有检查重复
|
|
|
+ * @param courseId
|
|
|
+ * @param userId
|
|
|
+ * @return
|
|
|
+ * @author cyx
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResultVO<CourseOrderVO> createCourseOrder(Integer courseId, Integer userId) {
|
|
|
+ CourseOrder order = new CourseOrder();
|
|
|
+ order.setUserId(userId);
|
|
|
+ order.setCourseId(courseId);
|
|
|
+ CourseVO courseVO = courseService.getCourse(courseId,userId);
|
|
|
+ order.setCost(courseVO.getCost());
|
|
|
+ order.setStatus(Constant.ORDER_STATUS_UNPAID);
|
|
|
+ order.setCreateTime(new Date());
|
|
|
+ order.setCourseName(courseVO.getName());
|
|
|
+ order.setOrigin(courseVO.getCost());
|
|
|
+
|
|
|
+ if(orderMapper.insert(order) != 1){
|
|
|
+ return new ResultVO<>(Constant.REQUEST_FAIL,"创建失败",null);
|
|
|
+ }
|
|
|
+
|
|
|
+ CourseOrderVO courseOrderVO = new CourseOrderVO(order);
|
|
|
+
|
|
|
+ return new ResultVO<>(Constant.REQUEST_SUCCESS,"创建成功",courseOrderVO);
|
|
|
+ }
|
|
|
+
|
|
|
public void updateBestCost(CourseOrderVO orderVO) {
|
|
|
List<Coupon> usedCoupons = couponMapper.selectByOrderId(orderVO.getId());
|
|
|
boolean[] used = new boolean[usedCoupons.size()];
|