Documentation ¶
Index ¶
- Constants
- Variables
- func CopyTeamsMemberToFolderId(folder Folder, parentTeamsMembers []TeamsFolderMember)
- func DeleteFiles(files []*File, uid uint) error
- func DeleteFolderByIDs(ids []uint) error
- func DeleteShareBySourceIDs(sources []uint, isDir bool) error
- func DeleteTagByID(id, uid uint) error
- func DeleteTeamsFoloderBySourceIDs(sources []uint, isDir bool) error
- func DeleteWebDAVAccountByID(id, uid uint)
- func GetIntSetting(key string, defaultVal int) int
- func GetSettingByName(name string) string
- func GetSettingByNameFromTx(tx *gorm.DB, name string) string
- func GetSettingByNameWithDefault(name, fallback string) string
- func GetSettingByNames(names ...string) map[string]string
- func GetSettingByType(types []string) map[string]string
- func GetSiteURL() *url.URL
- func GetUserTeamsRootFolder(userId uint) (sourceIds []uint)
- func Init()
- func IsTrueVal(val string) bool
- func OurMD5(usr string, pwd string, salt string) string
- func TransferTeamsFoldersToUsers(dirs []uint, folderIteams []FolderItem, UserItems []TeamsFolderMember) (err error)
- func UserTeamsFolderIsRoot(sourceMembers []TeamsFolderMember, sourceFolder TeamsFolderMember) (IsRoot bool)
- type Aria2Option
- type Download
- type File
- func GetChildFilesOfFolders(folders *[]Folder) ([]File, error)
- func GetFilesByIDs(ids []uint, uid uint) ([]File, error)
- func GetFilesByIDsFromTX(tx *gorm.DB, ids []uint, uid uint) ([]File, error)
- func GetFilesByKeywords(uid uint, parents []uint, keywords ...interface{}) ([]File, error)
- func GetFilesByParentIDs(ids []uint, uid uint) ([]File, error)
- func GetFilesByUploadSession(sessionID string, uid uint) (*File, error)
- func GetUploadPlaceholderFiles(uid uint) []*File
- func RemoveFilesWithSoftLinks(files []File) ([]File, error)
- func (file *File) AfterFind() (err error)
- func (file *File) BeforeSave() (err error)
- func (file *File) CanCopy() bool
- func (file *File) Close() error
- func (file *File) Create() error
- func (file *File) GetName() string
- func (file *File) GetPolicy() *Policy
- func (file *File) GetPosition() string
- func (file *File) GetSize() uint64
- func (file *File) IsDir() bool
- func (file *File) ModTime() time.Time
- func (file *File) PopChunkToFile(lastModified *time.Time, picInfo string) error
- func (file *File) Read(p []byte) (n int, err error)
- func (file *File) Relocate(src string, policyID uint) error
- func (file *File) Rename(new string) error
- func (file *File) Seek(offset int64, whence int) (int64, error)
- func (file *File) Seekable() bool
- func (file *File) SetModel(newFile interface{})
- func (file *File) SetSize(size uint64)
- func (file *File) UpdatePicInfo(value string) error
- func (file *File) UpdateSize(value uint64) error
- func (file *File) UpdateSourceName(value string) error
- type Folder
- func GetChildFolderById(id uint) Folder
- func GetFolderByHashID(hashID string) *Folder
- func GetFolderById(id uint) Folder
- func GetFoldersByIDs(ids []uint, uid uint) ([]Folder, error)
- func GetMountedFolders(uid uint) []Folder
- func GetParentFolderById(id uint) Folder
- func GetRecursiveChildFolder(dirs []uint, uid uint, includeSelf bool) ([]Folder, error)
- func GetSameNameRootFolderByUserId(userId, parentId uint, name string) Folder
- func (folder *Folder) CopyFolderTo(folderID uint, dstFolder *Folder) (size uint64, err error)
- func (folder *Folder) Create() (uint, error)
- func (folder *Folder) GetChild(name string) (*Folder, error)
- func (folder *Folder) GetChildFile(name string) (*File, error)
- func (folder *Folder) GetChildFiles() ([]File, error)
- func (folder *Folder) GetChildFolder(uid uint) ([]Folder, error)
- func (folder *Folder) GetName() string
- func (folder *Folder) GetPosition() string
- func (folder *Folder) GetSize() uint64
- func (folder *Folder) IsDir() bool
- func (folder *Folder) ModTime() time.Time
- func (folder *Folder) Mount(new uint) error
- func (folder *Folder) MoveFolderTo(dirs []uint, dstFolder *Folder) error
- func (folder *Folder) MoveOrCopyFileTo(files []uint, dstFolder *Folder, isCopy bool) (uint64, error)
- func (folder *Folder) Rename(new string) error
- func (folder *Folder) TraceRoot() error
- func (folder *Folder) TraceTeamsRoot() error
- type FolderItem
- type Group
- type GroupOption
- type ModelType
- type Node
- type NodeStatus
- type Order
- type Policy
- func (policy *Policy) AfterFind() (err error)
- func (policy *Policy) BeforeSave() (err error)
- func (policy *Policy) CanStructureBeListed() bool
- func (policy *Policy) ClearCache()
- func (policy *Policy) GenerateFileName(uid uint, origin string) string
- func (policy *Policy) GeneratePath(uid uint, origin string) string
- func (policy *Policy) IsDirectlyPreview() bool
- func (policy *Policy) IsThumbExist(name string) bool
- func (policy *Policy) IsThumbGenerateNeeded() bool
- func (policy *Policy) IsTransitUpload(size uint64) bool
- func (policy *Policy) IsUploadPlaceholderWithSize() bool
- func (policy *Policy) SaveAndClearCache() error
- func (policy *Policy) SerializeOptions() (err error)
- func (policy *Policy) UpdateAccessKeyAndClearCache(s string) error
- type PolicyOption
- type Redeem
- type Report
- type Setting
- type Share
- func (share *Share) CanBeDownloadBy(user *User) error
- func (share *Share) Create() (uint, error)
- func (share *Share) Creator() *User
- func (share *Share) Delete() error
- func (share *Share) DownloadBy(user *User, c *gin.Context) error
- func (share *Share) Downloaded()
- func (share *Share) IsAvailable() bool
- func (share *Share) Purchase(user *User) error
- func (share *Share) Source() interface{}
- func (share *Share) SourceFile() *File
- func (share *Share) SourceFolder() *Folder
- func (share *Share) Update(props map[string]interface{}) error
- func (share *Share) Viewed()
- func (share *Share) WasDownloadedBy(user *User, c *gin.Context) (exist bool)
- type StoragePack
- type Tag
- type Task
- type TeamsFolderMember
- func GetFolderMemberPermissionByGroupRole(UserItem TeamsFolderMember) TeamsFolderMember
- func GetTeamsFolderByHashID(hashID string) *TeamsFolderMember
- func GetTeamsFolderMembers(source_id uint) (members []TeamsFolderMember)
- func GetUserFolderMember(user_id uint, source_id uint) (member TeamsFolderMember)
- func GetUserTeamsFolder(userId uint, sourceId uint) (source TeamsFolderMember)
- func ListTeamsFolders(uid uint, page, pageSize int, order string, publicOnly bool) ([]TeamsFolderMember, int)
- func ListTeamsGroupFolder(folder_id uint, key string) ([]TeamsFolderMember, error)
- func ListTeamsShare(uid uint, publicOnly bool) ([]TeamsFolderMember, error)
- func SearchTeamsFolders(page, pageSize int, order, keywords string) ([]TeamsFolderMember, int)
- func (share *TeamsFolderMember) CanBeDownloadBy(user *User) error
- func (share *TeamsFolderMember) Create() (uint, error)
- func (share *TeamsFolderMember) Creator() *User
- func (share *TeamsFolderMember) Delete() error
- func (share *TeamsFolderMember) DownloadBy(user *User, c *gin.Context) error
- func (share *TeamsFolderMember) Downloaded()
- func (share *TeamsFolderMember) IsAvailable() bool
- func (share *TeamsFolderMember) Purchase(user *User) error
- func (share *TeamsFolderMember) Source() interface{}
- func (share *TeamsFolderMember) SourceFile() *File
- func (share *TeamsFolderMember) SourceFolder() *Folder
- func (share *TeamsFolderMember) Update(props map[string]interface{}) error
- func (share *TeamsFolderMember) Viewed()
- func (share *TeamsFolderMember) WasDownloadedBy(user *User, c *gin.Context) (exist bool)
- type User
- func GetActiveUserByEmail(email string) (User, error)
- func GetActiveUserByID(ID interface{}) (User, error)
- func GetActiveUserByOpenID(openid string) (User, error)
- func GetGroupExpiredUsers() []User
- func GetTolerantExpiredUser() []User
- func GetUserByEmail(email string) (User, error)
- func GetUserByID(ID interface{}) (User, error)
- func GetUserByPhone(phone interface{}) (User, error)
- func NewAnonymousUser() *User
- func NewUser() User
- func (user *User) AddScore(score int)
- func (user *User) AfterCreate(tx *gorm.DB) (err error)
- func (user *User) AfterFind() (err error)
- func (user *User) BeforeSave() (err error)
- func (user *User) ChangeStorage(tx *gorm.DB, operator string, size uint64) error
- func (user *User) ClearNotified()
- func (user *User) DeductionStorage(size uint64) bool
- func (user *User) GetAvailablePackSize() uint64
- func (user *User) GetAvailableStoragePacks() []StoragePack
- func (user *User) GetPolicyByPreference(preference uint) *Policy
- func (user *User) GetPolicyID(folder *Folder) *Policy
- func (user *User) GetRemainingCapacity() uint64
- func (user *User) GroupFallback()
- func (user *User) IncreaseStorage(size uint64) bool
- func (user *User) IncreaseStorageWithoutCheck(size uint64)
- func (user *User) IsAnonymous() bool
- func (user *User) Notified()
- func (user *User) PayScore(score int) bool
- func (user *User) RegisterAuthn(credential *webauthn.Credential) error
- func (user *User) RemoveAuthn(id string)
- func (user *User) Root() (*Folder, error)
- func (user *User) SerializeOptions() (err error)
- func (user *User) SetStatus(status int)
- func (user *User) TeamsCheckPassword(username, password string) (bool, error)
- func (user *User) Update(val map[string]interface{}) error
- func (user *User) UpdateOptions() error
- func (user *User) UpgradeGroup(id uint, expires *time.Time) error
- func (user User) WebAuthnCredentials() []webauthn.Credential
- func (user User) WebAuthnDisplayName() string
- func (user User) WebAuthnID() []byte
- func (user User) WebAuthnIcon() string
- func (user User) WebAuthnName() string
- type UserOption
- type Webdav
Constants ¶
const ( // PackOrderType 容量包订单 PackOrderType = iota // GroupOrderType 用户组订单 GroupOrderType // ScoreOrderType 积分充值订单 ScoreOrderType )
const ( // OrderUnpaid 未支付 OrderUnpaid = iota // OrderPaid 已支付 OrderPaid // OrderCanceled 已取消 OrderCanceled )
const ( // FileTagType 文件分类标签 FileTagType = iota // DirectoryLinkType 目录快捷方式标签 DirectoryLinkType )
const ( // Active 账户正常状态 Active = iota // NotActivicated 未激活 NotActivicated // Baned 被封禁 Baned // OveruseBaned 超额使用被封禁 OveruseBaned )
Variables ¶
var DB *gorm.DB
DB 数据库链接单例
Functions ¶
func CopyTeamsMemberToFolderId ¶
func CopyTeamsMemberToFolderId(folder Folder, parentTeamsMembers []TeamsFolderMember)
func DeleteShareBySourceIDs ¶
DeleteShareBySourceIDs 根据原始资源类型和ID删除文件
func DeleteTeamsFoloderBySourceIDs ¶
DeleteShareBySourceIDs 根据原始资源类型和ID删除文件
func DeleteWebDAVAccountByID ¶
func DeleteWebDAVAccountByID(id, uid uint)
DeleteWebDAVAccountByID 根据账户ID和UID删除账户
func GetIntSetting ¶
GetIntSetting 获取整形设置值,如果转换失败则返回默认值defaultVal
func GetSettingByNameFromTx ¶
GetSettingByNameFromTx 用 Name 获取设置值,使用事务
func GetSettingByNameWithDefault ¶
GetSettingByNameWithDefault 用 Name 获取设置值, 取不到时使用缺省值
func GetSettingByNames ¶
GetSettingByNames 用多个 Name 获取设置值
func GetSettingByType ¶
GetSettingByType 获取一个或多个分组的所有设置值
func GetUserTeamsRootFolder ¶
func TransferTeamsFoldersToUsers ¶
func TransferTeamsFoldersToUsers(dirs []uint, folderIteams []FolderItem, UserItems []TeamsFolderMember) (err error)
func UserTeamsFolderIsRoot ¶
func UserTeamsFolderIsRoot(sourceMembers []TeamsFolderMember, sourceFolder TeamsFolderMember) (IsRoot bool)
Types ¶
type Aria2Option ¶
type Aria2Option struct { // RPC 服务器地址 Server string `json:"server,omitempty"` // RPC 密钥 Token string `json:"token,omitempty"` // 临时下载目录 TempPath string `json:"temp_path,omitempty"` // 附加下载配置 Options string `json:"options,omitempty"` // 下载监控间隔 Interval int `json:"interval,omitempty"` // RPC API 请求超时 Timeout int `json:"timeout,omitempty"` }
Aria2Option 非公有的Aria2配置属性
type Download ¶
type Download struct { gorm.Model Status int // 任务状态 Type int // 任务类型 Source string `gorm:"type:text"` // 文件下载地址 TotalSize uint64 // 文件大小 DownloadedSize uint64 // 文件大小 GID string `gorm:"size:32,index:gid"` // 任务ID Speed int // 下载速度 Parent string `gorm:"type:text"` // 存储目录 Attrs string `gorm:"size:4294967295"` // 任务状态属性 Error string `gorm:"type:text"` // 错误描述 Dst string `gorm:"type:text"` // 用户文件系统存储父目录路径 UserID uint // 发起者UID TaskID uint // 对应的转存任务ID NodeID uint // 处理任务的节点ID // 关联模型 User *User `gorm:"PRELOAD:false,association_autoupdate:false"` // 数据库忽略字段 StatusInfo rpc.StatusInfo `gorm:"-"` Task *Task `gorm:"-"` }
Download 离线下载队列模型
func GetDownloadByGid ¶
GetDownloadByGid 根据GID和用户ID查找下载
func GetDownloadsByStatus ¶
GetDownloadsByStatus 根据状态检索下载
func GetDownloadsByStatusAndUser ¶
GetDownloadsByStatusAndUser 根据状态检索和用户ID下载 page 为 0 表示列出所有,非零时分页
func (*Download) BeforeSave ¶
BeforeSave Save下载任务前的钩子
type File ¶
type File struct { // 表字段 gorm.Model Name string `gorm:"unique_index:idx_only_one"` SourceName string `gorm:"type:text"` UserID uint `gorm:"index:user_id;unique_index:idx_only_one"` Size uint64 PicInfo string FolderID uint `gorm:"index:folder_id;unique_index:idx_only_one"` PolicyID uint UploadSessionID *string `gorm:"index:session_id;unique_index:session_only_one"` Metadata string `gorm:"type:text"` // 关联模型 Policy Policy `gorm:"PRELOAD:false,association_autoupdate:false"` // 数据库忽略字段 Position string `gorm:"-"` MetadataSerialized map[string]string `gorm:"-"` }
File 文件
func GetChildFilesOfFolders ¶
GetChildFilesOfFolders 批量检索目录子文件
func GetFilesByIDs ¶
GetFilesByIDs 根据文件ID批量获取文件, UID为0表示忽略用户,只根据文件ID检索
func GetFilesByIDsFromTX ¶
func GetFilesByKeywords ¶
GetFilesByKeywords 根据关键字搜索文件, UID为0表示忽略用户,只根据文件ID检索. 如果 parents 非空, 则只限制在 parent 包含的目录下搜索
func GetFilesByParentIDs ¶
GetFilesByParentIDs 根据父目录ID查找文件
func GetFilesByUploadSession ¶
GetFilesByUploadSession 查找上传会话对应的文件
func GetUploadPlaceholderFiles ¶
GetUploadPlaceholderFiles 获取所有上传占位文件 UID为0表示忽略用户
func RemoveFilesWithSoftLinks ¶
RemoveFilesWithSoftLinks 去除给定的文件列表中有软链接的文件
func (*File) GetPosition ¶
func (*File) PopChunkToFile ¶
func (*File) UpdatePicInfo ¶
UpdatePicInfo 更新文件的图像信息
func (*File) UpdateSize ¶
UpdateSize 更新文件的大小信息 TODO: 全局锁
func (*File) UpdateSourceName ¶
UpdateSourceName 更新文件的源文件名
type Folder ¶
type Folder struct { // 表字段 gorm.Model Name string `gorm:"unique_index:idx_only_one_name"` ParentID *uint `gorm:"index:parent_id;unique_index:idx_only_one_name"` OwnerID uint `gorm:"index:owner_id"` PolicyID uint // Webdav下挂载的存储策略ID Lock uint // 数据库忽略字段 Position string `gorm:"-"` InheritPolicyID uint `gorm:"-"` // 从父目录继承而来的policy id,默认值则使用自身的的PolicyID TeamsMembers []TeamsFolderMember `sql:"-" gorm:"-"` }
Folder 目录
func GetChildFolderById ¶
func GetFolderByHashID ¶
GetShareByHashID 根据HashID查找分享
func GetFolderById ¶
func GetFoldersByIDs ¶
GetFoldersByIDs 根据ID和用户查找所有目录
func GetParentFolderById ¶
func GetRecursiveChildFolder ¶
GetRecursiveChildFolder 查找所有递归子目录,包括自身
func (*Folder) CopyFolderTo ¶
CopyFolderTo 将此目录及其子目录及文件递归复制至dstFolder 返回此操作新增的容量
func (*Folder) GetChildFile ¶
GetChildFile 查找目录下名为name的子文件
func (*Folder) GetChildFiles ¶
GetChildFiles 查找目录下子文件
func (*Folder) GetChildFolder ¶
GetChildFolder 查找子目录
func (*Folder) GetPosition ¶
func (*Folder) MoveFolderTo ¶
MoveFolderTo 将folder目录下的dirs子目录复制或移动到dstFolder, 返回此过程中增加的容量
func (*Folder) MoveOrCopyFileTo ¶
func (folder *Folder) MoveOrCopyFileTo(files []uint, dstFolder *Folder, isCopy bool) (uint64, error)
MoveOrCopyFileTo 将此目录下的files移动或复制至dstFolder, 返回此操作新增的容量
func (*Folder) TraceTeamsRoot ¶
type FolderItem ¶
ItemService 处理多文件/目录相关服务
type Group ¶
type Group struct { gorm.Model Name string Policies string MaxStorage uint64 WebDAVEnabled bool SpeedLimit int Options string `json:"-" gorm:"size:4294967295"` // 数据库忽略字段 PolicyList []uint `gorm:"-"` OptionsSerialized GroupOption `gorm:"-"` }
Group 用户组模型
func (*Group) SerializePolicyList ¶
SerializePolicyList 将序列后的可选策略列表、配置写入数据库字段 TODO 完善测试
type GroupOption ¶
type GroupOption struct { ArchiveDownload bool `json:"archive_download,omitempty"` // 打包下载 ArchiveTask bool `json:"archive_task,omitempty"` // 在线压缩 CompressSize uint64 `json:"compress_size,omitempty"` // 可压缩大小 DecompressSize uint64 `json:"decompress_size,omitempty"` OneTimeDownload bool `json:"one_time_download,omitempty"` Aria2 bool `json:"aria2,omitempty"` // 离线下载 Aria2Options map[string]interface{} `json:"aria2_options,omitempty"` // 离线下载用户组配置 Relocate bool `json:"relocate,omitempty"` // 转移文件 SourceBatchSize int `json:"source_batch,omitempty"` Aria2BatchSize int `json:"aria2_batch,omitempty"` }
GroupOption 用户组其他配置
type Node ¶
type Node struct { gorm.Model Status NodeStatus // 节点状态 Name string // 节点别名 Type ModelType // 节点状态 Server string // 服务器地址 SlaveKey string `gorm:"type:text"` // 主->从 通信密钥 MasterKey string `gorm:"type:text"` // 从->主 通信密钥 Aria2Enabled bool // 是否支持用作离线下载节点 Aria2Options string `gorm:"type:text"` // 离线下载配置 Rank int // 负载均衡权重 // 数据库忽略字段 Aria2OptionsSerialized Aria2Option `gorm:"-"` }
Node 从机节点信息模型
func GetNodesByStatus ¶
func GetNodesByStatus(status ...NodeStatus) ([]Node, error)
GetNodesByStatus 根据给定状态获取节点
type Order ¶
type Order struct { gorm.Model UserID uint // 创建者ID OrderNo string `gorm:"index:order_number"` // 商户自定义订单编号 Type int // 订单类型 Method string // 支付类型 ProductID int64 // 商品ID Num int // 商品数量 Name string // 订单标题 Price int // 商品单价 Status int // 订单状态 }
Order 交易订单
type Policy ¶
type Policy struct { // 表字段 gorm.Model Name string Type string Server string BucketName string IsPrivate bool BaseURL string AccessKey string `gorm:"type:text"` SecretKey string `gorm:"type:text"` MaxSize uint64 AutoRename bool DirNameRule string FileNameRule string IsOriginLinkEnable bool Options string `gorm:"type:text"` // 数据库忽略字段 OptionsSerialized PolicyOption `gorm:"-"` MasterID string `gorm:"-"` }
Policy 存储策略
func (*Policy) CanStructureBeListed ¶
CanStructureBeListed 返回存储策略是否能被前台列物理目录
func (*Policy) GenerateFileName ¶
GenerateFileName 生成存储文件名
func (*Policy) GeneratePath ¶
GeneratePath 生成存储文件的路径
func (*Policy) IsDirectlyPreview ¶
IsDirectlyPreview 返回此策略下文件是否可以直接预览(不需要重定向)
func (*Policy) IsThumbExist ¶
IsThumbExist 给定文件名,返回此存储策略下是否可能存在缩略图
func (*Policy) IsThumbGenerateNeeded ¶
IsThumbGenerateNeeded 返回此策略是否需要在上传后生成缩略图
func (*Policy) IsTransitUpload ¶
IsTransitUpload 返回此策略上传给定size文件时是否需要服务端中转
func (*Policy) IsUploadPlaceholderWithSize ¶
IsUploadPlaceholderWithSize 返回此策略创建上传会话时是否需要预留空间
func (*Policy) SaveAndClearCache ¶
SaveAndClearCache 更新并清理缓存
func (*Policy) SerializeOptions ¶
SerializeOptions 将序列后的Option写入到数据库字段
func (*Policy) UpdateAccessKeyAndClearCache ¶
SaveAndClearCache 更新并清理缓存
type PolicyOption ¶
type PolicyOption struct { // Upyun访问Token Token string `json:"token"` // 允许的文件扩展名 FileType []string `json:"file_type"` // MimeType MimeType string `json:"mimetype"` // OdRedirect Onedrive 重定向地址 OdRedirect string `json:"od_redirect,omitempty"` // OdProxy Onedrive 反代地址 OdProxy string `json:"od_proxy,omitempty"` // OdDriver OneDrive 驱动器定位符 OdDriver string `json:"od_driver,omitempty"` // Region 区域代码 Region string `json:"region,omitempty"` // ServerSideEndpoint 服务端请求使用的 Endpoint,为空时使用 Policy.Server 字段 ServerSideEndpoint string `json:"server_side_endpoint,omitempty"` // 分片上传的分片大小 ChunkSize uint64 `json:"chunk_size,omitempty"` // 分片上传时是否需要预留空间 PlaceholderWithSize bool `json:"placeholder_with_size,omitempty"` // url CallbackSer string `json:"callback_ser,omitempty"` // 下载地址 DownloadUrl string `json:"download_url,omitempty"` }
PolicyOption 非公有的存储策略属性
type Redeem ¶
type Redeem struct { gorm.Model Type int // 订单类型 ProductID int64 // 商品ID Num int // 商品数量 Code string `gorm:"size:64,index:redeem_code"` // 兑换码 Used bool // 是否已被使用 }
Redeem 兑换码
func GetAvailableRedeem ¶
GetAvailableRedeem 根据code查找可用兑换码
type Report ¶
type Report struct { gorm.Model Reason int // 举报原因 Description string // 补充描述 Share Share `gorm:"save_associations:false:false"` }
Report 举报模型
type Setting ¶
type Setting struct { gorm.Model Type string `gorm:"not null"` Name string `gorm:"unique;not null;index:setting_key"` Value string `gorm:"size:65535"` }
Setting 系统设置模型
type Share ¶
type Share struct { // 数据库忽略字段 }
Share 分享模型
func ListShares ¶
ListShares 列出UID下的分享
func SearchShares ¶
SearchShares 根据关键字搜索分享
func (*Share) CanBeDownloadBy ¶
CanBeDownloadBy 返回此分享是否可以被给定用户下载
func (*Share) DownloadBy ¶
DownloadBy 增加下载次数、检查积分等,匿名用户不会缓存
type StoragePack ¶
type StoragePack struct { // 表字段 gorm.Model Name string UserID uint ActiveTime *time.Time ExpiredTime *time.Time `gorm:"index:expired"` Size uint64 }
StoragePack 容量包模型
func GetExpiredStoragePack ¶
func GetExpiredStoragePack() []StoragePack
GetExpiredStoragePack 获取已过期的容量包
type Tag ¶
type Tag struct { gorm.Model Name string // 标签名 Icon string // 图标标识 Color string // 图标颜色 Type int // 标签类型(文件分类/目录直达) Expression string `gorm:"type:text"` // 搜索表表达式/直达路径 UserID uint // 创建者ID }
Tag 用户自定义标签
type Task ¶
type Task struct { gorm.Model Status int // 任务状态 Type int // 任务类型 UserID uint // 发起者UID,0表示为系统发起 Progress int // 进度 Error string `gorm:"type:text"` // 错误信息 Props string `gorm:"type:text"` // 任务属性 }
Task 任务模型
type TeamsFolderMember ¶
type TeamsFolderMember struct { ID uint `gorm:"primary_key"` CreatedAt time.Time UpdatedAt time.Time Password string // 分享密码,空值为非加密分享 IsDir bool // 原始资源是否为目录 UserID uint // 创建用户ID SourceID uint // 原始资源ID Views int // 浏览数 Downloads int // 下载数 RemainDownloads int // 剩余下载配额,负值标识无限制 Expires *time.Time // 过期时间,空值表示无过期时间 Score int // 每人次下载扣除积分 GroupRole int // 角色 PreviewEnabled bool // 是否允许直接预览 SourceName string `gorm:"index:source"` // 用于搜索的字段 DownloadEnabled bool // 是否允许直接下载 UploadEnabled bool // 是否允许直接上传 EditEnabled bool // 是否允许直接编辑 ManaEnabled bool // 是否允许直接管理 IsRoot bool // 是否根节点 // 数据库忽略字段 User User `gorm:"PRELOAD:false,association_autoupdate:false"` File File `gorm:"PRELOAD:false,association_autoupdate:false"` Folder Folder `gorm:"PRELOAD:false,association_autoupdate:false"` }
Share 分享模型
func GetFolderMemberPermissionByGroupRole ¶
func GetFolderMemberPermissionByGroupRole(UserItem TeamsFolderMember) TeamsFolderMember
func GetTeamsFolderByHashID ¶
func GetTeamsFolderByHashID(hashID string) *TeamsFolderMember
GetShareByHashID 根据HashID查找分享
func GetTeamsFolderMembers ¶
func GetTeamsFolderMembers(source_id uint) (members []TeamsFolderMember)
func GetUserFolderMember ¶
func GetUserFolderMember(user_id uint, source_id uint) (member TeamsFolderMember)
func GetUserTeamsFolder ¶
func GetUserTeamsFolder(userId uint, sourceId uint) (source TeamsFolderMember)
func ListTeamsFolders ¶
func ListTeamsFolders(uid uint, page, pageSize int, order string, publicOnly bool) ([]TeamsFolderMember, int)
ListShares 列出UID下的分享
func ListTeamsGroupFolder ¶
func ListTeamsGroupFolder(folder_id uint, key string) ([]TeamsFolderMember, error)
func ListTeamsShare ¶
func ListTeamsShare(uid uint, publicOnly bool) ([]TeamsFolderMember, error)
ListShares 列出UID下的分享
func SearchTeamsFolders ¶
func SearchTeamsFolders(page, pageSize int, order, keywords string) ([]TeamsFolderMember, int)
SearchShares 根据关键字搜索分享
func (*TeamsFolderMember) CanBeDownloadBy ¶
func (share *TeamsFolderMember) CanBeDownloadBy(user *User) error
CanBeDownloadBy 返回此分享是否可以被给定用户下载
func (*TeamsFolderMember) Create ¶
func (share *TeamsFolderMember) Create() (uint, error)
Create 创建分享
func (*TeamsFolderMember) Creator ¶
func (share *TeamsFolderMember) Creator() *User
Creator 获取分享的创建者
func (*TeamsFolderMember) DownloadBy ¶
func (share *TeamsFolderMember) DownloadBy(user *User, c *gin.Context) error
DownloadBy 增加下载次数、检查积分等,匿名用户不会缓存
func (*TeamsFolderMember) Downloaded ¶
func (share *TeamsFolderMember) Downloaded()
Downloaded 增加下载次数
func (*TeamsFolderMember) IsAvailable ¶
func (share *TeamsFolderMember) IsAvailable() bool
IsAvailable 返回此分享是否可用(是否过期)
func (*TeamsFolderMember) Purchase ¶
func (share *TeamsFolderMember) Purchase(user *User) error
Purchase 使用积分购买分享
func (*TeamsFolderMember) Source ¶
func (share *TeamsFolderMember) Source() interface{}
Source 返回源对象
func (*TeamsFolderMember) SourceFile ¶
func (share *TeamsFolderMember) SourceFile() *File
SourceFile 获取源文件
func (*TeamsFolderMember) SourceFolder ¶
func (share *TeamsFolderMember) SourceFolder() *Folder
SourceFolder 获取源目录
func (*TeamsFolderMember) Update ¶
func (share *TeamsFolderMember) Update(props map[string]interface{}) error
Update 更新分享属性
func (*TeamsFolderMember) WasDownloadedBy ¶
func (share *TeamsFolderMember) WasDownloadedBy(user *User, c *gin.Context) (exist bool)
WasDownloadedBy 返回分享是否已被用户下载过
type User ¶
type User struct { // 表字段 gorm.Model Email string `gorm:"type:varchar(100);unique_index"` Nick string `gorm:"size:50"` Status int GroupID uint Storage uint64 OpenID string TwoFactor string Avatar string Username string Options string `json:"-" gorm:"size:4294967295"` Authn string `gorm:"size:4294967295"` Score int PreviousGroupID uint // 初始用户组 GroupExpires *time.Time // 用户组过期日期 NotifyDate *time.Time // 通知超出配额时的日期 Phone string // 关联模型 Group Group `gorm:"save_associations:false:false"` Policy Policy `gorm:"-"` // 数据库忽略字段 OptionsSerialized UserOption `gorm:"-"` }
User 用户模型
func GetActiveUserByEmail ¶
GetActiveUserByEmail 用Email获取可登录用户
func GetActiveUserByID ¶
GetActiveUserByID 用ID获取可登录用户
func GetActiveUserByOpenID ¶
GetActiveUserByOpenID 用OpenID获取可登录用户
func GetTolerantExpiredUser ¶
func GetTolerantExpiredUser() []User
GetTolerantExpiredUser 获取超过宽容期的用户
func GetUserByPhone ¶
GetUserByPhone 用Phone获取用户
func (*User) AfterCreate ¶
AfterCreate 创建用户后的钩子
func (*User) ChangeStorage ¶
ChangeStorage 更新用户容量
func (*User) DeductionStorage ¶
DeductionStorage 减少用户已用容量
func (*User) GetAvailablePackSize ¶
GetAvailablePackSize 返回给定用户当前可用的容量包总容量
func (*User) GetAvailableStoragePacks ¶
func (user *User) GetAvailableStoragePacks() []StoragePack
GetAvailableStoragePacks 返回用户可用的容量包
func (*User) GetPolicyByPreference ¶
GetPolicyByPreference 在可用存储策略中优先获取 preference
func (*User) GetPolicyID ¶
GetPolicyID 获取给定目录的存储策略, 如果为 nil 则使用默认
func (*User) GetRemainingCapacity ¶
GetRemainingCapacity 获取剩余配额
func (*User) IncreaseStorage ¶
IncreaseStorage 检查并增加用户已用容量
func (*User) IncreaseStorageWithoutCheck ¶
IncreaseStorageWithoutCheck 忽略可用容量,增加用户已用容量
func (*User) RegisterAuthn ¶
func (user *User) RegisterAuthn(credential *webauthn.Credential) error
RegisterAuthn 添加新的验证器
func (*User) SerializeOptions ¶
SerializeOptions 将序列后的Option写入到数据库字段
func (*User) TeamsCheckPassword ¶
func (*User) UpgradeGroup ¶
UpgradeGroup 升级用户组
func (User) WebAuthnCredentials ¶
func (user User) WebAuthnCredentials() []webauthn.Credential
WebAuthnCredentials 获得已注册的验证器凭证
func (User) WebAuthnDisplayName ¶
WebAuthnDisplayName 获得用于展示的用户名
type UserOption ¶
type UserOption struct { ProfileOff bool `json:"profile_off,omitempty"` PreferredPolicy uint `json:"preferred_policy,omitempty"` PreferredTheme string `json:"preferred_theme,omitempty"` }
UserOption 用户个性化配置字段
type Webdav ¶
type Webdav struct { gorm.Model Name string // 应用名称 Password string `gorm:"unique_index:password_only_on"` // 应用密码 UserID uint `gorm:"unique_index:password_only_on"` // 用户ID Root string `gorm:"type:text"` // 根目录 }
Webdav 应用账户
func GetWebdavByPassword ¶
GetWebdavByPassword 根据密码和用户查找Webdav应用