CourseGroupMapper.xml 48 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025
  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.yonge.cooleshow.biz.dal.dao.CourseGroupDao">
  4. <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.CourseGroup">
  5. <id column="id_" jdbcType="BIGINT" property="id"/>
  6. <result column="type_" jdbcType="VARCHAR" property="type"/>
  7. <result column="teacher_id_" jdbcType="INTEGER" property="teacherId"/>
  8. <result column="name_" jdbcType="VARCHAR" property="name"/>
  9. <result column="subject_id_" jdbcType="INTEGER" property="subjectId"/>
  10. <result column="single_course_minutes_" jdbcType="INTEGER" property="singleCourseMinutes"/>
  11. <result column="course_num_" jdbcType="INTEGER" property="courseNum"/>
  12. <result column="complete_course_num_" jdbcType="INTEGER" property="completeCourseNum"/>
  13. <result column="course_introduce_" jdbcType="VARCHAR" property="courseIntroduce"/>
  14. <result column="course_price_" jdbcType="VARCHAR" property="coursePrice"/>
  15. <result column="status_" jdbcType="VARCHAR" property="status"/>
  16. <result column="sales_start_date_" jdbcType="TIMESTAMP" property="salesStartDate"/>
  17. <result column="sales_end_date_" jdbcType="TIMESTAMP" property="salesEndDate"/>
  18. <result column="background_pic_" jdbcType="VARCHAR" property="backgroundPic"/>
  19. <result column="mix_student_num_" jdbcType="INTEGER" property="mixStudentNum"/>
  20. <result column="course_start_time_" jdbcType="TIMESTAMP" property="courseStartTime"/>
  21. <result column="created_by_" jdbcType="INTEGER" property="createdBy"/>
  22. <result column="created_time_" jdbcType="TIMESTAMP" property="createdTime"/>
  23. <result column="updated_by_" jdbcType="INTEGER" property="updatedBy"/>
  24. <result column="updated_time_" jdbcType="TIMESTAMP" property="updatedTime"/>
  25. <result column="pre_student_num_" jdbcType="INTEGER" property="preStudentNum"/>
  26. <result column="im_group_id_" jdbcType="VARCHAR" property="imGroupId"/>
  27. <result column="reason_" jdbcType="VARCHAR" property="reason"/>
  28. </resultMap>
  29. <sql id="Base_Column_List">
  30. id_
  31. , type_, teacher_id_, name_, subject_id_, single_course_minutes_, course_num_, complete_course_num_, course_introduce_, course_price_, status_, sales_start_date_, sales_end_date_, background_pic_, mix_student_num_,pre_student_num_, im_group_id_, course_start_time_, created_by_, created_time_, updated_by_, updated_time_,reason_
  32. </sql>
  33. <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
  34. parameterType="com.yonge.cooleshow.biz.dal.entity.CourseGroup">
  35. insert into course_group(type_, teacher_id_, name_, subject_id_, single_course_minutes_, course_num_,
  36. complete_course_num_, course_introduce_, course_price_, status_, sales_start_date_, sales_end_date_, background_pic_,
  37. mix_student_num_,pre_student_num_,im_group_id_, course_start_time_, created_by_, created_time_, updated_by_, updated_time_,reason_)
  38. values
  39. <foreach collection="entities" item="entity" separator=",">
  40. (#{entity.type}, #{entity.teacherId}, #{entity.name}, #{entity.subjectId}, #{entity.singleCourseMinutes},
  41. #{entity.courseNum}, #{entity.completeCourseNum}, #{entity.courseIntroduce}, #{entity.coursePrice}, #{entity.status},
  42. #{entity.salesStartDate}, #{entity.salesEndDate}, #{entity.backgroundPic}, #{entity.mixStudentNum},
  43. #{entity.preStudentNum},#{entity.imGroupId},#{entity.courseStartTime}, #{entity.createdBy}, #{entity.createdTime}, #{entity.updatedBy},
  44. #{entity.updatedTime},#{entity.reason})
  45. </foreach>
  46. </insert>
  47. <select id="queryTeacherCourseGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupVo">
  48. select distinct
  49. b.id_ as courseGroupId,
  50. b.name_ as courseGroupName,
  51. s.name_ as subjectName,
  52. b.teacher_id_ as teacherId,
  53. u.username_ as teacherName,
  54. b.course_start_time_ as courseStartTime,
  55. b.single_course_minutes_ as singleCourseMinutes,
  56. b.status_ as `status`,
  57. ifnull(b.pre_student_num_, 0) as studentCount,
  58. b.background_pic_ as backgroundPic,
  59. b.course_price_ as coursePrice,
  60. b.course_num_ as courseNum,
  61. u.avatar_ as avatar,
  62. b.sales_start_date_ as salesStartDate,
  63. b.sales_end_date_ as salesEndDate,
  64. b.mix_student_num_ as mixStudentNum,
  65. b.im_group_id_ as imGroupId,
  66. b.reason_ as reason,
  67. 0 as existBuy
  68. from course_group as b
  69. left join subject as s on b.subject_id_ = s.id_
  70. left join sys_user as u on b.teacher_id_ = u.id_
  71. <where>
  72. u.del_flag_ = 0
  73. <if test="param.teacherId != null">
  74. and b.teacher_id_ = #{param.teacherId}
  75. </if>
  76. <if test="param.groupStatus != null">
  77. and b.status_ = #{param.groupStatus}
  78. </if>
  79. <if test="param.subjectId != null">
  80. AND b.subject_id_ = #{param.subjectId}
  81. </if>
  82. <if test="param.search != null and param.search !=''">
  83. and (
  84. u.real_name_ like concat('%',#{param.search},'%')
  85. or b.name_ like concat('%',#{param.search},'%')
  86. )
  87. </if>
  88. <if test="param.type != null and param.type != ''">
  89. and b.type_ = #{param.type}
  90. </if>
  91. </where>
  92. order by b.created_time_
  93. </select>
  94. <select id="queryStudentCourseGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupVo">
  95. select distinct b.id_ as courseGroupId,
  96. b.name_ as courseGroupName,
  97. s.name_ as subjectName,
  98. b.teacher_id_ as teacherId,
  99. u.username_ as teacherName,
  100. b.course_start_time_ as courseStartTime,
  101. b.single_course_minutes_ as singleCourseMinutes,
  102. b.status_ as `status`,
  103. ifnull(b.pre_student_num_, 0) as studentCount,
  104. b.background_pic_ as backgroundPic,
  105. b.course_price_ as coursePrice,
  106. b.course_num_ as courseNum,
  107. u.avatar_ as avatar,
  108. b.sales_start_date_ as salesStartDate,
  109. b.sales_end_date_ as salesEndDate,
  110. b.mix_student_num_ as mixStudentNum,
  111. b.im_group_id_ as imGroupId,
  112. b.reason_ as reason,
  113. if(y.status_ = 'PAID', 1, 0) as existBuy
  114. from course_group as b
  115. left join subject as s on b.subject_id_ = s.id_
  116. left join sys_user as u on b.teacher_id_ = u.id_
  117. left join
  118. (select x.user_id_, x.course_group_id_, o.status_
  119. from course_schedule_student_payment as x
  120. left join user_order as o on x.order_no_ = o.order_no_ and x.user_id_ = o.user_id_
  121. left join user_order_detail as d on d.order_no_ = x.order_no_
  122. where x.user_id_ = #{param.studentId}) as y on b.id_ = y.course_group_id_
  123. <where>
  124. u.del_flag_ = 0
  125. <if test="param.teacherId != null">
  126. and b.teacher_id_ = #{param.teacherId}
  127. </if>
  128. <if test="param.groupStatus != null">
  129. and b.status_ = #{param.groupStatus}
  130. </if>
  131. <if test="param.subjectId != null">
  132. AND b.subject_id_ = #{param.subjectId}
  133. </if>
  134. <if test="param.search != null and param.search !=''">
  135. and (
  136. u.real_name_ like concat('%',#{param.search},'%')
  137. or b.name_ like concat('%',#{param.search},'%')
  138. )
  139. </if>
  140. <if test="param.auditVersion != null ">
  141. and #{param.auditVersion} = b.audit_version_
  142. </if>
  143. <if test="param.subjectId != null ">
  144. and #{param.subjectId} = b.subject_id_
  145. </if>
  146. </where>
  147. </select>
  148. <select id="selectAdminLivePage" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupVo">
  149. select distinct
  150. cg.id_ as courseGroupId,
  151. cg.reason_ as reason,
  152. cg.name_ as name,
  153. cg.complete_course_num_ as endCourseNum,
  154. if(cg.complete_course_num_ = 0 ,cg.course_num_,cg.course_num_ - cg.complete_course_num_) as noStartCourseNum,
  155. cg.course_price_ as coursePrice,
  156. cg.pre_student_num_ as preStudentNum,
  157. cg.status_ as status,
  158. cg.course_num_ as courseNum,
  159. cg.created_time_ as createTime,
  160. cg.course_introduce_ as courseIntroduce,
  161. <if test="param.studentId != null">
  162. cssp.order_no_ as orderNo,
  163. </if>
  164. cg.im_group_id_ as imGroupId
  165. from course_group cg
  166. left join course_schedule_student_payment cssp on cg.id_ = cssp.course_group_id_
  167. left join sys_user su on su.id_ = cssp.user_id_
  168. <where>
  169. <if test="param.teacherId != null">
  170. and #{param.teacherId} = cg.teacher_id_
  171. </if>
  172. <if test="param.studentId != null">
  173. and #{param.studentId} = cssp.user_id_
  174. </if>
  175. <if test="param.search != null and param.search !=''">
  176. and (
  177. cg.id_ like concat('%',#{param.search},'%')
  178. or cg.name_ like concat('%',#{param.search},'%')
  179. or su.id_ like concat('%',#{param.search},'%')
  180. or su.username_ like concat('%',#{param.search},'%')
  181. or su.phone_ like concat('%',#{param.search},'%')
  182. )
  183. </if>
  184. <if test="param.orderNo != null and param.orderNo != ''">
  185. and cssp.order_no_ like concat('%',#{param.orderNo},'%')
  186. </if>
  187. <if test="param.subjectId != null">
  188. and #{param.subjectId} = cg.subject_id_
  189. </if>
  190. <if test="param.status != null">
  191. and #{param.status} = cg.status_
  192. </if>
  193. <if test="param.startTime != null">
  194. and #{param.startTime} &lt;= cg.created_time_
  195. </if>
  196. <if test="param.endTime != null">
  197. and #{param.endTime} &gt;= cg.created_time_
  198. </if>
  199. <if test="param.courseType != null">
  200. and #{param.courseType} = cg.type_
  201. </if>
  202. </where>
  203. order by cg.id_ desc
  204. </select>
  205. <select id="selectCourseGroupSubject" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupVo">
  206. select
  207. cg.id_ as courseGroupId,
  208. s.name_ as subjectName
  209. from course_group cg
  210. left join subject s on cg.subject_id_ = s.id_
  211. <where>
  212. <if test="courseGroupIdList != null and courseGroupIdList.size() != 0">
  213. and cg.id_ in
  214. <foreach collection="courseGroupIdList" item="item" open="(" close=")" separator=",">
  215. #{item}
  216. </foreach>
  217. </if>
  218. </where>
  219. </select>
  220. <select id="selectAdminLiveStudentPage" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupStudentVo">
  221. select
  222. a.id_ as paymentId,
  223. su.id_ as studentId,
  224. su.username_ as studentName,
  225. a.actual_price_ as price,
  226. a.order_no_ as orderNo,
  227. su.phone_ as phone,
  228. a.create_time_ as payTime
  229. from user_order_detail as a
  230. left join user_order as o on a.order_no_ = o.order_no_
  231. left join sys_user as su on o.user_id_ = su.id_
  232. <where>
  233. a.good_type_ = 'LIVE' and o.status_ = 'PAID'
  234. <if test="param.courseGroupId != null">
  235. and #{param.courseGroupId} = a.biz_id_
  236. </if>
  237. <if test="param.search != null and param.search != ''">
  238. and (
  239. a.biz_id_ like concat('%',#{param.search},'%')
  240. or su.id_ like concat('%',#{param.search},'%')
  241. or su.username_ like concat('%',#{param.search},'%')
  242. or su.phone_ like concat('%',#{param.search},'%')
  243. )
  244. </if>
  245. <if test="param.orderNo != null and param.orderNo != ''">
  246. and a.order_no_ like concat('%',#{param.orderNo},'%')
  247. </if>
  248. <if test="param.startTime != null">
  249. and #{param.startTime} &lt;= a.create_time_
  250. </if>
  251. <if test="param.endTime != null">
  252. and #{param.endTime} &gt;= a.create_time_
  253. </if>
  254. </where>
  255. group by o.user_id_
  256. order by a.id_ desc
  257. </select>
  258. <select id="selectAdminLivePlan" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupPlanVo">
  259. select
  260. cs.id_ as courseId,
  261. cs.class_num_ as classNum,
  262. cs.class_date_ as classDate,
  263. cs.start_time_ as startTime,
  264. cs.end_time_ as endTime,
  265. cs.status_ as courseStatus,
  266. cp.plan_ as planInfo,
  267. lrv.url_ as videoUrl
  268. from course_schedule cs
  269. left join live_room_video lrv on cs.id_ = lrv.course_id_
  270. left join course_plan cp on cp.course_group_id_ = cs.course_group_id_ and cp.class_num_ = cs.class_num_
  271. <where>
  272. <if test="courseGroupId != null">
  273. and #{courseGroupId} = cs.course_group_id_
  274. </if>
  275. </where>
  276. order by cs.class_num_
  277. </select>
  278. <select id="selectAdminLiveCourseGroup" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupVo">
  279. select distinct
  280. cg.id_ as courseGroupId,
  281. cg.name_ as name,
  282. cg.complete_course_num_ as endCourseNum,
  283. if(cg.complete_course_num_ = 0 ,cg.course_num_,cg.course_num_ - cg.complete_course_num_) as noStartCourseNum,
  284. cg.course_price_ as coursePrice,
  285. cg.pre_student_num_ as preStudentNum,
  286. cg.status_ as status,
  287. cg.course_num_ as courseNum,
  288. cg.created_time_ as createTime,
  289. cg.course_introduce_ as courseIntroduce,
  290. cg.type_ as type,
  291. s.name_ as subjectName
  292. from course_group cg
  293. left join course_schedule_student_payment cssp on cg.id_ = cssp.course_group_id_
  294. left join subject s on cg.subject_id_ = s.id_
  295. <where>
  296. <if test="courseGroupId != null">
  297. and #{courseGroupId} = cg.id_
  298. </if>
  299. </where>
  300. </select>
  301. <select id="selectAdminLiveStudentCoursePage"
  302. resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupStudentCourseVo">
  303. select distinct
  304. cs.id_ as courseId,
  305. cs.class_date_ as classDate,
  306. cs.start_time_ as startTime,
  307. cs.end_time_ as endTime,
  308. cs.status_ as courseStatue,
  309. cssp.order_no_ as orderNo,
  310. sa.id_ as studentAttendanceId
  311. from course_schedule cs
  312. left join course_schedule_student_payment cssp on cs.id_ = cssp.course_id_
  313. left join student_attendance sa on cssp.course_id_ = sa.course_schedule_id_
  314. <where>
  315. cs.status_ != '${@ com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum@CANCEL}'
  316. <if test="param.studentId != null">
  317. and cssp.user_id_ = #{param.studentId}
  318. </if>
  319. <if test="param.status != null">
  320. <choose>
  321. <when test="param.status == @com.yonge.cooleshow.biz.dal.enums.StudentCourseEnum@TRUANT">
  322. and sa.id_ is null
  323. </when>
  324. <when test="param.status == @com.yonge.cooleshow.biz.dal.enums.StudentCourseEnum@ATTENDCLASS">
  325. and sa.id_ is not null
  326. and #{param.studentId} = sa.student_id_
  327. </when>
  328. <when test="param.status == @com.yonge.cooleshow.biz.dal.enums.StudentCourseEnum@NOTSTART">
  329. and cs.status_ = '${@ com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum@NOT_START}'
  330. </when>
  331. </choose>
  332. </if>
  333. <if test="param.courseGroupId != null">
  334. and #{param.courseGroupId} = cs.course_group_id_
  335. </if>
  336. <if test="param.courseId != null">
  337. and cs.id_ like concat('%',#{param.courseId},'%')
  338. </if>
  339. </where>
  340. order by cs.id_ desc
  341. </select>
  342. <select id="selectPracticeGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPracticeVo">
  343. SELECT
  344. cg.id_ AS groupId,
  345. cg.name_ AS groupName,
  346. cg.subject_id_ AS subjectId,
  347. sub.name_ AS subjectName,
  348. cg.course_num_ AS courseNum,
  349. IFNULL(cs.count_ ,0)AS completeCount,
  350. cg.teacher_id_ AS teacherId,
  351. tu.username_ AS teacherName,
  352. tu.real_name_ AS teacherRealName,
  353. sp.user_id_ AS studentId,
  354. su.username_ AS studentName,
  355. su.real_name_ AS studentRealName,
  356. cg.status_ AS `status`,
  357. cst.start_time_ AS startTime
  358. FROM course_group cg
  359. LEFT JOIN `subject` sub ON cg.subject_id_=sub.id_
  360. LEFT JOIN sys_user tu ON cg.teacher_id_=tu.id_
  361. LEFT JOIN (SELECT user_id_,course_group_id_ FROM course_schedule_student_payment WHERE course_type_='PRACTICE' GROUP BY course_group_id_) sp ON cg.id_=sp.course_group_id_
  362. LEFT JOIN sys_user su ON sp.user_id_=su.id_
  363. LEFT JOIN (SELECT course_group_id_,COUNT(1) AS count_ FROM course_schedule WHERE type_='PRACTICE' AND status_='COMPLETE' GROUP BY course_group_id_) cs ON cg.id_=cs.course_group_id_
  364. LEFT JOIN (SELECT course_group_id_,start_time_ FROM course_schedule WHERE type_='PRACTICE' GROUP BY course_group_id_) cst ON cg.id_=cst.course_group_id_
  365. WHERE cg.type_='PRACTICE' AND cg.status_ IN('ING','COMPLETE')
  366. <if test="param.search != null and param.search != ''">
  367. AND (
  368. cg.id_ LIKE concat('%',#{param.search},'%') OR
  369. cg.teacher_id_ LIKE concat('%',#{param.search},'%') OR
  370. sp.user_id_ LIKE concat('%',#{param.search},'%') OR
  371. cg.name_ LIKE concat('%',#{param.search},'%') OR
  372. tu.username_ LIKE concat('%',#{param.search},'%') OR
  373. su.username_ LIKE concat('%',#{param.search},'%')
  374. )
  375. </if>
  376. <if test="param.subjectId != null">
  377. AND cg.subject_id_ = #{param.subjectId}
  378. </if>
  379. <if test="param.status != null and param.status != ''">
  380. AND cg.status_ = #{param.status}
  381. </if>
  382. <if test="param.studentId != null">
  383. AND sp.user_id_ = #{param.studentId}
  384. </if>
  385. <if test="param.teacherId != null">
  386. AND cg.teacher_id_ = #{param.teacherId}
  387. </if>
  388. </select>
  389. <select id="selectPracticeGroupDetail"
  390. resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPracticeDetailVo">
  391. SELECT * FROM
  392. (SELECT
  393. cs.id_ AS courseId,
  394. sb.name_ AS subjectName,
  395. cs.teacher_id_ AS teacherId,
  396. tu.username_ AS teacherName,
  397. tu.real_name_ AS teacherRealName,
  398. sp.user_id_ AS studentId,
  399. su.username_ AS studentName,
  400. su.real_name_ AS studentRealName,
  401. cs.status_ AS `status`,
  402. cs.start_time_ AS startTime,
  403. cs.end_time_ AS endTime,
  404. (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ THEN 1 ELSE 0 END) AS teacherInSign,
  405. (CASE WHEN cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherOutSign,
  406. (CASE WHEN cs.start_time_ &gt;= sa.sign_in_time_ THEN 1 ELSE 0 END) AS studentInSign,
  407. (CASE WHEN cs.end_time_ &lt;= sa.sign_out_time_ THEN 1 ELSE 0 END) AS studentOutSign,
  408. ts.status_ AS salaryStatus
  409. FROM course_schedule cs
  410. LEFT JOIN course_group cg ON cs.course_group_id_=cg.id_
  411. LEFT JOIN `subject` sb ON cg.subject_id_=sb.id_
  412. LEFT JOIN sys_user tu ON cs.teacher_id_=tu.id_
  413. LEFT JOIN course_schedule_student_payment sp ON cs.id_=sp.course_id_
  414. LEFT JOIN sys_user su ON sp.user_id_=su.id_
  415. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
  416. LEFT JOIN student_attendance sa ON cs.id_=sa.course_schedule_id_
  417. LEFT JOIN course_schedule_teacher_salary ts ON cs.id_=ts.course_schedule_id_
  418. WHERE cs.type_='PRACTICE'
  419. AND cs.lock_=0
  420. AND cs.course_group_id_=#{param.courseGroupId}) a
  421. <where>
  422. <if test="param.search != null and param.search != ''">
  423. AND (
  424. courseId LIKE concat('%',#{param.search},'%') OR
  425. teacherName LIKE concat('%',#{param.search},'%') OR
  426. teacherId LIKE concat('%',#{param.search},'%') OR
  427. studentName LIKE concat('%',#{param.search},'%') OR
  428. studentId LIKE concat('%',#{param.search},'%')
  429. )
  430. </if>
  431. <if test="param.teacherSign == 1">
  432. AND teacherInSign = #{param.teacherSign}
  433. </if>
  434. <if test="param.teacherSign == 0">
  435. AND teacherOutSign = #{param.teacherSign}
  436. </if>
  437. <if test="param.studentSign == 1">
  438. AND studentInSign = #{param.studentSign}
  439. </if>
  440. <if test="param.studentSign == 0">
  441. AND studentOutSign = #{param.studentSign}
  442. </if>
  443. <if test="param.status != null and param.status != ''">
  444. AND `status` = #{param.status}
  445. </if>
  446. <if test="param.salaryStatus != null and param.salaryStatus != ''">
  447. AND salaryStatus = #{param.salaryStatus}
  448. </if>
  449. <if test="param.startTime != null">
  450. AND startTime &lt;= #{param.startTime}
  451. </if>
  452. <if test="param.endTime != null">
  453. AND endTime &gt;= #{param.endTime}
  454. </if>
  455. <if test="param.studentId != null">
  456. AND studentId = #{param.studentId}
  457. </if>
  458. <if test="param.teacherId != null">
  459. AND teacherId = #{param.teacherId}
  460. </if>
  461. </where>
  462. </select>
  463. <select id="selectLiveGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupLiveVo">
  464. SELECT
  465. cg.id_ AS courseGroupId,
  466. cg.name_ AS courseGroupName,
  467. cg.subject_id_ AS subjectId,
  468. sb.name_ AS subjectName,
  469. cg.teacher_id_ AS teacherId,
  470. su.username_ AS teacherName,
  471. su.real_name_ AS teacherRealName,
  472. cg.course_num_ AS courseNum,
  473. cg.pre_student_num_ AS studentNum,
  474. cg.status_ AS `status`,
  475. IFNULL(cm.count_,0) AS completeCount,
  476. st.start_time_ AS startTime
  477. FROM course_group cg
  478. LEFT JOIN `subject` sb ON cg.subject_id_=sb.id_
  479. LEFT JOIN sys_user su ON su.id_=cg.teacher_id_
  480. LEFT JOIN (SELECT course_group_id_,COUNT(1) AS count_ FROM course_schedule WHERE type_='LIVE' AND status_='COMPLETE' GROUP BY course_group_id_) cm ON cg.id_=cm.course_group_id_
  481. LEFT JOIN (SELECT course_group_id_,start_time_ FROM course_schedule WHERE type_='LIVE' GROUP BY course_group_id_) st ON cg.id_=st.course_group_id_
  482. WHERE cg.type_='LIVE'
  483. <if test="param.search != null and param.search != ''">
  484. AND (
  485. cg.id_ LIKE concat('%',#{param.search},'%') OR
  486. cg.teacher_id_ LIKE concat('%',#{param.search},'%') OR
  487. cg.name_ LIKE concat('%',#{param.search},'%') OR
  488. su.username_ LIKE concat('%',#{param.search},'%')
  489. )
  490. </if>
  491. <if test="param.subjectId != null">
  492. AND cg.subject_id_ = #{param.subjectId}
  493. </if>
  494. <if test="param.status != null and param.status != ''">
  495. AND cg.status_ = #{param.status}
  496. </if>
  497. </select>
  498. <select id="selectLiveGroupStudent" resultType="com.yonge.cooleshow.biz.dal.vo.CourseSchedulePaymentVo">
  499. SELECT
  500. p.user_id_ AS studentId,
  501. u.username_ AS studentName,
  502. u.real_name_ AS studentRealName,
  503. u.phone_ AS studentPhone,
  504. p.actual_price_ AS actualPrice,
  505. p.order_no_ AS orderNo,
  506. o.create_time_ AS createdOrderTime
  507. FROM course_schedule_student_payment p
  508. LEFT JOIN sys_user u ON p.user_id_=u.id_
  509. LEFT JOIN user_order o ON p.order_no_ = o.order_no_
  510. WHERE p.course_group_id_=#{param.groupId}
  511. <if test="param.search != null and param.search != ''">
  512. AND (
  513. p.course_id_ LIKE concat('%',#{param.search},'%') OR
  514. p.user_id_ LIKE concat('%',#{param.search},'%') OR
  515. u.username_ LIKE concat('%',#{param.search},'%') OR
  516. u.phone_ LIKE concat('%',#{param.search},'%')
  517. )
  518. </if>
  519. <if test="param.orderNo != null and param.orderNo != ''">
  520. AND p.order_no_ = #{param.orderNo}
  521. </if>
  522. <if test="param.startTime != null">
  523. AND o.create_time_ &lt;= #{param.startTime}
  524. </if>
  525. <if test="param.endTime != null">
  526. AND o.create_time_ &gt;= #{param.endTime}
  527. </if>
  528. </select>
  529. <select id="selectLiveGroupPlan" resultType="com.yonge.cooleshow.biz.dal.vo.CourseSchedulePlanVo">
  530. SELECT
  531. distinct
  532. cs.id_ AS courseId,
  533. cp.plan_ AS courseIntroduce,
  534. cs.class_num_ AS classNum,
  535. cs.class_date_ AS classDate,
  536. cs.start_time_ AS startTime,
  537. cs.end_time_ AS endTime,
  538. ts.status_ AS salaryStatus,
  539. (select group_concat(lrv.url_) from live_room_video lrv where lrv.course_id_ = cs.id_)AS url,
  540. cs.status_ AS courseStatus,
  541. (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ THEN 1 ELSE 0 END) AS teacherInSign,
  542. (CASE WHEN cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherOutSign
  543. FROM course_schedule cs
  544. LEFT JOIN course_group g ON cs.course_group_id_=g.id_
  545. LEFT JOIN course_schedule_teacher_salary ts ON cs.id_=ts.course_schedule_id_
  546. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
  547. left join course_plan cp on cp.course_group_id_ = cs.course_group_id_ and cp.class_num_ = cs.class_num_
  548. WHERE cs.course_group_id_= #{param.groupId}
  549. <if test="param.salaryStatus != null and param.salaryStatus != ''">
  550. AND ts.status_ = #{param.salaryStatus}
  551. </if>
  552. <if test="param.startTime != null">
  553. AND cs.start_time_ &lt;= #{param.startTime}
  554. </if>
  555. <if test="param.endTime != null">
  556. AND cs.end_time_ &gt;= #{param.endTime}
  557. </if>
  558. <if test="param.endTime != null">
  559. AND cs.id_ LIKE concat('%',#{param.courseId},'%')
  560. </if>
  561. </select>
  562. <select id="selectVideoGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupVideoVo">
  563. SELECT
  564. g.id_ AS groupId,
  565. g.lesson_name_ AS lessonName,
  566. g.lesson_subject_ AS subjectId,
  567. s.name_ AS subjectName,
  568. g.lesson_count_ AS lessonCount,
  569. IFNULL(p.count_,0) AS buyCount,
  570. g.teacher_id_ AS teacherId,
  571. u.username_ AS teacherName,
  572. g.pay_type_ AS payType,
  573. u.real_name_ AS teacherRealName,
  574. g.create_time_ AS createTime,
  575. g.shelves_time_ AS recordTime,
  576. g.shelves_flag_ as shelvesFlag,
  577. g.sort_number_ as sortNumber,
  578. g.top_flag_ as topFlag,
  579. g.audit_status_ as status,
  580. g.relation_type_ as relationType,
  581. g.draft_flag_ as draftFlag
  582. FROM video_lesson_group g
  583. LEFT JOIN `subject` s ON g.lesson_subject_=s.id_
  584. LEFT JOIN sys_user u ON g.teacher_id_=u.id_
  585. LEFT JOIN (
  586. SELECT video_lesson_group_id_,COUNT(1) AS count_ FROM video_lesson_purchase_record
  587. WHERE order_status_='PAID' GROUP BY video_lesson_group_id_) p ON g.id_=p.video_lesson_group_id_
  588. <where>
  589. <if test="param.search != null and param.search != ''">
  590. AND (
  591. g.id_ LIKE concat('%',#{param.search},'%') OR
  592. g.lesson_name_ LIKE concat('%',#{param.search},'%') OR
  593. g.teacher_id_ LIKE concat('%',#{param.search},'%') OR
  594. u.username_ LIKE concat('%',#{param.search},'%')
  595. )
  596. </if>
  597. <if test="param.subjectId != null and param.subjectId != ''">
  598. AND g.lesson_subject_ = #{param.subjectId}
  599. </if>
  600. <if test="param.status != null and param.status != ''">
  601. AND g.audit_status_ = #{param.status}
  602. </if>
  603. <if test="param.shelvesFlag != null">
  604. AND g.shelves_flag_ = #{param.shelvesFlag}
  605. </if>
  606. <if test="param.draftFlag != null">
  607. AND g.draft_flag_ = #{param.draftFlag}
  608. </if>
  609. <if test="param.topFlag != null">
  610. AND g.top_flag_ = #{param.topFlag}
  611. </if>
  612. <if test="param.relationType != null">
  613. AND g.relation_type_ = #{param.relationType}
  614. </if>
  615. <if test="param.payType != null">
  616. AND g.pay_type_ = #{param.payType}
  617. </if>
  618. </where>
  619. order by g.top_flag_ desc ,g.sort_number_ desc,g.id_ desc
  620. </select>
  621. <select id="selectVideoGroupStudent" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupStudentVo">
  622. SELECT
  623. r.student_id_ AS studentId,
  624. u.username_ AS studentName,
  625. u.real_name_ AS studentRealName,
  626. u.phone_ AS studentPhone,
  627. r.order_no_ AS orderNo,
  628. r.pay_money_ AS payMoney,
  629. o.create_time_ AS createTime
  630. FROM video_lesson_purchase_record r
  631. LEFT JOIN sys_user u ON r.student_id_=u.id_
  632. LEFT JOIN user_order o ON r.order_no_=o.order_no_
  633. WHERE r.order_status_='PAID'
  634. AND video_lesson_group_id_ = #{param.groupId}
  635. <if test="param.search != null and param.search != ''">
  636. AND (
  637. r.student_id_ LIKE concat('%',#{param.search},'%') OR
  638. u.username_ LIKE concat('%',#{param.search},'%') OR
  639. u.phone_ LIKE concat('%',#{param.search},'%')
  640. )
  641. </if>
  642. <if test="param.orderNo != null and param.orderNo != ''">
  643. AND r.order_no_ = #{param.orderNo}
  644. </if>
  645. <if test="param.startTime != null">
  646. AND o.create_time_ &lt;= #{param.startTime}
  647. </if>
  648. <if test="param.endTime != null">
  649. AND o.create_time_ &gt;= #{param.endTime}
  650. </if>
  651. </select>
  652. <select id="selectVideoGroupPlan" resultType="com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail">
  653. SELECT
  654. id_ AS id,
  655. video_title_ AS videoTitle,
  656. video_content_ AS videoContent,
  657. video_url_ AS videoUrl,
  658. cover_url_ AS coverUrl
  659. FROM video_lesson_group_detail
  660. WHERE video_lesson_group_id_=#{param.groupId}
  661. </select>
  662. <select id="selectGroupInfoVo" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupInfoVo"
  663. parameterType="java.lang.Long">
  664. SELECT
  665. g.id_ AS id,
  666. g.name_ AS name,
  667. g.subject_id_ AS subjectId,
  668. s.name_ AS subjectName,
  669. g.course_num_ AS courseNum,
  670. g.course_price_ AS coursePrice,
  671. g.status_ AS `status`,
  672. g.course_introduce_ AS courseIntroduce,
  673. g.created_time_ AS createdTime
  674. FROM course_group g
  675. LEFT JOIN `subject` s ON g.subject_id_=s.id_
  676. WHERE g.id_ =#{groupId}
  677. </select>
  678. <update id="opsPreStudentNum">
  679. update course_group
  680. set
  681. pre_student_num_ = pre_student_num_ + #{num}
  682. where id_ = #{id}
  683. </update>
  684. <update id="updateBatch">
  685. UPDATE course_group
  686. SET status_='COMPLETE'
  687. WHERE id_ IN
  688. <foreach collection="list" item="item" open="(" separator="," close=")">
  689. #{item}
  690. </foreach>
  691. </update>
  692. <select id="selectPianoGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoVo">
  693. SELECT
  694. cg.id_ AS courseGroupId,
  695. cg.name_ AS courseGroupName,
  696. cg.subject_id_ AS subjectId,
  697. sb.name_ AS subjectName,
  698. cg.teacher_id_ AS teacherId,
  699. su.username_ AS teacherName,
  700. su.real_name_ AS teacherRealName,
  701. cg.course_num_ AS courseNum,
  702. cg.status_ AS `status`,
  703. IFNULL(cm.count_,0) AS completeCount,
  704. st.start_time_ AS startTime
  705. FROM course_group cg
  706. LEFT JOIN `subject` sb ON cg.subject_id_=sb.id_
  707. LEFT JOIN sys_user su ON su.id_=cg.teacher_id_
  708. LEFT JOIN (SELECT course_group_id_,COUNT(1) AS count_ FROM course_schedule WHERE type_='PIANO_ROOM_CLASS' AND status_='COMPLETE' GROUP BY course_group_id_) cm ON cg.id_=cm.course_group_id_
  709. LEFT JOIN (SELECT course_group_id_,start_time_ FROM course_schedule WHERE type_='PIANO_ROOM_CLASS' GROUP BY course_group_id_) st ON cg.id_=st.course_group_id_
  710. WHERE cg.type_='PIANO_ROOM_CLASS'
  711. <if test="param.search != null and param.search != ''">
  712. AND (
  713. cg.id_ LIKE concat('%',#{param.search},'%') OR
  714. cg.teacher_id_ LIKE concat('%',#{param.search},'%') OR
  715. cg.name_ LIKE concat('%',#{param.search},'%') OR
  716. su.username_ LIKE concat('%',#{param.search},'%')
  717. )
  718. </if>
  719. <if test="param.subjectId != null">
  720. AND cg.subject_id_ = #{param.subjectId}
  721. </if>
  722. <if test="param.status != null and param.status != ''">
  723. AND cg.status_ = #{param.status}
  724. </if>
  725. order by st.start_time_ desc,cg.id_ desc
  726. </select>
  727. <select id="selectPianoGroupDetail"
  728. resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoDetailVo">
  729. SELECT
  730. cs.id_ AS courseId,
  731. sb.id_ AS subjectId,
  732. sb.name_ AS subjectName,
  733. cs.teacher_id_ AS teacherId,
  734. tu.username_ AS teacherName,
  735. tu.real_name_ AS teacherRealName,
  736. cs.status_ AS `status`,
  737. a.studentCount AS studentCount,
  738. (cs.single_course_time_ * (a.studentCount+1)*(a.studentCount+1-1)) AS courseTime,
  739. cs.start_time_ AS startTime,
  740. cs.end_time_ AS endTime,
  741. b.teacherInSign AS teacherInSign,
  742. b.teacherOutSign AS teacherOutSign
  743. FROM course_schedule cs
  744. LEFT JOIN course_group cg ON cs.course_group_id_ = cg.id_
  745. LEFT JOIN `subject` sb ON cg.subject_id_ = sb.id_
  746. LEFT JOIN sys_user tu ON cs.teacher_id_ = tu.id_
  747. LEFT JOIN (SELECT course_id_,COUNT(1) AS studentCount FROM course_schedule_student_payment WHERE course_type_='PIANO_ROOM_CLASS' GROUP BY course_id_) a ON cs.id_=a.course_id_
  748. LEFT JOIN (SELECT cs.id_ AS cid,( CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ THEN 1 ELSE 0 END ) AS teacherInSign,( CASE WHEN cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END ) AS teacherOutSign
  749. FROM course_schedule cs LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ WHERE cs.type_='PIANO_ROOM_CLASS') b ON cs.id_=b.cid
  750. WHERE cs.type_='PIANO_ROOM_CLASS'
  751. AND cs.course_group_id_=#{param.courseGroupId}
  752. <if test="param.search != null and param.search != ''">
  753. AND cs.id_ LIKE concat('%',#{param.search},'%')
  754. </if>
  755. <if test="param.status != null and param.status != ''">
  756. AND cs.status_ = #{param.status}
  757. </if>
  758. <if test="param.startTime != null">
  759. AND cs.start_time_ &gt;= #{param.startTime}
  760. </if>
  761. <if test="param.endTime != null">
  762. AND cs.start_time_ &lt;= #{param.endTime}
  763. </if>
  764. <if test="param.teacherSign == 1">
  765. AND b.teacherInSign = #{param.teacherSign}
  766. </if>
  767. <if test="param.teacherSign == 0">
  768. AND b.teacherOutSign = #{param.teacherSign}
  769. </if>
  770. <if test="param.studentSign != null">
  771. AND cs.id_ IN
  772. <foreach collection="param.courseIds" item="item" open="(" close=")" separator=",">
  773. #{item}
  774. </foreach>
  775. </if>
  776. </select>
  777. <select id="studentSign" resultType="com.yonge.cooleshow.biz.dal.vo.StudentSignVo">
  778. SELECT DISTINCT
  779. p.course_id_ AS courseId,
  780. p.user_id_ AS userId,
  781. u.username_ AS userName,
  782. u.real_name_ AS realName,
  783. ( CASE WHEN c.start_time_ &gt;= a.sign_in_time_ THEN 1 ELSE 0 END ) AS studentInSign,
  784. ( CASE WHEN c.end_time_ &lt;= a.sign_out_time_ THEN 1 ELSE 0 END ) AS studentOutSign
  785. FROM course_schedule_student_payment p
  786. LEFT JOIN sys_user u ON p.user_id_=u.id_
  787. LEFT JOIN course_schedule c ON p.course_id_=c.id_
  788. LEFT JOIN student_attendance a ON p.user_id_=a.student_id_ and a.course_schedule_id_ = c.id_
  789. <where>
  790. <if test="courseId !=null">
  791. AND p.course_id_=#{courseId}
  792. </if>
  793. <if test="type !=null and type!=''">
  794. AND p.course_type_=#{type}
  795. </if>
  796. </where>
  797. </select>
  798. <select id="selectPianoGroupStudent" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoVo">
  799. SELECT DISTINCT
  800. g.id_ AS courseGroupId,
  801. g.name_ AS courseGroupName,
  802. s.id_ AS subjectId,
  803. s.name_ AS subjectName,
  804. g.teacher_id_ AS teacherId,
  805. u.username_ AS teacherName,
  806. u.real_name_ AS teacherRealName,
  807. g.course_num_ AS courseNum,
  808. IFNULL(cm.count_,0) AS completeCount,
  809. g.status_ AS `status`,
  810. st.start_time_ AS startTime
  811. FROM course_schedule_student_payment p
  812. LEFT JOIN course_group g ON p.course_group_id_=g.id_
  813. LEFT JOIN `subject` s ON g.subject_id_=s.id_
  814. LEFT JOIN sys_user u ON g.teacher_id_=u.id_
  815. LEFT JOIN (SELECT course_group_id_,COUNT(1) AS count_ FROM course_schedule WHERE type_='PIANO_ROOM_CLASS' AND status_='COMPLETE' GROUP BY course_group_id_) cm ON p.course_group_id_=cm.course_group_id_
  816. LEFT JOIN (SELECT course_group_id_,start_time_ FROM course_schedule WHERE type_='PIANO_ROOM_CLASS' GROUP BY course_group_id_) st ON p.course_group_id_=st.course_group_id_
  817. WHERE p.course_type_='PIANO_ROOM_CLASS'
  818. AND p.user_id_=#{param.studentId}
  819. <if test="param.search != null and param.search != ''">
  820. AND (
  821. g.id_ LIKE concat('%',#{param.search},'%') OR
  822. g.teacher_id_ LIKE concat('%',#{param.search},'%') OR
  823. u.username_ LIKE concat('%',#{param.search},'%') OR
  824. g.name_ LIKE concat('%',#{param.search},'%')
  825. )
  826. </if>
  827. <if test="param.subjectId != null">
  828. AND s.id_ = #{param.subjectId}
  829. </if>
  830. <if test="param.status != null and param.status != ''">
  831. AND g.status_ = #{param.status}
  832. </if>
  833. </select>
  834. <select id="selectPianoGroupStudentDetail"
  835. resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoDetailVo">
  836. SELECT * FROM (
  837. SELECT
  838. cs.id_ AS courseId,
  839. sb.id_ AS subjectId,
  840. sb.name_ AS subjectName,
  841. cs.teacher_id_ AS teacherId,
  842. tu.username_ AS teacherName,
  843. tu.real_name_ AS teacherRealName,
  844. cs.status_ AS `status`,
  845. a.studentCount AS studentCount,
  846. (cs.single_course_time_ * (a.studentCount+1)*(a.studentCount+1-1)) AS courseTime,
  847. cs.start_time_ AS startTime,
  848. cs.end_time_ AS endTime,
  849. p.user_id_ AS studentId,
  850. su.username_ AS studentName,
  851. su.real_name_ AS studentRealName,
  852. (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ THEN 1 ELSE 0 END) AS teacherInSign,
  853. (CASE WHEN cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherOutSign,
  854. (CASE WHEN cs.start_time_ &gt;= sa.sign_in_time_ THEN 1 ELSE 0 END) AS studentInSign,
  855. (CASE WHEN cs.end_time_ &lt;= sa.sign_out_time_ THEN 1 ELSE 0 END) AS studentOutSign,
  856. (CASE WHEN cs.start_time_ &gt;= sa.sign_in_time_ AND cs.end_time_ &lt;= sa.sign_out_time_ THEN 1 ELSE 0 END) AS studentSign,
  857. (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ AND cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherSign
  858. FROM course_schedule cs
  859. LEFT JOIN course_group cg ON cs.course_group_id_ = cg.id_
  860. LEFT JOIN `subject` sb ON cg.subject_id_ = sb.id_
  861. LEFT JOIN sys_user tu ON cs.teacher_id_ = tu.id_
  862. LEFT JOIN (SELECT course_id_,COUNT(1) AS studentCount FROM course_schedule_student_payment WHERE course_type_='PIANO_ROOM_CLASS' GROUP BY course_id_) a ON cs.id_=a.course_id_
  863. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
  864. LEFT JOIN student_attendance sa ON cs.id_=sa.course_schedule_id_
  865. LEFT JOIN course_schedule_student_payment p ON cs.id_=p.course_id_
  866. LEFT JOIN sys_user su ON p.user_id_ = su.id_
  867. WHERE cs.type_='PIANO_ROOM_CLASS'
  868. AND p.user_id_=#{param.studentId}
  869. AND p.course_group_id_=#{param.courseGroupId}) m
  870. <where>
  871. <if test="param.search != null and param.search != ''">
  872. AND courseId LIKE concat('%',#{param.search},'%')
  873. </if>
  874. <if test="param.studentSign != null">
  875. AND studentSign = #{param.studentSign}
  876. </if>
  877. <if test="param.teacherSign != null">
  878. AND teacherSign = #{param.teacherSign}
  879. </if>
  880. <if test="param.status != null and param.status != ''">
  881. AND `status` = #{param.status}
  882. </if>
  883. <if test="param.startTime != null">
  884. AND startTime &gt;= #{param.startTime}
  885. </if>
  886. <if test="param.endTime != null">
  887. AND startTime &lt;= #{param.endTime}
  888. </if>
  889. </where>
  890. </select>
  891. <select id="selectPianoGroupTeacher" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoVo">
  892. SELECT
  893. cg.id_ AS courseGroupId,
  894. cg.name_ AS courseGroupName,
  895. cg.subject_id_ AS subjectId,
  896. sb.name_ AS subjectName,
  897. cg.teacher_id_ AS teacherId,
  898. su.username_ AS teacherName,
  899. su.real_name_ AS teacherRealName,
  900. cg.course_num_ AS courseNum,
  901. cg.status_ AS `status`,
  902. IFNULL(cm.count_,0) AS completeCount,
  903. st.start_time_ AS startTime
  904. FROM course_group cg
  905. LEFT JOIN `subject` sb ON cg.subject_id_=sb.id_
  906. LEFT JOIN sys_user su ON su.id_=cg.teacher_id_
  907. LEFT JOIN (SELECT course_group_id_,COUNT(1) AS count_ FROM course_schedule WHERE type_='PIANO_ROOM_CLASS' AND status_='COMPLETE' GROUP BY course_group_id_) cm ON cg.id_=cm.course_group_id_
  908. LEFT JOIN (SELECT course_group_id_,start_time_ FROM course_schedule WHERE type_='PIANO_ROOM_CLASS' GROUP BY course_group_id_) st ON cg.id_=st.course_group_id_
  909. WHERE cg.type_='PIANO_ROOM_CLASS'
  910. AND cg.teacher_id_=#{param.teacherId}
  911. <if test="param.search != null and param.search != ''">
  912. AND (
  913. cg.name_ LIKE concat('%',#{param.search},'%') OR
  914. cg.id_ LIKE concat('%',#{param.search},'%')
  915. )
  916. </if>
  917. <if test="param.subjectId != null">
  918. AND cg.subject_id_ = #{param.subjectId}
  919. </if>
  920. <if test="param.status != null and param.status != ''">
  921. AND cg.status_ = #{param.status}
  922. </if>
  923. </select>
  924. <select id="selectPianoGroupTeacherDetail"
  925. resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoDetailVo">
  926. SELECT * FROM (
  927. SELECT
  928. cs.id_ AS courseId,
  929. sb.id_ AS subjectId,
  930. sb.name_ AS subjectName,
  931. cs.teacher_id_ AS teacherId,
  932. tu.username_ AS teacherName,
  933. tu.real_name_ AS teacherRealName,
  934. cs.status_ AS `status`,
  935. a.studentCount AS studentCount,
  936. (cs.single_course_time_ * (a.studentCount+1)*(a.studentCount+1-1)) AS courseTime,
  937. cs.start_time_ AS startTime,
  938. cs.end_time_ AS endTime,
  939. p.user_id_ AS studentId,
  940. su.username_ AS studentName,
  941. su.real_name_ AS studentRealName,
  942. (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ THEN 1 ELSE 0 END) AS teacherInSign,
  943. (CASE WHEN cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherOutSign,
  944. (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ AND cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherSign
  945. FROM course_schedule cs
  946. LEFT JOIN course_group cg ON cs.course_group_id_ = cg.id_
  947. LEFT JOIN `subject` sb ON cg.subject_id_ = sb.id_
  948. LEFT JOIN sys_user tu ON cs.teacher_id_ = tu.id_
  949. LEFT JOIN (SELECT course_id_,COUNT(1) AS studentCount FROM course_schedule_student_payment WHERE course_type_='PIANO_ROOM_CLASS' GROUP BY course_id_) a ON cs.id_=a.course_id_
  950. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
  951. LEFT JOIN student_attendance sa ON cs.id_=sa.course_schedule_id_
  952. LEFT JOIN course_schedule_student_payment p ON cs.id_=p.course_id_
  953. LEFT JOIN sys_user su ON cs.teacher_id_ = su.id_
  954. WHERE cs.type_='PIANO_ROOM_CLASS'
  955. AND cs.teacher_id_=#{param.teacherId}
  956. AND p.course_group_id_=#{param.courseGroupId}
  957. <if test="param.studentSign != null">
  958. AND cs.id_ IN
  959. <foreach collection="param.courseIds" item="item" open="(" close=")" separator=",">
  960. #{item}
  961. </foreach>
  962. </if>) m
  963. <where>
  964. <if test="param.search != null and param.search != ''">
  965. AND (
  966. courseId LIKE concat('%',#{param.search},'%') OR
  967. studentName LIKE concat('%',#{param.search},'%') OR
  968. studentId LIKE concat('%',#{param.search},'%')
  969. )
  970. </if>
  971. <if test="param.teacherSign != null">
  972. AND teacherSign = #{param.teacherSign}
  973. </if>
  974. <if test="param.status != null and param.status != ''">
  975. AND `status` = #{param.status}
  976. </if>
  977. <if test="param.startTime != null">
  978. AND startTime &gt;= #{param.startTime}
  979. </if>
  980. <if test="param.endTime != null">
  981. AND endTime &lt;= #{param.endTime}
  982. </if>
  983. </where>
  984. GROUP BY courseId
  985. </select>
  986. <select id="selectLiveSubject" resultType="com.yonge.cooleshow.biz.dal.entity.Subject">
  987. select distinct s.* from course_group cg
  988. left join subject s on cg.subject_id_ = s.id_
  989. where cg.status_ = 'APPLY' and cg.type_ = 'LIVE'
  990. </select>
  991. <select id="myCourseGroup"
  992. resultType="com.yonge.cooleshow.biz.dal.wrapper.course.CourseGroupWrapper$TeacherCourseGroupDto">
  993. select cg.name_ courseGroupName,cg.status_ status,
  994. cg.subject_id_ subjectId,
  995. cg.complete_course_num_ completeCourseNum,cg.course_num_ courseNum,cg.id_ courseGroupId
  996. from course_group cg
  997. <where>
  998. <if test="param.teacherId != null">
  999. AND cg.teacher_id_ = #{param.teacherId}
  1000. </if>
  1001. <if test="param.status != null and param.status != ''">
  1002. AND cg.status_ = #{param.status}
  1003. </if>
  1004. <if test="param.subjectId != null">
  1005. AND cg.subject_id_ = #{param.subjectId}
  1006. </if>
  1007. <if test="param.courseType != null and param.courseType != ''">
  1008. AND cg.type_ = #{param.courseType}
  1009. </if>
  1010. </where>
  1011. </select>
  1012. </mapper>