ClassGroupStudentMapperMapper.xml 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701
  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_,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},#{item.userId},#{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),#{item.tenantId})
  107. </foreach>
  108. </insert>
  109. <select id="query" resultMap="ClassGroupStudentMapper" parameterType="map">
  110. SELECT * FROM class_group_student_mapper
  111. where class_group_id_ = #{classGroupId} and user_id_ = #{userId} AND status_ != 'QUIT'
  112. </select>
  113. <select id="findClassGroupStudent" resultMap="ClassGroupStudentMapper">
  114. SELECT * FROM class_group_student_mapper
  115. where class_group_id_ = #{classGroupId} and user_id_ = #{userId}
  116. </select>
  117. <select id="findStudentNumByClassGroupId" resultType="string">
  118. SELECT
  119. su.username_
  120. FROM
  121. class_group_student_mapper cgsm
  122. LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
  123. WHERE cgsm.class_group_id_=#{classGroupId} AND cgsm.status_!='QUIT'
  124. </select>
  125. <select id="findCourseStudentName" resultType="string">
  126. SELECT
  127. su.username_
  128. FROM
  129. course_schedule_student_payment cssp
  130. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  131. WHERE
  132. cssp.course_schedule_id_ = #{courseScheduleId}
  133. </select>
  134. <select id="findCourseStudentNameAndPhone" resultType="com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto">
  135. SELECT
  136. su.id_ userId,
  137. su.username_ userName,
  138. su.phone_ phone,
  139. su.avatar_ avatar
  140. FROM
  141. course_schedule_student_payment cssp
  142. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  143. WHERE
  144. cssp.course_schedule_id_ = #{courseScheduleId}
  145. </select>
  146. <resultMap id="teacherClassStudentDto" type="com.ym.mec.biz.dal.dto.TeacherClassStudentDto">
  147. <result property="userId" column="user_id_"/>
  148. <result property="userName" column="username_"/>
  149. <result property="avatar" column="avatar_"/>
  150. <result property="phone" column="phone_"/>
  151. <result property="continuousAbsenteeismTimes" column="continuous_absenteeism_times_"/>
  152. </resultMap>
  153. <select id="findClassStudent" resultMap="teacherClassStudentDto">
  154. SELECT
  155. su.id_ user_id_,
  156. su.username_,
  157. su.avatar_,
  158. su.phone_,
  159. mgsf.continuous_absenteeism_times_
  160. FROM
  161. class_group_student_mapper cgsm
  162. LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
  163. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  164. LEFT JOIN music_group_student_fee_ mgsf ON cg.music_group_id_=mgsf.music_group_id_ AND su.id_ = mgsf.user_id_
  165. WHERE
  166. cgsm.class_group_id_ = #{classGroupId} AND cgsm.status_ != 'QUIT'
  167. ORDER BY su.id_
  168. <include refid="global.limit"/>
  169. </select>
  170. <select id="findClassStudentNum" resultType="int">
  171. SELECT
  172. COUNT(*)
  173. FROM
  174. class_group_student_mapper cgsm
  175. WHERE
  176. cgsm.class_group_id_ = #{classGroupId} AND cgsm.status_ != 'QUIT'
  177. </select>
  178. <select id="findStudentByCourse" resultMap="com.ym.mec.biz.dal.dao.StudentAttendanceDao.studentAttendanceViewUtilEntity">
  179. SELECT
  180. cssp.group_type_,
  181. cssp.music_group_id_,
  182. cssp.user_id_ student_id_,
  183. su.username_,
  184. su.avatar_,
  185. cssp.be_merged_,
  186. st.current_grade_num_,
  187. IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
  188. FROM
  189. course_schedule_student_payment cssp
  190. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  191. LEFT JOIN student st ON st.user_id_ = su.id_
  192. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  193. WHERE
  194. cssp.course_schedule_id_ =#{courseScheduleId}
  195. AND su.id_ IS NOT NULL
  196. </select>
  197. <select id="findStudentByCourseWithPage" resultMap="com.ym.mec.biz.dal.dao.StudentAttendanceDao.studentAttendanceViewUtilEntity">
  198. SELECT
  199. cssp.group_type_,
  200. cssp.music_group_id_,
  201. cssp.user_id_ student_id_,
  202. su.username_,
  203. su.phone_,
  204. su.avatar_,
  205. s.name_ subject_name_,
  206. IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
  207. FROM
  208. course_schedule_student_payment cssp
  209. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  210. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  211. LEFT JOIN student_registration sr ON sr.user_id_=cssp.user_id_ AND cssp.music_group_id_=sr.music_group_id_
  212. LEFT JOIN `subject` s ON sr.subject_id_=s.id_
  213. WHERE
  214. cssp.course_schedule_id_ =#{courseScheduleId}
  215. AND su.id_ IS NOT NULL
  216. ORDER BY cssp.user_id_
  217. <include refid="global.limit"/>
  218. </select>
  219. <select id="countStudentByCourseWithPage" resultType="int">
  220. SELECT
  221. COUNT(cssp.user_id_)
  222. FROM
  223. course_schedule_student_payment cssp
  224. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  225. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  226. WHERE
  227. cssp.course_schedule_id_ =#{courseScheduleId}
  228. AND su.id_ IS NOT NULL
  229. </select>
  230. <update id="deleteStudentByMusicGroupId" parameterType="map">
  231. update class_group_student_mapper set status_ = 'QUIT',update_time_ = NOW()
  232. where class_group_id_ in (select id_ from class_group where music_group_id_ = #{musicGroupId}) and user_id_ = #{userId}
  233. </update>
  234. <update id="deleteStudentByClassGroupId">
  235. update class_group_student_mapper set status_ = 'QUIT',update_time_ = NOW()
  236. WHERE class_group_id_=#{classGroupId} AND user_id_=#{userId}
  237. </update>
  238. <update id="deleteByClassGroupIdAndStudents">
  239. update class_group_student_mapper set status_ = 'QUIT',update_time_ = NOW()
  240. WHERE class_group_id_=#{classGroupId} AND FIND_IN_SET(user_id_,#{userIds})
  241. </update>
  242. <update id="updateVipGroupStudentStatus">
  243. update class_group_student_mapper set status_ = #{status},update_time_ = NOW()
  244. where music_group_id_=#{groupId} and group_type_=#{groupType}
  245. </update>
  246. <select id="findClassStudentMapperByUserIdAndClassGroupId" resultMap="ClassGroupStudentMapper">
  247. SELECT * FROM class_group_student_mapper
  248. WHERE user_id_=#{userId} AND class_group_id_=#{classGroupId}
  249. <if test="status != null">
  250. AND status_ = #{status}
  251. </if>
  252. LIMIT 1
  253. </select>
  254. <select id="findByClassGroups" resultMap="ClassGroupStudentMapper">
  255. SELECT * FROM class_group_student_mapper
  256. WHERE class_group_id_ IN
  257. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  258. #{classGroupId}
  259. </foreach>
  260. AND status_ = 'NORMAL'
  261. </select>
  262. <select id="findAllByClassGroup" resultMap="ClassGroupStudentMapper">
  263. SELECT
  264. cgsm.*
  265. FROM class_group_student_mapper cgsm
  266. WHERE class_group_id_ = #{classGroupId}
  267. </select>
  268. <select id="findByClassGroup" resultMap="ClassGroupStudentMapper">
  269. SELECT
  270. cgsm.*,
  271. su.username_
  272. FROM class_group_student_mapper cgsm
  273. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  274. WHERE class_group_id_ = #{classGroupId}
  275. AND status_ = 'NORMAL'
  276. </select>
  277. <!-- 查询班级某状态的所有学生 -->
  278. <select id="findClassStudentList" resultMap="com.ym.mec.biz.dal.dao.StudentRegistrationDao.StudentRegistration">
  279. SELECT sr.*,s.name_ subject_name_,su.username_,su.gender_ FROM class_group_student_mapper cgsm
  280. LEFT JOIN student_registration sr ON (sr.user_id_ = cgsm.user_id_ AND sr.music_group_id_ = cgsm.music_group_id_)
  281. LEFT JOIN sys_user su on sr.user_id_ = su.id_
  282. LEFT JOIN subject s ON sr.actual_subject_id_ = s.id_
  283. WHERE cgsm.class_group_id_ = #{classGroupId} AND sr.music_group_status_ != 'QUIT'
  284. AND cgsm.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  285. </select>
  286. <select id="findHighClassGroupHasUser" resultMap="ClassGroupStudentMapper">
  287. SELECT cgsm.* FROM class_group_student_mapper cgsm
  288. LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
  289. WHERE cgsm.music_group_id_ = #{musicGroupId}
  290. AND cgsm.user_id_=#{userId}
  291. AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  292. AND FIND_IN_SET(cgsm.status_,'NORMAL,LEAVE')
  293. AND cg.del_flag_='0'
  294. </select>
  295. <select id="findClassGroupIdByUserAndCourseDateAndStatus" resultType="int">
  296. SELECT
  297. cgsm.class_group_id_
  298. FROM
  299. class_group_student_mapper cgsm
  300. LEFT JOIN course_schedule cs ON cgsm.class_group_id_=cs.class_group_id_
  301. WHERE cgsm.user_id_=#{userId}
  302. AND cs.class_date_ = DATE_FORMAT(#{data},'%Y-%m-%d')
  303. AND cgsm.status_=#{status}
  304. </select>
  305. <select id="countClassGroupsStudentNum" resultType="map">
  306. SELECT
  307. class_group_id_ AS 'key',
  308. COUNT( user_id_ ) AS 'value'
  309. FROM
  310. class_group_student_mapper
  311. WHERE
  312. class_group_id_ IN
  313. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  314. #{classGroupId}
  315. </foreach>
  316. AND status_!='QUIT'
  317. <if test="status!=null">
  318. AND status_=#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  319. </if>
  320. GROUP BY
  321. class_group_id_
  322. </select>
  323. <select id="countGroupAllStudentNum" resultType="map">
  324. SELECT
  325. music_group_id_ AS 'key',
  326. COUNT( user_id_ ) AS 'value'
  327. FROM
  328. class_group_student_mapper
  329. WHERE
  330. music_group_id_ IN
  331. <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
  332. #{groupId}
  333. </foreach>
  334. AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  335. GROUP BY
  336. music_group_id_
  337. </select>
  338. <select id="countClassGroupStudentNum" resultType="int">
  339. SELECT
  340. COUNT( user_id_ )
  341. FROM
  342. class_group_student_mapper
  343. WHERE
  344. class_group_id_ = #{classGroupId}
  345. AND status_!='QUIT'
  346. </select>
  347. <select id="countClassGroupNormalStudentNum" resultType="int">
  348. SELECT
  349. COUNT( user_id_ )
  350. FROM
  351. class_group_student_mapper
  352. WHERE
  353. class_group_id_ = #{classGroupId}
  354. AND status_!='QUIT' AND status_!='QUIT_SCHOOL'
  355. </select>
  356. <select id="countGroupNormalStudentNum" resultType="int">
  357. SELECT
  358. COUNT( user_id_ )
  359. FROM
  360. class_group_student_mapper
  361. WHERE
  362. group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  363. AND music_group_id_= #{groupId}
  364. AND status_='NORMAL'
  365. </select>
  366. <select id="countGroupStudentNum" 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_!='QUIT' AND status_!='QUIT_SCHOOL'
  375. </select>
  376. <select id="countClassGroupExitStudentNum" resultType="int">
  377. SELECT
  378. COUNT( user_id_ )
  379. FROM
  380. class_group_student_mapper
  381. WHERE
  382. class_group_id_ = #{classGroupId}
  383. AND user_id_ IN
  384. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  385. #{userId}
  386. </foreach>
  387. AND status_!='QUIT'
  388. </select>
  389. <select id="countUserGroups" resultType="int">
  390. SELECT COUNT(DISTINCT cgsm.music_group_id_)
  391. FROM class_group_student_mapper cgsm
  392. LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
  393. WHERE cgsm.user_id_=#{userId} AND cgsm.group_type_=#{groupType} AND cgsm.status_!='QUIT' AND cg.del_flag_!=1
  394. </select>
  395. <select id="queryClassGroupIdList" resultType="int" parameterType="map">
  396. SELECT distinct class_group_id_ FROM class_group_student_mapper WHERE user_id_=#{userId}
  397. AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  398. AND music_group_id_ = #{musicGroupId}
  399. AND status_ != 'QUIT'
  400. </select>
  401. <select id="findMusicGroupClassGroupByType" resultMap="ClassGroupStudentMapper">
  402. SELECT cgsm.* FROM class_group_student_mapper cgsm
  403. LEFT JOIN class_group cg on cgsm.class_group_id_ = cg.id_
  404. 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')
  405. </select>
  406. <select id="queryStudentIdMap" resultType="java.util.Map">
  407. SELECT cgsm.user_id_ 'key',cgsm.user_id_ 'value' FROM class_group_student_mapper cgsm
  408. WHERE cgsm.music_group_id_ = #{vipGroupId} AND cgsm.group_type_ = 'VIP' AND cgsm.status_ != 'QUIT'
  409. </select>
  410. <select id="queryTeacherIdMap" resultType="java.util.Map">
  411. SELECT cgtm.user_id_ 'key',cgtm.user_id_ 'value' FROM class_group_teacher_mapper cgtm
  412. WHERE cgtm.music_group_id_ = #{vipGroupId} AND cgtm.group_type_ = 'VIP'
  413. </select>
  414. <select id="findByClassGroupAndStudent" resultMap="ClassGroupStudentMapper">
  415. SELECT
  416. *
  417. FROM
  418. class_group_student_mapper
  419. WHERE
  420. class_group_id_ = #{classGroupId}
  421. AND user_id_ IN
  422. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  423. #{userId}
  424. </foreach>
  425. ORDER BY create_time_ DESC
  426. </select>
  427. <select id="queryNewStudentListByCourseScheduleId" resultMap="ClassGroupStudentMapper">
  428. SELECT cgsm.* FROM class_group_student_mapper cgsm LEFT JOIN course_schedule cs ON cgsm.class_group_id_= cs.class_group_id_
  429. LEFT JOIN course_schedule_student_payment cssp on cssp.course_schedule_id_ = cs.id_ and cssp.user_id_ = cgsm.user_id_
  430. WHERE cssp.id_ IS NULL AND cgsm.status_ != 'QUIT' and cs.id_ = #{courseScheduleId}
  431. </select>
  432. <select id="findByGroups" resultMap="ClassGroupStudentMapper">
  433. SELECT
  434. cgsm.*,
  435. su.username_
  436. FROM class_group_student_mapper cgsm
  437. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  438. WHERE
  439. cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  440. AND cgsm.music_group_id_ IN
  441. <foreach collection="groupIds" item="groupId" separator="," open="(" close=")">
  442. #{groupId}
  443. </foreach>
  444. </select>
  445. <select id="findByGroupOrClassGroup" resultMap="ClassGroupStudentInfoDto">
  446. SELECT
  447. cgsm.*,
  448. su.username_,
  449. su.avatar_,
  450. su.phone_
  451. FROM class_group_student_mapper cgsm
  452. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  453. <where>
  454. <if test="groupType!=null">
  455. AND cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  456. </if>
  457. <if test="groupId!=null">
  458. AND cgsm.music_group_id_ = #{groupId}
  459. </if>
  460. <if test="classGroupId!=null">
  461. AND cgsm.class_group_id_=#{classGroupId}
  462. </if>
  463. <if test="tenantId!=null">
  464. AND cgsm.tenant_id_=#{tenantId}
  465. </if>
  466. </where>
  467. </select>
  468. <select id="findGroupStudents" resultMap="ClassGroupStudentMapper">
  469. SELECT * FROM class_group_student_mapper cgsm
  470. <where>
  471. <if test="groupType!=null">
  472. AND cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  473. </if>
  474. <if test="groupId!=null">
  475. AND cgsm.music_group_id_ = #{groupId}
  476. </if>
  477. <if test="userId!=null">
  478. AND user_id_=#{userId}
  479. </if>
  480. <if test="status!=null">
  481. AND status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  482. </if>
  483. </where>
  484. </select>
  485. <select id="getStudentEducationalTeachers" resultType="com.ym.mec.biz.dal.dto.StudentEduTeacherDto">
  486. SELECT
  487. t.user_id_ studentId,
  488. t.educational_teacher_id_ educationalTeacherId,
  489. su.real_name_ educationalTeacherName,
  490. t.group_type_ groupType
  491. FROM
  492. (
  493. SELECT
  494. mgsf.user_id_,
  495. g.educational_teacher_id_,
  496. 'MUSIC' group_type_
  497. FROM
  498. music_group_student_fee_ mgsf
  499. LEFT JOIN music_group g ON mgsf.music_group_id_ = g.id_
  500. WHERE
  501. mgsf.user_id_ IN
  502. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  503. #{studentId}
  504. </foreach>
  505. UNION ALL
  506. SELECT
  507. cgsm.user_id_,
  508. g.educational_teacher_id_,
  509. 'VIP' group_type_
  510. FROM
  511. class_group_student_mapper cgsm
  512. LEFT JOIN vip_group g ON cgsm.music_group_id_ = g.id_
  513. WHERE
  514. cgsm.group_type_ = 'VIP'
  515. AND cgsm.user_id_ IN
  516. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  517. #{studentId}
  518. </foreach>
  519. UNION ALL
  520. SELECT
  521. cgsm.user_id_,
  522. g.educational_teacher_id_,
  523. 'PRACTICE' group_type_
  524. FROM
  525. class_group_student_mapper cgsm
  526. LEFT JOIN practice_group g ON cgsm.music_group_id_ = g.id_
  527. WHERE
  528. cgsm.group_type_ = 'PRACTICE'
  529. AND cgsm.user_id_ IN
  530. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  531. #{studentId}
  532. </foreach>
  533. ) t
  534. LEFT JOIN sys_user su ON t.educational_teacher_id_=su.id_
  535. </select>
  536. <select id="existByClassGroupIds" resultType="java.lang.Boolean">
  537. SELECT COUNT(0) FROM class_group_student_mapper
  538. WHERE FIND_IN_SET(class_group_id_,#{classGroupIdListStr}) AND user_id_ = #{studentId} AND status_ = 'NORMAL'
  539. </select>
  540. <resultMap id="StudentNameAndPhoneDtoMap" type="com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto">
  541. <result property="userId" column="user_id_"/>
  542. <result property="avatar" column="avatar"/>
  543. <result property="gender" column="gender_"/>
  544. <result property="phone" column="phone_"/>
  545. <result property="subjectName" column="subject_name_"/>
  546. <result property="userName" column="username_"/>
  547. </resultMap>
  548. <select id="findCourseStudentNameAndPhoneByClassGroupId" resultMap="StudentNameAndPhoneDtoMap">
  549. SELECT cssp.user_id_,su.username_,su.phone_,su.avatar_,GROUP_CONCAT(DISTINCT s.name_) subject_name_,su.gender_
  550. FROM course_schedule_student_payment cssp
  551. LEFT JOIN student_registration sr ON cssp.music_group_id_ = sr.music_group_id_ AND cssp.user_id_ = sr.user_id_
  552. LEFT JOIN `subject` s ON s.id_ = sr.subject_id_
  553. LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
  554. WHERE cssp.class_group_id_ = #{classGroupId} AND sr.music_group_status_ != 'QUIT'
  555. GROUP BY cssp.user_id_
  556. </select>
  557. <select id="hasStudent" resultType="java.lang.Boolean">
  558. SELECT COUNT(DISTINCT class_group_id_) FROM class_group_student_mapper
  559. WHERE class_group_id_ = #{masterClassGroupId} AND status_ != 'QUIT' AND user_id_ IN
  560. <foreach collection="studentIds" separator="," open="(" close=")" item="item">
  561. #{item}
  562. </foreach>
  563. </select>
  564. <select id="queryStudentIdsByClassGroupId" resultType="java.lang.Integer">
  565. SELECT DISTINCT user_id_ FROM class_group_student_mapper
  566. <include refid="queryStudentIdsByClassGroupIdSql"/>
  567. AND status_ != 'QUIT'
  568. UNION ALL
  569. SELECT DISTINCT user_id_ FROM course_schedule_student_payment csts
  570. <include refid="queryStudentIdsByClassGroupIdSql"/>
  571. </select>
  572. <sql id="queryStudentIdsByClassGroupIdSql">
  573. <where>
  574. class_group_id_ = #{classGroupId}
  575. <if test="groupType != null">
  576. AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  577. </if>
  578. <if test="musicGroupId != null">
  579. AND music_group_id_ = #{musicGroupId}
  580. </if>
  581. </where>
  582. </sql>
  583. <select id="getStudentClassGroupBishopTeacherMap" resultType="com.ym.mec.biz.dal.dto.BaseMapDto">
  584. SELECT
  585. cgsm.user_id_ 'key',
  586. cgtm.user_id_ 'value'
  587. FROM
  588. class_group_student_mapper cgsm
  589. LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
  590. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  591. WHERE
  592. ( cg.del_flag_ IS NULL OR cg.del_flag_ = 0 )
  593. AND cg.type_ IN ( 'NORMAL')
  594. AND cgtm.teacher_role_ = 'BISHOP'
  595. AND cgsm.status_='NORMAL'
  596. <if test="musicGroupId!=null and musicGroupId!=''">
  597. AND cgsm.music_group_id_ = #{musicGroupId}
  598. </if>
  599. <if test="studentIds!=null and studentIds.size()>0">
  600. AND cgsm.user_id_ IN
  601. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  602. #{studentId}
  603. </foreach>
  604. </if>
  605. </select>
  606. <select id="getLessThenThreeClassGroupIds" resultType="java.lang.Long">
  607. SELECT DISTINCT cg.id_ FROM
  608. class_group cg
  609. LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
  610. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  611. LEFT JOIN course_schedule cs ON cs.class_group_id_=cg.id_
  612. WHERE
  613. cg.type_ IN ('HIGH', 'HIGH_ONLINE')
  614. AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
  615. AND cs.del_flag_=0
  616. AND cs.status_='NOT_START'
  617. AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
  618. <if test="organIds!=null and organIds!=''">
  619. AND FIND_IN_SET(mg.organ_id_, #{organIds})
  620. </if>
  621. GROUP BY cg.id_
  622. HAVING
  623. COUNT(DISTINCT CASE WHEN cgsm.status_ = 'NORMAL' THEN cgsm.user_id_ ELSE NULL END) &lt; 3
  624. </select>
  625. <select id="getStudentClassGroupWithTeacher" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.ClassGroup">
  626. SELECT
  627. DISTINCT cg.*
  628. FROM
  629. class_group_student_mapper cgsm
  630. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  631. LEFT JOIN class_group cg ON cg.id_ = cgsm.class_group_id_
  632. WHERE
  633. cg.del_flag_ = 0
  634. AND cg.lock_flag_ =0
  635. AND cgsm.status_='NORMAL'
  636. AND cgsm.user_id_ IN
  637. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  638. #{studentId}
  639. </foreach>
  640. <if test="teacherId!=null">
  641. AND cgtm.user_id_ = #{teacherId}
  642. </if>
  643. AND cg.id_ IS NOT NULL
  644. ORDER BY cg.id_ DESC
  645. </select>
  646. <select id="queryByClassGroupType" resultMap="ClassGroupStudentMapperDto">
  647. 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_
  648. LEFT JOIN class_group_teacher_mapper cgtm on cgsm.class_group_id_ = cgtm.class_group_id_
  649. WHERE cgtm.music_group_id_ = #{musicGroupId} and cg.type_ = #{classGroupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  650. and cgtm.teacher_role_ = #{teacherRole,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and cg.del_flag_ = 0 and cgsm.status_ = 'NORMAL'
  651. and cgsm.user_id_ IN
  652. <foreach collection="studentIdList" item="studentId" open="(" close=")" separator=",">
  653. #{studentId}
  654. </foreach>
  655. group by cgsm.user_id_
  656. </select>
  657. </mapper>