|
@@ -1,5 +1,6 @@
|
|
|
const Transaction = require('../models/Transaction');
|
|
|
const Group = require('../models/Group');
|
|
|
+const { pool } = require('../config/database');
|
|
|
|
|
|
// @desc 获取交易列表
|
|
|
// @route GET /api/transactions
|
|
@@ -66,9 +67,68 @@ const deleteTransaction = async (req, res) => {
|
|
|
// @access Private
|
|
|
const getDashboardData = async (req, res) => {
|
|
|
try {
|
|
|
- const data = await Transaction.getDashboardData();
|
|
|
- res.json(data);
|
|
|
+ // 获取总群组数
|
|
|
+ const [groupResult] = await pool.query('SELECT COUNT(*) as total FROM groups WHERE is_active = true');
|
|
|
+ const totalGroups = groupResult[0].total;
|
|
|
+
|
|
|
+ // 获取总交易数
|
|
|
+ const [transactionResult] = await pool.query('SELECT COUNT(*) as total FROM transactions');
|
|
|
+ const totalTransactions = transactionResult[0].total;
|
|
|
+
|
|
|
+ // 获取总金额
|
|
|
+ const [amountResult] = await pool.query(`
|
|
|
+ SELECT
|
|
|
+ COALESCE(SUM(CASE WHEN type = 'deposit' THEN amount ELSE -amount END), 0) as total
|
|
|
+ FROM transactions
|
|
|
+ `);
|
|
|
+ const totalAmount = parseFloat(amountResult[0].total) || 0;
|
|
|
+
|
|
|
+ // 获取今日交易数
|
|
|
+ const [todayResult] = await pool.query(`
|
|
|
+ SELECT COUNT(*) as total
|
|
|
+ FROM transactions
|
|
|
+ WHERE DATE(time) = CURDATE()
|
|
|
+ `);
|
|
|
+ const todayTransactions = todayResult[0].total;
|
|
|
+
|
|
|
+ // 获取最近交易
|
|
|
+ const [recentTransactions] = await pool.query(`
|
|
|
+ SELECT
|
|
|
+ t.*,
|
|
|
+ u.username as operator_name,
|
|
|
+ g.group_name
|
|
|
+ FROM transactions t
|
|
|
+ LEFT JOIN users u ON t.operator_id = u.id
|
|
|
+ LEFT JOIN groups g ON t.group_id = g.group_id
|
|
|
+ ORDER BY t.time DESC
|
|
|
+ LIMIT 5
|
|
|
+ `);
|
|
|
+
|
|
|
+ // 获取活跃群组
|
|
|
+ const [activeGroups] = await pool.query(`
|
|
|
+ SELECT
|
|
|
+ g.group_id,
|
|
|
+ g.group_name,
|
|
|
+ COUNT(t.id) as totalTransactions,
|
|
|
+ COUNT(CASE WHEN DATE(t.time) = CURDATE() THEN 1 END) as todayTransactions
|
|
|
+ FROM groups g
|
|
|
+ LEFT JOIN transactions t ON g.group_id = t.group_id
|
|
|
+ WHERE g.is_active = true
|
|
|
+ GROUP BY g.group_id, g.group_name
|
|
|
+ ORDER BY todayTransactions DESC, totalTransactions DESC
|
|
|
+ LIMIT 5
|
|
|
+ `);
|
|
|
+
|
|
|
+ res.json({
|
|
|
+ totalGroups,
|
|
|
+ totalTransactions,
|
|
|
+ totalAmount,
|
|
|
+ todayTransactions,
|
|
|
+ recentTransactions,
|
|
|
+ activeGroups
|
|
|
+ });
|
|
|
} catch (error) {
|
|
|
+ console.error('获取仪表板数据失败:', error);
|
|
|
res.status(500).json({ message: '服务器错误' });
|
|
|
}
|
|
|
};
|