package model import "time" // NetdiskFolder 网盘目录(团队共享,路径式组织)。 // // 设计对齐 pj0034 的 asset_folder:path 为 `/` 分隔的绝对路径(如 `/市场部/2026Q1`), // 用唯一约束 (company_id, path) 防重名。`/` 根目录是 system folder,不可删/改名。 // 团队共享盘:全公司共用一套目录树,company_id 统一取创始公司 Id,跨部门共享。 type NetdiskFolder struct { ID uint `gorm:"primaryKey" json:"id"` CompanyID uint `gorm:"not null;index" json:"company_id"` Path string `gorm:"size:500;not null;index" json:"path"` DisplayName string `gorm:"size:100;not null" json:"display_name"` CreatedByID uint `gorm:"not null" json:"created_by_id"` CreatedAt time.Time `json:"created_at"` } func (NetdiskFolder) TableName() string { return "netdisk_folder" } // NetdiskFile 网盘文件(团队共享,审批前置)。 // // 状态流转: // - Status: pending(待审批) / approved(已通过) / rejected(已驳回) // - Recycle: deleted_at/deleted_by 非空表示已移入回收站(软删除),可恢复或彻底删除 // // 审批前置(对齐现有素材管理制度):员工上传进入 pending,需管理员审批通过后才对团队可见; // 管理员上传自动 approved。已 approved 的文件才对其它成员暴露。 // FolderPath 记录文件所在的目录路径(冗余自目录表,便于按路径列出与移动)。 type NetdiskFile struct { ID uint `gorm:"primaryKey" json:"id"` CompanyID uint `gorm:"not null;index" json:"company_id"` FolderPath string `gorm:"size:500;not null;default:/;index" json:"folder_path"` Filename string `gorm:"size:256;not null" json:"filename"` StoredName string `gorm:"size:64;not null" json:"stored_name"` FileExt string `gorm:"size:16;not null" json:"file_ext"` MimeType string `gorm:"size:128" json:"mime_type"` FileSize int64 `gorm:"not null" json:"file_size"` Status string `gorm:"size:16;not null;default:pending;index" json:"status"` // pending / approved / rejected Source string `gorm:"size:16;not null" json:"source"` // employee / admin SubmitterID uint `gorm:"not null;index" json:"submitter_id"` RejectReason string `gorm:"size:512" json:"reject_reason"` AuditBy *uint `json:"audit_by"` AuditAt *time.Time `json:"audit_at"` // 回收站软删除 DeletedAt *time.Time `gorm:"index" json:"deleted_at"` DeletedBy *uint `json:"deleted_by"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } func (NetdiskFile) TableName() string { return "netdisk_file" }