const express = require('express'); const db = require('../db-sqlite'); const { authenticate } = require('../middleware/auth'); module.exports = function(app) { const router = express.Router(); router.get('/', authenticate, async (req, res) => { try { const { status } = req.query; let query = 'SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM executions'; const params = []; if (status) { query += ' WHERE status = ?'; params.push(status); } query += ' ORDER BY created_at DESC'; const executionsResult = await db.query(query, params); const executions = executionsResult.rows; res.json({ success: true, data: executions, count: executions.length }); } catch (error) { console.error('获取执行列表失败:', error); res.status(500).json({ success: false, message: '获取执行列表失败' }); } }); router.get('/pending', authenticate, async (req, res) => { try { const pendingResult = await db.query( 'SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM executions WHERE status = ? ORDER BY created_at DESC', ['pending'] ); const pending = pendingResult.rows; res.json({ success: true, data: pending, count: pending.length }); } catch (error) { console.error('获取待执行列表失败:', error); res.status(500).json({ success: false, message: '获取待执行列表失败' }); } }); router.get('/executed', authenticate, async (req, res) => { try { const executedResult = await db.query( 'SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM executions WHERE status = ? ORDER BY created_at DESC', ['executed'] ); const executed = executedResult.rows; res.json({ success: true, data: executed, count: executed.length }); } catch (error) { console.error('获取已执行列表失败:', error); res.status(500).json({ success: false, message: '获取已执行列表失败' }); } }); router.post('/', authenticate, async (req, res) => { try { const { user_id, project_id, amount, description } = req.body; if (!user_id || !project_id || !amount) { return res.status(400).json({ success: false, message: '用户ID、项目ID和金额为必填项' }); } const result = await db.query( 'INSERT INTO executions (user_id, project_id, amount, description, status, created_at, updated_at) VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)', [user_id, project_id, amount, description || '', 'pending'] ); const newExecutionResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM executions WHERE id = ?', [result.lastID]); const newExecution = newExecutionResult.rows[0]; console.log(`执行创建成功,由 ${req.user.username} 操作`); res.json({ success: true, data: newExecution }); } catch (error) { console.error('创建执行失败:', error); res.status(500).json({ success: false, message: '创建执行失败' }); } }); app.use('/api/executions', router); };