Browse Source

客户活跃统计屏蔽内部人员

master
Trae AI 2 days ago
parent
commit
446a6eb181
  1. 50
      server.js

50
server.js

@ -672,17 +672,21 @@ app.get('/api/active-stats', (req, res) => {
// 从user_active_logs表中查询活跃统计数据
const activeStatsSql = `
SELECT
COUNT(DISTINCT user_id) as totalActive,
SUM(active_duration) as totalDuration
FROM user_active_logs
WHERE active_date BETWEEN DATE(?) AND DATE(?)
COUNT(DISTINCT ual.user_id) as totalActive,
SUM(ual.active_duration) as totalDuration
FROM user_active_logs ual
JOIN users u ON ual.user_id = u.userId
WHERE ual.active_date BETWEEN DATE(?) AND DATE(?)
AND u.type != 'Colleague'
`;
// 查询一周内活跃客户数
const weekActiveSql = `
SELECT COUNT(DISTINCT user_id) as weekActive
FROM user_active_logs
WHERE active_date >= DATE(DATE_SUB(NOW(), INTERVAL 7 DAY))
SELECT COUNT(DISTINCT ual.user_id) as weekActive
FROM user_active_logs ual
JOIN users u ON ual.user_id = u.userId
WHERE ual.active_date >= DATE(DATE_SUB(NOW(), INTERVAL 7 DAY))
AND u.type != 'Colleague'
`;
// 并行执行查询
@ -829,9 +833,11 @@ app.get('/api/active-stats/details', (req, res) => {
// 查询总数
const countSql = `
SELECT COUNT(DISTINCT user_id) as total
FROM user_active_logs
WHERE active_date BETWEEN DATE(?) AND DATE(?)
SELECT COUNT(DISTINCT ual.user_id) as total
FROM user_active_logs ual
JOIN users u ON ual.user_id = u.userId
WHERE ual.active_date BETWEEN DATE(?) AND DATE(?)
AND u.type != 'Colleague'
`;
// 查询客户活跃详情
@ -843,8 +849,9 @@ app.get('/api/active-stats/details', (req, res) => {
SUM(ual.active_duration) as totalDuration,
MAX(ual.last_active_time) as lastActiveTime
FROM user_active_logs ual
LEFT JOIN users u ON ual.user_id = u.userId
JOIN users u ON ual.user_id = u.userId
WHERE ual.active_date BETWEEN DATE(?) AND DATE(?)
AND u.type != 'Colleague'
GROUP BY ual.user_id, u.phoneNumber, u.created_at
ORDER BY lastActiveTime DESC
LIMIT ? OFFSET ?
@ -911,9 +918,11 @@ app.get('/api/active-stats/details/new', (req, res) => {
// 查询总数
const countSql = `
SELECT COUNT(DISTINCT user_id) as total
FROM user_active_logs
WHERE active_date BETWEEN DATE(?) AND DATE(?)
SELECT COUNT(DISTINCT ual.user_id) as total
FROM user_active_logs ual
JOIN users u ON ual.user_id = u.userId
WHERE ual.active_date BETWEEN DATE(?) AND DATE(?)
AND u.type != 'Colleague'
`;
// 查询客户活跃详情
@ -925,8 +934,9 @@ app.get('/api/active-stats/details/new', (req, res) => {
SUM(ual.active_duration) as totalDuration,
MAX(ual.last_active_time) as lastActiveTime
FROM user_active_logs ual
LEFT JOIN users u ON ual.user_id = u.userId
JOIN users u ON ual.user_id = u.userId
WHERE ual.active_date BETWEEN DATE(?) AND DATE(?)
AND u.type != 'Colleague'
GROUP BY ual.user_id, u.phoneNumber, u.created_at
ORDER BY lastActiveTime DESC
LIMIT ? OFFSET ?
@ -1293,6 +1303,7 @@ app.get('/api/stats', (req, res) => {
WHERE ual.active_date >= DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
UNION ALL
SELECT 'total_active_7d', COUNT(DISTINCT ual.user_id)
@ -1301,6 +1312,7 @@ app.get('/api/stats', (req, res) => {
WHERE ual.active_date >= DATE(DATE_SUB(NOW(), INTERVAL 7 DAY))
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
)
SELECT * FROM dashboard_stats
`;
@ -2398,6 +2410,7 @@ app.get('/api/active-stats', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
`;
// 查询时间范围内的活跃客户数
@ -2408,6 +2421,7 @@ app.get('/api/active-stats', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
`;
// 查询总活跃时长
@ -2418,6 +2432,7 @@ app.get('/api/active-stats', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
`;
// 并行执行查询
@ -3149,6 +3164,7 @@ app.get('/api/active-stats/details', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
GROUP BY ual.user_id, u.phoneNumber, u.created_at
ORDER BY lastActiveTime DESC
LIMIT ? OFFSET ?
@ -3162,6 +3178,7 @@ app.get('/api/active-stats/details', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
`;
// 并行执行查询
@ -3363,6 +3380,7 @@ app.get('/api/daily-active-stats', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
GROUP BY ual.active_date
ORDER BY ual.active_date DESC
`;
@ -3447,6 +3465,7 @@ app.get('/api/total-active-duration', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
GROUP BY ual.user_id, u.phoneNumber, u.created_at, u.updated_at
ORDER BY totalDuration DESC, activeDays DESC, lastActiveTime DESC
LIMIT ? OFFSET ?
@ -3460,6 +3479,7 @@ app.get('/api/total-active-duration', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
`;
// 并行执行查询

Loading…
Cancel
Save