const express = require('express'); const router = express.Router(); const Vehicle = require('../models/Vehicle'); // 获取所有车辆(支持按 storeId 过滤) router.get('/', async (req, res) => { try { const filter = {}; if (req.query.storeId) { filter.storeId = req.query.storeId; } const vehicles = await Vehicle.find(filter).populate('currentOrderId'); res.json({ success: true, data: vehicles }); } catch (error) { res.status(500).json({ success: false, message: error.message }); } }); // 获取单个车辆 router.get('/:id', async (req, res) => { try { const vehicle = await Vehicle.findById(req.params.id).populate('currentOrderId'); if (!vehicle) { return res.status(404).json({ success: false, message: '车辆不存在' }); } res.json({ success: true, data: vehicle }); } catch (error) { res.status(500).json({ success: false, message: error.message }); } }); // 创建车辆 router.post('/', async (req, res) => { try { const data = { ...req.body }; // status 为"在租"时自动设置 isRented if (data.status === '在租') { data.isRented = true; } const vehicle = new Vehicle(data); await vehicle.save(); res.status(201).json({ success: true, data: vehicle }); } catch (error) { res.status(400).json({ success: false, message: error.message }); } }); // 更新车辆 router.put('/:id', async (req, res) => { try { const data = { ...req.body }; // status 变化时同步 isRented if (data.status !== undefined) { data.isRented = data.status === '在租'; } const vehicle = await Vehicle.findByIdAndUpdate( req.params.id, data, { new: true, runValidators: true } ); if (!vehicle) { return res.status(404).json({ success: false, message: '车辆不存在' }); } res.json({ success: true, data: vehicle }); } catch (error) { res.status(400).json({ success: false, message: error.message }); } }); // 删除车辆 router.delete('/:id', async (req, res) => { try { const vehicle = await Vehicle.findByIdAndDelete(req.params.id); if (!vehicle) { return res.status(404).json({ success: false, message: '车辆不存在' }); } res.json({ success: true, message: '车辆已删除' }); } catch (error) { res.status(500).json({ success: false, message: error.message }); } }); // 按状态筛选车辆 router.get('/status/:status', async (req, res) => { try { const vehicles = await Vehicle.find({ status: req.params.status }); res.json({ success: true, data: vehicles }); } catch (error) { res.status(500).json({ success: false, message: error.message }); } }); // 更新车辆位置 router.patch('/:id/location', async (req, res) => { try { const { longitude, latitude } = req.body; const vehicle = await Vehicle.findByIdAndUpdate( req.params.id, { location: { type: 'Point', coordinates: [longitude, latitude] }, lastLocationUpdate: new Date() }, { new: true } ); if (!vehicle) { return res.status(404).json({ success: false, message: '车辆不存在' }); } res.json({ success: true, data: vehicle }); } catch (error) { res.status(400).json({ success: false, message: error.message }); } }); module.exports = router;