const Koa = require('koa') const Router = require('koa-router') const cors = require('@koa/cors') const bodyParser = require('koa-bodyparser') const path = require('path') require('dotenv').config() const app = new Koa() const router = new Router() app.use(cors({ origin: '*', allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], allowHeaders: ['Content-Type', 'Authorization'] })) app.use(bodyParser({ jsonLimit: '10mb', formLimit: '10mb' })) app.use(require('koa-static')(path.join(__dirname, 'public'))) const errorHandler = async (ctx, next) => { try { await next() if (ctx.status === 404) { ctx.body = { code: 404, message: '接口不存在' } } } catch (error) { console.error('Server error:', error) ctx.status = error.status || 500 ctx.body = { code: ctx.status, message: process.env.NODE_ENV === 'production' ? '服务器内部错误' : error.message } } } app.use(errorHandler) const orderRoutes = require('./routes/orders') const categoryRoutes = require('./routes/categories') const goodsRoutes = require('./routes/goods') const userRoutes = require('./routes/users') const uploadRoutes = require('./routes/upload') const stockRoutes = require('./routes/stock') const aiRoutes = require('./routes/ai') const supplierRoutes = require('./routes/suppliers') const purchaseRoutes = require('./routes/purchases') const pointsGoodsRoutes = require('./routes/points-goods') const statsRoutes = require('./routes/stats') const priceListRoutes = require('./routes/price-list') const pointsLogsRoutes = require('./routes/points-logs') const recognizeRoutes = require('./routes/recognize') router.use('/api/orders', orderRoutes) router.use('/api/categories', categoryRoutes) router.use('/api/goods', goodsRoutes) router.use('/api/users', userRoutes) router.use('/api/upload', uploadRoutes) router.use('/api/stock', stockRoutes) router.use('/api/ai', aiRoutes) router.use('/api/suppliers', supplierRoutes) router.use('/api/purchases', purchaseRoutes) router.use('/api/points-goods', pointsGoodsRoutes) router.use('/api/stats', statsRoutes) router.use('/api/price-list', priceListRoutes) router.use('/api/points/logs', pointsLogsRoutes) router.use('/api/recognize', recognizeRoutes) app.use(router.routes()) app.use(router.allowedMethods()) const PORT = process.env.PORT || 3006 app.listen(PORT, () => { console.log(`Server running on port ${PORT}`) })