贸点点
123.62M · 2026-04-01
本节深入探讨 backend/src/core 目录,该目录包含了 VTJ.PRO 平台的基础设施。这些模块处理横切关注点,例如身份管理、访问控制、持久化配置以及业务模块使用的抽象 CRUD 模式。
为确保一致性并减少样板代码,平台为控制器和服务使用了抽象基类。
BaseCrudService:使用 TypeORM 仓库为 create、update、remove、findById 和 findPage 操作提供标准实现。BaseCrudController:暴露标准的 RESTful 端点(POST /、PUT /:id、DELETE /:id、GET /:id、POST /page),这些端点直接映射到 BaseCrudService 的方法。下图展示了请求如何流经这些抽象层。
标题:基础 CRUD 架构
flowchart
A[Client Request]
B[BaseCrudController]
C[BaseCrudService]
D[TypeORM Repository]
E[MySQL Database]
F[UserController]
G[UserService]
A --> B
B --> C
C --> D
D --> E
B -- extends --> F
C -- extends --> G
subgraph Implementation Example
F
G
end
subgraph Code Entity Space
A
B
C
D
E
end
安全层分为三个主要模块:UserModule、RoleModule 和 PermissionModule。
UserModule 处理用户生命周期和认证。它支持多种登录策略:
AUTH_CODE 与外部提供商集成。EmailVerificationModule 管理,用于注册和密码重置。访问控制通过 UsersGuard 实现,它检查有效的 JWT 令牌并验证权限。
PermissionModule:定义细粒度的操作(例如,user:create、app:publish)。RoleModule:将权限分组为角色(例如,admin、developer)。UsersGuard 检索用户的角色和关联权限,以验证当前请求路径/方法是否被授权。标题:认证与授权流程
sequenceDiagram
participant C as Client
participant G as UsersGuard
participant S as UserService
participant R as Role/Permission
C->>G: Request + JWT Token
G->>G: validateToken()
alt [Token Valid]
G->>S: findById(userId)
S-->>G: User Entity + Roles
G->>R: Check matchPermission()
alt [Authorized]
G-->>C: 200 OK (Proceed to Controller)
else [Forbidden]
G-->>C: 403 Forbidden
end
else [Token Invalid]
G-->>C: 401 Unauthorized
end
管理全局系统设置,如站点名称、Logo 和注册开关。
SettingService 将设置缓存在内存中,以避免频繁查询数据库。处理用于 UI 下拉菜单和常量的静态和动态数据字典。
DictionaryEntity:定义字典类别。DictionaryItemEntity:定义类别中的具体条目。一个轻量级封装,根据环境配置使用内存缓存(使用 LRUCache)或 Redis。它被 LLMModelService 和 SettingService 广泛使用。
为文件上传提供统一接口。
public/uploads 目录。ali-oss SDK 支持远程云存储。upload、putStream 和 delete 是暴露给业务模块(如 DslModule)的主要方法,用于存储生成的项目 ZIP 文件。| 模块 | 关键实体 / 类 | 主要职责 |
|---|---|---|
| 用户 | UserEntity, UserService | 用户 CRUD、密码哈希、JWT 签发。 |
| 认证 | UsersGuard | 全局请求拦截和令牌验证。 |
| RBAC | RoleEntity, PermissionEntity | 通过角色将用户映射到权限。 |
| 设置 | SettingEntity | 系统级配置(例如,isRegister)。 |
| 字典 | DictionaryEntity | 元数据和查找表管理。 |
| 对象存储 | OssService | 抽象的文件存储(本地 vs. 阿里云)。 |
| 缓存 | CacheService | 高性能临时数据存储。 |
| 邮件 | EmailVerificationService | 通过 SMTP 发送和验证 OTP 码。 |