| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import Koa from 'koa';
- import cors from '@koa/cors';
- import Router from '@koa/router';
- import bodyParser from '@koa/bodyparser';
- import serve from 'koa-static';
- import mount from 'koa-mount';
- import path from 'path';
- import { config } from './config';
- import { connectDatabase } from './models';
- import { errorHandler } from './middleware/errorHandler';
- import authRoutes from './modules/auth/auth.controller';
- import ttsRoutes from './modules/tts/tts.controller';
- import audioRoutes from './modules/audio/audio.controller';
- import memberRoutes from './modules/member/member.controller';
- import shareRoutes from './modules/share/share.controller';
- import aiRoutes from './modules/ai/ai.controller';
- import playerRoutes from './modules/player/player.controller';
- import favoritesRoutes from './modules/favorites/favorites.controller';
- import preferencesRoutes from './modules/preferences/preferences.controller';
- import searchRoutes from './modules/search/search.controller';
- import categoriesRoutes from './modules/categories/categories.controller';
- import commentsRoutes from './modules/comments/comments.controller';
- import notificationsRoutes from './modules/notifications/notifications.controller';
- const app = new Koa();
- const router = new Router();
- // 中间件
- app.use(errorHandler);
- app.use(cors({
- origin: '*',
- allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
- allowHeaders: ['Content-Type', 'Authorization'],
- }));
- app.use(bodyParser());
- // 静态文件服务 - 音频文件
- app.use(mount('/uploads', serve(config.upload.dir)));
- // 健康检查
- router.get('/health', (ctx) => {
- ctx.body = { code: 0, message: 'ok', data: { status: 'healthy' } };
- });
- // 注册路由
- router.use('/api/auth', authRoutes.routes());
- router.use('/api/tts', ttsRoutes.routes());
- router.use('/api/audio', audioRoutes.routes());
- router.use('/api/member', memberRoutes.routes());
- router.use('/api/share', shareRoutes.routes());
- router.use('/api/ai', aiRoutes.routes());
- router.use('/api/player', playerRoutes.routes());
- router.use('/api/favorites', favoritesRoutes.routes());
- router.use('/api/user/preferences', preferencesRoutes.routes());
- router.use('/api/search', searchRoutes.routes());
- router.use('/api/categories', categoriesRoutes.routes());
- router.use('/api/comments', commentsRoutes.routes());
- router.use('/api/notifications', notificationsRoutes.routes());
- app.use(router.routes()).use(router.allowedMethods());
- // 启动服务
- async function start() {
- try {
- await connectDatabase();
- console.log('✅ MySQL 连接成功');
-
- app.listen(config.port, () => {
- console.log(`🚀 服务启动成功: http://localhost:${config.port}`);
- console.log(`📁 上传目录: ${config.upload.dir}`);
- });
- } catch (error) {
- console.error('❌ 服务启动失败:', error);
- process.exit(1);
- }
- }
- start();
|