TeacherMapper.xml 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042
  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.TeacherDao">
  8. <resultMap type="com.ym.mec.biz.dal.entity.Teacher" id="Teacher">
  9. <result column="id_" property="id"/>
  10. <result column="organ_id_" property="organId"/>
  11. <result column="teacher_organ_id_" property="teacherOrganId"/>
  12. <result column="organ_name_" property="organName"/>
  13. <result column="job_type_" property="jobType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  14. <result column="job_nature_" property="jobNature" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  15. <result column="is_probation_period_" property="isProbationPeriod"
  16. typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  17. <result column="education_background_" property="educationBackground"/>
  18. <result column="graduate_school_" property="graduateSchool"/>
  19. <result column="technical_titles_" property="technicalTitles"/>
  20. <result column="work_unit_" property="workUnit"/>
  21. <result column="subject_id_" property="subjectId"/>
  22. <result column="entry_date_" property="entryDate"/>
  23. <result column="demission_date_" property="demissionDate"/>
  24. <result column="certificate_type_" property="certificateType"/>
  25. <result column="certificate_num_" property="certificateNum"/>
  26. <result column="flow_organ_range_" property="flowOrganRange"/>
  27. <result column="introduction_" property="introduction"/>
  28. <result column="is_support_extra_practice_lesson_" property="isSupportExtraPracticeLesson"/>
  29. <result column="is_support_course_schedule_rewards_rules_" property="isSupportCourseScheduleRewardsRules"/>
  30. <result column="idcard_front_img_" property="idcardFrontImg"/>
  31. <result column="idcard_back_img_" property="idcardBackImg"/>
  32. <result column="idcard_hand_img_" property="idcardHandImg"/>
  33. <result column="update_time_" property="updateTime"/>
  34. <result column="create_time_" property="createTime"/>
  35. <result column="lecture_num_" property="lectureNum"/>
  36. <result column="username_" property="username"/>
  37. <result column="password_" property="password"/>
  38. <result column="real_name_" property="realName"/>
  39. <result column="salt_" property="salt"/>
  40. <result column="phone_" property="phone"/>
  41. <result column="avatar_" property="avatar"/>
  42. <result column="lock_flag_" property="lockFlag"/>
  43. <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  44. <result column="wx_openid_" property="wxOpenid"/>
  45. <result column="qq_openid_" property="qqOpenid"/>
  46. <result column="user_type_" property="userType"/>
  47. <result column="gender_" property="gender"/>
  48. <result column="nation_" property="nation"/>
  49. <result column="birthdate_" property="birthdate"/>
  50. <result column="email_" property="email"/>
  51. <result column="im_token_" property="imToken"/>
  52. <result column="subject_name_" property="splitSubjectName"/>
  53. </resultMap>
  54. <!-- 根据主键查询一条记录 -->
  55. <select id="get" resultMap="Teacher">
  56. SELECT t.id_,t.organ_id_ teacher_organ_id_,t.job_type_,t.job_nature_,t.is_probation_period_,t.education_background_,t.graduate_school_,t.graduate_school_,
  57. t.technical_titles_,t.work_unit_,t.subject_id_,t.entry_date_,t.certificate_type_,t.certificate_num_,t.flow_organ_range_,t.update_time_,
  58. t.create_time_,t.introduction_,t.demission_date_,t.is_support_course_schedule_rewards_rules_,t.is_support_extra_practice_lesson_,t.lecture_num_,
  59. su.real_name_,su.password_,su.salt_,su.phone_,su.avatar_,
  60. su.lock_flag_,su.del_flag_,su.wx_openid_,su.qq_openid_,su.user_type_,
  61. su.gender_,su.nation_,su.birthdate_,su.email_,su.im_token_,su.username_,su.organ_id_
  62. FROM teacher t
  63. LEFT JOIN sys_user su ON t.id_ = su.id_
  64. WHERE t.id_ = #{id} AND su.del_flag_ = 0
  65. </select>
  66. <!-- 全查询 -->
  67. <select id="findAll" resultMap="Teacher">
  68. SELECT *
  69. FROM teacher
  70. ORDER BY id_
  71. </select>
  72. <!-- 向数据库增加一条记录 -->
  73. <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Teacher" useGeneratedKeys="true" keyColumn="id"
  74. keyProperty="id">
  75. INSERT INTO teacher
  76. (id_,organ_id_,job_type_,job_nature_,is_probation_period_,education_background_,graduate_school_,technical_titles_,work_unit_,subject_id_,entry_date_,demission_date_,certificate_type_,certificate_num_,flow_organ_range_,introduction_,update_time_,create_time_,is_support_extra_practice_lesson_,is_support_course_schedule_rewards_rules_,idcard_front_img_,idcard_back_img_,idcard_hand_img_)
  77. VALUES(#{id},#{organId},#{jobType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{jobNature},#{isProbationPeriod,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{educationBackground},#{graduateSchool},#{technicalTitles},#{workUnit},#{subjectId},#{entryDate},#{demissionDate},#{certificateType},#{certificateNum},#{flowOrganRange},#{introduction},now(),now(),#{isSupportExtraPracticeLesson},#{isSupportCourseScheduleRewardsRules},#{idcardFrontImg},#{idcardBackImg},#{idcardHandImg})
  78. </insert>
  79. <insert id="addSysUser" parameterType="com.ym.mec.auth.api.entity.SysUser" useGeneratedKeys="true" keyColumn="id"
  80. keyProperty="id">
  81. INSERT INTO sys_user
  82. (im_token_,id_,username_,salt_,phone_,avatar_,organ_id_,create_time_,update_time_,wx_openid_,qq_openid_,user_type_,gender_,nation_,birthdate_,email_,id_card_no_,wechat_id_,real_name_,password_)
  83. VALUES(#{imToken},#{id},#{username},#{salt},#{phone},#{avatar},#{organId},now(),now(),#{wxOpenid},#{qqOpenid},#{userType},
  84. #{gender},#{nation},#{birthdate},#{email},#{idCardNo},#{wechatId},#{realName},#{password})
  85. </insert>
  86. <!-- 根据主键查询一条记录 -->
  87. <update id="update" parameterType="com.ym.mec.biz.dal.entity.Teacher">
  88. UPDATE teacher
  89. <set>
  90. <if test="lectureNum != null">
  91. lecture_num_ = #{lectureNum},
  92. </if>
  93. <if test="graduateSchool != null">
  94. graduate_school_ = #{graduateSchool},
  95. </if>
  96. <if test="subjectId != null">
  97. subject_id_ = #{subjectId},
  98. </if>
  99. <if test="organId != null">
  100. organ_id_ = #{organId},
  101. </if>
  102. <if test="technicalTitles != null">
  103. technical_titles_ = #{technicalTitles},
  104. </if>
  105. <if test="entryDate != null">
  106. entry_date_ = #{entryDate},
  107. </if>
  108. <if test="demissionDate != null">
  109. demission_date_ = #{demissionDate},
  110. </if>
  111. <if test="jobType != null">
  112. job_type_ = #{jobType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  113. </if>
  114. <if test="flowOrganRange != null">
  115. flow_organ_range_ = #{flowOrganRange},
  116. </if>
  117. <if test="certificateType != null">
  118. certificate_type_ = #{certificateType},
  119. </if>
  120. <if test="jobNature != null">
  121. job_nature_ = #{jobNature,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  122. </if>
  123. <if test="isProbationPeriod != null">
  124. is_probation_period_ = #{isProbationPeriod,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  125. </if>
  126. <if test="updateTime != null">
  127. update_time_ = NOW(),
  128. </if>
  129. <if test="educationBackground != null">
  130. education_background_ = #{educationBackground},
  131. </if>
  132. <if test="certificateNum != null">
  133. certificate_num_ = #{certificateNum},
  134. </if>
  135. <if test="workUnit != null">
  136. work_unit_ = #{workUnit},
  137. </if>
  138. <if test="introduction != null">
  139. introduction_ = #{introduction},
  140. </if>
  141. <if test="isSupportCourseScheduleRewardsRules != null">
  142. is_support_course_schedule_rewards_rules_ = #{isSupportCourseScheduleRewardsRules},
  143. </if>
  144. <if test="isSupportExtraPracticeLesson != null">
  145. is_support_extra_practice_lesson_ = #{isSupportExtraPracticeLesson},
  146. </if>
  147. <if test="idcardFrontImg != null">
  148. idcard_front_img_ = #{idcardFrontImg},
  149. </if>
  150. <if test="idcardBackImg != null">
  151. idcard_back_img_ = #{idcardBackImg},
  152. </if>
  153. <if test="idcardHandImg != null">
  154. idcard_hand_img_ = #{idcardHandImg},
  155. </if>
  156. </set>
  157. WHERE id_ = #{id}
  158. </update>
  159. <!-- 根据主键删除一条记录 -->
  160. <update id="delete">
  161. DELETE FROM teacher WHERE id_ = #{id}
  162. </update>
  163. <update id="updateUser" parameterType="com.ym.mec.auth.api.entity.SysUser">
  164. UPDATE sys_user
  165. <set>
  166. <if test="delFlag != null">
  167. del_flag_ = #{delFlag, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
  168. </if>
  169. <if test="wxOpenid != null">
  170. wx_openid_ = #{wxOpenid},
  171. </if>
  172. <if test="password != null">
  173. password_ = #{password},
  174. </if>
  175. <if test="avatar != null">
  176. avatar_ = #{avatar},
  177. </if>
  178. <if test="email != null">
  179. email_ = #{email},
  180. </if>
  181. <if test="gender != null">
  182. gender_ = #{gender},
  183. </if>
  184. <if test="salt != null">
  185. salt_ = #{salt},
  186. </if>
  187. <if test="username != null">
  188. username_ = #{username},
  189. </if>
  190. <if test="realName != null">
  191. real_name_ = #{realName},
  192. </if>
  193. <if test="userType != null">
  194. user_type_ = #{userType},
  195. </if>
  196. <if test="updateTime != null">
  197. update_time_ = NOW(),
  198. </if>
  199. <if test="lockFlag != null">
  200. lock_flag_ = #{lockFlag},
  201. </if>
  202. <if test="birthdate != null">
  203. birthdate_ = #{birthdate},
  204. </if>
  205. <if test="phone != null">
  206. phone_ = #{phone},
  207. </if>
  208. <if test="qqOpenid != null">
  209. qq_openid_ = #{qqOpenid},
  210. </if>
  211. <if test="nation != null">
  212. nation_ = #{nation},
  213. </if>
  214. <if test="organId != null">
  215. organ_id_ = #{organId},
  216. </if>
  217. <if test="imToken != null">
  218. im_token_ = #{imToken},
  219. </if>
  220. </set>
  221. WHERE id_ = #{id}
  222. </update>
  223. <!-- 分页查询 -->
  224. <select id="queryPage" resultMap="Teacher" parameterType="map">
  225. SELECT t.id_,su.real_name_,su.lock_flag_,t.subject_id_,su.phone_,t.organ_id_ teacher_organ_id_,t.organ_id_,t.is_support_extra_practice_lesson_,
  226. t.job_nature_,t.is_probation_period_,GROUP_CONCAT(s.name_) subject_name_,su.del_flag_
  227. FROM teacher t LEFT JOIN sys_user su ON t.id_ = su.id_
  228. LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
  229. WHERE su.del_flag_ = 0
  230. <include refid="queryPageMap"/>
  231. GROUP BY t.id_
  232. ORDER BY t.update_time_ DESC
  233. <include refid="global.limit"/>
  234. </select>
  235. <!-- 查询当前表的总记录数 -->
  236. <select id="queryCount" resultType="int">
  237. SELECT COUNT(DISTINCT t.id_)
  238. FROM teacher t LEFT JOIN sys_user su ON t.id_ = su.id_
  239. WHERE su.del_flag_ = 0
  240. <include refid="queryPageMap"/>
  241. </select>
  242. <sql id="queryPageMap">
  243. <if test="lockFlag != null">
  244. AND su.lock_flag_ = #{lockFlag}
  245. </if>
  246. <if test="teacherId != null">
  247. AND t.id_ IN
  248. <foreach collection="teacherId" separator="," open="(" close=")" item="item">
  249. #{item}
  250. </foreach>
  251. </if>
  252. <if test="search != null">
  253. AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%') OR t.id_ = #{search})
  254. </if>
  255. <if test="isSupportExtraPracticeLesson != null">
  256. AND is_support_extra_practice_lesson_ = #{isSupportExtraPracticeLesson}
  257. </if>
  258. </sql>
  259. <!-- 根据证件号查询老师 -->
  260. <select id="findByCertificateNum" resultMap="Teacher">
  261. SELECT * FROM teacher WHERE certificate_num_ = #{certificateNum} LIMIT 1
  262. </select>
  263. <select id="queryGroupStudents" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
  264. SELECT su.username_,su.id_ user_id_,su.avatar_ head_url_,su.gender_,s.name_ subject_name_,sr.music_group_id_,su.user_type_
  265. FROM class_group_teacher_mapper cgtm
  266. LEFT JOIN class_group_student_mapper cgsm ON cgtm.class_group_id_ = cgsm.class_group_id_
  267. LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
  268. LEFT JOIN student_registration sr ON sr.user_id_ = cgsm.user_id_ AND cgsm.music_group_id_ = sr.music_group_id_
  269. LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_
  270. LEFT JOIN music_group mg ON mg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'MUSIC'
  271. LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'VIP'
  272. WHERE (cgtm.user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId} OR mg.educational_teacher_id_ = #{teacherId}
  273. OR director_user_id_ = #{teacherId}) AND su.id_ IS NOT NULL AND (sr.music_group_status_ != 'QUIT' OR sr.id_ IS NULL)
  274. AND (mg.status_ = 'PROGRESS' OR vg.group_status_ IN (2,4) OR cgsm.group_type_ = 'PRACTICE')
  275. <if test="search != null">
  276. AND su.username_ LIKE CONCAT('%',#{search},'%')
  277. </if>
  278. GROUP BY su.id_,s.id_,sr.id_
  279. </select>
  280. <select id="queryNameByIds" resultType="java.util.Map" parameterType="list">
  281. select id_ `key`,IF(real_name_ IS NUll,'',real_name_) `value` FROM sys_user s WHERE FIND_IN_SET(id_,#{userIds})
  282. </select>
  283. <select id="queryPhoneByIds" resultType="java.util.Map" parameterType="list">
  284. select id_ `key`,phone_ `value` FROM sys_user s WHERE FIND_IN_SET(id_,#{userIds}) AND s.phone_ IS NOT NULL
  285. </select>
  286. <resultMap id="TeacherBasicDto" type="com.ym.mec.biz.dal.dto.TeacherBasicDto">
  287. <result property="id" column="id_"/>
  288. <result property="username" column="username_"/>
  289. <result property="realName" column="real_name_"/>
  290. <result property="organId" column="organ_id_"/>
  291. </resultMap>
  292. <resultMap id="ExtendTeacherBasicDto" type="com.ym.mec.biz.dal.dto.ExtendTeacherBasicDto" extends="TeacherBasicDto">
  293. <result property="isSupportExtraPracticeLesson" column="is_support_extra_practice_lesson_"/>
  294. <result property="avatar" column="avatar_"/>
  295. <result property="subjectNames" column="subject_names_"/>
  296. <result property="introduction" column="introduction_"/>
  297. </resultMap>
  298. <select id="findTeachers" resultMap="TeacherBasicDto">
  299. SELECT su.id_,su.username_,su.real_name_,t.organ_id_ FROM sys_user su
  300. LEFT JOIN teacher t ON su.id_=t.id_
  301. <where>
  302. <if test="userIds != null">
  303. su.id_ IN
  304. <foreach collection="userIds" separator="," open="(" close=")" item="item">
  305. #{item}
  306. </foreach>
  307. </if>
  308. </where>
  309. </select>
  310. <select id="findSimpleTeachers" resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">
  311. SELECT su.id_ userId,su.real_name_ userName FROM sys_user su
  312. LEFT JOIN teacher t ON su.id_=t.id_
  313. <where>
  314. <if test="userIds != null">
  315. su.id_ IN
  316. <foreach collection="userIds" separator="," open="(" close=")" item="item">
  317. #{item}
  318. </foreach>
  319. </if>
  320. </where>
  321. </select>
  322. <select id="findTeaTeachersByOrganAndSubject" resultMap="TeacherBasicDto">
  323. SELECT
  324. su.id_,
  325. su.username_,
  326. su.real_name_,
  327. t.organ_id_
  328. FROM
  329. teacher t
  330. LEFT JOIN sys_user su ON t.id_ = su.id_
  331. WHERE
  332. FIND_IN_SET(#{subjectId},t.subject_id_)
  333. AND (t.organ_id_=#{organId} OR FIND_IN_SET(#{organId},t.flow_organ_range_))
  334. AND t.job_nature_='FULL_TIME'
  335. AND su.del_flag_=0 AND su.lock_flag_=0
  336. AND t.organ_id_!=36
  337. </select>
  338. <select id="findTeaTeachersByOrganAndSubject1" resultMap="ExtendTeacherBasicDto">
  339. SELECT
  340. su.id_,
  341. su.username_,
  342. su.real_name_,
  343. t.organ_id_,
  344. t.is_support_extra_practice_lesson_
  345. FROM
  346. teacher t
  347. LEFT JOIN sys_user su ON t.id_ = su.id_
  348. WHERE
  349. FIND_IN_SET(#{subjectId},t.subject_id_)
  350. AND (t.organ_id_=#{organId} OR FIND_IN_SET(#{organId},t.flow_organ_range_))
  351. AND t.job_nature_='FULL_TIME'
  352. AND su.del_flag_=0 AND su.lock_flag_=0
  353. AND t.organ_id_!=36
  354. </select>
  355. <select id="findTeaTeachersByOrganAndSubject2" resultMap="ExtendTeacherBasicDto">
  356. SELECT
  357. su.id_,
  358. su.username_,
  359. su.real_name_,
  360. su.avatar_,
  361. t.introduction_,
  362. t.organ_id_,
  363. t.is_support_extra_practice_lesson_,
  364. GROUP_CONCAT(s.name_) subject_names_
  365. FROM
  366. teacher t
  367. LEFT JOIN sys_user su ON t.id_ = su.id_
  368. LEFT JOIN subject s ON FIND_IN_SET(s.id_,t.subject_id_)
  369. WHERE
  370. FIND_IN_SET(#{subjectId},t.subject_id_)
  371. AND (t.organ_id_=#{organId} OR FIND_IN_SET(#{organId},t.flow_organ_range_))
  372. AND t.job_nature_='FULL_TIME'
  373. AND su.del_flag_=0 AND su.lock_flag_=0
  374. AND t.organ_id_!=36
  375. GROUP BY su.id_
  376. </select>
  377. <select id="findTeacherByOrganAndSubject" resultMap="TeacherBasicDto">
  378. SELECT
  379. su.id_,
  380. su.username_,
  381. su.real_name_,
  382. t.organ_id_
  383. FROM
  384. teacher t
  385. LEFT JOIN sys_user su ON t.id_ = su.id_
  386. WHERE
  387. FIND_IN_SET(#{subjectIds},t.subject_id_)
  388. AND INTE_ARRAY ( CONCAT( t.organ_id_, IF(t.flow_organ_range_ IS NULL,'',CONCAT(',', t.flow_organ_range_)) ), #{organIds} )
  389. </select>
  390. <select id="findByTeacherId" resultMap="TeacherBasicDto">
  391. SELECT
  392. su.id_,
  393. su.username_,
  394. su.real_name_,
  395. t.organ_id_
  396. FROM
  397. teacher t
  398. LEFT JOIN sys_user su ON t.id_ = su.id_
  399. WHERE
  400. t.id_=#{teacherId}
  401. </select>
  402. <select id="countCloses" resultType="java.lang.Integer">
  403. SELECT COUNT(cs.id_)
  404. FROM course_schedule cs
  405. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
  406. LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_ AND ta.teacher_id_ = csts.user_id_
  407. LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
  408. <include refid="queryCloses"/>
  409. </select>
  410. <resultMap id="TeacherCloseDto" type="com.ym.mec.biz.dal.dto.TeacherCloseDto">
  411. <result property="classDate" column="class_date_"/>
  412. <result property="classTime" column="start_class_time_"/>
  413. <result property="className" column="class_name_"/>
  414. <result property="courseScheduleType" column="class_type_"/>
  415. <result property="teacherRole" column="teacher_role_"/>
  416. <result property="currentClassTimes" column="current_class_times_"/>
  417. <result property="totalClassTimes" column="total_class_times_"/>
  418. <result property="signInStatus" column="sign_in_status_"/>
  419. <result property="signOutStatus" column="sign_out_status_"/>
  420. <result property="actualSalary" column="actual_salary_"/>
  421. <result property="expectSalary" column="expect_salary_"/>
  422. <result property="subsidy" column="subsidy_"/>
  423. <result property="settlementTime" column="settlement_time_"/>
  424. <result property="courseScheduleId" column="course_schedule_id_"/>
  425. </resultMap>
  426. <select id="queryCloses" resultMap="TeacherCloseDto">
  427. SELECT cs.id_ course_schedule_id_,cs.class_date_,cs.start_class_time_,cg.name_ class_name_,cs.type_ class_type_,
  428. csts.teacher_role_,ta.current_class_times_,cg.total_class_times_,
  429. IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_,
  430. IF(ta.sign_out_status_ IS NULL,3,ta.sign_out_status_) sign_out_status_,
  431. csts.actual_salary_,csts.settlement_time_,csts.subsidy_,csts.expect_salary_
  432. FROM course_schedule cs
  433. LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
  434. LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_ AND ta.teacher_id_ = csts.user_id_
  435. LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
  436. <include refid="queryCloses"/>
  437. ORDER BY cs.class_date_,cs.start_class_time_ DESC
  438. <include refid="global.limit"/>
  439. </select>
  440. <select id="findTeacherNoPay" resultType="decimal">
  441. SELECT SUM(expect_salary_) FROM course_schedule_teacher_salary csts WHERE settlement_time_ IS NULL AND user_id_
  442. = #{teacherId}
  443. </select>
  444. <select id="findTeacherByMusicGroup" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
  445. SELECT
  446. su.id_ user_id_,
  447. su.real_name_ username_
  448. FROM
  449. class_group_teacher_mapper cgtm
  450. LEFT JOIN class_group cg ON cg.id_=cgtm.class_group_id_
  451. LEFT JOIN sys_user su ON cgtm.user_id_=su.id_
  452. WHERE cg.music_group_id_=#{musicGroupId} AND cg.group_type_='MUSIC'
  453. GROUP BY su.id_
  454. </select>
  455. <resultMap id="MusicGroupTeachersDto" type="com.ym.mec.biz.dal.dto.MusicGroupTeachersDto">
  456. <result property="teacherName" column="real_name_"/>
  457. <result property="teacherPhone" column="phone_"/>
  458. <result property="jobNature" column="job_nature_"/>
  459. <result property="classGroupName" column="class_group_name_"/>
  460. <result property="classGroupId" column="class_group_id_"/>
  461. <result property="teacherId" column="teacher_id_"/>
  462. </resultMap>
  463. <select id="queryMusicGroupTeachers" resultMap="MusicGroupTeachersDto">
  464. SELECT su.real_name_,su.phone_,t.job_nature_,GROUP_CONCAT(cg.name_) class_group_name_,t.id_ teacher_id_
  465. FROM teacher t
  466. LEFT JOIN class_group_teacher_mapper cgtm ON t.id_ = cgtm.user_id_
  467. LEFT JOIN class_group cg ON cg.id_ = cgtm.class_group_id_
  468. LEFT JOIN sys_user su ON t.id_ = su.id_
  469. WHERE cg.del_flag_ != '1' AND cgtm.group_type_ = 'MUSIC'
  470. <include refid="queryMusicGroupTeachersSql"/>
  471. GROUP BY t.id_
  472. <include refid="global.limit"/>
  473. </select>
  474. <select id="countMusicGroupTeachers" resultType="java.lang.Integer">
  475. SELECT COUNT(DISTINCT t.id_)
  476. FROM teacher t
  477. LEFT JOIN class_group_teacher_mapper cgtm ON t.id_ = cgtm.user_id_
  478. LEFT JOIN class_group cg ON cg.id_ = cgtm.class_group_id_
  479. LEFT JOIN sys_user su ON t.id_ = su.id_
  480. WHERE cg.del_flag_ != '1' AND cgtm.group_type_ = 'MUSIC'
  481. <include refid="queryMusicGroupTeachersSql"/>
  482. </select>
  483. <sql id="queryMusicGroupTeachersSql">
  484. <if test="search != null and search != ''">
  485. AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%') OR
  486. su.id_=#{search})
  487. </if>
  488. <if test="musicGroupId != null and musicGroupId != ''">
  489. AND cgtm.music_group_id_ = #{musicGroupId}
  490. </if>
  491. <if test="classGroupId != null">
  492. AND cg.id_ = #{classGroupId}
  493. </if>
  494. </sql>
  495. <select id="findSignNum" resultType="java.util.Map">
  496. SELECT ta.teacher_id_ 'key',COUNT(ta.id_) 'value' FROM teacher_attendance ta
  497. WHERE FIND_IN_SET(ta.teacher_id_,#{teacherIdStr}) AND ta.music_group_id_ = #{musicGroupId}
  498. GROUP BY ta.teacher_id_
  499. </select>
  500. <sql id="queryTeacherAttendanceSql">
  501. <where>
  502. CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW() AND cgtm.teacher_role_ = 'BISHOP'
  503. <if test="startTime != null and startTime != ''">
  504. AND cs.class_date_ &gt;= #{startTime}
  505. </if>
  506. <if test="endTime != null and endTime != ''">
  507. AND cs.class_date_ &lt;= #{endTime}
  508. </if>
  509. <if test="musicGroupId != null and musicGroupId != ''">
  510. AND ta.music_group_id_ = #{musicGroupId}
  511. </if>
  512. <if test="teacherName != null and teacherName != ''">
  513. AND su.real_name_ LIKE CONCAT('%',#{teacherName},'%')
  514. </if>
  515. </where>
  516. </sql>
  517. <resultMap id="MusicGroupTeacherAttendanceDto" type="com.ym.mec.biz.dal.dto.MusicGroupTeacherAttendanceDto">
  518. <result property="classDate" column="class_date_"/>
  519. <result property="startClassTime" column="start_class_time_"/>
  520. <result property="courseScheduleName" column="name_"/>
  521. <result property="realName" column="real_name_"/>
  522. <result property="signInStatus" column="sign_in_status_"/>
  523. <result property="signOutStatus" column="sign_out_status_"/>
  524. </resultMap>
  525. <select id="queryTeacherAttendance" resultMap="MusicGroupTeacherAttendanceDto">
  526. SELECT cs.class_date_,cs.start_class_time_,cs.name_,su.real_name_,
  527. IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_,
  528. IF(ta.sign_out_status_ IS NULL,3,ta.sign_out_status_) sign_out_status_
  529. FROM course_schedule cs
  530. LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_
  531. LEFT JOIN sys_user su ON su.id_ = ta.teacher_id_
  532. LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cs.class_group_id_ AND ta.teacher_id_ = cgtm.user_id_
  533. <include refid="queryTeacherAttendanceSql"/>
  534. ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
  535. <include refid="global.limit"/>
  536. </select>
  537. <select id="countTeacherAttendance" resultType="java.lang.Integer">
  538. SELECT COUNT(cs.id_)
  539. FROM course_schedule cs
  540. LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_
  541. LEFT JOIN sys_user su ON su.id_ = ta.teacher_id_
  542. LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cs.class_group_id_ AND ta.teacher_id_ = cgtm.user_id_
  543. <include refid="queryTeacherAttendanceSql"/>
  544. </select>
  545. <select id="queryNameById" resultType="java.lang.String">
  546. select real_name_ FROM sys_user s WHERE id_ = #{userId} LIMIT 1
  547. </select>
  548. <resultMap id="musicGroupStudentApplyDto" type="com.ym.mec.biz.dal.dto.musicGroupStudentApplyDto">
  549. <result property="userId" column="user_id_"/>
  550. <result property="userName" column="username_"/>
  551. <result property="currentClass" column="current_class_"/>
  552. <result property="currentGrade" column="current_grade_"/>
  553. <result property="subjectName" column="subject_name_"/>
  554. <result property="subjectId" column="actual_subject_id_"/>
  555. <result property="paymentAmount" column="actual_amount_"/>
  556. <result property="payTime" column="pay_time_"/>
  557. <result property="paymentStatus" column="payment_status_"/>
  558. <result property="remark" column="remark_"/>
  559. </resultMap>
  560. <select id="queryMusicGroupStudentApply" resultMap="musicGroupStudentApplyDto">
  561. SELECT sr.user_id_,su.username_,sr.current_class_,sr.current_grade_,s.name_ subject_name_,sr.remark_,
  562. sr.payment_status_,sr.actual_subject_id_
  563. FROM student_registration sr
  564. LEFT JOIN sys_user su ON sr.user_id_ = su.id_
  565. LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
  566. <include refid="queryMusicGroupStudentApplySql"/>
  567. <include refid="global.limit"/>
  568. </select>
  569. <sql id="queryMusicGroupStudentApplySql">
  570. <where>
  571. sr.music_group_id_ = #{musicGroupId} AND sr.music_group_status_ != 'QUIT'
  572. <if test="subjectId != null">
  573. AND sr.actual_subject_id_ = #{subjectId}
  574. </if>
  575. <if test="paymentStatus != null">
  576. AND sr.payment_status_ = #{paymentStatus}
  577. </if>
  578. </where>
  579. </sql>
  580. <select id="countMusicGroupStudentApply" resultType="java.lang.Integer">
  581. SELECT COUNT(sr.user_id_)
  582. FROM student_registration sr
  583. LEFT JOIN sys_user su ON sr.user_id_ = su.id_
  584. LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
  585. <include refid="queryMusicGroupStudentApplySql"/>
  586. </select>
  587. <select id="queryMusicGroupStudents" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
  588. SELECT su.real_name_ username_,su.id_ user_id_,su.avatar_ head_url_,
  589. su.gender_,GROUP_CONCAT(s.name_) subject_name_,su.user_type_
  590. FROM teacher t
  591. LEFT JOIN sys_user su ON t.id_ = su.id_
  592. LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
  593. WHERE FIND_IN_SET(t.id_,#{teacherIds})
  594. <if test="search != null">
  595. AND su.real_name_ LIKE CONCAT('%',#{search},'%')
  596. </if>
  597. GROUP BY t.id_
  598. </select>
  599. <select id="findOrganTeacherBySubject" resultMap="Teacher">
  600. SELECT su.* FROM teacher t
  601. LEFT JOIN sys_user su on t.id_ = su.id_ WHERE 1=1
  602. <if test="subjectId != null">
  603. AND FIND_IN_SET(#{subjectId},t.subject_id_)
  604. </if>
  605. </select>
  606. <sql id="queryCloses">
  607. <where>
  608. CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
  609. <if test="teacherId != null">
  610. AND csts.user_id_ = #{teacherId}
  611. </if>
  612. <if test="courseStartDate != null and courseStartDate != ''">
  613. AND cs.class_date_ &gt;= #{courseStartDate}
  614. </if>
  615. <if test="courseEndDate != null and courseEndDate != ''">
  616. AND cs.class_date_ &lt;= #{courseEndDate}
  617. </if>
  618. <if test="courseScheduleType != null and courseScheduleType != ''">
  619. AND cs.type_ = #{courseScheduleType}
  620. </if>
  621. <if test="teacherRole != null and teacherRole != ''">
  622. AND csts.teacher_role_ = #{teacherRole}
  623. </if>
  624. <if test="signInStatus != null and signInStatus != 3">
  625. AND ta.sign_in_status_ = #{signInStatus}
  626. </if>
  627. <if test="signOutStatus != null and signOutStatus != 3">
  628. AND ta.sign_out_status_ = #{signOutStatus}
  629. </if>
  630. <if test="signOutStatus != null and signOutStatus == 3">
  631. AND ta.sign_out_status_ IS NULL
  632. </if>
  633. <if test="signInStatus != null and signInStatus == 3">
  634. AND ta.sign_in_status_ IS NULL
  635. </if>
  636. </where>
  637. </sql>
  638. <select id="queryOrganTeacherNum" resultType="map">
  639. select count(*) total,sum(case when job_nature_ = 'PART_TIME' then 1 else 0 end) part_time_num_,sum(case when
  640. job_nature_ = 'FULL_TIME' then 1 else 0 end) full_time_num_ from teacher
  641. where demission_date_ is null and organ_id_ not in (36,38)
  642. <if test="organId != null">
  643. and FIND_IN_SET(organ_id_,#{organId})
  644. </if>
  645. </select>
  646. <select id="findByFlowOrganRange" resultMap="Teacher">
  647. SELECT id_,CONCAT(IF(flow_organ_range_ IS NULL OR flow_organ_range_ = '',0,flow_organ_range_),",",
  648. IF(organ_id_ IS NULL OR organ_id_ = '',0,organ_id_)) flow_organ_range_ FROM teacher t
  649. <where>
  650. <if test="subjectId != null">
  651. AND FIND_IN_SET(#{subjectId},t.subject_id_)
  652. </if>
  653. <if test="jobNature != null">
  654. AND t.job_nature_ = #{jobNature}
  655. </if>
  656. <if test="isProbationPeriod != null">
  657. AND t.is_probation_period_ = #{isProbationPeriod}
  658. </if>
  659. <if test="isSupportExtraPracticeLesson != null">
  660. AND t.is_support_extra_practice_lesson_ = #{isSupportExtraPracticeLesson}
  661. </if>
  662. </where>
  663. </select>
  664. <select id="findByTeacherIds" resultMap="Teacher">
  665. SELECT * FROM teacher WHERE id_ IN
  666. <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
  667. #{teacherId}
  668. </foreach>
  669. </select>
  670. <select id="findTeacherByOrganId" resultMap="TeacherBasicDto">
  671. SELECT su.id_,su.username_,su.real_name_ FROM teacher t
  672. LEFT JOIN sys_user su ON t.id_ = su.id_
  673. WHERE su.del_flag_ != 1
  674. <if test="organId != null">
  675. AND FIND_IN_SET(t.organ_id_,#{organId})
  676. </if>
  677. <if test="subjectIds != null">
  678. AND INTE_ARRAY(t.subject_id_,#{subjectIds})
  679. </if>
  680. <if test="jobNature != null">
  681. AND t.job_nature_ = #{jobNature}
  682. </if>
  683. </select>
  684. <select id="queryUsernameByIds" resultType="java.util.Map" parameterType="list">
  685. select id_ `key`,username_ `value` FROM sys_user s
  686. WHERE s.id_ IN
  687. <foreach collection="userIds" item="item" open="(" close=")" separator=",">
  688. #{item}
  689. </foreach>
  690. </select>
  691. <select id="searchTeachers" resultMap="TeacherBasicDto">
  692. SELECT su.id_,su.username_,su.real_name_ FROM teacher t
  693. LEFT JOIN sys_user su ON t.id_ = su.id_
  694. WHERE su.del_flag_ != 1
  695. <if test="organId != null">
  696. AND FIND_IN_SET(t.organ_id_,#{organId})
  697. </if>
  698. <if test="teacherName != null">
  699. AND su.real_name_ LIKE CONCAT('%',#{teacherName},'%')
  700. </if>
  701. </select>
  702. <select id="countTeacherName" resultType="java.lang.Integer">
  703. SELECT COUNT(su.id_) FROM teacher t
  704. LEFT JOIN sys_user su ON t.id_ = su.id_
  705. WHERE su.del_flag_ != 1
  706. <include refid="queryPageNameSql"/>
  707. </select>
  708. <sql id="queryPageNameSql">
  709. <if test="organId != null">
  710. AND FIND_IN_SET(t.organ_id_,#{organId})
  711. </if>
  712. <if test="subjectIds != null">
  713. AND INTE_ARRAY(t.subject_id_,#{subjectIds})
  714. </if>
  715. <if test="jobNature != null">
  716. AND t.job_nature_ = #{jobNature}
  717. </if>
  718. <if test="teacherId != null">
  719. AND t.id_ = #{teacherId}
  720. </if>
  721. <if test="search != null">
  722. AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
  723. </if>
  724. </sql>
  725. <select id="queryPageName" resultMap="Teacher">
  726. SELECT su.id_,su.real_name_,su.avatar_,GROUP_CONCAT(s.name_) subject_name_ FROM teacher t
  727. LEFT JOIN sys_user su ON t.id_ = su.id_
  728. LEFT JOIN subject s ON FIND_IN_SET(s.id_, t.subject_id_)
  729. WHERE su.del_flag_ != 1
  730. <include refid="queryPageNameSql"/>
  731. GROUP BY su.id_
  732. <include refid="global.limit"/>
  733. </select>
  734. <select id="getCourseScheduleHomework" resultMap="com.ym.mec.biz.dal.dao.CourseHomeworkDao.CourseHomework">
  735. SELECT * FROM course_homework WHERE course_schedule_id_ = #{courseScheduleId} LIMIT 1
  736. </select>
  737. <select id="lockTeachers" resultType="int">
  738. SELECT id_ FROM teacher WHERE id_ IN
  739. <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
  740. #{userId}
  741. </foreach>
  742. FOR UPDATE
  743. </select>
  744. <resultMap type="com.ym.mec.auth.api.entity.SysUser" id="SysUser">
  745. <result column="id_" property="id"/>
  746. <result column="username_" property="username"/>
  747. <result column="real_name_" property="realName"/>
  748. <result column="password_" property="password"/>
  749. <result column="salt_" property="salt"/>
  750. <result column="phone_" property="phone"/>
  751. <result column="avatar_" property="avatar"/>
  752. <result column="organ_id_" property="organId"/>
  753. <result column="create_time_" property="createTime"/>
  754. <result column="update_time_" property="updateTime"/>
  755. <result column="lock_flag_" property="lockFlag"/>
  756. <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  757. <result column="wx_openid_" property="wxOpenid"/>
  758. <result column="qq_openid_" property="qqOpenid"/>
  759. <result column="user_type_" property="userType"/>
  760. <result column="gender_" property="gender"/>
  761. <result column="nation_" property="nation"/>
  762. <result column="birthdate_" property="birthdate"/>
  763. <result column="email_" property="email"/>
  764. <result column="im_token_" property="imToken"/>
  765. <result column="id_card_no_" property="idCardNo"/>
  766. <result column="wechat_id_" property="wechatId"/>
  767. <result column="is_super_admin_" property="isSuperAdmin"/>
  768. <result column="current_grade_" property="currentGrade"/>
  769. <result column="current_class_" property="currentClass"/>
  770. </resultMap>
  771. <select id="getUser" resultMap="SysUser">
  772. SELECT su.*
  773. FROM sys_user su
  774. WHERE su.id_ = #{id} LIMIT 1
  775. </select>
  776. <select id="queryTeacherBaseInfo" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
  777. SELECT
  778. su.real_name_ username_,
  779. su.id_ user_id_,
  780. su.avatar_ head_url_,
  781. gender_,
  782. GROUP_CONCAT(s.name_) subject_name_
  783. FROM sys_user su
  784. LEFT JOIN teacher t ON su.id_ = t.id_
  785. LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
  786. WHERE su.id_ IN
  787. <foreach collection="teacherId" item="userId" open="(" close=")" separator=",">
  788. #{userId}
  789. </foreach>
  790. <if test="search != null and search != ''">
  791. AND su.real_name_ LIKE CONCAT('%',#{search},'%')
  792. </if>
  793. GROUP BY su.id_
  794. </select>
  795. <select id="queryTeacherImModel" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.ImUserModel">
  796. SELECT su.id_,su.avatar_,su.real_name_ username_
  797. FROM sys_user su
  798. WHERE su.id_ IN
  799. <foreach collection="teacherIds" item="userId" open="(" close=")" separator=",">
  800. #{userId}
  801. </foreach>
  802. </select>
  803. <select id="findMusicTeacherIds" resultType="java.lang.Integer">
  804. SELECT DISTINCT cgtm.user_id_ FROM class_group_student_mapper cgsm
  805. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  806. LEFT JOIN music_group mg ON cgsm.music_group_id_ = mg.id_
  807. WHERE mg.status_ = 'PROGRESS' AND cgsm.user_id_ = #{studentId}
  808. </select>
  809. <select id="findVipTeacherIds" resultType="java.lang.Integer">
  810. SELECT DISTINCT cgtm.user_id_ FROM class_group_student_mapper cgsm
  811. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  812. LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_
  813. WHERE vg.group_status_ IN (2,4) AND cgsm.user_id_ = #{studentId}
  814. </select>
  815. <select id="findPracticeTeacherIds" resultType="java.lang.Integer">
  816. SELECT DISTINCT cgtm.user_id_ FROM class_group_student_mapper cgsm
  817. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  818. LEFT JOIN practice_group pg ON pg.id_ = cgsm.music_group_id_
  819. WHERE cgsm.group_type_ = 'PRACTICE' AND cgsm.user_id_ = #{studentId}
  820. </select>
  821. <select id="findTeacherInfo" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
  822. SELECT
  823. su.real_name_ username_,
  824. su.id_ user_id_,
  825. su.avatar_ head_url_,
  826. gender_,
  827. GROUP_CONCAT(s.name_) subject_name_
  828. FROM sys_user su
  829. LEFT JOIN teacher t ON su.id_ = t.id_
  830. LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
  831. WHERE su.id_ = #{id}
  832. </select>
  833. <select id="queryEducationIpa" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
  834. SELECT su.real_name_ username_,su.id_ user_id_,su.avatar_ head_url_,su.gender_,GROUP_CONCAT(s.name_) subject_name_,su.user_type_
  835. FROM employee e
  836. LEFT JOIN teacher t ON INTE_ARRAY(e.organ_id_list_,t.flow_organ_range_) OR FIND_IN_SET(t.organ_id_,e.organ_id_list_)
  837. LEFT JOIN sys_user su ON t.id_ = su.id_
  838. LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
  839. WHERE e.user_id_ = #{userId}
  840. <if test="search != null and search != ''">
  841. AND su.real_name_ LIKE CONCAT('%',#{search},'%')
  842. </if>
  843. GROUP BY t.id_
  844. UNION ALL
  845. SELECT su.username_,su.id_ user_id_,su.avatar_ head_url_,su.gender_,NULL subject_name_,su.user_type_
  846. FROM employee e
  847. LEFT JOIN sys_user su ON FIND_IN_SET(su.organ_id_,e.organ_id_list_)
  848. LEFT JOIN student_registration sr ON su.id_ = sr.user_id_
  849. LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
  850. WHERE e.user_id_ = #{userId} AND (sr.id_ IS NULL OR sr.music_group_status_ = 'QUIT' OR mg.status_ != 'PROGRESS')
  851. <if test="search != null and search != ''">
  852. AND su.username_ LIKE CONCAT('%',#{search},'%')
  853. </if>
  854. GROUP BY su.id_
  855. </select>
  856. <select id="findCloseCourseTeacherIds" resultType="java.lang.Integer">
  857. SELECT DISTINCT csts.user_id_ FROM course_schedule_student_payment cssp
  858. LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
  859. LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
  860. WHERE cssp.group_type_ IN ('VIP','PRACTICE') AND cs.status_ = 'OVER' AND cssp.user_id_ = #{studentId}
  861. </select>
  862. <select id="findCloseCourseStudentIds" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
  863. SELECT su.username_,su.id_ user_id_,su.avatar_ head_url_,su.gender_,NULL subject_name_,su.user_type_
  864. FROM course_schedule_teacher_salary csts
  865. LEFT JOIN course_schedule cs ON csts.course_schedule_id_ = cs.id_
  866. LEFT JOIN course_schedule_student_payment cssp ON cs.id_ = cssp.course_schedule_id_
  867. LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
  868. WHERE csts.group_type_ IN ('VIP','PRACTICE') AND cs.status_ = 'OVER' AND csts.user_id_ = #{teacherId} AND su.id_ IS NOT NULL
  869. <if test="search != null and search != ''">
  870. AND su.username_ LIKE CONCAT('%',#{search},'%')
  871. </if>
  872. GROUP BY su.id_
  873. </select>
  874. <select id="findVipEducationalStudentId" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
  875. SELECT su.username_,su.id_ user_id_,su.avatar_ head_url_,su.gender_,NULL subject_name_,su.user_type_
  876. FROM vip_group vg
  877. LEFT JOIN course_schedule_student_payment cssp ON cssp.music_group_id_ = vg.id_
  878. LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
  879. WHERE cssp.group_type_ = 'VIP' AND vg.educational_teacher_id_ = #{teacherId}
  880. GROUP BY su.id_
  881. </select>
  882. <select id="findCommEducationalStudentId" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
  883. SELECT su.username_,su.id_ user_id_,su.avatar_ head_url_,su.gender_,NULL subject_name_,su.user_type_
  884. FROM courses_group vg
  885. LEFT JOIN course_schedule_student_payment cssp ON cssp.music_group_id_ = vg.id_
  886. LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
  887. WHERE cssp.group_type_ = 'COMM' AND vg.educational_teacher_id_ = #{teacherId}
  888. GROUP BY su.id_
  889. </select>
  890. <select id="findPracticeEducationalStudentId" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
  891. SELECT su.username_,su.id_ user_id_,su.avatar_ head_url_,su.gender_,NULL subject_name_,su.user_type_
  892. FROM practice_group pg
  893. LEFT JOIN course_schedule_student_payment cssp ON cssp.music_group_id_ = pg.id_
  894. LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
  895. WHERE cssp.group_type_ = 'PRACTICE' AND pg.educational_teacher_id_ = #{teacherId}
  896. GROUP BY su.id_
  897. </select>
  898. <select id="findPracticeEducationalTeacherId" resultType="java.lang.Integer">
  899. SELECT DISTINCT pg.educational_teacher_id_ FROM class_group_student_mapper cgsm
  900. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  901. LEFT JOIN practice_group pg ON pg.id_ = cgsm.music_group_id_
  902. WHERE cgsm.group_type_ = 'PRACTICE' AND cgsm.user_id_ = #{userId}
  903. </select>
  904. <select id="findVipEducationalTeacherId" resultType="java.lang.Integer">
  905. SELECT DISTINCT vg.educational_teacher_id_ FROM class_group_student_mapper cgsm
  906. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  907. LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_
  908. WHERE cgsm.group_type_ = 'VIP' AND cgsm.user_id_ = #{userId}
  909. </select>
  910. <select id="findCommEducationalTeacherId" resultType="java.lang.Integer">
  911. SELECT DISTINCT vg.educational_teacher_id_ FROM class_group_student_mapper cgsm
  912. LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
  913. LEFT JOIN courses_group vg ON vg.id_ = cgsm.music_group_id_
  914. WHERE cgsm.group_type_ = 'COMM' AND cgsm.user_id_ = #{userId}
  915. </select>
  916. <select id="queryCourseClassStudentIds" resultType="java.lang.Integer">
  917. SELECT cssp.user_id_ FROM course_schedule_teacher_salary csts
  918. LEFT JOIN course_schedule_student_payment cssp ON csts.course_schedule_id_ = cssp.course_schedule_id_
  919. WHERE csts.user_id_ = #{teacherId}
  920. GROUP BY cssp.user_id_
  921. UNION ALL
  922. SELECT cssp.user_id_ FROM class_group_teacher_mapper cgtm
  923. LEFT JOIN course_schedule_student_payment cssp ON cgtm.class_group_id_ = cssp.class_group_id_
  924. WHERE cgtm.user_id_ = #{teacherId}
  925. GROUP BY cssp.user_id_
  926. UNION ALL
  927. SELECT cssp.user_id_ FROM music_group mg
  928. LEFT JOIN course_schedule_student_payment cssp ON mg.id_ = cssp.music_group_id_
  929. WHERE (mg.educational_teacher_id_ = #{teacherId} OR mg.director_user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId}) AND cssp.group_type_ = 'MUSIC'
  930. UNION ALL
  931. SELECT cssp.user_id_ FROM vip_group vg
  932. LEFT JOIN course_schedule_student_payment cssp ON vg.id_ = cssp.music_group_id_
  933. WHERE vg.educational_teacher_id_ = #{teacherId} AND cssp.group_type_ = 'VIP'
  934. UNION ALL
  935. SELECT cssp.user_id_ FROM courses_group cg
  936. LEFT JOIN course_schedule_student_payment cssp ON cg.id_ = cssp.music_group_id_
  937. WHERE cg.educational_teacher_id_ = #{teacherId} AND cssp.group_type_ = 'COMM'
  938. UNION ALL
  939. SELECT cssp.user_id_ FROM practice_group pg
  940. LEFT JOIN course_schedule_student_payment cssp ON pg.id_ = cssp.music_group_id_
  941. WHERE pg.educational_teacher_id_ = #{teacherId} AND cssp.group_type_ = 'PRACTICE'
  942. </select>
  943. <select id="queryCourseClassTeacherIds" resultType="java.lang.Integer">
  944. SELECT csts.user_id_ FROM music_group mg
  945. LEFT JOIN course_schedule_teacher_salary csts ON mg.id_ = csts.music_group_id_
  946. WHERE csts.group_type_ = 'MUSIC' AND (mg.educational_teacher_id_ = #{teacherId} OR mg.director_user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId})
  947. GROUP BY csts.user_id_
  948. UNION ALL
  949. SELECT csts.user_id_ FROM vip_group vg
  950. LEFT JOIN course_schedule_teacher_salary csts ON vg.id_ = csts.music_group_id_
  951. WHERE vg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'VIP'
  952. GROUP BY csts.user_id_
  953. UNION ALL
  954. SELECT csts.user_id_ FROM courses_group cg
  955. LEFT JOIN course_schedule_teacher_salary csts ON cg.id_ = csts.music_group_id_
  956. WHERE cg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'COMM'
  957. GROUP BY csts.user_id_
  958. UNION ALL
  959. SELECT csts.user_id_ FROM practice_group pg
  960. LEFT JOIN course_schedule_teacher_salary csts ON pg.id_ = csts.music_group_id_
  961. WHERE pg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'PRACTICE'
  962. GROUP BY csts.user_id_
  963. UNION ALL
  964. SELECT cgtm.user_id_ FROM music_group mg
  965. LEFT JOIN class_group_teacher_mapper cgtm ON mg.id_ = cgtm.music_group_id_
  966. WHERE cgtm.group_type_ = 'MUSIC' AND (mg.educational_teacher_id_ = #{teacherId} OR mg.director_user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId})
  967. GROUP BY cgtm.user_id_
  968. UNION ALL
  969. SELECT cgtm.user_id_ FROM vip_group vg
  970. LEFT JOIN class_group_teacher_mapper cgtm ON vg.id_ = cgtm.music_group_id_
  971. WHERE vg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'VIP'
  972. GROUP BY cgtm.user_id_
  973. UNION ALL
  974. SELECT cgtm.user_id_ FROM courses_group cg
  975. LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.music_group_id_
  976. WHERE cg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'COMM'
  977. GROUP BY cgtm.user_id_
  978. UNION ALL
  979. SELECT cgtm.user_id_ FROM practice_group pg
  980. LEFT JOIN class_group_teacher_mapper cgtm ON pg.id_ = cgtm.music_group_id_
  981. WHERE pg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'PRACTICE'
  982. GROUP BY cgtm.user_id_
  983. UNION ALL
  984. SELECT vg.educational_teacher_id_ FROM class_group_teacher_mapper cgtm
  985. LEFT JOIN vip_group vg ON vg.id_ = cgtm.music_group_id_
  986. WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'VIP'
  987. GROUP BY vg.educational_teacher_id_
  988. UNION ALL
  989. SELECT cg.educational_teacher_id_ FROM class_group_teacher_mapper cgtm
  990. LEFT JOIN courses_group cg ON cg.id_ = cgtm.music_group_id_
  991. WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'COMM'
  992. GROUP BY cg.educational_teacher_id_
  993. UNION ALL
  994. SELECT pg.educational_teacher_id_ FROM class_group_teacher_mapper cgtm
  995. LEFT JOIN practice_group pg ON pg.id_ = cgtm.music_group_id_
  996. WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'PRACTICE'
  997. GROUP BY pg.educational_teacher_id_
  998. UNION ALL
  999. SELECT vg.educational_teacher_id_ FROM course_schedule_teacher_salary csts
  1000. LEFT JOIN vip_group vg ON vg.id_ = csts.music_group_id_
  1001. WHERE csts.user_id_ = #{teacherId} AND csts.group_type_ = 'VIP'
  1002. GROUP BY vg.educational_teacher_id_
  1003. UNION ALL
  1004. SELECT cg.educational_teacher_id_ FROM course_schedule_teacher_salary csts
  1005. LEFT JOIN courses_group cg ON cg.id_ = csts.music_group_id_
  1006. WHERE csts.user_id_ = #{teacherId} AND csts.group_type_ = 'COMM'
  1007. GROUP BY cg.educational_teacher_id_
  1008. UNION ALL
  1009. SELECT pg.educational_teacher_id_ FROM course_schedule_teacher_salary csts
  1010. LEFT JOIN practice_group pg ON pg.id_ = csts.music_group_id_
  1011. WHERE csts.user_id_ = #{teacherId} AND csts.group_type_ = 'PRACTICE'
  1012. GROUP BY pg.educational_teacher_id_
  1013. </select>
  1014. </mapper>