You've already forked FrameTour-BE
feat(clickhouse): 添加打印样片页面访问统计功能
- 实现按小时统计访问打印样片页面人数的功能 - 实现按日期统计访问打印样片页面人数的功能 - 在ClickHouse查询服务中添加相应的SQL查询方法 - 在MySQL查询服务中添加接口实现 - 更新统计图表合并逻辑,支持打印样片访问数据展示 - 修改mergeChartData方法以支持三组数据合并 - 在MyBatis映射文件中添加对应的SQL查询语句 - 完善相关接口定义和文档注释
This commit is contained in:
@@ -456,6 +456,70 @@
|
||||
) scan_data ON scan_data.date_key = date_series.DATE_KEY
|
||||
ORDER BY date_series.date_value
|
||||
</select>
|
||||
<select id="printerFromSampleChartByHour" resultType="java.util.HashMap">
|
||||
WITH RECURSIVE hour_series AS (
|
||||
SELECT
|
||||
#{startTime} AS hour_time,
|
||||
DATE_FORMAT(#{startTime}, '%m-%d %H') AS HOUR
|
||||
UNION ALL
|
||||
SELECT
|
||||
DATE_ADD(hour_time, INTERVAL 1 HOUR) AS hour_time,
|
||||
DATE_FORMAT(DATE_ADD(hour_time, INTERVAL 1 HOUR), '%m-%d %H') AS HOUR
|
||||
FROM hour_series
|
||||
WHERE DATE_ADD(hour_time, INTERVAL 1 HOUR) <= #{endTime}
|
||||
)
|
||||
SELECT
|
||||
hour_series.HOUR as t,
|
||||
COALESCE(scan_data.member_count, 0) AS count
|
||||
FROM hour_series
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
DATE_FORMAT(s.create_time, '%m-%d %H') AS hour_key,
|
||||
COUNT(DISTINCT s.member_id) AS member_count
|
||||
FROM `t_stats_record` r
|
||||
LEFT JOIN `t_stats` s ON r.trace_id = s.trace_id
|
||||
WHERE r.action = 'LOAD'
|
||||
AND r.identifier = 'pages/printer/hello'
|
||||
<if test="scenicId != null">
|
||||
AND JSON_EXTRACT(r.params, '$.scenicId') = #{scenicId}
|
||||
</if>
|
||||
AND s.create_time BETWEEN #{startTime} AND #{endTime}
|
||||
GROUP BY DATE_FORMAT(s.create_time, '%m-%d %H')
|
||||
) scan_data ON scan_data.hour_key = hour_series.HOUR
|
||||
ORDER BY hour_series.hour_time
|
||||
</select>
|
||||
<select id="printerFromSampleChartByDate" resultType="java.util.HashMap">
|
||||
WITH RECURSIVE date_series AS (
|
||||
SELECT
|
||||
DATE(#{startTime}) AS date_value,
|
||||
DATE_FORMAT(#{startTime}, '%m-%d') AS DATE_KEY
|
||||
UNION ALL
|
||||
SELECT
|
||||
DATE_ADD(date_value, INTERVAL 1 DAY) AS date_value,
|
||||
DATE_FORMAT(DATE_ADD(date_value, INTERVAL 1 DAY), '%m-%d') AS DATE_KEY
|
||||
FROM date_series
|
||||
WHERE DATE_ADD(date_value, INTERVAL 1 DAY) <= DATE(#{endTime})
|
||||
)
|
||||
SELECT
|
||||
date_series.DATE_KEY as t,
|
||||
COALESCE(scan_data.member_count, 0) AS count
|
||||
FROM date_series
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
DATE_FORMAT(s.create_time, '%m-%d') AS date_key,
|
||||
COUNT(DISTINCT s.member_id) AS member_count
|
||||
FROM `t_stats_record` r
|
||||
LEFT JOIN `t_stats` s ON r.trace_id = s.trace_id
|
||||
WHERE r.action = 'LOAD'
|
||||
AND r.identifier = 'pages/printer/hello'
|
||||
<if test="scenicId != null">
|
||||
AND JSON_EXTRACT(r.params, '$.scenicId') = #{scenicId}
|
||||
</if>
|
||||
AND s.create_time BETWEEN #{startTime} AND #{endTime}
|
||||
GROUP BY DATE_FORMAT(s.create_time, '%m-%d')
|
||||
) scan_data ON scan_data.date_key = date_series.DATE_KEY
|
||||
ORDER BY date_series.date_value
|
||||
</select>
|
||||
<select id="orderChartByHourForMerge" resultType="java.util.HashMap">
|
||||
WITH RECURSIVE hour_series AS (
|
||||
SELECT
|
||||
|
||||
Reference in New Issue
Block a user