ClassGroupStudentMapperMapper.xml 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724
  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. s.id_ as subject_id_,
  190. s.name_ as subject_name_,
  191. IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
  192. FROM
  193. course_schedule_student_payment cssp
  194. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  195. LEFT JOIN student st ON st.user_id_ = su.id_
  196. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  197. left join subject s on st.subject_id_list_ = s.id_
  198. WHERE
  199. cssp.course_schedule_id_ =#{courseScheduleId}
  200. AND su.id_ IS NOT NULL
  201. </select>
  202. <select id="findStudentByCourseWithPage" resultMap="com.ym.mec.biz.dal.dao.StudentAttendanceDao.studentAttendanceViewUtilEntity">
  203. SELECT
  204. cssp.group_type_,
  205. cssp.music_group_id_,
  206. cssp.user_id_ student_id_,
  207. su.username_,
  208. su.phone_,
  209. su.avatar_,
  210. s.name_ subject_name_,
  211. IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_
  212. FROM
  213. course_schedule_student_payment cssp
  214. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  215. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  216. LEFT JOIN student_registration sr ON sr.user_id_=cssp.user_id_ AND cssp.music_group_id_=sr.music_group_id_
  217. LEFT JOIN `subject` s ON sr.subject_id_=s.id_
  218. WHERE
  219. cssp.course_schedule_id_ =#{courseScheduleId}
  220. AND su.id_ IS NOT NULL
  221. ORDER BY cssp.user_id_
  222. <include refid="global.limit"/>
  223. </select>
  224. <select id="countStudentByCourseWithPage" resultType="int">
  225. SELECT
  226. COUNT(cssp.user_id_)
  227. FROM
  228. course_schedule_student_payment cssp
  229. LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
  230. LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
  231. WHERE
  232. cssp.course_schedule_id_ =#{courseScheduleId}
  233. AND su.id_ IS NOT NULL
  234. </select>
  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} AND cs.del_flag_ = 0
  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} AND cs.del_flag_ = 0
  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. </where>
  481. </select>
  482. <select id="getStudentEducationalTeachers" resultType="com.ym.mec.biz.dal.dto.StudentEduTeacherDto">
  483. SELECT
  484. t.user_id_ studentId,
  485. t.educational_teacher_id_ educationalTeacherId,
  486. su.real_name_ educationalTeacherName,
  487. t.group_type_ groupType
  488. FROM
  489. (
  490. SELECT
  491. mgsf.user_id_,
  492. g.educational_teacher_id_,
  493. 'MUSIC' group_type_
  494. FROM
  495. music_group_student_fee_ mgsf
  496. LEFT JOIN music_group g ON mgsf.music_group_id_ = g.id_
  497. WHERE
  498. mgsf.user_id_ IN
  499. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  500. #{studentId}
  501. </foreach>
  502. UNION ALL
  503. SELECT
  504. cgsm.user_id_,
  505. g.educational_teacher_id_,
  506. 'VIP' group_type_
  507. FROM
  508. class_group_student_mapper cgsm
  509. LEFT JOIN vip_group g ON cgsm.music_group_id_ = g.id_
  510. WHERE
  511. cgsm.group_type_ = 'VIP'
  512. AND cgsm.user_id_ IN
  513. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  514. #{studentId}
  515. </foreach>
  516. UNION ALL
  517. SELECT
  518. cgsm.user_id_,
  519. g.educational_teacher_id_,
  520. 'PRACTICE' group_type_
  521. FROM
  522. class_group_student_mapper cgsm
  523. LEFT JOIN practice_group g ON cgsm.music_group_id_ = g.id_
  524. WHERE
  525. cgsm.group_type_ = 'PRACTICE'
  526. AND cgsm.user_id_ IN
  527. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  528. #{studentId}
  529. </foreach>
  530. ) t
  531. LEFT JOIN sys_user su ON t.educational_teacher_id_=su.id_
  532. </select>
  533. <select id="existByClassGroupIds" resultType="java.lang.Boolean">
  534. SELECT COUNT(0) FROM class_group_student_mapper
  535. WHERE FIND_IN_SET(class_group_id_,#{classGroupIdListStr}) AND user_id_ = #{studentId} AND status_ = 'NORMAL'
  536. </select>
  537. <resultMap id="StudentNameAndPhoneDtoMap" type="com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto">
  538. <result property="userId" column="user_id_"/>
  539. <result property="avatar" column="avatar"/>
  540. <result property="gender" column="gender_"/>
  541. <result property="phone" column="phone_"/>
  542. <result property="subjectName" column="subject_name_"/>
  543. <result property="userName" column="username_"/>
  544. </resultMap>
  545. <select id="findCourseStudentNameAndPhoneByClassGroupId" resultMap="StudentNameAndPhoneDtoMap">
  546. SELECT cssp.user_id_,su.username_,su.phone_,su.avatar_,GROUP_CONCAT(DISTINCT s.name_) subject_name_,su.gender_
  547. FROM course_schedule_student_payment cssp
  548. LEFT JOIN student_registration sr ON cssp.music_group_id_ = sr.music_group_id_ AND cssp.user_id_ = sr.user_id_
  549. LEFT JOIN `subject` s ON s.id_ = sr.subject_id_
  550. LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
  551. WHERE cssp.class_group_id_ = #{classGroupId} AND sr.music_group_status_ != 'QUIT'
  552. GROUP BY cssp.user_id_
  553. </select>
  554. <select id="hasStudent" resultType="java.lang.Boolean">
  555. SELECT COUNT(DISTINCT class_group_id_) FROM class_group_student_mapper
  556. WHERE class_group_id_ = #{masterClassGroupId} AND status_ != 'QUIT' AND user_id_ IN
  557. <foreach collection="studentIds" separator="," open="(" close=")" item="item">
  558. #{item}
  559. </foreach>
  560. </select>
  561. <select id="queryStudentIdsByClassGroupId" resultType="java.lang.Integer">
  562. SELECT DISTINCT user_id_ FROM class_group_student_mapper
  563. <include refid="queryStudentIdsByClassGroupIdSql"/>
  564. AND status_ != 'QUIT'
  565. UNION ALL
  566. SELECT DISTINCT user_id_ FROM course_schedule_student_payment csts
  567. <include refid="queryStudentIdsByClassGroupIdSql"/>
  568. </select>
  569. <sql id="queryStudentIdsByClassGroupIdSql">
  570. <where>
  571. class_group_id_ = #{classGroupId}
  572. <if test="groupType != null">
  573. AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  574. </if>
  575. <if test="musicGroupId != null">
  576. AND music_group_id_ = #{musicGroupId}
  577. </if>
  578. </where>
  579. </sql>
  580. <select id="getStudentClassGroupBishopTeacherMap" resultType="com.ym.mec.biz.dal.dto.BaseMapDto">
  581. SELECT
  582. cgsm.user_id_ 'key',
  583. cgtm.user_id_ 'value'
  584. FROM
  585. class_group_student_mapper cgsm
  586. LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
  587. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  588. WHERE
  589. ( cg.del_flag_ IS NULL OR cg.del_flag_ = 0 )
  590. AND cg.type_ IN ( 'NORMAL')
  591. AND cgtm.teacher_role_ = 'BISHOP'
  592. AND cgsm.status_='NORMAL'
  593. <if test="musicGroupId!=null and musicGroupId!=''">
  594. AND cgsm.music_group_id_ = #{musicGroupId}
  595. </if>
  596. <if test="studentIds!=null and studentIds.size()>0">
  597. AND cgsm.user_id_ IN
  598. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  599. #{studentId}
  600. </foreach>
  601. </if>
  602. </select>
  603. <select id="getLessThenThreeClassGroupIds" resultType="java.lang.Long">
  604. SELECT DISTINCT cg.id_ FROM
  605. class_group cg
  606. LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
  607. LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
  608. LEFT JOIN course_schedule cs ON cs.class_group_id_=cg.id_
  609. WHERE
  610. cg.type_ IN ('HIGH', 'HIGH_ONLINE')
  611. AND mg.status_ = 'PROGRESS' AND cg.del_flag_ = 0
  612. AND cs.del_flag_=0
  613. AND cs.status_='NOT_START'
  614. AND ( cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_ )
  615. <if test="hasDesc != null and hasDesc == true">
  616. AND cg.desc_ IS NOT NULL
  617. </if>
  618. <if test="hasDesc != null and hasDesc == false">
  619. AND cg.desc_ IS NULL
  620. </if>
  621. <if test="organIds!=null and organIds!=''">
  622. AND FIND_IN_SET(mg.organ_id_, #{organIds})
  623. </if>
  624. <if test="classGroupIdList != null and classGroupIdList.size() > 0">
  625. AND cg.id_ IN
  626. <foreach collection="classGroupIdList" open="(" close=")" item="classGroupId" separator=",">
  627. #{classGroupId}
  628. </foreach>
  629. </if>
  630. GROUP BY cg.id_
  631. HAVING
  632. COUNT(DISTINCT CASE WHEN cgsm.status_ = 'NORMAL' THEN cgsm.user_id_ ELSE NULL END) &lt; 3
  633. </select>
  634. <select id="getStudentClassGroupWithTeacher" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.ClassGroup">
  635. SELECT
  636. DISTINCT cg.*
  637. FROM
  638. class_group_student_mapper cgsm
  639. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  640. LEFT JOIN class_group cg ON cg.id_ = cgsm.class_group_id_
  641. WHERE
  642. cg.del_flag_ = 0
  643. AND cg.lock_flag_ =0
  644. AND cgsm.status_='NORMAL' and cg.group_type_ = 'MUSIC'
  645. AND cgsm.user_id_ IN
  646. <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
  647. #{studentId}
  648. </foreach>
  649. <if test="teacherId!=null">
  650. AND cgtm.user_id_ = #{teacherId}
  651. </if>
  652. <if test="musicGroupId != null and musicGroupId != ''">
  653. AND cg.music_group_id_ = #{musicGroupId}
  654. </if>
  655. AND cg.id_ IS NOT NULL
  656. ORDER BY cg.id_ DESC
  657. </select>
  658. <select id="queryByClassGroupType" resultMap="ClassGroupStudentMapperDto">
  659. 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_
  660. LEFT JOIN class_group_teacher_mapper cgtm on cgsm.class_group_id_ = cgtm.class_group_id_
  661. WHERE cgtm.music_group_id_ = #{musicGroupId} and cg.type_ = #{classGroupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  662. and cgtm.teacher_role_ = #{teacherRole,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and cg.del_flag_ = 0 and cgsm.status_ = 'NORMAL'
  663. and cgsm.user_id_ IN
  664. <foreach collection="studentIdList" item="studentId" open="(" close=")" separator=",">
  665. #{studentId}
  666. </foreach>
  667. group by cgsm.user_id_
  668. </select>
  669. <select id="countByUserIdsAndClassIds" resultType="java.lang.Integer">
  670. select COUNT(cgsm.id_) from class_group_student_mapper cgsm
  671. where FIND_IN_SET(cgsm.user_id_,#{studentIds}) AND cgsm.class_group_id_ = #{oldClassId}
  672. </select>
  673. <select id="queryWaitCancelVipGroup" resultType="com.ym.mec.biz.dal.dto.VipGroupClassGroupMapper">
  674. SELECT a.id_ 'id',a.class_group_id_ classGroupId from
  675. (
  676. 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_
  677. from class_group_student_mapper cgsm LEFT JOIN class_group cg on cgsm.class_group_id_ = cg.id_
  678. LEFT JOIN vip_group vg on vg.id_ = cgsm.music_group_id_
  679. WHERE cgsm.group_type_ = 'VIP' and vg.group_status_ in (2,6) and cg.del_flag_ != 1 GROUP BY cgsm.class_group_id_
  680. ) a WHERE a.total_student_num_ = a.quit_student_num_
  681. </select>
  682. </mapper>