package devices import ( "encoding/json" "fmt" "server/dao" "server/global" "server/model/devices" "server/utils/protocol" ) type SoundPeriodService struct { } func (sps *SoundPeriodService) CreateSoundPeriod(req devices.SoundPeriodReq) error { result := devices.PeriodtimeJSON{ Setperiodtime0: devices.SetPeropdtime{ Time: req.SoundPeriod.Time, Period0: req.SoundPeriod.Period0, Period1: req.SoundPeriod.Period1, Period2: req.SoundPeriod.Period2, Period3: req.SoundPeriod.Period3, Period4: req.SoundPeriod.Period4, Period5: req.SoundPeriod.Period5, Period6: req.SoundPeriod.Period6, Period7: req.SoundPeriod.Period7, }, } // 序列化为 JSON 字符串 jsonBytes, err := json.MarshalIndent(result, "", " ") if err != nil { return fmt.Errorf("转换失败: %v", err) } err = MqttService.Publish(MqttService.GetTopic(req.DeviceSn, protocol.TopicSetControl), jsonBytes) if err != nil { return fmt.Errorf("error updating: %v", err) } err = global.GVA_DB.Create(&req.SoundPeriod).Error if err != nil { return err } fmt.Println("SoundPeriod CreateSoundPeriod === ", req.SoundPeriod) err = global.GVA_DB.Model(dao.Screens{}).Where("sn = ?", req.DeviceSn).Update("sound_period_id", req.SoundPeriod.ID).Error if err != nil { return err } return err } func (sps *SoundPeriodService) UpdateSoundPeriod(req devices.SoundPeriodReq) error { result := devices.PeriodtimeJSON{ Setperiodtime0: devices.SetPeropdtime{ Time: req.SoundPeriod.Time, Period0: req.SoundPeriod.Period0, Period1: req.SoundPeriod.Period1, Period2: req.SoundPeriod.Period2, Period3: req.SoundPeriod.Period3, Period4: req.SoundPeriod.Period4, Period5: req.SoundPeriod.Period5, Period6: req.SoundPeriod.Period6, Period7: req.SoundPeriod.Period7, }, } // 序列化为 JSON 字符串 jsonBytes, err := json.MarshalIndent(result, "", " ") if err != nil { return fmt.Errorf("转换失败: %v", err) } err = MqttService.Publish(MqttService.GetTopic(req.DeviceSn, protocol.TopicSetControl), jsonBytes) if err != nil { return fmt.Errorf("error updating: %v", err) } err = global.GVA_DB.Where("id = ?", req.SoundPeriod.ID).Updates(&req.SoundPeriod).Error if err != nil { return err } return err }