<?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.DlDriveSchoolCoachMapper">

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

    <select id="queryListPage" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachRespVO">
        SELECT
        main.*
        FROM
        drive_school_coach main
        <where>
            main.deleted = 0
            <if test="entity.type != null and entity.type != '' ">and main.type = #{entity.type}</if>
            <if test="entity.tenantId != null and entity.tenantId != '' ">and main.tenant_id = #{entity.tenantId}</if>
            <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 like concat('%', #{entity.phone},'%')
            </if>
        </where>
        order by main.create_time desc
    </select>
    <select id="pageStaffCoach" resultType="cn.iocoder.yudao.module.base.vo.DlDriveSchoolStaffVO">
        SELECT
            main.id AS id,
            main.name AS name,
            main.type AS type,
            main.seniority AS seniority,
            main.car_id AS carId,
            main.phone AS phone,
            main.image AS avatar,
            main.user_id AS userId,
            dsc.car_register_date AS carRegisterDate,
            GROUP_CONCAT(DISTINCT dscc.course_type SEPARATOR ',') AS courseTypes
        FROM
            drive_school_coach main
                LEFT JOIN drive_school_coach_course dscc ON main.id = dscc.coach_id AND dscc.deleted = 0
                LEFT JOIN drive_school_car dsc ON main.user_id = dsc.user_id AND dsc.deleted = 0
        <where>
            main.deleted = 0
            <if test="entity.type != null and entity.type != ''">
                AND main.type = #{entity.type}
            </if>
            <if test="entity.name != null and entity.name != ''">
                AND main.name LIKE CONCAT('%',#{entity.name},'%')
            </if>
        </where>
        GROUP BY
            main.id
        order by main.create_time desc
    </select>

    <select id="getCoachByUniqueCode" parameterType="String" resultType="cn.iocoder.yudao.module.base.entity.DlDriveSchoolCoach">
        SELECT dsc.* FROM company_staff cs
        LEFT JOIN drive_school_coach dsc ON cs.user_id = dsc.user_id
        WHERE cs.unique_code = #{uniqueCode}  AND dsc.DELETED = 0
        ORDER BY dsc.create_time DESC
        LIMIT 1
    </select>

    <select id="getOnInternal" resultType="cn.iocoder.yudao.module.base.vo.CoachStaffSaveVo">
        SELECT distinct
        su.id as userId,
        su.nickname,
        su.username,
        su.user_type,
        su.remark,
        su.dept_id,
        su.mobile,
        su.password,
        su.avatar,
        su.sex,
        su.status,
        dsc.id_number,
        dsc.car_id,
        dsc.phone,
        dsc.name,
        dsc.reg_address,
        dsc.address,
        dsc.seniority,
        dsc.instructor_desc,
        dsc.id_photo,
        dsc.life_photo,
        dsc.drive_photo,
        dsc.other_photo,
        dsc.age,
        dsc.sex,
        dsc.folder_id
        FROM system_users su
        left join system_user_role sur on su.id = sur.user_id
        left join system_role sr on sur.role_id = sr.id
        INNER JOIN drive_school_coach dsc on dsc.user_id = su.id
        <where>
            sr.service_package_id = 'jiaxiao'
            and su.id = #{id}
        </where>
    </select>

    <select id="getAll" resultType="cn.iocoder.yudao.module.base.vo.SchoolStaffImportExcelVO">
        SELECT
        dsc.name AS nickname,
        GROUP_CONCAT(DISTINCT sr2.name SEPARATOR ',') AS roleName,
        dsc.id_number AS idNumber,
        dsc.age,
        dsc.phone,
        CASE dsc.sex WHEN '0' THEN '男' WHEN '1' THEN '女' ELSE '未知' END AS sex,
        dsc.seniority,
        dsc.car_id AS carId,
        dsc.address,
        dsc.reg_Address AS regAddress,
        dsc.instructor_desc AS instructorDesc
        FROM system_users su
        LEFT JOIN system_user_role sr ON su.id = sr.user_id AND sr.deleted = 0
        LEFT JOIN system_role sr2 ON sr.role_id = sr2.id AND sr2.deleted = 0
        INNER JOIN drive_school_coach dsc ON dsc.user_id = su.id AND dsc.deleted = 0
        where
            su.deleted = 0 and sr2.service_package_id = 'jiaxiao'
        group by su.id
        order by su.nickname
    </select>
</mapper>
