package services import ( "ERP_salary/dto" db "ERP_salary/initialize" "ERP_salary/logs" models "ERP_salary/models/Performance" "errors" "gogs.baozhida.cn/zoie/ERP_libs/lib" "gorm.io/gorm" ) type PerformanceTarget struct { } func (e *PerformanceTarget) GetPage(c *dto.PerformanceTargetPageReq) (list []models.PerformanceTarget, cnt int64) { var err error err = db.DB.Model(&models.PerformanceTarget{}). Scopes( dto.MakeCondition(c.GetNeedSearch()), dto.Paginate(c.GetPageSize(), c.GetPageIndex()), dto.WithNormalState(), ). Find(&list).Limit(-1).Offset(-1). Count(&cnt).Error if err != nil { logs.Error("db error: %s ", err) return } return } func (e *PerformanceTarget) Get(Id int) (r models.PerformanceTarget, 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 *PerformanceTarget) Insert(c *dto.PerformanceTargetInsertReq) (id int, err error) { var data models.PerformanceTarget 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 *PerformanceTarget) Update(c *dto.PerformanceTargetUpdateReq) error { var performanceTarget = models.PerformanceTarget{} err := db.DB.Scopes(dto.WithNormalState()).First(&performanceTarget, c.GetId()).Error if err != nil { logs.Error("db error: %s", err) return dto.GetNotFoundErr } c.Generate(&performanceTarget) err = db.DB.Save(&performanceTarget).Error if err != nil { logs.Error("db error: %s", err) return dto.UpdateFailedErr } return nil } // 删除 func (e *PerformanceTarget) Delete(c *dto.PerformanceTargetDeleteReq) error { var performanceTarget = models.PerformanceTarget{} err := db.DB.Scopes(dto.WithNormalState()).First(&performanceTarget, c.GetId()).Error if err != nil { logs.Error("db error: %s", err) return dto.GetNotFoundErr } var ServiceItemCount int64 err = db.DB.Model(&models.PerformanceTarget{}). Scopes(dto.WithNormalState()). Where("t_service_type_id = ?", performanceTarget.Id). Count(&ServiceItemCount).Error if err != nil { logs.Error("db error: %s", err) return dto.GetFailedErr } if ServiceItemCount > 0 { return errors.New("存在已关联的服务内容,无法删除!") } performanceTarget.T_State = 0 err = db.DB.Save(&performanceTarget).Error if err != nil { logs.Error(lib.FuncName(), err) return dto.DeleteFailedErr } return nil }