<?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="cn.iocoder.yudao.module.course.mapper.SchoolCourseOrderMapper">

    <!--
        一般情况下，尽可能使用 Mapper 进行 CRUD 增删改查即可。
        无法满足的场景，例如说多表关联查询，才使用 XML 编写 SQL。
        代码生成器暂时只生成 Mapper XML 文件本身，更多推荐 MybatisX 快速开发插件来生成查询。
        文档可见：https://www.iocoder.cn/MyBatis/x-plugins/
     -->

    <select id="queryPage" resultType="cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO">
        SELECT
        main.*,
        CASE
        WHEN EXISTS (SELECT 1
        FROM drive_school_course_order dsc
        WHERE dsc.old_order_id = main.id and dsc.deleted = 0 and main.deleted = 0)
        THEN TRUE
        ELSE FALSE
        END AS isCreated
        FROM
        drive_school_course_order main
        <where>
        main.deleted = 0
            <if test="entity.orderNo!= null and entity.orderNo != ''"> and main.order_no = #{entity.orderNo}</if>
            <if test="entity.userName != null and entity.userName != ''"> and main.user_name like concat('%', #{entity.userName}, '%')</if>
            <if test="entity.userId != null and entity.userId != ''"> and main.user_id = #{entity.userId}</if>
            <if test="entity.paymentStatus != null and entity.paymentStatus != ''"> and main.payment_status = #{entity.paymentStatus}</if>
            <if test="entity.ifEnd != null and entity.ifEnd != ''"> and main.if_end = #{entity.ifEnd}</if>
        </where>
        order by main.create_time desc
    </select>

    <select id="queryPageNew" resultType="cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO">
        SELECT
        main.*,
        ds.photo,
        ds.type,
        CASE
        WHEN EXISTS (SELECT 1
        FROM drive_school_course_order dsc
        WHERE dsc.old_order_id = main.id and dsc.deleted = 0 and main.deleted = 0)
        THEN TRUE
        ELSE FALSE
        END AS isCreated
        FROM
        drive_school_course_order main
        LEFT JOIN drive_school_course ds on main.course_id = ds.id and ds.deleted = 0
        <where>
            main.deleted = 0
            <if test="entity.orderNo!= null and entity.orderNo != ''"> and main.order_no = #{entity.orderNo}</if>
            <if test="entity.userName != null and entity.userName != ''"> and main.user_name like concat('%', #{entity.userName}, '%')</if>
            <if test="entity.userId != null and entity.userId != ''"> and main.user_id = #{entity.userId}</if>
            <if test="entity.paymentStatus != null and entity.paymentStatus != ''"> and main.payment_status = #{entity.paymentStatus}</if>
            <if test="entity.ifEnd != null and entity.ifEnd != ''"> and main.if_end = #{entity.ifEnd}</if>
        </where>
        order by main.create_time desc
    </select>
    <select id="selectByCoachUserId" resultType="java.lang.Double">
        SELECT
        SUM(dsco.reserve_money+dsco.rest_money )
        FROM
        drive_school_course_order dsco
        <if test="coachId != null and coachId != ''">
            LEFT JOIN drive_school_student dss ON dsco.user_id = dss.user_id
            AND dss.deleted = 0
        </if>
        WHERE
        dsco.deleted = 0
        AND dsco.payment_status IN ( '2', '3', '4', '5' )
        <if test="coachId != null and coachId != ''">
            AND dss.source_user_id = #{coachId}
        </if>
        <if test="startTime!=null and startTime!=''">
            AND dsco.create_time &gt;= #{startTime}
        </if>
        <if test="endTime!=null and endTime!=''">
            AND dsco.create_time &lt;= #{endTime}
        </if>
    </select>


    <select id="getOrderInfo" resultType="cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO">
        SELECT *
        FROM drive_school_course_order
        WHERE user_id = #{userId}
          AND payment_status IN (2, 3, 4, 5)
          AND if_end = 0
          AND if_assignment_coach = 1
          AND deleted = 0
        ORDER BY create_time DESC
        LIMIT 1
    </select>
</mapper>
