Documentation
¶
Index ¶
- Variables
- func InitDB(config config.DatabaseConfig) (*gorm.DB, error)
- func InitRedis(config config.RedisConfig) (*redis.Client, error)
- type Article
- type ArticleContent
- type ArticleCreateForm
- type ArticleDetailResponse
- type ArticleQueryParams
- type ArticleResponse
- type ArticleUpdateForm
- type Category
- type CategoryCreateForm
- type CategoryDetailResponse
- type CategoryResponse
- type CategoryUpdateForm
- type Comment
- type CommentCreateForm
- type CommentQueryParams
- type CommentResponse
- type CommentUpdateForm
- type ConfigCreateForm
- type ConfigQueryParams
- type ConfigResponse
- type ConfigUpdateForm
- type CustomClaims
- type EnumItem
- type File
- type FileQueryParams
- type FileResponse
- type FileUploadForm
- type IDRequest
- type IDsRequest
- type LoginResult
- type Option
- type PageResult
- type PasswordUpdateForm
- type Permission
- type PermissionCreateForm
- type PermissionResponse
- type PermissionUpdateForm
- type RefreshClaims
- type RefreshTokenResult
- type Role
- type RoleCreateForm
- type RolePermissionForm
- type RoleResponse
- type RoleUpdateForm
- type StatusRequest
- type SysConfig
- type Tag
- type TagCreateForm
- type TagResponse
- type TagUpdateForm
- type TreeNode
- type UploadResult
- type User
- type UserLoginForm
- type UserRegisterForm
- type UserResponse
- type UserUpdateForm
Constants ¶
This section is empty.
Variables ¶
var DB *gorm.DB
DB 全局数据库连接
var RDB *redis.Client
RDB 全局Redis客户端
Functions ¶
func InitRedis ¶
func InitRedis(config config.RedisConfig) (*redis.Client, error)
InitRedis 初始化Redis连接
Types ¶
type Article ¶
type Article struct { ArticleID int64 `gorm:"column:article_id;primaryKey;autoIncrement" json:"article_id"` UserID int `gorm:"column:user_id;not null" json:"user_id"` Title string `gorm:"column:title;size:200;not null" json:"title"` ArticleKey string `gorm:"column:article_key;size:200;not null;unique" json:"article_key"` Summary string `gorm:"column:summary;size:500" json:"summary"` Thumbnail string `gorm:"column:thumbnail;size:255" json:"thumbnail"` Status int8 `gorm:"column:status;not null;default:1" json:"status"` ArticleType int8 `gorm:"column:article_type;not null;default:1" json:"article_type"` ViewCount int `gorm:"column:view_count;not null;default:0" json:"view_count"` LikeCount int `gorm:"column:like_count;not null;default:0" json:"like_count"` CommentCount int `gorm:"column:comment_count;not null;default:0" json:"comment_count"` AllowComment bool `gorm:"column:allow_comment;not null;default:true" json:"allow_comment"` IsTop bool `gorm:"column:is_top;not null;default:false" json:"is_top"` IsRecommend bool `gorm:"column:is_recommend;not null;default:false" json:"is_recommend"` SEOTitle string `gorm:"column:seo_title;size:100" json:"seo_title"` SEOKeywords string `gorm:"column:seo_keywords;size:200" json:"seo_keywords"` SEODescription string `gorm:"column:seo_description;size:300" json:"seo_description"` SourceURL string `gorm:"column:source_url;size:255" json:"source_url"` SourceName string `gorm:"column:source_name;size:100" json:"source_name"` PublishTime time.Time `gorm:"column:publish_time" json:"publish_time"` CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"` User User `gorm:"foreignKey:UserID" json:"user"` Content ArticleContent `gorm:"foreignKey:ArticleID" json:"content"` Categories []Category `` /* 151-byte string literal not displayed */ Tags []Tag `` /* 129-byte string literal not displayed */ }
Article 文章模型
type ArticleContent ¶
type ArticleContent struct { ContentID int64 `gorm:"column:content_id;primaryKey;autoIncrement" json:"content_id"` ArticleID int64 `gorm:"column:article_id;not null" json:"article_id"` Content string `gorm:"column:content;not null" json:"content"` ContentFormat int8 `gorm:"column:content_format;not null;default:1" json:"content_format"` Version int `gorm:"column:version;not null;default:1" json:"version"` IsCurrent bool `gorm:"column:is_current;not null;default:true" json:"is_current"` CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"` }
ArticleContent 文章内容模型
type ArticleCreateForm ¶
type ArticleCreateForm struct { Title string `json:"title" binding:"required,max=200" example:"文章标题"` ArticleKey string `json:"article_key" binding:"required,max=200" example:"article-key"` Content string `json:"content" binding:"required" example:"文章内容..."` ContentFormat int8 `json:"content_format" binding:"required,oneof=1 2" example:"1"` Summary string `json:"summary" binding:"omitempty,max=500" example:"文章摘要..."` Thumbnail string `json:"thumbnail" binding:"omitempty,max=255" example:"http://example.com/image.jpg"` Status int8 `json:"status" binding:"required,oneof=1 2 3 4" example:"1"` ArticleType int8 `json:"article_type" binding:"required,oneof=1 2 3 4" example:"1"` CategoryIDs []int `json:"category_ids" binding:"required" example:"1,2"` TagIDs []int `json:"tag_ids" binding:"omitempty" example:"1,2,3"` AllowComment bool `json:"allow_comment" example:"true"` IsTop bool `json:"is_top" example:"false"` IsRecommend bool `json:"is_recommend" example:"false"` SEOTitle string `json:"seo_title" binding:"omitempty,max=100" example:"SEO标题"` SEOKeywords string `json:"seo_keywords" binding:"omitempty,max=200" example:"关键词1,关键词2"` SEODescription string `json:"seo_description" binding:"omitempty,max=300" example:"SEO描述..."` SourceURL string `json:"source_url" binding:"omitempty,max=255" example:"http://example.com/source"` SourceName string `json:"source_name" binding:"omitempty,max=100" example:"来源网站"` }
ArticleCreateForm 文章创建表单
type ArticleDetailResponse ¶
type ArticleDetailResponse struct { ArticleResponse Content string `json:"content"` ContentFormat int8 `json:"content_format"` SEOTitle string `json:"seo_title"` SEOKeywords string `json:"seo_keywords"` SEODescription string `json:"seo_description"` SourceURL string `json:"source_url"` SourceName string `json:"source_name"` }
ArticleDetailResponse 文章详情响应
type ArticleQueryParams ¶
type ArticleQueryParams struct { Keyword string `form:"keyword" json:"keyword"` Status int8 `form:"status" json:"status"` CategoryID int `form:"category_id" json:"category_id"` TagID int `form:"tag_id" json:"tag_id"` UserID int `form:"user_id" json:"user_id"` ArticleType int8 `form:"article_type" json:"article_type"` IsTop *bool `form:"is_top" json:"is_top"` IsRecommend *bool `form:"is_recommend" json:"is_recommend"` StartTime string `form:"start_time" json:"start_time"` EndTime string `form:"end_time" json:"end_time"` OrderBy string `form:"order_by" json:"order_by"` Page int `form:"page" json:"page" binding:"required,min=1" default:"1"` PageSize int `form:"page_size" json:"page_size" binding:"required,min=1,max=100" default:"10"` }
ArticleQueryParams 文章查询参数
type ArticleResponse ¶
type ArticleResponse struct { ArticleID int64 `json:"article_id"` UserID int `json:"user_id"` Author string `json:"author"` Title string `json:"title"` ArticleKey string `json:"article_key"` Summary string `json:"summary"` Thumbnail string `json:"thumbnail"` Status int8 `json:"status"` StatusName string `json:"status_name"` ArticleType int8 `json:"article_type"` ArticleTypeName string `json:"article_type_name"` ViewCount int `json:"view_count"` LikeCount int `json:"like_count"` CommentCount int `json:"comment_count"` AllowComment bool `json:"allow_comment"` IsTop bool `json:"is_top"` IsRecommend bool `json:"is_recommend"` PublishTime time.Time `json:"publish_time"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Categories []string `json:"categories"` Tags []string `json:"tags"` }
ArticleResponse 文章信息响应
type ArticleUpdateForm ¶
type ArticleUpdateForm struct { Title string `json:"title" binding:"omitempty,max=200" example:"文章标题"` ArticleKey string `json:"article_key" binding:"omitempty,max=200" example:"article-key"` Content string `json:"content" binding:"omitempty" example:"文章内容..."` ContentFormat int8 `json:"content_format" binding:"omitempty,oneof=1 2" example:"1"` Summary string `json:"summary" binding:"omitempty,max=500" example:"文章摘要..."` Thumbnail string `json:"thumbnail" binding:"omitempty,max=255" example:"http://example.com/image.jpg"` Status int8 `json:"status" binding:"omitempty,oneof=1 2 3 4" example:"1"` ArticleType int8 `json:"article_type" binding:"omitempty,oneof=1 2 3 4" example:"1"` CategoryIDs []int `json:"category_ids" binding:"omitempty" example:"1,2"` TagIDs []int `json:"tag_ids" binding:"omitempty" example:"1,2,3"` AllowComment bool `json:"allow_comment" example:"true"` IsTop bool `json:"is_top" example:"false"` IsRecommend bool `json:"is_recommend" example:"false"` SEOTitle string `json:"seo_title" binding:"omitempty,max=100" example:"SEO标题"` SEOKeywords string `json:"seo_keywords" binding:"omitempty,max=200" example:"关键词1,关键词2"` SEODescription string `json:"seo_description" binding:"omitempty,max=300" example:"SEO描述..."` SourceURL string `json:"source_url" binding:"omitempty,max=255" example:"http://example.com/source"` SourceName string `json:"source_name" binding:"omitempty,max=100" example:"来源网站"` }
ArticleUpdateForm 文章更新表单
type Category ¶
type Category struct { CategoryID int `gorm:"column:category_id;primaryKey;autoIncrement" json:"category_id"` ParentID *int `gorm:"column:parent_id" json:"parent_id"` CategoryName string `gorm:"column:category_name;size:50;not null" json:"category_name"` CategoryKey string `gorm:"column:category_key;size:50;not null;unique" json:"category_key"` Path string `gorm:"column:path;not null" json:"path"` Description string `gorm:"column:description" json:"description"` Thumbnail string `gorm:"column:thumbnail;size:255" json:"thumbnail"` Icon string `gorm:"column:icon;size:100" json:"icon"` SortOrder int16 `gorm:"column:sort_order;not null;default:0" json:"sort_order"` IsVisible bool `gorm:"column:is_visible;not null;default:true" json:"is_visible"` SEOTitle string `gorm:"column:seo_title;size:100" json:"seo_title"` SEOKeywords string `gorm:"column:seo_keywords;size:200" json:"seo_keywords"` SEODescription string `gorm:"column:seo_description;size:300" json:"seo_description"` ArticleCount int `gorm:"column:article_count;not null;default:0" json:"article_count"` CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"` Parent *Category `gorm:"foreignKey:ParentID" json:"parent,omitempty"` Children []*Category `gorm:"foreignKey:ParentID" json:"children,omitempty"` Articles []Article `` /* 159-byte string literal not displayed */ }
Category 分类模型
type CategoryCreateForm ¶
type CategoryCreateForm struct { ParentID *int `json:"parent_id" example:"0"` CategoryName string `json:"category_name" binding:"required,max=50" example:"技术文章"` CategoryKey string `json:"category_key" binding:"required,max=50" example:"tech"` Description string `json:"description" binding:"omitempty" example:"技术相关文章分类"` Thumbnail string `json:"thumbnail" binding:"omitempty,max=255" example:"http://example.com/image.jpg"` Icon string `json:"icon" binding:"omitempty,max=100" example:"code"` SortOrder int16 `json:"sort_order" binding:"omitempty" example:"1"` IsVisible bool `json:"is_visible" example:"true"` SEOTitle string `json:"seo_title" binding:"omitempty,max=100" example:"技术文章分类"` SEOKeywords string `json:"seo_keywords" binding:"omitempty,max=200" example:"技术,编程,开发"` SEODescription string `json:"seo_description" binding:"omitempty,max=300" example:"包含各种技术相关文章的分类"` }
CategoryCreateForm 分类创建表单
type CategoryDetailResponse ¶
type CategoryDetailResponse struct { CategoryResponse SEOTitle string `json:"seo_title"` SEOKeywords string `json:"seo_keywords"` SEODescription string `json:"seo_description"` Path string `json:"path"` }
CategoryDetailResponse 分类详情响应
type CategoryResponse ¶
type CategoryResponse struct { CategoryID int `json:"category_id"` ParentID *int `json:"parent_id"` CategoryName string `json:"category_name"` CategoryKey string `json:"category_key"` Description string `json:"description"` Thumbnail string `json:"thumbnail"` Icon string `json:"icon"` SortOrder int16 `json:"sort_order"` IsVisible bool `json:"is_visible"` ArticleCount int `json:"article_count"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Children []*CategoryResponse `json:"children,omitempty"` }
CategoryResponse 分类信息响应
type CategoryUpdateForm ¶
type CategoryUpdateForm struct { ParentID *int `json:"parent_id" example:"0"` CategoryName string `json:"category_name" binding:"omitempty,max=50" example:"技术文章"` CategoryKey string `json:"category_key" binding:"omitempty,max=50" example:"tech"` Description string `json:"description" binding:"omitempty" example:"技术相关文章分类"` Thumbnail string `json:"thumbnail" binding:"omitempty,max=255" example:"http://example.com/image.jpg"` Icon string `json:"icon" binding:"omitempty,max=100" example:"code"` SortOrder int16 `json:"sort_order" binding:"omitempty" example:"1"` IsVisible bool `json:"is_visible" example:"true"` SEOTitle string `json:"seo_title" binding:"omitempty,max=100" example:"技术文章分类"` SEOKeywords string `json:"seo_keywords" binding:"omitempty,max=200" example:"技术,编程,开发"` SEODescription string `json:"seo_description" binding:"omitempty,max=300" example:"包含各种技术相关文章的分类"` }
CategoryUpdateForm 分类更新表单
type Comment ¶
type Comment struct { CommentID int64 `gorm:"column:comment_id;primaryKey;autoIncrement" json:"comment_id"` ArticleID int64 `gorm:"column:article_id;not null" json:"article_id"` UserID int `gorm:"column:user_id;not null" json:"user_id"` ParentID *int64 `gorm:"column:parent_id" json:"parent_id"` RootID *int64 `gorm:"column:root_id" json:"root_id"` Content string `gorm:"column:content;not null" json:"content"` IPAddress string `gorm:"column:ip_address" json:"ip_address"` UserAgent string `gorm:"column:user_agent" json:"user_agent"` LikedCount int `gorm:"column:liked_count;not null;default:0" json:"liked_count"` IsApproved bool `gorm:"column:is_approved;not null;default:false" json:"is_approved"` IsAdminReply bool `gorm:"column:is_admin_reply;not null;default:false" json:"is_admin_reply"` CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"` User User `gorm:"foreignKey:UserID" json:"user"` Article Article `gorm:"foreignKey:ArticleID" json:"article"` Parent *Comment `gorm:"foreignKey:ParentID" json:"parent,omitempty"` Children []*Comment `gorm:"foreignKey:ParentID" json:"children,omitempty"` }
Comment 评论模型
type CommentCreateForm ¶
type CommentCreateForm struct { ArticleID int64 `json:"article_id" binding:"required" example:"1"` ParentID *int64 `json:"parent_id" example:"0"` Content string `json:"content" binding:"required" example:"这是一条评论内容"` }
CommentCreateForm 评论创建表单
type CommentQueryParams ¶
type CommentQueryParams struct { ArticleID int64 `form:"article_id" json:"article_id"` UserID int `form:"user_id" json:"user_id"` IsApproved *bool `form:"is_approved" json:"is_approved"` Keyword string `form:"keyword" json:"keyword"` StartTime string `form:"start_time" json:"start_time"` EndTime string `form:"end_time" json:"end_time"` Page int `form:"page" json:"page" binding:"required,min=1" default:"1"` PageSize int `form:"page_size" json:"page_size" binding:"required,min=1,max=100" default:"10"` }
CommentQueryParams 评论查询参数
type CommentResponse ¶
type CommentResponse struct { CommentID int64 `json:"comment_id"` ArticleID int64 `json:"article_id"` ArticleTitle string `json:"article_title"` UserID int `json:"user_id"` Username string `json:"username"` Nickname string `json:"nickname"` Avatar string `json:"avatar"` ParentID *int64 `json:"parent_id"` RootID *int64 `json:"root_id"` Content string `json:"content"` LikedCount int `json:"liked_count"` IsApproved bool `json:"is_approved"` IsAdminReply bool `json:"is_admin_reply"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Children []*CommentResponse `json:"children,omitempty"` }
CommentResponse 评论信息响应
type CommentUpdateForm ¶
type CommentUpdateForm struct { Content string `json:"content" binding:"required" example:"更新后的评论内容"` IsApproved bool `json:"is_approved" example:"true"` }
CommentUpdateForm 评论更新表单
type ConfigCreateForm ¶
type ConfigCreateForm struct { ConfigName string `json:"config_name" binding:"required,max=100" example:"网站名称"` ConfigKey string `json:"config_key" binding:"required,max=100" example:"site_name"` ConfigValue string `json:"config_value" binding:"required" example:"我的博客"` ValueType int8 `json:"value_type" binding:"required,oneof=1 2 3 4" example:"1"` ConfigGroup string `json:"config_group" binding:"required,max=50" example:"site"` IsBuiltin bool `json:"is_builtin" example:"false"` IsFrontend bool `json:"is_frontend" example:"true"` SortOrder int16 `json:"sort_order" binding:"omitempty" example:"1"` Remark string `json:"remark" binding:"omitempty,max=200" example:"网站名称配置"` }
ConfigCreateForm 配置创建表单
type ConfigQueryParams ¶
type ConfigQueryParams struct { ConfigGroup string `form:"config_group" json:"config_group"` ConfigKey string `form:"config_key" json:"config_key"` Keyword string `form:"keyword" json:"keyword"` IsFrontend *bool `form:"is_frontend" json:"is_frontend"` IsBuiltin *bool `form:"is_builtin" json:"is_builtin"` Page int `form:"page" json:"page" binding:"required,min=1" default:"1"` PageSize int `form:"page_size" json:"page_size" binding:"required,min=1,max=100" default:"10"` }
ConfigQueryParams 配置查询参数
type ConfigResponse ¶
type ConfigResponse struct { ConfigID int `json:"config_id"` ConfigName string `json:"config_name"` ConfigKey string `json:"config_key"` ConfigValue string `json:"config_value"` ValueType int8 `json:"value_type"` ConfigGroup string `json:"config_group"` IsBuiltin bool `json:"is_builtin"` IsFrontend bool `json:"is_frontend"` SortOrder int16 `json:"sort_order"` Remark string `json:"remark"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` }
ConfigResponse 配置信息响应
type ConfigUpdateForm ¶
type ConfigUpdateForm struct { ConfigName string `json:"config_name" binding:"omitempty,max=100" example:"网站名称"` ConfigValue string `json:"config_value" binding:"required" example:"我的博客"` ValueType int8 `json:"value_type" binding:"omitempty,oneof=1 2 3 4" example:"1"` ConfigGroup string `json:"config_group" binding:"omitempty,max=50" example:"site"` IsFrontend bool `json:"is_frontend" example:"true"` SortOrder int16 `json:"sort_order" binding:"omitempty" example:"1"` Remark string `json:"remark" binding:"omitempty,max=200" example:"网站名称配置"` }
ConfigUpdateForm 配置更新表单
type CustomClaims ¶
type CustomClaims struct { UserID int `json:"user_id"` Username string `json:"username"` RoleIDs []int `json:"role_ids"` jwt.RegisteredClaims }
CustomClaims 自定义JWT声明
type File ¶
type File struct { FileID int64 `gorm:"column:file_id;primaryKey;autoIncrement" json:"file_id"` UserID *int `gorm:"column:user_id" json:"user_id"` OriginalName string `gorm:"column:original_name;size:255;not null" json:"original_name"` FileName string `gorm:"column:file_name;size:100;not null" json:"file_name"` FilePath string `gorm:"column:file_path;size:255;not null" json:"file_path"` FileExt string `gorm:"column:file_ext;size:20;not null" json:"file_ext"` FileSize int64 `gorm:"column:file_size;not null" json:"file_size"` MimeType string `gorm:"column:mime_type;size:100;not null" json:"mime_type"` StorageType int8 `gorm:"column:storage_type;not null;default:1" json:"storage_type"` UseTimes int `gorm:"column:use_times;not null;default:0" json:"use_times"` IsPublic bool `gorm:"column:is_public;not null;default:true" json:"is_public"` CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"` User *User `gorm:"foreignKey:UserID" json:"user,omitempty"` }
File 文件模型
type FileQueryParams ¶
type FileQueryParams struct { UserID *int `form:"user_id" json:"user_id"` FileExt string `form:"file_ext" json:"file_ext"` StorageType *int8 `form:"storage_type" json:"storage_type"` IsPublic *bool `form:"is_public" json:"is_public"` Keyword string `form:"keyword" json:"keyword"` StartTime string `form:"start_time" json:"start_time"` EndTime string `form:"end_time" json:"end_time"` Page int `form:"page" json:"page" binding:"required,min=1" default:"1"` PageSize int `form:"page_size" json:"page_size" binding:"required,min=1,max=100" default:"10"` }
FileQueryParams 文件查询参数
type FileResponse ¶
type FileResponse struct { FileID int64 `json:"file_id"` UserID *int `json:"user_id"` Username string `json:"username,omitempty"` OriginalName string `json:"original_name"` FileName string `json:"file_name"` FilePath string `json:"file_path"` FileExt string `json:"file_ext"` FileSize int64 `json:"file_size"` MimeType string `json:"mime_type"` StorageType int8 `json:"storage_type"` UseTimes int `json:"use_times"` IsPublic bool `json:"is_public"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` URL string `json:"url"` }
FileResponse 文件信息响应
type FileUploadForm ¶
type FileUploadForm struct {
IsPublic bool `form:"is_public" json:"is_public" example:"true"`
}
FileUploadForm 文件上传表单
type IDRequest ¶
type IDRequest struct {
ID int `json:"id" binding:"required" example:"1"` // ID
}
IDRequest ID请求
type IDsRequest ¶
type IDsRequest struct {
IDs []int `json:"ids" binding:"required" example:"[1,2,3]"` // ID列表
}
IDsRequest IDs请求
type LoginResult ¶
type LoginResult struct { Token string `json:"token"` // 访问令牌 RefreshToken string `json:"refresh_token"` // 刷新令牌 ExpiresIn int `json:"expires_in"` // 过期时间(秒) TokenType string `json:"token_type"` // 令牌类型 }
LoginResult 登录结果
type Option ¶
type Option struct { Label string `json:"label"` // 选项标签 Value interface{} `json:"value"` // 选项值 }
Option 选项结构
type PageResult ¶
type PageResult struct { List interface{} `json:"list"` // 数据列表 Total int64 `json:"total"` // 总记录数 Page int `json:"page"` // 当前页码 PageSize int `json:"page_size"` // 每页记录数 Pages int `json:"pages"` // 总页数 }
PageResult 分页结果
func NewPageResult ¶
func NewPageResult(list interface{}, total int64, page, pageSize int) *PageResult
NewPageResult 创建分页结果
type PasswordUpdateForm ¶
type PasswordUpdateForm struct { OldPassword string `json:"old_password" binding:"required" example:"123456"` NewPassword string `json:"new_password" binding:"required,min=6,max=20" example:"654321"` }
PasswordUpdateForm 密码更新表单
type Permission ¶
type Permission struct { PermID int `gorm:"column:perm_id;primaryKey;autoIncrement" json:"perm_id"` PermName string `gorm:"column:perm_name;size:50;not null" json:"perm_name"` PermKey string `gorm:"column:perm_key;size:50;not null;unique" json:"perm_key"` PermType int8 `gorm:"column:perm_type;not null;default:1" json:"perm_type"` ParentID *int `gorm:"column:parent_id" json:"parent_id"` Path string `gorm:"column:path" json:"path"` APIPath string `gorm:"column:api_path;size:200" json:"api_path"` Component string `gorm:"column:component;size:100" json:"component"` Perms string `gorm:"column:perms;size:100" json:"perms"` Icon string `gorm:"column:icon;size:100" json:"icon"` MenuSort int16 `gorm:"column:menu_sort;not null;default:0" json:"menu_sort"` IsVisible bool `gorm:"column:is_visible;not null;default:true" json:"is_visible"` IsEnabled bool `gorm:"column:is_enabled;not null;default:true" json:"is_enabled"` CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"` Roles []Role `` /* 130-byte string literal not displayed */ Children []*Permission `gorm:"-" json:"children,omitempty"` }
Permission 权限模型
type PermissionCreateForm ¶
type PermissionCreateForm struct { PermName string `json:"perm_name" binding:"required,max=50" example:"用户管理"` PermKey string `json:"perm_key" binding:"required,max=50" example:"system:user:list"` PermType int8 `json:"perm_type" binding:"required,oneof=1 2 3" example:"1"` ParentID *int `json:"parent_id" example:"0"` APIPath string `json:"api_path" binding:"omitempty,max=200" example:"/api/v1/users"` Component string `json:"component" binding:"omitempty,max=100" example:"system/user/index"` Perms string `json:"perms" binding:"omitempty,max=100" example:"system:user:list"` Icon string `json:"icon" binding:"omitempty,max=100" example:"user"` MenuSort int16 `json:"menu_sort" binding:"omitempty" example:"1"` IsVisible bool `json:"is_visible" example:"true"` IsEnabled bool `json:"is_enabled" example:"true"` }
PermissionCreateForm 权限创建表单
type PermissionResponse ¶
type PermissionResponse struct { PermID int `json:"perm_id"` PermName string `json:"perm_name"` PermKey string `json:"perm_key"` PermType int8 `json:"perm_type"` ParentID *int `json:"parent_id"` Path string `json:"path"` APIPath string `json:"api_path"` Component string `json:"component"` Perms string `json:"perms"` Icon string `json:"icon"` MenuSort int16 `json:"menu_sort"` IsVisible bool `json:"is_visible"` IsEnabled bool `json:"is_enabled"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Children []*PermissionResponse `json:"children,omitempty"` }
PermissionResponse 权限信息响应
type PermissionUpdateForm ¶
type PermissionUpdateForm struct { PermName string `json:"perm_name" binding:"omitempty,max=50" example:"用户管理"` PermKey string `json:"perm_key" binding:"omitempty,max=50" example:"system:user:list"` PermType int8 `json:"perm_type" binding:"omitempty,oneof=1 2 3" example:"1"` ParentID *int `json:"parent_id" example:"0"` APIPath string `json:"api_path" binding:"omitempty,max=200" example:"/api/v1/users"` Component string `json:"component" binding:"omitempty,max=100" example:"system/user/index"` Perms string `json:"perms" binding:"omitempty,max=100" example:"system:user:list"` Icon string `json:"icon" binding:"omitempty,max=100" example:"user"` MenuSort int16 `json:"menu_sort" binding:"omitempty" example:"1"` IsVisible bool `json:"is_visible" example:"true"` IsEnabled bool `json:"is_enabled" example:"true"` }
PermissionUpdateForm 权限更新表单
type RefreshClaims ¶
type RefreshClaims struct { UserID int `json:"user_id"` jwt.RegisteredClaims }
RefreshClaims 刷新令牌声明
type RefreshTokenResult ¶
type RefreshTokenResult struct { Token string `json:"token"` // 新的访问令牌 ExpiresIn int `json:"expires_in"` // 过期时间(秒) }
RefreshTokenResult 刷新令牌结果
type Role ¶
type Role struct { RoleID int `gorm:"column:role_id;primaryKey;autoIncrement" json:"role_id"` RoleName string `gorm:"column:role_name;size:50;not null;unique" json:"role_name"` RoleKey string `gorm:"column:role_key;size:50;not null;unique" json:"role_key"` RoleSort int16 `gorm:"column:role_sort;not null;default:0" json:"role_sort"` RoleDesc string `gorm:"column:role_desc;size:200" json:"role_desc"` IsDefault bool `gorm:"column:is_default;not null;default:false" json:"is_default"` IsEnabled bool `gorm:"column:is_enabled;not null;default:true" json:"is_enabled"` CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"` Permissions []Permission `` /* 136-byte string literal not displayed */ Users []User `gorm:"many2many:sys_user_roles;foreignKey:RoleID;joinForeignKey:RoleID;References:UserID;joinReferences:UserID" json:"users"` }
Role 角色模型
type RoleCreateForm ¶
type RoleCreateForm struct { RoleName string `json:"role_name" binding:"required,max=50" example:"编辑角色"` RoleKey string `json:"role_key" binding:"required,max=50" example:"editor"` RoleSort int16 `json:"role_sort" binding:"omitempty" example:"5"` RoleDesc string `json:"role_desc" binding:"omitempty,max=200" example:"负责内容编辑的角色"` IsDefault bool `json:"is_default" example:"false"` IsEnabled bool `json:"is_enabled" example:"true"` }
RoleCreateForm 角色创建表单
type RolePermissionForm ¶
type RolePermissionForm struct {
PermissionIDs []int `json:"permission_ids" binding:"required" example:"1,2,3,4"`
}
RolePermissionForm 角色权限分配表单
type RoleResponse ¶
type RoleResponse struct { RoleID int `json:"role_id"` RoleName string `json:"role_name"` RoleKey string `json:"role_key"` RoleSort int16 `json:"role_sort"` RoleDesc string `json:"role_desc"` IsDefault bool `json:"is_default"` IsEnabled bool `json:"is_enabled"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Permissions []string `json:"permissions,omitempty"` }
RoleResponse 角色信息响应
type RoleUpdateForm ¶
type RoleUpdateForm struct { RoleName string `json:"role_name" binding:"omitempty,max=50" example:"编辑角色"` RoleKey string `json:"role_key" binding:"omitempty,max=50" example:"editor"` RoleSort int16 `json:"role_sort" binding:"omitempty" example:"5"` RoleDesc string `json:"role_desc" binding:"omitempty,max=200" example:"负责内容编辑的角色"` IsDefault bool `json:"is_default" example:"false"` IsEnabled bool `json:"is_enabled" example:"true"` }
RoleUpdateForm 角色更新表单
type StatusRequest ¶
type StatusRequest struct {
Status int8 `json:"status" binding:"required" example:"1"` // 状态值
}
StatusRequest 状态请求
type SysConfig ¶
type SysConfig struct { ConfigID int `gorm:"column:config_id;primaryKey;autoIncrement" json:"config_id"` ConfigName string `gorm:"column:config_name;size:100;not null" json:"config_name"` ConfigKey string `gorm:"column:config_key;size:100;not null;unique" json:"config_key"` ConfigValue string `gorm:"column:config_value;not null" json:"config_value"` ValueType int8 `gorm:"column:value_type;not null;default:1" json:"value_type"` ConfigGroup string `gorm:"column:config_group;size:50;not null;default:'default'" json:"config_group"` IsBuiltin bool `gorm:"column:is_builtin;not null;default:false" json:"is_builtin"` IsFrontend bool `gorm:"column:is_frontend;not null;default:false" json:"is_frontend"` SortOrder int16 `gorm:"column:sort_order;not null;default:0" json:"sort_order"` Remark string `gorm:"column:remark;size:200" json:"remark"` CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"` }
SysConfig 系统配置模型
type Tag ¶
type Tag struct { TagID int `gorm:"column:tag_id;primaryKey;autoIncrement" json:"tag_id"` TagName string `gorm:"column:tag_name;size:50;not null;unique" json:"tag_name"` TagKey string `gorm:"column:tag_key;size:50;not null;unique" json:"tag_key"` Description string `gorm:"column:description" json:"description"` Thumbnail string `gorm:"column:thumbnail;size:255" json:"thumbnail"` SortOrder int16 `gorm:"column:sort_order;not null;default:0" json:"sort_order"` IsVisible bool `gorm:"column:is_visible;not null;default:true" json:"is_visible"` ArticleCount int `gorm:"column:article_count;not null;default:0" json:"article_count"` CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"` Articles []Article `` /* 143-byte string literal not displayed */ }
Tag 标签模型
type TagCreateForm ¶
type TagCreateForm struct { TagName string `json:"tag_name" binding:"required,max=50" example:"Go语言"` TagKey string `json:"tag_key" binding:"required,max=50" example:"golang"` Description string `json:"description" binding:"omitempty" example:"Go语言相关文章标签"` Thumbnail string `json:"thumbnail" binding:"omitempty,max=255" example:"http://example.com/image.jpg"` SortOrder int16 `json:"sort_order" binding:"omitempty" example:"1"` IsVisible bool `json:"is_visible" example:"true"` }
TagCreateForm 标签创建表单
type TagResponse ¶
type TagResponse struct { TagID int `json:"tag_id"` TagName string `json:"tag_name"` TagKey string `json:"tag_key"` Description string `json:"description"` Thumbnail string `json:"thumbnail"` SortOrder int16 `json:"sort_order"` IsVisible bool `json:"is_visible"` ArticleCount int `json:"article_count"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` }
TagResponse 标签信息响应
type TagUpdateForm ¶
type TagUpdateForm struct { TagName string `json:"tag_name" binding:"omitempty,max=50" example:"Go语言"` TagKey string `json:"tag_key" binding:"omitempty,max=50" example:"golang"` Description string `json:"description" binding:"omitempty" example:"Go语言相关文章标签"` Thumbnail string `json:"thumbnail" binding:"omitempty,max=255" example:"http://example.com/image.jpg"` SortOrder int16 `json:"sort_order" binding:"omitempty" example:"1"` IsVisible bool `json:"is_visible" example:"true"` }
TagUpdateForm 标签更新表单
type TreeNode ¶
type TreeNode struct { ID interface{} `json:"id"` // 节点ID Label string `json:"label"` // 节点标签 Value interface{} `json:"value"` // 节点值 Children []*TreeNode `json:"children"` // 子节点 }
TreeNode 树节点结构
type UploadResult ¶
type UploadResult struct { FileID int64 `json:"file_id"` // 文件ID OriginalName string `json:"original_name"` // 原始文件名 FileName string `json:"file_name"` // 存储文件名 FileExt string `json:"file_ext"` // 文件扩展名 FileSize int64 `json:"file_size"` // 文件大小(字节) URL string `json:"url"` // 文件URL }
UploadResult 上传结果
type User ¶
type User struct { UserID int `gorm:"column:user_id;primaryKey;autoIncrement" json:"user_id"` Username string `gorm:"column:username;size:30;not null;unique" json:"username"` PasswordHash string `gorm:"column:password_hash;size:100" json:"-"` Email string `gorm:"column:email;size:100;unique" json:"email"` Mobile string `gorm:"column:mobile;size:20;unique" json:"mobile"` WechatOpenID string `gorm:"column:wechat_openid;size:50;unique" json:"-"` WechatUnionID string `gorm:"column:wechat_unionid;size:50;unique" json:"-"` Avatar string `gorm:"column:avatar;size:255" json:"avatar"` Nickname string `gorm:"column:nickname;size:50" json:"nickname"` RealName string `gorm:"column:real_name;size:50" json:"real_name"` Gender int8 `gorm:"column:gender;default:0" json:"gender"` Birthday time.Time `gorm:"column:birthday" json:"birthday"` Status int8 `gorm:"column:status;not null;default:1" json:"status"` RegisterSource int8 `gorm:"column:register_source;not null;default:1" json:"register_source"` LastLogin time.Time `gorm:"column:last_login" json:"last_login"` LoginCount int `gorm:"column:login_count;not null;default:0" json:"login_count"` CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;not null;default:CURRENT_TIMESTAMP" json:"updated_at"` Roles []Role `gorm:"many2many:sys_user_roles;foreignKey:UserID;joinForeignKey:UserID;References:RoleID;joinReferences:RoleID" json:"roles"` }
User 用户模型
func (*User) CheckPassword ¶
CheckPassword 检查密码是否正确
type UserLoginForm ¶
type UserLoginForm struct { Username string `json:"username" binding:"required" example:"admin"` Password string `json:"password" binding:"required" example:"123456"` }
UserLoginForm 用户登录表单
type UserRegisterForm ¶
type UserRegisterForm struct { Username string `json:"username" binding:"required,min=4,max=30" example:"newuser"` Password string `json:"password" binding:"required,min=6,max=20" example:"123456"` Email string `json:"email" binding:"required,email" example:"user@example.com"` Mobile string `json:"mobile" binding:"omitempty,len=11" example:"13800138000"` Nickname string `json:"nickname" binding:"omitempty,max=50" example:"新用户"` }
UserRegisterForm 用户注册表单
type UserResponse ¶
type UserResponse struct { UserID int `json:"user_id"` Username string `json:"username"` Email string `json:"email"` Mobile string `json:"mobile"` Avatar string `json:"avatar"` Nickname string `json:"nickname"` Gender int8 `json:"gender"` Status int8 `json:"status"` RegisterSource int8 `json:"register_source"` LastLogin time.Time `json:"last_login"` CreatedAt time.Time `json:"created_at"` Roles []string `json:"roles"` }
UserResponse 用户信息响应
type UserUpdateForm ¶
type UserUpdateForm struct { Nickname string `json:"nickname" binding:"omitempty,max=50" example:"新昵称"` Avatar string `json:"avatar" binding:"omitempty,max=255" example:"http://example.com/avatar.jpg"` Gender int8 `json:"gender" binding:"omitempty,oneof=0 1 2" example:"1"` Birthday time.Time `json:"birthday" binding:"omitempty" example:"1990-01-01T00:00:00Z"` Email string `json:"email" binding:"omitempty,email" example:"newemail@example.com"` Mobile string `json:"mobile" binding:"omitempty,len=11" example:"13900139000"` }
UserUpdateForm 用户信息更新表单