ClassGroupStudentMapperMapper.xml 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757
  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. FROM
  191. course_schedule_student_payment cssp
  192. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  193. LEFT JOIN student st ON st.user_id_ = su.id_
  194. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  195. WHERE
  196. cssp.course_schedule_id_ =#{courseScheduleId}
  197. AND su.id_ IS NOT NULL
  198. </select>
  199. <select id="findStudentByCourseWithPage" resultMap="com.ym.mec.biz.dal.dao.StudentAttendanceDao.studentAttendanceViewUtilEntity">
  200. SELECT
  201. cssp.group_type_,
  202. cssp.music_group_id_,
  203. cssp.user_id_ student_id_,
  204. su.username_,
  205. su.phone_,
  206. su.avatar_,
  207. s.name_ subject_name_,
  208. IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
  209. FROM
  210. course_schedule_student_payment cssp
  211. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  212. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  213. LEFT JOIN student_registration sr ON sr.user_id_=cssp.user_id_ AND cssp.music_group_id_=sr.music_group_id_
  214. LEFT JOIN `subject` s ON sr.subject_id_=s.id_
  215. WHERE
  216. cssp.course_schedule_id_ =#{courseScheduleId}
  217. AND su.id_ IS NOT NULL
  218. ORDER BY cssp.user_id_
  219. <include refid="global.limit"/>
  220. </select>
  221. <select id="countStudentByCourseWithPage" resultType="int">
  222. SELECT
  223. COUNT(cssp.user_id_)
  224. FROM
  225. course_schedule_student_payment cssp
  226. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  227. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  228. WHERE
  229. cssp.course_schedule_id_ =#{courseScheduleId}
  230. AND su.id_ IS NOT NULL
  231. </select>
  232. <update id="deleteByClassGroupIdAndStudents">
  233. update class_group_student_mapper set status_ = 'QUIT',update_time_ = NOW()
  234. WHERE class_group_id_=#{classGroupId} AND FIND_IN_SET(user_id_,#{userIds})
  235. </update>
  236. <update id="updateVipGroupStudentStatus">
  237. update class_group_student_mapper set status_ = #{status},update_time_ = NOW()
  238. where music_group_id_=#{groupId} and group_type_=#{groupType}
  239. </update>
  240. <select id="findClassStudentMapperByUserIdAndClassGroupId" resultMap="ClassGroupStudentMapper">
  241. SELECT * FROM class_group_student_mapper
  242. WHERE user_id_=#{userId} AND class_group_id_=#{classGroupId}
  243. <if test="status != null">
  244. AND status_ = #{status}
  245. </if>
  246. LIMIT 1
  247. </select>
  248. <select id="findByClassGroups" resultMap="ClassGroupStudentMapper">
  249. SELECT * FROM class_group_student_mapper
  250. WHERE class_group_id_ IN
  251. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  252. #{classGroupId}
  253. </foreach>
  254. AND status_ = 'NORMAL'
  255. </select>
  256. <select id="findAllByClassGroup" resultMap="ClassGroupStudentMapper">
  257. SELECT
  258. cgsm.*
  259. FROM class_group_student_mapper cgsm
  260. WHERE class_group_id_ = #{classGroupId}
  261. </select>
  262. <select id="findByClassGroup" resultMap="ClassGroupStudentMapper">
  263. SELECT
  264. cgsm.*,
  265. su.username_
  266. FROM class_group_student_mapper cgsm
  267. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  268. WHERE class_group_id_ = #{classGroupId}
  269. AND status_ = 'NORMAL'
  270. </select>
  271. <!-- 查询班级某状态的所有学生 -->
  272. <select id="findClassStudentList" resultMap="com.ym.mec.biz.dal.dao.StudentRegistrationDao.StudentRegistration">
  273. SELECT sr.*,s.name_ subject_name_,su.username_,su.gender_ FROM class_group_student_mapper cgsm
  274. LEFT JOIN student_registration sr ON (sr.user_id_ = cgsm.user_id_ AND sr.music_group_id_ = cgsm.music_group_id_)
  275. LEFT JOIN sys_user su on sr.user_id_ = su.id_
  276. LEFT JOIN subject s ON sr.actual_subject_id_ = s.id_
  277. WHERE cgsm.class_group_id_ = #{classGroupId} AND sr.music_group_status_ != 'QUIT'
  278. AND cgsm.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  279. </select>
  280. <select id="findHighClassGroupHasUser" resultMap="ClassGroupStudentMapper">
  281. SELECT cgsm.* FROM class_group_student_mapper cgsm
  282. LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
  283. WHERE cgsm.music_group_id_ = #{musicGroupId}
  284. AND cgsm.user_id_=#{userId}
  285. AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  286. AND FIND_IN_SET(cgsm.status_,'NORMAL,LEAVE')
  287. AND cg.del_flag_='0'
  288. </select>
  289. <select id="findClassGroupIdByUserAndCourseDateAndStatus" resultType="int">
  290. SELECT
  291. cgsm.class_group_id_
  292. FROM
  293. class_group_student_mapper cgsm
  294. LEFT JOIN course_schedule cs ON cgsm.class_group_id_=cs.class_group_id_
  295. WHERE cgsm.user_id_=#{userId} AND cs.del_flag_ = 0
  296. AND cs.class_date_ = DATE_FORMAT(#{data},'%Y-%m-%d')
  297. AND cgsm.status_=#{status}
  298. </select>
  299. <select id="countClassGroupsStudentNum" resultType="map">
  300. SELECT
  301. class_group_id_ AS 'key',
  302. COUNT( user_id_ ) AS 'value'
  303. FROM
  304. class_group_student_mapper
  305. WHERE
  306. class_group_id_ IN
  307. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  308. #{classGroupId}
  309. </foreach>
  310. AND status_!='QUIT'
  311. <if test="status!=null">
  312. AND status_=#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  313. </if>
  314. GROUP BY
  315. class_group_id_
  316. </select>
  317. <select id="countGroupAllStudentNum" resultType="map">
  318. SELECT
  319. music_group_id_ AS 'key',
  320. COUNT( user_id_ ) AS 'value'
  321. FROM
  322. class_group_student_mapper
  323. WHERE
  324. music_group_id_ IN
  325. <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
  326. #{groupId}
  327. </foreach>
  328. AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  329. GROUP BY
  330. music_group_id_
  331. </select>
  332. <select id="countClassGroupStudentNum" resultType="int">
  333. SELECT
  334. COUNT( user_id_ )
  335. FROM
  336. class_group_student_mapper
  337. WHERE
  338. class_group_id_ = #{classGroupId}
  339. AND status_!='QUIT'
  340. </select>
  341. <select id="countClassGroupNormalStudentNum" resultType="int">
  342. SELECT
  343. COUNT( user_id_ )
  344. FROM
  345. class_group_student_mapper
  346. WHERE
  347. class_group_id_ = #{classGroupId}
  348. AND status_!='QUIT' AND status_!='QUIT_SCHOOL'
  349. </select>
  350. <select id="countGroupNormalStudentNum" resultType="int">
  351. SELECT
  352. COUNT( user_id_ )
  353. FROM
  354. class_group_student_mapper
  355. WHERE
  356. group_type_ = #{groupType}
  357. AND music_group_id_= #{groupId}
  358. AND status_='NORMAL'
  359. </select>
  360. <select id="countGroupStudentNum" resultType="int">
  361. SELECT
  362. COUNT( user_id_ )
  363. FROM
  364. class_group_student_mapper
  365. WHERE
  366. group_type_ = #{groupType}
  367. AND music_group_id_ = #{groupId}
  368. AND status_!='QUIT' AND status_!='QUIT_SCHOOL'
  369. </select>
  370. <select id="countClassGroupExitStudentNum" resultType="int">
  371. SELECT
  372. COUNT( user_id_ )
  373. FROM
  374. class_group_student_mapper
  375. WHERE
  376. class_group_id_ = #{classGroupId}
  377. AND user_id_ IN
  378. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  379. #{userId}
  380. </foreach>
  381. AND status_!='QUIT'
  382. </select>
  383. <select id="countUserGroups" resultType="int">
  384. SELECT COUNT(DISTINCT cgsm.music_group_id_)
  385. FROM class_group_student_mapper cgsm
  386. LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
  387. WHERE cgsm.user_id_=#{userId} AND cgsm.group_type_=#{groupType} AND cgsm.status_!='QUIT' AND cg.del_flag_!=1
  388. </select>
  389. <select id="queryClassGroupIdList" resultType="int" parameterType="map">
  390. SELECT distinct class_group_id_ FROM class_group_student_mapper WHERE user_id_=#{userId}
  391. AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  392. AND music_group_id_ = #{musicGroupId}
  393. AND status_ != 'QUIT'
  394. </select>
  395. <select id="findMusicGroupClassGroupByType" resultMap="ClassGroupStudentMapper">
  396. SELECT cgsm.* FROM class_group_student_mapper cgsm
  397. LEFT JOIN class_group cg on cgsm.class_group_id_ = cg.id_
  398. 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')
  399. </select>
  400. <select id="queryStudentIdMap" resultType="java.util.Map">
  401. SELECT cgsm.user_id_ 'key',cgsm.user_id_ 'value' FROM class_group_student_mapper cgsm
  402. WHERE cgsm.music_group_id_ = #{vipGroupId} AND cgsm.group_type_ = 'VIP' AND cgsm.status_ != 'QUIT'
  403. </select>
  404. <select id="queryTeacherIdMap" resultType="java.util.Map">
  405. SELECT cgtm.user_id_ 'key',cgtm.user_id_ 'value' FROM class_group_teacher_mapper cgtm
  406. WHERE cgtm.music_group_id_ = #{vipGroupId} AND cgtm.group_type_ = 'VIP'
  407. </select>
  408. <select id="findByClassGroupAndStudent" resultMap="ClassGroupStudentMapper">
  409. SELECT
  410. *
  411. FROM
  412. class_group_student_mapper
  413. WHERE
  414. class_group_id_ = #{classGroupId}
  415. AND user_id_ IN
  416. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  417. #{userId}
  418. </foreach>
  419. ORDER BY create_time_ DESC
  420. </select>
  421. <select id="queryNewStudentListByCourseScheduleId" resultMap="ClassGroupStudentMapper">
  422. SELECT cgsm.* FROM class_group_student_mapper cgsm LEFT JOIN course_schedule cs ON cgsm.class_group_id_= cs.class_group_id_
  423. LEFT JOIN course_schedule_student_payment cssp on cssp.course_schedule_id_ = cs.id_ and cssp.user_id_ = cgsm.user_id_
  424. WHERE cssp.id_ IS NULL AND cgsm.status_ != 'QUIT' and cs.id_ = #{courseScheduleId} AND cs.del_flag_ = 0
  425. </select>
  426. <select id="findByGroups" resultMap="ClassGroupStudentMapper">
  427. SELECT
  428. cgsm.*,
  429. su.username_
  430. FROM class_group_student_mapper cgsm
  431. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  432. WHERE
  433. cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  434. AND cgsm.music_group_id_ IN
  435. <foreach collection="groupIds" item="groupId" separator="," open="(" close=")">
  436. #{groupId}
  437. </foreach>
  438. </select>
  439. <select id="findByGroupOrClassGroup" resultMap="ClassGroupStudentInfoDto">
  440. SELECT
  441. cgsm.*,
  442. su.username_,
  443. su.avatar_,
  444. su.phone_
  445. FROM class_group_student_mapper cgsm
  446. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  447. <where>
  448. <if test="groupType!=null">
  449. AND cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  450. </if>
  451. <if test="groupId!=null">
  452. AND cgsm.music_group_id_ = #{groupId}
  453. </if>
  454. <if test="classGroupId!=null">
  455. AND cgsm.class_group_id_=#{classGroupId}
  456. </if>
  457. <if test="tenantId!=null">
  458. AND cgsm.tenant_id_=#{tenantId}
  459. </if>
  460. </where>
  461. </select>
  462. <select id="findGroupStudents" resultMap="ClassGroupStudentMapper">
  463. SELECT * FROM class_group_student_mapper cgsm
  464. <where>
  465. <if test="groupType!=null">
  466. AND cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  467. </if>
  468. <if test="groupId!=null">
  469. AND cgsm.music_group_id_ = #{groupId}
  470. </if>
  471. <if test="userId!=null">
  472. AND user_id_=#{userId}
  473. </if>
  474. <if test="status!=null">
  475. AND status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  476. </if>
  477. </where>
  478. </select>
  479. <select id="getStudentEducationalTeachers" resultType="com.ym.mec.biz.dal.dto.StudentEduTeacherDto">
  480. SELECT
  481. t.user_id_ studentId,
  482. t.educational_teacher_id_ educationalTeacherId,
  483. su.real_name_ educationalTeacherName,
  484. t.group_type_ groupType
  485. FROM
  486. (
  487. SELECT
  488. mgsf.user_id_,
  489. g.educational_teacher_id_,
  490. 'MUSIC' group_type_
  491. FROM
  492. music_group_student_fee_ mgsf
  493. LEFT JOIN music_group g ON mgsf.music_group_id_ = g.id_
  494. WHERE
  495. mgsf.user_id_ IN
  496. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  497. #{studentId}
  498. </foreach>
  499. UNION ALL
  500. SELECT
  501. cgsm.user_id_,
  502. g.educational_teacher_id_,
  503. 'VIP' group_type_
  504. FROM
  505. class_group_student_mapper cgsm
  506. LEFT JOIN vip_group g ON cgsm.music_group_id_ = g.id_
  507. WHERE
  508. cgsm.group_type_ = 'VIP'
  509. AND cgsm.user_id_ IN
  510. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  511. #{studentId}
  512. </foreach>
  513. UNION ALL
  514. SELECT
  515. cgsm.user_id_,
  516. g.educational_teacher_id_,
  517. 'PRACTICE' group_type_
  518. FROM
  519. class_group_student_mapper cgsm
  520. LEFT JOIN practice_group g ON cgsm.music_group_id_ = g.id_
  521. WHERE
  522. cgsm.group_type_ = 'PRACTICE'
  523. AND cgsm.user_id_ IN
  524. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  525. #{studentId}
  526. </foreach>
  527. ) t
  528. LEFT JOIN sys_user su ON t.educational_teacher_id_=su.id_
  529. </select>
  530. <select id="existByClassGroupIds" resultType="java.lang.Boolean">
  531. SELECT COUNT(0) FROM class_group_student_mapper
  532. WHERE FIND_IN_SET(class_group_id_,#{classGroupIdListStr}) AND user_id_ = #{studentId} AND status_ = 'NORMAL'
  533. </select>
  534. <resultMap id="StudentNameAndPhoneDtoMap" type="com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto">
  535. <result property="userId" column="user_id_"/>
  536. <result property="avatar" column="avatar"/>
  537. <result property="gender" column="gender_"/>
  538. <result property="phone" column="phone_"/>
  539. <result property="subjectName" column="subject_name_"/>
  540. <result property="userName" column="username_"/>
  541. </resultMap>
  542. <select id="findCourseStudentNameAndPhoneByClassGroupId" resultMap="StudentNameAndPhoneDtoMap">
  543. SELECT cssp.user_id_,su.username_,su.phone_,su.avatar_,GROUP_CONCAT(DISTINCT s.name_) subject_name_,su.gender_
  544. FROM course_schedule_student_payment cssp
  545. LEFT JOIN student_registration sr ON cssp.music_group_id_ = sr.music_group_id_ AND cssp.user_id_ = sr.user_id_
  546. LEFT JOIN `subject` s ON s.id_ = sr.subject_id_
  547. LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
  548. WHERE cssp.class_group_id_ = #{classGroupId} AND sr.music_group_status_ != 'QUIT'
  549. GROUP BY cssp.user_id_
  550. </select>
  551. <select id="hasStudent" resultType="java.lang.Boolean">
  552. SELECT COUNT(DISTINCT class_group_id_) FROM class_group_student_mapper
  553. WHERE class_group_id_ = #{masterClassGroupId} AND status_ != 'QUIT' AND user_id_ IN
  554. <foreach collection="studentIds" separator="," open="(" close=")" item="item">
  555. #{item}
  556. </foreach>
  557. </select>
  558. <select id="queryStudentIdsByClassGroupId" resultType="java.lang.Integer">
  559. SELECT DISTINCT user_id_ FROM class_group_student_mapper
  560. <include refid="queryStudentIdsByClassGroupIdSql"/>
  561. AND status_ != 'QUIT'
  562. UNION ALL
  563. SELECT DISTINCT user_id_ FROM course_schedule_student_payment csts
  564. <include refid="queryStudentIdsByClassGroupIdSql"/>
  565. </select>
  566. <sql id="queryStudentIdsByClassGroupIdSql">
  567. <where>
  568. class_group_id_ = #{classGroupId}
  569. <if test="groupType != null">
  570. AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  571. </if>
  572. <if test="musicGroupId != null">
  573. AND music_group_id_ = #{musicGroupId}
  574. </if>
  575. </where>
  576. </sql>
  577. <select id="getStudentClassGroupBishopTeacherMap" resultType="com.ym.mec.biz.dal.dto.BaseMapDto">
  578. SELECT
  579. cgsm.user_id_ 'key',
  580. cgtm.user_id_ 'value'
  581. FROM
  582. class_group_student_mapper cgsm
  583. LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
  584. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  585. WHERE
  586. ( cg.del_flag_ IS NULL OR cg.del_flag_ = 0 )
  587. AND cg.type_ IN ( 'NORMAL')
  588. AND cgtm.teacher_role_ = 'BISHOP'
  589. AND cgsm.status_='NORMAL'
  590. <if test="musicGroupId!=null and musicGroupId!=''">
  591. AND cgsm.music_group_id_ = #{musicGroupId}
  592. </if>
  593. <if test="studentIds!=null and studentIds.size()>0">
  594. AND cgsm.user_id_ IN
  595. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  596. #{studentId}
  597. </foreach>
  598. </if>
  599. </select>
  600. <select id="getLessThenThreeClassGroupIds" resultType="java.lang.Long">
  601. SELECT DISTINCT cg.id_ FROM
  602. class_group cg
  603. LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
  604. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  605. LEFT JOIN course_schedule cs ON cs.class_group_id_=cg.id_
  606. WHERE
  607. cg.type_ IN ('HIGH', 'HIGH_ONLINE')
  608. AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
  609. AND cs.del_flag_=0
  610. AND cs.status_='NOT_START'
  611. AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
  612. <if test="hasDesc != null and hasDesc == true">
  613. AND cg.desc_ IS NOT NULL
  614. </if>
  615. <if test="hasDesc != null and hasDesc == false">
  616. AND cg.desc_ IS NULL
  617. </if>
  618. <if test="organIds!=null and organIds!=''">
  619. AND FIND_IN_SET(mg.organ_id_, #{organIds})
  620. </if>
  621. <if test="classGroupIdList != null and classGroupIdList.size() > 0">
  622. AND cg.id_ IN
  623. <foreach collection="classGroupIdList" open="(" close=")" item="classGroupId" separator=",">
  624. #{classGroupId}
  625. </foreach>
  626. </if>
  627. GROUP BY cg.id_
  628. HAVING
  629. COUNT(DISTINCT CASE WHEN cgsm.status_ = 'NORMAL' THEN cgsm.user_id_ ELSE NULL END) &lt; 3
  630. </select>
  631. <select id="getStudentClassGroupWithTeacher" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.ClassGroup">
  632. SELECT
  633. DISTINCT cg.*
  634. FROM
  635. class_group_student_mapper cgsm
  636. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  637. LEFT JOIN class_group cg ON cg.id_ = cgsm.class_group_id_
  638. WHERE
  639. cg.del_flag_ = 0
  640. AND cg.lock_flag_ =0
  641. AND cgsm.status_='NORMAL' and cg.group_type_ = 'MUSIC'
  642. AND cgsm.user_id_ IN
  643. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  644. #{studentId}
  645. </foreach>
  646. <if test="teacherId!=null">
  647. AND cgtm.user_id_ = #{teacherId}
  648. </if>
  649. <if test="musicGroupId != null and musicGroupId != ''">
  650. AND cg.music_group_id_ = #{musicGroupId}
  651. </if>
  652. AND cg.id_ IS NOT NULL
  653. ORDER BY cg.id_ DESC
  654. </select>
  655. <select id="queryByClassGroupType" resultMap="ClassGroupStudentMapperDto">
  656. 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_
  657. LEFT JOIN class_group_teacher_mapper cgtm on cgsm.class_group_id_ = cgtm.class_group_id_
  658. WHERE cgtm.music_group_id_ = #{musicGroupId} and cg.type_ = #{classGroupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  659. and cgtm.teacher_role_ = #{teacherRole,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and cg.del_flag_ = 0 and cgsm.status_ = 'NORMAL'
  660. and cgsm.user_id_ IN
  661. <foreach collection="studentIdList" item="studentId" open="(" close=")" separator=",">
  662. #{studentId}
  663. </foreach>
  664. group by cgsm.user_id_
  665. </select>
  666. <select id="countByUserIdsAndClassIds" resultType="java.lang.Integer">
  667. select COUNT(cgsm.id_) from class_group_student_mapper cgsm
  668. where FIND_IN_SET(cgsm.user_id_,#{studentIds}) AND cgsm.class_group_id_ = #{oldClassId}
  669. </select>
  670. <select id="queryWaitCancelVipGroup" resultType="com.ym.mec.biz.dal.dto.VipGroupClassGroupMapper">
  671. SELECT a.id_ 'id',a.class_group_id_ classGroupId from
  672. (
  673. 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_
  674. from class_group_student_mapper cgsm LEFT JOIN class_group cg on cgsm.class_group_id_ = cg.id_
  675. LEFT JOIN vip_group vg on vg.id_ = cgsm.music_group_id_
  676. WHERE vg.group_status_ in (2,6) and cg.del_flag_ != 1 GROUP BY cgsm.class_group_id_
  677. ) a WHERE a.total_student_num_ = a.quit_student_num_
  678. </select>
  679. <select id="findByVipGroups" resultMap="ClassGroupStudentMapper">
  680. select * from class_group_student_mapper
  681. where music_group_id_ IN
  682. <foreach collection="groupIds" separator="," open="(" close=")" item="groupId">
  683. #{groupId}
  684. </foreach>
  685. and group_type_ IN ('VIP','LIVE') and status_ = 'QUIT'
  686. </select>
  687. <select id="getLiveCurrentCourseStudents" resultType="com.ym.mec.biz.dal.dto.StudentAttendanceViewDto">
  688. SELECT
  689. cssp.group_type_,
  690. cssp.music_group_id_,
  691. cssp.user_id_ student_id_,
  692. su.username_,
  693. su.avatar_,
  694. cssp.be_merged_,
  695. st.current_grade_num_,
  696. st.current_class_,
  697. cssp.join_course_type_ as joinCourseType,
  698. IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
  699. FROM
  700. course_schedule_student_payment cssp
  701. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  702. LEFT JOIN student st ON st.user_id_ = su.id_
  703. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  704. WHERE
  705. cssp.course_schedule_id_ =#{param.courseScheduleId}
  706. <if test="param.search != null and param.search != ''">
  707. and (su.username_ like CONCAT('%',#{param.search},'%') )
  708. </if>
  709. <if test="param.status != null">
  710. and cssp.join_course_type_ = #{param.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  711. </if>
  712. AND su.id_ IS NOT NULL
  713. </select>
  714. </mapper>