| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="shop.alien.mapper.AnalyticsContentReportMapper">
- <sql id="contentUnion">
- SELECT content_id, content_type, content_title, interaction_count, like_count, comment_count,
- share_count, audit_status, audit_time, publish_time, status
- FROM analytics_content_stat_history
- WHERE stat_date >= #{startDate}
- AND stat_date <= #{endDate}
- UNION ALL
- SELECT content_id, content_type, content_title, interaction_count, like_count, comment_count,
- share_count, audit_status, audit_time, publish_time, status
- FROM analytics_content_stat_today
- WHERE #{endDate} >= CURDATE()
- AND #{startDate} <= CURDATE()
- </sql>
- <select id="sumContentMetrics" resultType="java.util.HashMap">
- SELECT COALESCE(SUM(content_publish_count), 0) AS publishCount,
- COALESCE(SUM(content_interaction_count), 0) AS interactionCount,
- COALESCE(SUM(audit_submit_count), 0) AS auditSubmitCount,
- COALESCE(SUM(audit_pass_count), 0) AS auditPassCount,
- COALESCE(SUM(audit_reject_count), 0) AS auditRejectCount
- FROM analytics_daily_summary
- WHERE stat_date >= #{startDate}
- AND stat_date <= #{endDate}
- </select>
- <select id="countCategoryDistribution" resultType="java.util.HashMap">
- SELECT content_type AS code,
- COUNT(DISTINCT content_id) AS cnt
- FROM (
- <include refid="contentUnion"/>
- ) t
- WHERE publish_time IS NOT NULL
- GROUP BY content_type
- ORDER BY cnt DESC
- </select>
- <select id="listAuditTrend" resultType="java.util.HashMap">
- SELECT stat_date AS statDate,
- DATE_FORMAT(stat_date, '%m-%d') AS label,
- COALESCE(audit_submit_count, 0) AS submitCount,
- COALESCE(audit_pass_count, 0) AS passCount,
- COALESCE(audit_reject_count, 0) AS rejectCount
- FROM analytics_daily_summary
- WHERE stat_date >= #{startDate}
- AND stat_date <= #{endDate}
- ORDER BY stat_date ASC
- </select>
- <select id="listInteractionTop10" resultType="java.util.HashMap">
- SELECT content_id AS contentId,
- MAX(content_title) AS contentTitle,
- SUM(interaction_count) AS interactionCount,
- SUM(like_count) AS likeCount,
- SUM(comment_count) AS commentCount,
- SUM(share_count) AS shareCount
- FROM (
- <include refid="contentUnion"/>
- ) t
- GROUP BY content_id, content_type
- ORDER BY interactionCount DESC
- LIMIT 10
- </select>
- <select id="pageAuditPassed" resultType="shop.alien.entity.analytics.AnalyticsContentStat">
- SELECT t.content_id AS contentId,
- t.content_type AS contentType,
- t.content_title AS contentTitle,
- t.audit_time AS auditTime,
- t.status,
- t.audit_status AS auditStatus
- FROM (
- SELECT content_id, content_type, content_title, audit_time, status, audit_status
- FROM analytics_content_stat_history
- WHERE audit_status = 1
- AND audit_time >= #{startTime}
- AND audit_time < #{endTime}
- UNION ALL
- SELECT content_id, content_type, content_title, audit_time, status, audit_status
- FROM analytics_content_stat_today
- WHERE audit_status = 1
- AND audit_time >= #{startTime}
- AND audit_time < #{endTime}
- ) t
- INNER JOIN (
- SELECT content_id, MAX(audit_time) AS max_audit_time
- FROM (
- SELECT content_id, audit_time
- FROM analytics_content_stat_history
- WHERE audit_status = 1
- AND audit_time >= #{startTime}
- AND audit_time < #{endTime}
- UNION ALL
- SELECT content_id, audit_time
- FROM analytics_content_stat_today
- WHERE audit_status = 1
- AND audit_time >= #{startTime}
- AND audit_time < #{endTime}
- ) u
- GROUP BY content_id
- ) latest ON t.content_id = latest.content_id AND t.audit_time = latest.max_audit_time
- ORDER BY t.audit_time DESC
- </select>
- </mapper>
|