From 8d7c63c5cfb19e4420afbc1a92096b4f023b7b7d Mon Sep 17 00:00:00 2001 From: notyclaw Date: Fri, 3 Apr 2026 13:53:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20riders.js=E6=B7=BB=E5=8A=A0/vehicles?= =?UTF-8?q?=E5=92=8C/orders=E8=B7=AF=E7=94=B1=EF=BC=88=E6=94=BE=E5=9C=A8/:?= =?UTF-8?q?id=E4=B9=8B=E5=89=8D=E9=81=BF=E5=85=8D=E8=A2=AB=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E8=B7=AF=E7=94=B1=E8=AF=AF=E5=8C=B9=E9=85=8D=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/routes/riders.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/server/routes/riders.js b/server/routes/riders.js index f3b0330..654e06b 100644 --- a/server/routes/riders.js +++ b/server/routes/riders.js @@ -165,6 +165,34 @@ router.post('/orders/:id/cancel', authMiddleware, requireRole('rider'), async (r // ===== 参数路由(放在最后) ===== +// 获取空闲车辆(公开接口,无需授权) +router.get('/vehicles', async (req, res) => { + try { + const Store = require('../models/Store'); + const Vehicle = require('../models/Vehicle'); + // 只返回关联门店已审批通过的空闲车辆 + const vehicles = await Vehicle.find({ status: '空闲' }) + .populate('storeId', 'name address') + .lean(); + res.json({ success: true, data: vehicles }); + } catch (error) { + res.status(500).json({ success: false, message: "服务器内部错误" }); + } +}); + +// 获取当前骑手的订单列表 +router.get('/orders', authMiddleware, requireRole('rider'), async (req, res) => { + try { + const orders = await Order.find({ customer: req.user.id }) + .populate('vehicle', 'model color vehicleId') + .populate('storeId', 'name') + .sort({ createdAt: -1 }); + res.json({ success: true, data: orders }); + } catch (error) { + res.status(500).json({ success: false, message: "服务器内部错误" }); + } +}); + // 获取骑手信息 router.get('/:id', authMiddleware, async (req, res) => { try {