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'
  170. <if test="search!=null and search!=''">
  171. AND (cs.name_ LIKE CONCAT('%',#{search},'%') OR cs.id_= #{search})
  172. </if>
  173. <if test="organId != null">
  174. AND FIND_IN_SET(pg.organ_id_,#{organId})
  175. </if>
  176. <if test="subjectId != null">
  177. AND pg.subject_id_=#{subjectId}
  178. </if>
  179. <if test="tenantId != null">
  180. AND pg.tenant_id_=#{tenantId}
  181. </if>
  182. <if test="teacherId != null">
  183. AND cs.actual_teacher_id_=#{teacherId}
  184. </if>
  185. <if test="eduTeacherId != null">
  186. AND pg.educational_teacher_id_=#{eduTeacherId}
  187. </if>
  188. <if test='isFree !=null and isFree=="0"'>
  189. AND pg.buy_months_ > 0
  190. </if>
  191. <if test='isFree !=null and isFree=="1"'>
  192. AND pg.type_='FREE'
  193. </if>
  194. <if test="practiceGroupType != null">
  195. AND pg.type_=#{practiceGroupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  196. </if>
  197. <if test="studentReview !=null">
  198. AND csc.score_ =#{studentReview}
  199. </if>
  200. <if test="assignHomework != null and assignHomework == 1">
  201. AND sch.id_>0
  202. </if>
  203. <if test="assignHomework != null and assignHomework ==0">
  204. AND sch.id_ IS NULL
  205. </if>
  206. <if test='hasReview !=null and hasReview=="1"'>
  207. AND csr.id_ > 0
  208. </if>
  209. <if test='hasReview !=null and hasReview=="0"'>
  210. AND csr.id_ IS NULL
  211. </if>
  212. <if test='hasHandHomework !=null and hasHandHomework=="1"'>
  213. AND csr.hand_homework_ = 1
  214. </if>
  215. <if test='hasHandHomework !=null and hasHandHomework=="0"'>
  216. AND csr.hand_homework_ IS NULL
  217. </if>
  218. <if test='hasLiaison !=null and hasLiaison=="1"'>
  219. AND csr.has_liaison_ = 1
  220. </if>
  221. <if test='hasLiaison !=null and hasLiaison=="0"'>
  222. AND (csr.has_liaison_ = 0 OR csr.has_liaison_ IS NULL)
  223. </if>
  224. <if test="courseReview != null">
  225. AND csr.course_review_=#{courseReview}
  226. </if>
  227. <if test="startTime !=null">
  228. <![CDATA[AND cs.class_date_ >= #{startTime} ]]>
  229. </if>
  230. <if test="endTime !=null">
  231. <![CDATA[AND cs.class_date_ <= #{endTime} ]]>
  232. </if>
  233. <if test='hasArrived !=null and hasArrived=="1"'>
  234. AND sa.id_ > 0
  235. </if>
  236. <if test='hasArrived !=null and hasArrived=="0"'>
  237. AND sa.id_ IS NULL
  238. </if>
  239. <if test='homeWorkReplied !=null and homeWorkReplied =="1"'>
  240. AND sch.is_replied_ > 0
  241. </if>
  242. <if test='homeWorkReplied !=null and homeWorkReplied =="0"'>
  243. AND (sch.is_replied_ = 0 OR sch.is_replied_ IS NULL)
  244. </if>
  245. </where>
  246. </sql>
  247. <select id="getPracticeGroupReviewList" resultMap="CourseReviewDto">
  248. SELECT cs.id_,cs.actual_teacher_id_ teacher_id ,cs.class_date_, pg.subject_id_,pg.organ_id_,pg.name_
  249. course_name_,su.real_name_
  250. teacher_name_,edsu.real_name_
  251. edu_teacher_name_,pg.buy_months_,csr.id_ review_id_, csc.score_ student_review_,
  252. csr.hand_homework_,csr.course_review_,pg.student_id_,csr.teaching_material_,csr.pronunciation_,csr.tempo_,
  253. csr.music_theory_,csr.song_,csr.memo_,csr.create_time_,csr.has_liaison_,csr.update_time_,sa.id_
  254. attendance_id_,sch.is_replied_ home_work_replied_,
  255. CASE WHEN sch.id_ IS NULL THEN 0 ELSE 1 END assign_homework_,
  256. pg.type_ practice_group_type_
  257. FROM course_schedule cs
  258. LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_ AND cs.group_type_='PRACTICE'
  259. LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
  260. LEFT JOIN sys_user edsu ON pg.educational_teacher_id_ = edsu.id_
  261. LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
  262. LEFT JOIN course_schedule_complaints csc on csc.course_schedule_id_ = cs.id_
  263. LEFT JOIN student_attendance sa on sa.course_schedule_id_ = cs.id_
  264. LEFT JOIN student_course_homework sch on cs.id_ = sch.course_schedule_id_
  265. <include refid="practiceGroupReviewsQueryCondition"/>
  266. ORDER BY cs.class_date_ DESC
  267. <include refid="global.limit"/>
  268. </select>
  269. <select id="countPracticeGroupReviews" resultType="java.lang.Integer">
  270. SELECT count(*) FROM course_schedule cs
  271. LEFT JOIN practice_group pg ON cs.music_group_id_ = pg.id_ AND cs.group_type_='PRACTICE'
  272. LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
  273. LEFT JOIN course_schedule_complaints csc on csc.course_schedule_id_ = cs.id_
  274. LEFT JOIN student_attendance sa on sa.course_schedule_id_ = cs.id_
  275. LEFT JOIN student_course_homework sch on cs.id_ = sch.course_schedule_id_
  276. <include refid="practiceGroupReviewsQueryCondition"/>
  277. </select>
  278. <sql id="practiceGroupReviews4EduQueryCondition">
  279. <where>
  280. <if test="type != null">
  281. AND cs.type_=#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
  282. </if>
  283. <if test="eduTeacherId != null">
  284. AND csr.educational_teacher_id_=#{eduTeacherId}
  285. </if>
  286. <if test="tenantId != null">
  287. AND csr.tenant_id_=#{tenantId}
  288. </if>
  289. <if test='hasReview !=null and hasReview=="1"'>
  290. AND csr.course_review_ IS NOT NULL
  291. </if>
  292. <if test='hasReview !=null and hasReview=="0"'>
  293. AND csr.course_review_ IS NULL
  294. </if>
  295. <if test='hasHandHomework !=null and hasHandHomework=="1"'>
  296. AND csr.hand_homework_ = 1
  297. </if>
  298. <if test='hasHandHomework !=null and hasHandHomework=="0"'>
  299. AND csr.hand_homework_ IS NULL
  300. </if>
  301. <if test='hasLiaison !=null and hasLiaison=="1"'>
  302. AND csr.has_liaison_ = 1
  303. </if>
  304. <if test='hasLiaison !=null and hasLiaison=="0"'>
  305. AND csr.has_liaison_ = 0
  306. </if>
  307. <if test="startTime !=null">
  308. <![CDATA[AND cs.class_date_ >= #{startTime} ]]>
  309. </if>
  310. <if test="endTime !=null">
  311. <![CDATA[AND cs.class_date_ <= #{endTime} ]]>
  312. </if>
  313. </where>
  314. </sql>
  315. <select id="getPracticeGroupReview4EduList" resultMap="CourseScheduleReview">
  316. SELECT csr.id_,cs.class_date_, cs.name_ course_name_,su.real_name_ teacher_name_,csr.hand_homework_
  317. FROM course_schedule_review csr
  318. LEFT JOIN course_schedule cs on cs.id_ = csr.course_schedule_id_
  319. LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
  320. <include refid="practiceGroupReviews4EduQueryCondition"/>
  321. ORDER BY cs.class_date_ DESC
  322. <include refid="global.limit"/>
  323. </select>
  324. <select id="countPracticeGroupReviews4Edu" resultType="java.lang.Integer">
  325. SELECT count(*) FROM course_schedule_review csr
  326. LEFT JOIN course_schedule cs on cs.id_ = csr.course_schedule_id_
  327. <include refid="practiceGroupReviews4EduQueryCondition"/>
  328. </select>
  329. <select id="findByCourseScheduleAndStudent" resultMap="CourseScheduleReview">
  330. SELECT *
  331. FROM course_schedule_review
  332. WHERE course_schedule_id_ = #{courseScheduleId}
  333. <if test="studentId != null">
  334. AND student_id_ = #{studentId}
  335. </if>
  336. </select>
  337. <select id="findByCourseSchedules" resultMap="CourseScheduleReview">
  338. SELECT * FROM course_schedule_review WHERE course_schedule_id_ IN
  339. <foreach collection="courseScheduleIds" item="courseScheduleId" separator="," open="(" close=")">
  340. #{courseScheduleId}
  341. </foreach>
  342. </select>
  343. <select id="findByCourseSchedulesAndStudentId" resultMap="CourseScheduleReview">
  344. SELECT * FROM course_schedule_review WHERE course_schedule_id_ IN
  345. <foreach collection="courseScheduleIds" item="courseScheduleId" separator="," open="(" close=")">
  346. #{courseScheduleId}
  347. </foreach>
  348. AND student_id_ = #{studentId}
  349. </select>
  350. <select id="findByClassGroupId" resultMap="CourseReviewDto">
  351. SELECT id_,
  352. class_date_,
  353. name_ course_name_,
  354. class_date_ class_date_Str_,
  355. start_class_time_ start_class_time_Str_,
  356. end_class_time_ end_class_time_Str_
  357. FROM course_schedule
  358. WHERE class_group_id_ = #{classGroupId}
  359. AND status_ = 'OVER'
  360. ORDER BY class_date_ DESC, start_class_time_ DESC
  361. </select>
  362. <select id="findByCourseScheduleId" resultMap="CourseScheduleReview">
  363. SELECT csr.teacher_id_,
  364. t.real_name_ teacher_name_,
  365. t.avatar_ teacher_avatar_,
  366. csr.student_id_,
  367. stu.username_ student_name_,
  368. stu.avatar_ student_avatar_,
  369. csr.teaching_material_,
  370. csr.memo_
  371. FROM course_schedule_review csr
  372. LEFT JOIN sys_user t on csr.teacher_id_ = t.id_
  373. LEFT JOIN sys_user stu on csr.student_id_ = stu.id_
  374. WHERE csr.course_schedule_id_ = #{courseScheduleId}
  375. </select>
  376. <select id="findStudentByClassGroupId" resultMap="com.ym.mec.biz.dal.dao.TeacherDao.SysUser">
  377. SELECT su.id_, su.username_, su.avatar_
  378. FROM class_group_student_mapper cgsm
  379. LEFT JOIN sys_user su on cgsm.user_id_ = su.id_
  380. WHERE cgsm.class_group_id_ = #{classGroupId}
  381. </select>
  382. <select id="getOnlineCourseReviewList" resultMap="CourseReviewDto">
  383. SELECT cs.id_,cs.group_type_,cs.class_date_,cs.name_ course_name_,csr.id_ review_id_,
  384. csr.hand_homework_,csr.course_review_,csr.teaching_material_,csr.pronunciation_,csr.tempo_,
  385. csr.music_theory_,csr.song_,csr.memo_,csr.create_time_,csr.has_liaison_,csr.update_time_,
  386. sa.id_ attendance_id_
  387. FROM course_schedule cs
  388. LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
  389. LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
  390. LEFT JOIN (
  391. SELECT course_schedule_id_,id_ FROM student_attendance LIMIT 1
  392. ) sa ON sa.course_schedule_id_ = cs.id_
  393. <include refid="courseReviewsQueryCondition"/>
  394. ORDER BY cs.class_date_ DESC
  395. <include refid="global.limit"/>
  396. </select>
  397. <select id="countOnlineCourseReviews" resultType="java.lang.Integer">
  398. SELECT count(*) FROM course_schedule cs
  399. LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
  400. LEFT JOIN(
  401. SELECT course_schedule_id_,id_ FROM student_attendance LIMIT 1
  402. ) sa ON sa.course_schedule_id_ = cs.id_
  403. <include refid="courseReviewsQueryCondition"/>
  404. </select>
  405. <sql id="courseReviewsQueryCondition">
  406. <where>
  407. AND cs.type_ IN ('PRACTICE','VIP') AND cs.teach_mode_='ONLINE'
  408. AND cs.status_='OVER' AND cs.del_flag_ = '0'
  409. 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' 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>