60 lines
2.1 KiB
JavaScript
60 lines
2.1 KiB
JavaScript
const express = require('express');
|
||
const router = express.Router();
|
||
const VehicleType = require('../models/VehicleType');
|
||
const { authMiddleware, requireRole } = require('../middleware/auth');
|
||
|
||
// 获取所有车型(所有登录用户均可浏览)
|
||
router.get('/', authMiddleware, async (req, res) => {
|
||
try {
|
||
const filter = {};
|
||
if (req.query.storeId) filter.storeId = req.query.storeId;
|
||
const vehicleTypes = await VehicleType.find(filter).sort({ createdAt: -1 });
|
||
res.json({ success: true, data: vehicleTypes });
|
||
} catch (error) {
|
||
res.status(500).json({ success: false, message: '服务器内部错误' });
|
||
}
|
||
});
|
||
|
||
// 创建车型(需 admin 或 store)
|
||
router.post('/', authMiddleware, requireRole('admin', 'store'), async (req, res) => {
|
||
try {
|
||
const vehicleType = new VehicleType(req.body);
|
||
await vehicleType.save();
|
||
res.status(201).json({ success: true, data: vehicleType });
|
||
} catch (error) {
|
||
res.status(400).json({ success: false, message: '服务器内部错误' });
|
||
}
|
||
});
|
||
|
||
// 更新车型(需 admin 或 store)
|
||
router.put('/:id', authMiddleware, requireRole('admin', 'store'), async (req, res) => {
|
||
try {
|
||
const vehicleType = await VehicleType.findByIdAndUpdate(
|
||
req.params.id,
|
||
req.body,
|
||
{ new: true, runValidators: true }
|
||
);
|
||
if (!vehicleType) {
|
||
return res.status(404).json({ success: false, message: '车型不存在' });
|
||
}
|
||
res.json({ success: true, data: vehicleType });
|
||
} catch (error) {
|
||
res.status(400).json({ success: false, message: '服务器内部错误' });
|
||
}
|
||
});
|
||
|
||
// 删除车型(需 admin 或 store)
|
||
router.delete('/:id', authMiddleware, requireRole('admin', 'store'), async (req, res) => {
|
||
try {
|
||
const vehicleType = await VehicleType.findByIdAndDelete(req.params.id);
|
||
if (!vehicleType) {
|
||
return res.status(404).json({ success: false, message: '车型不存在' });
|
||
}
|
||
res.json({ success: true, message: '车型已删除' });
|
||
} catch (error) {
|
||
res.status(500).json({ success: false, message: '服务器内部错误' });
|
||
}
|
||
});
|
||
|
||
module.exports = router;
|