liujie
2025-12-29 5ca4dbed191c98f121b9d493d943e72ab8a3645e
文档调整
5个文件已添加
1个文件已修改
251 ■■■■■ 已修改文件
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/CourseController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TInsuranceOrderMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TInsuranceOrder.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TInsuranceOrderService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TInsuranceOrderServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TInsuranceMapper.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/CourseController.java
@@ -1,23 +1,20 @@
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.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.TInsuranceOrderService;
import com.ruoyi.system.wxPay.model.WeixinPayProperties;
import com.ruoyi.system.wxPay.utils.WxRefundUtil;
import com.ruoyi.system.wxPay.utils.WxV3Pay;
@@ -28,6 +25,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,14 +45,16 @@
    private final WxV3Pay wxV3Pay;
    private final WeixinPayProperties weixinPayProperties;
    private final TAppUserService appUserService;
    private final TInsuranceOrderService insuranceOrderService;
    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) {
        this.courseService = courseService;
        this.courseOrderService = courseOrderService;
        this.tokenService = tokenService;
        this.wxV3Pay = wxV3Pay;
        this.weixinPayProperties = weixinPayProperties;
        this.appUserService = appUserService;
        this.insuranceOrderService = insuranceOrderService;
    }
    @PostMapping("/getCourseList")
@@ -121,8 +121,18 @@
    @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::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 +165,11 @@
    @PostMapping("/payOrder")
    @ApiOperation(value = "课程模块--支付订单")
    public R<Map<String, Object>> payOrder(@RequestBody TCourseOrder courseOrder) {
//        String userId = tokenService.getLoginUserApplet().getUserId();
        String userId = tokenService.getLoginUserApplet().getUserId();
        long count1 = insuranceOrderService.count(new LambdaQueryWrapper<TInsuranceOrder>().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())){
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TInsuranceOrderMapper.java
New file
@@ -0,0 +1,17 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.model.TInsuranceOrder;
/**
 * <p>
 * 用户保险费 Mapper 接口
 * </p>
 *
 * @author administrator
 * @since 2025-12-29
 */
public interface TInsuranceOrderMapper extends BaseMapper<TInsuranceOrder> {
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TInsuranceOrder.java
New file
@@ -0,0 +1,129 @@
package com.ruoyi.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.ruoyi.common.core.domain.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 用户保险费
 * </p>
 *
 * @author administrator
 * @since 2025-12-29
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_insurance_order")
public class TInsuranceOrder  extends BaseModel {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id",  type = IdType.ASSIGN_ID)
    private String id;
    @TableField("app_user_id")
    private String appUserId;
    private String name;
    private String phone;
    @TableField("id_card")
    private String idCard;
    /**
     * 支付凭证
     */
    private String img;
    /**
     * 1线上2线下
     */
    @TableField("pay_type")
    private Integer payType;
    /**
     * 支付编号
     */
    @TableField("pay_no")
    private String payNo;
    /**
     * 支付金额
     */
    @TableField("pay_money")
    private BigDecimal payMoney;
    /**
     * 支付时间
     */
    @TableField("pay_time")
    private Date payTime;
    /**
     * 支付流水号
     */
    @TableField("transaction_id")
    private String transactionId;
    /**
     * 0未付款 1已退  2已支付
     */
    @TableField("status")
    private Integer status;
    /**
     * 退款时间
     */
    @TableField("refund_time")
    private Date refundTime;
    /**
     * 申请退款时间
     */
    @TableField("request_refund_time")
    private Date requestRefundTime;
    /**
     * 退款金额
     */
    @TableField("refund_money")
    private Double refundMoney;
    /**
     * 退款原因
     */
    @TableField("refund_reason")
    private String refundReason;
    /**
     * 申请退款原因图片
     */
    @TableField("refund_reason_pictures")
    private String refundReasonPictures;
    /**
     * 退款单号
     */
    @TableField("refund_number")
    private String refundNumber;
    /**
     * 退款流水号
     */
    @TableField("refund_transaction_id")
    private String refundTransactionId;
    /**
     * 退款审核状态 1=待审核 2=通过 3=驳回
     */
    @TableField("refund_status")
    private Integer refundStatus;
    /**
     * 退款凭证
     */
    @TableField("refund_voucher")
    private String refundVoucher;
    /**
     * 驳回原因
     */
    @TableField("reject_reason")
    private String rejectReason;
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TInsuranceOrderService.java
New file
@@ -0,0 +1,17 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.model.TInsuranceOrder;
/**
 * <p>
 * 用户保险费 服务类
 * </p>
 *
 * @author administrator
 * @since 2025-12-29
 */
public interface TInsuranceOrderService extends IService<TInsuranceOrder> {
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TInsuranceOrderServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.mapper.TInsuranceOrderMapper;
import com.ruoyi.system.model.TInsuranceOrder;
import com.ruoyi.system.service.TInsuranceOrderService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 用户保险费 服务实现类
 * </p>
 *
 * @author administrator
 * @since 2025-12-29
 */
@Service
public class TInsuranceOrderServiceImpl extends ServiceImpl<TInsuranceOrderMapper, TInsuranceOrder> implements TInsuranceOrderService {
}
ruoyi-system/src/main/resources/mapper/system/TInsuranceMapper.xml
New file
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.TInsuranceOrderMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TInsuranceOrder">
        <id column="id" property="id" />
        <result column="app_user_id" property="appUserId" />
        <result column="name" property="name" />
        <result column="phone" property="phone" />
        <result column="id_card" property="idCard" />
        <result column="img" property="img" />
        <result column="pay_type" property="payType" />
        <result column="pay_no" property="payNo" />
        <result column="pay_money" property="payMoney" />
        <result column="pay_time" property="payTime" />
        <result column="transaction_id" property="transactionId" />
        <result column="status" property="status" />
        <result column="refund_time" property="refundTime" />
        <result column="request_refund_time" property="requestRefundTime" />
        <result column="refund_money" property="refundMoney" />
        <result column="refund_reason" property="refundReason" />
        <result column="refund_reason_pictures" property="refundReasonPictures" />
        <result column="refund_number" property="refundNumber" />
        <result column="refund_transaction_id" property="refundTransactionId" />
        <result column="refund_status" property="refundStatus" />
        <result column="refund_voucher" property="refundVoucher" />
        <result column="reject_reason" property="rejectReason" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="create_by" property="createBy" />
        <result column="update_by" property="updateBy" />
        <result column="disabled" property="disabled" />
    </resultMap>
</mapper>