lanan-system/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolStudentMapper.xml

299 lines
11 KiB
XML
Raw Normal View History

2025-01-18 11:22:16 +08:00
<?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.base.mapper.DlDriveSchoolStudentMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<select id="queryListPage" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO">
SELECT
main.*
FROM
drive_school_student main
<where>
main.deleted = 0
<if test="entity.name != null and entity.name != ''">and main.name like concat('%', #{entity.name}, '%')</if>
</where>
order by main.create_time desc
</select>
2025-01-21 00:12:53 +08:00
<select id="selectCanExamStudentList"
resultType="cn.iocoder.yudao.module.base.entity.DlDriveSchoolStudent">
SELECT
dss.*
FROM
drive_school_process dsp
LEFT JOIN drive_school_student dss ON dsp.user_id = dss.user_id
AND dss.deleted = 0
WHERE
dsp.deleted = 0
AND dsp.coach_id = #{coachId}
AND dsp.course_id = #{courseId}
AND dsp.`subject` = #{subject}
2025-01-21 14:46:26 +08:00
<if test="userName!=null and userName!=''">
AND dsp.user_name LIKE CONCAT('%',#{userName},'%')
</if>
2025-01-21 00:12:53 +08:00
AND dsp.`status` = '1'
AND dsp.exam_status IS NULL
GROUP BY
dss.id
ORDER BY
dss.create_time DESC
</select>
2025-02-06 16:19:08 +08:00
<select id="pageStaffStudent" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStaffVO">
SELECT
main.id AS id,
2025-02-21 10:30:09 +08:00
main.NAME AS NAME,
2025-02-06 16:19:08 +08:00
main.type AS type,
2025-02-12 14:59:55 +08:00
main.avatar AS avatar,
2025-02-21 10:30:09 +08:00
main.phone AS phone,
main.user_id AS userId,
dsco.course_type,
dsp.`subject`
2025-02-06 16:19:08 +08:00
FROM
drive_school_student main
2025-02-21 10:30:09 +08:00
LEFT JOIN drive_school_course_order dsco ON main.user_id = dsco.user_id
AND dsco.deleted = 0
AND dsco.payment_status IN ( '2', '3', '4', '5' )
AND dsco.if_end = 0
LEFT JOIN drive_school_process dsp ON main.user_id = dsp.user_id
AND dsco.course_id = dsp.course_id
AND dsp.`status` = '1'
WHERE
2025-02-06 16:19:08 +08:00
main.deleted = 0
2025-02-21 10:30:09 +08:00
<if test="entity.coachId != null and entity.coachId != ''">
AND dsp.coach_id = #{entity.coachId}
</if>
2025-02-27 17:34:02 +08:00
<if test="entity.sourceCoachId != null and entity.sourceCoachId != ''">
AND main.source_user_id = #{entity.sourceCoachId}
</if>
2025-02-21 10:30:09 +08:00
<if test="entity.name!=null and entity.name!=''">
AND main.name LIKE CONCAT('%',#{entity.name},'%')
</if>
<if test="entity.courseType != null and entity.courseType != ''">
AND dsco.course_type = #{entity.courseType}
</if>
<if test="entity.subject != null and entity.subject != ''">
AND dsp.subject = #{entity.subject}
</if>
<if test="entity.startTime!=null and entity.startTime!=''">
AND dsco.create_time &gt;= #{entity.startTime}
</if>
<if test="entity.endTime!=null and entity.endTime!=''">
AND dsco.create_time &lt;= #{entity.endTime}
</if>
GROUP BY
main.id
<choose>
<when test="entity.sort=='asc'">
ORDER BY
dsco.create_time ASC
</when>
<otherwise>
ORDER BY
dsco.create_time DESC
</otherwise>
</choose>
2025-02-06 16:19:08 +08:00
</select>
2025-02-13 17:38:07 +08:00
<select id="selectByCoachId" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO">
SELECT
temp.*
FROM
(
SELECT
dss.*
FROM
drive_school_process dsp
LEFT JOIN drive_school_student dss ON dsp.user_id = dss.user_id
WHERE
dsp.deleted = 0
AND dsp.coach_id = #{entity.coachId}
<if test="entity.name != null and entity.name!=''">
AND dss.`name` LIKE CONCAT('%',#{entity.name},'%')
</if>
2025-02-28 14:11:00 +08:00
<if test="entity.startTime!=null and entity.startTime!=''">
2025-04-09 17:39:20 +08:00
AND dss.create_time &gt;= #{entity.startTime}
2025-02-28 14:11:00 +08:00
</if>
<if test="entity.endTime!=null and entity.endTime!=''">
2025-04-09 17:39:20 +08:00
AND dss.create_time &lt;= #{entity.endTime}
2025-02-28 14:11:00 +08:00
</if>
2025-02-13 17:38:07 +08:00
AND dss.id IS NOT NULL
ORDER BY
dss.create_time DESC
) temp
GROUP BY
temp.user_id
</select>
2025-02-19 09:27:44 +08:00
<select id="selectStudentList" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO">
SELECT
dss.* ,SUM(dsco.reserve_money+dsco.rest_money)AS priceAmount
FROM
drive_school_student dss
LEFT JOIN drive_school_course_order dsco ON dss.user_id=dsco.user_id AND dsco.deleted=0
WHERE
dss.deleted=0
AND dsco.id IS NOT NULL
<if test="startTime!=null and startTime!=''">
AND dss.create_time &gt;= #{startTime}
</if>
<if test="endTime!=null and endTime!=''">
AND dss.create_time &lt;= #{endTime}
</if>
<if test="coachId!=null and coachId!=''">
AND dss.source_user_id=#{coachId}
</if>
GROUP BY dss.id
</select>
<select id="selectStudentListCoach" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO">
SELECT
dss.*
FROM
drive_school_process dsp
LEFT JOIN drive_school_student dss ON dsp.user_id = dss.user_id
AND dss.deleted = 0
WHERE
dsp.deleted = 0
AND dss.id IS NOT NULL
<if test="coachId != null and coachId != ''">
AND dsp.coach_id = #{coachId}
</if>
<if test="startTime!=null and startTime!=''">
AND dss.create_time &gt;= #{startTime}
</if>
<if test="endTime!=null and endTime!=''">
AND dss.create_time &lt;= #{endTime}
</if>
GROUP BY
dss.id
</select>
2025-02-19 16:26:12 +08:00
<select id="selectTrainStudent" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO">
SELECT
2025-02-21 10:30:09 +08:00
dss.*,dsc.type AS courseType,dst.subject
2025-02-19 16:26:12 +08:00
FROM
drive_school_student dss
2025-02-21 10:30:09 +08:00
LEFT JOIN drive_school_train dst ON dss.user_id = dst.user_id AND dst.deleted = 0
LEFT JOIN drive_school_course dsc ON dst.course_id = dsc.id
2025-02-19 16:26:12 +08:00
WHERE
dst.id IS NOT NULL
AND dss.deleted = 0
<if test="coachId != null and coachId != ''">
AND dst.coach_id = #{coachId}
</if>
2025-02-21 10:30:09 +08:00
<if test="courseType != null and courseType != ''">
AND dsc.type = #{courseType}
</if>
<if test="subject != null and subject != ''">
AND dst.subject = #{subject}
</if>
2025-02-20 09:30:38 +08:00
<if test="searchValue != null and searchValue != ''">
AND dss.name LIKE CONCAT('%',#{searchValue},'%')
</if>
2025-02-19 16:26:12 +08:00
<if test="startTime!=null and startTime!=''">
AND dst.create_time &gt;= #{startTime}
</if>
<if test="endTime!=null and endTime!=''">
AND dst.create_time &lt;= #{endTime}
</if>
GROUP BY
dss.id
2025-02-21 10:30:09 +08:00
<choose>
<when test="sort=='asc'">
ORDER BY
dst.create_time ASC
</when>
<otherwise>
ORDER BY
dst.create_time DESC
</otherwise>
</choose>
2025-02-19 16:26:12 +08:00
</select>
2025-02-19 17:29:51 +08:00
<select id="indexGetTrainList" resultType="cn.iocoder.yudao.module.base.vo.StudentCountVO">
SELECT
2025-02-27 17:34:02 +08:00
c.id,
2025-02-19 17:29:51 +08:00
c.image AS image,
c.NAME AS coachName,
c.car_id AS carId,
2025-02-28 14:11:00 +08:00
c.user_id AS userId,
2025-02-19 17:29:51 +08:00
COUNT(DISTINCT s.user_id) AS totalNum,
COUNT(DISTINCT CASE WHEN o.course_type = 'C1' THEN o.user_id END) AS c1Num,
COUNT(DISTINCT CASE WHEN o.course_type = 'C2' THEN o.user_id END) AS c2Num
FROM
drive_school_coach c
2025-02-28 14:11:00 +08:00
LEFT JOIN drive_school_student s ON c.user_id = s.source_user_id AND s.deleted=0
2025-02-19 18:12:05 +08:00
<if test="type != null and type != ''">
AND s.source = #{type}
</if>
2025-02-28 14:11:00 +08:00
LEFT JOIN drive_school_course_order o ON s.user_id = o.user_id AND o.payment_status > 1 AND o.deleted=0
2025-02-19 18:12:05 +08:00
<if test="startTime != null and startTime != ''">
2025-02-27 17:34:02 +08:00
AND o.create_time &gt;= #{startTime}
2025-02-19 18:12:05 +08:00
</if>
<if test="endTime != null and endTime != ''">
AND o.create_time &lt;= #{endTime}
</if>
2025-02-19 17:29:51 +08:00
WHERE
c.deleted = 0
<if test="coachId != null and coachId != ''">
2025-02-19 18:12:05 +08:00
AND c.user_id = #{coachId}
2025-02-19 17:29:51 +08:00
</if>
2025-02-27 17:34:02 +08:00
<if test="type != null and type != ''">
<choose>
<when test="type=='01'">
AND c.type='yg'
</when>
<when test="type=='02'">
AND c.type='jl'
</when>
</choose>
</if>
2025-02-19 17:29:51 +08:00
GROUP BY
2025-02-27 17:34:02 +08:00
c.id
2025-02-19 17:29:51 +08:00
ORDER BY
2025-02-27 17:34:02 +08:00
totalNum DESC
2025-02-19 17:29:51 +08:00
</select>
2025-02-21 10:27:25 +08:00
<select id="indexGetFormList" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStaffVO">
SELECT
main.id AS id,
main.avatar AS avatar,
main.name AS name,
main.phone AS phone,
2025-02-27 17:34:02 +08:00
main.user_id AS userId,
2025-02-21 10:27:25 +08:00
dsco.course_type AS courseType
FROM
drive_school_student main
LEFT JOIN drive_school_course_order dsco ON main.user_id = dsco.user_id
WHERE main.deleted = 0
AND dsco.payment_status > 1
2025-02-27 17:34:02 +08:00
AND main.source='03'
2025-02-21 10:27:25 +08:00
<if test="startTime != null and startTime != ''">
2025-02-27 17:34:02 +08:00
AND dsco.create_time &gt;= #{startTime}
2025-02-21 10:27:25 +08:00
</if>
<if test="endTime != null and endTime != ''">
AND dsco.create_time &lt;= #{endTime}
</if>
</select>
2025-02-25 17:10:29 +08:00
<select id="selectStudentListCount" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStaffVO">
SELECT
main.id AS id,
dsco.course_type
FROM
drive_school_student main
LEFT JOIN drive_school_course_order dsco ON main.user_id = dsco.user_id
AND dsco.deleted = 0
AND dsco.payment_status IN ( '2', '3', '4', '5' )
AND dsco.if_end = 0
LEFT JOIN drive_school_process dsp ON main.user_id = dsp.user_id
AND dsco.course_id = dsp.course_id
AND dsp.`status` = '1'
WHERE
main.deleted = 0
GROUP BY
main.id
</select>
2025-02-27 17:34:02 +08:00
<select id="indexCusStudentList" resultType="cn.iocoder.yudao.module.base.vo.StudentCountVO">
</select>
2025-01-18 11:22:16 +08:00
</mapper>