ClassGroupStudentMapperMapper.xml 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <!--
  4. 这个文件是自动生成的。
  5. 不要修改此文件。所有改动将在下次重新自动生成时丢失。
  6. -->
  7. <mapper namespace="com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao">
  8. <resultMap type="com.ym.mec.biz.dal.entity.ClassGroupStudentMapper" id="ClassGroupStudentMapper">
  9. <result column="id_" property="id"/>
  10. <result column="group_type_" property="groupType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  11. <result column="music_group_id_" property="musicGroupId" />
  12. <result column="class_group_id_" property="classGroupId"/>
  13. <result column="user_id_" property="userId"/>
  14. <result column="create_time_" property="createTime"/>
  15. <result column="update_time_" property="updateTime"/>
  16. <result column="username_" property="userName"/>
  17. <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  18. <result column="tenant_id_" property="tenantId" />
  19. </resultMap>
  20. <resultMap id="ClassGroupStudentInfoDto" type="com.ym.mec.biz.dal.dto.ClassGroupStudentInfoDto" extends="ClassGroupStudentMapper">
  21. <result property="avatar" column="avatar_"/>
  22. <result property="phone" column="phone_"/>
  23. </resultMap>
  24. <resultMap id="ClassGroupStudentMapperDto" type="com.ym.mec.biz.dal.dto.ClassGroupStudentMapperDto" extends="ClassGroupStudentMapper">
  25. <result property="teacherId" column="teacher_id_"/>
  26. </resultMap>
  27. <!-- 根据主键查询一条记录 -->
  28. <select id="get" resultMap="ClassGroupStudentMapper">
  29. SELECT * FROM class_group_student_mapper WHERE id_ = #{id}
  30. </select>
  31. <!-- 全查询 -->
  32. <select id="findAll" resultMap="ClassGroupStudentMapper">
  33. SELECT * FROM class_group_student_mapper where tenant_id_ = #{tenantId} ORDER BY id_
  34. </select>
  35. <!-- 向数据库增加一条记录 -->
  36. <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ClassGroupStudentMapper" useGeneratedKeys="true"
  37. keyColumn="id" keyProperty="id">
  38. INSERT INTO class_group_student_mapper (id_,group_type_,music_group_id_,class_group_id_,user_id_,status_,create_time_,update_time_,tenant_id_)
  39. VALUES(#{id},#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},#{userId},#{status},now(),now(),#{tenantId})
  40. </insert>
  41. <!-- 根据主键查询一条记录 -->
  42. <update id="update" parameterType="com.ym.mec.biz.dal.entity.ClassGroupStudentMapper">
  43. UPDATE class_group_student_mapper
  44. <set>
  45. <if test="userId != null">
  46. user_id_ = #{userId},
  47. </if>
  48. <if test="classGroupId != null">
  49. class_group_id_ = #{classGroupId},
  50. </if>
  51. <if test="status != null">
  52. status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  53. </if>
  54. <if test="groupType != null">
  55. group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  56. </if>
  57. update_time_ = now(),
  58. </set>
  59. WHERE id_ = #{id}
  60. </update>
  61. <update id="batchUpdate" parameterType="com.ym.mec.biz.dal.entity.ClassGroupStudentMapper">
  62. <foreach collection="classGroupStudentMappers" item="classGroupStudentMapper" separator=";">
  63. UPDATE class_group_student_mapper
  64. <set>
  65. <if test="classGroupStudentMapper.status != null">
  66. status_ = #{classGroupStudentMapper.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  67. </if>
  68. <if test="classGroupStudentMapper.groupType != null">
  69. group_type_ = #{classGroupStudentMapper.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  70. </if>
  71. update_time_ = now(),
  72. </set>
  73. WHERE id_ = #{classGroupStudentMapper.id}
  74. </foreach>
  75. </update>
  76. <!-- 根据主键删除一条记录 -->
  77. <delete id="delete">
  78. DELETE FROM class_group_student_mapper WHERE id_ = #{id}
  79. </delete>
  80. <delete id="deleteByClassId">
  81. UPDATE class_group_student_mapper SET status_='QUIT' WHERE class_group_id_ = #{classGroupId} AND status_='NORMAL'
  82. </delete>
  83. <delete id="deleteByGroup">
  84. DELETE FROM class_group_student_mapper WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  85. </delete>
  86. <delete id="deleteClassGroupStudent">
  87. DELETE FROM class_group_student_mapper WHERE class_group_id_=#{classGroupId} AND user_id_=#{userId}
  88. </delete>
  89. <update id="deleteByGroupWithLogic">
  90. UPDATE class_group_student_mapper SET status_='QUIT',update_time_=NOW() WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  91. </update>
  92. <!-- 分页查询 -->
  93. <select id="queryPage" resultMap="ClassGroupStudentMapper" parameterType="map">
  94. SELECT * FROM class_group_student_mapper where tenant_id_ = #{tenantId} ORDER BY id_
  95. <include refid="global.limit"/>
  96. </select>
  97. <!-- 查询当前表的总记录数 -->
  98. <select id="queryCount" resultType="int">
  99. SELECT COUNT(*) FROM class_group_student_mapper where tenant_id_ = #{tenantId}
  100. </select>
  101. <!-- 班级学生批量插入 -->
  102. <insert id="classGroupStudentsInsert" parameterType="java.util.List">
  103. INSERT INTO class_group_student_mapper (group_type_,music_group_id_,class_group_id_,user_id_,status_,create_time_,update_time_,tenant_id_)
  104. VALUE
  105. <foreach collection="classGroupStudentMapperList" item="item" index="index" separator=",">
  106. (#{item.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.musicGroupId},#{item.classGroupId},
  107. #{item.userId},#{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now(),#{item.tenantId})
  108. </foreach>
  109. </insert>
  110. <select id="query" resultMap="ClassGroupStudentMapper" parameterType="map">
  111. SELECT * FROM class_group_student_mapper
  112. where class_group_id_ = #{classGroupId} and user_id_ = #{userId} AND status_ != 'QUIT'
  113. </select>
  114. <select id="findClassGroupStudent" resultMap="ClassGroupStudentMapper">
  115. SELECT * FROM class_group_student_mapper
  116. where class_group_id_ = #{classGroupId} and user_id_ = #{userId}
  117. </select>
  118. <select id="findStudentNumByClassGroupId" resultType="string">
  119. SELECT
  120. su.username_
  121. FROM
  122. class_group_student_mapper cgsm
  123. LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
  124. WHERE cgsm.class_group_id_=#{classGroupId} AND cgsm.status_!='QUIT'
  125. </select>
  126. <select id="findCourseStudentName" resultType="string">
  127. SELECT
  128. su.username_
  129. FROM
  130. course_schedule_student_payment cssp
  131. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  132. WHERE
  133. cssp.course_schedule_id_ = #{courseScheduleId}
  134. </select>
  135. <select id="findCourseStudentNameAndPhone" resultType="com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto">
  136. SELECT
  137. su.id_ userId,
  138. su.username_ userName,
  139. su.phone_ phone,
  140. su.avatar_ avatar
  141. FROM
  142. course_schedule_student_payment cssp
  143. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  144. WHERE
  145. cssp.course_schedule_id_ = #{courseScheduleId}
  146. </select>
  147. <resultMap id="teacherClassStudentDto" type="com.ym.mec.biz.dal.dto.TeacherClassStudentDto">
  148. <result property="userId" column="user_id_"/>
  149. <result property="userName" column="username_"/>
  150. <result property="avatar" column="avatar_"/>
  151. <result property="phone" column="phone_"/>
  152. <result property="continuousAbsenteeismTimes" column="continuous_absenteeism_times_"/>
  153. </resultMap>
  154. <select id="findClassStudent" resultMap="teacherClassStudentDto">
  155. SELECT
  156. su.id_ user_id_,
  157. su.username_,
  158. su.avatar_,
  159. su.phone_,
  160. mgsf.continuous_absenteeism_times_
  161. FROM
  162. class_group_student_mapper cgsm
  163. LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
  164. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  165. LEFT JOIN music_group_student_fee_ mgsf ON cg.music_group_id_=mgsf.music_group_id_ AND su.id_ = mgsf.user_id_
  166. WHERE
  167. cgsm.class_group_id_ = #{classGroupId} AND cgsm.status_ != 'QUIT'
  168. ORDER BY su.id_
  169. <include refid="global.limit"/>
  170. </select>
  171. <select id="findClassStudentNum" resultType="int">
  172. SELECT
  173. COUNT(*)
  174. FROM
  175. class_group_student_mapper cgsm
  176. WHERE
  177. cgsm.class_group_id_ = #{classGroupId} AND cgsm.status_ != 'QUIT'
  178. </select>
  179. <select id="findStudentByCourse" resultMap="com.ym.mec.biz.dal.dao.StudentAttendanceDao.studentAttendanceViewUtilEntity">
  180. SELECT
  181. cssp.group_type_,
  182. cssp.music_group_id_,
  183. cssp.user_id_ student_id_,
  184. su.username_,
  185. su.avatar_,
  186. cssp.be_merged_,
  187. st.current_grade_num_,
  188. st.current_class_,
  189. IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_,
  190. cssp.join_course_type_ as joinCourseType
  191. FROM
  192. course_schedule_student_payment cssp
  193. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  194. LEFT JOIN student st ON st.user_id_ = su.id_
  195. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  196. WHERE
  197. cssp.course_schedule_id_ =#{courseScheduleId}
  198. AND su.id_ IS NOT NULL
  199. </select>
  200. <select id="findStudentByCourseWithPage" resultMap="com.ym.mec.biz.dal.dao.StudentAttendanceDao.studentAttendanceViewUtilEntity">
  201. SELECT
  202. cssp.group_type_,
  203. cssp.music_group_id_,
  204. cssp.user_id_ student_id_,
  205. su.username_,
  206. su.phone_,
  207. su.avatar_,
  208. s.name_ subject_name_,
  209. IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
  210. FROM
  211. course_schedule_student_payment cssp
  212. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  213. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  214. LEFT JOIN student_registration sr ON sr.user_id_=cssp.user_id_ AND cssp.music_group_id_=sr.music_group_id_
  215. LEFT JOIN `subject` s ON sr.subject_id_=s.id_
  216. WHERE
  217. cssp.course_schedule_id_ =#{courseScheduleId}
  218. AND su.id_ IS NOT NULL
  219. ORDER BY cssp.user_id_
  220. <include refid="global.limit"/>
  221. </select>
  222. <select id="countStudentByCourseWithPage" resultType="int">
  223. SELECT
  224. COUNT(cssp.user_id_)
  225. FROM
  226. course_schedule_student_payment cssp
  227. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  228. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  229. WHERE
  230. cssp.course_schedule_id_ =#{courseScheduleId}
  231. AND su.id_ IS NOT NULL
  232. </select>
  233. <update id="deleteByClassGroupIdAndStudents">
  234. update class_group_student_mapper set status_ = 'QUIT',update_time_ = NOW()
  235. WHERE class_group_id_=#{classGroupId} AND FIND_IN_SET(user_id_,#{userIds})
  236. </update>
  237. <update id="updateVipGroupStudentStatus">
  238. update class_group_student_mapper set status_ = #{status},update_time_ = NOW()
  239. where music_group_id_=#{groupId} and group_type_=#{groupType}
  240. </update>
  241. <select id="findClassStudentMapperByUserIdAndClassGroupId" resultMap="ClassGroupStudentMapper">
  242. SELECT * FROM class_group_student_mapper
  243. WHERE user_id_=#{userId} AND class_group_id_=#{classGroupId}
  244. <if test="status != null">
  245. AND status_ = #{status}
  246. </if>
  247. LIMIT 1
  248. </select>
  249. <select id="findByClassGroups" resultMap="ClassGroupStudentMapper">
  250. SELECT * FROM class_group_student_mapper
  251. WHERE class_group_id_ IN
  252. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  253. #{classGroupId}
  254. </foreach>
  255. AND status_ = 'NORMAL'
  256. </select>
  257. <select id="findAllByClassGroup" resultMap="ClassGroupStudentMapper">
  258. SELECT
  259. cgsm.*
  260. FROM class_group_student_mapper cgsm
  261. WHERE class_group_id_ = #{classGroupId}
  262. </select>
  263. <select id="findByClassGroup" resultMap="ClassGroupStudentMapper">
  264. SELECT
  265. cgsm.*,
  266. su.username_
  267. FROM class_group_student_mapper cgsm
  268. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  269. WHERE class_group_id_ = #{classGroupId}
  270. AND status_ = 'NORMAL'
  271. </select>
  272. <!-- 查询班级某状态的所有学生 -->
  273. <select id="findClassStudentList" resultMap="com.ym.mec.biz.dal.dao.StudentRegistrationDao.StudentRegistration">
  274. SELECT sr.*,s.name_ subject_name_,su.username_,su.gender_ FROM class_group_student_mapper cgsm
  275. LEFT JOIN student_registration sr ON (sr.user_id_ = cgsm.user_id_ AND sr.music_group_id_ = cgsm.music_group_id_)
  276. LEFT JOIN sys_user su on sr.user_id_ = su.id_
  277. LEFT JOIN subject s ON sr.actual_subject_id_ = s.id_
  278. WHERE cgsm.class_group_id_ = #{classGroupId} AND sr.music_group_status_ != 'QUIT'
  279. AND cgsm.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  280. </select>
  281. <select id="findAllStudent" resultType="com.ym.mec.biz.dal.wrapper.StudentWrapper$ClassStudentDto">
  282. SELECT sr.user_id_ userId,sr.name_ name,sr.parents_phone_ parentsPhone,
  283. s.name_ subject_name_,su.gender_ gender,sr.music_group_id_ musicGroupId
  284. FROM class_group_student_mapper cgsm
  285. LEFT JOIN student_registration sr ON (sr.user_id_ = cgsm.user_id_ AND sr.music_group_id_ = cgsm.music_group_id_)
  286. LEFT JOIN sys_user su on sr.user_id_ = su.id_
  287. LEFT JOIN subject s ON sr.actual_subject_id_ = s.id_
  288. WHERE cgsm.class_group_id_ = #{query.classGroupId} AND sr.music_group_status_ != 'QUIT' AND cgsm.status_ = 'NORMAL'
  289. <if test="query.subjectId != null">
  290. AND sr.actual_subject_id_ = #{query.subjectId}
  291. </if>
  292. <if test="query.search != null and query.search != ''">
  293. AND (sr.name_ LIKE CONCAT('%',#{query.search},'%') OR sr.parents_phone_ LIKE CONCAT('%',#{query.search},'%'))
  294. </if>
  295. </select>
  296. <select id="findHighClassGroupHasUser" resultMap="ClassGroupStudentMapper">
  297. SELECT cgsm.* FROM class_group_student_mapper cgsm
  298. LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
  299. WHERE cgsm.music_group_id_ = #{musicGroupId}
  300. AND cgsm.user_id_=#{userId}
  301. AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  302. AND FIND_IN_SET(cgsm.status_,'NORMAL,LEAVE')
  303. AND cg.del_flag_='0'
  304. </select>
  305. <select id="findClassGroupIdByUserAndCourseDateAndStatus" resultType="int">
  306. SELECT
  307. cgsm.class_group_id_
  308. FROM
  309. class_group_student_mapper cgsm
  310. LEFT JOIN course_schedule cs ON cgsm.class_group_id_=cs.class_group_id_
  311. WHERE cgsm.user_id_=#{userId} AND cs.del_flag_ = '0'
  312. AND cs.class_date_ = DATE_FORMAT(#{data},'%Y-%m-%d')
  313. AND cgsm.status_=#{status}
  314. </select>
  315. <select id="countClassGroupsStudentNum" resultType="map">
  316. SELECT
  317. class_group_id_ AS 'key',
  318. COUNT( user_id_ ) AS 'value'
  319. FROM
  320. class_group_student_mapper
  321. WHERE
  322. class_group_id_ IN
  323. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  324. #{classGroupId}
  325. </foreach>
  326. AND status_!='QUIT'
  327. <if test="status!=null">
  328. AND status_=#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  329. </if>
  330. GROUP BY
  331. class_group_id_
  332. </select>
  333. <select id="countGroupAllStudentNum" resultType="map">
  334. SELECT
  335. music_group_id_ AS 'key',
  336. COUNT( user_id_ ) AS 'value'
  337. FROM
  338. class_group_student_mapper
  339. WHERE
  340. music_group_id_ IN
  341. <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
  342. #{groupId}
  343. </foreach>
  344. AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  345. GROUP BY
  346. music_group_id_
  347. </select>
  348. <select id="countClassGroupStudentNum" resultType="int">
  349. SELECT
  350. COUNT( user_id_ )
  351. FROM
  352. class_group_student_mapper
  353. WHERE
  354. class_group_id_ = #{classGroupId}
  355. AND status_!='QUIT'
  356. </select>
  357. <select id="countClassGroupNormalStudentNum" resultType="int">
  358. SELECT
  359. COUNT( user_id_ )
  360. FROM
  361. class_group_student_mapper
  362. WHERE
  363. class_group_id_ = #{classGroupId}
  364. AND status_!='QUIT' AND status_!='QUIT_SCHOOL'
  365. </select>
  366. <select id="countGroupNormalStudentNum" resultType="int">
  367. SELECT
  368. COUNT( user_id_ )
  369. FROM
  370. class_group_student_mapper
  371. WHERE
  372. group_type_ = #{groupType}
  373. AND music_group_id_= #{groupId}
  374. AND status_='NORMAL'
  375. </select>
  376. <select id="countGroupStudentNum" resultType="int">
  377. SELECT
  378. COUNT( user_id_ )
  379. FROM
  380. class_group_student_mapper
  381. WHERE
  382. group_type_ = #{groupType}
  383. AND music_group_id_ = #{groupId}
  384. AND status_!='QUIT' AND status_!='QUIT_SCHOOL'
  385. </select>
  386. <select id="countClassGroupExitStudentNum" resultType="int">
  387. SELECT
  388. COUNT( user_id_ )
  389. FROM
  390. class_group_student_mapper
  391. WHERE
  392. class_group_id_ = #{classGroupId}
  393. AND user_id_ IN
  394. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  395. #{userId}
  396. </foreach>
  397. AND status_!='QUIT'
  398. </select>
  399. <select id="countUserGroups" resultType="int">
  400. SELECT COUNT(DISTINCT cgsm.music_group_id_)
  401. FROM class_group_student_mapper cgsm
  402. LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
  403. WHERE cgsm.user_id_=#{userId} AND cgsm.group_type_=#{groupType} AND cgsm.status_!='QUIT' AND cg.del_flag_!=1
  404. </select>
  405. <select id="queryClassGroupIdList" resultType="int" parameterType="map">
  406. SELECT distinct class_group_id_ FROM class_group_student_mapper WHERE user_id_=#{userId}
  407. AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  408. AND music_group_id_ = #{musicGroupId}
  409. AND status_ != 'QUIT'
  410. </select>
  411. <select id="findMusicGroupClassGroupByType" resultMap="ClassGroupStudentMapper">
  412. SELECT cgsm.* FROM class_group_student_mapper cgsm
  413. LEFT JOIN class_group cg on cgsm.class_group_id_ = cg.id_
  414. WHERE cgsm.music_group_id_ = #{musicGroupId} AND cg.group_type_ ='MUSIC' AND cg.type_=#{classGroupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND cg.del_flag_='0' AND FIND_IN_SET(cgsm.status_,'NORMAL,LEAVE')
  415. </select>
  416. <select id="queryStudentIdMap" resultType="java.util.Map">
  417. SELECT cgsm.user_id_ 'key',cgsm.user_id_ 'value' FROM class_group_student_mapper cgsm
  418. WHERE cgsm.music_group_id_ = #{vipGroupId} AND cgsm.group_type_ = 'VIP' AND cgsm.status_ != 'QUIT'
  419. </select>
  420. <select id="queryTeacherIdMap" resultType="java.util.Map">
  421. SELECT cgtm.user_id_ 'key',cgtm.user_id_ 'value' FROM class_group_teacher_mapper cgtm
  422. WHERE cgtm.music_group_id_ = #{vipGroupId} AND cgtm.group_type_ = 'VIP'
  423. </select>
  424. <select id="findByClassGroupAndStudent" resultMap="ClassGroupStudentMapper">
  425. SELECT
  426. *
  427. FROM
  428. class_group_student_mapper
  429. WHERE
  430. class_group_id_ = #{classGroupId}
  431. AND user_id_ IN
  432. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  433. #{userId}
  434. </foreach>
  435. ORDER BY create_time_ DESC
  436. </select>
  437. <select id="queryNewStudentListByCourseScheduleId" resultMap="ClassGroupStudentMapper">
  438. SELECT cgsm.* FROM class_group_student_mapper cgsm LEFT JOIN course_schedule cs ON cgsm.class_group_id_= cs.class_group_id_
  439. LEFT JOIN course_schedule_student_payment cssp on cssp.course_schedule_id_ = cs.id_ and cssp.user_id_ = cgsm.user_id_
  440. WHERE cssp.id_ IS NULL AND cgsm.status_ != 'QUIT' and cs.id_ = #{courseScheduleId} AND cs.del_flag_ = '0'
  441. </select>
  442. <select id="findByGroups" resultMap="ClassGroupStudentMapper">
  443. SELECT
  444. cgsm.*,
  445. su.username_
  446. FROM class_group_student_mapper cgsm
  447. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  448. WHERE
  449. cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  450. AND cgsm.music_group_id_ IN
  451. <foreach collection="groupIds" item="groupId" separator="," open="(" close=")">
  452. #{groupId}
  453. </foreach>
  454. </select>
  455. <select id="findByGroupOrClassGroup" resultMap="ClassGroupStudentInfoDto">
  456. SELECT
  457. cgsm.*,
  458. su.username_,
  459. su.avatar_,
  460. su.phone_
  461. FROM class_group_student_mapper cgsm
  462. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  463. <where>
  464. <if test="groupType!=null">
  465. AND cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  466. </if>
  467. <if test="groupId!=null">
  468. AND cgsm.music_group_id_ = #{groupId}
  469. </if>
  470. <if test="classGroupId!=null">
  471. AND cgsm.class_group_id_=#{classGroupId}
  472. </if>
  473. <if test="tenantId!=null">
  474. AND cgsm.tenant_id_=#{tenantId}
  475. </if>
  476. </where>
  477. </select>
  478. <select id="findGroupStudents" resultMap="ClassGroupStudentMapper">
  479. SELECT * FROM class_group_student_mapper cgsm
  480. <where>
  481. <if test="groupType!=null">
  482. AND cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  483. </if>
  484. <if test="groupId!=null">
  485. AND cgsm.music_group_id_ = #{groupId}
  486. </if>
  487. <if test="userId!=null">
  488. AND user_id_=#{userId}
  489. </if>
  490. <if test="status!=null">
  491. AND status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  492. </if>
  493. </where>
  494. </select>
  495. <select id="getStudentEducationalTeachers" resultType="com.ym.mec.biz.dal.dto.StudentEduTeacherDto">
  496. SELECT
  497. t.user_id_ studentId,
  498. t.educational_teacher_id_ educationalTeacherId,
  499. su.real_name_ educationalTeacherName,
  500. t.group_type_ groupType
  501. FROM
  502. (
  503. SELECT
  504. mgsf.user_id_,
  505. g.educational_teacher_id_,
  506. 'MUSIC' group_type_
  507. FROM
  508. music_group_student_fee_ mgsf
  509. LEFT JOIN music_group g ON mgsf.music_group_id_ = g.id_
  510. WHERE
  511. mgsf.user_id_ IN
  512. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  513. #{studentId}
  514. </foreach>
  515. UNION ALL
  516. SELECT
  517. cgsm.user_id_,
  518. g.educational_teacher_id_,
  519. 'VIP' group_type_
  520. FROM
  521. class_group_student_mapper cgsm
  522. LEFT JOIN vip_group g ON cgsm.music_group_id_ = g.id_
  523. WHERE
  524. cgsm.group_type_ = 'VIP'
  525. AND cgsm.user_id_ IN
  526. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  527. #{studentId}
  528. </foreach>
  529. UNION ALL
  530. SELECT
  531. cgsm.user_id_,
  532. g.educational_teacher_id_,
  533. 'PRACTICE' group_type_
  534. FROM
  535. class_group_student_mapper cgsm
  536. LEFT JOIN practice_group g ON cgsm.music_group_id_ = g.id_
  537. WHERE
  538. cgsm.group_type_ = 'PRACTICE'
  539. AND cgsm.user_id_ IN
  540. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  541. #{studentId}
  542. </foreach>
  543. ) t
  544. LEFT JOIN sys_user su ON t.educational_teacher_id_=su.id_
  545. </select>
  546. <select id="existByClassGroupIds" resultType="java.lang.Boolean">
  547. SELECT COUNT(0) FROM class_group_student_mapper
  548. WHERE FIND_IN_SET(class_group_id_,#{classGroupIdListStr}) AND user_id_ = #{studentId} AND status_ = 'NORMAL'
  549. </select>
  550. <resultMap id="StudentNameAndPhoneDtoMap" type="com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto">
  551. <result property="userId" column="user_id_"/>
  552. <result property="avatar" column="avatar"/>
  553. <result property="gender" column="gender_"/>
  554. <result property="phone" column="phone_"/>
  555. <result property="subjectName" column="subject_name_"/>
  556. <result property="userName" column="username_"/>
  557. </resultMap>
  558. <select id="findCourseStudentNameAndPhoneByClassGroupId" resultMap="StudentNameAndPhoneDtoMap">
  559. SELECT cssp.user_id_,su.username_,su.phone_,su.avatar_,GROUP_CONCAT(DISTINCT s.name_) subject_name_,su.gender_
  560. FROM course_schedule_student_payment cssp
  561. LEFT JOIN student_registration sr ON cssp.music_group_id_ = sr.music_group_id_ AND cssp.user_id_ = sr.user_id_
  562. LEFT JOIN `subject` s ON s.id_ = sr.subject_id_
  563. LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
  564. WHERE cssp.class_group_id_ = #{classGroupId} AND sr.music_group_status_ != 'QUIT'
  565. GROUP BY cssp.user_id_
  566. </select>
  567. <select id="hasStudent" resultType="java.lang.Boolean">
  568. SELECT COUNT(DISTINCT class_group_id_) FROM class_group_student_mapper
  569. WHERE class_group_id_ = #{masterClassGroupId} AND status_ != 'QUIT' AND user_id_ IN
  570. <foreach collection="studentIds" separator="," open="(" close=")" item="item">
  571. #{item}
  572. </foreach>
  573. </select>
  574. <select id="queryStudentIdsByClassGroupId" resultType="java.lang.Integer">
  575. SELECT DISTINCT user_id_ FROM class_group_student_mapper
  576. <include refid="queryStudentIdsByClassGroupIdSql"/>
  577. AND status_ != 'QUIT'
  578. UNION ALL
  579. SELECT DISTINCT user_id_ FROM course_schedule_student_payment csts
  580. <include refid="queryStudentIdsByClassGroupIdSql"/>
  581. </select>
  582. <sql id="queryStudentIdsByClassGroupIdSql">
  583. <where>
  584. class_group_id_ = #{classGroupId}
  585. <if test="groupType != null">
  586. AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  587. </if>
  588. <if test="musicGroupId != null">
  589. AND music_group_id_ = #{musicGroupId}
  590. </if>
  591. </where>
  592. </sql>
  593. <select id="getStudentClassGroupBishopTeacherMap" resultType="com.ym.mec.biz.dal.dto.BaseMapDto">
  594. SELECT
  595. cgsm.user_id_ 'key',
  596. cgtm.user_id_ 'value'
  597. FROM
  598. class_group_student_mapper cgsm
  599. LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
  600. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  601. WHERE
  602. ( cg.del_flag_ IS NULL OR cg.del_flag_ = 0 )
  603. AND cg.type_ IN ( 'NORMAL')
  604. AND cgtm.teacher_role_ = 'BISHOP'
  605. AND cgsm.status_='NORMAL'
  606. <if test="musicGroupId!=null and musicGroupId!=''">
  607. AND cgsm.music_group_id_ = #{musicGroupId}
  608. </if>
  609. <if test="studentIds!=null and studentIds.size()>0">
  610. AND cgsm.user_id_ IN
  611. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  612. #{studentId}
  613. </foreach>
  614. </if>
  615. </select>
  616. <select id="getLessThenThreeClassGroupIds" resultType="java.lang.Long">
  617. SELECT DISTINCT cg.id_ FROM
  618. class_group cg
  619. LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
  620. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  621. LEFT JOIN course_schedule cs ON cs.class_group_id_=cg.id_
  622. WHERE
  623. cg.type_ IN ('HIGH', 'HIGH_ONLINE')
  624. AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
  625. AND cs.del_flag_ = '0'
  626. AND cs.status_='NOT_START'
  627. AND cs.merge_flag_ IN (0,1)
  628. <if test="hasDesc != null and hasDesc == true">
  629. AND cg.desc_ IS NOT NULL
  630. </if>
  631. <if test="hasDesc != null and hasDesc == false">
  632. AND cg.desc_ IS NULL
  633. </if>
  634. <if test="organIds!=null and organIds!=''">
  635. AND FIND_IN_SET(mg.organ_id_, #{organIds})
  636. </if>
  637. <if test="classGroupIdList != null and classGroupIdList.size() > 0">
  638. AND cg.id_ IN
  639. <foreach collection="classGroupIdList" open="(" close=")" item="classGroupId" separator=",">
  640. #{classGroupId}
  641. </foreach>
  642. </if>
  643. GROUP BY cg.id_
  644. HAVING
  645. COUNT(DISTINCT CASE WHEN cgsm.status_ = 'NORMAL' THEN cgsm.user_id_ ELSE NULL END) &lt; 3
  646. </select>
  647. <select id="getStudentClassGroupWithTeacher" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.ClassGroup">
  648. SELECT
  649. DISTINCT cg.*
  650. FROM
  651. class_group_student_mapper cgsm
  652. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  653. LEFT JOIN class_group cg ON cg.id_ = cgsm.class_group_id_
  654. WHERE
  655. cg.del_flag_ = 0
  656. AND cg.lock_flag_ =0
  657. AND cgsm.status_='NORMAL' and cg.group_type_ = 'MUSIC'
  658. AND cgsm.user_id_ IN
  659. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  660. #{studentId}
  661. </foreach>
  662. <if test="teacherId!=null">
  663. AND cgtm.user_id_ = #{teacherId}
  664. </if>
  665. <if test="musicGroupId != null and musicGroupId != ''">
  666. AND cg.music_group_id_ = #{musicGroupId}
  667. </if>
  668. AND cg.id_ IS NOT NULL
  669. ORDER BY cg.id_ DESC
  670. </select>
  671. <select id="queryByClassGroupType" resultMap="ClassGroupStudentMapperDto">
  672. SELECT cgsm.*,cgtm.user_id_ teacher_id_ from class_group_student_mapper cgsm LEFT JOIN class_group cg on cgsm.class_group_id_ = cg.id_
  673. LEFT JOIN class_group_teacher_mapper cgtm on cgsm.class_group_id_ = cgtm.class_group_id_
  674. WHERE cgtm.music_group_id_ = #{musicGroupId} and cg.type_ = #{classGroupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  675. and cgtm.teacher_role_ = #{teacherRole,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and cg.del_flag_ = 0 and cgsm.status_ = 'NORMAL'
  676. and cgsm.user_id_ IN
  677. <foreach collection="studentIdList" item="studentId" open="(" close=")" separator=",">
  678. #{studentId}
  679. </foreach>
  680. group by cgsm.user_id_
  681. </select>
  682. <select id="countByUserIdsAndClassIds" resultType="java.lang.Integer">
  683. select COUNT(cgsm.id_) from class_group_student_mapper cgsm
  684. where FIND_IN_SET(cgsm.user_id_,#{studentIds}) AND cgsm.class_group_id_ = #{oldClassId}
  685. </select>
  686. <select id="queryWaitCancelVipGroup" resultType="com.ym.mec.biz.dal.dto.VipGroupClassGroupMapper">
  687. SELECT a.id_ 'id',a.class_group_id_ classGroupId from
  688. (
  689. select vg.id_,cgsm.class_group_id_,count(cgsm.user_id_) total_student_num_,sum(case when cgsm.status_ = 'QUIT' then 1 else 0 end ) quit_student_num_
  690. from class_group_student_mapper cgsm LEFT JOIN class_group cg on cgsm.class_group_id_ = cg.id_
  691. LEFT JOIN vip_group vg on vg.id_ = cgsm.music_group_id_
  692. WHERE vg.group_status_ in (2,6) and cg.del_flag_ != 1 GROUP BY cgsm.class_group_id_
  693. ) a WHERE a.total_student_num_ = a.quit_student_num_
  694. </select>
  695. <select id="findByVipGroups" resultMap="ClassGroupStudentMapper">
  696. select * from class_group_student_mapper
  697. where music_group_id_ IN
  698. <foreach collection="groupIds" separator="," open="(" close=")" item="groupId">
  699. #{groupId}
  700. </foreach>
  701. and group_type_ IN ('VIP','LIVE') and status_ = 'QUIT'
  702. </select>
  703. <select id="getLiveCurrentCourseStudents" resultType="com.ym.mec.biz.dal.dto.StudentAttendanceViewDto">
  704. SELECT
  705. cssp.group_type_,
  706. cssp.music_group_id_,
  707. cssp.user_id_ student_id_,
  708. su.username_,
  709. su.avatar_,
  710. cssp.be_merged_,
  711. st.current_grade_num_,
  712. st.current_class_,
  713. cssp.join_course_type_ as joinCourseType,
  714. IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
  715. FROM
  716. course_schedule_student_payment cssp
  717. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  718. LEFT JOIN student st ON st.user_id_ = su.id_
  719. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  720. WHERE
  721. cssp.course_schedule_id_ =#{param.courseScheduleId}
  722. <if test="param.search != null and param.search != ''">
  723. and (su.username_ like CONCAT('%',#{param.search},'%') )
  724. </if>
  725. <if test="param.status != null">
  726. and cssp.join_course_type_ = #{param.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  727. </if>
  728. AND su.id_ IS NOT NULL
  729. </select>
  730. </mapper>