670 lines
25 KiB
XML
670 lines
25 KiB
XML
<?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.*,
|
||
dsco.coach_user_name AS coachName
|
||
FROM
|
||
drive_school_student main
|
||
LEFT JOIN drive_school_course_order dsco ON main.user_id = dsco.user_id
|
||
<where>
|
||
main.deleted = 0
|
||
<if test="entity.name != null and entity.name != ''">and main.name like concat('%', #{entity.name}, '%')</if>
|
||
<if test="entity.phone != null and entity.phone != ''">and main.phone = #{entity.phone}</if>
|
||
<if test="entity.idCard != null and entity.idCard != ''">and main.id_card like concat('%', #{entity.idCard}, '%')</if>
|
||
<if test="entity.source != null and entity.source != ''">and main.source = #{entity.source}</if>
|
||
</where>
|
||
GROUP BY main.user_id
|
||
order by main.create_time desc
|
||
</select>
|
||
<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}
|
||
<if test="userName!=null and userName!=''">
|
||
AND dsp.user_name LIKE CONCAT('%',#{userName},'%')
|
||
</if>
|
||
AND dsp.`status` = '1'
|
||
AND dsp.exam_status IS NULL
|
||
GROUP BY
|
||
dss.id
|
||
ORDER BY
|
||
dss.create_time DESC
|
||
</select>
|
||
<select id="pageStaffStudent" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStaffVO">
|
||
SELECT
|
||
main.id AS id,
|
||
main.NAME AS NAME,
|
||
main.type AS type,
|
||
main.avatar AS avatar,
|
||
main.phone AS phone,
|
||
main.user_id AS userId,
|
||
dsco.course_type,
|
||
dsp.`subject`,
|
||
dsco.course_name,
|
||
dsco.payment_status,
|
||
dsco.cashier_confirm,
|
||
dsco.pay_type,
|
||
dsco.pay_channel,
|
||
dsco.cashier_confirm_remark,
|
||
dsco.reserve_money,
|
||
dsco.rest_money,
|
||
dsco.if_end,
|
||
dsco.create_time AS enrollTime,
|
||
dsco.user_no AS studentIdCard
|
||
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 AND dsco.is_sign = 1
|
||
<if test="entity.coachId != null and entity.coachId != ''">
|
||
AND dsp.coach_id = #{entity.coachId}
|
||
</if>
|
||
<if test="entity.sourceCoachId != null and entity.sourceCoachId != ''">
|
||
AND main.source_user_id = #{entity.sourceCoachId}
|
||
</if>
|
||
<if test="entity.name!=null and entity.name!=''">
|
||
AND main.name LIKE CONCAT('%',#{entity.name},'%')
|
||
</if>
|
||
<if test="entity.workName!=null and entity.workName!=''">
|
||
AND main.work_name = #{entity.workName}
|
||
</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 >= #{entity.startTime}
|
||
</if>
|
||
<if test="entity.endTime!=null and entity.endTime!=''">
|
||
AND dsco.create_time <= #{entity.endTime}
|
||
</if>
|
||
<if test="entity.source!=null and entity.source!=''">
|
||
AND main.source = #{entity.source}
|
||
</if>
|
||
<if test="entity.examStatus!=null and entity.examStatus!=''">
|
||
AND dsp.exam_status = #{entity.examStatus}
|
||
</if>
|
||
<if test="entity.rangeTime!=null">
|
||
AND dsco.create_time BETWEEN #{entity.rangeTime[0]} AND #{entity.rangeTime[1]}
|
||
</if>
|
||
<if test="entity.address!=null and entity.address!=''">
|
||
AND main.address LIKE CONCAT('%',#{entity.address},'%')
|
||
</if>
|
||
<if test="entity.age!=null and entity.age!=''">
|
||
AND main.id_card IS NOT NULL
|
||
AND TIMESTAMPDIFF(YEAR, STR_TO_DATE(SUBSTRING(main.id_card, 7, 8), '%Y%m%d'), CURDATE()) BETWEEN #{entity.age[0]} AND #{entity.age[1]}
|
||
</if>
|
||
<if test="entity.passDays!=null and entity.passDays!=''">
|
||
AND dsco.pass_time IS NOT NULL
|
||
AND TIMESTAMPDIFF(DAY, dsco.create_time, dsco.pass_time) = #{entity.passDays}
|
||
</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>
|
||
</select>
|
||
<select id="selectByCoachId" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO">
|
||
SELECT
|
||
temp.*
|
||
FROM
|
||
(
|
||
SELECT
|
||
dss.*,dsco.id AS orderId,dsco.course_name,dsp.coach_id,dsp.course_id
|
||
FROM
|
||
drive_school_process dsp
|
||
LEFT JOIN drive_school_student dss ON dsp.user_id = dss.user_id
|
||
LEFT JOIN drive_school_course_order dsco ON dsp.user_id = dsco.user_id AND dsp.course_id = dsco.course_id
|
||
WHERE
|
||
dsp.deleted = 0
|
||
AND dsco.if_end = 0
|
||
AND dsco.deleted = 0
|
||
AND dsp.coach_id = #{entity.coachId}
|
||
<if test="entity.name != null and entity.name!=''">
|
||
AND dss.`name` LIKE CONCAT('%',#{entity.name},'%')
|
||
</if>
|
||
<if test="entity.startTime!=null and entity.startTime!=''">
|
||
AND dss.create_time >= #{entity.startTime}
|
||
</if>
|
||
<if test="entity.endTime!=null and entity.endTime!=''">
|
||
AND dss.create_time <= #{entity.endTime}
|
||
</if>
|
||
<if test="entity.isGrad != null and entity.isGrad == 'correct'">
|
||
AND dsco.grad_time IS NOT NULL
|
||
</if>
|
||
<if test="entity.isGrad != null and entity.isGrad == 'deny'">
|
||
AND dsco.grad_time IS NULL
|
||
</if>
|
||
AND dss.id IS NOT NULL
|
||
ORDER BY
|
||
dss.create_time DESC
|
||
) temp
|
||
GROUP BY
|
||
temp.orderId
|
||
</select>
|
||
|
||
<select id="selectByBusinessId" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO">
|
||
SELECT
|
||
dss.*,dsco.course_type AS courseType
|
||
FROM
|
||
drive_school_student dss
|
||
LEFT JOIN drive_school_course_order dsco ON dss.user_id = dsco.user_id
|
||
WHERE
|
||
dss.deleted = 0
|
||
AND dsco.if_end = 0
|
||
AND dsco.deleted = 0
|
||
-- AND dsco.payment_status in ( '2', '3', '4', '5' )
|
||
-- AND dsco.is_sign = 1
|
||
AND dss.id IS NOT NULL
|
||
<choose>
|
||
<when test="entity.pType == 'yg'">
|
||
AND dss.source = '01'
|
||
</when>
|
||
<when test="entity.pType == 'ywjl'">
|
||
AND dss.source = '04'
|
||
</when>
|
||
</choose>
|
||
AND dss.source_user_id = #{entity.coachId}
|
||
<if test="entity.name != null and entity.name!=''">
|
||
AND dss.`name` LIKE CONCAT('%',#{entity.name},'%')
|
||
</if>
|
||
<if test="entity.startTime!=null and entity.startTime!=''">
|
||
AND dss.create_time >= #{entity.startTime}
|
||
</if>
|
||
<if test="entity.endTime!=null and entity.endTime!=''">
|
||
AND dss.create_time <= #{entity.endTime}
|
||
</if>
|
||
<if test="entity.courseType!=null and entity.courseType!=''">
|
||
AND dsco.course_type = #{entity.courseType}
|
||
</if>
|
||
<if test="entity.isSign!=null">
|
||
AND dsco.is_sign = #{entity.isSign}
|
||
</if>
|
||
GROUP BY
|
||
dss.user_id
|
||
<choose>
|
||
<when test="entity.sort=='asc'">
|
||
ORDER BY
|
||
dss.create_time ASC
|
||
</when>
|
||
<otherwise>
|
||
ORDER BY
|
||
dss.create_time DESC
|
||
</otherwise>
|
||
</choose>
|
||
</select>
|
||
<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 AND dsco.if_end=0 AND dsco.is_sign = 1
|
||
WHERE
|
||
dss.deleted=0
|
||
AND dsco.id IS NOT NULL
|
||
<if test="startTime!=null and startTime!=''">
|
||
AND dss.create_time >= #{startTime}
|
||
</if>
|
||
<if test="endTime!=null and endTime!=''">
|
||
AND dss.create_time <= #{endTime}
|
||
</if>
|
||
<if test="coachId!=null and coachId!=''">
|
||
AND dss.source_user_id=#{coachId}
|
||
</if>
|
||
GROUP BY dss.id
|
||
</select>
|
||
<select id="selectStudentListByOrder" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO">
|
||
SELECT dss.*,SUM(dsco.reserve_money+dsco.rest_money)AS priceAmount
|
||
FROM drive_school_course_order dsco
|
||
LEFT JOIN drive_school_student dss ON dsco.user_id=dss.user_id AND dss.deleted=0
|
||
WHERE dsco.deleted=0
|
||
<if test="startTime!=null and startTime!=''">
|
||
AND dsco.create_time >= #{startTime}
|
||
</if>
|
||
<if test="endTime!=null and endTime!=''">
|
||
AND dsco.create_time <= #{endTime}
|
||
</if>
|
||
<if test="coachId!=null and coachId!=''">
|
||
AND dsco.coach_id=#{coachId}
|
||
</if>
|
||
GROUP BY dss.id
|
||
</select>
|
||
<select id="selectStudentListCoach" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO">
|
||
SELECT
|
||
dss.*,dsco.grad_time AS orderGradTime,dsco.id AS orderId,dsco.course_type AS courseType
|
||
FROM
|
||
drive_school_process dsp
|
||
LEFT JOIN drive_school_student dss ON dsp.user_id = dss.user_id
|
||
LEFT JOIN drive_school_course_order dsco ON dsp.user_id = dsco.user_id AND dsp.course_id = dsco.course_id
|
||
WHERE
|
||
dsp.deleted = 0
|
||
AND dsco.if_end = 0
|
||
AND dsco.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 >= #{startTime}
|
||
</if>
|
||
<if test="endTime!=null and endTime!=''">
|
||
AND dss.create_time <= #{endTime}
|
||
</if>
|
||
GROUP BY
|
||
dsco.id
|
||
<!-- 旧的sql-->
|
||
<!-- 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 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 >= #{startTime}-->
|
||
<!-- </if>-->
|
||
<!-- <if test="endTime!=null and endTime!=''">-->
|
||
<!-- AND dss.create_time <= #{endTime}-->
|
||
<!-- </if>-->
|
||
<!-- GROUP BY-->
|
||
<!-- dsp.id-->
|
||
</select>
|
||
<select id="selectStudentListBusiness" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO">
|
||
SELECT
|
||
dss.*,dsco.course_type AS courseType
|
||
FROM
|
||
drive_school_student dss
|
||
LEFT JOIN drive_school_course_order dsco ON dss.user_id = dsco.user_id
|
||
WHERE
|
||
dss.deleted = 0
|
||
AND dsco.if_end = 0
|
||
AND dsco.deleted = 0
|
||
AND dsco.payment_status in ( '2', '3', '4', '5' )
|
||
AND dsco.is_sign = 1
|
||
AND dss.id IS NOT NULL
|
||
AND dss.source = '04'
|
||
<if test="coachId != null and coachId != ''">
|
||
AND dss.source_user_id = #{coachId}
|
||
</if>
|
||
<if test="startTime!=null and startTime!=''">
|
||
AND dss.create_time >= #{startTime}
|
||
</if>
|
||
<if test="endTime!=null and endTime!=''">
|
||
AND dss.create_time <= #{endTime}
|
||
</if>
|
||
GROUP BY
|
||
dsco.id
|
||
</select>
|
||
|
||
<select id="selectStudentListByBusiness" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentByBusinessVO">
|
||
SELECT
|
||
dss.*,
|
||
-- 使用 MAX/MIN 取任意一个订单信息(不累加)
|
||
MAX(dsco.course_type) AS courseType,
|
||
MAX(dsco.course_name) AS course_name,
|
||
MAX(dsco.payment_status) AS payment_status,
|
||
MAX(dsco.is_sign) AS is_sign,
|
||
MAX(dsco.reserve_money) AS reserve_money, -- 不累加,只取一个订单的金额
|
||
MAX(dsco.rest_money) AS rest_money, -- 不累加,只取一个订单的金额
|
||
MAX(dsco.pay_type) AS pay_type
|
||
FROM
|
||
drive_school_student dss
|
||
LEFT JOIN drive_school_course_order dsco
|
||
ON dss.user_id = dsco.user_id
|
||
AND dsco.deleted = 0
|
||
AND dsco.if_end = 0
|
||
WHERE
|
||
dss.deleted = 0
|
||
AND dss.id IS NOT NULL
|
||
AND dss.source = '04'
|
||
<if test="coachId != null and coachId != ''">
|
||
AND dss.source_user_id = #{coachId}
|
||
</if>
|
||
<if test="startTime != null and startTime != ''">
|
||
AND dss.create_time >= #{startTime}
|
||
</if>
|
||
<if test="endTime != null and endTime != ''">
|
||
AND dss.create_time <= #{endTime}
|
||
</if>
|
||
<if test="isSign == 1">
|
||
-- 有至少一条订单已面签
|
||
AND dss.user_id IN (
|
||
SELECT user_id FROM drive_school_course_order
|
||
WHERE is_sign = 1 AND deleted = 0 AND if_end = 0
|
||
GROUP BY user_id
|
||
)
|
||
</if>
|
||
<if test="isSign == 0">
|
||
-- 没有任何一条订单是已面签的用户
|
||
AND dss.user_id NOT IN (
|
||
SELECT user_id FROM drive_school_course_order
|
||
WHERE is_sign = 1 AND deleted = 0 AND if_end = 0
|
||
GROUP BY user_id
|
||
)
|
||
</if>
|
||
GROUP BY dss.user_id -- 按学生分组,确保每个学生只出现一次
|
||
</select>
|
||
|
||
<select id="selectIndexInfoByWorking" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentByBusinessVO">
|
||
SELECT
|
||
dss.*,
|
||
-- 使用 MAX/MIN 取任意一个订单信息(不累加)
|
||
MAX(dsco.course_type) AS courseType,
|
||
MAX(dsco.course_name) AS course_name,
|
||
MAX(dsco.payment_status) AS payment_status,
|
||
MAX(dsco.is_sign) AS is_sign,
|
||
MAX(dsco.reserve_money) AS reserve_money, -- 不累加,只取一个订单的金额
|
||
MAX(dsco.rest_money) AS rest_money, -- 不累加,只取一个订单的金额
|
||
MAX(dsco.pay_type) AS pay_type
|
||
FROM
|
||
drive_school_student dss
|
||
LEFT JOIN drive_school_course_order dsco
|
||
ON dss.user_id = dsco.user_id
|
||
AND dsco.deleted = 0
|
||
AND dsco.if_end = 0
|
||
WHERE
|
||
dss.deleted = 0
|
||
AND dss.id IS NOT NULL
|
||
AND dss.source = '01'
|
||
<if test="coachId != null and coachId != ''">
|
||
AND dss.source_user_id = #{coachId}
|
||
</if>
|
||
<if test="startTime != null and startTime != ''">
|
||
AND dss.create_time >= #{startTime}
|
||
</if>
|
||
<if test="endTime != null and endTime != ''">
|
||
AND dss.create_time <= #{endTime}
|
||
</if>
|
||
<if test="isSign == 1">
|
||
-- 有至少一条订单已面签
|
||
AND dss.user_id IN (
|
||
SELECT user_id FROM drive_school_course_order
|
||
WHERE is_sign = 1 AND deleted = 0 AND if_end = 0
|
||
GROUP BY user_id
|
||
)
|
||
</if>
|
||
<if test="isSign == 0">
|
||
-- 没有任何一条订单是已面签的用户
|
||
AND dss.user_id NOT IN (
|
||
SELECT user_id FROM drive_school_course_order
|
||
WHERE is_sign = 1 AND deleted = 0 AND if_end = 0
|
||
GROUP BY user_id
|
||
)
|
||
</if>
|
||
GROUP BY dss.user_id -- 按学生分组,确保每个学生只出现一次
|
||
</select>
|
||
|
||
<select id="selectTrainStudent" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStudentVO">
|
||
SELECT
|
||
dss.*,dsc.type AS courseType,dst.subject
|
||
FROM
|
||
drive_school_student dss
|
||
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
|
||
WHERE
|
||
dst.id IS NOT NULL
|
||
AND dss.deleted = 0
|
||
<if test="coachId != null and coachId != ''">
|
||
AND dst.coach_id = #{coachId}
|
||
</if>
|
||
<if test="courseType != null and courseType != ''">
|
||
AND dsc.type = #{courseType}
|
||
</if>
|
||
<if test="subject != null and subject != ''">
|
||
AND dst.subject = #{subject}
|
||
</if>
|
||
<if test="searchValue != null and searchValue != ''">
|
||
AND dss.name LIKE CONCAT('%',#{searchValue},'%')
|
||
</if>
|
||
<if test="startTime!=null and startTime!=''">
|
||
AND dst.create_time >= #{startTime}
|
||
</if>
|
||
<if test="endTime!=null and endTime!=''">
|
||
AND dst.create_time <= #{endTime}
|
||
</if>
|
||
GROUP BY
|
||
dss.id
|
||
<choose>
|
||
<when test="sort=='asc'">
|
||
ORDER BY
|
||
dst.create_time ASC
|
||
</when>
|
||
<otherwise>
|
||
ORDER BY
|
||
dst.create_time DESC
|
||
</otherwise>
|
||
</choose>
|
||
</select>
|
||
<select id="indexGetTrainList" resultType="cn.iocoder.yudao.module.base.vo.StudentCountVO">
|
||
SELECT
|
||
c.id,
|
||
c.user_id AS coachId,
|
||
c.image AS image,
|
||
c.NAME AS coachName,
|
||
c.car_id AS carId,
|
||
c.user_id AS userId,
|
||
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,
|
||
COUNT(DISTINCT o.user_id) AS timeTotal
|
||
FROM
|
||
drive_school_coach c
|
||
LEFT JOIN drive_school_student s ON c.user_id = s.source_user_id AND s.deleted=0
|
||
<if test="type != null and type != ''">
|
||
AND s.source = #{type}
|
||
</if>
|
||
LEFT JOIN drive_school_course_order o ON s.user_id = o.user_id AND o.payment_status > 1 AND o.deleted=0 AND o.is_sign = 1 AND o.if_end = 0
|
||
<if test="startTime != null and startTime != ''">
|
||
AND o.create_time >= #{startTime}
|
||
</if>
|
||
<if test="endTime != null and endTime != ''">
|
||
AND o.create_time <= #{endTime}
|
||
</if>
|
||
WHERE
|
||
c.deleted = 0
|
||
<if test="coachId != null and coachId != ''">
|
||
AND c.user_id = #{coachId}
|
||
</if>
|
||
<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>
|
||
<when test="type=='04'">
|
||
AND c.type='ywjl'
|
||
</when>
|
||
</choose>
|
||
</if>
|
||
GROUP BY
|
||
c.id
|
||
ORDER BY
|
||
totalNum DESC
|
||
</select>
|
||
|
||
<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,
|
||
main.user_id AS userId,
|
||
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
|
||
AND main.source='03'
|
||
<if test="startTime != null and startTime != ''">
|
||
AND dsco.create_time >= #{startTime}
|
||
</if>
|
||
<if test="endTime != null and endTime != ''">
|
||
AND dsco.create_time <= #{endTime}
|
||
</if>
|
||
</select>
|
||
|
||
<select id="selectStudentListCount" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStaffVO">
|
||
SELECT
|
||
main.id AS id,
|
||
dsco.course_type,
|
||
dsco.grad_time,
|
||
dsco.pass_time
|
||
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
|
||
AND dsco.is_sign = 1
|
||
GROUP BY
|
||
main.id
|
||
</select>
|
||
<select id="indexCusStudentList" resultType="cn.iocoder.yudao.module.base.vo.StudentCountVO">
|
||
|
||
</select>
|
||
|
||
<select id="getAll" resultType="cn.iocoder.yudao.module.base.vo.DriveSchoolStudentExportVo">
|
||
SELECT
|
||
name,
|
||
age,
|
||
CASE sex WHEN '0' THEN '男' WHEN '1' THEN '女' ELSE '未知' END AS sex,
|
||
phone,
|
||
CASE source
|
||
WHEN '01' THEN '驾校统招'
|
||
WHEN '02' THEN '教练自招'
|
||
WHEN '03' THEN '自来客户'
|
||
ELSE source
|
||
END AS source,
|
||
id_card AS idCard,
|
||
work_name AS workName,
|
||
regist_address AS registAddress,
|
||
address,
|
||
remark,
|
||
driving_student_code AS drivingStudentCode,
|
||
DATE_FORMAT(create_time, '%Y-%m-%d') AS createTimeStr
|
||
FROM drive_school_student
|
||
<where>
|
||
deleted = 0
|
||
<if test="entity.name != null and entity.name != ''">
|
||
AND name LIKE CONCAT('%', #{entity.name}, '%')
|
||
</if>
|
||
<if test="entity.phone != null and entity.phone != ''">
|
||
AND phone = #{entity.phone}
|
||
</if>
|
||
<if test="entity.idCard != null and entity.idCard != ''">
|
||
AND id_card LIKE CONCAT('%', #{entity.idCard}, '%')
|
||
</if>
|
||
</where>
|
||
</select>
|
||
|
||
|
||
|
||
<!-- 获取教练已经毕业的学员列表-->
|
||
<select id="getGradStudentByCourseType" resultType="cn.iocoder.yudao.module.base.entity.DlDriveSchoolStudent">
|
||
SELECT
|
||
dss.*
|
||
FROM drive_school_process dsp
|
||
INNER JOIN drive_school_coach dsc ON dsc.user_id = dsp.coach_id AND dsc.deleted = 0
|
||
INNER JOIN drive_school_student dss ON dsp.user_id = dss.user_id AND dss.deleted = 0
|
||
WHERE
|
||
dsp.subject = 3
|
||
AND dsp.exam_status = '1'
|
||
AND dsp.deleted = 0
|
||
AND dsc.user_id = #{coachId}
|
||
<if test="courseType != null and courseType != ''">
|
||
AND dsp.course_type = #{courseType}
|
||
</if>
|
||
<if test="name != null and name != ''">
|
||
AND dss.name LIKE CONCAT('%', #{name}, '%')
|
||
</if>
|
||
<choose>
|
||
<when test="sort=='asc'">
|
||
ORDER BY
|
||
dss.create_time ASC
|
||
</when>
|
||
<otherwise>
|
||
ORDER BY
|
||
dss.create_time DESC
|
||
</otherwise>
|
||
</choose>
|
||
</select>
|
||
|
||
<!-- 获取教练已经毕业的学员列表-->
|
||
<select id="getNoGradStudentByCourseType" resultType="cn.iocoder.yudao.module.base.entity.DlDriveSchoolStudent">
|
||
SELECT
|
||
dss.*
|
||
FROM drive_school_process dsp
|
||
INNER JOIN drive_school_coach dsc ON dsc.user_id = dsp.coach_id AND dsc.deleted = 0
|
||
INNER JOIN drive_school_student dss ON dsp.user_id = dss.user_id AND dss.deleted = 0
|
||
WHERE
|
||
dsp.subject = 3
|
||
AND (dsp.exam_status != '1' OR dsp.exam_status IS NULL)
|
||
AND dsp.deleted = 0
|
||
AND dsc.user_id = #{coachId}
|
||
<if test="courseType != null and courseType != ''">
|
||
AND dsp.course_type = #{courseType}
|
||
</if>
|
||
<if test="name != null and name != ''">
|
||
AND dss.name LIKE CONCAT('%', #{name}, '%')
|
||
</if>
|
||
<choose>
|
||
<when test="sort=='asc'">
|
||
ORDER BY
|
||
dss.create_time ASC
|
||
</when>
|
||
<otherwise>
|
||
ORDER BY
|
||
dss.create_time DESC
|
||
</otherwise>
|
||
</choose>
|
||
</select>
|
||
</mapper>
|