diff --git a/commands/command.go b/commands/command.go index a420d85d..34a35ca2 100644 --- a/commands/command.go +++ b/commands/command.go @@ -109,7 +109,6 @@ func RegisterModel() { new(models.TeamMember), new(models.TeamRelationship), new(models.Itemsets), - new(models.DocumentViewCount), ) gob.Register(models.Blog{}) gob.Register(models.Document{}) diff --git a/controllers/DocumentController.go b/controllers/DocumentController.go index 126972bf..6ba30842 100644 --- a/controllers/DocumentController.go +++ b/controllers/DocumentController.go @@ -143,8 +143,8 @@ func (c *DocumentController) Read() { doc.AttachList = attach } - view_count := models.NewDocumentViewCount().IncrViewCount(doc.DocumentId) - c.Data["ViewCount"] = view_count + doc.IncrViewCount(doc.DocumentId) + c.Data["ViewCount"] = doc.ViewCount + 1 if c.IsAjax() { var data struct { @@ -158,7 +158,7 @@ func (c *DocumentController) Read() { data.Body = doc.Release data.Title = doc.DocumentName + " - Powered by MinDoc" data.Version = doc.Version - data.ViewCount = view_count + data.ViewCount = doc.ViewCount + 1 c.JsonResult(0, "ok", data) } diff --git a/models/DocumentModel.go b/models/DocumentModel.go index 5e5e4474..0984d340 100644 --- a/models/DocumentModel.go +++ b/models/DocumentModel.go @@ -41,6 +41,7 @@ type Document struct { Version int64 `orm:"column(version);type(bigint);" json:"version"` //是否展开子目录:0 否/1 是 /2 空间节点,单击时展开下一级 IsOpen int `orm:"column(is_open);type(int);default(0)" json:"is_open"` + ViewCount int `orm:"column(view_count);type(int)" json:"view_count"` AttachList []*Attachment `orm:"-" json:"attach"` } @@ -384,3 +385,11 @@ func (item *Document) Processor() *Document { } return item } + +// 增加阅读次数 +func (item *Document) IncrViewCount(id int) { + o := orm.NewOrm() + o.QueryTable(item.TableNameWithPrefix()).Filter("document_id", id).Update(orm.Params{ + "view_count": orm.ColValue(orm.ColAdd, 1), + }) +} diff --git a/models/DocumentViewCount.go b/models/DocumentViewCount.go deleted file mode 100644 index 5e926e41..00000000 --- a/models/DocumentViewCount.go +++ /dev/null @@ -1,44 +0,0 @@ -package models - -import ( - "github.com/astaxie/beego/orm" - "github.com/mindoc-org/mindoc/conf" -) - -type DocumentViewCount struct { - DocumentId int `orm:"pk;column(document_id);type(int)" json:"doc_id"` - ViewCount int `orm:"column(view_count);type(int)" json:"view_count"` -} - -// TableName 获取对应数据库表名. -func (v *DocumentViewCount) TableName() string { - return "document_viewcount" -} - -// TableEngine 获取数据使用的引擎. -func (v *DocumentViewCount) TableEngine() string { - return "INNODB" -} - -func (v *DocumentViewCount) TableNameWithPrefix() string { - return conf.GetDatabasePrefix() + v.TableName() -} - -func NewDocumentViewCount() *DocumentViewCount { - return &DocumentViewCount{} -} - -func (v *DocumentViewCount) IncrViewCount(id int) int { - o := orm.NewOrm() - num, _ := o.QueryTable(v.TableNameWithPrefix()).Filter("document_id", id).Update(orm.Params{ - "view_count": orm.ColValue(orm.ColAdd, 1), - }) - if 0 == num { - v.DocumentId = id - v.ViewCount = 1 - num, _ = o.Insert(v) - } else { - o.QueryTable(v.TableNameWithPrefix()).Filter("document_id", id).One(v) - } - return v.ViewCount -}