Documentation ¶
Index ¶
- Constants
- Variables
- func UserToRedis(user User) error
- type Article
- type Book
- type BookCategory
- type BookChapter
- type BookChapterComment
- type BookComment
- type Career
- type Category
- type Collect
- type Comment
- type CrawlerArticle
- type Folder
- type Image
- type ImageUploadedInfo
- type KeyValueConfig
- type Message
- type School
- type TopArticle
- type Up
- type User
- type UserVisit
- type UserVote
- type Vote
- type VoteItem
- type YesterdayStats
Constants ¶
const ( // ArticleVerifying 审核中 ArticleVerifying = 1 // ArticleVerifySuccess 审核通过 ArticleVerifySuccess = 2 // ArticleVerifyFail 审核未通过 ArticleVerifyFail = 3 )
const ( // BookUnpublish 未发布 BookUnpublish = "book_unpublish" // BookVerifying 审核中 BookVerifying = "book_verifying" // BookVerifySuccess 审核通过 BookVerifySuccess = "book_verify_success" // BookVerifyFail 审核未通过 BookVerifyFail = "book_verify_fail" )
const ( // BookCommentVerifying 审核中 BookCommentVerifying = "book_comment_verifying" // BookCommentVerifySuccess 审核通过 BookCommentVerifySuccess = "book_comment_verify_success" // BookCommentVerifyFail 审核未通过 BookCommentVerifyFail = "book_comment_verify_fail" )
const ( // BookReadLimitsPublic 公开 BookReadLimitsPublic = "book_read_limits_public" // BookReadLimitsPrivate 私有 BookReadLimitsPrivate = "book_read_limits_private" // BookReadLimitsPay 付费 BookReadLimitsPay = "book_read_limits_pay" )
const ( // CollectSourceArticle 对话题进行收藏 CollectSourceArticle = "collect_source_article" // CollectSourceVote 对投票进行收藏 CollectSourceVote = "collect_source_vote" )
const ( // CommentSourceArticle 对话题进行评论 CommentSourceArticle = "article" // CommentSourceVote 对投票进行评论 CommentSourceVote = "vote" )
const ( // CommentVerifying 审核中 CommentVerifying = 1 // CommentVerifySuccess 审核通过 CommentVerifySuccess = 2 // CommentVerifyFail 审核未通过 CommentVerifyFail = 3 )
const ( // NoParent 无父结点时的parent_id NoParent = 0 // MaxOrder 最大的排序号 MaxOrder = 10000 // MinOrder 最小的排序号 MinOrder = 0 // PageSize 默认每页的条数 PageSize = 20 // MaxPageSize 每页最大的条数 MaxPageSize = 100 // MinPageSize 每页最小的条数 MinPageSize = 5 // MaxNameLen 最大的名称长度 MaxNameLen = 100 // MaxContentLen 最大的内容长度 MaxContentLen = 50000 // MaxCategoryCount 最多可以属于几个分类 MaxCategoryCount = 6 )
通用常量
const ( // ArticleScore 创建话题时增加的积分 ArticleScore = 5 // ByCommentScore 话题或投票被评论时增加的积分 ByCommentScore = 2 // ByCollectScore 话题或投票被收藏时增加的积分 ByCollectScore = 2 // CommentScore 评论话题或投票时增加的积分 CommentScore = 1 // CollectScore 收藏话题或投票时增加的积分 CollectScore = 1 )
积分相关常量
const ( // ArticleMinuteLimitCount 用户每分钟最多能发表的文章数 ArticleMinuteLimitCount = 30 // ArticleDayLimitCount 用户每天最多能发表的文章数 ArticleDayLimitCount = 1000 // CommentMinuteLimitCount 用户每分钟最多能发表的评论数 CommentMinuteLimitCount = 30 // CommentDayLimitCount 用户每天最多能发表的评论数 CommentDayLimitCount = 1000 )
const ( // ContentTypeMarkdown markdown ContentTypeMarkdown = 1 // ContentTypeHTML html ContentTypeHTML = 2 )
const ( // ActiveTime 生成激活账号的链接 ActiveTime = "activeTime" // ResetTime 生成重置密码的链接 ResetTime = "resetTime" // LoginUser 用户信息 LoginUser = "loginUser" // ArticleMinuteLimit 用户每分钟最多能发表的文章数 ArticleMinuteLimit = "articleMinuteLimit" // ArticleDayLimit 用户每天最多能发表的文章数 ArticleDayLimit = "articleDayLimit" // CommentMinuteLimit 用户每分钟最多能发表的评论数 CommentMinuteLimit = "commentMinuteLimit" // CommentDayLimit 用户每天最多能发表的评论数 CommentDayLimit = "commentDayLimit" )
redis相关常量, 为了防止从redis中存取数据时key混乱了,在此集中定义常量来作为各key的名字
const ( // ArticleFromNULL 无来源 ArticleFromNULL = 0 // ArticleFromJianShu 简书 ArticleFromJianShu = 1 // ArticleFromZhihu 知乎 ArticleFromZhihu = 2 // ArticleFromHuxiu 虎嗅 ArticleFromHuxiu = 3 // ArticleFromCustom 自定义 ArticleFromCustom = 10 )
const ( // CrawlerScopePage 抓取单篇文章 CrawlerScopePage = "page" // CrawlerScopeList 抓取一批文章 CrawlerScopeList = "list" )
const ( // DevelopmentMode 开发模式 DevelopmentMode = "development" // TestMode 测试模式 TestMode = "test" // ProductionMode 产品模式 ProductionMode = "production" )
const ( // MessageTypeCommentArticle 回复了话题 MessageTypeCommentArticle = "messageTypeCommentArticle" // MessageTypeCommentVote 回复了投票 MessageTypeCommentVote = "messageTypeCommentVote" // MessageTypeCommentComment 对回复进行了回复 MessageTypeCommentComment = "messageTypeCommentComment" )
const ( // UpTypeArticle 为文章点赞 UpTypeArticle = 1 // UpTypeComment 为评论点赞 UpTypeComment = 2 )
const ( // UserRoleNormal 普通用户 UserRoleNormal = 1 // UserRoleEditor 网站编辑 UserRoleEditor = 2 // UserRoleAdmin 管理员 UserRoleAdmin = 3 // UserRoleSuperAdmin 超级管理员 UserRoleSuperAdmin = 4 // UserRoleCrawler 爬虫,网站编辑或管理员登陆后台后,操作爬虫去抓取文章 // 这时,生成的文章,其作者是爬虫账号。没有直接使用爬虫账号去登陆的情况. UserRoleCrawler = 5 )
const ( // UserStatusInActive 未激活 UserStatusInActive = 1 // UserStatusActived 已激活 UserStatusActived = 2 // UserStatusFrozen 已冻结 UserStatusFrozen = 3 )
const ( // UserSexMale 男 UserSexMale = 0 // UserSexFemale 女 UserSexFemale = 1 // MaxUserNameLen 用户名的最大长度 MaxUserNameLen = 20 // MinUserNameLen 用户名的最小长度 MinUserNameLen = 4 // MaxPassLen 密码的最大长度 MaxPassLen = 20 // MinPassLen 密码的最小长度 MinPassLen = 6 // MaxSignatureLen 个性签名最大长度 MaxSignatureLen = 200 // MaxLocationLen 居住地的最大长度 MaxLocationLen = 200 // MaxIntroduceLen 个人简介的最大长度 MaxIntroduceLen = 500 )
const ( // VoteUnderway 进行中 VoteUnderway = 1 // VoteOver 已结束 VoteOver = 2 )
const MaxCareerCompanyLen = 200
MaxCareerCompanyLen 公司或组织名称的最大长度
const MaxCareerTitleLen = 200
MaxCareerTitleLen 职位的最大长度
const MaxCommentLen = 5000
MaxCommentLen 最大的评论长度
const MaxFolderCount = 20
MaxFolderCount 最多能创建的收藏夹个数
const MaxSchoolNameLen = 200
MaxSchoolNameLen 学校或教育机构名的最大长度
const MaxSchoolSpecialityLen = 200
MaxSchoolSpecialityLen 专业的最大长度
const MaxTopArticleCount = 4
MaxTopArticleCount 最多能置顶的文章数
Variables ¶
var DB *gorm.DB
DB 数据库连接
var ErrorCode = errorCode{
SUCCESS: 0,
ERROR: 1,
NotFound: 404,
LoginError: 1000,
LoginTimeout: 1001,
InActive: 1002,
}
ErrorCode �错误码
var MongoDB *mgo.Database
MongoDB 数据库连接
var RedisPool *redis.Pool
RedisPool Redis连接池
var StatsdClient *statsd.Statter
StatsdClient statsd 客户端
Functions ¶
Types ¶
type Article ¶
type Article struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Name string `json:"name"` BrowseCount uint `json:"browseCount"` CommentCount uint `json:"commentCount"` CollectCount uint `json:"collectCount"` Status int `json:"status"` Content string `json:"content"` HTMLContent string `json:"htmlContent"` ContentType int `json:"contentType"` Categories []Category `gorm:"many2many:article_category;ForeignKey:ID;AssociationForeignKey:ID" json:"categories"` Comments []Comment `gorm:"ForeignKey:SourceID" json:"comments"` UserID uint `json:"userID"` User User `json:"user"` LastUserID uint `json:"lastUserID"` //最后一个回复话题的人 LastUser User `json:"lastUser"` LastCommentAt *time.Time `json:"lastCommentAt"` }
Article 文章, 也称话题
type Book ¶
type Book struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Name string `json:"name"` CoverURL string `json:"coverURL"` BrowseCount uint `json:"browseCount"` CommentCount uint `json:"commentCount"` CollectCount uint `json:"collectCount"` Status string `json:"status"` ReadLimits string `json:"readLimits"` Content string `json:"content"` HTMLContent string `json:"htmlContent"` ContentType int `json:"contentType"` Categories []BookCategory `gorm:"many2many:book_category;ForeignKey:ID;AssociationForeignKey:ID" json:"categories"` Comments []BookComment `json:"comments"` UserID uint `json:"userID"` User User `json:"user"` Star uint `json:"star"` // 图书最终得了几颗星 OneStarCount uint `json:"oneStarCount"` TwoStarCount uint `json:"twoStarCount"` ThreeStarCount uint `json:"threeStarCount"` FourStarCount uint `json:"fourStarCount"` FiveStarCount uint `json:"fiveStarCount"` TotalStarCount uint `json:"TotalStarCount"` }
Book 图书
type BookCategory ¶
type BookCategory struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Name string `json:"name"` Sequence int `json:"sequence"` //同级别的分类可根据sequence的值来排序 ParentID uint `json:"parentId"` //直接父分类的ID }
BookCategory 图书的分类
type BookChapter ¶
type BookChapter struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Name string `json:"name"` BrowseCount uint `json:"browseCount"` CommentCount uint `json:"commentCount"` Content string `json:"content"` HTMLContent string `json:"htmlContent"` ContentType int `json:"contentType"` Comments []BookComment `json:"comments"` UserID uint `json:"userID"` User User `json:"user"` ParentID uint `json:"parentID"` //直接父章节的ID BookID uint `json:"bookID"` }
BookChapter 图书的章节
type BookChapterComment ¶
type BookChapterComment struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Status string `json:"status"` Content string `json:"content"` HTMLContent string `json:"htmlContent"` ContentType int `json:"contentType"` ParentID uint `json:"parentID"` //直接父评论的ID Parents []BookChapterComment `json:"parents"` //所有的父评论 BookID uint `json:"bookID"` ChapterID uint `json:"chapterID"` UserID uint `json:"userID"` User User `json:"user"` }
BookChapterComment 章节的评论
type BookComment ¶
type BookComment struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Status string `json:"status"` Star uint `json:"Star"` Content string `json:"content"` HTMLContent string `json:"htmlContent"` ContentType int `json:"contentType"` ParentID uint `json:"parentID"` //直接父评论的ID Parents []BookComment `json:"parents"` //所有的父评论 BookID uint `json:"bookID"` UserID uint `json:"userID"` User User `json:"user"` }
BookComment 书评
type Career ¶
type Career struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Company string `json:"company"` //公司或组织 Title string `json:"title"` //职位 UserID uint `json:"userID"` }
Career 职业生涯
type Category ¶
type Category struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Name string `json:"name"` Sequence int `json:"sequence"` //同级别的分类可根据sequence的值来排序 ParentID int `json:"parentId"` //直接父分类的ID }
Category 话题的分类
type Collect ¶
type Collect struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` UserID uint `json:"userID"` SourceName string `json:"sourceName"` //用来区分是对话题,还是对投票进行评论 SourceID uint `json:"sourceID"` //话题或投票的ID FolderID uint `json:"folderID"` //收藏到哪个收藏夹 Folder Folder `json:"folder"` }
Collect 收藏
type Comment ¶
type Comment struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Status int `json:"status"` Content string `json:"content"` HTMLContent string `json:"htmlContent"` ContentType int `json:"contentType"` ParentID uint `json:"parentID"` //直接父评论的ID Parents []Comment `json:"parents"` //所有的父评论 SourceName string `json:"sourceName"` //用来区分是对话题,还是对投票进行评论 SourceID uint `json:"sourceID"` //话题或投票的ID UserID uint `json:"userID"` User User `json:"user"` }
Comment 评论, 也称回复
type CrawlerArticle ¶
type CrawlerArticle struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` URL string `json:"url"` Title string `json:"title"` Content string `json:"content"` From int `json:"from"` ArticleID uint `json:"articleID"` }
CrawlerArticle 爬虫抓取的文章
type Folder ¶
type Folder struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Name string `json:"name"` UserID uint `json:"userID"` ParentID uint `json:"parentID"` }
Folder 收藏夹
type Image ¶
type Image struct { ID uint `gorm:"primary_key" json:"id"` Title string `json:"title"` OrignalTitle string `json:"orignalTitle"` URL string `json:"url"` Width uint `json:"width"` Height uint `json:"height"` Mime string `json:"mime"` }
Image 图片
type ImageUploadedInfo ¶
type ImageUploadedInfo struct { UploadDir string UploadFilePath string Filename string UUIDName string ImgURL string }
ImageUploadedInfo 图片上传后的相关信息(目录、文件路径、文件名、UUIDName、请求URL)
func GenerateImgUploadedInfo ¶
func GenerateImgUploadedInfo(ext string) ImageUploadedInfo
GenerateImgUploadedInfo 创建一个ImageUploadedInfo
type KeyValueConfig ¶
type KeyValueConfig struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` KeyName string `json:"key"` Value string `json:"value"` }
KeyValueConfig key, value配置
type Message ¶
type Message struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Type string `json:"type"` Readed bool `json:"readed"` FromUserID uint `json:"fromUserID"` ToUserID uint `json:"toUserID"` FromUser User `json:"fromUser"` SourceID uint `json:"sourceID"` SourceName string `json:"sourceName"` CommentID uint `json:"commentID"` Data data `json:"data"` }
Message 消息
type School ¶
type School struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Name string `json:"name"` Speciality string `json:"speciality"` //专业 UserID uint `json:"userID"` }
School 学校(教育经历)
type TopArticle ¶
type TopArticle struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` ArticleID uint `json:"articleID"` }
TopArticle 置顶的文章
type Up ¶
type Up struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` TargetID uint `json:"targetID"` Type int `json:"type"` UserID uint `json:"userID"` User User `json:"user"` }
Up 点赞
type User ¶
type User struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` ActivatedAt *time.Time `json:"activatedAt"` Name string `json:"name"` Pass string `json:"-"` Email string `json:"-"` Sex uint `json:"sex"` Location string `json:"location"` Introduce string `json:"introduce"` Phone string `json:"-"` Score uint `json:"score"` ArticleCount uint `json:"articleCount"` CommentCount uint `json:"commentCount"` CollectCount uint `json:"collectCount"` Signature string `json:"signature"` //个人签名 Role int `json:"role"` //角色 AvatarURL string `json:"avatarURL"` //头像 CoverURL string `json:"coverURL"` //个人主页背景图片URL Status int `json:"status"` Schools []School `json:"schools"` //教育经历 Careers []Career `json:"careers"` //职业经历 }
User 用户
func (User) CheckPassword ¶
CheckPassword 验证密码是否正确
func (User) EncryptPassword ¶
EncryptPassword 给密码加密
type UserVisit ¶
type UserVisit struct { ID bson.ObjectId `bson:"_id"` Platform string `bson:"platform"` URL string `bson:"url"` Referrer string `bson:"referrer"` ClientID string `bson:"clientID"` UserID uint `bson:"userID"` Date time.Time `bson:"date"` IP string `bson:"ip"` DeviceWidth int `bson:"deviceWidth"` DeviceHeight int `bson:"deviceHeight"` BrowserName string `bson:"browserName"` BrowserVersion string `bson:"browserVersion"` DeviceModel string `bson:"deviceModel"` Country string `bson:"country"` Language string `bson:"language"` OSName string `bson:"osName"` OSVersion string `bson:"osVersion"` }
UserVisit 访客记录
type UserVote ¶
type UserVote struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` UserID uint `json:"userID"` User User `json:"user"` VoteID uint `json:"voteID"` Vote Vote `json:"vote"` VoteItemID uint `json:"voteItemID"` }
UserVote 用户对哪个投票项进行了投票
type Vote ¶
type Vote struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` EndAt time.Time `json:"endAt"` Name string `json:"name"` BrowseCount int `json:"browseCount"` CommentCount int `json:"commentCount"` CollectCount int `json:"collectCount"` Status int `json:"status"` Content string `json:"content"` HTMLContent string `json:"htmlContent"` ContentType int `json:"contentType"` Comments []Comment `gorm:"ForeignKey:SourceID" json:"comments"` UserID uint `json:"userID"` User User `json:"user"` LastUserID uint `json:"lastUserID"` //最后一个回复投票、参与投票的人 LastUser User `json:"lastUser"` LastCommentAt *time.Time `json:"lastCommentAt"` VoteItems []VoteItem `json:"voteItems"` }
Vote 投票
type VoteItem ¶
type VoteItem struct { ID uint `gorm:"primary_key" json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *time.Time `sql:"index" json:"deletedAt"` Name string `json:"name"` Count uint `json:"count"` VoteID uint `json:"voteID"` }
VoteItem 投票项, 一个投票有多个投票项,用户选择投票项进行投票
type YesterdayStats ¶
type YesterdayStats struct { ID bson.ObjectId `bson:"_id"` Date string `bson:"date"` SignupUserCount uint `bson:"signupUserCount"` TopicCount uint `bson:"topicCount"` CommentCount uint `bson:"commentCount"` BookCount uint `bson:"bookCount"` PV uint `bson:"pv"` UV uint `bson:"uv"` }
YesterdayStats 昨日统计