scene_his.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package model
  2. import (
  3. "fmt"
  4. "sparrow/pkg/models"
  5. "github.com/jinzhu/gorm"
  6. )
  7. // SceneHis model
  8. type SceneHis struct {
  9. db *gorm.DB
  10. }
  11. // Init init SceneHis
  12. func (a *SceneHis) Init(db *gorm.DB) *SceneHis {
  13. a.db = db
  14. return a
  15. }
  16. // Query 分页查询场景执行历史
  17. // sceneId: 按场景ID筛选
  18. func (a *SceneHis) Query(pi, ps int, sceneId string) (datas []models.SceneHis, total int, err error) {
  19. tx := a.db.Where("1=1")
  20. if sceneId != "" {
  21. tx = tx.Where("scene_id = ?", sceneId)
  22. }
  23. tx = tx.Order("id desc")
  24. err = tx.Limit(ps).Offset((pi - 1) * ps).Find(&datas).Error
  25. err = tx.Model(&models.SceneHis{}).Count(&total).Error
  26. return
  27. }
  28. // GetBySceneId 根据场景ID获取历史记录列表
  29. func (a *SceneHis) GetBySceneId(sceneId string) (datas []models.SceneHis, err error) {
  30. err = a.db.Where("scene_id = ?", sceneId).Order("id desc").Find(&datas).Error
  31. return
  32. }
  33. // Get 获取单条数据内容
  34. func (a *SceneHis) Get(recordId string) (data models.SceneHis, err error) {
  35. cache := getCache()
  36. key := fmt.Sprintf("SceneHisId:%s", recordId)
  37. if v, ok := cache.Get(key); ok {
  38. _d := v.(*models.SceneHis)
  39. data = *_d
  40. } else {
  41. err = a.db.Where("record_id = ?", recordId).First(&data).Error
  42. if err == nil {
  43. cache.Set(key, &data)
  44. }
  45. }
  46. return
  47. }
  48. // Create 创建场景执行历史记录
  49. func (a *SceneHis) Create(sceneHis *models.SceneHis) error {
  50. return a.db.Save(sceneHis).Error
  51. }
  52. // Delete delete
  53. func (a *SceneHis) Delete(sceneHis *models.SceneHis) error {
  54. cache := getCache()
  55. key := fmt.Sprintf("SceneHis:%d", sceneHis.ID)
  56. if _, ok := cache.Get(key); ok {
  57. cache.Delete(key)
  58. }
  59. return a.db.Delete(sceneHis).Error
  60. }
  61. // Update update
  62. func (a *SceneHis) Update(sceneHis *models.SceneHis) (data models.SceneHis, err error) {
  63. cache := getCache()
  64. key := fmt.Sprintf("SceneHis:%d", sceneHis.ID)
  65. if _, ok := cache.Get(key); ok {
  66. cache.Delete(key)
  67. }
  68. err = a.db.Model(&data).Update(sceneHis).Error
  69. return
  70. }