cooler_box.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. package service
  2. import (
  3. "cold-logistics/app/admin/model"
  4. "cold-logistics/app/admin/service/dto"
  5. "cold-logistics/common/actions"
  6. cDto "cold-logistics/common/dto"
  7. "cold-logistics/common/global"
  8. "errors"
  9. "gogs.baozhida.cn/zoie/OAuth-core/service"
  10. "gorm.io/gorm"
  11. )
  12. type CoolerBox struct {
  13. service.Service
  14. }
  15. // GetPage 获取CoolerBox列表
  16. func (e *CoolerBox) GetPage(c *dto.CoolerBoxGetPageReq, list *[]model.CoolerBox, count *int64, p *actions.DataPermission) error {
  17. var err error
  18. var data model.CoolerBox
  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 获取CoolerBox对象
  43. func (e *CoolerBox) Get(d *dto.CoolerBoxGetReq, CoolerBoxModel *model.CoolerBox, p *actions.DataPermission) error {
  44. err := e.Orm.
  45. Scopes(actions.Permission(CoolerBoxModel.TableName(), p)).
  46. First(CoolerBoxModel, 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 创建CoolerBox对象
  57. func (e *CoolerBox) Insert(c *dto.CoolerBoxInsertReq) error {
  58. var err error
  59. var data model.CoolerBox
  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("sn = ?", c.Sn).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("该Sn已绑定!")
  76. e.Log.Errorf("db error: %s", err)
  77. return err
  78. }
  79. // 添加保温箱
  80. c.Generate(&data)
  81. data.HistorySn = []string{data.Sn}
  82. err = tx.Create(&data).Error
  83. if err != nil {
  84. e.Log.Errorf("db error: %s", err)
  85. return global.CreateFailedErr
  86. }
  87. c.Id = data.Id
  88. return nil
  89. }
  90. func (e *CoolerBox) BatchInsert(c *dto.CoolerBoxBatchInsertReq) 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. for _, coolerBox := range c.List {
  101. var data model.CoolerBox
  102. var k int64
  103. err = tx.Model(&data).Where("sn = ?", coolerBox.Sn).Count(&k).Error
  104. if err != nil {
  105. e.Log.Errorf("db error: %s", err)
  106. return global.CreateFailedErr
  107. }
  108. if k > 0 {
  109. continue
  110. }
  111. // 添加保温箱
  112. coolerBox.CreateBy = c.CreateBy
  113. coolerBox.DeptId = c.DeptId
  114. coolerBox.Status = c.Status
  115. coolerBox.Generate(&data)
  116. data.HistorySn = []string{data.Sn}
  117. err = tx.Create(&data).Error
  118. if err != nil {
  119. e.Log.Errorf("db error: %s", err)
  120. return global.CreateFailedErr
  121. }
  122. }
  123. return nil
  124. }
  125. // Update 修改CoolerBox对象
  126. func (e *CoolerBox) Update(c *dto.CoolerBoxUpdateReq, p *actions.DataPermission) error {
  127. var err error
  128. tx := e.Orm.Begin()
  129. defer func() {
  130. if err != nil {
  131. tx.Rollback()
  132. } else {
  133. tx.Commit()
  134. }
  135. }()
  136. var CoolerBoxModel = model.CoolerBox{}
  137. // 查询保温箱是否存在
  138. err = e.Orm.Scopes(actions.Permission(CoolerBoxModel.TableName(), p)).
  139. First(&CoolerBoxModel, c.GetId()).Error
  140. if err != nil {
  141. e.Log.Errorf("db error: %s", err)
  142. if errors.Is(err, gorm.ErrRecordNotFound) {
  143. return global.UpdateNotFoundOrNoPermissionErr
  144. }
  145. return global.UpdateFailedErr
  146. }
  147. if CoolerBoxModel.Sn != c.Sn {
  148. var k int64
  149. var data = model.CoolerBox{}
  150. err = tx.Model(&data).Where("sn = ?", c.Sn).Count(&k).Error
  151. if err != nil {
  152. e.Log.Errorf("db error: %s", err)
  153. return global.CreateFailedErr
  154. }
  155. if k > 0 {
  156. err = errors.New("该Sn已绑定!")
  157. e.Log.Errorf("db error: %s", err)
  158. return err
  159. }
  160. CoolerBoxModel.HistorySn = append(CoolerBoxModel.HistorySn, c.Sn)
  161. }
  162. c.Generate(&CoolerBoxModel)
  163. err = tx.Save(&CoolerBoxModel).Error
  164. if err != nil {
  165. e.Log.Errorf("db error: %s", err)
  166. return global.UpdateFailedErr
  167. }
  168. c.Id = CoolerBoxModel.Id
  169. return nil
  170. }
  171. // Remove 删除CoolerBox
  172. func (e *CoolerBox) Remove(c *dto.CoolerBoxDeleteReq, p *actions.DataPermission) error {
  173. var err error
  174. tx := e.Orm.Begin()
  175. defer func() {
  176. if err != nil {
  177. tx.Rollback()
  178. } else {
  179. tx.Commit()
  180. }
  181. }()
  182. var CoolerBoxModel model.CoolerBox
  183. // 查询保温箱是否存在
  184. err = e.Orm.Scopes(actions.Permission(CoolerBoxModel.TableName(), p)).
  185. First(&CoolerBoxModel, c.GetId()).Error
  186. if err != nil {
  187. e.Log.Errorf("db error: %s", err)
  188. if errors.Is(err, gorm.ErrRecordNotFound) {
  189. return global.DeleteNotFoundOrNoPermissionErr
  190. }
  191. return global.DeleteFailedErr
  192. }
  193. db := tx.Delete(&CoolerBoxModel)
  194. if err = db.Error; err != nil {
  195. e.Log.Errorf("db error: %s", err)
  196. return global.DeleteFailedErr
  197. }
  198. if db.RowsAffected == 0 {
  199. return global.DeleteNotFoundOrNoPermissionErr
  200. }
  201. return nil
  202. }