BaseReqDto 基礎請求數據傳輸對象
BaseReqDto
是一個基礎請求數據傳輸對象(DTO),用於在整個應用程式中標準化請求對象的結構。它包含了常見的基礎欄位,這些欄位通常用於追蹤實體的狀態、創建和更新資訊。
欄位說明
欄位名稱 | 類型 | 描述 | 驗證 | 備註 |
---|---|---|---|---|
remark | string | 備註資訊 | 可選、字串 | 用於儲存關於實體的額外說明 |
status | number | 狀態值 | 可選、數字 | 表示實體的當前狀態 |
isDeleted | number | 是否刪除標記 | 可選、數字 | 用於軟刪除功能,0表示未刪除,1表示已刪除 |
creator | string | 建立人ID | 可選、透過BigInt轉換 | 記錄創建該實體的用戶ID |
createTime | Date | 建立時間 | 可選、日期字串 | 記錄實體創建的時間戳 |
updater | string | 更新人ID | 可選、透過BigInt轉換 | 記錄最後更新該實體的用戶ID |
updateTime | Date | 更新時間 | 可選、日期字串 | 記錄實體最後更新的時間戳 |
multilingualFields | string[] | 多語言欄位列表 | 可選、陣列 | 僅在前端查詢開啟多語言功能時使用 |
禁用編輯欄位
系統定義了一組禁止直接編輯的欄位,這些欄位通常由系統自動管理:
typescript
export const disableEditFields = ['isDeleted', 'creator', 'createTime', 'updater', 'updateTime'] as const
這些欄位不應該在一般的更新操作中被修改,而是由系統自動維護。
使用方式
繼承使用
其他DTO類可以通過繼承 BaseReqDto
來獲取這些基礎欄位:
typescript
import { BaseReqDto } from '@/common/dtos/base.req.dto'
export class UserDto extends BaseReqDto {
@ApiProperty({ description: '使用者名稱' })
@IsString()
username: string
// 其他特定欄位...
}
多語言支援
當前端查詢需要多語言支援時,可以在請求中包含 multilingualFields
欄位,指定哪些欄位需要多語言處理:
json
// 前端請求範例
{
"status": 1,
"multilingualFields": ["title", "description"]
}
數據驗證
BaseReqDto
使用 class-validator
和 class-transformer
進行數據驗證和轉換:
- 所有欄位都標記為
@IsOptional()
,表示在請求中可以省略 - 特定類型的欄位使用對應的驗證裝飾器,如
@IsString()
、@IsNumber()
、@IsDateString()
creator
和updater
欄位使用自訂的ParseBigIntPipe
進行轉換,以支持大整數ID
Swagger 文件
所有欄位都使用 @ApiProperty()
裝飾器添加了描述,以便在 Swagger API 文件中顯示相關資訊。