audio.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package service
  2. import (
  3. "errors"
  4. "gorm.io/gorm"
  5. "speechAnalysis/constvar"
  6. "speechAnalysis/models"
  7. "speechAnalysis/pkg/logx"
  8. )
  9. func DeleteAudio(audioId uint) (err error) {
  10. err = models.WithTransaction(func(db *gorm.DB) error {
  11. if err := models.NewAudioSearch().SetID(audioId).Delete(); err != nil {
  12. return err
  13. }
  14. return models.NewAudioTextSearch().SetAudioID(audioId).Delete()
  15. })
  16. if err != nil {
  17. logx.Errorf("delete audio err: %v", err)
  18. return errors.New("DB错误")
  19. }
  20. return nil
  21. }
  22. func BatchDeleteAudio(audioIds []uint) (err error) {
  23. if len(audioIds) == 0 {
  24. return nil
  25. }
  26. err = models.WithTransaction(func(db *gorm.DB) error {
  27. if err := models.NewAudioSearch().SetIDs(audioIds).Delete(); err != nil {
  28. return err
  29. }
  30. return models.NewAudioTextSearch().SetAudioIDs(audioIds).Delete()
  31. })
  32. if err != nil {
  33. logx.Errorf("delete audio err: %v", err)
  34. return errors.New("DB错误")
  35. }
  36. return nil
  37. }
  38. func Follow(audioId uint) (followStatus constvar.BoolType, err error) {
  39. if audioId == 0 {
  40. return
  41. }
  42. audio, err := models.NewAudioSearch().SetID(audioId).First()
  43. if err != nil {
  44. return followStatus, errors.New("DB错误")
  45. }
  46. if audio.IsFollowed.Bool() {
  47. followStatus = constvar.BoolTypeFalse
  48. } else {
  49. followStatus = constvar.BoolTypeTrue
  50. }
  51. err = models.NewAudioSearch().SetID(audioId).UpdateByMap(map[string]interface{}{
  52. "is_followed": followStatus,
  53. })
  54. if err != nil {
  55. logx.Errorf("follow audio err: %v", err)
  56. return followStatus, errors.New("DB错误")
  57. }
  58. return followStatus, nil
  59. }