This commit is contained in:
panda
2023-09-04 20:31:06 +08:00
parent 3be7c64b58
commit 8934271438
4 changed files with 58 additions and 7 deletions

View File

@@ -90,8 +90,8 @@ gb28181:
sip: tcp:5060 sip: tcp:5060
# 萤石摄像头token # 萤石摄像头token
ys: ys:
appKey: 2db7f777fa6f44bdaf1c20b7f065887c appKey: ""
secret: bf59b1a2168da4b443473efe9b1cf1b0 secret: ""
log: log:
# 日志等级, trace, debug, info, warn, error, fatal # 日志等级, trace, debug, info, warn, error, fatal

View File

@@ -22,7 +22,7 @@ func (ys *Ys) GetDeviceList(pageNum, pageSize int) (devices []Device, total int6
if err != nil { if err != nil {
return nil, 0, err return nil, 0, err
} }
var page Page var page = Page{}
err = tool.InterfaceToStruct(status.Page, &page) err = tool.InterfaceToStruct(status.Page, &page)
if err != nil { if err != nil {
return nil, 0, err return nil, 0, err

View File

@@ -5,19 +5,25 @@ import (
"errors" "errors"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"log"
"net/http" "net/http"
"strings" "strings"
"time" "time"
) )
const ( const (
MASTERACC = 0 //主账号
RAMACC = 1 //子账号
//[用户]获取accessToken //[用户]获取accessToken
ACCESSTOKEN = "https://open.ys7.com/api/lapp/token/get" ACCESSTOKEN = "https://open.ys7.com/api/lapp/token/get"
RAMTOKENGET = "https://open.ys7.com/api/lapp/ram/token/get" //获取子账户AccessToken
) )
type Ys struct { type Ys struct {
AppKey string AppKey string
Secret string Secret string
IsRAM int
AccountID string
AccessToken string AccessToken string
ExpireTime int64 ExpireTime int64
} }
@@ -27,15 +33,41 @@ func (ys *Ys) GetAccessToken() error {
params["appKey"] = ys.AppKey params["appKey"] = ys.AppKey
params["appSecret"] = ys.Secret params["appSecret"] = ys.Secret
ac := &AccessToken{} ac := &AccessToken{}
_, err := ys.requset("POST", ACCESSTOKEN, params, &ac) _, err := ys.requset("POST", ACCESSTOKEN, params, ac)
if err != nil { if err != nil {
return err return err
} }
ys.AccessToken = ac.AccessToken if ys.IsRAM == MASTERACC {
ys.ExpireTime = ac.ExpireTime ys.AccessToken = ac.AccessToken
ys.ExpireTime = ac.ExpireTime
} else {
ys.AccessToken = ac.AccessToken
ac, err = ys.RAMGetAccessToken(ys.AccountID)
if err != nil {
ys.AccessToken = ""
return err
}
ys.AccessToken = ac.AccessToken
ys.ExpireTime = ac.ExpireTime
}
return nil return nil
} }
// RAMGetAccessToken 获取B模式子账户accessToken
func (ys *Ys) RAMGetAccessToken(accountID string) (ac *AccessToken, err error) {
params := make(map[string]interface{})
params["accountId"] = accountID
params["accessToken"] = ys.AccessToken
ac = &AccessToken{}
_, err = ys.requset("POST", RAMTOKENGET, params, ac)
if err != nil {
return nil, err
}
log.Println(*ac)
return ac, nil
}
func (ys *Ys) requset(method, url string, params map[string]interface{}, data interface{}) (status *Status, err error) { func (ys *Ys) requset(method, url string, params map[string]interface{}, data interface{}) (status *Status, err error) {
defer func() { defer func() {
if Rerr := recover(); Rerr != nil { if Rerr := recover(); Rerr != nil {
@@ -79,7 +111,7 @@ func (ys *Ys) requset(method, url string, params map[string]interface{}, data in
func (ys *Ys) authorizeRequset(method, url string, params map[string]interface{}, data interface{}) (status *Status, err error) { func (ys *Ys) authorizeRequset(method, url string, params map[string]interface{}, data interface{}) (status *Status, err error) {
exTime := time.Unix(ys.ExpireTime/1000, 0) exTime := time.Unix(ys.ExpireTime/1000, 0)
if exTime.Unix() < time.Now().Unix() || ys.AccessToken == "" { if exTime.Unix() < time.Now().Unix() {
ys.GetAccessToken() ys.GetAccessToken()
} }
defer func() { defer func() {
@@ -88,6 +120,7 @@ func (ys *Ys) authorizeRequset(method, url string, params map[string]interface{}
return return
} }
}() }()
log.Println("初始化token", *ys)
params["accessToken"] = ys.AccessToken params["accessToken"] = ys.AccessToken
status, err = ys.requset(method, url, params, data) status, err = ys.requset(method, url, params, data)
return return

18
pkg/ys/ys_test.go Normal file
View File

@@ -0,0 +1,18 @@
package ys
import "testing"
func TestYs_GetDeviceList(t *testing.T) {
ys := &Ys{
AppKey: "",
Secret: "",
IsRAM: 0,
AccountID: "",
}
devices, total, err := ys.GetDeviceList(1, 10)
if err != nil {
t.Error(err)
}
t.Log(devices)
t.Log(total)
}