336 lines
13 KiB
XML
336 lines
13 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.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 >= #{entity.startTimeStr}
|
||
</if>
|
||
<if test="entity.endTimeStr != null and entity.endTimeStr != ''">
|
||
AND dsco.create_time <= #{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 >= #{entity.startTimeStr}
|
||
</if>
|
||
<if test="entity.endTimeStr != null and entity.endTimeStr != ''">
|
||
AND dsco.create_time <= #{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 >= #{entity.startTimeStr}
|
||
</if>
|
||
<if test="entity.endTimeStr != null and entity.endTimeStr != ''">
|
||
AND dsco.create_time <= #{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>
|