car_info.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  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 CarInfo struct {
  13. service.Service
  14. }
  15. // GetPage 获取CarInfo列表
  16. func (e *CarInfo) GetPage(c *dto.CarInfoGetPageReq, list *[]model.CarInfo, count *int64, p *actions.DataPermission) error {
  17. var err error
  18. var data model.CarInfo
  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. ).Preload("TruckUserCarInfo.User").
  25. Find(list).Limit(-1).Offset(-1).
  26. Count(count).Error
  27. if err != nil {
  28. e.Log.Errorf("db error: %s", err)
  29. return global.GetFailedErr
  30. }
  31. return nil
  32. }
  33. // Get 获取CarInfo对象
  34. func (e *CarInfo) Get(d *dto.CarInfoGetReq, carInfoModel *model.CarInfo, p *actions.DataPermission) error {
  35. err := e.Orm.
  36. Scopes(actions.Permission(carInfoModel.TableName(), p)).
  37. First(carInfoModel, d.GetId()).Error
  38. if err != nil {
  39. e.Log.Errorf("db error: %s", err)
  40. if errors.Is(err, gorm.ErrRecordNotFound) {
  41. return global.GetNotFoundOrNoPermissionErr
  42. }
  43. return global.GetFailedErr
  44. }
  45. return nil
  46. }
  47. // Insert 创建CarInfo对象
  48. func (e *CarInfo) Insert(c *dto.CarInfoInsertReq) error {
  49. var err error
  50. var data model.CarInfo
  51. tx := e.Orm.Begin()
  52. defer func() {
  53. if err != nil {
  54. tx.Rollback()
  55. } else {
  56. tx.Commit()
  57. }
  58. }()
  59. // TODO 1.1.1.12新运输增车辆信息
  60. // 查询车辆信息是否存在
  61. err = e.Orm.Where("car_no = ?", c.ProvCarInfo.CarNo).First(&data).Error
  62. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  63. e.Log.Errorf("db error: %s", err)
  64. return global.CreateFailedErr
  65. }
  66. if data.Id > 0 {
  67. return errors.New("车辆信息已存在")
  68. }
  69. // 添加车辆信息
  70. c.Generate(&data)
  71. err = tx.Create(&data).Error
  72. if err != nil {
  73. e.Log.Errorf("db error: %s", err)
  74. return global.CreateFailedErr
  75. }
  76. c.Id = data.Id
  77. return nil
  78. }
  79. // Update 修改CarInfo对象
  80. func (e *CarInfo) Update(c *dto.CarInfoUpdateReq, p *actions.DataPermission) error {
  81. var err error
  82. tx := e.Orm.Begin()
  83. defer func() {
  84. if err != nil {
  85. tx.Rollback()
  86. } else {
  87. tx.Commit()
  88. }
  89. }()
  90. var carInfoModel = model.CarInfo{}
  91. // 查询车辆信息是否存在
  92. err = e.Orm.Scopes(actions.Permission(carInfoModel.TableName(), p)).
  93. First(&carInfoModel, c.GetId()).Error
  94. if err != nil {
  95. e.Log.Errorf("db error: %s", err)
  96. if errors.Is(err, gorm.ErrRecordNotFound) {
  97. return global.UpdateNotFoundOrNoPermissionErr
  98. }
  99. return global.UpdateFailedErr
  100. }
  101. // TODO 1.1.1.13更新车辆信息
  102. c.Generate(&carInfoModel)
  103. err = tx.Save(&carInfoModel).Error
  104. if err != nil {
  105. e.Log.Errorf("db error: %s", err)
  106. return global.UpdateFailedErr
  107. }
  108. c.Id = carInfoModel.Id
  109. return nil
  110. }
  111. // Remove 删除CarInfo
  112. func (e *CarInfo) Remove(c *dto.CarInfoDeleteReq, p *actions.DataPermission) error {
  113. var err error
  114. tx := e.Orm.Begin()
  115. defer func() {
  116. if err != nil {
  117. tx.Rollback()
  118. } else {
  119. tx.Commit()
  120. }
  121. }()
  122. var carInfoModel model.CarInfo
  123. // 查询车辆信息是否存在
  124. err = e.Orm.Scopes(actions.Permission(carInfoModel.TableName(), p)).
  125. First(&carInfoModel, c.GetId()).Error
  126. if err != nil {
  127. e.Log.Errorf("db error: %s", err)
  128. if errors.Is(err, gorm.ErrRecordNotFound) {
  129. return global.DeleteNotFoundOrNoPermissionErr
  130. }
  131. return global.DeleteFailedErr
  132. }
  133. // TODO 1.1.1.14注销车辆信息
  134. db := tx.Delete(&carInfoModel)
  135. if err = db.Error; err != nil {
  136. e.Log.Errorf("db error: %s", err)
  137. return global.DeleteFailedErr
  138. }
  139. if db.RowsAffected == 0 {
  140. return global.DeleteNotFoundOrNoPermissionErr
  141. }
  142. return nil
  143. }
  144. func (e *CarInfo) BindTruckUser(c *dto.CarInfoBindTruckUserReq) error {
  145. var err error
  146. var data model.TruckUserCarInfo
  147. tx := e.Orm.Begin()
  148. defer func() {
  149. if err != nil {
  150. tx.Rollback()
  151. } else {
  152. tx.Commit()
  153. }
  154. }()
  155. // 查询车辆是否绑定了其他货车司机
  156. var truckUserCarInfo = model.TruckUserCarInfo{}
  157. // 查询车辆信息是否存在
  158. err = e.Orm.Where("car_no = ?", c.CarNo).First(&truckUserCarInfo).Error
  159. if err != nil {
  160. e.Log.Errorf("db error: %s", err)
  161. if errors.Is(err, gorm.ErrRecordNotFound) {
  162. data.ProvUserId = c.UserId
  163. data.CarNo = c.CarNo
  164. err = tx.Create(&data).Error
  165. if err != nil {
  166. e.Log.Errorf("db error: %s", err)
  167. return global.CreateFailedErr
  168. }
  169. // TODO 1.1.1.15货车司机绑定车辆信息
  170. c.CarNo = data.CarNo
  171. return nil
  172. }
  173. return global.UpdateFailedErr
  174. }
  175. // TODO 1.1.1.15货车司机绑定车辆信息
  176. truckUserCarInfo.ProvUserId = c.UserId
  177. err = tx.Updates(&truckUserCarInfo).Error
  178. if err != nil {
  179. e.Log.Errorf("db error: %s", err)
  180. return global.CreateFailedErr
  181. }
  182. c.CarNo = data.CarNo
  183. return nil
  184. }