NatsColdApi.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package NatsServer
  2. import (
  3. "ColdVerify_server/lib"
  4. "ColdVerify_server/logs"
  5. "errors"
  6. "github.com/vmihailenco/msgpack/v5"
  7. "time"
  8. )
  9. type Device struct {
  10. T_sn string // 设备序列号
  11. T_pid int // Account.Company 绑定公司
  12. T_devName string // 设备名称 20字
  13. T_protocol int // 冷链通讯协议 1 :1.0协议 2 :2.0协议 3 :3.0协议
  14. T_mqttid string // MQTT 服务ID
  15. T_VerifyTime time.Time // 验证时间
  16. T_CalibrationTime time.Time // 校准时间
  17. T_PatrolTime time.Time // 巡检时间
  18. T_abandonTime time.Time // 弃用时间
  19. T_ist int // 温度 1开启 2关闭
  20. T_ish int // 湿度 1开启 2关闭
  21. T_State int // 0 屏蔽 1 正常 (屏蔽后 只有内部管理员才能看到,用户 输入SN\名称 搜索时 也能看到)
  22. // 设备同步参数
  23. T_Dattery int // 电量
  24. T_Site string // GPS
  25. T_monitor int // 监控状态 0 未监控 1 监控 停止记录
  26. T_online int // 在线状态 0 未启用 1 在线 2 离线
  27. T_online_s int // 在线状态-备用 0 未启用 1 在线 2 离线
  28. // 硬件信息
  29. T_model string // KF200BG 设备型号
  30. T_sver string // "1.0.0",//软件版本
  31. T_hver string // "1.0.0",//硬件版本
  32. T_imei string // "867387060327718",//模组imei
  33. T_iccid string // "89860477102170049750",//sim卡号
  34. T_rssi string // "80",//信号强度
  35. CreateTime time.Time //auto_now_add 第一次保存时才设置时间
  36. UpdateTime time.Time //auto_now 每次 model 保存时都会对时间自动更新
  37. }
  38. func Cold_UpdateDevice_CalibrationTime(T_sn, T_CalibrationExpirationTime string) error {
  39. logs.Println("Nats =>", lib.FuncName(), T_sn, T_CalibrationExpirationTime)
  40. type T_Req struct {
  41. T_sn string
  42. T_CalibrationTime string
  43. }
  44. t_r := T_Req{
  45. T_sn: T_sn,
  46. T_CalibrationTime: T_CalibrationExpirationTime,
  47. }
  48. b, err := msgpack.Marshal(&t_r)
  49. if err != nil {
  50. logs.Error("Nats =>", "msgpack Marshal err", err)
  51. return err
  52. }
  53. msg, err := lib.Nats.Request("Cold_UpdateDevice_CalibrationTime", b, 3*time.Second)
  54. if err != nil {
  55. return err
  56. }
  57. type T_R struct {
  58. Code int16 `xml:"Code"`
  59. Msg string `xml:"Msg"`
  60. Data interface{} `xml:"Data"`
  61. }
  62. var t_R T_R
  63. err = msgpack.Unmarshal(msg.Data, &t_R)
  64. if err != nil {
  65. return err
  66. }
  67. if t_R.Code != 200 {
  68. return errors.New(t_R.Msg)
  69. }
  70. return nil
  71. }
  72. func Cold_ReadDeviceByT_sn(T_sn string) (data Device, err error) {
  73. msg, err := lib.Nats.Request("Cold_ReadDeviceByT_sn", []byte(T_sn), 3*time.Second)
  74. if err != nil {
  75. return
  76. }
  77. type T_R struct {
  78. Code int16 `xml:"Code"`
  79. Msg string `xml:"Msg"`
  80. Data Device `xml:"Data"` // 泛型
  81. }
  82. var t_R T_R
  83. err = msgpack.Unmarshal(msg.Data, &t_R)
  84. if err != nil {
  85. return
  86. }
  87. if t_R.Code != 200 {
  88. err = errors.New(t_R.Msg)
  89. return
  90. }
  91. data = t_R.Data
  92. return data, nil
  93. }