package service import ( "errors" "gorm.io/gorm" "speechAnalysis/constvar" "speechAnalysis/models" "speechAnalysis/pkg/logx" ) func DeleteAudio(audioId uint) (err error) { err = models.WithTransaction(func(db *gorm.DB) error { if err := models.NewAudioSearch().SetID(audioId).Delete(); err != nil { return err } return models.NewAudioTextSearch().SetAudioID(audioId).Delete() }) if err != nil { logx.Errorf("delete audio err: %v", err) return errors.New("DB错误") } return nil } func BatchDeleteAudio(audioIds []uint) (err error) { if len(audioIds) == 0 { return nil } err = models.WithTransaction(func(db *gorm.DB) error { if err := models.NewAudioSearch().SetIDs(audioIds).Delete(); err != nil { return err } return models.NewAudioTextSearch().SetAudioIDs(audioIds).Delete() }) if err != nil { logx.Errorf("delete audio err: %v", err) return errors.New("DB错误") } return nil } func Follow(audioId uint) (followStatus constvar.BoolType, err error) { if audioId == 0 { return } audio, err := models.NewAudioSearch().SetID(audioId).First() if err != nil { return followStatus, errors.New("DB错误") } if audio.IsFollowed.Bool() { followStatus = constvar.BoolTypeFalse } else { followStatus = constvar.BoolTypeTrue } err = models.NewAudioSearch().SetID(audioId).UpdateByMap(map[string]interface{}{ "is_followed": followStatus, }) if err != nil { logx.Errorf("follow audio err: %v", err) return followStatus, errors.New("DB错误") } return followStatus, nil }