| 类型 | 位置 | 导入方式 | 用途 |
|---|---|---|---|
| 基础 Controller/Service | packages/@buildingai/base/src | @buildingai/base | 标准 CRUD、分页、事务、日志 |
| DTO/Pipe | packages/@buildingai/dto/src、packages/@buildingai/pipe/src | @buildingai/dto、@buildingai/pipe/... | 分页 DTO、UUID 校验 |
| 错误封装 | packages/@buildingai/errors/src | @buildingai/errors | 统一业务错误 |
| 主应用 Controller 装饰器 | packages/api/src/common/decorators | @common/decorators | Web/Console/OpenAPI/权限/会员/API Key |
| 通用后端装饰器 | packages/@buildingai/decorators/src | @buildingai/decorators | Public、Playground、BuildFileUrl、SkipTransform、SuperAdminOnly |
| 扩展后端装饰器 | packages/core/src/decorators | @buildingai/core/decorators | Extension Controller、Extension Entity、MemberOnly |
| TypeORM/实体 | packages/@buildingai/db/src | @buildingai/db/... | TypeORM、实体、Seeder、文件 URL |
| 后端核心模块 | packages/core/src/modules | @buildingai/core/modules 或 @buildingai/core | 上传、云存储、队列、计费、密钥、扩展 |
| 缓存/Redis | packages/@buildingai/cache/src | @buildingai/cache | CacheModule、RedisModule |
| 通用工具 | packages/@buildingai/utils/src | @buildingai/utils | where、路径、状态、类型转换、文件、安全、版本 |
| 扩展 SDK | packages/@buildingai/extension-sdk/src | @buildingai/extension-sdk | 扩展调用平台用户/AI/计费能力、tsup 配置 |
BaseService<Entity>。BaseController。@Controller("xxx")。PaginationDto。UUIDValidationPipe。HttpErrorFactory。BuildFileUrl。packages/@buildingai/base/src/controllers/base.controller.tsLogger,logger context 为子类名。paginationResult(data, total, paginationDto)。import { BaseController } from "@buildingai/base";
export class ArticleController extends BaseController {
async list(dto: QueryArticleDto) {
this.logger.log("query article list");
return this.articleService.list(dto);
}
}paginationResult 返回格式:{
items: T[];
total: number;
page: number;
pageSize: number;
totalPages: number;
}BaseService.paginate()packages/@buildingai/base/src/services/base.service.tsid: string 字段。import { BaseService } from "@buildingai/base";
import { InjectRepository } from "@buildingai/db/@nestjs/typeorm";
import { Repository } from "@buildingai/db/typeorm";
import { Injectable } from "@nestjs/common";
@Injectable()
export class ArticleService extends BaseService<Article> {
constructor(@InjectRepository(Article) repo: Repository<Article>) {
super(repo);
}
}| 类型 | 方法 | 说明 |
|---|---|---|
| 分页 | paginate(dto, options) | 基于 findAndCount 的标准分页 |
| 高级分页 | paginateQueryBuilder(qb, dto, excludeFields?, includeFields?, lock?) | 复杂 SQL/关联查询分页 |
| 创建 | create(dto, options?) | 创建单条 |
| 批量创建 | createMany(dtos, options?) | 事务批量创建 |
| 更新 | updateById(id, dto, options?) | 根据 id 更新 |
| 条件更新 | update(where, dto, options?) | 按 where 更新 |
| 查询 | findOneById(id, options?) | id 查询 |
| 条件查询 | findOne(options?) | TypeORM options 查询 |
| 全量查询 | findAll(options?) | 返回数组 |
| 删除 | delete(id, options?) | 删除单条 |
| 批量删除 | deleteMany(idsOrWhere, options?) | 批量删除 |
| 恢复 | restore(id, options?) | 软删除恢复 |
| 计数 | count(options?) | 统计 |
| 事务 | withTransaction(callback, isolationLevel?) | 开启事务 |
| 重试 | withRetry(operation, lockOptions?) | 可重试操作 |