SmsbSourcePlayRecordMapper.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.inspur.source.mapper.SmsbSourcePlayRecordMapper">
  6. <select id="playTopCountTimes" resultType="com.inspur.source.domain.vo.DashBoardPlayVo">
  7. SELECT
  8. mi.original_name AS fileName,
  9. spr.sourceNum
  10. FROM
  11. ( SELECT
  12. source_id, COUNT(*) AS sourceNum
  13. FROM smsb_source_play_record
  14. WHERE
  15. source_type = #{fileType} AND create_time between #{startTime} AND #{endTime}
  16. GROUP BY source_id
  17. ORDER BY sourceNum desc
  18. limit 5
  19. ) spr
  20. INNER JOIN smsb_minio_data mi ON spr.source_id = mi.id
  21. ORDER BY spr.sourceNum asc
  22. </select>
  23. <select id="selectSumDuration" resultType="com.inspur.source.domain.vo.DashBoardPlayVo">
  24. SELECT
  25. IFNULL( SUM( duration ), 0 ) AS sourceNum,
  26. source_type AS sourceType
  27. FROM
  28. smsb_source_play_record
  29. WHERE
  30. create_time between #{startTime} AND #{endTime}
  31. GROUP BY
  32. source_type
  33. </select>
  34. <select id="playTopCountDuration" resultType="com.inspur.source.domain.vo.DashBoardPlayVo">
  35. SELECT
  36. mi.original_name AS fileName,
  37. spr.sourceNum
  38. FROM
  39. ( SELECT
  40. IFNULL( SUM( duration ), 0 ) AS sourceNum, source_id
  41. FROM
  42. smsb_source_play_record
  43. WHERE
  44. source_type = #{fileType} AND create_time between #{startTime} AND #{endTime}
  45. GROUP BY source_id
  46. ORDER BY sourceNum desc
  47. LIMIT 5
  48. ) spr
  49. INNER JOIN smsb_minio_data mi ON spr.source_id = mi.id
  50. ORDER BY spr.sourceNum asc
  51. </select>
  52. <select id="sumOnlineTimeLine" resultType="com.inspur.source.domain.vo.DashBoardPlayVo">
  53. SELECT
  54. date_range.stat_date AS eventTime,
  55. COALESCE(SUM(t.duration), 0) AS sourceNum
  56. FROM (
  57. SELECT
  58. DATE_ADD(#{startTime}, INTERVAL t4.num DAY) AS stat_date
  59. FROM (
  60. SELECT
  61. (t3.num * 1000 + t2.num * 100 + t1.num * 10 + t0.num) AS num
  62. FROM
  63. (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t0,
  64. (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1,
  65. (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t2,
  66. (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t3
  67. ) t4
  68. WHERE DATE_ADD(#{startTime}, INTERVAL t4.num DAY) &lt;= #{endTime}
  69. ) date_range
  70. LEFT JOIN smsb_source_play_record t
  71. ON DATE(t.create_time) = date_range.stat_date
  72. AND t.create_time BETWEEN #{startTime} AND #{endTime} + INTERVAL 1 DAY - INTERVAL 1 SECOND
  73. AND t.source_type = #{fileType}
  74. GROUP BY date_range.stat_date
  75. ORDER BY date_range.stat_date
  76. </select>
  77. <select id="pushNumberStatistics" resultType="com.inspur.source.domain.vo.DashBoardPlayVo">
  78. SELECT
  79. COUNT( 1 ) AS totalNum,
  80. IFNULL( SUM( smsb.file_type = 1 ), 0 ) AS imageNum,
  81. IFNULL( SUM( smsb.file_type = 2 ), 0 ) AS videoNum
  82. FROM
  83. (
  84. SELECT
  85. sip.NAME,
  86. sip.id,
  87. sip.create_time,
  88. sipr.item_id,
  89. sifr.file_id,
  90. smd.type AS file_type
  91. FROM
  92. smsb_item_push sip
  93. LEFT JOIN smsb_item_push_rel sipr ON sip.id = sipr.push_id
  94. LEFT JOIN smsb_item_file_rel sifr ON sipr.item_id = sifr.item_id
  95. LEFT JOIN smsb_minio_data smd ON sifr.file_id = smd.id
  96. ) smsb
  97. </select>
  98. <select id="pushLineStatistics" resultType="com.inspur.source.domain.vo.DashBoardPlayVo">
  99. SELECT
  100. dates.date AS eventTime,
  101. COUNT(sip.id) AS sourceNum
  102. FROM (
  103. -- 生成近7天的日期(从7天前00:00:00到今天23:59:59)
  104. SELECT DATE_SUB(DATE(CURDATE()), INTERVAL 6 DAY) AS date UNION ALL
  105. SELECT DATE_SUB(DATE(CURDATE()), INTERVAL 5 DAY) UNION ALL
  106. SELECT DATE_SUB(DATE(CURDATE()), INTERVAL 4 DAY) UNION ALL
  107. SELECT DATE_SUB(DATE(CURDATE()), INTERVAL 3 DAY) UNION ALL
  108. SELECT DATE_SUB(DATE(CURDATE()), INTERVAL 2 DAY) UNION ALL
  109. SELECT DATE_SUB(DATE(CURDATE()), INTERVAL 1 DAY) UNION ALL
  110. SELECT DATE(CURDATE())
  111. ) AS dates
  112. LEFT JOIN smsb_item_push sip ON DATE(sip.create_time) = dates.date
  113. AND sip.create_time &gt;= DATE_SUB(DATE(CURDATE()), INTERVAL 6 DAY) -- 7天前00:00:00
  114. AND sip.create_time &lt; DATE_ADD(DATE(CURDATE()), INTERVAL 1 DAY) -- 今天23:59:59
  115. LEFT JOIN smsb_item_push_rel sipr ON sip.id = sipr.push_id
  116. LEFT JOIN smsb_item_file_rel sifr ON sipr.item_id = sifr.item_id
  117. LEFT JOIN smsb_minio_data smd ON sifr.file_id = smd.id
  118. GROUP BY dates.date
  119. ORDER BY dates.date;
  120. </select>
  121. <select id="querySourcePlaySummary" resultType="com.inspur.source.domain.vo.SmsbSourcePlaySummaryVo">
  122. SELECT
  123. source_id AS sourceId,
  124. COUNT( source_id ) AS playTimes,
  125. IFNULL(SUM( duration ), 0) AS playDuration,
  126. tenant_id AS tenant_id
  127. FROM
  128. smsb_source_play_record
  129. WHERE
  130. DATE ( create_time ) = CURDATE()
  131. GROUP BY
  132. source_id
  133. </select>
  134. <select id="selectTimesAndDuration" resultType="com.inspur.source.domain.vo.DashBoardPlayVo">
  135. SELECT
  136. date_range.stat_date AS eventTime,
  137. COALESCE(SUM(t.duration), 0) AS playDuration,
  138. COALESCE(COUNT(t.id), 0) AS playTimes
  139. FROM (
  140. SELECT
  141. DATE_ADD(#{startTime}, INTERVAL t4.num DAY) AS stat_date
  142. FROM (
  143. SELECT
  144. (t3.num * 1000 + t2.num * 100 + t1.num * 10 + t0.num) AS num
  145. FROM
  146. (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t0,
  147. (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1,
  148. (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t2,
  149. (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t3
  150. ) t4
  151. WHERE DATE_ADD(#{startTime}, INTERVAL t4.num DAY) &lt;= #{endTime}
  152. ) date_range
  153. LEFT JOIN smsb_source_play_record t
  154. ON DATE(t.create_time) = date_range.stat_date
  155. AND t.create_time BETWEEN #{startTime} AND #{endTime} + INTERVAL 1 DAY - INTERVAL 1 SECOND
  156. AND t.source_id = #{sourceId}
  157. GROUP BY date_range.stat_date
  158. ORDER BY date_range.stat_date
  159. </select>
  160. <select id="summaryList" resultType="com.inspur.source.domain.vo.DashboardPlaySummaryVo">
  161. SELECT
  162. mi.id AS sourceId,
  163. mi.original_name AS fileName,
  164. mi.type AS fileType,
  165. mi.tag AS fileTag,
  166. mi.screenshot as fileUrl,
  167. IFNULL( sps.playTimes, 0 ) AS playTimes,
  168. IFNULL( sps.playDuration, 0 ) AS playDuration
  169. FROM
  170. smsb_minio_data mi
  171. LEFT JOIN (
  172. SELECT
  173. source_id AS sourceId,
  174. IFNULL( SUM( play_times ), 0 ) AS playTimes,
  175. IFNULL( SUM( play_duration ), 0 ) AS playDuration
  176. FROM
  177. smsb_source_play_summary
  178. WHERE create_time BETWEEN #{bo.startTime} AND #{bo.endTime} + INTERVAL 1 DAY - INTERVAL 1 SECOND
  179. GROUP BY
  180. source_id
  181. ) sps ON mi.id = sps.sourceId
  182. WHERE mi.del_flag = 0
  183. <if test="bo.sourceName != null and bo.sourceName != ''">
  184. AND mi.original_name like concat('%',#{bo.sourceName},'%')
  185. </if>
  186. <if test="bo.sourceType != null">
  187. AND mi.type = #{bo.sourceType}
  188. </if>
  189. <if test="bo.sourceTag != null">
  190. AND mi.tag = #{bo.sourceTag}
  191. </if>
  192. ORDER BY mi.create_time desc
  193. </select>
  194. <select id="devicePlayList" resultType="com.inspur.source.domain.vo.SmsbSourcePlayRecordVo">
  195. SELECT
  196. sd.NAME AS deviceName,
  197. spr.playTimes,
  198. spr.duration
  199. FROM
  200. (
  201. SELECT
  202. device_id,
  203. COUNT( 1 ) AS playTimes,
  204. SUM( duration ) AS duration
  205. FROM
  206. smsb_source_play_record
  207. WHERE
  208. source_id = #{bo.sourceId}
  209. AND create_time BETWEEN #{bo.startTime} AND #{bo.endTime} + INTERVAL 1 DAY - INTERVAL 1 SECOND
  210. GROUP BY device_id
  211. ) spr
  212. LEFT JOIN smsb_device sd ON spr.device_id = sd.id
  213. </select>
  214. <select id="itemPlayList" resultType="com.inspur.source.domain.vo.SmsbSourcePlayRecordVo">
  215. SELECT
  216. si.item_name AS itemName,
  217. si.item_type AS itemType,
  218. spr.playTimes,
  219. spr.duration
  220. FROM
  221. (
  222. SELECT
  223. item_id,
  224. COUNT( 1 ) AS playTimes,
  225. SUM( duration ) AS duration
  226. FROM
  227. smsb_source_play_record
  228. WHERE
  229. source_id = #{bo.sourceId}
  230. AND create_time BETWEEN #{bo.startTime} AND #{bo.endTime} + INTERVAL 1 DAY - INTERVAL 1 SECOND
  231. GROUP BY item_id
  232. ) spr
  233. LEFT JOIN smsb_item si ON spr.item_id = si.id
  234. </select>
  235. </mapper>