liujie
2025-12-31 1386342e710ed0b5ccd2eb0b25229e3fa2b0f99c
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/CourseController.java
@@ -1,23 +1,18 @@
package com.ruoyi.web.controller.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.ImmutableMap;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.OrderNos;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.model.TAppUser;
import com.ruoyi.system.model.TCourse;
import com.ruoyi.system.model.TCourseOrder;
import com.ruoyi.system.model.TInsuranceOrder;
import com.ruoyi.system.model.TOtherConfig;
import com.ruoyi.system.query.CourseOrderListQuery;
import com.ruoyi.system.query.GetCourseListQuery;
import com.ruoyi.system.service.TAppUserService;
import com.ruoyi.system.service.TCourseOrderService;
import com.ruoyi.system.service.TCourseService;
import com.ruoyi.system.task.base.QuartzManager;
import com.ruoyi.system.task.base.TimeJobType;
import com.ruoyi.system.task.jobs.OrderJob;
import com.ruoyi.system.service.*;
import com.ruoyi.system.wxPay.model.WeixinPayProperties;
import com.ruoyi.system.wxPay.utils.WxRefundUtil;
import com.ruoyi.system.wxPay.utils.WxV3Pay;
@@ -28,6 +23,7 @@
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
@@ -47,15 +43,29 @@
    private final WxV3Pay wxV3Pay;
    private final WeixinPayProperties weixinPayProperties;
    private final TAppUserService appUserService;
    private final TInsuranceOrderService insuranceOrderService;
    private final TOtherConfigService otherConfigService;
    public CourseController(TCourseService courseService, TCourseOrderService courseOrderService, TokenService tokenService, WxV3Pay wxV3Pay, WeixinPayProperties weixinPayProperties, TAppUserService appUserService) {
    public CourseController(TCourseService courseService, TCourseOrderService courseOrderService, TokenService tokenService, WxV3Pay wxV3Pay, WeixinPayProperties weixinPayProperties, TAppUserService appUserService, TInsuranceOrderService insuranceOrderService, TOtherConfigService otherConfigService) {
        this.courseService = courseService;
        this.courseOrderService = courseOrderService;
        this.tokenService = tokenService;
        this.wxV3Pay = wxV3Pay;
        this.weixinPayProperties = weixinPayProperties;
        this.appUserService = appUserService;
        this.insuranceOrderService = insuranceOrderService;
        this.otherConfigService = otherConfigService;
    }
    @GetMapping("/getOtherConfig")
    @ApiOperation(value = "课程模块--是否开启课程缴费 1=是 0=否",response =  TOtherConfig.class)
    public R<TOtherConfig> getOtherConfig() {
        TOtherConfig tOtherConfig = otherConfigService.getById(1);
        return R.ok(tOtherConfig);
    }
    @PostMapping("/getCourseList")
    @ApiOperation(value = "课程模块--列表",response =  TCourse.class)
@@ -121,8 +131,19 @@
    @ApiOperation(value = "课程模块--报名")
    public R<Map<String, Object>> saveOrder(@RequestBody TCourseOrder courseOrder) {
        String userId = tokenService.getLoginUserApplet().getUserId();
        TAppUser appUser = appUserService.getById(userId);
//        TAppUser appUser = appUserService.getById(userId);
        TCourse course = courseService.getById(courseOrder.getCourseId());
        LocalDate endTime = course.getEndTime();
        long count1 = insuranceOrderService.count(new LambdaQueryWrapper<TInsuranceOrder>().eq(TInsuranceOrder::getType,course.getCourseType()).eq(TInsuranceOrder::getAppUserId, userId).eq(TInsuranceOrder::getStatus, 2));
        if(count1<=0){
            return R.fail("请先缴纳保险费");
        }
        if(endTime.isBefore(LocalDate.now())){
            return R.fail("课程已截至报名");
        }
        long count = courseOrderService.count(Wrappers.lambdaQuery(TCourseOrder.class).eq(TCourseOrder::getCourseId, course.getId()).in(TCourseOrder::getPayStatus, Arrays.asList(1, 2, 5)));
        if(count>=course.getPeopleLimit()){
            return R.fail("报名人数已满");
@@ -155,7 +176,13 @@
    @PostMapping("/payOrder")
    @ApiOperation(value = "课程模块--支付订单")
    public R<Map<String, Object>> payOrder(@RequestBody TCourseOrder courseOrder) {
//        String userId = tokenService.getLoginUserApplet().getUserId();
        String userId = tokenService.getLoginUserApplet().getUserId();
        TCourse course = courseService.getById(courseOrder.getCourseId());
        long count1 = insuranceOrderService.count(new LambdaQueryWrapper<TInsuranceOrder>().eq(TInsuranceOrder::getType,course.getCourseType()).eq(TInsuranceOrder::getAppUserId, userId).eq(TInsuranceOrder::getStatus, 2));
        if(count1<=0){
            return R.fail("请先缴纳保险费");
        }
//        TAppUser appUser = appUserService.getById(userId);
        TCourseOrder courseOrder1 = courseOrderService.getById(courseOrder.getId());
//        if(!userId.equals(courseOrder1.getAppUserId())){