100 lines
4.0 KiB
JavaScript
100 lines
4.0 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 suppliersResult = await db.query('SELECT id, name, contact_person, contact_phone, address, created_at, updated_at FROM suppliers');
|
|
const suppliers = suppliersResult.rows;
|
|
res.json({ success: true, data: suppliers, count: suppliers.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 supplierResult = await db.query('SELECT id, name, contact_person, contact_phone, address, created_at, updated_at FROM suppliers WHERE id = ?', [id]);
|
|
|
|
if (supplierResult.rows.length === 0) {
|
|
return res.status(404).json({ success: false, message: '供应商不存在' });
|
|
}
|
|
|
|
const supplier = supplierResult.rows[0];
|
|
res.json({ success: true, data: supplier });
|
|
} 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 suppliers (name, contact_person, contact_phone, address, created_at, updated_at) VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)',
|
|
[name, contact_person || '', contact_phone || '', address || '']
|
|
);
|
|
|
|
const newSupplierResult = await db.query('SELECT id, name, contact_person, contact_phone, address, created_at, updated_at FROM suppliers WHERE id = ?', [result.lastID]);
|
|
const newSupplier = newSupplierResult.rows[0];
|
|
|
|
console.log(`供应商 ${name} 创建成功,由 ${req.user.username} 操作`);
|
|
res.json({ success: true, data: newSupplier });
|
|
} 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 suppliers SET name = ?, contact_person = ?, contact_phone = ?, address = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
|
|
[name, contact_person, contact_phone, address, id]
|
|
);
|
|
|
|
const updatedSupplierResult = await db.query('SELECT id, name, contact_person, contact_phone, address, created_at, updated_at FROM suppliers WHERE id = ?', [id]);
|
|
const updatedSupplier = updatedSupplierResult.rows[0];
|
|
|
|
res.json({ success: true, data: updatedSupplier });
|
|
} 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 existingSupplier = await db.query('SELECT id FROM suppliers WHERE id = ?', [id]);
|
|
if (existingSupplier.rows.length === 0) {
|
|
return res.status(404).json({ success: false, message: '供应商不存在' });
|
|
}
|
|
|
|
await db.query('DELETE FROM suppliers WHERE id = ?', [id]);
|
|
|
|
res.json({ success: true, message: '供应商删除成功' });
|
|
} catch (error) {
|
|
console.error('删除供应商失败:', error);
|
|
res.status(500).json({ success: false, message: '删除供应商失败' });
|
|
}
|
|
});
|
|
|
|
app.use('/api/suppliers', router);
|
|
};
|