program.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 ProgramService struct {
  11. }
  12. func (ps *ProgramService) CreateProgram(ref devices.ProgramReq) error {
  13. result := devices.DiscontentJSON{
  14. Setdiscontent0: devices.SetDisContent{
  15. Num: ref.Program.Num,
  16. Effect: ref.Program.Effect,
  17. Speed: ref.Program.Speed,
  18. Stay: ref.Program.Stay,
  19. Total: ref.Program.Total,
  20. Color: ref.Program.Color,
  21. Content: ref.Program.Content,
  22. },
  23. }
  24. // 序列化为 JSON 字符串
  25. jsonBytes, err := json.MarshalIndent(result, "", " ")
  26. if err != nil {
  27. return fmt.Errorf("转换失败: %v", err)
  28. }
  29. err = MqttService.Publish(MqttService.GetTopic(ref.DeviceSn, protocol.TopicSetControl), jsonBytes)
  30. if err != nil {
  31. return fmt.Errorf("error updating: %v", err)
  32. }
  33. err = global.GVA_DB.Create(&ref.Program).Error
  34. if err != nil {
  35. return err
  36. }
  37. fmt.Println("Program CreateProgram === ", ref.Program)
  38. err = global.GVA_DB.Model(dao.Screens{}).Where("sn = ?", ref.DeviceSn).Update("program_id", ref.Program.ID).Error
  39. if err != nil {
  40. return err
  41. }
  42. return err
  43. }
  44. func (ps *ProgramService) UpdateProgram(ref devices.ProgramReq) error {
  45. result := devices.DiscontentJSON{
  46. Setdiscontent0: devices.SetDisContent{
  47. Num: ref.Program.Num,
  48. Effect: ref.Program.Effect,
  49. Speed: ref.Program.Speed,
  50. Stay: ref.Program.Stay,
  51. Total: ref.Program.Total,
  52. Color: ref.Program.Color,
  53. Content: ref.Program.Content,
  54. },
  55. }
  56. // 序列化为 JSON 字符串
  57. jsonBytes, err := json.MarshalIndent(result, "", " ")
  58. if err != nil {
  59. return fmt.Errorf("转换失败: %v", err)
  60. }
  61. err = MqttService.Publish(MqttService.GetTopic(ref.DeviceSn, protocol.TopicSetControl), jsonBytes)
  62. if err != nil {
  63. return fmt.Errorf("error updating: %v", err)
  64. }
  65. return ref.Program.UpdateProgram()
  66. }