CourseScheduleReviewMapper.xml 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  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. <mapper namespace="com.ym.mec.biz.dal.dao.CourseScheduleReviewDao">
  4. <resultMap id="CourseScheduleReview" type="com.ym.mec.biz.dal.entity.CourseScheduleReview">
  5. <id column="id_" jdbcType="INTEGER" property="id"/>
  6. <result column="course_schedule_id_" jdbcType="INTEGER" property="courseScheduleId"/>
  7. <result column="class_group_id_" jdbcType="INTEGER" property="classGroupId"/>
  8. <result column="teacher_id_" jdbcType="INTEGER" property="teacherId"/>
  9. <result column="educational_teacher_id_" jdbcType="INTEGER" property="educationalTeacherId"/>
  10. <result column="student_id_" jdbcType="INTEGER" property="studentId"/>
  11. <result column="teaching_material_" jdbcType="VARCHAR" property="teachingMaterial"/>
  12. <result column="song_" jdbcType="VARCHAR" property="song"/>
  13. <result column="memo_" jdbcType="VARCHAR" property="memo"/>
  14. <result column="pronunciation_" jdbcType="INTEGER" property="pronunciation"/>
  15. <result column="tempo_" jdbcType="INTEGER" property="tempo"/>
  16. <result column="music_theory_" jdbcType="INTEGER" property="musicTheory"/>
  17. <result column="has_liaison_" jdbcType="TINYINT" property="hasLiaison"/>
  18. <result column="hand_homework_" jdbcType="TINYINT" property="handHomework"/>
  19. <result column="course_review_" jdbcType="VARCHAR" property="courseReview"/>
  20. <result column="student_review_" jdbcType="TINYINT" property="studentReview"/>
  21. <result column="create_time_" jdbcType="DATE" property="createTime"/>
  22. <result column="update_time_" jdbcType="DATE" property="updateTime"/>
  23. <result column="course_name_" jdbcType="VARCHAR" property="courseName"/>
  24. <result column="teacher_name_" jdbcType="VARCHAR" property="teacherName"/>
  25. <result column="teacher_avatar_" jdbcType="VARCHAR" property="teacherAvatar"/>
  26. <result column="student_name_" jdbcType="VARCHAR" property="studentName"/>
  27. <result column="student_avatar_" jdbcType="VARCHAR" property="studentAvatar"/>
  28. <result column="class_date_" jdbcType="DATE" property="classDate"/>
  29. <result column="tenant_id_" property="tenantId" />
  30. </resultMap>
  31. <select id="get" parameterType="java.lang.Integer" resultMap="CourseScheduleReview">
  32. select *
  33. from course_schedule_review
  34. where id_ = #{id,jdbcType=INTEGER}
  35. </select>
  36. <delete id="delete" parameterType="java.lang.Integer">
  37. delete
  38. from course_schedule_review
  39. where id_ = #{id,jdbcType=INTEGER}
  40. </delete>
  41. <delete id="delByCourseScheduleId">
  42. DELETE
  43. FROM course_schedule_review
  44. WHERE course_schedule_id_ = #{courseScheduleId}
  45. </delete>
  46. <delete id="delByCourseScheduleIds">
  47. DELETE FROM course_schedule_review WHERE course_schedule_id_ IN
  48. <foreach collection="courseScheduleIds" item="id" open="(" close=")" separator=",">
  49. #{id}
  50. </foreach>
  51. </delete>
  52. <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleReview"
  53. useGeneratedKeys="true">
  54. <!--@mbg.generated-->
  55. insert into course_schedule_review (course_schedule_id_, class_group_id_, teacher_id_,
  56. educational_teacher_id_, student_id_, teaching_material_,
  57. song_, memo_, pronunciation_,
  58. tempo_, music_theory_, has_liaison_,
  59. hand_homework_, course_review_, create_time_,
  60. update_time_,tenant_id_)
  61. values (#{courseScheduleId,jdbcType=INTEGER}, #{classGroupId,jdbcType=INTEGER}, #{teacherId,jdbcType=INTEGER},
  62. #{educationalTeacherId,jdbcType=INTEGER}, #{studentId,jdbcType=INTEGER}, #{teachingMaterial,jdbcType=VARCHAR},
  63. #{song,jdbcType=VARCHAR}, #{memo,jdbcType=VARCHAR}, #{pronunciation,jdbcType=INTEGER},
  64. #{tempo,jdbcType=INTEGER}, #{musicTheory,jdbcType=INTEGER}, #{hasLiaison,jdbcType=TINYINT},
  65. #{handHomework,jdbcType=TINYINT}, #{courseReview,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
  66. #{updateTime,jdbcType=TIMESTAMP},#{tenantId})
  67. </insert>
  68. <insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  69. INSERT INTO course_schedule_review (course_schedule_id_, class_group_id_, teacher_id_, student_id_,
  70. teaching_material_,memo_, create_time_,update_time_,tenant_id_)
  71. VALUE
  72. <foreach collection="courseScheduleReviews" item="courseScheduleReview" separator=",">
  73. (#{courseScheduleReview.courseScheduleId,jdbcType=INTEGER},#{courseScheduleReview.classGroupId,jdbcType=INTEGER},
  74. #{courseScheduleReview.teacherId,jdbcType=INTEGER},#{courseScheduleReview.studentId,jdbcType=INTEGER},
  75. #{courseScheduleReview.teachingMaterial,jdbcType=VARCHAR},#{courseScheduleReview.memo,jdbcType=VARCHAR},NOW(),now(),#{tenantId})
  76. </foreach>
  77. </insert>
  78. <update id="update" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleReview">
  79. <!--@mbg.generated-->
  80. update course_schedule_review
  81. <set>
  82. <if test="courseScheduleId != null">
  83. course_schedule_id_ = #{courseScheduleId,jdbcType=INTEGER},
  84. </if>
  85. <if test="classGroupId != null">
  86. class_group_id_ = #{classGroupId,jdbcType=INTEGER},
  87. </if>
  88. <if test="teacherId != null">
  89. teacher_id_ = #{teacherId,jdbcType=INTEGER},
  90. </if>
  91. <if test="educationalTeacherId != null">
  92. educational_teacher_id_ = #{educationalTeacherId,jdbcType=INTEGER},
  93. </if>
  94. <if test="studentId != null">
  95. student_id_ = #{studentId,jdbcType=INTEGER},
  96. </if>
  97. <if test="teachingMaterial != null">
  98. teaching_material_ = #{teachingMaterial,jdbcType=VARCHAR},
  99. </if>
  100. <if test="song != null">
  101. song_ = #{song,jdbcType=VARCHAR},
  102. </if>
  103. <if test="memo != null">
  104. memo_ = #{memo,jdbcType=VARCHAR},
  105. </if>
  106. <if test="pronunciation != null">
  107. pronunciation_ = #{pronunciation,jdbcType=INTEGER},
  108. </if>
  109. <if test="tempo != null">
  110. tempo_ = #{tempo,jdbcType=INTEGER},
  111. </if>
  112. <if test="musicTheory != null">
  113. music_theory_ = #{musicTheory,jdbcType=INTEGER},
  114. </if>
  115. <if test="hasLiaison != null">
  116. has_liaison_ = #{hasLiaison,jdbcType=TINYINT},
  117. </if>
  118. <if test="handHomework != null">
  119. hand_homework_ = #{handHomework,jdbcType=TINYINT},
  120. </if>
  121. <if test="courseReview != null">
  122. course_review_ = #{courseReview,jdbcType=VARCHAR},
  123. </if>
  124. <if test="studentReview != null">
  125. student_review_ = #{studentReview,jdbcType=TINYINT},
  126. </if>
  127. update_time_ = NOW()
  128. </set>
  129. where id_ = #{id,jdbcType=INTEGER} and tenant_id_ = #{tenantId}
  130. </update>
  131. <resultMap id="CourseReviewDto" type="com.ym.mec.biz.dal.dto.CourseReviewDto">
  132. <id column="id_" jdbcType="INTEGER" property="id"/>
  133. <result column="group_type_" property="groupType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
  134. <result column="subject_id_" jdbcType="INTEGER" property="subjectId"/>
  135. <result column="subject_name_" jdbcType="INTEGER" property="subjectName"/>
  136. <result column="organ_id_" jdbcType="INTEGER" property="organId"/>
  137. <result column="class_date_" jdbcType="DATE" property="classDate"/>
  138. <result column="course_name_" jdbcType="VARCHAR" property="courseName"/>
  139. <result column="teacher_name_" jdbcType="VARCHAR" property="teacherName"/>
  140. <result column="edu_teacher_name_" jdbcType="VARCHAR" property="eduTeacherName"/>
  141. <result column="buy_months_" property="BuyMonths"/>
  142. <result column="practice_group_type_" property="practiceGroupType"/>
  143. <result column="review_id_" property="reviewId"/>
  144. <result column="student_review_" property="studentReview"/>
  145. <result column="hand_homework_" property="handHomework"/>
  146. <result column="assign_homework_" property="assignHomework"/>
  147. <result column="course_review_" property="courseReview"/>
  148. <result column="teacher_id" property="teacherId"/>
  149. <result column="start_class_time_" jdbcType="DATE" property="startClassTime"/>
  150. <result column="end_class_time_" jdbcType="DATE" property="endClassTime"/>
  151. <result column="class_date_Str_" jdbcType="VARCHAR" property="classDateStr"/>
  152. <result column="start_class_time_Str_" jdbcType="VARCHAR" property="startClassTimeStr"/>
  153. <result column="end_class_time_Str_" jdbcType="VARCHAR" property="endClassTimeStr"/>
  154. <result column="teaching_material_" property="teachingMaterial"/>
  155. <result column="pronunciation_" property="pronunciation"/>
  156. <result column="tempo_" property="tempo"/>
  157. <result column="music_theory_" property="musicTheory"/>
  158. <result column="song_" property="song"/>
  159. <result column="memo_" property="memo"/>
  160. <result column="create_time_" property="createTime"/>
  161. <result column="update_time_" property="updateTime"/>
  162. <result column="has_liaison_" property="hasLiaison"/>
  163. <result column="student_id_" property="studentId"/>
  164. <result column="home_work_replied_" property="homeWorkReplied"/>
  165. <result column="attendance_id_" property="attendanceId"/>
  166. </resultMap>
  167. <sql id="practiceGroupReviewsQueryCondition">
  168. <where>
  169. AND pg.id_ > 0 AND cs.group_type_='PRACTICE' AND cs.status_='OVER' AND (cs.del_flag_ = 0 OR cs.del_flag_ IS
  170. NULL)
  171. <if test="search!=null and search!=''">
  172. AND (cs.name_ LIKE CONCAT('%',#{search},'%') OR cs.id_= #{search})
  173. </if>
  174. <if test="organId != null">
  175. AND FIND_IN_SET(pg.organ_id_,#{organId})
  176. </if>
  177. <if test="subjectId != null">
  178. AND pg.subject_id_=#{subjectId}
  179. </if>
  180. <if test="tenantId != null">
  181. AND pg.tenant_id_=#{tenantId}
  182. </if>
  183. <if test="teacherId != null">
  184. AND cs.actual_teacher_id_=#{teacherId}
  185. </if>
  186. <if test="eduTeacherId != null">
  187. AND pg.educational_teacher_id_=#{eduTeacherId}
  188. </if>
  189. <if test='isFree !=null and isFree=="0"'>
  190. AND pg.buy_months_ > 0
  191. </if>
  192. <if test='isFree !=null and isFree=="1"'>
  193. AND pg.type_='FREE'
  194. </if>
  195. <if test="practiceGroupType != null">
  196. AND pg.type_=#{practiceGroupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  197. </if>
  198. <if test="studentReview !=null">
  199. AND csc.score_ =#{studentReview}
  200. </if>
  201. <if test="assignHomework != null and assignHomework == 1">
  202. AND sch.id_>0
  203. </if>
  204. <if test="assignHomework != null and assignHomework ==0">
  205. AND sch.id_ IS NULL
  206. </if>
  207. <if test='hasReview !=null and hasReview=="1"'>
  208. AND csr.id_ > 0
  209. </if>
  210. <if test='hasReview !=null and hasReview=="0"'>
  211. AND csr.id_ IS NULL
  212. </if>
  213. <if test='hasHandHomework !=null and hasHandHomework=="1"'>
  214. AND csr.hand_homework_ = 1
  215. </if>
  216. <if test='hasHandHomework !=null and hasHandHomework=="0"'>
  217. AND csr.hand_homework_ IS NULL
  218. </if>
  219. <if test='hasLiaison !=null and hasLiaison=="1"'>
  220. AND csr.has_liaison_ = 1
  221. </if>
  222. <if test='hasLiaison !=null and hasLiaison=="0"'>
  223. AND (csr.has_liaison_ = 0 OR csr.has_liaison_ IS NULL)
  224. </if>
  225. <if test="courseReview != null">
  226. AND csr.course_review_=#{courseReview}
  227. </if>
  228. <if test="startTime !=null">
  229. <![CDATA[AND cs.class_date_ >= #{startTime} ]]>
  230. </if>
  231. <if test="endTime !=null">
  232. <![CDATA[AND cs.class_date_ <= #{endTime} ]]>
  233. </if>
  234. <if test='hasArrived !=null and hasArrived=="1"'>
  235. AND sa.id_ > 0
  236. </if>
  237. <if test='hasArrived !=null and hasArrived=="0"'>
  238. AND sa.id_ IS NULL
  239. </if>
  240. <if test='homeWorkReplied !=null and homeWorkReplied =="1"'>
  241. AND sch.is_replied_ > 0
  242. </if>
  243. <if test='homeWorkReplied !=null and homeWorkReplied =="0"'>
  244. AND (sch.is_replied_ = 0 OR sch.is_replied_ IS NULL)
  245. </if>
  246. </where>
  247. </sql>
  248. <select id="getPracticeGroupReviewList" resultMap="CourseReviewDto">
  249. SELECT cs.id_,cs.actual_teacher_id_ teacher_id ,cs.class_date_, pg.subject_id_,pg.organ_id_,pg.name_
  250. course_name_,su.real_name_
  251. teacher_name_,edsu.real_name_
  252. edu_teacher_name_,pg.buy_months_,csr.id_ review_id_, csc.score_ student_review_,
  253. csr.hand_homework_,csr.course_review_,pg.student_id_,csr.teaching_material_,csr.pronunciation_,csr.tempo_,
  254. csr.music_theory_,csr.song_,csr.memo_,csr.create_time_,csr.has_liaison_,csr.update_time_,sa.id_
  255. attendance_id_,sch.is_replied_ home_work_replied_,
  256. CASE WHEN sch.id_ IS NULL THEN 0 ELSE 1 END assign_homework_,
  257. pg.type_ practice_group_type_
  258. FROM course_schedule cs
  259. LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_ AND cs.group_type_='PRACTICE'
  260. LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
  261. LEFT JOIN sys_user edsu ON pg.educational_teacher_id_ = edsu.id_
  262. LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
  263. LEFT JOIN course_schedule_complaints csc on csc.course_schedule_id_ = cs.id_
  264. LEFT JOIN student_attendance sa on sa.course_schedule_id_ = cs.id_
  265. LEFT JOIN student_course_homework sch on cs.id_ = sch.course_schedule_id_
  266. <include refid="practiceGroupReviewsQueryCondition"/>
  267. ORDER BY cs.class_date_ DESC
  268. <include refid="global.limit"/>
  269. </select>
  270. <select id="countPracticeGroupReviews" resultType="java.lang.Integer">
  271. SELECT count(*) FROM course_schedule cs
  272. LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_ AND cs.group_type_='PRACTICE'
  273. LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
  274. LEFT JOIN course_schedule_complaints csc on csc.course_schedule_id_ = cs.id_
  275. LEFT JOIN student_attendance sa on sa.course_schedule_id_ = cs.id_
  276. LEFT JOIN student_course_homework sch on cs.id_ = sch.course_schedule_id_
  277. <include refid="practiceGroupReviewsQueryCondition"/>
  278. </select>
  279. <sql id="practiceGroupReviews4EduQueryCondition">
  280. <where>
  281. <if test="type != null">
  282. AND cs.type_=#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  283. </if>
  284. <if test="eduTeacherId != null">
  285. AND csr.educational_teacher_id_=#{eduTeacherId}
  286. </if>
  287. <if test="tenantId != null">
  288. AND csr.tenant_id_=#{tenantId}
  289. </if>
  290. <if test='hasReview !=null and hasReview=="1"'>
  291. AND csr.course_review_ IS NOT NULL
  292. </if>
  293. <if test='hasReview !=null and hasReview=="0"'>
  294. AND csr.course_review_ IS NULL
  295. </if>
  296. <if test='hasHandHomework !=null and hasHandHomework=="1"'>
  297. AND csr.hand_homework_ = 1
  298. </if>
  299. <if test='hasHandHomework !=null and hasHandHomework=="0"'>
  300. AND csr.hand_homework_ IS NULL
  301. </if>
  302. <if test='hasLiaison !=null and hasLiaison=="1"'>
  303. AND csr.has_liaison_ = 1
  304. </if>
  305. <if test='hasLiaison !=null and hasLiaison=="0"'>
  306. AND csr.has_liaison_ = 0
  307. </if>
  308. <if test="startTime !=null">
  309. <![CDATA[AND cs.class_date_ >= #{startTime} ]]>
  310. </if>
  311. <if test="endTime !=null">
  312. <![CDATA[AND cs.class_date_ <= #{endTime} ]]>
  313. </if>
  314. </where>
  315. </sql>
  316. <select id="getPracticeGroupReview4EduList" resultMap="CourseScheduleReview">
  317. SELECT csr.id_,cs.class_date_, cs.name_ course_name_,su.real_name_ teacher_name_,csr.hand_homework_
  318. FROM course_schedule_review csr
  319. LEFT JOIN course_schedule cs on cs.id_ = csr.course_schedule_id_
  320. LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
  321. <include refid="practiceGroupReviews4EduQueryCondition"/>
  322. ORDER BY cs.class_date_ DESC
  323. <include refid="global.limit"/>
  324. </select>
  325. <select id="countPracticeGroupReviews4Edu" resultType="java.lang.Integer">
  326. SELECT count(*) FROM course_schedule_review csr
  327. LEFT JOIN course_schedule cs on cs.id_ = csr.course_schedule_id_
  328. <include refid="practiceGroupReviews4EduQueryCondition"/>
  329. </select>
  330. <select id="findByCourseScheduleAndStudent" resultMap="CourseScheduleReview">
  331. SELECT *
  332. FROM course_schedule_review
  333. WHERE course_schedule_id_ = #{courseScheduleId}
  334. <if test="studentId != null">
  335. AND student_id_ = #{studentId}
  336. </if>
  337. </select>
  338. <select id="findByCourseSchedules" resultMap="CourseScheduleReview">
  339. SELECT * FROM course_schedule_review WHERE course_schedule_id_ IN
  340. <foreach collection="courseScheduleIds" item="courseScheduleId" separator="," open="(" close=")">
  341. #{courseScheduleId}
  342. </foreach>
  343. </select>
  344. <select id="findByCourseSchedulesAndStudentId" resultMap="CourseScheduleReview">
  345. SELECT * FROM course_schedule_review WHERE course_schedule_id_ IN
  346. <foreach collection="courseScheduleIds" item="courseScheduleId" separator="," open="(" close=")">
  347. #{courseScheduleId}
  348. </foreach>
  349. AND student_id_ = #{studentId}
  350. </select>
  351. <select id="findByClassGroupId" resultMap="CourseReviewDto">
  352. SELECT id_,
  353. class_date_,
  354. name_ course_name_,
  355. class_date_ class_date_Str_,
  356. start_class_time_ start_class_time_Str_,
  357. end_class_time_ end_class_time_Str_
  358. FROM course_schedule
  359. WHERE class_group_id_ = #{classGroupId}
  360. AND status_ = 'OVER'
  361. ORDER BY class_date_ DESC, start_class_time_ DESC
  362. </select>
  363. <select id="findByCourseScheduleId" resultMap="CourseScheduleReview">
  364. SELECT csr.teacher_id_,
  365. t.real_name_ teacher_name_,
  366. t.avatar_ teacher_avatar_,
  367. csr.student_id_,
  368. stu.username_ student_name_,
  369. stu.avatar_ student_avatar_,
  370. csr.teaching_material_,
  371. csr.memo_
  372. FROM course_schedule_review csr
  373. LEFT JOIN sys_user t on csr.teacher_id_ = t.id_
  374. LEFT JOIN sys_user stu on csr.student_id_ = stu.id_
  375. WHERE csr.course_schedule_id_ = #{courseScheduleId}
  376. </select>
  377. <select id="findStudentByClassGroupId" resultMap="com.ym.mec.biz.dal.dao.TeacherDao.SysUser">
  378. SELECT su.id_, su.username_, su.avatar_
  379. FROM class_group_student_mapper cgsm
  380. LEFT JOIN sys_user su on cgsm.user_id_ = su.id_
  381. WHERE cgsm.class_group_id_ = #{classGroupId}
  382. </select>
  383. <select id="getOnlineCourseReviewList" resultMap="CourseReviewDto">
  384. SELECT cs.id_,cs.group_type_,cs.class_date_,cs.name_ course_name_,csr.id_ review_id_,
  385. csr.hand_homework_,csr.course_review_,csr.teaching_material_,csr.pronunciation_,csr.tempo_,
  386. csr.music_theory_,csr.song_,csr.memo_,csr.create_time_,csr.has_liaison_,csr.update_time_,
  387. sa.id_ attendance_id_
  388. FROM course_schedule cs
  389. LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
  390. LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
  391. LEFT JOIN (
  392. SELECT course_schedule_id_,id_ FROM student_attendance LIMIT 1
  393. ) sa ON sa.course_schedule_id_ = cs.id_
  394. <include refid="courseReviewsQueryCondition"/>
  395. ORDER BY cs.class_date_ DESC
  396. <include refid="global.limit"/>
  397. </select>
  398. <select id="countOnlineCourseReviews" resultType="java.lang.Integer">
  399. SELECT count(*) FROM course_schedule cs
  400. LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
  401. LEFT JOIN(
  402. SELECT course_schedule_id_,id_ FROM student_attendance LIMIT 1
  403. ) sa ON sa.course_schedule_id_ = cs.id_
  404. <include refid="courseReviewsQueryCondition"/>
  405. </select>
  406. <sql id="courseReviewsQueryCondition">
  407. <where>
  408. AND cs.type_ IN ('PRACTICE','VIP') AND cs.teach_mode_='ONLINE' AND cs.status_='OVER' AND (cs.del_flag_ = 0
  409. OR cs.del_flag_ IS NULL) and cs.tenant_id_ = #{tenantId}
  410. <if test="search!=null and search!=''">
  411. AND (cs.name_ LIKE CONCAT('%',#{search},'%') OR cs.id_= #{search})
  412. </if>
  413. <if test="organId != null">
  414. AND FIND_IN_SET(cs.organ_id_,#{organId})
  415. </if>
  416. <if test="type != null">
  417. AND cs.type_=#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  418. </if>
  419. <if test="teacherId != null">
  420. AND cs.actual_teacher_id_=#{teacherId}
  421. </if>
  422. <if test="assignHomework != null and assignHomework == 1">
  423. AND sch.id_>0
  424. </if>
  425. <if test="assignHomework != null and assignHomework ==0">
  426. AND sch.id_ IS NULL
  427. </if>
  428. <if test='hasReview !=null and hasReview=="1"'>
  429. AND csr.id_ > 0
  430. </if>
  431. <if test='hasReview !=null and hasReview=="0"'>
  432. AND csr.id_ IS NULL
  433. </if>
  434. <if test='hasHandHomework !=null and hasHandHomework=="1"'>
  435. AND csr.hand_homework_ = 1
  436. </if>
  437. <if test='hasHandHomework !=null and hasHandHomework=="0"'>
  438. AND csr.hand_homework_ IS NULL
  439. </if>
  440. <if test='hasLiaison !=null and hasLiaison=="1"'>
  441. AND csr.has_liaison_ = 1
  442. </if>
  443. <if test='hasLiaison !=null and hasLiaison=="0"'>
  444. AND (csr.has_liaison_ = 0 OR csr.has_liaison_ IS NULL)
  445. </if>
  446. <if test="courseReview != null">
  447. AND csr.course_review_=#{courseReview}
  448. </if>
  449. <if test="startTime !=null">
  450. <![CDATA[AND cs.class_date_ >= #{startTime} ]]>
  451. </if>
  452. <if test="endTime !=null">
  453. <![CDATA[AND cs.class_date_ <= #{endTime} ]]>
  454. </if>
  455. <if test='hasArrived !=null and hasArrived=="1"'>
  456. AND sa.id_ > 0
  457. </if>
  458. <if test='hasArrived !=null and hasArrived=="0"'>
  459. AND sa.id_ IS NULL
  460. </if>
  461. </where>
  462. </sql>
  463. <select id="getVipCourseReviewList" resultMap="CourseReviewDto">
  464. SELECT cs.id_,cs.actual_teacher_id_ teacher_id ,cs.class_date_, (SELECT group_concat(name_) FROM subject sb
  465. WHERE FIND_IN_SET(id_,cg.subject_id_list_)) AS
  466. subject_name_ ,vg.organ_id_,cs.name_
  467. course_name_,su.real_name_ teacher_name_,edsu.real_name_
  468. edu_teacher_name_,csr.id_
  469. review_id_,csr.hand_homework_,csr.course_review_,csr.teaching_material_,csr.pronunciation_,csr.tempo_,
  470. csr.music_theory_,csr.song_,csr.memo_,csr.create_time_,csr.has_liaison_,csr.update_time_,
  471. CASE WHEN ch.id_ IS NULL THEN 0 ELSE 1 END assign_homework_
  472. FROM course_schedule cs
  473. LEFT JOIN vip_group vg ON cs.music_group_id_ = vg.id_ AND cs.group_type_='VIP'
  474. LEFT JOIN class_group cg ON cg.music_group_id_=vg.id_ AND cg.group_type_ = 'VIP'
  475. LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
  476. LEFT JOIN sys_user edsu ON vg.educational_teacher_id_ = edsu.id_
  477. LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
  478. LEFT JOIN course_homework ch on ch.course_schedule_id_ = cs.id_
  479. <include refid="vipGroupReviewsQueryCondition"/>
  480. ORDER BY cs.class_date_ DESC
  481. <include refid="global.limit"/>
  482. </select>
  483. <select id="countVipCourseReviews" resultType="java.lang.Integer">
  484. SELECT count(*) FROM course_schedule cs
  485. LEFT JOIN vip_group vg ON cs.music_group_id_ = vg.id_ AND cs.group_type_='VIP'
  486. LEFT JOIN class_group cg ON cg.music_group_id_=vg.id_ AND cg.group_type_ = 'VIP'
  487. LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
  488. LEFT JOIN course_homework ch on ch.course_schedule_id_ = cs.id_
  489. <include refid="vipGroupReviewsQueryCondition"/>
  490. </select>
  491. <sql id="vipGroupReviewsQueryCondition">
  492. <where>
  493. AND vg.id_ > 0 AND cs.group_type_='VIP' AND cs.status_='OVER' AND (cs.del_flag_ = 0 OR cs.del_flag_ IS NULL) and cs.tenant_id_ = #{tenantId}
  494. <if test="search!=null and search!=''">
  495. AND (cs.name_ LIKE CONCAT('%',#{search},'%') OR cs.id_= #{search})
  496. </if>
  497. <if test="organId != null">
  498. AND FIND_IN_SET(vg.organ_id_,#{organId})
  499. </if>
  500. <if test="teacherId != null">
  501. AND cs.actual_teacher_id_=#{teacherId}
  502. </if>
  503. <if test="eduTeacherId != null">
  504. AND vg.educational_teacher_id_=#{eduTeacherId}
  505. </if>
  506. <if test='hasReview !=null and hasReview=="1"'>
  507. AND csr.id_ > 0
  508. </if>
  509. <if test='hasReview !=null and hasReview=="0"'>
  510. AND csr.id_ IS NULL
  511. </if>
  512. <if test='hasHandHomework !=null and hasHandHomework=="1"'>
  513. AND csr.hand_homework_ = 1
  514. </if>
  515. <if test='hasHandHomework !=null and hasHandHomework=="0"'>
  516. AND csr.hand_homework_ IS NULL
  517. </if>
  518. <if test="assignHomework != null and assignHomework == 1">
  519. AND ch.id_>0
  520. </if>
  521. <if test="assignHomework != null and assignHomework ==0">
  522. AND ch.id_ IS NULL
  523. </if>
  524. <if test='hasLiaison !=null and hasLiaison=="1"'>
  525. AND csr.has_liaison_ = 1
  526. </if>
  527. <if test='hasLiaison !=null and hasLiaison=="0"'>
  528. AND (csr.has_liaison_ = 0 OR csr.has_liaison_ IS NULL)
  529. </if>
  530. <if test="courseReview != null">
  531. AND csr.course_review_=#{courseReview}
  532. </if>
  533. <if test="startTime !=null">
  534. <![CDATA[AND cs.class_date_ >= #{startTime} ]]>
  535. </if>
  536. <if test="endTime !=null">
  537. <![CDATA[AND cs.class_date_ <= #{endTime} ]]>
  538. </if>
  539. </where>
  540. </sql>
  541. </mapper>