package devices import ( "encoding/json" "fmt" "server/dao" "server/global" "server/model/devices" "server/utils/protocol" ) type VoiceService struct { } func (vs *VoiceService) CreateVoice(info devices.VoiceReq) error { result := devices.VoiceJSON{ Audionumset0: devices.SetVoice{ Num0: info.Voice.Num0, Num1: info.Voice.Num1, Num2: info.Voice.Num2, Num3: info.Voice.Num3, Num4: info.Voice.Num4, }, } // 序列化为 JSON 字符串 jsonBytes, err := json.MarshalIndent(result, "", " ") if err != nil { return fmt.Errorf("转换失败: %v", err) } err = MqttService.Publish(MqttService.GetTopic(info.DeviceSn, protocol.TopicChanStatus), jsonBytes) if err != nil { return fmt.Errorf("error updating: %v", err) } err = global.GVA_DB.Create(&info.Voice).Error if err != nil { return err } err = global.GVA_DB.Model(dao.Screens{}).Where("sn = ?", info.DeviceSn).Update("program_id", info.Voice.ID).Error if err != nil { return err } return err } func (vs *VoiceService) UpdateVoice(info devices.VoiceReq) error { result := devices.VoiceJSON{ Audionumset0: devices.SetVoice{ Num0: info.Voice.Num0, Num1: info.Voice.Num1, Num2: info.Voice.Num2, Num3: info.Voice.Num3, Num4: info.Voice.Num4, }, } // 序列化为 JSON 字符串 jsonBytes, err := json.MarshalIndent(result, "", " ") if err != nil { return fmt.Errorf("转换失败: %v", err) } err = MqttService.Publish(MqttService.GetTopic(info.DeviceSn, protocol.TopicChanStatus), jsonBytes) if err != nil { return fmt.Errorf("error updating: %v", err) } return global.GVA_DB.Save(&info).Error }