主要更新: 1. 后端核心底座完成 (M1-M6): - 健康检查、指标监控、分布式锁 - 事件总线、队列系统、事务管理 - 安全守卫、多租户隔离、存储适配器 - 审计日志、配置管理、多语言支持 2. 前端迁移到 Ant Design Vue: - 从 Element Plus 迁移到 Ant Design Vue - 完善 system 模块 (role/menu/dept) - 修复依赖和配置问题 3. 文档完善: - AI 开发工作流文档 - 架构约束和开发规范 - 项目进度跟踪 4. 其他改进: - 修复编译错误和类型问题 - 完善测试用例 - 优化项目结构
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import * as fs from 'fs';
|
|
import * as path from 'path';
|
|
import { Injectable } from '@nestjs/common';
|
|
import type { LoginSettingsVo } from './login-settings.dto';
|
|
|
|
const SETTINGS_DIR = path.resolve(process.cwd(), 'config', 'runtime');
|
|
const SETTINGS_FILE = path.resolve(SETTINGS_DIR, 'login.settings.json');
|
|
|
|
const DEFAULT_SETTINGS: LoginSettingsVo = {
|
|
isCaptcha: false,
|
|
bg: '',
|
|
isSiteCaptcha: false,
|
|
siteBg: '',
|
|
};
|
|
|
|
@Injectable()
|
|
export class LoginSettingsService {
|
|
async getSettings(): Promise<LoginSettingsVo> {
|
|
try {
|
|
const buf = await fs.promises.readFile(SETTINGS_FILE, 'utf8');
|
|
const json = JSON.parse(buf);
|
|
return { ...DEFAULT_SETTINGS, ...json } as LoginSettingsVo;
|
|
} catch {
|
|
return { ...DEFAULT_SETTINGS };
|
|
}
|
|
}
|
|
|
|
async updateSettings(
|
|
patch: Partial<LoginSettingsVo>,
|
|
): Promise<LoginSettingsVo> {
|
|
const current = await this.getSettings();
|
|
const next: LoginSettingsVo = { ...current, ...patch };
|
|
await fs.promises.mkdir(SETTINGS_DIR, { recursive: true });
|
|
await fs.promises.writeFile(
|
|
SETTINGS_FILE,
|
|
JSON.stringify(next, null, 2),
|
|
'utf8',
|
|
);
|
|
return next;
|
|
}
|
|
|
|
static getSettingsPath() {
|
|
return SETTINGS_FILE;
|
|
}
|
|
}
|