初始
This commit is contained in:
81
api/saft_hat/hat_rate.go
Normal file
81
api/saft_hat/hat_rate.go
Normal file
@ -0,0 +1,81 @@
|
||||
package saft_hat
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 定义设备上传速度频率请求【我们请求平台】
|
||||
type UploadRateReq struct {
|
||||
g.Meta `path:"/device/rate" method:"post" tags:"安全帽相关" summary:"更新设备数据发送频率"`
|
||||
Data string `json:"data" dc:"设备号"` // 设备数据
|
||||
RateTime int `json:"rateTime" dc:"上传频率单位是S"` // 上传频率
|
||||
}
|
||||
|
||||
type UploadRateRes struct {
|
||||
Code int `json:"code"` // 响应代码
|
||||
Data string `json:"data"` // 设备数据
|
||||
Msg string `json:"msg"` // 响应消息
|
||||
}
|
||||
|
||||
func (h Hat) UpdateRate(ctx context.Context, req *UploadRateReq) (res *UploadRateRes, err error) {
|
||||
res = new(UploadRateRes)
|
||||
// 获取请求参数
|
||||
rateTime := req.RateTime
|
||||
data := req.Data
|
||||
timestamp := time.Now().Unix()
|
||||
|
||||
// 准备生成签名的参数
|
||||
params := map[string]string{
|
||||
"appid": appid,
|
||||
"data": data,
|
||||
"rate_time": strconv.Itoa(rateTime),
|
||||
"secret": secret,
|
||||
"timestamp": strconv.FormatInt(timestamp, 10),
|
||||
}
|
||||
// 生成签名
|
||||
sign := GenerateSignature(params)
|
||||
|
||||
// 构造请求体
|
||||
payload := map[string]interface{}{
|
||||
"appid": appid,
|
||||
"data": data,
|
||||
"rate_time": rateTime,
|
||||
"timestamp": timestamp,
|
||||
"secret": secret,
|
||||
"sign": sign,
|
||||
}
|
||||
payloadBytes, err := json.Marshal(payload)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
// 发送POST请求
|
||||
resp, err := http.Post("https://www.loctp.com/api/crm/v1/uploadRate", "application/json", bytes.NewBuffer(payloadBytes))
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// 检查响应
|
||||
respBody, err := ioutil.ReadAll(resp.Body)
|
||||
err = json.Unmarshal(respBody, &res)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
// 把 respBody 转化为 UploadRateRes
|
||||
err = json.Unmarshal(respBody, &res)
|
||||
if err != nil {
|
||||
// 处理错误,例如打印或返回错误
|
||||
fmt.Println("Error unmarshalling res:", err)
|
||||
}
|
||||
return res, err
|
||||
}
|
Reference in New Issue
Block a user