DocumentViewCount.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package models
  2. import (
  3. "github.com/astaxie/beego/orm"
  4. "github.com/mindoc-org/mindoc/conf"
  5. )
  6. type DocumentViewCount struct {
  7. DocumentId int `orm:"pk;column(document_id);type(int)" json:"doc_id"`
  8. ViewCount int `orm:"column(view_count);type(int)" json:"view_count"`
  9. }
  10. // TableName 获取对应数据库表名.
  11. func (v *DocumentViewCount) TableName() string {
  12. return "document_viewcount"
  13. }
  14. // TableEngine 获取数据使用的引擎.
  15. func (v *DocumentViewCount) TableEngine() string {
  16. return "INNODB"
  17. }
  18. func (v *DocumentViewCount) TableNameWithPrefix() string {
  19. return conf.GetDatabasePrefix() + v.TableName()
  20. }
  21. func NewDocumentViewCount() *DocumentViewCount {
  22. return &DocumentViewCount{}
  23. }
  24. func (v *DocumentViewCount) IncrViewCount(id int) int {
  25. o := orm.NewOrm()
  26. num, _ := o.QueryTable(v.TableNameWithPrefix()).Filter("document_id", id).Update(orm.Params{
  27. "view_count": orm.ColValue(orm.ColAdd, 1),
  28. })
  29. if 0 == num {
  30. v.DocumentId = id
  31. v.ViewCount = 1
  32. num, _ = o.Insert(v)
  33. } else {
  34. o.QueryTable(v.TableNameWithPrefix()).Filter("document_id", id).One(v)
  35. }
  36. return v.ViewCount
  37. }