CourseGroupMapper.xml 53 KB

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