puzhibing
2023-07-12 aa43a92c7ec9053dbaef92fe5ccb3011b670442c
cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
@@ -3,12 +3,15 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.course.entity.TCourse;
import com.dsh.course.entity.TCoursePackagePayment;
import com.dsh.course.entity.TCoursePackageType;
import com.dsh.course.feignclient.model.ExerciseVideo;
import com.dsh.course.model.*;
import com.dsh.course.service.TCoursePackagePaymentService;
import com.dsh.course.service.TCoursePackageService;
import com.dsh.course.service.TCoursePackageTypeService;
import com.dsh.course.service.TCourseService;
import com.dsh.course.util.PayMoneyUtil;
import com.dsh.course.util.ResultUtil;
import com.dsh.course.util.TokenUtil;
import io.swagger.annotations.Api;
@@ -21,8 +24,12 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Api
@CrossOrigin
@@ -43,6 +50,12 @@
    @Autowired
    private TCoursePackageTypeService coursePackageTypeService;
    @Autowired
    private PayMoneyUtil payMoneyUtil;
    @Autowired
    private TCoursePackagePaymentService coursePackagePaymentService;
@@ -99,7 +112,7 @@
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<List<CoursePackageListVo>> queryCourseList(@RequestBody CoursePackageList coursePackageList){
    public ResultUtil<List<CoursePackageListVo>> queryCourseList(CoursePackageList coursePackageList){
        try {
            Integer uid = tokenUtil.getUserIdFormRedis();
            if(null == uid){
@@ -120,11 +133,11 @@
    @ApiOperation(value = "获取课程详情", tags = {"APP-课程列表"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "课包id", name = "id", dataType = "int", required = true),
            @ApiImplicitParam(value = "经度", name = "lon", dataType = "string", required = true),
            @ApiImplicitParam(value = "纬度", name = "lat", dataType = "string", required = true),
            @ApiImplicitParam(value = "经度", name = "lon", dataType = "string", required = false),
            @ApiImplicitParam(value = "纬度", name = "lat", dataType = "string", required = false),
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<CoursePackageInfo> queryCourseInfo(@RequestBody Integer id, @RequestBody String lon, @RequestBody String lat){
    public ResultUtil<CoursePackageInfo> queryCourseInfo(Integer id, String lon, String lat){
        try {
            Integer uid = tokenUtil.getUserIdFormRedis();
            if(null == uid){
@@ -142,8 +155,13 @@
    public ResultUtil paymentCourse(@RequestBody PaymentCourseVo paymentCourseVo){
    @ResponseBody
    @PostMapping("/api/course/paymentCourse")
    @ApiOperation(value = "支付课程", tags = {"APP-课程列表"})
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil paymentCourse(PaymentCourseVo paymentCourseVo){
        try {
            Integer uid = tokenUtil.getUserIdFormRedis();
            if(null == uid){
@@ -156,4 +174,89 @@
        }
    }
    /**
     * 购买课程微信支付回调
     * @param request
     * @param response
     */
    @ResponseBody
    @PostMapping("/base/course/weChatPaymentCourseCallback")
    public void weChatPaymentCourseCallback(HttpServletRequest request, HttpServletResponse response){
        try {
            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
            if(null != map){
                String code = map.get("out_trade_no");
                String transaction_id = map.get("transaction_id");
                String result = map.get("result");
                List<TCoursePackagePayment> list = coursePackagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("state", 1).eq("code", code).eq("payType", 1));
                TCoursePackagePayment one = list.get(0);
                if(one.getPayStatus() == 1){
                    for (TCoursePackagePayment coursePackagePayment : list) {
                        coursePackagePayment.setPayStatus(2);
                        coursePackagePayment.setOrderNumber(transaction_id);
                    }
                    coursePackagePaymentService.updateBatchById(list);
                }
                PrintWriter out = response.getWriter();
                out.write(result);
                out.flush();
                out.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 购买课程支付宝回调
     * @param request
     * @param response
     */
    @ResponseBody
    @PostMapping("/base/course/aliPaymentCourseCallback")
    public void aliPaymentCourseCallback(HttpServletRequest request, HttpServletResponse response){
        try {
            Map<String, String> map = payMoneyUtil.alipayCallback(request);
            if(null != map){
                String code = map.get("out_trade_no");
                String trade_no = map.get("trade_no");
                List<TCoursePackagePayment> list = coursePackagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("state", 1).eq("code", code).eq("payType", 2));
                TCoursePackagePayment one = list.get(0);
                if(one.getPayStatus() == 1){
                    for (TCoursePackagePayment coursePackagePayment : list) {
                        coursePackagePayment.setPayStatus(2);
                        coursePackagePayment.setOrderNumber(trade_no);
                    }
                    coursePackagePaymentService.updateBatchById(list);
                }
                PrintWriter out = response.getWriter();
                out.write("success");
                out.flush();
                out.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 根据id获取课程数据
     * @param id
     * @return
     */
    @ResponseBody
    @PostMapping("/course/queryCourseById")
    public TCourse queryCourseById(@RequestBody Integer id){
        try {
            return courseService.getById(id);
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
}