const express = require('express'); const router = express.Router(); const Transaction = require('../models/Transaction'); const Group = require('../models/Group'); // 获取群组交易记录(不需要认证) router.get('/transactions', async (req, res) => { try { const { page = 1, limit = 10, groupId } = req.query; if (!groupId) { return res.status(400).json({ message: '缺少群组ID参数' }); } console.log('查询参数:', { page, limit, groupId }); // 获取交易记录 const result = await Transaction.findAll( { groupId: groupId.toString() }, parseInt(page), parseInt(limit) ); console.log('查询结果:', result); // 获取统计数据 const today = new Date(); today.setHours(0, 0, 0, 0); const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); // 获取今日收入 const todayResult = await Transaction.findAll( { groupId: groupId.toString(), startDate: today.toISOString().split('T')[0], type: 'deposit' }, 1, 1000000 ); const todayIncome = todayResult.transactions.reduce((sum, t) => sum + parseFloat(t.amount), 0); // 获取本月收入 const monthResult = await Transaction.findAll( { groupId: groupId.toString(), startDate: firstDayOfMonth.toISOString().split('T')[0], type: 'deposit' }, 1, 1000000 ); const monthIncome = monthResult.transactions.reduce((sum, t) => sum + parseFloat(t.amount), 0); // 获取总收入 const totalResult = await Transaction.findAll( { groupId: groupId.toString(), type: 'deposit' }, 1, 1000000 ); const totalIncome = totalResult.transactions.reduce((sum, t) => sum + parseFloat(t.amount), 0); // 获取今日订单数 const todayOrdersResult = await Transaction.findAll( { groupId: groupId.toString(), startDate: today.toISOString().split('T')[0] }, 1, 1000000 ); const todayOrders = todayOrdersResult.transactions.length; // 获取群组信息(包含费率和汇率) const groupInfo = await Group.findByGroupId(groupId.toString()); if (!groupInfo) { return res.status(404).json({ message: '群组不存在' }); } // 计算入款相关数据 const depositCount = totalResult.transactions.length; const depositFeeRate = parseFloat(groupInfo.in_fee_rate) || 0; const depositExchangeRate = parseFloat(groupInfo.in_exchange_rate) || 1; // 计算出款相关数据 const withdrawResult = await Transaction.findAll( { groupId: groupId.toString(), type: 'withdrawal' }, 1, 1000000 ); const withdrawCount = withdrawResult.transactions.length; const totalWithdraw = withdrawResult.transactions.reduce((sum, t) => sum + parseFloat(t.amount), 0); const withdrawFeeRate = parseFloat(groupInfo.out_fee_rate) || 0; const withdrawExchangeRate = parseFloat(groupInfo.out_exchange_rate) || 1; // 计算余额 const balance = totalIncome - totalWithdraw; res.json({ transactions: result.transactions, total: result.total, statistics: { todayIncome, monthIncome, totalIncome, todayOrders }, summary: { totalDeposit: totalIncome, depositCount, depositFeeRate, depositExchangeRate, totalWithdraw, withdrawCount, withdrawFeeRate, withdrawExchangeRate, balance } }); } catch (error) { console.error('获取群组交易记录失败:', error); res.status(500).json({ message: '获取群组交易记录失败' }); } }); module.exports = router;