初始化游戏小组管理系统后端项目
- 基于 NestJS + TypeScript + MySQL + Redis 架构 - 完整的模块化设计(认证、用户、小组、游戏、预约等) - JWT 认证和 RBAC 权限控制系统 - Docker 容器化部署支持 - 添加 CLAUDE.md 项目开发指南 - 配置 .gitignore 忽略文件 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
104
src/app.module.ts
Normal file
104
src/app.module.ts
Normal file
@@ -0,0 +1,104 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { ConfigModule, ConfigService } from '@nestjs/config';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { ScheduleModule } from '@nestjs/schedule';
|
||||
import { APP_GUARD } from '@nestjs/core';
|
||||
import { AppController } from './app.controller';
|
||||
import { AppService } from './app.service';
|
||||
|
||||
// 公共模块
|
||||
import { CommonModule } from './common/common.module';
|
||||
|
||||
// 配置文件
|
||||
import appConfig from './config/app.config';
|
||||
import databaseConfig from './config/database.config';
|
||||
import jwtConfig from './config/jwt.config';
|
||||
import redisConfig from './config/redis.config';
|
||||
import cacheConfig from './config/cache.config';
|
||||
import performanceConfig from './config/performance.config';
|
||||
|
||||
// 业务模块
|
||||
import { AuthModule } from './modules/auth/auth.module';
|
||||
import { UsersModule } from './modules/users/users.module';
|
||||
import { GroupsModule } from './modules/groups/groups.module';
|
||||
import { GamesModule } from './modules/games/games.module';
|
||||
import { AppointmentsModule } from './modules/appointments/appointments.module';
|
||||
import { LedgersModule } from './modules/ledgers/ledgers.module';
|
||||
import { SchedulesModule } from './modules/schedules/schedules.module';
|
||||
import { BlacklistModule } from './modules/blacklist/blacklist.module';
|
||||
import { HonorsModule } from './modules/honors/honors.module';
|
||||
import { AssetsModule } from './modules/assets/assets.module';
|
||||
import { PointsModule } from './modules/points/points.module';
|
||||
import { BetsModule } from './modules/bets/bets.module';
|
||||
|
||||
// 守卫
|
||||
import { JwtAuthGuard } from './common/guards/jwt-auth.guard';
|
||||
import { RolesGuard } from './common/guards/roles.guard';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
// 配置模块
|
||||
ConfigModule.forRoot({
|
||||
isGlobal: true,
|
||||
load: [appConfig, databaseConfig, jwtConfig, redisConfig, cacheConfig, performanceConfig],
|
||||
envFilePath: [
|
||||
`.env.${process.env.NODE_ENV || 'development'}`,
|
||||
'.env.local',
|
||||
'.env',
|
||||
],
|
||||
}),
|
||||
|
||||
// 数据库模块
|
||||
TypeOrmModule.forRootAsync({
|
||||
imports: [ConfigModule],
|
||||
useFactory: (configService: ConfigService) => ({
|
||||
type: 'mysql',
|
||||
host: configService.get('database.host'),
|
||||
port: configService.get('database.port'),
|
||||
username: configService.get('database.username'),
|
||||
password: configService.get('database.password'),
|
||||
database: configService.get('database.database'),
|
||||
entities: [__dirname + '/**/*.entity{.ts,.js}'],
|
||||
synchronize: configService.get('database.synchronize'),
|
||||
logging: configService.get('database.logging'),
|
||||
timezone: '+08:00',
|
||||
charset: 'utf8mb4',
|
||||
}),
|
||||
inject: [ConfigService],
|
||||
}),
|
||||
|
||||
// 定时任务模块
|
||||
ScheduleModule.forRoot(),
|
||||
|
||||
// 公共模块
|
||||
CommonModule,
|
||||
|
||||
// 业务模块
|
||||
AuthModule,
|
||||
UsersModule,
|
||||
GroupsModule,
|
||||
GamesModule,
|
||||
AppointmentsModule,
|
||||
LedgersModule,
|
||||
SchedulesModule,
|
||||
BlacklistModule,
|
||||
HonorsModule,
|
||||
AssetsModule,
|
||||
PointsModule,
|
||||
BetsModule,
|
||||
],
|
||||
controllers: [AppController],
|
||||
providers: [
|
||||
AppService,
|
||||
// 全局守卫
|
||||
{
|
||||
provide: APP_GUARD,
|
||||
useClass: JwtAuthGuard,
|
||||
},
|
||||
{
|
||||
provide: APP_GUARD,
|
||||
useClass: RolesGuard,
|
||||
},
|
||||
],
|
||||
})
|
||||
export class AppModule {}
|
||||
Reference in New Issue
Block a user