wangpengfei
2023-08-07 9c2489c0c360c8dda36d3cbe1dba79222096b2dd
model/faq.go
New file
@@ -0,0 +1,135 @@
package model
import (
   "aps_crm/constvar"
   "aps_crm/pkg/mysqlx"
   "errors"
   "fmt"
   "gorm.io/gorm"
)
type (
   // Faq 常见问题
   Faq struct {
      Id   int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
      Name   string    `json:"name" gorm:"column:name"`
   }
   // FaqSearch 常见问题搜索条件
   FaqSearch struct {
      Faq
      Orm *gorm.DB
        QueryClass  constvar.FaqQueryClass
        KeywordType constvar.FaqKeywordType
        Keyword     string
        PageNum  int
        PageSize int
   }
)
func (Faq) TableName() string {
   return "faq"
}
func NewFaqSearch() *FaqSearch {
   return &FaqSearch{
      Orm: mysqlx.GetDB(),
   }
}
func (slf *FaqSearch) build() *gorm.DB {
   var db = slf.Orm.Model(&Faq{})
   if slf.Id != 0 {
      db = db.Where("id = ?", slf.Id)
   }
   return db
}
func (slf *FaqSearch) Create(record *Faq) error {
   var db = slf.build()
   return db.Create(record).Error
}
func (slf *FaqSearch) CreateBatch(records []*Faq) error {
   var db = slf.build()
   return db.Create(records).Error
}
func (slf *FaqSearch) Delete() error {
   var db = slf.build()
   return db.Delete(&Faq{}).Error
}
func (slf *FaqSearch) Update(record *Faq) error {
   var db = slf.build()
   return db.Updates(record).Error
}
func (slf *FaqSearch) FindAll() ([]*Faq, error) {
   var db = slf.build()
   var record = make([]*Faq, 0)
   err := db.Find(&record).Error
   return record, err
}
func (slf *FaqSearch) SetId(id int) *FaqSearch {
   slf.Id = id
   return slf
}
func (slf *FaqSearch) First() (*Faq, error) {
   var db = slf.build()
   var record = new(Faq)
   err := db.First(record).Error
   return record, err
}
func (slf *FaqSearch) Updates(values interface{}) error {
   var db = slf.build()
   return db.Updates(values).Error
}
func (slf *FaqSearch) Save(record *Faq) error {
   if record.Id == 0 {
      return errors.New("id为空")
   }
   var db = slf.build()
   if err := db.Save(record).Error; err != nil {
      return fmt.Errorf("save err: %v, record: %+v", err, record)
   }
   return nil
}
func (slf *FaqSearch) Find() ([]*Faq, int64, error) {
   var db = slf.build()
   var records = make([]*Faq, 0)
   var total int64
   if err := db.Count(&total).Error; err != nil {
      return records, total, err
   }
   if slf.PageNum > 0 && slf.PageSize > 0 {
      db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
   }
   err := db.Find(&records).Error
   return records, total, err
}
// InitDefaultData 初始化数据
func (slf *FaqSearch) InitDefaultData() error {
   var (
      db          = slf.Orm.Table(slf.TableName())
      total int64 = 0
   )
   if err := db.Count(&total).Error; err != nil {
      return err
   }
   if total != 0 {
      return nil
   }
   records := []*Faq{}
   return slf.CreateBatch(records)
}