123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package models
- import (
- "github.com/astaxie/beego/orm"
- "github.com/lifei6671/mindoc/conf"
- "strings"
- )
- type Label struct {
- LabelId int `orm:"column(label_id);pk;auto;unique;" json:"label_id"`
- LabelName string `orm:"column(label_name);size(50);unique" json:"label_name"`
- BookNumber int `orm:"column(book_number)" json:"book_number"`
- }
- // TableName 获取对应数据库表名.
- func (m *Label) TableName() string {
- return "label"
- }
- // TableEngine 获取数据使用的引擎.
- func (m *Label) TableEngine() string {
- return "INNODB"
- }
- func (m *Label) TableNameWithPrefix() string {
- return conf.GetDatabasePrefix() + m.TableName()
- }
- func NewLabel() *Label {
- return &Label{}
- }
- func (m *Label) FindFirst(field string, value interface{}) (*Label, error) {
- o := orm.NewOrm()
- err := o.QueryTable(m.TableNameWithPrefix()).Filter(field, value).One(m)
- return m, err
- }
- //插入或更新标签.
- func (m *Label) InsertOrUpdate(labelName string) error {
- o := orm.NewOrm()
- err := o.QueryTable(m.TableNameWithPrefix()).Filter("label_name", labelName).One(m)
- if err != nil && err != orm.ErrNoRows {
- return err
- }
- count, _ := o.QueryTable(NewBook().TableNameWithPrefix()).Filter("label__icontains", labelName).Count()
- m.BookNumber = int(count)
- m.LabelName = labelName
- if err == orm.ErrNoRows {
- err = nil
- m.LabelName = labelName
- _, err = o.Insert(m)
- } else {
- _, err = o.Update(m)
- }
- return err
- }
- //批量插入或更新标签.
- func (m *Label) InsertOrUpdateMulti(labels string) {
- if labels != "" {
- labelArray := strings.Split(labels, ",")
- for _, label := range labelArray {
- if label != "" {
- NewLabel().InsertOrUpdate(label)
- }
- }
- }
- }
- //删除标签
- func (m *Label) Delete() error {
- o := orm.NewOrm()
- _,err := o.Raw("DELETE FROM " + m.TableNameWithPrefix() + " WHERE label_id= ?",m.LabelId).Exec()
- if err != nil {
- return err
- }
- return nil
- }
- //分页查找标签.
- func (m *Label) FindToPager(pageIndex, pageSize int) (labels []*Label, totalCount int, err error) {
- o := orm.NewOrm()
- count, err := o.QueryTable(m.TableNameWithPrefix()).Count()
- if err != nil {
- return
- }
- totalCount = int(count)
- offset := (pageIndex - 1) * pageSize
- _, err = o.QueryTable(m.TableNameWithPrefix()).OrderBy("-book_number").Offset(offset).Limit(pageSize).All(&labels)
- return
- }
|