备份:修复前完整项目快照 2026-04-19
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
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 verifications';
|
||||
const params = [];
|
||||
|
||||
if (status) {
|
||||
query += ' WHERE status = ?';
|
||||
params.push(status);
|
||||
}
|
||||
|
||||
query += ' ORDER BY created_at DESC';
|
||||
|
||||
const verificationsResult = await db.query(query, params);
|
||||
const verifications = verificationsResult.rows;
|
||||
res.json({ success: true, data: verifications, count: verifications.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 verificationResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM verifications WHERE id = ?', [id]);
|
||||
|
||||
if (verificationResult.rows.length === 0) {
|
||||
return res.status(404).json({ success: false, message: '核销不存在' });
|
||||
}
|
||||
|
||||
const verification = verificationResult.rows[0];
|
||||
res.json({ success: true, data: verification });
|
||||
} 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 verifications (user_id, project_id, amount, description, status, created_at, updated_at) VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)',
|
||||
[user_id, project_id, amount, description || '', 'pending']
|
||||
);
|
||||
|
||||
const newVerificationResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM verifications WHERE id = ?', [result.lastID]);
|
||||
const newVerification = newVerificationResult.rows[0];
|
||||
|
||||
console.log(`核销创建成功,由 ${req.user.username} 操作`);
|
||||
res.json({ success: true, data: newVerification });
|
||||
} 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 verifications SET amount = ?, description = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
|
||||
[amount, description, id]
|
||||
);
|
||||
|
||||
const updatedVerificationResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM verifications WHERE id = ?', [id]);
|
||||
const updatedVerification = updatedVerificationResult.rows[0];
|
||||
|
||||
res.json({ success: true, data: updatedVerification });
|
||||
} 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 existingVerification = await db.query('SELECT id FROM verifications WHERE id = ?', [id]);
|
||||
if (existingVerification.rows.length === 0) {
|
||||
return res.status(404).json({ success: false, message: '核销不存在' });
|
||||
}
|
||||
|
||||
await db.query('DELETE FROM verifications 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 verifications SET status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
|
||||
['submitted', id]
|
||||
);
|
||||
|
||||
const updatedVerificationResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM verifications WHERE id = ?', [id]);
|
||||
const updatedVerification = updatedVerificationResult.rows[0];
|
||||
|
||||
console.log(`核销 ${id} 提交成功,由 ${req.user.username} 操作`);
|
||||
res.json({ success: true, data: updatedVerification });
|
||||
} 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 verifications SET status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
|
||||
['pending', id]
|
||||
);
|
||||
|
||||
const updatedVerificationResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM verifications WHERE id = ?', [id]);
|
||||
const updatedVerification = updatedVerificationResult.rows[0];
|
||||
|
||||
console.log(`核销 ${id} 撤回成功,由 ${req.user.username} 操作`);
|
||||
res.json({ success: true, data: updatedVerification });
|
||||
} 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 verifications SET status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
|
||||
['approved', id]
|
||||
);
|
||||
|
||||
const updatedVerificationResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM verifications WHERE id = ?', [id]);
|
||||
const updatedVerification = updatedVerificationResult.rows[0];
|
||||
|
||||
console.log(`核销 ${id} 审批通过成功,由 ${req.user.username} 操作`);
|
||||
res.json({ success: true, data: updatedVerification });
|
||||
} 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 verifications SET status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
|
||||
['rejected', id]
|
||||
);
|
||||
|
||||
const updatedVerificationResult = await db.query('SELECT id, user_id, project_id, amount, description, status, created_at, updated_at FROM verifications WHERE id = ?', [id]);
|
||||
const updatedVerification = updatedVerificationResult.rows[0];
|
||||
|
||||
console.log(`核销 ${id} 审批拒绝成功,由 ${req.user.username} 操作`);
|
||||
res.json({ success: true, data: updatedVerification });
|
||||
} catch (error) {
|
||||
console.error('审批拒绝核销失败:', error);
|
||||
res.status(500).json({ success: false, message: '审批拒绝核销失败' });
|
||||
}
|
||||
});
|
||||
|
||||
app.use('/api/verifications', router);
|
||||
};
|
||||
Reference in New Issue
Block a user