lanan-system/dl-module-jx/src/main/resources/mapper/base/DlDriveSchoolCoachMapper.xml
2025-07-06 19:49:21 +08:00

336 lines
13 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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,
COUNT(dss.id) AS studentTotalNum
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
LEFT JOIN drive_school_student dss on main.user_id = dss.source_user_id AND dss.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 studentTotalNum 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>
<select id="getBusinessManager" resultType="cn.iocoder.yudao.module.base.vo.BusinessRecordVO">
select dss.name,
dss.phone,
dss.id_card,
dss.age,
dss.sex,
dss.channel,
dsco.course_name,
dsco.course_id,
dsco.coach_user_name,
dsco.reserve_money,
dsco.rest_money,
dsco.payment_status,
dsco.pay_type,
dsco.is_sign,
dsco.if_end,
dsc.name AS businessName,
dsc.phone AS businessPhone,
dsco.create_time,
dsco.sign_time,
dsco.course_id,
dsco.scheme_id AS scheme
from drive_school_course_order dsco
LEFT JOIN drive_school_student dss ON dss.user_id = dsco.user_id AND dss.deleted = 0
LEFT JOIN drive_school_coach dsc ON dss.source_user_id = dsc.user_id AND dsc.deleted = 0
<where>
dss.source = '04' AND dsco.deleted = 0 AND dsc.type = 'ywjl'
<if test="entity.coachId != null ">
AND dss.source_user_id = #{entity.coachId}
</if>
<if test="entity.businessName != null and entity.businessName != ''">
AND dsc.name LIKE CONCAT('%', #{entity.businessName}, '%')
</if>
<if test="entity.name != null and entity.name != ''">
AND dss.name LIKE CONCAT('%', #{entity.name}, '%')
</if>
<if test="entity.phone != null and entity.phone != ''">
AND (dss.phone LIKE CONCAT('%', #{entity.phone}, '%')
OR dsc.phone LIKE CONCAT('%', #{entity.phone}, '%'))
</if>
<if test="entity.isSign != null ">
AND dsco.is_sign = #{entity.isSign}
</if>
<if test="entity.paymentStatus != null and entity.paymentStatus != ''">
AND dsco.payment_status = #{entity.paymentStatus}
</if>
<if test="entity.startTimeStr != null and entity.startTimeStr != ''">
AND dsco.create_time &gt;= #{entity.startTimeStr}
</if>
<if test="entity.endTimeStr != null and entity.endTimeStr != ''">
AND dsco.create_time &lt;= #{entity.endTimeStr}
</if>
<if test="entity.idCard != null and entity.idCard != '' ">
<choose>
<!-- 精确匹配当输入18位时 -->
<when test="entity.idCard.length() == 18">
AND dss.id_card = #{entity.idCard}
</when>
<!-- 后4位匹配当输入正好4位时 -->
<when test="entity.idCard.length() == 4">
AND RIGHT(dss.id_card, 4) = #{entity.idCard}
</when>
<!-- 模糊搜索当输入大于4位但不足18位时 -->
<otherwise>
AND dss.id_card LIKE concat('%', #{entity.idCard}, '%')
</otherwise>
</choose>
</if>
</where>
ORDER BY dsco.create_time DESC
</select>
<select id="getBusinessManagerMoney" resultType="cn.iocoder.yudao.module.base.vo.BusinessRecordVO">
select
dsc.user_id AS coachId,
dss.name,
dss.phone,
dss.id_card,
dss.age,
dss.sex,
dss.channel,
dsco.course_name,
dsco.course_id,
dsco.coach_user_name,
dsco.reserve_money,
dsco.rest_money,
dsco.payment_status,
dsco.pay_type,
dsco.is_sign,
dsc.name AS businessName,
dsc.phone AS businessPhone,
dsco.create_time
from drive_school_student dss
LEFT JOIN drive_school_course_order dsco ON dss.user_id = dsco.user_id
<if test="entity.startTimeStr != null and entity.startTimeStr != ''">
AND dsco.create_time &gt;= #{entity.startTimeStr}
</if>
<if test="entity.endTimeStr != null and entity.endTimeStr != ''">
AND dsco.create_time &lt;= #{entity.endTimeStr}
</if>
LEFT JOIN drive_school_coach dsc ON dss.source_user_id = dsc.user_id
<where>
dss.source = '04'
AND dsc.type = 'ywjl'
AND dss.deleted = 0
AND dsco.deleted = 0
AND dsc.deleted = 0
<if test="entity.businessName != null and entity.businessName != ''">
AND dsc.name LIKE CONCAT('%', #{entity.businessName}, '%')
</if>
<if test="entity.name != null and entity.name != ''">
AND dss.name LIKE CONCAT('%', #{entity.name}, '%')
</if>
<if test="entity.phone != null and entity.phone != ''">
AND (dss.phone LIKE CONCAT('%', #{entity.phone}, '%')
OR dsc.phone LIKE CONCAT('%', #{entity.phone}, '%'))
</if>
<if test="entity.isSign != null ">
AND dsco.is_sign = #{entity.isSign}
</if>
<if test="entity.paymentStatus != null and entity.paymentStatus != ''">
AND dsco.payment_status = #{entity.paymentStatus}
</if>
</where>
ORDER BY dsco.create_time DESC
</select>
<select id="getBusinessRecordExportData" resultType="cn.iocoder.yudao.module.base.vo.BusinessRecordExportVO">
select dss.name,
dss.phone,
dss.id_card,
dss.age,
dss.sex,
dss.channel,
dsco.course_name,
dsco.course_id,
dsco.course_type,
dsco.coach_user_name,
dsco.reserve_money,
dsco.rest_money,
dsco.payment_status,
dsco.pay_type,
dsco.is_sign,
dsco.if_end,
dsc.name AS businessName,
dsc.phone AS businessPhone,
dsco.create_time,
dsco.sign_time,
dsco.scheme_id AS scheme
from drive_school_course_order dsco
LEFT JOIN drive_school_student dss ON dss.user_id = dsco.user_id AND dss.deleted = 0
LEFT JOIN drive_school_coach dsc ON dss.source_user_id = dsc.user_id AND dsc.deleted = 0
<where>
dsco.deleted = 0 AND dss.source = '04' AND dsc.type = 'ywjl'
<!--<if test="entity.coachId != null">
AND dsc.user_id = #{entity.coachId}
</if>-->
<if test="entity.startTimeStr != null and entity.startTimeStr != ''">
AND dsco.create_time &gt;= #{entity.startTimeStr}
</if>
<if test="entity.endTimeStr != null and entity.endTimeStr != ''">
AND dsco.create_time &lt;= #{entity.endTimeStr}
</if>
<if test="entity.businessName != null and entity.businessName != ''">
AND dsc.name LIKE CONCAT('%', #{entity.businessName}, '%')
</if>
<if test="entity.name != null and entity.name != ''">
AND dss.name LIKE CONCAT('%', #{entity.name}, '%')
</if>
<if test="entity.phone != null and entity.phone != ''">
AND (dss.phone LIKE CONCAT('%', #{entity.phone}, '%')
OR dsc.phone LIKE CONCAT('%', #{entity.phone}, '%'))
</if>
<if test="entity.isSign != null ">
AND dsco.is_sign = #{entity.isSign}
</if>
<if test="entity.paymentStatus != null and entity.paymentStatus != ''">
AND dsco.payment_status = #{entity.paymentStatus}
</if>
<if test="entity.courseType != null and entity.courseType != ''">
AND dsco.course_type = #{entity.courseType}
</if>
<if test="entity.coachId != null ">
AND dss.source_user_id = #{entity.coachId}
</if>
<if test="entity.idCard != null and entity.idCard != '' ">
<choose>
<!-- 精确匹配当输入18位时 -->
<when test="entity.idCard.length() == 18">
AND dss.id_card = #{entity.idCard}
</when>
<!-- 后4位匹配当输入正好4位时 -->
<when test="entity.idCard.length() == 4">
AND RIGHT(dss.id_card, 4) = #{entity.idCard}
</when>
<!-- 模糊搜索当输入大于4位但不足18位时 -->
<otherwise>
AND dss.id_card LIKE concat('%', #{entity.idCard}, '%')
</otherwise>
</choose>
</if>
</where>
ORDER BY dsco.create_time DESC
</select>
</mapper>