CourseGroupMapper.xml 52 KB

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