Files
yunhaifinance/backend/routes_backup/subcontractors.js
T

100 lines
4.2 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 subcontractorsResult = await db.query('SELECT id, name, contact_person, contact_phone, address, created_at, updated_at FROM subcontractors');
const subcontractors = subcontractorsResult.rows;
res.json({ success: true, data: subcontractors, count: subcontractors.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 subcontractorResult = await db.query('SELECT id, name, contact_person, contact_phone, address, created_at, updated_at FROM subcontractors WHERE id = ?', [id]);
if (subcontractorResult.rows.length === 0) {
return res.status(404).json({ success: false, message: '子承包商不存在' });
}
const subcontractor = subcontractorResult.rows[0];
res.json({ success: true, data: subcontractor });
} catch (error) {
console.error('获取子承包商详情失败:', error);
res.status(500).json({ success: false, message: '获取子承包商详情失败' });
}
});
router.post('/', authenticate, async (req, res) => {
try {
const { name, contact_person, contact_phone, address } = req.body;
if (!name) {
return res.status(400).json({ success: false, message: '子承包商名称为必填项' });
}
const result = await db.query(
'INSERT INTO subcontractors (name, contact_person, contact_phone, address, created_at, updated_at) VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)',
[name, contact_person || '', contact_phone || '', address || '']
);
const newSubcontractorResult = await db.query('SELECT id, name, contact_person, contact_phone, address, created_at, updated_at FROM subcontractors WHERE id = ?', [result.lastID]);
const newSubcontractor = newSubcontractorResult.rows[0];
console.log(`子承包商 ${name} 创建成功,由 ${req.user.username} 操作`);
res.json({ success: true, data: newSubcontractor });
} 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 { name, contact_person, contact_phone, address } = req.body;
await db.query(
'UPDATE subcontractors SET name = ?, contact_person = ?, contact_phone = ?, address = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
[name, contact_person, contact_phone, address, id]
);
const updatedSubcontractorResult = await db.query('SELECT id, name, contact_person, contact_phone, address, created_at, updated_at FROM subcontractors WHERE id = ?', [id]);
const updatedSubcontractor = updatedSubcontractorResult.rows[0];
res.json({ success: true, data: updatedSubcontractor });
} 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 existingSubcontractor = await db.query('SELECT id FROM subcontractors WHERE id = ?', [id]);
if (existingSubcontractor.rows.length === 0) {
return res.status(404).json({ success: false, message: '子承包商不存在' });
}
await db.query('DELETE FROM subcontractors WHERE id = ?', [id]);
res.json({ success: true, message: '子承包商删除成功' });
} catch (error) {
console.error('删除子承包商失败:', error);
res.status(500).json({ success: false, message: '删除子承包商失败' });
}
});
app.use('/api/subcontractors', router);
};