|
@@ -0,0 +1,255 @@
|
|
|
+<?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="com.ym.mec.web.dal.dao.StudentManageDao">
|
|
|
+
|
|
|
+ <resultMap id="studentManageListDto" type="com.ym.mec.web.dal.dto.StudentManageListDto">
|
|
|
+ <result property="userId" column="user_id_"/>
|
|
|
+ <result property="userName" column="username_"/>
|
|
|
+ <result property="phone" column="phone_"/>
|
|
|
+ <result property="gender" column="gender_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
|
|
|
+ <result property="schoolId" column="school_id_"/>
|
|
|
+ <result property="schoolName" column="school_name_"/>
|
|
|
+ </resultMap>
|
|
|
+
|
|
|
+ <resultMap id="musicGroup" type="com.ym.mec.web.dal.dto.StudentManageBaseInfoOfMusicGroupDto">
|
|
|
+ <result property="musicGroupId" column="music_group_id_"/>
|
|
|
+ <result property="musicGroupName" column="music_group_name_"/>
|
|
|
+ <result property="musicGroupStatus" column="music_group_status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
|
|
|
+ <result property="joinMusicGroupDate" column="join_date"/>
|
|
|
+ <result property="subjectId" column="subject_id_"/>
|
|
|
+ <result property="subjectName" column="subject_name_"/>
|
|
|
+ <result property="kitPurchaseMethod" column="kit_purchase_method_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
|
|
|
+ <result property="goodsIdList" column="goods_id_list_"/>
|
|
|
+ <result property="price" column="price_"/>
|
|
|
+ <result property="organId" column="organ_id_"/>
|
|
|
+ <result property="organName" column="organ_name_"/>
|
|
|
+ </resultMap>
|
|
|
+
|
|
|
+ <resultMap id="studentManageBaseInfo" type="com.ym.mec.web.dal.dto.StudentManageBaseDto" extends="studentManageListDto">
|
|
|
+ <result property="birthdate" column="birthdate_"/>
|
|
|
+ <result property="parentName" column="parents_name_"/>
|
|
|
+ <collection property="musicGroups" resultMap="musicGroup" javaType="list"/>
|
|
|
+ </resultMap>
|
|
|
+
|
|
|
+ <resultMap id="studentManageCourseListDto" type="com.ym.mec.web.dal.dto.StudentManageCourseListDto">
|
|
|
+ <result property="classGroupId" column="class_group_id_" />
|
|
|
+ <result property="classGroupName" column="class_group_name_" />
|
|
|
+ <result property="classGroupType" column="class_group_type_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
|
|
|
+ <result property="courseDate" column="course_date_" />
|
|
|
+ <result property="courseStatus" column="course_status_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
|
|
|
+ <result property="teacherName" column="teacher_name_" />
|
|
|
+ <result property="attendanceStatus" column="status_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
|
|
|
+ </resultMap>
|
|
|
+
|
|
|
+ <sql id="queryCondition">
|
|
|
+ <where>
|
|
|
+ cgsm.user_id_ IS NOT NULL
|
|
|
+ <if test="organID != null">
|
|
|
+ AND s.organ_id_=#{organID}
|
|
|
+ </if>
|
|
|
+ <if test="musicGroupId != null">
|
|
|
+ and mg.id_ = #{musicGroupId}
|
|
|
+ </if>
|
|
|
+ <if test="studentStatus != null">
|
|
|
+ and cgsm.status_ = #{studentStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
|
|
|
+ </if>
|
|
|
+ <if test="queryString != null">
|
|
|
+ and (su.username_ like CONCAT("%",#{queryString},"%")
|
|
|
+ or su.phone_ like CONCAT("%",#{queryString},"%")
|
|
|
+ )
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ </sql>
|
|
|
+
|
|
|
+ <select id="findStudentsByOrganId" resultMap="studentManageListDto">
|
|
|
+ SELECT
|
|
|
+ DISTINCT su.id_ user_id_,
|
|
|
+ su.username_,
|
|
|
+ su.gender_,
|
|
|
+ su.phone_,
|
|
|
+ s.id_ school_id_,
|
|
|
+ s.name_ school_name_
|
|
|
+ FROM
|
|
|
+ school s
|
|
|
+ LEFT JOIN music_group mg ON s.id_=mg.school_id_
|
|
|
+ LEFT JOIN class_group cg ON mg.id_=cg.music_group_id_
|
|
|
+ LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
|
|
|
+ LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
|
|
|
+ <include refid="queryCondition"/>
|
|
|
+ ORDER BY su.id_
|
|
|
+ <include refid="global.limit"/>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="countStudentByOrganId" resultType="java.lang.Integer">
|
|
|
+ SELECT
|
|
|
+ COUNT(DISTINCT su.id_)
|
|
|
+ FROM
|
|
|
+ school s
|
|
|
+ LEFT JOIN music_group mg ON s.id_=mg.school_id_
|
|
|
+ LEFT JOIN class_group cg ON mg.id_=cg.music_group_id_
|
|
|
+ LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
|
|
|
+ LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
|
|
|
+ <include refid="queryCondition"/>
|
|
|
+ </select>
|
|
|
+ <select id="findStudentBaseInfoByUserID" resultMap="studentManageBaseInfo">
|
|
|
+ SELECT
|
|
|
+ su.id_ user_id_,
|
|
|
+ su.username_,
|
|
|
+ su.gender_,
|
|
|
+ su.birthdate_,
|
|
|
+ sr.parents_name_,
|
|
|
+ sr.parents_phone_,
|
|
|
+ sr.music_group_id_,
|
|
|
+ sr.create_time_ join_date,
|
|
|
+ mg.name_ music_group_name_,
|
|
|
+ mg.status_ music_group_status,
|
|
|
+ cg.id_ class_group_id_,
|
|
|
+ cg.name_ class_group_name_,
|
|
|
+ sr.subject_id_,
|
|
|
+ sj.name_ subject_name_,
|
|
|
+ sr.kit_purchase_method_,
|
|
|
+ spod.goods_id_list_,
|
|
|
+ spod.price_
|
|
|
+ FROM
|
|
|
+ sys_user su
|
|
|
+ LEFT JOIN student_registration sr ON su.id_ = sr.user_id_
|
|
|
+ LEFT JOIN class_group cg ON sr.class_group_id_=cg.id_
|
|
|
+ LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
|
|
|
+ LEFT JOIN `subject` sj ON sr.subject_id_=sj.id_
|
|
|
+ LEFT JOIN organization o ON mg.organ_id_ = o.id_
|
|
|
+ LEFT JOIN school s ON mg.school_id_ = s.id_
|
|
|
+ LEFT JOIN student_payment_order spo ON sr.user_id_=spo.user_id_ AND sr.music_group_id_=spo.music_group_id_
|
|
|
+ LEFT JOIN student_payment_order_detail spod ON spo.id_=spod.payment_order_id_
|
|
|
+ WHERE
|
|
|
+ su.id_ =#{userID}
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="findGoodsNamesByIds" resultType="string">
|
|
|
+ SELECT name_ FROM goods WHERE id_ IN
|
|
|
+ <foreach collection="ids" item="id" open="(" close=")" separator=",">
|
|
|
+ #{id}
|
|
|
+ </foreach>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="findStudentMusicGroupsByUserId" resultMap="musicGroup">
|
|
|
+ SELECT
|
|
|
+ mg.id_ music_group_id_,
|
|
|
+ mg.name_ music_group_name_,
|
|
|
+ sr.create_time_ join_date,
|
|
|
+ mg.status_ music_group_status_,
|
|
|
+ s.name_ subject_name_,
|
|
|
+ sr.kit_purchase_method_,
|
|
|
+ cgsm.status_ student_status,
|
|
|
+ o.id_ organ_id_,
|
|
|
+ o.name_ organ_name_
|
|
|
+ FROM
|
|
|
+ student_registration sr
|
|
|
+ LEFT JOIN music_group mg ON sr.music_group_id_=mg.id_
|
|
|
+ LEFT JOIN organization o ON mg.organ_id_=o.id_
|
|
|
+ LEFT JOIN class_group_student_mapper cgsm ON sr.class_group_id_=cgsm.class_group_id_
|
|
|
+ LEFT JOIN `subject` s ON sr.subject_id_=s.id_
|
|
|
+ WHERE sr.user_id_=#{userID}
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <sql id="studentManageCourseQueryCondition">
|
|
|
+ <where>
|
|
|
+ <if test="studentId!=null">
|
|
|
+ and cgsm.user_id_=#{studentId}
|
|
|
+ </if>
|
|
|
+ <if test="musicGroupId!=null">
|
|
|
+ and cg.music_group_id_=#{musicGroupId}
|
|
|
+ </if>
|
|
|
+ <if test="classGroupType!=null">
|
|
|
+ and cg.type_=#{classGroupType}
|
|
|
+ </if>
|
|
|
+ <if test="courseStatus!=null">
|
|
|
+ and cs.status_=#{courseStatus}
|
|
|
+ </if>
|
|
|
+ <if test="classGroupName!=null">
|
|
|
+ and cg.name_ like CONCAT("%",#{classGroupName},"%")
|
|
|
+ </if>
|
|
|
+ <if test="teacherName!=null">
|
|
|
+ and su.username_ like CONCAT("%",#{teacherName},"%")
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ </sql>
|
|
|
+
|
|
|
+ <select id="findStudentCourseList" resultMap="studentManageCourseListDto">
|
|
|
+ SELECT
|
|
|
+ cg.id_ class_group_id_,
|
|
|
+ cg.name_ class_group_name_,
|
|
|
+ cg.type_ class_group_type_,
|
|
|
+ CONCAT(cs.class_date_," ",cs.start_class_time_) course_date_,
|
|
|
+ cs.status_ course_status_,
|
|
|
+ su.username_ teacher_name_
|
|
|
+ FROM
|
|
|
+ class_group cg
|
|
|
+ LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
|
|
|
+ LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
|
|
|
+ LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
|
|
|
+ <include refid="studentManageCourseQueryCondition"/>
|
|
|
+ ORDER BY course_date_
|
|
|
+ <include refid="global.limit"/>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="countStudentCourses" resultType="int">
|
|
|
+ SELECT
|
|
|
+ count(*)
|
|
|
+ FROM
|
|
|
+ class_group cg
|
|
|
+ LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
|
|
|
+ LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
|
|
|
+ LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
|
|
|
+ <include refid="studentManageCourseQueryCondition"/>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <sql id="studentManageAttendanceQueryCondition">
|
|
|
+ <where>
|
|
|
+ <if test="studentId!=null">
|
|
|
+ and sa.user_id_=#{studentId}
|
|
|
+ </if>
|
|
|
+ <if test="classGroupType!=null">
|
|
|
+ and cg.type_=#{classGroupType}
|
|
|
+ </if>
|
|
|
+ <if test="attendanceStatus!=null">
|
|
|
+ and cs.status_=#{attendanceStatus}
|
|
|
+ </if>
|
|
|
+ <if test="classGroupName!=null">
|
|
|
+ and cg.name_ like CONCAT("%",#{classGroupName},"%")
|
|
|
+ </if>
|
|
|
+ <if test="teacherName!=null">
|
|
|
+ and sa.status_ like CONCAT("%",#{teacherName},"%")
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ </sql>
|
|
|
+
|
|
|
+ <select id="findStudentAttendances" resultMap="studentManageCourseListDto">
|
|
|
+ SELECT
|
|
|
+ cg.id_ class_group_id_,
|
|
|
+ cg.name_ class_group_name_,
|
|
|
+ cg.type_ class_group_type_,
|
|
|
+ CONCAT(cs.class_date_," ",cs.start_class_time_) course_date_,
|
|
|
+ su.username_ teacher_name_,
|
|
|
+ sa.status_
|
|
|
+ FROM
|
|
|
+ student_attendance sa
|
|
|
+ LEFT JOIN class_group cg ON sa.class_group_id_=cg.id_
|
|
|
+ LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
|
|
|
+ LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
|
|
|
+ <include refid="studentManageAttendanceQueryCondition"/>
|
|
|
+ ORDER BY sa.id_
|
|
|
+ <include refid="global.limit"/>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="countStudentAttendances" resultType="int">
|
|
|
+ SELECT
|
|
|
+ count(*)
|
|
|
+ FROM
|
|
|
+ student_attendance sa
|
|
|
+ LEFT JOIN class_group cg ON sa.class_group_id_=cg.id_
|
|
|
+ LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
|
|
|
+ LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
|
|
|
+ <include refid="studentManageAttendanceQueryCondition"/>
|
|
|
+ </select>
|
|
|
+
|
|
|
+</mapper>
|