2025-02-25 14:36:04 +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.course.mapper.SchoolCourseOrderMapper" >
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见: https://www.iocoder.cn/MyBatis/x-plugins/
-->
<select id= "queryPage" resultType= "cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO" >
SELECT
2025-04-02 10:56:45 +08:00
main.*,
CASE
WHEN EXISTS (SELECT 1
FROM drive_school_course_order dsc
WHERE dsc.old_order_id = main.id and dsc.deleted = 0 and main.deleted = 0)
THEN TRUE
ELSE FALSE
END AS isCreated
2025-02-25 14:36:04 +08:00
FROM
2025-04-02 10:56:45 +08:00
drive_school_course_order main
2025-02-25 14:36:04 +08:00
<where >
main.deleted = 0
<if test= "entity.orderNo!= null and entity.orderNo != ''" > and main.order_no = #{entity.orderNo}</if>
<if test= "entity.userName != null and entity.userName != ''" > and main.user_name like concat('%', #{entity.userName}, '%')</if>
2025-03-31 10:53:11 +08:00
<if test= "entity.userId != null and entity.userId != ''" > and main.user_id = #{entity.userId}</if>
<if test= "entity.paymentStatus != null and entity.paymentStatus != ''" > and main.payment_status = #{entity.paymentStatus}</if>
2025-04-07 18:04:12 +08:00
<if test= "entity.ifEnd != null and entity.ifEnd != ''" > and main.if_end = #{entity.ifEnd}</if>
2025-06-18 17:24:30 +08:00
<if test= "entity.coachUserName != null and entity.coachUserName != ''" > and main.coach_user_name = #{entity.coachUserName}</if>
2025-07-06 19:49:21 +08:00
<if test= "entity.isSign != null " > and main.is_sign = #{entity.isSign}</if>
<if test= "entity.startTimeStr!=null and entity.startTimeStr!=''" >
AND main.create_time > = #{entity.startTimeStr}
</if>
<if test= "entity.endTimeStr!=null and entity.endTimeStr!=''" >
AND main.create_time < = #{entity.endTimeStr}
</if>
2025-07-10 17:39:11 +08:00
<if test= "entity.cashierConfirm != ''" >
<choose >
<when test= "entity.cashierConfirm == 1" >
AND main.cashier_confirm = 1
</when>
<when test= "entity.cashierConfirm == 0" >
AND main.cashier_confirm = 0
</when>
<when test= "entity.cashierConfirm == null" >
AND main.cashier_confirm IS NULL
</when>
</choose>
</if>
2025-04-07 18:04:12 +08:00
</where>
order by main.create_time desc
</select>
<select id= "queryPageNew" resultType= "cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO" >
SELECT
main.*,
ds.photo,
ds.type,
CASE
WHEN EXISTS (SELECT 1
FROM drive_school_course_order dsc
WHERE dsc.old_order_id = main.id and dsc.deleted = 0 and main.deleted = 0)
THEN TRUE
ELSE FALSE
END AS isCreated
FROM
drive_school_course_order main
LEFT JOIN drive_school_course ds on main.course_id = ds.id and ds.deleted = 0
<where >
main.deleted = 0
<if test= "entity.orderNo!= null and entity.orderNo != ''" > and main.order_no = #{entity.orderNo}</if>
<if test= "entity.userName != null and entity.userName != ''" > and main.user_name like concat('%', #{entity.userName}, '%')</if>
<if test= "entity.userId != null and entity.userId != ''" > and main.user_id = #{entity.userId}</if>
<if test= "entity.paymentStatus != null and entity.paymentStatus != ''" > and main.payment_status = #{entity.paymentStatus}</if>
2025-04-02 15:31:03 +08:00
<if test= "entity.ifEnd != null and entity.ifEnd != ''" > and main.if_end = #{entity.ifEnd}</if>
2025-02-25 14:36:04 +08:00
</where>
2025-04-02 10:56:45 +08:00
order by main.create_time desc
2025-02-25 14:36:04 +08:00
</select>
2025-06-23 17:34:00 +08:00
2025-02-25 15:56:00 +08:00
<select id= "selectByCoachUserId" resultType= "java.lang.Double" >
SELECT
SUM(dsco.reserve_money+dsco.rest_money )
FROM
drive_school_course_order dsco
<if test= "coachId != null and coachId != ''" >
LEFT JOIN drive_school_student dss ON dsco.user_id = dss.user_id
AND dss.deleted = 0
</if>
WHERE
dsco.deleted = 0
AND dsco.payment_status IN ( '2', '3', '4', '5' )
<if test= "coachId != null and coachId != ''" >
AND dss.source_user_id = #{coachId}
</if>
<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>
2025-06-23 17:34:00 +08:00
<select id= "selectByCoachUserIdIsConfirmed" resultType= "java.lang.Double" >
SELECT
SUM(dsco.reserve_money+dsco.rest_money )
FROM
drive_school_course_order dsco
<if test= "coachId != null and coachId != ''" >
LEFT JOIN drive_school_student dss ON dsco.user_id = dss.user_id
AND dss.deleted = 0
</if>
WHERE
dsco.deleted = 0
AND dsco.payment_status IN ( '2', '3', '4', '5' )
AND dsco.cashier_confirm = 1
<if test= "coachId != null and coachId != ''" >
AND dss.source_user_id = #{coachId}
</if>
<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>
2025-05-10 16:35:42 +08:00
<select id= "getOrderInfo" resultType= "cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO" >
SELECT *
FROM drive_school_course_order
WHERE user_id = #{userId}
AND payment_status IN (2, 3, 4, 5)
AND if_end = 0
2025-06-23 17:34:00 +08:00
2025-05-10 16:35:42 +08:00
AND deleted = 0
ORDER BY create_time DESC
LIMIT 1
</select>
2025-06-23 17:34:00 +08:00
<!-- AND if_assignment_coach = 1 -->
2025-06-05 14:30:56 +08:00
<insert id= "createStudentUsers" parameterType= "cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO" useGeneratedKeys= "true" keyProperty= "id" >
INSERT INTO system_users (username,
password,
status,
nickname,
user_age,
sex,
mobile,
id_card,
id_card_image,
create_time,
deleted)
VALUES (#{username},
#{password},
#{status},
#{nickname},
#{userAge},
#{sex},
#{mobile},
#{idCard},
#{idCardImage},
#{createTime},
#{deleted})
</insert>
2025-06-13 16:57:34 +08:00
<select id= "getSchemeByStudentId" resultType= "string" >
select dsco.scheme_id FROM drive_school_process dsc
left join drive_school_course_order dsco on dsco.user_id = dsc.user_id
where
dsc.user_id=#{studentId}
AND dsc.subject=#{subject}
AND dsco.course_id = #{courseId}
AND dsco.payment_status=2
AND dsco.if_end=0
AND dsco.deleted=0
AND dsc.deleted=0
AND dsco.if_assignment_coach=1
</select>
<select id= "getOrderCountBySchemeId" resultType= "java.lang.Integer" >
SELECT COUNT(*) FROM drive_school_course_order
WHERE scheme_id=#{schemeId}
AND deleted = 0
</select>
2025-06-23 17:34:00 +08:00
<!-- <select id="getOrderByCoachId" resultType="cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO">
SELECT dsco.* FROM drive_school_student dss
LEFT JOIN drive_school_course_order dsco ON dsco.user_id = dss.user_id AND dsco.deleted = 0
WHERE dss.deleted = 0
<if test= "entity.coachUserId!= null and entity.coachUserId!= ''" >
AND dss.source_user_id = #{entity.coachUserId}
</if>
<if test= "entity.source!= null and entity.source!= ''" >
AND dss.source = #{entity.source}
</if>
<if test= "entity.userName != null and entity.userName != '' " >
AND dsco.user_name like concat('%', #{entity.userName}, '%')
</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>
<choose >
<when test= "sort=='asc'" >
ORDER BY
dsco.create_time ASC
</when>
<otherwise >
ORDER BY
dsco.create_time DESC
</otherwise>
</choose>
</select> -->
<select id= "getOrderByCoachId" resultType= "cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO" >
SELECT dsco.* 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= "entity.coachUserId!= null and entity.coachUserId!= ''" >
AND dss.source_user_id = #{entity.coachUserId}
</if>
<if test= "entity.source!= null and entity.source!= ''" >
AND dss.source = #{entity.source}
</if>
<if test= "entity.userName != null and entity.userName != '' " >
AND dsco.user_name like concat('%', #{entity.userName}, '%')
</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>
<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= "getCoachMoney" resultType= "cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO" >
SELECT dsc.user_id AS coachUserId,dsc.name AS coachUserName,
SUM(COALESCE(dsco.reserve_money, 0) + COALESCE(dsco.rest_money, 0)) AS totalPrice
2025-07-04 17:56:16 +08:00
FROM drive_school_coach dsc
LEFT JOIN drive_school_student dss ON dss.source_user_id = dsc.user_id AND dss.deleted = 0
LEFT JOIN drive_school_course_order dsco ON dss.user_id = dsco.user_id AND dsco.deleted = 0
WHERE dsc.deleted = 0
2025-06-23 17:34:00 +08:00
<if test= "entity.cashierConfirm != null and entity.cashierConfirm != '' " >
<choose >
<when test= "entity.cashierConfirm == 0" >
AND (dsco.cashier_confirm IS NULL OR dsco.cashier_confirm = #{entity.cashierConfirm})
</when>
<otherwise >
AND dsco.cashier_confirm = #{entity.cashierConfirm}
</otherwise>
</choose>
</if>
<if test= "entity.coachUserId!= null and entity.coachUserId!= ''" >
AND dss.source_user_id = #{entity.coachUserId}
</if>
<if test= "entity.source!= null and entity.source!= ''" >
AND dss.source = #{entity.source}
</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>
GROUP BY dsc.user_id
ORDER BY totalPrice DESC
</select>
<select id= "getOrderMoneyByCoachId" resultType= "cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO" >
SELECT dsco.* FROM drive_school_course_order dsco
2025-06-27 15:08:32 +08:00
LEFT JOIN drive_school_student dss ON dsco.user_id = dss.user_id AND dss.deleted = 0 AND dss.source_user_id IS NOT NULL
2025-06-23 17:34:00 +08:00
where dsco.deleted = 0 AND dsco.payment_status IN ( '2', '3', '4', '5' ) AND dsco.is_sign = 1
<if test= "entity.coachUserId!=null and entity.coachUserId!='' " >
AND dss.source_user_id = #{entity.coachUserId}
</if>
<if test= "entity.cashierConfirm != null and entity.cashierConfirm != '' " >
<choose >
<when test= "entity.cashierConfirm == 0" >
AND (dsco.cashier_confirm IS NULL OR dsco.cashier_confirm = #{entity.cashierConfirm})
</when>
<otherwise >
AND dsco.cashier_confirm = #{entity.cashierConfirm}
</otherwise>
</choose>
</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>
GROUP BY dss.user_id
ORDER BY dss.create_time DESC
</select>
2025-06-27 15:08:32 +08:00
<select id= "getOrderExportData" resultType= "cn.iocoder.yudao.module.course.vo.CourseOrderExportVO" >
SELECT
dsco.user_id AS studentId,
dsco.user_name AS studentName,
dsco.user_no AS studentIdCard,
dsco.user_phone AS studentPhone,
dsco.create_time AS signUpTime,
dsco.is_sign,
dsco.pay_fees_time,
dsco.reserve_money,
dsco.course_name,
dsco.course_type,
dsco.order_remark,
dsco.cashier_confirm,
dsco.cashier_confirm_remark,
2025-07-09 11:23:52 +08:00
dsco.cashier_confirm_time,
2025-07-01 14:27:36 +08:00
dss.source,
dsco.payment_account,
2025-07-10 17:39:11 +08:00
dsco.sign_time,
2025-06-27 15:08:32 +08:00
MAX(CASE WHEN dsp.subject = 2 THEN COALESCE(dsp.coach_name, '') END) AS subject2CoachName,
MAX(CASE WHEN dscd.course_subject = 2 THEN COALESCE(dscd.deduct, 0) END) AS subject2Deduct,
MAX(CASE WHEN dsp.subject = 3 THEN COALESCE(dsp.coach_name, '') END) AS subject3CoachName,
MAX(CASE WHEN dscd.course_subject = 3 THEN COALESCE(dscd.deduct, 0) END) AS subject3Deduct
FROM
drive_school_course_order dsco
LEFT JOIN drive_school_process dsp ON dsp.course_id = dsco.course_id AND dsp.user_id = dsco.user_id AND dsp.subject IN (2, 3) AND dsp.deleted = 0
LEFT JOIN drive_school_course_deduct dscd ON dsco.scheme_id = dscd.scheme_id AND dsco.course_id = dscd.course_id AND dscd.course_subject IN (2, 3) AND dscd.deleted = 0
2025-07-01 14:27:36 +08:00
LEFT JOIN drive_school_student dss ON dsco.user_id = dss.user_id AND dss.deleted = 0
2025-06-27 15:08:32 +08:00
WHERE dsco.deleted = 0
AND dsco.if_end = 0
<if test= "entity.courseId != null and entity.courseId != '' " >
AND dsco.course_id = #{entity.courseId}
</if>
<if test= "entity.studentPhone != null and entity.studentPhone != '' " >
AND dsco.user_phone like concat('%', #{entity.studentPhone}, '%')
</if>
2025-07-08 17:48:51 +08:00
<if test= "entity.studentName != null and entity.studentName != '' " >
AND dsco.user_name like concat('%', #{entity.studentName}, '%')
</if>
2025-06-27 15:08:32 +08:00
<if test= "entity.coachId != null and entity.coachId != '' " >
AND dsp.coach_id = #{entity.coachId}
</if>
<if test= "entity.courseType != null and entity.courseType != '' " >
AND dsco.course_type = #{entity.courseType}
</if>
<if test= "entity.signUpStartTimeStr!=null and entity.signUpStartTimeStr!='' " >
AND dsco.create_time > = #{entity.signUpStartTimeStr}
</if>
<if test= "entity.signUpEndTimeStr!=null and entity.signUpEndTimeStr!='' " >
AND dsco.create_time < = #{entity.signUpEndTimeStr}
</if>
<if test= "entity.payFeesStartTimeStr!=null and entity.payFeesStartTimeStr!='' " >
AND dsco.pay_fees_time > = #{entity.payFeesStartTimeStr}
</if>
<if test= "entity.payFeesEndTimeStr!=null and entity.payFeesEndTimeStr!='' " >
AND dsco.pay_fees_time < = #{entity.payFeesEndTimeStr}
</if>
<if test= "entity.cashierConfirmStartTimeStr!=null and entity.cashierConfirmStartTimeStr!='' " >
AND dsco.cashier_confirm_time > = #{entity.cashierConfirmStartTimeStr}
</if>
<if test= "entity.cashierConfirmEndTimeStr!=null and entity.cashierConfirmEndTimeStr!='' " >
AND dsco.cashier_confirm_time < = #{entity.cashierConfirmEndTimeStr}
</if>
<if test= "entity.paymentStatus != null and entity.paymentStatus != '' " >
AND dsco.payment_status = #{entity.paymentStatus}
</if>
2025-07-01 14:27:36 +08:00
<!-- <if test="entity.cashierConfirm != null and entity.cashierConfirm != '' ">
2025-06-27 15:08:32 +08:00
AND dsco.cashier_Confirm = #{entity.cashierConfirm}
2025-07-01 14:27:36 +08:00
</if> -->
2025-06-27 15:08:32 +08:00
<if test= "entity.isSign != null" >
AND dsco.is_sign = #{entity.isSign}
</if>
2025-07-09 11:23:52 +08:00
<if test= "entity.cashierConfirm != ''" >
2025-07-08 17:48:51 +08:00
<choose >
2025-07-09 11:23:52 +08:00
<when test= "entity.cashierConfirm == 1" >
2025-07-08 17:48:51 +08:00
AND dsco.cashier_confirm = 1
</when>
2025-07-09 11:23:52 +08:00
<when test= "entity.cashierConfirm == 0" >
2025-07-08 17:48:51 +08:00
AND dsco.cashier_confirm = 0
</when>
2025-07-09 11:23:52 +08:00
<when test= "entity.cashierConfirm == null" >
2025-07-08 17:48:51 +08:00
AND dsco.cashier_confirm IS NULL
2025-07-09 11:23:52 +08:00
</when>
2025-07-08 17:48:51 +08:00
</choose>
2025-06-27 15:08:32 +08:00
</if>
2025-07-01 14:27:36 +08:00
<if test= "entity.source != null and entity.source != '' " >
AND dss.source = #{entity.source}
</if>
2025-06-27 15:08:32 +08:00
<if test= "entity.studentIdCard != null and entity.studentIdCard != '' " >
<choose >
<!-- 精确匹配: 当输入18位时 -->
<when test= "entity.studentIdCard.length() == 18" >
AND dsco.id_card = #{entity.studentIdCard}
</when>
<!-- 后4位匹配: 当输入正好4位时 -->
<when test= "entity.studentIdCard.length() == 4" >
AND RIGHT(dsco.id_card, 4) = #{entity.studentIdCard}
</when>
<!-- 模糊搜索: 当输入大于4位但不足18位时 -->
<otherwise >
AND dsco.id_card LIKE concat('%', #{entity.studentIdCard}, '%')
</otherwise>
</choose>
</if>
GROUP BY
dsco.user_id,
dsco.user_name,
dsco.user_no,
dsco.user_phone,
dsco.create_time,
2025-07-10 17:39:11 +08:00
dsco.is_sign,
2025-06-27 15:08:32 +08:00
dsco.pay_fees_time,
dsco.reserve_money,
dsco.course_name,
dsco.course_type,
dsco.order_remark,
dsco.cashier_confirm,
2025-07-10 17:39:11 +08:00
dsco.cashier_confirm_remark,
dsco.cashier_confirm_time,
dss.source,
dsco.payment_account,
dsco.sign_time
ORDER BY dsco.create_time DESC, dsco.user_id
2025-06-27 15:08:32 +08:00
</select>
2025-07-01 14:27:36 +08:00
2025-07-08 17:48:51 +08:00
2025-07-01 14:27:36 +08:00
<select id= "getOrderStatistics" resultType= "cn.iocoder.yudao.module.course.vo.CourseOrderStatisticsVO" >
SELECT
2025-07-09 11:23:52 +08:00
COUNT(DISTINCT dss.user_id) AS studentCount,
2025-07-01 14:27:36 +08:00
SUM(dsco.reserve_money) AS totalAmount,
2025-07-08 17:48:51 +08:00
SUM(IFNULL(sub.subject2Deduct, 0)) AS subject2DeductTotal,
SUM(IFNULL(sub.subject3Deduct, 0)) AS subject3DeductTotal
2025-07-09 11:23:52 +08:00
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
2025-07-08 17:48:51 +08:00
LEFT JOIN (
SELECT
dscd.course_id,
dscd.scheme_id,
SUM(CASE WHEN dscd.course_subject = '2' THEN COALESCE(dscd.deduct, 0) ELSE 0 END) AS subject2Deduct,
SUM(CASE WHEN dscd.course_subject = '3' THEN COALESCE(dscd.deduct, 0) ELSE 0 END) AS subject3Deduct
FROM drive_school_course_deduct dscd
WHERE dscd.deleted = 0
GROUP BY dscd.course_id, dscd.scheme_id
) sub ON (
(dsco.scheme_id IS NOT NULL AND dsco.scheme_id = sub.scheme_id AND dsco.course_id = sub.course_id)
OR
(
dsco.scheme_id IS NULL AND EXISTS (
SELECT 1 FROM drive_school_course_scheme s
WHERE s.course_id = dsco.course_id AND s.is_default = 1 AND s.id = sub.scheme_id AND s.deleted = 0
)
)
)
2025-07-09 11:23:52 +08:00
WHERE dss.deleted = 0
AND dsco.user_id IS NOT NULL
AND dsco.is_sign = 1
2025-07-08 17:48:51 +08:00
<!-- 筛选条件部分 -->
2025-07-09 11:23:52 +08:00
<if test= "entity.studentName != null and entity.studentName != '' " >
AND dss.name LIKE CONCAT('%', #{entity.studentName}, '%')
2025-07-01 14:27:36 +08:00
</if>
<if test= "entity.studentPhone != null and entity.studentPhone != '' " >
2025-07-09 11:23:52 +08:00
AND dss.phone LIKE CONCAT('%', #{entity.studentPhone}, '%')
2025-07-08 17:48:51 +08:00
</if>
2025-07-09 11:23:52 +08:00
<if test= "entity.source != null and entity.source != '' " >
AND dss.source = #{entity.source}
</if>
<if test= "entity.studentIdCard != null and entity.studentIdCard != '' " >
<choose >
<when test= "entity.studentIdCard.length() == 18" >
AND dss.id_card = #{entity.studentIdCard}
</when>
<when test= "entity.studentIdCard.length() == 4" >
AND RIGHT(dss.id_card, 4) = #{entity.studentIdCard}
</when>
<otherwise >
AND dss.id_card LIKE CONCAT('%', #{entity.studentIdCard}, '%')
</otherwise>
</choose>
</if>
<if test= "entity.courseId != null and entity.courseId != '' " >
AND dsco.course_id = #{entity.courseId}
2025-07-01 14:27:36 +08:00
</if>
<if test= "entity.coachId != null and entity.coachId != '' " >
2025-07-08 17:48:51 +08:00
AND dsco.coach_user_id = #{entity.coachId}
2025-07-01 14:27:36 +08:00
</if>
<if test= "entity.courseType != null and entity.courseType != '' " >
AND dsco.course_type = #{entity.courseType}
</if>
2025-07-08 17:48:51 +08:00
<if test= "entity.signUpStartTimeStr != null and entity.signUpStartTimeStr != '' " >
2025-07-01 14:27:36 +08:00
AND dsco.create_time > = #{entity.signUpStartTimeStr}
</if>
2025-07-08 17:48:51 +08:00
<if test= "entity.signUpEndTimeStr != null and entity.signUpEndTimeStr != '' " >
2025-07-01 14:27:36 +08:00
AND dsco.create_time < = #{entity.signUpEndTimeStr}
</if>
2025-07-08 17:48:51 +08:00
<if test= "entity.payFeesStartTimeStr != null and entity.payFeesStartTimeStr != '' " >
2025-07-01 14:27:36 +08:00
AND dsco.pay_fees_time > = #{entity.payFeesStartTimeStr}
</if>
2025-07-08 17:48:51 +08:00
<if test= "entity.payFeesEndTimeStr != null and entity.payFeesEndTimeStr != '' " >
2025-07-01 14:27:36 +08:00
AND dsco.pay_fees_time < = #{entity.payFeesEndTimeStr}
</if>
2025-07-08 17:48:51 +08:00
<if test= "entity.cashierConfirmStartTimeStr != null and entity.cashierConfirmStartTimeStr != '' " >
2025-07-01 14:27:36 +08:00
AND dsco.cashier_confirm_time > = #{entity.cashierConfirmStartTimeStr}
</if>
2025-07-08 17:48:51 +08:00
<if test= "entity.cashierConfirmEndTimeStr != null and entity.cashierConfirmEndTimeStr != '' " >
2025-07-01 14:27:36 +08:00
AND dsco.cashier_confirm_time < = #{entity.cashierConfirmEndTimeStr}
</if>
<if test= "entity.paymentStatus != null and entity.paymentStatus != '' " >
AND dsco.payment_status = #{entity.paymentStatus}
</if>
<if test= "entity.isSign != null" >
AND dsco.is_sign = #{entity.isSign}
</if>
2025-07-09 11:23:52 +08:00
<if test= "entity.cashierConfirm != ''" >
2025-07-08 17:48:51 +08:00
<choose >
2025-07-09 11:23:52 +08:00
<when test= "entity.cashierConfirm == 1" >
2025-07-08 17:48:51 +08:00
AND dsco.cashier_confirm = 1
</when>
2025-07-09 11:23:52 +08:00
<when test= "entity.cashierConfirm == 0" >
2025-07-08 17:48:51 +08:00
AND dsco.cashier_confirm = 0
</when>
2025-07-09 11:23:52 +08:00
<when test= "entity.cashierConfirm == null" >
2025-07-08 17:48:51 +08:00
AND dsco.cashier_confirm IS NULL
2025-07-01 14:27:36 +08:00
</when>
</choose>
</if>
</select>
2025-07-04 17:56:16 +08:00
<select id= "getMoneyInfoOnFinance" resultType= "cn.iocoder.yudao.module.course.vo.FinanceInfoOnCoachAndStudent" >
SELECT
dsc.user_id AS coachId,
dsc.name AS coachName,
COUNT(DISTINCT dss.id) AS totalStudents,
SUM(CASE WHEN dsco.course_type = 'C1' THEN 1 ELSE 0 END) AS c1Count,
SUM(CASE WHEN dsco.course_type = 'C2' THEN 1 ELSE 0 END) AS c2Count,
SUM(dsco.reserve_money + dsco.rest_money) AS totalMoney
FROM drive_school_coach dsc
LEFT JOIN drive_school_student dss ON dss.source_user_id = dsc.user_id
AND dss.deleted = 0
AND dss.source IN ('02', '03', '04')
LEFT JOIN drive_school_course_order dsco ON dsco.user_id = dss.user_id
AND dsco.deleted = 0
AND dsco.if_end = 0
AND dsco.is_sign = 1
WHERE
dsc.deleted = 0
<if test= "entity.coachId != null and entity.coachId != '' " >
AND dsc.user_id = #{entity.coachId}
</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>
GROUP BY
dsc.user_id, dsc.name
ORDER BY
totalStudents DESC;
</select>
<select id= "getFinanceStudentByCoachId" resultType= "cn.iocoder.yudao.module.course.vo.FinanceInfoOnCoachAndStudent" >
SELECT
dss.user_id AS studentId,
dss.avatar,
dss.name AS studentName,
dss.phone,
dsco.sign_time
FROM drive_school_student dss
LEFT JOIN drive_school_coach dsc ON dss.source_user_id = dsc.user_id AND dsc.deleted = 0
LEFT JOIN drive_school_course_order dsco ON dsco.user_id = dss.user_id
AND dsco.deleted = 0
AND dsco.if_end = 0
AND dsco.is_sign = 1
where dss.deleted = 0
AND dss.source IN ('02', '03', '04')
AND dsc.user_id = #{entity.coachId}
<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.courseType != null and entity.courseType != '' " >
AND dsco.course_type = #{entity.courseType}
</if>
</select>
2025-03-31 10:53:11 +08:00
</mapper>