feat: 重构多语言模块,符合NestJS规范
- 重构LanguageUtils为LanguageService,实现ILanguageService接口 - 移除自定义验证管道和装饰器,使用标准NestJS验证 - 集成框架ValidatorService进行业务验证 - 简化目录结构,移除不必要的子目录 - 支持模块化语言包加载(common、user、order等) - 统一API响应格式(code、msg、data、timestamp) - 添加ValidationExceptionFilter处理多语言验证错误 - 完善多语言示例和文档
This commit is contained in:
@@ -136,6 +136,7 @@ class PHPFileDiscovery {
|
||||
'app/service/admin/addon',
|
||||
'app/service/admin/aliapp',
|
||||
'app/service/admin/auth',
|
||||
'app/service/admin/captcha',
|
||||
'app/service/admin/generator',
|
||||
// 新增缺失的admin服务路径
|
||||
'app/service/admin/applet',
|
||||
@@ -149,6 +150,7 @@ class PHPFileDiscovery {
|
||||
'app/service/admin/stat',
|
||||
'app/service/admin/user',
|
||||
'app/service/admin/verify',
|
||||
'app/service/admin/upgrade',
|
||||
'app/service/admin/wxoplatform',
|
||||
// api服务路径
|
||||
'app/service/api/member',
|
||||
@@ -163,6 +165,7 @@ class PHPFileDiscovery {
|
||||
'app/service/api/addon',
|
||||
'app/service/api/aliapp',
|
||||
'app/service/api/auth',
|
||||
'app/service/api/captcha',
|
||||
'app/service/api/generator',
|
||||
// core服务路径
|
||||
'app/service/core/sys',
|
||||
@@ -178,6 +181,7 @@ class PHPFileDiscovery {
|
||||
'app/service/core/addon',
|
||||
'app/service/core/aliapp',
|
||||
'app/service/core/auth',
|
||||
'app/service/core/captcha',
|
||||
'app/service/core/generator',
|
||||
// 新增缺失的core服务路径
|
||||
'app/service/core/applet',
|
||||
@@ -208,7 +212,9 @@ class PHPFileDiscovery {
|
||||
this.discoveredFiles.services[moduleName] = {};
|
||||
}
|
||||
|
||||
this.discoveredFiles.services[moduleName][className] = {
|
||||
// 使用 className + layer 作为唯一键,避免不同层级服务被覆盖
|
||||
const serviceKey = `${className}_${layer}`;
|
||||
this.discoveredFiles.services[moduleName][serviceKey] = {
|
||||
filePath: path.join(fullPath, file),
|
||||
className: className,
|
||||
layer: layer,
|
||||
@@ -226,10 +232,21 @@ class PHPFileDiscovery {
|
||||
*/
|
||||
extractModuleName(filePath) {
|
||||
const parts = filePath.split('/');
|
||||
const moduleIndex = parts.findIndex(part => part === 'controller' || part === 'service');
|
||||
if (moduleIndex > 0) {
|
||||
return parts[moduleIndex + 1];
|
||||
|
||||
// 对于控制器路径: app/adminapi/controller/member/Member.php
|
||||
// 模块名是 controller 后面的部分
|
||||
const controllerIndex = parts.findIndex(part => part === 'controller');
|
||||
if (controllerIndex > 0 && controllerIndex < parts.length - 1) {
|
||||
return parts[controllerIndex + 1];
|
||||
}
|
||||
|
||||
// 对于服务路径: app/service/admin/member/MemberService.php
|
||||
// 模块名是 service 后面第二层(跳过层级admin/api/core)
|
||||
const serviceIndex = parts.findIndex(part => part === 'service');
|
||||
if (serviceIndex > 0 && serviceIndex < parts.length - 2) {
|
||||
return parts[serviceIndex + 2];
|
||||
}
|
||||
|
||||
return 'unknown';
|
||||
}
|
||||
|
||||
@@ -243,6 +260,8 @@ class PHPFileDiscovery {
|
||||
return 'api';
|
||||
} else if (filePath.includes('/core/')) {
|
||||
return 'core';
|
||||
} else if (filePath.includes('/admin/')) {
|
||||
return 'admin';
|
||||
}
|
||||
return 'unknown';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user