123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package model
- import (
- "fmt"
- "sparrow/pkg/models"
- "github.com/jinzhu/gorm"
- )
- // Protocal ``
- type Protocal struct {
- db *gorm.DB
- }
- // Init 初始化
- func (a *Protocal) Init(db *gorm.DB) *Protocal {
- a.db = db
- return a
- }
- // Create 创建
- func (a *Protocal) Create(ptl *models.Protocal) error {
- cache := getCache()
- key := fmt.Sprintf("Protocal:%d", ptl.ID)
- err := a.db.Create(ptl).Error
- if err != nil {
- return err
- }
- cache.Set(key, ptl)
- return nil
- }
- // Delete 删除
- func (a *Protocal) Delete(ptl *models.Protocal) error {
- cache := getCache()
- key := fmt.Sprintf("Protocal:%d", ptl.ID)
- if _, ok := cache.Get(key); ok {
- cache.Delete(key)
- }
- return a.db.Delete(ptl).Error
- }
- // Update 更新
- func (a *Protocal) Update(ptl *models.Protocal) (data models.Protocal, err error) {
- cache := getCache()
- key := fmt.Sprintf("Protocal:%d", ptl.ID)
- if _, ok := cache.Get(key); ok {
- cache.Delete(key)
- }
- err = a.db.Model(&data).Update(ptl).Error
- return
- }
- // GetProductProtocals 获取产品的数据点列表
- func (a *Protocal) GetProductProtocals(productid uint, pi, ps int, name, label string) (datas []models.Protocal, total int, err error) {
- tx := a.db.Where("product_id = ? and 1 = 1", productid)
- if name != "" {
- tx = tx.Where("name like ? ", "%"+name+"%")
- }
- if label != "" {
- tx = tx.Where("label = ?", label)
- }
- err = tx.Limit(ps).Offset((pi - 1) * ps).Find(&datas).Error
- tx.Model(&models.Protocal{}).Count(&total)
- return
- }
- // GetProtocalInfo 获取数据点内容
- func (a *Protocal) GetProtocalInfo(pid uint) (data models.Protocal, err error) {
- cache := getCache()
- key := fmt.Sprintf("Protocal:%d", pid)
- if v, ok := cache.Get(key); ok {
- data = *(v.(*models.Protocal))
- } else {
- err = a.db.Where("id = ?", pid).First(&data).Error
- if err == nil {
- cache.Set(key, &data)
- }
- }
- return
- }
- // TODO 查询某个产品所有上报类型的数据点
|