ice_locker.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. package service
  2. import (
  3. "cold-delivery/app/admin/model"
  4. "cold-delivery/app/admin/service/dto"
  5. "cold-delivery/common/actions"
  6. cDto "cold-delivery/common/dto"
  7. "cold-delivery/common/global"
  8. "errors"
  9. "gogs.baozhida.cn/zoie/OAuth-core/service"
  10. "gorm.io/gorm"
  11. )
  12. type IceLocker struct {
  13. service.Service
  14. }
  15. // GetPage 获取IceLocker列表
  16. func (e *IceLocker) GetPage(c *dto.IceLockerGetPageReq, list *[]model.IceLocker, count *int64, p *actions.DataPermission) error {
  17. var err error
  18. var data model.IceLocker
  19. if c.PageSize == 9999 {
  20. err = e.Orm.Model(&data).
  21. Scopes(
  22. actions.Permission(data.TableName(), p),
  23. ).
  24. Find(list).Limit(-1).Offset(-1).
  25. Count(count).Error
  26. } else {
  27. err = e.Orm.Model(&data).
  28. Scopes(
  29. cDto.MakeCondition(c.GetNeedSearch()),
  30. cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
  31. actions.Permission(data.TableName(), p),
  32. ).
  33. Find(list).Limit(-1).Offset(-1).
  34. Count(count).Error
  35. }
  36. if err != nil {
  37. e.Log.Errorf("db error: %s", err)
  38. return global.GetFailedErr
  39. }
  40. return nil
  41. }
  42. // Get 获取IceLocker对象
  43. func (e *IceLocker) Get(d *dto.IceLockerGetReq, iceLockerModel *model.IceLocker, p *actions.DataPermission) error {
  44. err := e.Orm.
  45. Scopes(actions.Permission(iceLockerModel.TableName(), p)).
  46. First(iceLockerModel, d.GetId()).Error
  47. if err != nil {
  48. e.Log.Errorf("db error: %s", err)
  49. if errors.Is(err, gorm.ErrRecordNotFound) {
  50. return global.GetNotFoundOrNoPermissionErr
  51. }
  52. return global.GetFailedErr
  53. }
  54. return nil
  55. }
  56. // Insert 创建IceLocker对象
  57. func (e *IceLocker) Insert(c *dto.IceLockerInsertReq) error {
  58. var err error
  59. var data model.IceLocker
  60. tx := e.Orm.Begin()
  61. defer func() {
  62. if err != nil {
  63. tx.Rollback()
  64. } else {
  65. tx.Commit()
  66. }
  67. }()
  68. var k int64
  69. err = tx.Model(&data).Where("name = ? and dept_id = ?", c.Name,c.DeptId).Count(&k).Error
  70. if err != nil {
  71. e.Log.Errorf("db error: %s", err)
  72. return global.CreateFailedErr
  73. }
  74. if k > 0 {
  75. err = errors.New("冰柜名称已存在!")
  76. e.Log.Errorf("db error: %s", err)
  77. return err
  78. }
  79. // 添加冰柜
  80. c.Generate(&data)
  81. err = tx.Create(&data).Error
  82. if err != nil {
  83. e.Log.Errorf("db error: %s", err)
  84. return global.CreateFailedErr
  85. }
  86. c.Id = data.Id
  87. return nil
  88. }
  89. // Update 修改IceLocker对象
  90. func (e *IceLocker) Update(c *dto.IceLockerUpdateReq, p *actions.DataPermission) error {
  91. var err error
  92. tx := e.Orm.Begin()
  93. defer func() {
  94. if err != nil {
  95. tx.Rollback()
  96. } else {
  97. tx.Commit()
  98. }
  99. }()
  100. var iceLockerModel = model.IceLocker{}
  101. // 查询冰柜是否存在
  102. err = e.Orm.Scopes(actions.Permission(iceLockerModel.TableName(), p)).
  103. First(&iceLockerModel, c.GetId()).Error
  104. if err != nil {
  105. e.Log.Errorf("db error: %s", err)
  106. if errors.Is(err, gorm.ErrRecordNotFound) {
  107. return global.UpdateNotFoundOrNoPermissionErr
  108. }
  109. return global.UpdateFailedErr
  110. }
  111. if iceLockerModel.Name != c.Name {
  112. var k int64
  113. var data = model.IceLocker{}
  114. err = tx.Model(&data).Where("name = ? and dept_id = ?", c.Name,iceLockerModel.DeptId).Count(&k).Error
  115. if err != nil {
  116. e.Log.Errorf("db error: %s", err)
  117. return global.CreateFailedErr
  118. }
  119. if k > 0 {
  120. err = errors.New("冰柜名称已存在!")
  121. e.Log.Errorf("db error: %s", err)
  122. return err
  123. }
  124. }
  125. c.Generate(&iceLockerModel)
  126. err = tx.Save(&iceLockerModel).Error
  127. if err != nil {
  128. e.Log.Errorf("db error: %s", err)
  129. return global.UpdateFailedErr
  130. }
  131. c.Id = iceLockerModel.Id
  132. return nil
  133. }
  134. // Remove 删除IceLocker
  135. func (e *IceLocker) Remove(c *dto.IceLockerDeleteReq, p *actions.DataPermission) error {
  136. var err error
  137. tx := e.Orm.Begin()
  138. defer func() {
  139. if err != nil {
  140. tx.Rollback()
  141. } else {
  142. tx.Commit()
  143. }
  144. }()
  145. var iceLockerModel model.IceLocker
  146. // 查询冰柜是否存在
  147. err = e.Orm.Scopes(actions.Permission(iceLockerModel.TableName(), p)).
  148. First(&iceLockerModel, c.GetId()).Error
  149. if err != nil {
  150. e.Log.Errorf("db error: %s", err)
  151. if errors.Is(err, gorm.ErrRecordNotFound) {
  152. return global.DeleteNotFoundOrNoPermissionErr
  153. }
  154. return global.DeleteFailedErr
  155. }
  156. db := tx.Delete(&iceLockerModel)
  157. if err = db.Error; err != nil {
  158. e.Log.Errorf("db error: %s", err)
  159. return global.DeleteFailedErr
  160. }
  161. if db.RowsAffected == 0 {
  162. return global.DeleteNotFoundOrNoPermissionErr
  163. }
  164. return nil
  165. }