LabelModel.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package models
  2. import (
  3. "github.com/astaxie/beego/orm"
  4. "github.com/lifei6671/mindoc/conf"
  5. "strings"
  6. )
  7. type Label struct {
  8. LabelId int `orm:"column(label_id);pk;auto;unique;" json:"label_id"`
  9. LabelName string `orm:"column(label_name);size(50);unique" json:"label_name"`
  10. BookNumber int `orm:"column(book_number)" json:"book_number"`
  11. }
  12. // TableName 获取对应数据库表名.
  13. func (m *Label) TableName() string {
  14. return "label"
  15. }
  16. // TableEngine 获取数据使用的引擎.
  17. func (m *Label) TableEngine() string {
  18. return "INNODB"
  19. }
  20. func (m *Label) TableNameWithPrefix() string {
  21. return conf.GetDatabasePrefix() + m.TableName()
  22. }
  23. func NewLabel() *Label {
  24. return &Label{}
  25. }
  26. func (m *Label) FindFirst(field string, value interface{}) (*Label, error) {
  27. o := orm.NewOrm()
  28. err := o.QueryTable(m.TableNameWithPrefix()).Filter(field, value).One(m)
  29. return m, err
  30. }
  31. //插入或更新标签.
  32. func (m *Label) InsertOrUpdate(labelName string) error {
  33. o := orm.NewOrm()
  34. err := o.QueryTable(m.TableNameWithPrefix()).Filter("label_name", labelName).One(m)
  35. if err != nil && err != orm.ErrNoRows {
  36. return err
  37. }
  38. count, _ := o.QueryTable(NewBook().TableNameWithPrefix()).Filter("label__icontains", labelName).Count()
  39. m.BookNumber = int(count)
  40. m.LabelName = labelName
  41. if err == orm.ErrNoRows {
  42. err = nil
  43. m.LabelName = labelName
  44. _, err = o.Insert(m)
  45. } else {
  46. _, err = o.Update(m)
  47. }
  48. return err
  49. }
  50. //批量插入或更新标签.
  51. func (m *Label) InsertOrUpdateMulti(labels string) {
  52. if labels != "" {
  53. labelArray := strings.Split(labels, ",")
  54. for _, label := range labelArray {
  55. if label != "" {
  56. NewLabel().InsertOrUpdate(label)
  57. }
  58. }
  59. }
  60. }
  61. //删除标签
  62. func (m *Label) Delete() error {
  63. o := orm.NewOrm()
  64. _,err := o.Raw("DELETE FROM " + m.TableNameWithPrefix() + " WHERE label_id= ?",m.LabelId).Exec()
  65. if err != nil {
  66. return err
  67. }
  68. return nil
  69. }
  70. //分页查找标签.
  71. func (m *Label) FindToPager(pageIndex, pageSize int) (labels []*Label, totalCount int, err error) {
  72. o := orm.NewOrm()
  73. count, err := o.QueryTable(m.TableNameWithPrefix()).Count()
  74. if err != nil {
  75. return
  76. }
  77. totalCount = int(count)
  78. offset := (pageIndex - 1) * pageSize
  79. _, err = o.QueryTable(m.TableNameWithPrefix()).OrderBy("-book_number").Offset(offset).Limit(pageSize).All(&labels)
  80. return
  81. }