package NatsServer import ( "ColdVerify_server/lib" "ColdVerify_server/logs" "errors" "github.com/vmihailenco/msgpack/v5" "time" ) type Device struct { T_sn string // 设备序列号 T_pid int // Account.Company 绑定公司 T_devName string // 设备名称 20字 T_protocol int // 冷链通讯协议 1 :1.0协议 2 :2.0协议 3 :3.0协议 T_mqttid string // MQTT 服务ID T_VerifyTime time.Time // 验证时间 T_CalibrationTime time.Time // 校准时间 T_PatrolTime time.Time // 巡检时间 T_abandonTime time.Time // 弃用时间 T_ist int // 温度 1开启 2关闭 T_ish int // 湿度 1开启 2关闭 T_State int // 0 屏蔽 1 正常 (屏蔽后 只有内部管理员才能看到,用户 输入SN\名称 搜索时 也能看到) // 设备同步参数 T_Dattery int // 电量 T_Site string // GPS T_monitor int // 监控状态 0 未监控 1 监控 停止记录 T_online int // 在线状态 0 未启用 1 在线 2 离线 T_online_s int // 在线状态-备用 0 未启用 1 在线 2 离线 // 硬件信息 T_model string // KF200BG 设备型号 T_sver string // "1.0.0",//软件版本 T_hver string // "1.0.0",//硬件版本 T_imei string // "867387060327718",//模组imei T_iccid string // "89860477102170049750",//sim卡号 T_rssi string // "80",//信号强度 CreateTime time.Time //auto_now_add 第一次保存时才设置时间 UpdateTime time.Time //auto_now 每次 model 保存时都会对时间自动更新 } func Cold_UpdateDevice_CalibrationTime(T_sn, T_CalibrationExpirationTime string) error { logs.Println("Nats =>", lib.FuncName(), T_sn, T_CalibrationExpirationTime) type T_Req struct { T_sn string T_CalibrationTime string } t_r := T_Req{ T_sn: T_sn, T_CalibrationTime: T_CalibrationExpirationTime, } b, err := msgpack.Marshal(&t_r) if err != nil { logs.Error("Nats =>", "msgpack Marshal err", err) return err } msg, err := lib.Nats.Request("Cold_UpdateDevice_CalibrationTime", b, 3*time.Second) if err != nil { return err } type T_R struct { Code int16 `xml:"Code"` Msg string `xml:"Msg"` Data interface{} `xml:"Data"` } var t_R T_R err = msgpack.Unmarshal(msg.Data, &t_R) if err != nil { return err } if t_R.Code != 200 { return errors.New(t_R.Msg) } return nil } func Cold_ReadDeviceByT_sn(T_sn string) (data Device, err error) { msg, err := lib.Nats.Request("Cold_ReadDeviceByT_sn", []byte(T_sn), 3*time.Second) if err != nil { return } type T_R struct { Code int16 `xml:"Code"` Msg string `xml:"Msg"` Data Device `xml:"Data"` // 泛型 } var t_R T_R err = msgpack.Unmarshal(msg.Data, &t_R) if err != nil { return } if t_R.Code != 200 { err = errors.New(t_R.Msg) return } data = t_R.Data return data, nil }