ServiceItem.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package services
  2. import (
  3. "ERP_storage/dto"
  4. db "ERP_storage/initialize"
  5. "ERP_storage/logs"
  6. models "ERP_storage/models/ContractReview"
  7. "errors"
  8. "gogs.baozhida.cn/zoie/ERP_libs/lib"
  9. "gorm.io/gorm"
  10. )
  11. type ServiceItem struct {
  12. }
  13. func (e *ServiceItem) GetPage(c *dto.ServiceItemPageReq) (list []models.ServiceItem, cnt int64) {
  14. var err error
  15. err = db.DB.Model(&models.ServiceItem{}).
  16. Scopes(
  17. dto.MakeCondition(c.GetNeedSearch()),
  18. dto.Paginate(c.GetPageSize(), c.GetPageIndex()),
  19. dto.WithNormalState(),
  20. ).
  21. Preload("ServiceType").
  22. Find(&list).Limit(-1).Offset(-1).
  23. Count(&cnt).Error
  24. if err != nil {
  25. logs.Error("db error: %s ", err)
  26. return
  27. }
  28. return
  29. }
  30. func (e *ServiceItem) Get(Id int) (r models.ServiceItem, err error) {
  31. err = db.DB.Scopes(dto.WithNormalState()).First(&r, Id).Error
  32. if err != nil {
  33. logs.Error("db error: %s", err)
  34. return
  35. }
  36. return
  37. }
  38. // 添加
  39. func (e *ServiceItem) Insert(c *dto.ServiceItemInsertReq) (id int, err error) {
  40. var data models.ServiceItem
  41. err = db.DB.Scopes(dto.WithNormalState()).Where("t_name = ?", c.T_name).First(&data).Error
  42. if err != nil {
  43. // 没有则创建
  44. if errors.Is(err, gorm.ErrRecordNotFound) {
  45. c.Generate(&data)
  46. err = db.DB.Create(&data).Error
  47. if err != nil {
  48. logs.Error("db error: %s", err)
  49. return
  50. }
  51. id = data.Id
  52. return
  53. }
  54. logs.Error("db error: %s", err)
  55. return
  56. }
  57. id = data.Id
  58. return
  59. }
  60. // 修改
  61. func (e *ServiceItem) Update(c *dto.ServiceItemUpdateReq) error {
  62. var serviceItem = models.ServiceItem{}
  63. err := db.DB.Scopes(dto.WithNormalState()).First(&serviceItem, c.GetId()).Error
  64. if err != nil {
  65. logs.Error("db error: %s", err)
  66. return err
  67. }
  68. c.Generate(&serviceItem)
  69. err = db.DB.Save(&serviceItem).Error
  70. if err != nil {
  71. logs.Error("db error: %s", err)
  72. return err
  73. }
  74. return nil
  75. }
  76. // 删除
  77. func (e *ServiceItem) Delete(c *dto.ServiceItemDeleteReq) error {
  78. var serviceItem = models.ServiceItem{}
  79. err := db.DB.Scopes(dto.WithNormalState()).First(&serviceItem, c.GetId()).Error
  80. if err != nil {
  81. logs.Error("db error: %s", err)
  82. return dto.GetFailedErr
  83. }
  84. var ContractReviewServiceItemCount int64
  85. err = db.DB.Model(&models.ContractReviewServiceItem{}).
  86. Scopes(dto.WithNormalState()).
  87. Where("t_service_item_id = ?", serviceItem.Id).
  88. Count(&ContractReviewServiceItemCount).Error
  89. if err != nil {
  90. logs.Error("db error: %s", err)
  91. return dto.GetFailedErr
  92. }
  93. if ContractReviewServiceItemCount > 0 {
  94. return errors.New("存在已关联的合同评审,无法删除!")
  95. }
  96. serviceItem.T_State = 0
  97. err = db.DB.Save(&serviceItem).Error
  98. if err != nil {
  99. logs.Error(lib.FuncName(), err)
  100. }
  101. return dto.DeleteFailedErr
  102. }