You've already forked FrameTour-BE
feat(clickhouse): 添加打印样片页面访问统计功能
- 实现按小时统计访问打印样片页面人数的功能 - 实现按日期统计访问打印样片页面人数的功能 - 在ClickHouse查询服务中添加相应的SQL查询方法 - 在MySQL查询服务中添加接口实现 - 更新统计图表合并逻辑,支持打印样片访问数据展示 - 修改mergeChartData方法以支持三组数据合并 - 在MyBatis映射文件中添加对应的SQL查询语句 - 完善相关接口定义和文档注释
This commit is contained in:
@@ -89,4 +89,16 @@ public interface StatsQueryService {
|
||||
* 返回格式: [{t: "MM-dd", count: "xxx"}, ...]
|
||||
*/
|
||||
List<HashMap<String, String>> scanCodeMemberChartByDate(CommonQueryReq query);
|
||||
|
||||
/**
|
||||
* 按小时统计访问打印样片页面人数
|
||||
* 返回格式: [{t: "MM-dd HH", count: "xxx"}, ...]
|
||||
*/
|
||||
List<HashMap<String, String>> printerFromSampleChartByHour(CommonQueryReq query);
|
||||
|
||||
/**
|
||||
* 按日期统计访问打印样片页面人数
|
||||
* 返回格式: [{t: "MM-dd", count: "xxx"}, ...]
|
||||
*/
|
||||
List<HashMap<String, String>> printerFromSampleChartByDate(CommonQueryReq query);
|
||||
}
|
||||
|
||||
@@ -396,4 +396,62 @@ public class ClickHouseStatsQueryServiceImpl implements StatsQueryService {
|
||||
return map;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HashMap<String, String>> printerFromSampleChartByHour(CommonQueryReq query) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT formatDateTime(toStartOfHour(s.create_time), '%m-%d %H') AS t, ");
|
||||
sql.append(" uniqExact(s.member_id) AS count ");
|
||||
sql.append("FROM t_stats_record r ");
|
||||
sql.append("INNER JOIN t_stats s ON r.trace_id = s.trace_id ");
|
||||
sql.append("WHERE r.action = 'LOAD' ");
|
||||
sql.append("AND r.identifier = 'pages/printer/hello' ");
|
||||
if (query.getScenicId() != null) {
|
||||
sql.append("AND JSONExtractString(r.params, 'scenicId') = '").append(query.getScenicId()).append("' ");
|
||||
}
|
||||
if (query.getStartTime() != null) {
|
||||
sql.append("AND r.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
||||
}
|
||||
if (query.getEndTime() != null) {
|
||||
sql.append("AND r.create_time <= ").append(formatDateTime(query.getEndTime())).append(" ");
|
||||
}
|
||||
sql.append("GROUP BY toStartOfHour(s.create_time) ");
|
||||
sql.append("ORDER BY toStartOfHour(s.create_time)");
|
||||
|
||||
return getJdbcTemplate().query(sql.toString(), (rs, rowNum) -> {
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("t", rs.getString("t"));
|
||||
map.put("count", rs.getString("count"));
|
||||
return map;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HashMap<String, String>> printerFromSampleChartByDate(CommonQueryReq query) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT formatDateTime(toStartOfDay(s.create_time), '%m-%d') AS t, ");
|
||||
sql.append(" uniqExact(s.member_id) AS count ");
|
||||
sql.append("FROM t_stats_record r ");
|
||||
sql.append("INNER JOIN t_stats s ON r.trace_id = s.trace_id ");
|
||||
sql.append("WHERE r.action = 'LOAD' ");
|
||||
sql.append("AND r.identifier = 'pages/printer/hello' ");
|
||||
if (query.getScenicId() != null) {
|
||||
sql.append("AND JSONExtractString(r.params, 'scenicId') = '").append(query.getScenicId()).append("' ");
|
||||
}
|
||||
if (query.getStartTime() != null) {
|
||||
sql.append("AND r.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
||||
}
|
||||
if (query.getEndTime() != null) {
|
||||
sql.append("AND r.create_time <= ").append(formatDateTime(query.getEndTime())).append(" ");
|
||||
}
|
||||
sql.append("GROUP BY toStartOfDay(s.create_time) ");
|
||||
sql.append("ORDER BY toStartOfDay(s.create_time)");
|
||||
|
||||
return getJdbcTemplate().query(sql.toString(), (rs, rowNum) -> {
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("t", rs.getString("t"));
|
||||
map.put("count", rs.getString("count"));
|
||||
return map;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,4 +98,14 @@ public class MySqlStatsQueryServiceImpl implements StatsQueryService {
|
||||
public List<HashMap<String, String>> scanCodeMemberChartByDate(CommonQueryReq query) {
|
||||
return statisticsMapper.scanCodeMemberChartByDate(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HashMap<String, String>> printerFromSampleChartByHour(CommonQueryReq query) {
|
||||
return statisticsMapper.printerFromSampleChartByHour(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HashMap<String, String>> printerFromSampleChartByDate(CommonQueryReq query) {
|
||||
return statisticsMapper.printerFromSampleChartByDate(query);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user