package services import ( "ERP_storage/dto" db "ERP_storage/initialize" "ERP_storage/logs" models "ERP_storage/models/ContractReview" "errors" "gogs.baozhida.cn/zoie/ERP_libs/lib" "gorm.io/gorm" ) type ServiceItem struct { } func (e *ServiceItem) GetPage(c *dto.ServiceItemPageReq) (list []models.ServiceItem, cnt int64) { var err error err = db.DB.Model(&models.ServiceItem{}). Scopes( dto.MakeCondition(c.GetNeedSearch()), dto.Paginate(c.GetPageSize(), c.GetPageIndex()), dto.WithNormalState(), ). Preload("ServiceType"). Find(&list).Limit(-1).Offset(-1). Count(&cnt).Error if err != nil { logs.Error("db error: %s ", err) return } return } func (e *ServiceItem) Get(Id int) (r models.ServiceItem, err error) { err = db.DB.Scopes(dto.WithNormalState()).First(&r, Id).Error if err != nil { logs.Error("db error: %s", err) return } return } // 添加 func (e *ServiceItem) Insert(c *dto.ServiceItemInsertReq) (id int, err error) { var data models.ServiceItem err = db.DB.Scopes(dto.WithNormalState()).Where("t_name = ?", c.T_name).First(&data).Error if err != nil { // 没有则创建 if errors.Is(err, gorm.ErrRecordNotFound) { c.Generate(&data) err = db.DB.Create(&data).Error if err != nil { logs.Error("db error: %s", err) return } id = data.Id return } logs.Error("db error: %s", err) return } id = data.Id return } // 修改 func (e *ServiceItem) Update(c *dto.ServiceItemUpdateReq) error { var serviceItem = models.ServiceItem{} err := db.DB.Scopes(dto.WithNormalState()).First(&serviceItem, c.GetId()).Error if err != nil { logs.Error("db error: %s", err) return err } c.Generate(&serviceItem) err = db.DB.Save(&serviceItem).Error if err != nil { logs.Error("db error: %s", err) return err } return nil } // 删除 func (e *ServiceItem) Delete(c *dto.ServiceItemDeleteReq) error { var serviceItem = models.ServiceItem{} err := db.DB.Scopes(dto.WithNormalState()).First(&serviceItem, c.GetId()).Error if err != nil { logs.Error("db error: %s", err) return dto.GetFailedErr } var ContractReviewServiceItemCount int64 err = db.DB.Model(&models.ContractReviewServiceItem{}). Scopes(dto.WithNormalState()). Where("t_service_item_id = ?", serviceItem.Id). Count(&ContractReviewServiceItemCount).Error if err != nil { logs.Error("db error: %s", err) return dto.GetFailedErr } if ContractReviewServiceItemCount > 0 { return errors.New("存在已关联的合同评审,无法删除!") } serviceItem.T_State = 0 err = db.DB.Save(&serviceItem).Error if err != nil { logs.Error(lib.FuncName(), err) } return dto.DeleteFailedErr }