diff --git a/server.js b/server.js index e76c8f1..6c1ca8b 100644 --- a/server.js +++ b/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' `; // 并行执行查询