HomeMapper.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.yonge.cooleshow.biz.dal.dao.HomeDao">
  5. <select id="getUserToDoNum" resultType="com.yonge.cooleshow.biz.dal.vo.res.HomeUserToDoNum">
  6. select
  7. (select count(1) from teacher_auth_entry_record a
  8. left join sys_user u on a.user_id_ = u.id_
  9. where u.del_flag_ =0 and a.teacher_auth_status_ = 'DOING') as entryNum,
  10. (select count(1) from teacher_auth_musician_record a
  11. left join sys_user u on a.user_id_ = u.id_
  12. where u.del_flag_ =0 and a.teacher_auth_status_ = 'DOING') as musicianNum,
  13. (select count(1) from music_sheet a
  14. left join sys_user u on a.user_id_ = u.id_
  15. where u.del_flag_ =0 and a.del_flag_ = 0 and a.audit_status_ = 'DOING') as musicNum,
  16. (select count(1) from video_lesson_group where audit_status_ = 'DOING') as videoCourseNum,
  17. (select count(1) from teacher_style_video a
  18. left join sys_user u on a.user_id_ = u.id_
  19. where u.del_flag_ =0 and a.del_flag_ = 0 and a.auth_status_ = 'DOING') as styleNum
  20. from dual
  21. </select>
  22. <select id="totalTeacher" resultType="com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher">
  23. select
  24. <if test="timeType != null and timeType == 'MONTH'">
  25. t.sys_day_ymd_ as timeStr,
  26. </if>
  27. <if test="timeType != null and timeType == 'YEAR'">
  28. t.sys_day_ym_ as timeStr,
  29. </if>
  30. sum(a.registerNum) as registerNum,
  31. sum(b.entryNum) as entryNum,
  32. sum(c.liveNum) as liveNum,
  33. sum(d.musicianNum) as musicianNum
  34. from sys_day t
  35. left join (
  36. select
  37. DATE_FORMAT(t.create_time_,'%Y-%m-%d') as timeStr,
  38. count(1) as registerNum
  39. from teacher t
  40. <where>
  41. <if test="param.startTime !=null">
  42. <![CDATA[AND t.create_time_ >= #{param.startTime} ]]>
  43. </if>
  44. <if test="param.endTime !=null">
  45. <![CDATA[AND t.create_time_ < #{param.endTime} ]]>
  46. </if>
  47. </where>
  48. group by DATE_FORMAT(t.create_time_,'%Y-%m-%d')
  49. ) a on t.sys_day_ymd_ = a.timeStr
  50. left join (
  51. select
  52. DATE_FORMAT(t.entry_auth_date_,'%Y-%m-%d') as timeStr,
  53. count(1) as entryNum
  54. from teacher t
  55. <where>
  56. t.entry_flag_ = 1
  57. <if test="param.startTime !=null">
  58. <![CDATA[AND t.entry_auth_date_ >= #{param.startTime} ]]>
  59. </if>
  60. <if test="param.endTime !=null">
  61. <![CDATA[AND t.entry_auth_date_ < #{param.endTime} ]]>
  62. </if>
  63. </where>
  64. group by DATE_FORMAT(t.entry_auth_date_,'%Y-%m-%d')
  65. ) b on t.sys_day_ymd_ = b.timeStr
  66. left join (
  67. select
  68. DATE_FORMAT(t.live_date_,'%Y-%m-%d') as timeStr,
  69. count(1) as liveNum
  70. from teacher t
  71. <where>
  72. <if test="param.startTime !=null">
  73. <![CDATA[AND t.live_date_ >= #{param.startTime} ]]>
  74. </if>
  75. <if test="param.endTime !=null">
  76. <![CDATA[AND t.live_date_ < #{param.endTime} ]]>
  77. </if>
  78. </where>
  79. group by DATE_FORMAT(t.live_date_,'%Y-%m-%d')
  80. ) c on t.sys_day_ymd_ = c.timeStr
  81. left join (
  82. select
  83. DATE_FORMAT(t.musician_date_,'%Y-%m-%d') as timeStr,
  84. count(1) as musicianNum
  85. from teacher t
  86. <where>
  87. t.musician_flag_ = 1
  88. <if test="param.startTime !=null">
  89. <![CDATA[AND t.musician_date_ >= #{param.startTime} ]]>
  90. </if>
  91. <if test="param.endTime !=null">
  92. <![CDATA[AND t.musician_date_ < #{param.endTime} ]]>
  93. </if>
  94. </where>
  95. group by DATE_FORMAT(t.musician_date_,'%Y-%m-%d')
  96. ) d on t.sys_day_ymd_ = d.timeStr
  97. <where>
  98. <if test="param.startTime !=null">
  99. <![CDATA[AND t.sys_day_ >= #{param.startTime} ]]>
  100. </if>
  101. <if test="param.endTime !=null">
  102. <![CDATA[AND t.sys_day_ < #{param.endTime} ]]>
  103. </if>
  104. </where>
  105. <if test="timeType != null and timeType == 'MONTH'">
  106. group by t.sys_day_ymd_
  107. </if>
  108. <if test="timeType != null and timeType == 'YEAR'">
  109. group by t.sys_day_ym_
  110. </if>
  111. order by t.sys_day_
  112. </select>
  113. <select id="totalStudent" resultType="com.yonge.cooleshow.biz.dal.vo.res.HomeTotalStudent">
  114. select
  115. <if test="timeType != null and timeType == 'MONTH'">
  116. t.sys_day_ymd_ as timeStr,
  117. </if>
  118. <if test="timeType != null and timeType == 'YEAR'">
  119. t.sys_day_ym_ as timeStr,
  120. </if>
  121. sum(a.registerNum) as registerNum,
  122. sum(b.vipNum) as vipNum,
  123. sum(c.practiceNum) as practiceNum,
  124. sum(d.videoNum) as videoNum,
  125. sum(e.liveNum) as liveNum,
  126. sum(f.musicNum) as musicNum,
  127. sum(g.shoppingNum) as shoppingNum
  128. ,sum(h.payNum) as payStudentNum
  129. from sys_day t
  130. left join (
  131. select
  132. DATE_FORMAT(t.create_time_,'%Y-%m-%d') as timeStr,
  133. count(1) as registerNum
  134. from student t
  135. <where>
  136. <if test="param.startTime !=null">
  137. <![CDATA[AND t.create_time_ >= #{param.startTime} ]]>
  138. </if>
  139. <if test="param.endTime !=null">
  140. <![CDATA[AND t.create_time_ < #{param.endTime} ]]>
  141. </if>
  142. </where>
  143. group by DATE_FORMAT(t.create_time_,'%Y-%m-%d')
  144. ) a on t.sys_day_ymd_ = a.timeStr
  145. left join (
  146. select
  147. DATE_FORMAT(t.first_vip_time_,'%Y-%m-%d') as timeStr,
  148. count(1) as vipNum
  149. from student_time t
  150. <where>
  151. <if test="param.startTime !=null">
  152. <![CDATA[AND t.first_vip_time_ >= #{param.startTime} ]]>
  153. </if>
  154. <if test="param.endTime !=null">
  155. <![CDATA[AND t.first_vip_time_ < #{param.endTime} ]]>
  156. </if>
  157. </where>
  158. group by DATE_FORMAT(t.first_vip_time_,'%Y-%m-%d')
  159. ) b on t.sys_day_ymd_ = b.timeStr
  160. left join (
  161. select
  162. DATE_FORMAT(t.first_pay_time_,'%Y-%m-%d') as timeStr,
  163. count(1) as payNum
  164. from student_time t
  165. <where>
  166. <if test="param.startTime !=null">
  167. <![CDATA[AND t.first_pay_time_ >= #{param.startTime} ]]>
  168. </if>
  169. <if test="param.endTime !=null">
  170. <![CDATA[AND t.first_pay_time_ < #{param.endTime} ]]>
  171. </if>
  172. </where>
  173. group by DATE_FORMAT(t.first_pay_time_,'%Y-%m-%d')
  174. ) h on t.sys_day_ymd_ = h.timeStr
  175. left join (
  176. select
  177. DATE_FORMAT(t.first_practice_time_,'%Y-%m-%d') as timeStr,
  178. count(1) as practiceNum
  179. from student_time t
  180. <where>
  181. <if test="param.startTime !=null">
  182. <![CDATA[AND t.first_practice_time_ >= #{param.startTime} ]]>
  183. </if>
  184. <if test="param.endTime !=null">
  185. <![CDATA[AND t.first_practice_time_ < #{param.endTime} ]]>
  186. </if>
  187. </where>
  188. group by DATE_FORMAT(t.first_practice_time_,'%Y-%m-%d')
  189. ) c on t.sys_day_ymd_ = c.timeStr
  190. left join (
  191. select
  192. DATE_FORMAT(t.first_video_time_,'%Y-%m-%d') as timeStr,
  193. count(1) as videoNum
  194. from student_time t
  195. <where>
  196. <if test="param.startTime !=null">
  197. <![CDATA[AND t.first_video_time_ >= #{param.startTime} ]]>
  198. </if>
  199. <if test="param.endTime !=null">
  200. <![CDATA[AND t.first_video_time_ < #{param.endTime} ]]>
  201. </if>
  202. </where>
  203. group by DATE_FORMAT(t.first_video_time_,'%Y-%m-%d')
  204. ) d on t.sys_day_ymd_ = d.timeStr
  205. left join (
  206. select
  207. DATE_FORMAT(t.first_live_time_,'%Y-%m-%d') as timeStr,
  208. count(1) as liveNum
  209. from student_time t
  210. <where>
  211. <if test="param.startTime !=null">
  212. <![CDATA[AND t.first_live_time_ >= #{param.startTime} ]]>
  213. </if>
  214. <if test="param.endTime !=null">
  215. <![CDATA[AND t.first_live_time_ < #{param.endTime} ]]>
  216. </if>
  217. </where>
  218. group by DATE_FORMAT(t.first_live_time_,'%Y-%m-%d')
  219. ) e on t.sys_day_ymd_ = e.timeStr
  220. left join (
  221. select
  222. DATE_FORMAT(t.first_music_time_,'%Y-%m-%d') as timeStr,
  223. count(1) as musicNum
  224. from student_time t
  225. <where>
  226. <if test="param.startTime !=null">
  227. <![CDATA[AND t.first_music_time_ >= #{param.startTime} ]]>
  228. </if>
  229. <if test="param.endTime !=null">
  230. <![CDATA[AND t.first_music_time_ < #{param.endTime} ]]>
  231. </if>
  232. </where>
  233. group by DATE_FORMAT(t.first_music_time_,'%Y-%m-%d')
  234. ) f on t.sys_day_ymd_ = f.timeStr
  235. left join (
  236. select
  237. DATE_FORMAT(t.first_mall_time_,'%Y-%m-%d') as timeStr,
  238. count(1) as shoppingNum
  239. from student_time t
  240. <where>
  241. <if test="param.startTime !=null">
  242. <![CDATA[AND t.first_mall_time_ >= #{param.startTime} ]]>
  243. </if>
  244. <if test="param.endTime !=null">
  245. <![CDATA[AND t.first_mall_time_ < #{param.endTime} ]]>
  246. </if>
  247. </where>
  248. group by DATE_FORMAT(t.first_mall_time_,'%Y-%m-%d')
  249. ) g on t.sys_day_ymd_ = g.timeStr
  250. <where>
  251. <if test="param.startTime !=null">
  252. <![CDATA[AND t.sys_day_ >= #{param.startTime} ]]>
  253. </if>
  254. <if test="param.endTime !=null">
  255. <![CDATA[AND t.sys_day_ < #{param.endTime} ]]>
  256. </if>
  257. </where>
  258. <if test="timeType != null and timeType == 'MONTH'">
  259. group by t.sys_day_ymd_
  260. </if>
  261. <if test="timeType != null and timeType == 'YEAR'">
  262. group by t.sys_day_ym_
  263. </if>
  264. order by t.sys_day_
  265. </select>
  266. <select id="tagTeacher" resultType="com.yonge.cooleshow.biz.dal.vo.TagTotalTeacher">
  267. SELECT
  268. <if test="timeType != null and timeType == 'MONTH'">
  269. DATE_FORMAT(live_date_,'%Y-%m-%d') as timeStr,
  270. </if>
  271. <if test="timeType != null and timeType == 'YEAR'">
  272. DATE_FORMAT(live_date_,'%Y-%m') as timeStr,
  273. </if>
  274. user_id_ ,
  275. 'LIVE' as tagType
  276. FROM
  277. teacher
  278. <where>
  279. <if test="param.startTime !=null">
  280. <![CDATA[AND live_date_ >= #{param.startTime} ]]>
  281. </if>
  282. <if test="param.endTime !=null">
  283. <![CDATA[AND live_date_ < #{param.endTime} ]]>
  284. </if>
  285. </where>
  286. UNION all
  287. SELECT
  288. <if test="timeType != null and timeType == 'MONTH'">
  289. DATE_FORMAT(style_date_,'%Y-%m-%d') as timeStr,
  290. </if>
  291. <if test="timeType != null and timeType == 'YEAR'">
  292. DATE_FORMAT(style_date_,'%Y-%m') as timeStr,
  293. </if>
  294. user_id_ ,
  295. 'STYLE' as tagType
  296. FROM
  297. teacher
  298. <where>
  299. <if test="param.startTime !=null">
  300. <![CDATA[AND style_date_ >= #{param.startTime} ]]>
  301. </if>
  302. <if test="param.endTime !=null">
  303. <![CDATA[AND style_date_ < #{param.endTime} ]]>
  304. </if>
  305. </where>
  306. UNION all
  307. SELECT
  308. <if test="timeType != null and timeType == 'MONTH'">
  309. DATE_FORMAT(music_date_,'%Y-%m-%d') as timeStr,
  310. </if>
  311. <if test="timeType != null and timeType == 'YEAR'">
  312. DATE_FORMAT(music_date_,'%Y-%m') as timeStr,
  313. </if>
  314. user_id_ ,
  315. 'MUSIC' as tagType
  316. FROM
  317. teacher
  318. <where>
  319. <if test="param.startTime !=null">
  320. <![CDATA[AND music_date_ >= #{param.startTime} ]]>
  321. </if>
  322. <if test="param.endTime !=null">
  323. <![CDATA[AND music_date_ < #{param.endTime} ]]>
  324. </if>
  325. </where>
  326. UNION all
  327. SELECT
  328. <if test="timeType != null and timeType == 'MONTH'">
  329. DATE_FORMAT(video_date_,'%Y-%m-%d') as timeStr,
  330. </if>
  331. <if test="timeType != null and timeType == 'YEAR'">
  332. DATE_FORMAT(video_date_,'%Y-%m') as timeStr,
  333. </if>
  334. user_id_ ,
  335. 'VIDEO' as tagType
  336. FROM
  337. teacher
  338. <where>
  339. <if test="param.startTime !=null">
  340. <![CDATA[AND video_date_ >= #{param.startTime} ]]>
  341. </if>
  342. <if test="param.endTime !=null">
  343. <![CDATA[AND video_date_ < #{param.endTime} ]]>
  344. </if>
  345. </where>
  346. </select>
  347. <select id="selectSubjectHome" resultType="com.yonge.cooleshow.biz.dal.vo.SubjectHomeVo">
  348. select
  349. s.id_ as subjectId
  350. ,s.name_ as subjectName
  351. ,a.musicSheetNum as musicSheetNum
  352. ,a.enableMusicSheetNum as enableMusicSheetNum
  353. ,a.enablePlatformMusicSheetNum as enablePlatformMusicSheetNum
  354. ,a.musicPlatformSheetNum as musicPlatformSheetNum
  355. ,a.enableTeacherMusicSheetNum as enableTeacherMusicSheetNum
  356. ,a.musicTeacherSheetNum as musicTeacherSheetNum
  357. ,b.practiceNum as practiceNum
  358. ,c.pianoClassNum as pianoClassNum
  359. ,d.liveNum as liveNum
  360. ,e.videoNum as videoNum
  361. from subject s
  362. left join (
  363. select
  364. ms.music_subject_ ,
  365. sum(if(ms.audit_status_ = 'PASS' ,1,0)) as musicSheetNum,
  366. sum(if( ms.state_ = 1,1,0)) as enableMusicSheetNum,
  367. sum(if( ms.state_ = 1 and ms.source_type_ = 'PLATFORM',1,0)) as enablePlatformMusicSheetNum,
  368. sum(if(ms.source_type_ = 'PLATFORM',1,0)) as musicPlatformSheetNum,
  369. sum(if(ms.source_type_ = 'TEACHER' and ms.state_ = 1 and ms.audit_status_ = 'PASS',1,0)) as enableTeacherMusicSheetNum,
  370. sum(if(ms.source_type_ = 'TEACHER' and ms.audit_status_ = 'PASS',1,0)) as musicTeacherSheetNum
  371. from music_sheet ms
  372. where ms.del_flag_ = 0
  373. group by ms.music_subject_
  374. ) a on a.music_subject_ = s.id_
  375. left join (
  376. select
  377. cg.subject_id_,
  378. count(1) as practiceNum
  379. from course_group cg
  380. where cg.type_ = 'PRACTICE' and cg.status_ in ( 'ING','COMPLETE')
  381. group by cg.subject_id_
  382. ) b on b.subject_id_ = s.id_
  383. left join (
  384. select
  385. cg.subject_id_,
  386. count(1) as pianoClassNum
  387. from course_group cg
  388. where cg.type_ = 'PIANO_ROOM_CLASS' and cg.status_ in ( 'ING','COMPLETE')
  389. group by cg.subject_id_
  390. ) c on c.subject_id_ = s.id_
  391. left join (
  392. select
  393. cg.subject_id_,
  394. count(1) as liveNum
  395. from course_group cg
  396. where cg.type_ = 'LIVE' and cg.status_ in ( 'NOT_SALE','APPLY','ING','COMPLETE')
  397. group by cg.subject_id_
  398. ) d on d.subject_id_ = s.id_
  399. left join (
  400. select
  401. vlg.lesson_subject_,
  402. count(1) as videoNum
  403. from video_lesson_group vlg
  404. where vlg.shelves_flag_ = 1 and vlg.audit_status_ = 'PASS'
  405. group by vlg.lesson_subject_
  406. ) e on e.lesson_subject_ = s.id_
  407. where s.parent_subject_id_ !=0 and s.parent_subject_id_ is not null
  408. order by
  409. <choose>
  410. <when test="query.sortType == 'MUSIC'">
  411. a.enableMusicSheetNum
  412. </when>
  413. <when test="query.sortType == 'PLATFORM_MUSIC'">
  414. a.enablePlatformMusicSheetNum
  415. </when>
  416. <when test="query.sortType == 'TEACHER_MUSIC'">
  417. a.enableTeacherMusicSheetNum
  418. </when>
  419. <when test="query.sortType == 'PRACTICE'">
  420. b.practiceNum
  421. </when>
  422. <when test="query.sortType == 'PIANO'">
  423. c.pianoClassNum
  424. </when>
  425. <when test="query.sortType == 'LIVE'">
  426. d.liveNum
  427. </when>
  428. <when test="query.sortType == 'VIDEO'">
  429. e.videoNum
  430. </when>
  431. <otherwise>
  432. a.enableMusicSheetNum
  433. </otherwise>
  434. </choose>
  435. <choose>
  436. <when test="query.order == 'desc'">
  437. desc
  438. </when>
  439. <when test="query.order == 'asc'">
  440. asc
  441. </when>
  442. <otherwise>
  443. desc
  444. </otherwise>
  445. </choose>
  446. </select>
  447. </mapper>