liujie
2026-02-02 23d3223ddb39f9fab862139d3ffbe4be25acc492
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/CourseController.java
@@ -96,8 +96,8 @@
        Page<TCourseOrder> page = new Page<>(query.getPageNum(), query.getPageSize());
        Page<TCourseOrder> courseOrderPage = courseOrderService.page(page, Wrappers.<TCourseOrder>lambdaQuery()
                .eq(TCourseOrder::getAppUserId, userId)
                .ne(TCourseOrder::getPayStatus, 4)
                .eq(Objects.nonNull(query.getPayStatus()),TCourseOrder::getPayStatus, query.getPayStatus())
                .ne(TCourseOrder::getPayStatus, 4)
                .orderByDesc(TCourseOrder::getCreateTime));
        List<TCourseOrder> records = courseOrderPage.getRecords();
        if(!records.isEmpty()){
@@ -138,9 +138,65 @@
        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("报名人数已满");
        }
        long userCount = courseOrderService.count(Wrappers.lambdaQuery(TCourseOrder.class)
                .eq(TCourseOrder::getIdCard, courseOrder.getIdCard())
                .eq(TCourseOrder::getCourseId, course.getId())
                .in(TCourseOrder::getPayStatus, 1, 2, 5, 6));
        if(userCount>0){
            return R.fail("该课程已提交相同的报名意向!");
        }
        courseOrder.setAppUserId(userId);
        courseOrder.setPayMoney(course.getCourseCost());
        courseOrder.setPayStatus(1);
        courseOrder.setOrderNumber(OrderNos.getDid());
        boolean save = courseOrderService.save(courseOrder);
//        if (save) {
//            Map<String, ? extends Object> maps =
//                    new ImmutableMap.Builder<String, String>().
//                            put("id", courseOrder.getId())
//                            .build();
//            QuartzManager.addJob(
//                    OrderJob.class,
//                    (OrderJob.name+courseOrder.getId()).toUpperCase(),
//                    TimeJobType.CANCEL_ORDER,
//                    DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(15)),
//                    maps
//            );
//            Map<String, Object> result = wxV3Pay.jsApi(courseOrder.getOrderNumber(), course.getCourseCost().multiply(BigDecimal.valueOf(100)).longValue(), appUser.getOpenId(),"购买课程","");
//            return R.ok(result);
////            return R.ok();
//        }
        return R.ok();
    }
    @PostMapping("/saveOrderAndPay")
    @ApiOperation(value = "课程模块--报名并支付")
    public R<Map<String, Object>> saveOrderAndPay(@RequestBody TCourseOrder courseOrder) {
        String userId = tokenService.getLoginUserApplet().getUserId();
        TAppUser appUser = appUserService.getById(userId);
        TCourse course = courseService.getById(courseOrder.getCourseId());
        LocalDate endTime = course.getEndTime();
        TOtherConfig config = otherConfigService.getById(1);
        if(config.getIsOpenInsurance()==1){
            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(course.getIsOpenCourse()==0){
            return R.fail("课程未开启缴费");
        }
        if(endTime.isBefore(LocalDate.now())){
@@ -179,14 +235,19 @@
    @ApiOperation(value = "课程模块--支付订单")
    public R<Map<String, Object>> payOrder(@RequestBody TCourseOrder courseOrder) {
        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());
        TCourse course = courseService.getById(courseOrder1.getCourseId());
        TOtherConfig config = otherConfigService.getById(1);
        if(config.getIsOpenInsurance()==1){
            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);
//        if(!userId.equals(courseOrder1.getAppUserId())){
//            return R.fail("无权限操作");
//        }
@@ -199,7 +260,7 @@
        courseOrder1.setIdCard(courseOrder.getIdCard());
        courseOrderService.updateById(courseOrder1);
        Map<String, Object> result = wxV3Pay.jsApi(courseOrder1.getOrderNumber(), courseOrder1.getPayMoney().multiply(BigDecimal.valueOf(100)).longValue(), "oz71-1_OevadwmESB_IFAW7PucWY","购买课程","");
        Map<String, Object> result = wxV3Pay.jsApi(courseOrder1.getOrderNumber(), courseOrder1.getPayMoney().multiply(BigDecimal.valueOf(100)).longValue(), appUser.getOpenId(),"购买课程","");
        return R.ok(result);
    }