e-scooter-rental-system/server/routes/vehicleTypes.js

60 lines
2.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;