import { NextApiRequest, NextApiResponse } from 'next' import { getDemoData } from '../../../lib/demo-data' import { authenticateUser, getUserProfile, handleApiError, generateOrderNumber, calculateServiceCost, User } from '../../../lib/api-utils' import { db } from '../../../lib/supabase' export default async function handler( req: NextApiRequest, res: NextApiResponse ) { // 认证用户 const user = await authenticateUser(req, res) if (!user) return // 错误已在authenticateUser中处理 if (req.method === 'GET') { // 获取订单列表 try { // 在演示模式下返回演示数据 if (process.env.NODE_ENV === 'development' && !process.env.SUPABASE_URL) { const demoOrders = await getDemoData.orders() return res.status(200).json({ success: true, data: { orders: demoOrders, total: demoOrders.length } }) } // 从数据库获取订单 const orders = await db.select('orders', '*') // 根据用户类型过滤订单 const currentUser = await getUserProfile(user.id) let filteredOrders = orders if (currentUser && currentUser.user_type === 'individual') { // 个人用户只能看到自己的订单 filteredOrders = orders.filter((order: any) => order.user_id === user.id) } // 企业用户和管理员可以看到所有订单 return res.status(200).json({ success: true, data: { orders: filteredOrders, total: filteredOrders.length } }) } catch (error) { return handleApiError(res, error, 'Get orders') } } else if (req.method === 'POST') { // 创建新订单 const { service_type, service_name, source_language, target_language, duration, priority = 'normal', scheduled_time, notes } = req.body // 验证必填字段 if (!service_type || !source_language || !target_language) { return res.status(400).json({ success: false, error: '缺少必填字段', details: '服务类型、源语言和目标语言为必填项' }) } try { // 获取用户信息 const currentUser = await getUserProfile(user.id) const orderData = { order_number: generateOrderNumber(), user_id: user.id, user_name: currentUser?.name || user.email, user_email: user.email, service_type, service_name: service_name || service_type, source_language, target_language, duration: duration || null, status: 'pending', priority, cost: calculateServiceCost(service_type, duration), currency: 'CNY', scheduled_time: scheduled_time || null, notes: notes || null, created_at: new Date().toISOString(), updated_at: new Date().toISOString() } const newOrder = await db.insert('orders', orderData) return res.status(201).json({ success: true, message: '订单创建成功', data: { order: newOrder } }) } catch (error) { return handleApiError(res, error, 'Create order') } } else { return res.status(405).json({ success: false, error: '方法不允许' }) } }