Files
yunhaifinance/backend/routes_backup/payments.js
T

192 lines
7.7 KiB
JavaScript

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 payment_requests';
const params = [];
if (status) {
query += ' WHERE status = ?';
params.push(status);
}
query += ' ORDER BY created_at DESC';
const paymentsResult = await db.query(query, params);
const payments = paymentsResult.rows;
res.json({ success: true, data: payments, count: payments.length });
} catch (error) {
console.error('获取付款请求列表失败:', error);
res.status(500).json({ success: false, message: '获取付款请求列表失败' });
}
});
router.get('/:id', authenticate, async (req, res) => {
try {
const { id } = req.params;
const paymentResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM payment_requests WHERE id = ?', [id]);
if (paymentResult.rows.length === 0) {
return res.status(404).json({ success: false, message: '付款请求不存在' });
}
const payment = paymentResult.rows[0];
res.json({ success: true, data: payment });
} 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 payment_requests (user_id, project_id, amount, description, status, created_at, updated_at) VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)',
[user_id, project_id, amount, description || '', 'pending']
);
const newPaymentResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM payment_requests WHERE id = ?', [result.lastID]);
const newPayment = newPaymentResult.rows[0];
console.log(`付款请求创建成功,由 ${req.user.username} 操作`);
res.json({ success: true, data: newPayment });
} catch (error) {
console.error('创建付款请求失败:', error);
res.status(500).json({ success: false, message: '创建付款请求失败' });
}
});
router.put('/:id', authenticate, async (req, res) => {
try {
const { id } = req.params;
const { amount, description } = req.body;
await db.query(
'UPDATE payment_requests SET amount = ?, description = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
[amount, description, id]
);
const updatedPaymentResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM payment_requests WHERE id = ?', [id]);
const updatedPayment = updatedPaymentResult.rows[0];
res.json({ success: true, data: updatedPayment });
} catch (error) {
console.error('更新付款请求信息失败:', error);
res.status(500).json({ success: false, message: '更新付款请求信息失败' });
}
});
router.delete('/:id', authenticate, async (req, res) => {
try {
const { id } = req.params;
const existingPayment = await db.query('SELECT id FROM payment_requests WHERE id = ?', [id]);
if (existingPayment.rows.length === 0) {
return res.status(404).json({ success: false, message: '付款请求不存在' });
}
await db.query('DELETE FROM payment_requests WHERE id = ?', [id]);
res.json({ success: true, message: '付款请求删除成功' });
} catch (error) {
console.error('删除付款请求失败:', error);
res.status(500).json({ success: false, message: '删除付款请求失败' });
}
});
router.post('/:id/submit', authenticate, async (req, res) => {
try {
const { id } = req.params;
await db.query(
'UPDATE payment_requests SET status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
['submitted', id]
);
const updatedPaymentResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM payment_requests WHERE id = ?', [id]);
const updatedPayment = updatedPaymentResult.rows[0];
console.log(`付款请求 ${id} 提交成功,由 ${req.user.username} 操作`);
res.json({ success: true, data: updatedPayment });
} catch (error) {
console.error('提交付款请求失败:', error);
res.status(500).json({ success: false, message: '提交付款请求失败' });
}
});
router.post('/:id/withdraw', authenticate, async (req, res) => {
try {
const { id } = req.params;
await db.query(
'UPDATE payment_requests SET status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
['pending', id]
);
const updatedPaymentResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM payment_requests WHERE id = ?', [id]);
const updatedPayment = updatedPaymentResult.rows[0];
console.log(`付款请求 ${id} 撤回成功,由 ${req.user.username} 操作`);
res.json({ success: true, data: updatedPayment, message: '付款请求已撤回' });
} catch (error) {
console.error('撤回付款请求失败:', error);
res.status(500).json({ success: false, message: '撤回付款请求失败' });
}
});
router.post('/:id/approve', authenticate, async (req, res) => {
try {
const { id } = req.params;
await db.query(
'UPDATE payment_requests SET status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
['approved', id]
);
const updatedPaymentResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM payment_requests WHERE id = ?', [id]);
const updatedPayment = updatedPaymentResult.rows[0];
console.log(`付款请求 ${id} 审批通过成功,由 ${req.user.username} 操作`);
res.json({ success: true, data: updatedPayment });
} catch (error) {
console.error('审批通过付款请求失败:', error);
res.status(500).json({ success: false, message: '审批通过付款请求失败' });
}
});
router.post('/:id/reject', authenticate, async (req, res) => {
try {
const { id } = req.params;
await db.query(
'UPDATE payment_requests SET status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
['rejected', id]
);
const updatedPaymentResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM payment_requests WHERE id = ?', [id]);
const updatedPayment = updatedPaymentResult.rows[0];
console.log(`付款请求 ${id} 审批拒绝成功,由 ${req.user.username} 操作`);
res.json({ success: true, data: updatedPayment });
} catch (error) {
console.error('审批拒绝付款请求失败:', error);
res.status(500).json({ success: false, message: '审批拒绝付款请求失败' });
}
});
app.use('/api/payment-requests', router);
};