Skip to content

BaseReqDto 基礎請求數據傳輸對象

BaseReqDto 是一個基礎請求數據傳輸對象(DTO),用於在整個應用程式中標準化請求對象的結構。它包含了常見的基礎欄位,這些欄位通常用於追蹤實體的狀態、創建和更新資訊。

欄位說明

欄位名稱類型描述驗證備註
remarkstring備註資訊可選、字串用於儲存關於實體的額外說明
statusnumber狀態值可選、數字表示實體的當前狀態
isDeletednumber是否刪除標記可選、數字用於軟刪除功能,0表示未刪除,1表示已刪除
creatorstring建立人ID可選、透過BigInt轉換記錄創建該實體的用戶ID
createTimeDate建立時間可選、日期字串記錄實體創建的時間戳
updaterstring更新人ID可選、透過BigInt轉換記錄最後更新該實體的用戶ID
updateTimeDate更新時間可選、日期字串記錄實體最後更新的時間戳
multilingualFieldsstring[]多語言欄位列表可選、陣列僅在前端查詢開啟多語言功能時使用

禁用編輯欄位

系統定義了一組禁止直接編輯的欄位,這些欄位通常由系統自動管理:

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-validatorclass-transformer 進行數據驗證和轉換:

  • 所有欄位都標記為 @IsOptional(),表示在請求中可以省略
  • 特定類型的欄位使用對應的驗證裝飾器,如 @IsString()@IsNumber()@IsDateString()
  • creatorupdater 欄位使用自訂的 ParseBigIntPipe 進行轉換,以支持大整數ID

Swagger 文件

所有欄位都使用 @ApiProperty() 裝飾器添加了描述,以便在 Swagger API 文件中顯示相關資訊。