CourseGroupMapper.xml 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631
  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. </resultMap>
  28. <sql id="Base_Column_List">
  29. id_
  30. , type_, teacher_id_, name_, subject_id_, single_course_minutes_, course_num_, complete_course_num_, course_introduce_, course_price_, status_, sales_start_date_, sales_end_date_, background_pic_, mix_student_num_,pre_student_num_, im_group_id_, course_start_time_, created_by_, created_time_, updated_by_, updated_time_
  31. </sql>
  32. <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
  33. parameterType="com.yonge.cooleshow.biz.dal.entity.CourseGroup">
  34. insert into course_group(type_, teacher_id_, name_, subject_id_, single_course_minutes_, course_num_,
  35. complete_course_num_, course_introduce_, course_price_, status_, sales_start_date_, sales_end_date_, background_pic_,
  36. mix_student_num_,pre_student_num_,im_group_id_, course_start_time_, created_by_, created_time_, updated_by_, updated_time_)
  37. values
  38. <foreach collection="entities" item="entity" separator=",">
  39. (#{entity.type}, #{entity.teacherId}, #{entity.name}, #{entity.subjectId}, #{entity.singleCourseMinutes},
  40. #{entity.courseNum}, #{entity.completeCourseNum}, #{entity.courseIntroduce}, #{entity.coursePrice}, #{entity.status},
  41. #{entity.salesStartDate}, #{entity.salesEndDate}, #{entity.backgroundPic}, #{entity.mixStudentNum},
  42. #{entity.preStudentNum},#{entity.imGroupId},#{entity.courseStartTime}, #{entity.createdBy}, #{entity.createdTime}, #{entity.updatedBy},
  43. #{entity.updatedTime})
  44. </foreach>
  45. </insert>
  46. <select id="queryTeacherCourseGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupVo">
  47. select distinct
  48. b.id_ as courseGroupId,
  49. b.name_ as courseGroupName,
  50. s.name_ as subjectName,
  51. b.teacher_id_ as teacherId,
  52. u.username_ as teacherName,
  53. b.course_start_time_ as courseStartTime,
  54. b.single_course_minutes_ as singleCourseMinutes,
  55. b.status_ as `status`,
  56. ifnull(b.pre_student_num_, 0) as studentCount,
  57. b.background_pic_ as backgroundPic,
  58. b.course_price_ as coursePrice,
  59. b.course_num_ as courseNum,
  60. u.avatar_ as avatar,
  61. b.sales_start_date_ as salesStartDate,
  62. b.sales_end_date_ as salesEndDate,
  63. b.mix_student_num_ as mixStudentNum,
  64. b.im_group_id_ as imGroupId,
  65. 0 as existBuy
  66. from course_group as b
  67. left join subject as s on b.subject_id_ = s.id_
  68. left join sys_user as u on b.teacher_id_ = u.id_
  69. <where>
  70. <if test="param.teacherId != null">
  71. and b.teacher_id_ = #{param.teacherId}
  72. </if>
  73. <if test="param.groupStatus != null">
  74. and b.status_ = #{param.groupStatus}
  75. </if>
  76. <if test="param.subjectId != null">
  77. AND b.subject_id_ = #{param.subjectId}
  78. </if>
  79. <if test="param.search != null and param.search !=''">
  80. and (
  81. u.real_name_ like concat('%',#{param.search},'%')
  82. or b.name_ like concat('%',#{param.search},'%')
  83. )
  84. </if>
  85. <if test="param.type != null and param.type != ''">
  86. and b.type_ = #{param.type}
  87. </if>
  88. </where>
  89. </select>
  90. <select id="queryStudentCourseGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupVo">
  91. select distinct b.id_ as courseGroupId,
  92. b.name_ as courseGroupName,
  93. s.name_ as subjectName,
  94. b.teacher_id_ as teacherId,
  95. u.username_ as teacherName,
  96. b.course_start_time_ as courseStartTime,
  97. b.single_course_minutes_ as singleCourseMinutes,
  98. b.status_ as `status`,
  99. ifnull(b.pre_student_num_, 0) as studentCount,
  100. b.background_pic_ as backgroundPic,
  101. b.course_price_ as coursePrice,
  102. b.course_num_ as courseNum,
  103. u.avatar_ as avatar,
  104. b.sales_start_date_ as salesStartDate,
  105. b.sales_end_date_ as salesEndDate,
  106. b.mix_student_num_ as mixStudentNum,
  107. b.im_group_id_ as imGroupId,
  108. if(y.status_ = 'PAID', 1, 0) as existBuy
  109. from course_group as b
  110. left join subject as s on b.subject_id_ = s.id_
  111. left join sys_user as u on b.teacher_id_ = u.id_
  112. left join
  113. (select x.user_id_, x.course_group_id_, o.status_
  114. from course_schedule_student_payment as x
  115. left join user_order as o on x.order_no_ = o.order_no_ and x.user_id_ = o.user_id_
  116. left join user_order_detail as d on d.order_no_ = x.order_no_
  117. where x.user_id_ = #{param.studentId}) as y on b.id_ = y.course_group_id_
  118. <where>
  119. <if test="param.teacherId != null">
  120. and b.teacher_id_ = #{param.teacherId}
  121. </if>
  122. <if test="param.groupStatus != null">
  123. and b.status_ = #{param.groupStatus}
  124. </if>
  125. <if test="param.subjectId != null">
  126. AND b.subject_id_ = #{param.subjectId}
  127. </if>
  128. <if test="param.search != null and param.search !=''">
  129. and (
  130. u.real_name_ like concat('%',#{param.search},'%')
  131. or b.name_ like concat('%',#{param.search},'%')
  132. )
  133. </if>
  134. <if test="param.auditVersion != null ">
  135. and #{param.auditVersion} = b.audit_version_
  136. </if>
  137. <if test="param.subjectId != null ">
  138. and #{param.subjectId} = b.subject_id_
  139. </if>
  140. </where>
  141. </select>
  142. <select id="selectAdminLivePage" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupVo">
  143. select distinct
  144. cg.id_ as courseGroupId,
  145. cg.name_ as name,
  146. cg.complete_course_num_ as endCourseNum,
  147. if(cg.complete_course_num_ = 0 ,cg.course_num_,cg.course_num_ - cg.complete_course_num_) as noStartCourseNum,
  148. cg.course_price_ as coursePrice,
  149. cg.pre_student_num_ as preStudentNum,
  150. cg.status_ as status,
  151. cg.course_num_ as courseNum,
  152. cg.created_time_ as createTime,
  153. cg.course_introduce_ as courseIntroduce,
  154. cg.im_group_id_ as imGroupId,
  155. su.phone_ as phone
  156. from course_group cg
  157. left join course_schedule_student_payment cssp on cg.id_ = cssp.course_group_id_
  158. left join sys_user su on su.id_ = cssp.user_id_
  159. <where>
  160. <if test="param.teacherId != null">
  161. and #{param.teacherId} = cg.teacher_id_
  162. </if>
  163. <if test="param.studentId != null">
  164. and #{param.studentId} = cssp.user_id_
  165. </if>
  166. <if test="param.search != null and param.search !=''">
  167. and (
  168. cg.id_ like concat('%',#{param.search},'%')
  169. or su.id_ like concat('%',#{param.search},'%')
  170. or su.username_ like concat('%',#{param.search},'%')
  171. or su.phone_ like concat('%',#{param.search},'%')
  172. )
  173. </if>
  174. <if test="param.orderNo != null and param.orderNo != ''">
  175. and cssp.order_no_ like concat('%',#{param.orderNo},'%')
  176. </if>
  177. <if test="param.subjectId != null">
  178. and #{param.subjectId} = cg.subject_id_
  179. </if>
  180. <if test="param.status != null">
  181. and #{param.status} = cg.status_
  182. </if>
  183. <if test="param.startTime != null">
  184. and #{param.startTime} &lt;= cg.created_time_
  185. </if>
  186. <if test="param.endTime != null">
  187. and #{param.endTime} &gt;= cg.created_time_
  188. </if>
  189. <if test="param.courseType != null">
  190. and #{param.courseType} = cg.type_
  191. </if>
  192. </where>
  193. order by cg.id_ desc
  194. </select>
  195. <select id="selectCourseGroupSubject" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupVo">
  196. select
  197. cg.id_ as courseGroupId,
  198. s.name_ as subjectName
  199. from course_group cg
  200. left join subject s on cg.subject_id_ = s.id_
  201. <where>
  202. <if test="courseGroupIdList != null and courseGroupIdList.size() != 0">
  203. and cg.id_ in
  204. <foreach collection="courseGroupIdList" item="item" open="(" close=")" separator=",">
  205. #{item}
  206. </foreach>
  207. </if>
  208. </where>
  209. <if test="courseGroupIdList != null and courseGroupIdList.size() != 0">
  210. order by field(cg.id_,
  211. <foreach collection="courseGroupIdList" item="item" open="" close=")" separator=",">
  212. #{item}
  213. </foreach>
  214. </if>
  215. </select>
  216. <select id="selectAdminLiveStudentPage" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupStudentVo">
  217. select
  218. su.id_ as studentId,
  219. su.username_ as studentName,
  220. cssp.actual_price_ as price,
  221. cssp.order_no_ as orderNo,
  222. cssp.created_time_ as payTime
  223. from course_schedule_student_payment cssp
  224. left join sys_user su on cssp.user_id_ = su.id_
  225. <where>
  226. <if test="param.courseGroupId != null">
  227. and #{param.courseGroupId} = cssp.course_group_id_
  228. </if>
  229. <if test="param.search != null and param.search != ''">
  230. and (
  231. cssp.course_group_id_ like concat('%',#{param.search},'%')
  232. or su.id_ like concat('%',#{param.search},'%')
  233. or su.username_ like concat('%',#{param.search},'%')
  234. or su.phone_ like concat('%',#{param.search},'%')
  235. )
  236. </if>
  237. <if test="param.orderNo != null and param.orderNo != ''">
  238. and cssp.order_no_ like concat('%',#{param.orderNo},'%')
  239. </if>
  240. <if test="param.startTime != null">
  241. and #{param.startTime} &lt;= cssp.created_time_
  242. </if>
  243. <if test="param.endTime != null">
  244. and #{param.endTime} &gt;= cssp.created_time_
  245. </if>
  246. </where>
  247. order by cssp.id_ desc
  248. </select>
  249. <select id="selectAdminLivePlan" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupPlanVo">
  250. select
  251. cs.id_ as courseId,
  252. cs.class_num_ as classNum,
  253. cs.class_date_ as classDate,
  254. cs.start_time_ as startTime,
  255. cs.end_time_ as endTime,
  256. cs.status_ as courseStatus,
  257. cp.plan_ as planInfo,
  258. lrv.url_ as videoUrl
  259. from course_schedule cs
  260. left join live_room_video lrv on cs.id_ = lrv.course_id_
  261. left join course_plan cp on cp.course_group_id_ = cs.course_group_id_ and cp.class_num_ = cs.class_num_
  262. <where>
  263. <if test="courseGroupId != null">
  264. and #{courseGroupId} = cs.course_group_id_
  265. </if>
  266. </where>
  267. order by cs.class_num_
  268. </select>
  269. <select id="selectAdminLiveCourseGroup" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupVo">
  270. select distinct
  271. cg.id_ as courseGroupId,
  272. cg.name_ as name,
  273. cg.complete_course_num_ as endCourseNum,
  274. if(cg.complete_course_num_ = 0 ,cg.course_num_,cg.course_num_ - cg.complete_course_num_) as noStartCourseNum,
  275. cg.course_price_ as coursePrice,
  276. cg.pre_student_num_ as preStudentNum,
  277. cg.status_ as status,
  278. cg.course_num_ as courseNum,
  279. cg.created_time_ as createTime,
  280. cg.course_introduce_ as courseIntroduce,
  281. s.name_ as subjectName
  282. from course_group cg
  283. left join course_schedule_student_payment cssp on cg.id_ = cssp.course_group_id_
  284. left join subject s on cg.subject_id_ = s.id_
  285. <where>
  286. <if test="courseGroupId != null">
  287. and #{courseGroupId} = cg.id_
  288. </if>
  289. </where>
  290. </select>
  291. <select id="selectAdminLiveStudentCoursePage"
  292. resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupStudentCourseVo">
  293. select distinct
  294. cs.id_ as courseId,
  295. cs.class_date_ as classDate,
  296. cs.start_time_ as startTime,
  297. cs.end_time_ as endTime,
  298. cs.status_ as courseStatue,
  299. cssp.order_no_ as orderNo,
  300. sa.id_ as studentAttendanceId
  301. from course_schedule cs
  302. left join course_schedule_student_payment cssp on cs.id_ = cssp.course_id_
  303. left join student_attendance sa on cssp.course_id_ = sa.course_schedule_id_
  304. <where>
  305. cs.status_ != '${@ com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum@CANCEL}'
  306. <if test="param.studentId != null">
  307. and cssp.user_id_ = #{param.studentId}
  308. </if>
  309. <if test="param.status != null">
  310. <choose>
  311. <when test="param.status == @com.yonge.cooleshow.biz.dal.enums.StudentCourseEnum@TRUANT">
  312. and sa.id_ is null
  313. </when>
  314. <when test="param.status == @com.yonge.cooleshow.biz.dal.enums.StudentCourseEnum@ATTENDCLASS">
  315. and sa.id_ is not null
  316. and #{param.studentId} = sa.student_id_
  317. </when>
  318. <when test="param.status == @com.yonge.cooleshow.biz.dal.enums.StudentCourseEnum@NOTSTART">
  319. and cs.status_ = '${@ com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum@NOT_START}'
  320. </when>
  321. </choose>
  322. </if>
  323. <if test="param.courseGroupId != null">
  324. and #{param.courseGroupId} = cs.course_group_id_
  325. </if>
  326. <if test="param.courseId != null">
  327. and cs.id_ like concat('%',#{param.courseId},'%')
  328. </if>
  329. </where>
  330. order by cs.id_ desc
  331. </select>
  332. <select id="selectPracticeGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPracticeVo">
  333. SELECT
  334. cg.id_ AS groupId,
  335. cg.name_ AS groupName,
  336. cg.subject_id_ AS subjectId,
  337. sub.name_ AS subjectName,
  338. cg.course_num_ AS courseNum,
  339. IFNULL(cs.count_ ,0)AS completeCount,
  340. cg.teacher_id_ AS teacherId,
  341. tu.username_ AS teacherName,
  342. tu.real_name_ AS teacherRealName,
  343. sp.user_id_ AS studentId,
  344. su.username_ AS studentName,
  345. su.real_name_ AS studentRealName,
  346. cg.status_ AS `status`,
  347. cst.start_time_ AS startTime
  348. FROM course_group cg
  349. LEFT JOIN `subject` sub ON cg.subject_id_=sub.id_
  350. LEFT JOIN sys_user tu ON cg.teacher_id_=tu.id_
  351. LEFT JOIN (SELECT user_id_,course_group_id_ FROM course_schedule_student_payment WHERE course_type_='PRACTICE' GROUP BY course_group_id_) sp ON cg.id_=sp.course_group_id_
  352. LEFT JOIN sys_user su ON sp.user_id_=su.id_
  353. LEFT JOIN (SELECT course_group_id_,COUNT(1) AS count_ FROM course_schedule WHERE type_='PRACTICE' AND status_='COMPLETE' GROUP BY course_group_id_) cs ON cg.id_=cs.course_group_id_
  354. LEFT JOIN (SELECT course_group_id_,start_time_ FROM course_schedule WHERE type_='PRACTICE' GROUP BY course_group_id_) cst ON cg.id_=cst.course_group_id_
  355. WHERE cg.type_='PRACTICE' AND cg.status_ IN('ING','COMPLETE')
  356. <if test="param.search != null and param.search != ''">
  357. AND (
  358. cg.id_ LIKE concat('%',#{param.search},'%') OR
  359. cg.teacher_id_ LIKE concat('%',#{param.search},'%') OR
  360. sp.user_id_ LIKE concat('%',#{param.search},'%') OR
  361. cg.name_ LIKE concat('%',#{param.search},'%') OR
  362. tu.username_ LIKE concat('%',#{param.search},'%') OR
  363. su.username_ LIKE concat('%',#{param.search},'%')
  364. )
  365. </if>
  366. <if test="param.subjectId != null">
  367. AND cg.subject_id_ = #{param.subjectId}
  368. </if>
  369. <if test="param.status != null and param.status != ''">
  370. AND cg.status_ = #{param.status}
  371. </if>
  372. </select>
  373. <select id="selectPracticeGroupDetail"
  374. resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPracticeDetailVo">
  375. SELECT * FROM
  376. (SELECT
  377. cs.id_ AS courseId,
  378. sb.name_ AS subjectName,
  379. cs.teacher_id_ AS teacherId,
  380. tu.username_ AS teacherName,
  381. tu.real_name_ AS teacherRealName,
  382. sp.user_id_ AS studentId,
  383. su.username_ AS studentName,
  384. su.real_name_ AS studentRealName,
  385. cs.status_ AS `status`,
  386. cs.start_time_ AS startTime,
  387. cs.end_time_ AS endTime,
  388. (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ THEN 1 ELSE 0 END) AS teacherInSign,
  389. (CASE WHEN cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherOutSign,
  390. (CASE WHEN cs.start_time_ &gt;= sa.sign_in_time_ THEN 1 ELSE 0 END) AS studentInSign,
  391. (CASE WHEN cs.end_time_ &lt;= sa.sign_out_time_ THEN 1 ELSE 0 END) AS studentOutSign,
  392. ts.status_ AS salaryStatus
  393. FROM course_schedule cs
  394. LEFT JOIN course_group cg ON cs.course_group_id_=cg.id_
  395. LEFT JOIN `subject` sb ON cg.subject_id_=sb.id_
  396. LEFT JOIN sys_user tu ON cs.teacher_id_=tu.id_
  397. LEFT JOIN course_schedule_student_payment sp ON cs.id_=sp.course_id_
  398. LEFT JOIN sys_user su ON sp.user_id_=su.id_
  399. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
  400. LEFT JOIN student_attendance sa ON cs.id_=sa.course_schedule_id_
  401. LEFT JOIN course_schedule_teacher_salary ts ON cs.id_=ts.course_schedule_id_
  402. WHERE cs.type_='PRACTICE'
  403. AND cs.lock_=0
  404. AND cs.course_group_id_=#{param.courseGroupId}) a
  405. <where>
  406. <if test="param.search != null and param.search != ''">
  407. AND (
  408. courseId LIKE concat('%',#{param.search},'%') OR
  409. teacherName LIKE concat('%',#{param.search},'%') OR
  410. teacherId LIKE concat('%',#{param.search},'%') OR
  411. studentName LIKE concat('%',#{param.search},'%') OR
  412. studentId LIKE concat('%',#{param.search},'%')
  413. )
  414. </if>
  415. <if test="param.teacherSign == 1">
  416. AND teacherInSign = #{param.teacherSign}
  417. </if>
  418. <if test="param.teacherSign == 0">
  419. AND teacherOutSign = #{param.teacherSign}
  420. </if>
  421. <if test="param.studentSign == 1">
  422. AND studentInSign = #{param.studentSign}
  423. </if>
  424. <if test="param.studentSign == 0">
  425. AND studentOutSign = #{param.studentSign}
  426. </if>
  427. <if test="param.status != null and param.status != ''">
  428. AND `status` = #{param.status}
  429. </if>
  430. <if test="param.salaryStatus != null and param.salaryStatus != ''">
  431. AND salaryStatus = #{param.salaryStatus}
  432. </if>
  433. <if test="param.startTime != null">
  434. AND startTime &lt;= #{param.startTime}
  435. </if>
  436. <if test="param.endTime != null">
  437. AND endTime &gt;= #{param.endTime}
  438. </if>
  439. </where>
  440. </select>
  441. <select id="selectLiveGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupLiveVo">
  442. SELECT
  443. cg.id_ AS courseGroupId,
  444. cg.name_ AS courseGroupName,
  445. cg.subject_id_ AS subjectId,
  446. sb.name_ AS subjectName,
  447. cg.teacher_id_ AS teacherId,
  448. su.username_ AS teacherName,
  449. su.real_name_ AS teacherRealName,
  450. cg.course_num_ AS courseNum,
  451. cg.pre_student_num_ AS studentNum,
  452. cg.status_ AS `status`,
  453. IFNULL(cm.count_,0) AS completeCount,
  454. st.start_time_ AS startTime
  455. FROM course_group cg
  456. LEFT JOIN `subject` sb ON cg.subject_id_=sb.id_
  457. LEFT JOIN sys_user su ON su.id_=cg.teacher_id_
  458. 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_
  459. 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_
  460. WHERE cg.type_='LIVE'
  461. <if test="param.search != null and param.search != ''">
  462. AND (
  463. cg.id_ LIKE concat('%',#{param.search},'%') OR
  464. cg.teacher_id_ LIKE concat('%',#{param.search},'%') OR
  465. cg.name_ LIKE concat('%',#{param.search},'%') OR
  466. su.username_ LIKE concat('%',#{param.search},'%')
  467. )
  468. </if>
  469. <if test="param.subjectId != null">
  470. AND cg.subject_id_ = #{param.subjectId}
  471. </if>
  472. <if test="param.status != null and param.status != ''">
  473. AND cg.status_ = #{param.status}
  474. </if>
  475. </select>
  476. <select id="selectLiveGroupStudent" resultType="com.yonge.cooleshow.biz.dal.vo.CourseSchedulePaymentVo">
  477. SELECT
  478. p.user_id_ AS studentId,
  479. u.username_ AS studentName,
  480. u.real_name_ AS studentRealName,
  481. u.phone_ AS studentPhone,
  482. p.actual_price_ AS actualPrice,
  483. p.order_no_ AS orderNo,
  484. o.create_time_ AS createdOrderTime
  485. FROM course_schedule_student_payment p
  486. LEFT JOIN sys_user u ON p.user_id_=u.id_
  487. LEFT JOIN user_order o ON p.order_no_ = o.order_no_
  488. WHERE p.course_group_id_=#{param.groupId}
  489. <if test="param.search != null and param.search != ''">
  490. AND (
  491. p.course_id_ LIKE concat('%',#{param.search},'%') OR
  492. p.user_id_ LIKE concat('%',#{param.search},'%') OR
  493. u.username_ LIKE concat('%',#{param.search},'%') OR
  494. u.phone_ LIKE concat('%',#{param.search},'%')
  495. )
  496. </if>
  497. <if test="param.orderNo != null and param.orderNo != ''">
  498. AND p.order_no_ = #{param.orderNo}
  499. </if>
  500. <if test="param.startTime != null">
  501. AND o.create_time_ &lt;= #{param.startTime}
  502. </if>
  503. <if test="param.endTime != null">
  504. AND o.create_time_ &gt;= #{param.endTime}
  505. </if>
  506. </select>
  507. <select id="selectLiveGroupPlan" resultType="com.yonge.cooleshow.biz.dal.vo.CourseSchedulePlanVo">
  508. SELECT
  509. cs.id_ AS courseId,
  510. g.course_introduce_ AS courseIntroduce,
  511. cs.class_num_ AS classNum,
  512. cs.class_date_ AS classDate,
  513. cs.start_time_ AS startTime,
  514. cs.end_time_ AS endTime,
  515. ts.status_ AS salaryStatus,
  516. v.url_ AS url,
  517. cs.status_ AS courseStatus,
  518. (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ THEN 1 ELSE 0 END) AS teacherInSign,
  519. (CASE WHEN cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherOutSign
  520. FROM course_schedule cs
  521. LEFT JOIN course_group g ON cs.course_group_id_=g.id_
  522. LEFT JOIN course_schedule_teacher_salary ts ON cs.id_=ts.course_schedule_id_
  523. LEFT JOIN live_room_video v ON cs.id_=v.course_id_
  524. LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
  525. WHERE cs.course_group_id_= #{param.groupId}
  526. <if test="param.salaryStatus != null and param.salaryStatus != ''">
  527. AND ts.status_ = #{param.salaryStatus}
  528. </if>
  529. <if test="param.startTime != null">
  530. AND cs.start_time_ &lt;= #{param.startTime}
  531. </if>
  532. <if test="param.endTime != null">
  533. AND cs.end_time_ &gt;= #{param.endTime}
  534. </if>
  535. <if test="param.endTime != null">
  536. AND cs.id_ LIKE concat('%',#{param.courseId},'%')
  537. </if>
  538. </select>
  539. <select id="selectVideoGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupVideoVo">
  540. SELECT
  541. g.id_ AS groupId,
  542. g.lesson_name_ AS lessonName,
  543. g.lesson_subject_ AS subjectId,
  544. s.name_ AS subjectName,
  545. g.lesson_count_ AS lessonCount,
  546. IFNULL(p.count_,0) AS buyCount,
  547. g.teacher_id_ AS teacherId,
  548. u.username_ AS teacherName,
  549. u.real_name_ AS teacherRealName,
  550. g.create_time_ AS createTime
  551. FROM video_lesson_group g
  552. LEFT JOIN `subject` s ON g.lesson_subject_=s.id_
  553. LEFT JOIN sys_user u ON g.teacher_id_=u.id_
  554. LEFT JOIN (
  555. SELECT video_lesson_group_id_,COUNT(1) AS count_ FROM video_lesson_purchase_record
  556. WHERE order_status_='PAID' GROUP BY video_lesson_group_id_) p ON g.id_=p.video_lesson_group_id_
  557. <where>
  558. <if test="param.search != null and param.search != ''">
  559. AND (
  560. g.id_ LIKE concat('%',#{param.search},'%') OR
  561. g.lesson_name_ LIKE concat('%',#{param.search},'%') OR
  562. g.teacher_id_ LIKE concat('%',#{param.search},'%') OR
  563. u.username_ LIKE concat('%',#{param.search},'%')
  564. )
  565. </if>
  566. <if test="param.subjectId != null and param.subjectId != ''">
  567. AND g.lesson_subject_ = #{param.subjectId}
  568. </if>
  569. </where>
  570. </select>
  571. <select id="selectVideoGroupStudent" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupStudentVo">
  572. SELECT
  573. r.student_id_ AS studentId,
  574. u.username_ AS studentName,
  575. u.real_name_ AS studentRealName,
  576. u.phone_ AS studentPhone,
  577. r.order_no_ AS orderNo,
  578. r.pay_money_ AS payMoney,
  579. o.create_time_ AS createTime
  580. FROM video_lesson_purchase_record r
  581. LEFT JOIN sys_user u ON r.student_id_=u.id_
  582. LEFT JOIN user_order o ON r.order_no_=o.order_no_
  583. WHERE r.order_status_='PAID'
  584. AND video_lesson_group_id_ = #{param.groupId}
  585. <if test="param.search != null and param.search != ''">
  586. AND (
  587. r.student_id_ LIKE concat('%',#{param.search},'%') OR
  588. u.username_ LIKE concat('%',#{param.search},'%') OR
  589. u.phone_ LIKE concat('%',#{param.search},'%')
  590. )
  591. </if>
  592. <if test="param.orderNo != null and param.orderNo != ''">
  593. AND r.order_no_ = #{param.orderNo}
  594. </if>
  595. <if test="param.startTime != null">
  596. AND o.create_time_ &lt;= #{param.startTime}
  597. </if>
  598. <if test="param.endTime != null">
  599. AND o.create_time_ &gt;= #{param.endTime}
  600. </if>
  601. </select>
  602. <select id="selectVideoGroupPlan" resultType="com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail">
  603. SELECT
  604. id_ AS id,
  605. video_title_ AS videoTitle,
  606. video_content_ AS videoContent,
  607. video_url_ AS videoUrl,
  608. cover_url_ AS coverUrl
  609. FROM video_lesson_group_detail
  610. WHERE video_lesson_group_id_=#{param.groupId}
  611. </select>
  612. <update id="opsPreStudentNum">
  613. update course_group
  614. set
  615. pre_student_num_ = pre_student_num_ + #{num}
  616. where id_ = #{id}
  617. </update>
  618. </mapper>