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;