You've already forked FrameTour-BE
fix(stats): 修复景点人脸识别统计数据查询逻辑
- 修正了人脸上传统计查询中景点ID的过滤方式,从子查询改为直接解析params字段 - 移除了应用统计服务中的过期缓存逻辑 - 修复了任务完成用户统计的表关联错误,从task表改为member_video表进行统计
This commit is contained in:
@@ -86,11 +86,9 @@ public class ClickHouseStatsQueryServiceImpl implements StatsQueryService {
|
||||
sql.append("SELECT toInt32(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.trace_id IN (");
|
||||
appendEnterScenicTraceIdSubQuery(sql, query.getScenicId(), query.getStartTime(), query.getEndTime());
|
||||
sql.append(") ");
|
||||
sql.append("AND r.action = 'LOAD' ");
|
||||
sql.append("WHERE r.action = 'LOAD' ");
|
||||
sql.append("AND r.identifier = 'pages/videoSynthesis/buy' ");
|
||||
sql.append("AND JSONExtractString(r.params, 'scenicId') = '").append(query.getScenicId()).append("' ");
|
||||
sql.append("AND JSONExtractString(r.params, 'share') = '' ");
|
||||
if (query.getStartTime() != null) {
|
||||
sql.append("AND r.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
||||
@@ -150,10 +148,8 @@ public class ClickHouseStatsQueryServiceImpl implements StatsQueryService {
|
||||
sql.append("SELECT toInt32(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.trace_id IN (");
|
||||
appendEnterScenicTraceIdSubQuery(sql, query.getScenicId(), query.getStartTime(), query.getEndTime());
|
||||
sql.append(") ");
|
||||
sql.append("AND r.action = 'FACE_UPLOAD' ");
|
||||
sql.append("WHERE r.action = 'FACE_UPLOAD' ");
|
||||
sql.append("AND JSONExtractString(r.params, 'scenicId') = '").append(query.getScenicId()).append("' ");
|
||||
if (query.getStartTime() != null) {
|
||||
sql.append("AND s.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
||||
}
|
||||
@@ -168,10 +164,8 @@ public class ClickHouseStatsQueryServiceImpl implements StatsQueryService {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT DISTINCT r.identifier FROM t_stats_record r ");
|
||||
sql.append("INNER JOIN t_stats s ON r.trace_id = s.trace_id ");
|
||||
sql.append("WHERE r.trace_id IN (");
|
||||
appendEnterScenicTraceIdSubQuery(sql, query.getScenicId(), query.getStartTime(), query.getEndTime());
|
||||
sql.append(") ");
|
||||
sql.append("AND r.action = 'FACE_UPLOAD' ");
|
||||
sql.append("WHERE r.action = 'FACE_UPLOAD' ");
|
||||
sql.append("AND JSONExtractString(r.params, 'scenicId') = '").append(query.getScenicId()).append("' ");
|
||||
if (query.getStartTime() != null) {
|
||||
sql.append("AND s.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
|
||||
}
|
||||
|
||||
@@ -154,10 +154,9 @@
|
||||
|
||||
<!-- 根据 face_id 列表统计已完成任务的用户数 -->
|
||||
<select id="countCompletedTaskMembersByFaceIds" resultType="java.lang.Integer">
|
||||
SELECT COUNT(DISTINCT member_id) AS count
|
||||
FROM task
|
||||
WHERE status = 1
|
||||
AND face_id IN
|
||||
SELECT COUNT(DISTINCT mv.member_id) AS count
|
||||
FROM member_video mv
|
||||
WHERE mv.face_id IN
|
||||
<foreach collection="faceIds" item="faceId" open="(" separator="," close=")">
|
||||
#{faceId}
|
||||
</foreach>
|
||||
|
||||
Reference in New Issue
Block a user