AnalyticsContentReportMapper.xml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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="shop.alien.mapper.AnalyticsContentReportMapper">
  4. <sql id="contentUnion">
  5. SELECT content_id, content_type, content_title, interaction_count, like_count, comment_count,
  6. share_count, audit_status, audit_time, publish_time, status
  7. FROM analytics_content_stat_history
  8. WHERE stat_date &gt;= #{startDate}
  9. AND stat_date &lt;= #{endDate}
  10. UNION ALL
  11. SELECT content_id, content_type, content_title, interaction_count, like_count, comment_count,
  12. share_count, audit_status, audit_time, publish_time, status
  13. FROM analytics_content_stat_today
  14. WHERE #{endDate} &gt;= CURDATE()
  15. AND #{startDate} &lt;= CURDATE()
  16. </sql>
  17. <select id="sumContentMetrics" resultType="java.util.HashMap">
  18. SELECT COALESCE(SUM(content_publish_count), 0) AS publishCount,
  19. COALESCE(SUM(content_interaction_count), 0) AS interactionCount,
  20. COALESCE(SUM(audit_submit_count), 0) AS auditSubmitCount,
  21. COALESCE(SUM(audit_pass_count), 0) AS auditPassCount,
  22. COALESCE(SUM(audit_reject_count), 0) AS auditRejectCount
  23. FROM analytics_daily_summary
  24. WHERE stat_date &gt;= #{startDate}
  25. AND stat_date &lt;= #{endDate}
  26. </select>
  27. <select id="countCategoryDistribution" resultType="java.util.HashMap">
  28. SELECT content_type AS code,
  29. COUNT(DISTINCT content_id) AS cnt
  30. FROM (
  31. <include refid="contentUnion"/>
  32. ) t
  33. WHERE publish_time IS NOT NULL
  34. GROUP BY content_type
  35. ORDER BY cnt DESC
  36. </select>
  37. <select id="listAuditTrend" resultType="java.util.HashMap">
  38. SELECT stat_date AS statDate,
  39. DATE_FORMAT(stat_date, '%m-%d') AS label,
  40. COALESCE(audit_submit_count, 0) AS submitCount,
  41. COALESCE(audit_pass_count, 0) AS passCount,
  42. COALESCE(audit_reject_count, 0) AS rejectCount
  43. FROM analytics_daily_summary
  44. WHERE stat_date &gt;= #{startDate}
  45. AND stat_date &lt;= #{endDate}
  46. ORDER BY stat_date ASC
  47. </select>
  48. <select id="listInteractionTop10" resultType="java.util.HashMap">
  49. SELECT content_id AS contentId,
  50. MAX(content_title) AS contentTitle,
  51. SUM(interaction_count) AS interactionCount,
  52. SUM(like_count) AS likeCount,
  53. SUM(comment_count) AS commentCount,
  54. SUM(share_count) AS shareCount
  55. FROM (
  56. <include refid="contentUnion"/>
  57. ) t
  58. GROUP BY content_id, content_type
  59. ORDER BY interactionCount DESC
  60. LIMIT 10
  61. </select>
  62. <select id="pageAuditPassed" resultType="shop.alien.entity.analytics.AnalyticsContentStat">
  63. SELECT t.content_id AS contentId,
  64. t.content_type AS contentType,
  65. t.content_title AS contentTitle,
  66. t.audit_time AS auditTime,
  67. t.status,
  68. t.audit_status AS auditStatus
  69. FROM (
  70. SELECT content_id, content_type, content_title, audit_time, status, audit_status
  71. FROM analytics_content_stat_history
  72. WHERE audit_status = 1
  73. AND audit_time &gt;= #{startTime}
  74. AND audit_time &lt; #{endTime}
  75. UNION ALL
  76. SELECT content_id, content_type, content_title, audit_time, status, audit_status
  77. FROM analytics_content_stat_today
  78. WHERE audit_status = 1
  79. AND audit_time &gt;= #{startTime}
  80. AND audit_time &lt; #{endTime}
  81. ) t
  82. INNER JOIN (
  83. SELECT content_id, MAX(audit_time) AS max_audit_time
  84. FROM (
  85. SELECT content_id, audit_time
  86. FROM analytics_content_stat_history
  87. WHERE audit_status = 1
  88. AND audit_time &gt;= #{startTime}
  89. AND audit_time &lt; #{endTime}
  90. UNION ALL
  91. SELECT content_id, audit_time
  92. FROM analytics_content_stat_today
  93. WHERE audit_status = 1
  94. AND audit_time &gt;= #{startTime}
  95. AND audit_time &lt; #{endTime}
  96. ) u
  97. GROUP BY content_id
  98. ) latest ON t.content_id = latest.content_id AND t.audit_time = latest.max_audit_time
  99. ORDER BY t.audit_time DESC
  100. </select>
  101. </mapper>