123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package model
- import (
- "fmt"
- "sparrow/pkg/models"
- "github.com/jinzhu/gorm"
- )
- // Application 应用
- type Application struct {
- db *gorm.DB
- }
- // Init 初始化
- func (a *Application) Init(db *gorm.DB) *Application {
- a.db = db
- return a
- }
- // Create 创建
- func (a *Application) Create(app *models.Application) error {
- cache := getCache()
- key := fmt.Sprintf("Application:%s", app.AppKey)
- cache.Set(key, app)
- return a.db.Create(app).Error
- }
- //Delete 删除
- func (a *Application) Delete(app *models.Application) error {
- cache := getCache()
- key := fmt.Sprintf("Application:%s", app.AppKey)
- if _, ok := cache.Get(key); ok {
- cache.Delete(key)
- }
- return a.db.Delete(app).Error
- }
- // GetAppCount 查询一个厂商的Application数量
- func (a *Application) GetAppCount(vendorid uint) (int, error) {
- var count int
- err := a.db.Model(&models.Application{}).Where("vendor_id = ?", vendorid).Count(&count).Error
- if err != nil {
- return 0, err
- }
- return count, nil
- }
- // GetVendorApps 获取厂商的app列表
- func (a *Application) GetVendorApps(vendorid uint, pi, ps int, name string) (datas []models.Application, count int, err error) {
- tx := a.db.Where("vendor_id = ? and 1=1", vendorid)
- if name != "" {
- tx = tx.Where("app_name = ?", name)
- }
- err = tx.Limit(ps).Offset((pi - 1) * ps).Find(&datas).Error
- tx.Model(&models.Application{}).Count(&count)
- return
- }
- // GetAppInfo 查询app信息
- func (a *Application) GetAppInfo(vendorid uint, appkey string) (data models.Application, err error) {
- cache := getCache()
- key := fmt.Sprintf("Application:%s", appkey)
- if v, ok := cache.Get(key); ok {
- _d := v.(*models.Application)
- data = *_d
- } else {
- err = a.db.Where("vendor_id = ? and app_key = ?", vendorid, appkey).First(&data).Error
- if err == nil {
- cache.Set(key, &data)
- }
- }
- return
- }
- // Update 更新
- func (a *Application) Update(app *models.Application) (data models.Application, err error) {
- cache := getCache()
- key := fmt.Sprintf("Application:%s", app.AppKey)
- if _, ok := cache.Get(key); ok {
- cache.Delete(key)
- }
- cache.Set(key, app)
- err = a.db.Model(&data).Update(app).Error
- return
- }
|