CourseGroupMapper.xml 51 KB

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