forked from datawhale/whale-town-end
feat(sql, auth, email, dto):重构邮箱验证流程,引入基于内存的用户服务,并改进 API 响应处理
* 新增完整的 API 状态码文档,并对测试模式进行特殊处理(`206 Partial Content`) * 重组 DTO 结构,引入 `app.dto.ts` 与 `error_response.dto.ts`,以实现统一、规范的响应格式 * 重构登录相关 DTO,优化命名与结构,提升可维护性 * 实现基于内存的用户服务(`users_memory.service.ts`),用于开发与测试环境 * 更新邮件服务,增强验证码生成逻辑,并支持测试模式自动识别 * 增强登录控制器与服务层的错误处理能力,统一响应行为 * 优化核心登录服务,强化参数校验并集成邮箱验证流程 * 新增 `@types/express` 依赖,提升 TypeScript 类型支持与开发体验 * 改进 `main.ts`,优化应用初始化流程与配置管理 * 在所有服务中统一错误处理机制,采用标准化的错误响应格式 * 实现测试模式(`206`)与生产环境邮件发送(`200`)之间的无缝切换
This commit is contained in:
@@ -1,8 +1,52 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { ConfigService } from '@nestjs/config';
|
||||
import { AppStatusResponseDto } from './dto/app.dto';
|
||||
|
||||
/**
|
||||
* 应用服务类
|
||||
*
|
||||
* 功能描述:
|
||||
* - 提供应用基础服务
|
||||
* - 返回应用运行状态信息
|
||||
*
|
||||
* @author angjustinl
|
||||
* @version 1.0.0
|
||||
* @since 2025-12-17
|
||||
*/
|
||||
@Injectable()
|
||||
export class AppService {
|
||||
getStatus(): string {
|
||||
return 'Pixel Game Server is running!';
|
||||
private readonly startTime: number;
|
||||
|
||||
constructor(private readonly configService: ConfigService) {
|
||||
this.startTime = Date.now();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取应用状态
|
||||
*
|
||||
* @returns 应用状态信息
|
||||
*/
|
||||
getStatus(): AppStatusResponseDto {
|
||||
const isDatabaseConfigured = this.isDatabaseConfigured();
|
||||
|
||||
return {
|
||||
service: 'Pixel Game Server',
|
||||
version: '1.0.0',
|
||||
status: 'running',
|
||||
timestamp: new Date().toISOString(),
|
||||
uptime: Math.floor((Date.now() - this.startTime) / 1000),
|
||||
environment: this.configService.get<string>('NODE_ENV', 'development'),
|
||||
storage_mode: isDatabaseConfigured ? 'database' : 'memory'
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查数据库配置是否完整
|
||||
*
|
||||
* @returns 是否配置了数据库
|
||||
*/
|
||||
private isDatabaseConfigured(): boolean {
|
||||
const requiredEnvVars = ['DB_HOST', 'DB_PORT', 'DB_USERNAME', 'DB_PASSWORD', 'DB_NAME'];
|
||||
return requiredEnvVars.every(varName => this.configService.get<string>(varName));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user