ClassGroupStudentMapperMapper.xml 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686
  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. <!-- 根据主键查询一条记录 -->
  25. <select id="get" resultMap="ClassGroupStudentMapper">
  26. SELECT * FROM class_group_student_mapper WHERE id_ = #{id}
  27. </select>
  28. <!-- 全查询 -->
  29. <select id="findAll" resultMap="ClassGroupStudentMapper">
  30. SELECT * FROM class_group_student_mapper where tenant_id_ = #{tenantId} ORDER BY id_
  31. </select>
  32. <!-- 向数据库增加一条记录 -->
  33. <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ClassGroupStudentMapper" useGeneratedKeys="true"
  34. keyColumn="id" keyProperty="id">
  35. INSERT INTO class_group_student_mapper (id_,group_type_,music_group_id_,class_group_id_,user_id_,status_,create_time_,update_time_,tenant_id_)
  36. VALUES(#{id},#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},#{userId},#{status},now(),now(),#{tenantId})
  37. </insert>
  38. <!-- 根据主键查询一条记录 -->
  39. <update id="update" parameterType="com.ym.mec.biz.dal.entity.ClassGroupStudentMapper">
  40. UPDATE class_group_student_mapper
  41. <set>
  42. <if test="userId != null">
  43. user_id_ = #{userId},
  44. </if>
  45. <if test="classGroupId != null">
  46. class_group_id_ = #{classGroupId},
  47. </if>
  48. <if test="status != null">
  49. status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  50. </if>
  51. <if test="groupType != null">
  52. group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  53. </if>
  54. update_time_ = now(),
  55. </set>
  56. WHERE id_ = #{id}
  57. </update>
  58. <update id="batchUpdate" parameterType="com.ym.mec.biz.dal.entity.ClassGroupStudentMapper">
  59. <foreach collection="classGroupStudentMappers" item="classGroupStudentMapper" separator=";">
  60. UPDATE class_group_student_mapper
  61. <set>
  62. <if test="classGroupStudentMapper.status != null">
  63. status_ = #{classGroupStudentMapper.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  64. </if>
  65. <if test="classGroupStudentMapper.groupType != null">
  66. group_type_ = #{classGroupStudentMapper.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  67. </if>
  68. update_time_ = now(),
  69. </set>
  70. WHERE id_ = #{classGroupStudentMapper.id}
  71. </foreach>
  72. </update>
  73. <!-- 根据主键删除一条记录 -->
  74. <delete id="delete">
  75. DELETE FROM class_group_student_mapper WHERE id_ = #{id}
  76. </delete>
  77. <delete id="deleteByClassId">
  78. UPDATE class_group_student_mapper SET status_='QUIT' WHERE class_group_id_ = #{classGroupId} AND status_='NORMAL'
  79. </delete>
  80. <delete id="deleteByGroup">
  81. DELETE FROM class_group_student_mapper WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  82. </delete>
  83. <delete id="deleteClassGroupStudent">
  84. DELETE FROM class_group_student_mapper WHERE class_group_id_=#{classGroupId} AND user_id_=#{userId}
  85. </delete>
  86. <update id="deleteByGroupWithLogic">
  87. 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}
  88. </update>
  89. <!-- 分页查询 -->
  90. <select id="queryPage" resultMap="ClassGroupStudentMapper" parameterType="map">
  91. SELECT * FROM class_group_student_mapper where tenant_id_ = #{tenantId} ORDER BY id_
  92. <include refid="global.limit"/>
  93. </select>
  94. <!-- 查询当前表的总记录数 -->
  95. <select id="queryCount" resultType="int">
  96. SELECT COUNT(*) FROM class_group_student_mapper where tenant_id_ = #{tenantId}
  97. </select>
  98. <!-- 班级学生批量插入 -->
  99. <insert id="classGroupStudentsInsert" parameterType="java.util.List">
  100. INSERT INTO class_group_student_mapper (group_type_,music_group_id_,class_group_id_,user_id_,status_,create_time_,tenant_id_)
  101. VALUE
  102. <foreach collection="classGroupStudentMapperList" item="item" index="index" separator=",">
  103. (#{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})
  104. </foreach>
  105. </insert>
  106. <select id="query" resultMap="ClassGroupStudentMapper" parameterType="map">
  107. SELECT * FROM class_group_student_mapper
  108. where class_group_id_ = #{classGroupId} and user_id_ = #{userId} AND status_ != 'QUIT'
  109. </select>
  110. <select id="findClassGroupStudent" resultMap="ClassGroupStudentMapper">
  111. SELECT * FROM class_group_student_mapper
  112. where class_group_id_ = #{classGroupId} and user_id_ = #{userId}
  113. </select>
  114. <select id="findStudentNumByClassGroupId" resultType="string">
  115. SELECT
  116. su.username_
  117. FROM
  118. class_group_student_mapper cgsm
  119. LEFT JOIN sys_user su ON cgsm.user_id_=su.id_
  120. WHERE cgsm.class_group_id_=#{classGroupId} AND cgsm.status_!='QUIT'
  121. </select>
  122. <select id="findCourseStudentName" resultType="string">
  123. SELECT
  124. su.username_
  125. FROM
  126. course_schedule_student_payment cssp
  127. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  128. WHERE
  129. cssp.course_schedule_id_ = #{courseScheduleId}
  130. </select>
  131. <select id="findCourseStudentNameAndPhone" resultType="com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto">
  132. SELECT
  133. su.id_ userId,
  134. su.username_ userName,
  135. su.phone_ phone,
  136. su.avatar_ avatar
  137. FROM
  138. course_schedule_student_payment cssp
  139. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  140. WHERE
  141. cssp.course_schedule_id_ = #{courseScheduleId}
  142. </select>
  143. <resultMap id="teacherClassStudentDto" type="com.ym.mec.biz.dal.dto.TeacherClassStudentDto">
  144. <result property="userId" column="user_id_"/>
  145. <result property="userName" column="username_"/>
  146. <result property="avatar" column="avatar_"/>
  147. <result property="phone" column="phone_"/>
  148. <result property="continuousAbsenteeismTimes" column="continuous_absenteeism_times_"/>
  149. </resultMap>
  150. <select id="findClassStudent" resultMap="teacherClassStudentDto">
  151. SELECT
  152. su.id_ user_id_,
  153. su.username_,
  154. su.avatar_,
  155. su.phone_,
  156. mgsf.continuous_absenteeism_times_
  157. FROM
  158. class_group_student_mapper cgsm
  159. LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
  160. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  161. LEFT JOIN music_group_student_fee_ mgsf ON cg.music_group_id_=mgsf.music_group_id_ AND su.id_ = mgsf.user_id_
  162. WHERE
  163. cgsm.class_group_id_ = #{classGroupId} AND cgsm.status_ != 'QUIT'
  164. ORDER BY su.id_
  165. <include refid="global.limit"/>
  166. </select>
  167. <select id="findClassStudentNum" resultType="int">
  168. SELECT
  169. COUNT(*)
  170. FROM
  171. class_group_student_mapper cgsm
  172. WHERE
  173. cgsm.class_group_id_ = #{classGroupId} AND cgsm.status_ != 'QUIT'
  174. </select>
  175. <select id="findStudentByCourse" resultMap="com.ym.mec.biz.dal.dao.StudentAttendanceDao.studentAttendanceViewUtilEntity">
  176. SELECT
  177. cssp.group_type_,
  178. cssp.music_group_id_,
  179. cssp.user_id_ student_id_,
  180. su.username_,
  181. su.avatar_,
  182. cssp.be_merged_,
  183. st.current_grade_num_,
  184. IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
  185. FROM
  186. course_schedule_student_payment cssp
  187. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  188. LEFT JOIN student st ON st.user_id_ = su.id_
  189. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  190. WHERE
  191. cssp.course_schedule_id_ =#{courseScheduleId}
  192. AND su.id_ IS NOT NULL
  193. </select>
  194. <select id="findStudentByCourseWithPage" resultMap="com.ym.mec.biz.dal.dao.StudentAttendanceDao.studentAttendanceViewUtilEntity">
  195. SELECT
  196. cssp.group_type_,
  197. cssp.music_group_id_,
  198. cssp.user_id_ student_id_,
  199. su.username_,
  200. su.phone_,
  201. su.avatar_,
  202. s.name_ subject_name_,
  203. IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
  204. FROM
  205. course_schedule_student_payment cssp
  206. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  207. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  208. LEFT JOIN student_registration sr ON sr.user_id_=cssp.user_id_ AND cssp.music_group_id_=sr.music_group_id_
  209. LEFT JOIN `subject` s ON sr.subject_id_=s.id_
  210. WHERE
  211. cssp.course_schedule_id_ =#{courseScheduleId}
  212. AND su.id_ IS NOT NULL
  213. ORDER BY cssp.user_id_
  214. <include refid="global.limit"/>
  215. </select>
  216. <select id="countStudentByCourseWithPage" resultType="int">
  217. SELECT
  218. COUNT(cssp.user_id_)
  219. FROM
  220. course_schedule_student_payment cssp
  221. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  222. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  223. WHERE
  224. cssp.course_schedule_id_ =#{courseScheduleId}
  225. AND su.id_ IS NOT NULL
  226. </select>
  227. <update id="deleteStudentByMusicGroupId" parameterType="map">
  228. update class_group_student_mapper set status_ = 'QUIT',update_time_ = NOW()
  229. where class_group_id_ in (select id_ from class_group where music_group_id_ = #{musicGroupId}) and user_id_ = #{userId}
  230. </update>
  231. <update id="deleteStudentByClassGroupId">
  232. update class_group_student_mapper set status_ = 'QUIT',update_time_ = NOW()
  233. WHERE class_group_id_=#{classGroupId} AND user_id_=#{userId}
  234. </update>
  235. <update id="deleteByClassGroupIdAndStudents">
  236. update class_group_student_mapper set status_ = 'QUIT',update_time_ = NOW()
  237. WHERE class_group_id_=#{classGroupId} AND FIND_IN_SET(user_id_,#{userIds})
  238. </update>
  239. <update id="updateVipGroupStudentStatus">
  240. update class_group_student_mapper set status_ = #{status},update_time_ = NOW()
  241. where music_group_id_=#{groupId} and group_type_=#{groupType}
  242. </update>
  243. <select id="findClassStudentMapperByUserIdAndClassGroupId" resultMap="ClassGroupStudentMapper">
  244. SELECT * FROM class_group_student_mapper
  245. WHERE user_id_=#{userId} AND class_group_id_=#{classGroupId}
  246. <if test="status != null">
  247. AND status_ = #{status}
  248. </if>
  249. LIMIT 1
  250. </select>
  251. <select id="findByClassGroups" resultMap="ClassGroupStudentMapper">
  252. SELECT * FROM class_group_student_mapper
  253. WHERE class_group_id_ IN
  254. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  255. #{classGroupId}
  256. </foreach>
  257. AND status_ = 'NORMAL'
  258. </select>
  259. <select id="findAllByClassGroup" resultMap="ClassGroupStudentMapper">
  260. SELECT
  261. cgsm.*
  262. FROM class_group_student_mapper cgsm
  263. WHERE class_group_id_ = #{classGroupId}
  264. </select>
  265. <select id="findByClassGroup" resultMap="ClassGroupStudentMapper">
  266. SELECT
  267. cgsm.*,
  268. su.username_
  269. FROM class_group_student_mapper cgsm
  270. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  271. WHERE class_group_id_ = #{classGroupId}
  272. AND status_ = 'NORMAL'
  273. </select>
  274. <!-- 查询班级某状态的所有学生 -->
  275. <select id="findClassStudentList" resultMap="com.ym.mec.biz.dal.dao.StudentRegistrationDao.StudentRegistration">
  276. SELECT sr.*,s.name_ subject_name_,su.username_,su.gender_ FROM class_group_student_mapper cgsm
  277. LEFT JOIN student_registration sr ON (sr.user_id_ = cgsm.user_id_ AND sr.music_group_id_ = cgsm.music_group_id_)
  278. LEFT JOIN sys_user su on sr.user_id_ = su.id_
  279. LEFT JOIN subject s ON sr.actual_subject_id_ = s.id_
  280. WHERE cgsm.class_group_id_ = #{classGroupId} AND sr.music_group_status_ != 'QUIT'
  281. AND cgsm.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  282. </select>
  283. <select id="findHighClassGroupHasUser" resultMap="ClassGroupStudentMapper">
  284. SELECT cgsm.* FROM class_group_student_mapper cgsm
  285. LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
  286. WHERE cgsm.music_group_id_ = #{musicGroupId}
  287. AND cgsm.user_id_=#{userId}
  288. AND cg.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  289. AND FIND_IN_SET(cgsm.status_,'NORMAL,LEAVE')
  290. AND cg.del_flag_='0'
  291. </select>
  292. <select id="findClassGroupIdByUserAndCourseDateAndStatus" resultType="int">
  293. SELECT
  294. cgsm.class_group_id_
  295. FROM
  296. class_group_student_mapper cgsm
  297. LEFT JOIN course_schedule cs ON cgsm.class_group_id_=cs.class_group_id_
  298. WHERE cgsm.user_id_=#{userId}
  299. AND cs.class_date_ = DATE_FORMAT(#{data},'%Y-%m-%d')
  300. AND cgsm.status_=#{status}
  301. </select>
  302. <select id="countClassGroupsStudentNum" resultType="map">
  303. SELECT
  304. class_group_id_ AS 'key',
  305. COUNT( user_id_ ) AS 'value'
  306. FROM
  307. class_group_student_mapper
  308. WHERE
  309. class_group_id_ IN
  310. <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
  311. #{classGroupId}
  312. </foreach>
  313. AND status_!='QUIT'
  314. <if test="status!=null">
  315. AND status_=#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  316. </if>
  317. GROUP BY
  318. class_group_id_
  319. </select>
  320. <select id="countGroupAllStudentNum" resultType="map">
  321. SELECT
  322. music_group_id_ AS 'key',
  323. COUNT( user_id_ ) AS 'value'
  324. FROM
  325. class_group_student_mapper
  326. WHERE
  327. music_group_id_ IN
  328. <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
  329. #{groupId}
  330. </foreach>
  331. AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  332. GROUP BY
  333. music_group_id_
  334. </select>
  335. <select id="countClassGroupStudentNum" resultType="int">
  336. SELECT
  337. COUNT( user_id_ )
  338. FROM
  339. class_group_student_mapper
  340. WHERE
  341. class_group_id_ = #{classGroupId}
  342. AND status_!='QUIT'
  343. </select>
  344. <select id="countClassGroupNormalStudentNum" resultType="int">
  345. SELECT
  346. COUNT( user_id_ )
  347. FROM
  348. class_group_student_mapper
  349. WHERE
  350. class_group_id_ = #{classGroupId}
  351. AND status_!='QUIT' AND status_!='QUIT_SCHOOL'
  352. </select>
  353. <select id="countGroupNormalStudentNum" resultType="int">
  354. SELECT
  355. COUNT( user_id_ )
  356. FROM
  357. class_group_student_mapper
  358. WHERE
  359. group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  360. AND music_group_id_= #{groupId}
  361. AND status_='NORMAL'
  362. </select>
  363. <select id="countGroupStudentNum" resultType="int">
  364. SELECT
  365. COUNT( user_id_ )
  366. FROM
  367. class_group_student_mapper
  368. WHERE
  369. group_type_ = #{groupType}
  370. AND music_group_id_ = #{groupId}
  371. AND status_!='QUIT' AND status_!='QUIT_SCHOOL'
  372. </select>
  373. <select id="countClassGroupExitStudentNum" resultType="int">
  374. SELECT
  375. COUNT( user_id_ )
  376. FROM
  377. class_group_student_mapper
  378. WHERE
  379. class_group_id_ = #{classGroupId}
  380. AND user_id_ IN
  381. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  382. #{userId}
  383. </foreach>
  384. AND status_!='QUIT'
  385. </select>
  386. <select id="countUserGroups" resultType="int">
  387. SELECT COUNT(DISTINCT cgsm.music_group_id_)
  388. FROM class_group_student_mapper cgsm
  389. LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
  390. WHERE cgsm.user_id_=#{userId} AND cgsm.group_type_=#{groupType} AND cgsm.status_!='QUIT' AND cg.del_flag_!=1
  391. </select>
  392. <select id="queryClassGroupIdList" resultType="int" parameterType="map">
  393. SELECT distinct class_group_id_ FROM class_group_student_mapper WHERE user_id_=#{userId}
  394. AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  395. AND music_group_id_ = #{musicGroupId}
  396. AND status_ != 'QUIT'
  397. </select>
  398. <select id="findMusicGroupClassGroupByType" resultMap="ClassGroupStudentMapper">
  399. SELECT cgsm.* FROM class_group_student_mapper cgsm
  400. LEFT JOIN class_group cg on cgsm.class_group_id_ = cg.id_
  401. 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')
  402. </select>
  403. <select id="queryStudentIdMap" resultType="java.util.Map">
  404. SELECT cgsm.user_id_ 'key',cgsm.user_id_ 'value' FROM class_group_student_mapper cgsm
  405. WHERE cgsm.music_group_id_ = #{vipGroupId} AND cgsm.group_type_ = 'VIP' AND cgsm.status_ != 'QUIT'
  406. </select>
  407. <select id="queryTeacherIdMap" resultType="java.util.Map">
  408. SELECT cgtm.user_id_ 'key',cgtm.user_id_ 'value' FROM class_group_teacher_mapper cgtm
  409. WHERE cgtm.music_group_id_ = #{vipGroupId} AND cgtm.group_type_ = 'VIP'
  410. </select>
  411. <select id="findByClassGroupAndStudent" resultMap="ClassGroupStudentMapper">
  412. SELECT
  413. *
  414. FROM
  415. class_group_student_mapper
  416. WHERE
  417. class_group_id_ = #{classGroupId}
  418. AND user_id_ IN
  419. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  420. #{userId}
  421. </foreach>
  422. ORDER BY create_time_ DESC
  423. </select>
  424. <select id="queryNewStudentListByCourseScheduleId" resultMap="ClassGroupStudentMapper">
  425. SELECT cgsm.* FROM class_group_student_mapper cgsm LEFT JOIN course_schedule cs ON cgsm.class_group_id_= cs.class_group_id_
  426. LEFT JOIN course_schedule_student_payment cssp on cssp.course_schedule_id_ = cs.id_ and cssp.user_id_ = cgsm.user_id_
  427. WHERE cssp.id_ IS NULL AND cgsm.status_ != 'QUIT' and cs.id_ = #{courseScheduleId}
  428. </select>
  429. <select id="findByGroups" resultMap="ClassGroupStudentMapper">
  430. SELECT
  431. cgsm.*,
  432. su.username_
  433. FROM class_group_student_mapper cgsm
  434. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  435. WHERE
  436. cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  437. AND cgsm.music_group_id_ IN
  438. <foreach collection="groupIds" item="groupId" separator="," open="(" close=")">
  439. #{groupId}
  440. </foreach>
  441. </select>
  442. <select id="findByGroupOrClassGroup" resultMap="ClassGroupStudentInfoDto">
  443. SELECT
  444. cgsm.*,
  445. su.username_,
  446. su.avatar_,
  447. su.phone_
  448. FROM class_group_student_mapper cgsm
  449. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  450. <where>
  451. <if test="groupType!=null">
  452. AND cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  453. </if>
  454. <if test="groupId!=null">
  455. AND cgsm.music_group_id_ = #{groupId}
  456. </if>
  457. <if test="classGroupId!=null">
  458. AND cgsm.class_group_id_=#{classGroupId}
  459. </if>
  460. <if test="tenantId!=null">
  461. AND cgsm.tenant_id_=#{tenantId}
  462. </if>
  463. </where>
  464. </select>
  465. <select id="findGroupStudents" resultMap="ClassGroupStudentMapper">
  466. SELECT * FROM class_group_student_mapper cgsm
  467. <where>
  468. <if test="groupType!=null">
  469. AND cgsm.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  470. </if>
  471. <if test="groupId!=null">
  472. AND cgsm.music_group_id_ = #{groupId}
  473. </if>
  474. <if test="userId!=null">
  475. AND user_id_=#{userId}
  476. </if>
  477. <if test="status!=null">
  478. AND status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  479. </if>
  480. <if test="tenantId!=null">
  481. AND cgsm.tenant_id_=#{tenantId}
  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. </mapper>