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表中查询活跃统计数据 // 从user_active_logs表中查询活跃统计数据
const activeStatsSql = ` const activeStatsSql = `
SELECT SELECT
COUNT(DISTINCT user_id) as totalActive, COUNT(DISTINCT ual.user_id) as totalActive,
SUM(active_duration) as totalDuration SUM(ual.active_duration) as totalDuration
FROM user_active_logs FROM user_active_logs ual
WHERE active_date BETWEEN DATE(?) AND DATE(?) JOIN users u ON ual.user_id = u.userId
WHERE ual.active_date BETWEEN DATE(?) AND DATE(?)
AND u.type != 'Colleague'
`; `;
// 查询一周内活跃客户数 // 查询一周内活跃客户数
const weekActiveSql = ` const weekActiveSql = `
SELECT COUNT(DISTINCT user_id) as weekActive SELECT COUNT(DISTINCT ual.user_id) as weekActive
FROM user_active_logs FROM user_active_logs ual
WHERE active_date >= DATE(DATE_SUB(NOW(), INTERVAL 7 DAY)) 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 = ` const countSql = `
SELECT COUNT(DISTINCT user_id) as total SELECT COUNT(DISTINCT ual.user_id) as total
FROM user_active_logs FROM user_active_logs ual
WHERE active_date BETWEEN DATE(?) AND DATE(?) 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, SUM(ual.active_duration) as totalDuration,
MAX(ual.last_active_time) as lastActiveTime MAX(ual.last_active_time) as lastActiveTime
FROM user_active_logs ual 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(?) WHERE ual.active_date BETWEEN DATE(?) AND DATE(?)
AND u.type != 'Colleague'
GROUP BY ual.user_id, u.phoneNumber, u.created_at GROUP BY ual.user_id, u.phoneNumber, u.created_at
ORDER BY lastActiveTime DESC ORDER BY lastActiveTime DESC
LIMIT ? OFFSET ? LIMIT ? OFFSET ?
@ -911,9 +918,11 @@ app.get('/api/active-stats/details/new', (req, res) => {
// 查询总数 // 查询总数
const countSql = ` const countSql = `
SELECT COUNT(DISTINCT user_id) as total SELECT COUNT(DISTINCT ual.user_id) as total
FROM user_active_logs FROM user_active_logs ual
WHERE active_date BETWEEN DATE(?) AND DATE(?) 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, SUM(ual.active_duration) as totalDuration,
MAX(ual.last_active_time) as lastActiveTime MAX(ual.last_active_time) as lastActiveTime
FROM user_active_logs ual 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(?) WHERE ual.active_date BETWEEN DATE(?) AND DATE(?)
AND u.type != 'Colleague'
GROUP BY ual.user_id, u.phoneNumber, u.created_at GROUP BY ual.user_id, u.phoneNumber, u.created_at
ORDER BY lastActiveTime DESC ORDER BY lastActiveTime DESC
LIMIT ? OFFSET ? LIMIT ? OFFSET ?
@ -1293,6 +1303,7 @@ app.get('/api/stats', (req, res) => {
WHERE ual.active_date >= DATE(DATE_SUB(NOW(), INTERVAL 1 DAY)) WHERE ual.active_date >= DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != '' AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
UNION ALL UNION ALL
SELECT 'total_active_7d', COUNT(DISTINCT ual.user_id) 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)) WHERE ual.active_date >= DATE(DATE_SUB(NOW(), INTERVAL 7 DAY))
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != '' AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
) )
SELECT * FROM dashboard_stats SELECT * FROM dashboard_stats
`; `;
@ -2398,6 +2410,7 @@ app.get('/api/active-stats', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ? WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != '' AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL 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 ? WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != '' AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL 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 ? WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != '' AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL 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 ? WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != '' AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
GROUP BY ual.user_id, u.phoneNumber, u.created_at GROUP BY ual.user_id, u.phoneNumber, u.created_at
ORDER BY lastActiveTime DESC ORDER BY lastActiveTime DESC
LIMIT ? OFFSET ? LIMIT ? OFFSET ?
@ -3162,6 +3178,7 @@ app.get('/api/active-stats/details', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ? WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != '' AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL 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 ? WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != '' AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
GROUP BY ual.active_date GROUP BY ual.active_date
ORDER BY ual.active_date DESC ORDER BY ual.active_date DESC
`; `;
@ -3447,6 +3465,7 @@ app.get('/api/total-active-duration', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ? WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != '' AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
GROUP BY ual.user_id, u.phoneNumber, u.created_at, u.updated_at GROUP BY ual.user_id, u.phoneNumber, u.created_at, u.updated_at
ORDER BY totalDuration DESC, activeDays DESC, lastActiveTime DESC ORDER BY totalDuration DESC, activeDays DESC, lastActiveTime DESC
LIMIT ? OFFSET ? LIMIT ? OFFSET ?
@ -3460,6 +3479,7 @@ app.get('/api/total-active-duration', (req, res) => {
WHERE ual.active_date BETWEEN ? AND ? WHERE ual.active_date BETWEEN ? AND ?
AND u.phoneNumber IS NOT NULL AND u.phoneNumber != '' AND u.phoneNumber IS NOT NULL AND u.phoneNumber != ''
AND u.created_at IS NOT NULL AND u.created_at IS NOT NULL
AND u.type != 'Colleague'
`; `;
// 并行执行查询 // 并行执行查询

Loading…
Cancel
Save