voice.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package devices
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "server/dao"
  6. "server/global"
  7. "server/model/devices"
  8. "server/utils/protocol"
  9. )
  10. type VoiceService struct {
  11. }
  12. func (vs *VoiceService) CreateVoice(info devices.VoiceReq) error {
  13. result := devices.VoiceJSON{
  14. Audionumset0: devices.SetVoice{
  15. Num0: info.Voice.Num0,
  16. Num1: info.Voice.Num1,
  17. Num2: info.Voice.Num2,
  18. Num3: info.Voice.Num3,
  19. Num4: info.Voice.Num4,
  20. },
  21. }
  22. // 序列化为 JSON 字符串
  23. jsonBytes, err := json.MarshalIndent(result, "", " ")
  24. if err != nil {
  25. return fmt.Errorf("转换失败: %v", err)
  26. }
  27. err = MqttService.Publish(MqttService.GetTopic(info.DeviceSn, protocol.TopicSetControl), jsonBytes)
  28. if err != nil {
  29. return fmt.Errorf("error updating: %v", err)
  30. }
  31. err = global.GVA_DB.Create(&info.Voice).Error
  32. if err != nil {
  33. return err
  34. }
  35. err = global.GVA_DB.Model(dao.Screens{}).Where("sn = ?", info.DeviceSn).Update("voice_id", info.Voice.ID).Error
  36. if err != nil {
  37. return err
  38. }
  39. return err
  40. }
  41. func (vs *VoiceService) UpdateVoice(info devices.VoiceReq) error {
  42. result := devices.VoiceJSON{
  43. Audionumset0: devices.SetVoice{
  44. Num0: info.Voice.Num0,
  45. Num1: info.Voice.Num1,
  46. Num2: info.Voice.Num2,
  47. Num3: info.Voice.Num3,
  48. Num4: info.Voice.Num4,
  49. },
  50. }
  51. // 序列化为 JSON 字符串
  52. jsonBytes, err := json.MarshalIndent(result, "", " ")
  53. if err != nil {
  54. return fmt.Errorf("转换失败: %v", err)
  55. }
  56. err = MqttService.Publish(MqttService.GetTopic(info.DeviceSn, protocol.TopicSetControl), jsonBytes)
  57. if err != nil {
  58. return fmt.Errorf("error updating: %v", err)
  59. }
  60. return global.GVA_DB.Model(&dao.Voice{}).Where("id = ?", info.Voice.ID).Updates(&info.Voice).Error
  61. }