address.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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 Address struct {
  13. service.Service
  14. }
  15. // GetPage 获取Address列表
  16. func (e *Address) GetPage(c *dto.AddressGetPageReq, list *[]model.Address, count *int64) error {
  17. var err error
  18. var data model.Address
  19. err = e.Orm.Model(&data).
  20. Scopes(
  21. cDto.MakeCondition(c.GetNeedSearch()),
  22. cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
  23. ).
  24. Find(list).Limit(-1).Offset(-1).
  25. Count(count).Error
  26. if err != nil {
  27. e.Log.Errorf("db error: %s", err)
  28. return global.GetFailedErr
  29. }
  30. return nil
  31. }
  32. // Get 获取Address对象
  33. func (e *Address) Get(d *dto.AddressGetReq, carInfoModel *model.Address, p *actions.DataPermission) error {
  34. err := e.Orm.
  35. Scopes(actions.Permission(carInfoModel.TableName(), p)).
  36. First(carInfoModel, d.GetId()).Error
  37. if err != nil {
  38. e.Log.Errorf("db error: %s", err)
  39. if errors.Is(err, gorm.ErrRecordNotFound) {
  40. return global.GetNotFoundOrNoPermissionErr
  41. }
  42. return global.GetFailedErr
  43. }
  44. return nil
  45. }
  46. // Insert 创建Address对象
  47. func (e *Address) Insert(c *dto.AddressInsertReq) error {
  48. var err error
  49. var data model.Address
  50. tx := e.Orm.Begin()
  51. defer func() {
  52. if err != nil {
  53. tx.Rollback()
  54. } else {
  55. tx.Commit()
  56. }
  57. }()
  58. // 查询是否有其他默认地址
  59. var count int64
  60. err = tx.Model(&model.Address{}).Where("is_default = ? and customer_id = ?", 1, c.CustomerId).Count(&count).Error
  61. if err != nil {
  62. e.Log.Errorf("db error: %s", err)
  63. return global.CreateFailedErr
  64. }
  65. if count > 0 && c.IsDefault == true {
  66. err = tx.Model(&model.Address{}).Where("customer_id = ?", c.CustomerId).
  67. Updates(map[string]interface{}{
  68. "is_default": 0,
  69. }).Error
  70. if err != nil {
  71. e.Log.Errorf("db error: %s", err)
  72. return global.CreateFailedErr
  73. }
  74. }
  75. // 添加角色
  76. c.Generate(&data)
  77. err = tx.Create(&data).Error
  78. if err != nil {
  79. e.Log.Errorf("db error: %s", err)
  80. return global.CreateFailedErr
  81. }
  82. c.Id = data.Id
  83. return nil
  84. }
  85. // Update 修改Address对象
  86. func (e *Address) Update(c *dto.AddressUpdateReq, p *actions.DataPermission) error {
  87. var err error
  88. tx := e.Orm.Begin()
  89. defer func() {
  90. if err != nil {
  91. tx.Rollback()
  92. } else {
  93. tx.Commit()
  94. }
  95. }()
  96. var carInfoModel = model.Address{}
  97. // 查询角色是否存在
  98. err = e.Orm.Scopes(actions.Permission(carInfoModel.TableName(), p)).
  99. First(&carInfoModel, c.GetId()).Error
  100. if err != nil {
  101. e.Log.Errorf("db error: %s", err)
  102. if errors.Is(err, gorm.ErrRecordNotFound) {
  103. return global.UpdateNotFoundOrNoPermissionErr
  104. }
  105. return global.UpdateFailedErr
  106. }
  107. if c.IsDefault == true && c.IsDefault != carInfoModel.IsDefault {
  108. err = tx.Model(&model.Address{}).Where("customer_id = ?", carInfoModel.CustomerId).
  109. Updates(map[string]interface{}{
  110. "is_default": 0,
  111. }).Error
  112. if err != nil {
  113. e.Log.Errorf("db error: %s", err)
  114. return global.CreateFailedErr
  115. }
  116. }
  117. c.Generate(&carInfoModel)
  118. err = tx.Save(&carInfoModel).Error
  119. if err != nil {
  120. e.Log.Errorf("db error: %s", err)
  121. return global.UpdateFailedErr
  122. }
  123. c.Id = carInfoModel.Id
  124. return nil
  125. }
  126. // Remove 删除Address
  127. func (e *Address) Remove(c *dto.AddressDeleteReq, p *actions.DataPermission) error {
  128. var err error
  129. tx := e.Orm.Begin()
  130. defer func() {
  131. if err != nil {
  132. tx.Rollback()
  133. } else {
  134. tx.Commit()
  135. }
  136. }()
  137. var carInfoModel model.Address
  138. // 查询角色是否存在
  139. err = e.Orm.Scopes(actions.Permission(carInfoModel.TableName(), p)).
  140. First(&carInfoModel, c.GetId()).Error
  141. if err != nil {
  142. e.Log.Errorf("db error: %s", err)
  143. if errors.Is(err, gorm.ErrRecordNotFound) {
  144. return global.DeleteNotFoundOrNoPermissionErr
  145. }
  146. return global.DeleteFailedErr
  147. }
  148. db := tx.Delete(&carInfoModel)
  149. if err = db.Error; err != nil {
  150. e.Log.Errorf("db error: %s", err)
  151. return global.DeleteFailedErr
  152. }
  153. if db.RowsAffected == 0 {
  154. return global.DeleteNotFoundOrNoPermissionErr
  155. }
  156. return nil
  157. }