device.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package service
  2. import (
  3. "errors"
  4. "gas-cylinder-api/app/admin/model"
  5. "gas-cylinder-api/app/admin/service/dto"
  6. "gas-cylinder-api/common/actions"
  7. cDto "gas-cylinder-api/common/dto"
  8. "gas-cylinder-api/common/global"
  9. "gogs.baozhida.cn/zoie/OAuth-core/service"
  10. "gorm.io/gorm"
  11. )
  12. type Device struct {
  13. service.Service
  14. }
  15. // GetPage 获取Device列表
  16. func (e *Device) GetPage(c *dto.DeviceGetPageReq, list *[]model.Device, count *int64, p *actions.DataPermission) error {
  17. var err error
  18. var data model.Device
  19. err = e.Orm.Model(&data).
  20. Scopes(
  21. cDto.MakeCondition(c.GetNeedSearch()),
  22. cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
  23. actions.Permission(data.TableName(), p),
  24. ).
  25. Preload("User").
  26. Find(list).Limit(-1).Offset(-1).
  27. Count(count).Error
  28. if err != nil {
  29. e.Log.Errorf("db error: %s", err)
  30. return global.GetFailedErr
  31. }
  32. return nil
  33. }
  34. // Get 获取Device对象
  35. func (e *Device) Get(d *dto.DeviceGetReq, deviceModel *model.Device, p *actions.DataPermission) error {
  36. err := e.Orm.
  37. Scopes(actions.Permission(deviceModel.TableName(), p)).
  38. First(deviceModel, d.GetId()).Error
  39. if err != nil {
  40. e.Log.Errorf("db error: %s", err)
  41. if errors.Is(err, gorm.ErrRecordNotFound) {
  42. return global.GetNotFoundOrNoPermissionErr
  43. }
  44. return global.GetFailedErr
  45. }
  46. return nil
  47. }
  48. // Insert 创建Device对象
  49. func (e *Device) Insert(c *dto.DeviceInsertReq) error {
  50. var err error
  51. var data model.Device
  52. tx := e.Orm.Begin()
  53. defer func() {
  54. if err != nil {
  55. tx.Rollback()
  56. } else {
  57. tx.Commit()
  58. }
  59. }()
  60. // 添加设备
  61. c.Generate(&data)
  62. err = tx.Create(&data).Error
  63. if err != nil {
  64. e.Log.Errorf("db error: %s", err)
  65. return global.CreateFailedErr
  66. }
  67. c.Id = data.Id
  68. return nil
  69. }
  70. // Update 修改Device对象
  71. func (e *Device) Update(c *dto.DeviceUpdateReq, p *actions.DataPermission) error {
  72. var err error
  73. tx := e.Orm.Begin()
  74. defer func() {
  75. if err != nil {
  76. tx.Rollback()
  77. } else {
  78. tx.Commit()
  79. }
  80. }()
  81. var deviceModel = model.Device{}
  82. // 查询设备是否存在
  83. err = e.Orm.Scopes(actions.Permission(deviceModel.TableName(), p)).
  84. First(&deviceModel, c.GetId()).Error
  85. if err != nil {
  86. e.Log.Errorf("db error: %s", err)
  87. if errors.Is(err, gorm.ErrRecordNotFound) {
  88. return global.UpdateNotFoundOrNoPermissionErr
  89. }
  90. return global.UpdateFailedErr
  91. }
  92. c.Generate(&deviceModel)
  93. err = tx.Save(&deviceModel).Error
  94. if err != nil {
  95. e.Log.Errorf("db error: %s", err)
  96. return global.UpdateFailedErr
  97. }
  98. c.Id = deviceModel.Id
  99. return nil
  100. }
  101. // Remove 删除Device
  102. func (e *Device) Remove(c *dto.DeviceDeleteReq, p *actions.DataPermission) error {
  103. var err error
  104. tx := e.Orm.Begin()
  105. defer func() {
  106. if err != nil {
  107. tx.Rollback()
  108. } else {
  109. tx.Commit()
  110. }
  111. }()
  112. var deviceModel model.Device
  113. // 查询设备是否存在
  114. err = e.Orm.Scopes(actions.Permission(deviceModel.TableName(), p)).
  115. First(&deviceModel, c.GetId()).Error
  116. if err != nil {
  117. e.Log.Errorf("db error: %s", err)
  118. if errors.Is(err, gorm.ErrRecordNotFound) {
  119. return global.DeleteNotFoundOrNoPermissionErr
  120. }
  121. return global.DeleteFailedErr
  122. }
  123. db := tx.Delete(&deviceModel)
  124. if err = db.Error; err != nil {
  125. e.Log.Errorf("db error: %s", err)
  126. return global.DeleteFailedErr
  127. }
  128. if db.RowsAffected == 0 {
  129. return global.DeleteNotFoundOrNoPermissionErr
  130. }
  131. return nil
  132. }