Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5f5116a4a1 | |||
| 89542f9475 | |||
| 3333514cff | |||
| c283409b9e | |||
| 207b56e419 | |||
| 69e7893d27 | |||
| 30e530de6d | |||
| a15b442e64 | |||
| ed3bd2bd80 | |||
| 917ae30a86 |
@@ -10,7 +10,7 @@ package main
|
||||
import (
|
||||
"log"
|
||||
|
||||
"gitee.com/LifetimeNine/singularity-rpc-client/pkg/rpc"
|
||||
"git.lifetime-nine.cn/singularity/rpc-client/pkg/rpc"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
8
go.mod
8
go.mod
@@ -1,7 +1,11 @@
|
||||
module gitee.com/LifetimeNine/singularity-rpc-client
|
||||
module git.lifetime-nine.cn/singularity/rpc-client
|
||||
|
||||
go 1.24.3
|
||||
|
||||
require golang.org/x/net v0.43.0
|
||||
|
||||
require golang.org/x/text v0.28.0 // indirect
|
||||
require (
|
||||
go.uber.org/multierr v1.10.0 // indirect
|
||||
go.uber.org/zap v1.27.0 // indirect
|
||||
golang.org/x/text v0.28.0 // indirect
|
||||
)
|
||||
|
||||
4
go.sum
4
go.sum
@@ -1,3 +1,7 @@
|
||||
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
|
||||
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
|
||||
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
||||
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
|
||||
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
|
||||
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
|
||||
|
||||
@@ -5,16 +5,6 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
var device *Device
|
||||
|
||||
// 获取设备相关RPC类
|
||||
func GetDevice() *Device {
|
||||
if device == nil {
|
||||
device = &Device{}
|
||||
}
|
||||
return device
|
||||
}
|
||||
|
||||
// 设备相关RPC
|
||||
type Device struct{}
|
||||
|
||||
@@ -161,18 +151,78 @@ func (d *Device) UpdateVersion(deviceId uint32, versionNumber uint) error {
|
||||
}
|
||||
|
||||
// 保存升级结果
|
||||
func (d *Device) SaveUpgradeResult(upgradeTaskId uint32, status uint8, finishTime time.Time) error {
|
||||
func (d *Device) SaveUpgradeResult(upgradeTaskId uint32, result uint8, finishTime time.Time) error {
|
||||
body := map[string]any{
|
||||
"upgrade_task_id": upgradeTaskId,
|
||||
"status": status,
|
||||
"result": result,
|
||||
"finish_time": finishTime.Format(time.DateTime),
|
||||
}
|
||||
result := &Result[any]{}
|
||||
if err := GetRequest().Send("device.save_upgrade_result", body, result); err != nil {
|
||||
res := &Result[any]{}
|
||||
if err := GetRequest().Send("device.save_upgrade_result", body, res); err != nil {
|
||||
return err
|
||||
}
|
||||
if result.Code != 0 {
|
||||
return fmt.Errorf("%s", result.Message)
|
||||
if res.Code != 0 {
|
||||
return fmt.Errorf("%s", res.Message)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 获取语音助手参数列表
|
||||
func (d *Device) GetVoiceAssistantList() ([]VoiceAssistant, error) {
|
||||
body := map[string]any{}
|
||||
result := &Result[[]VoiceAssistant]{}
|
||||
if err := GetRequest().Send("device.get_voice_assistant_list", body, result); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if result.Code != 0 {
|
||||
return nil, fmt.Errorf("%s", result.Message)
|
||||
}
|
||||
return result.Data, nil
|
||||
}
|
||||
|
||||
// 获取设备语音助手参数
|
||||
func (d *Device) GetVoiceAssistant(deviceId uint32) (*VoiceAssistant, error) {
|
||||
body := map[string]any{
|
||||
"device_id": deviceId,
|
||||
}
|
||||
result := &Result[*VoiceAssistant]{}
|
||||
if err := GetRequest().Send("device.get_voice_assistant", body, result); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if result.Code != 0 {
|
||||
return nil, fmt.Errorf("%s", result.Message)
|
||||
}
|
||||
return result.Data, nil
|
||||
}
|
||||
|
||||
// 记录设备操作日志
|
||||
func (d *Device) RecordOperationLog(deviceId uint32, platform DeviceOperationLogPlatform, attribute string, value any, valueType uint8, result DeviceOperationLogResult, reason *string, userId *uint32) error {
|
||||
body := map[string]any{
|
||||
"device_id": deviceId,
|
||||
"platform": platform,
|
||||
"attribute": attribute,
|
||||
"value": value,
|
||||
"value_type": valueType,
|
||||
"result": result,
|
||||
"reason": reason,
|
||||
"user_id": userId,
|
||||
}
|
||||
res := &Result[any]{}
|
||||
if err := GetRequest().Send("device.record_operation_log", body, res); err != nil {
|
||||
return err
|
||||
}
|
||||
if res.Code != 0 {
|
||||
return fmt.Errorf("%s", res.Message)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var device *Device
|
||||
|
||||
// 获取设备相关RPC类
|
||||
func GetDevice() *Device {
|
||||
if device == nil {
|
||||
device = &Device{}
|
||||
}
|
||||
return device
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"golang.org/x/net/http2"
|
||||
)
|
||||
|
||||
@@ -24,6 +25,7 @@ type Request struct {
|
||||
port uint16
|
||||
rootCertPath string
|
||||
client *http.Client
|
||||
logger *zap.SugaredLogger
|
||||
}
|
||||
|
||||
// 发送请求
|
||||
@@ -58,11 +60,19 @@ func (r *Request) Send(methodName string, body any, responseBody any) error {
|
||||
return fmt.Errorf("response body json unmarshal fail: %v", err)
|
||||
}
|
||||
|
||||
if r.logger != nil {
|
||||
r.logger.Debugf("method: %s, request: %s, response: %s",
|
||||
methodName,
|
||||
string(bodyByte),
|
||||
string(responseBodyByte),
|
||||
)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// 初始化
|
||||
func Initiate(host string, port uint16, rootCertPath string) error {
|
||||
func Initiate(host string, port uint16, rootCertPath string, logger *zap.SugaredLogger) error {
|
||||
rootCert, err := os.ReadFile(rootCertPath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cert file read fail")
|
||||
@@ -70,6 +80,7 @@ func Initiate(host string, port uint16, rootCertPath string) error {
|
||||
defaultRequest.host = host
|
||||
defaultRequest.port = port
|
||||
defaultRequest.rootCertPath = rootCertPath
|
||||
defaultRequest.logger = logger
|
||||
|
||||
certPool := x509.NewCertPool()
|
||||
certPool.AppendCertsFromPEM(rootCert)
|
||||
|
||||
46
pkg/rpc/server.go
Normal file
46
pkg/rpc/server.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package rpc
|
||||
|
||||
import "fmt"
|
||||
|
||||
// 服务相关RPC
|
||||
type Server struct{}
|
||||
|
||||
// 获取Websocket签名信息
|
||||
func (s *Server) GetWebsocketSignData(sign string) (*WebsocketSignData, error) {
|
||||
body := map[string]any{
|
||||
"sign": sign,
|
||||
}
|
||||
result := &Result[WebsocketSignData]{}
|
||||
if err := GetRequest().Send("server.get_websocket_sign", body, result); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if result.Code != 0 {
|
||||
return nil, fmt.Errorf("%s", result.Message)
|
||||
}
|
||||
return &result.Data, nil
|
||||
}
|
||||
|
||||
// 删除Websocket签名
|
||||
func (s *Server) DeleteWebsocketSign(sign string) error {
|
||||
body := map[string]any{
|
||||
"sign": sign,
|
||||
}
|
||||
result := &Result[WebsocketSignData]{}
|
||||
if err := GetRequest().Send("server.get_websocket_sign", body, result); err != nil {
|
||||
return err
|
||||
}
|
||||
if result.Code != 0 {
|
||||
return fmt.Errorf("%s", result.Message)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var server *Server
|
||||
|
||||
// 获取服务相关RPC类
|
||||
func GetServer() *Server {
|
||||
if server == nil {
|
||||
server = &Server{}
|
||||
}
|
||||
return server
|
||||
}
|
||||
@@ -61,8 +61,53 @@ type DeviceAttributeOption struct {
|
||||
Flag uint8 `json:"flag"`
|
||||
Field string `json:"field"`
|
||||
Readonly bool `json:"readonly"`
|
||||
AllowItem *[]int `json:"allow_item,omitempty"`
|
||||
AllowItem *[]uint8 `json:"allow_item,omitempty"`
|
||||
Min *uint32 `json:"min,omitempty"`
|
||||
Max *uint32 `json:"max,omitempty"`
|
||||
} `json:"attribute"`
|
||||
}
|
||||
|
||||
// Websocket签名数据
|
||||
type WebsocketSignData struct {
|
||||
UserId uint32 `json:"user_id"`
|
||||
Platform string `json:"platform"`
|
||||
}
|
||||
|
||||
// 语音助手数据
|
||||
type VoiceAssistant struct {
|
||||
Id uint32 `json:"id"`
|
||||
Type uint8 `json:"type"`
|
||||
OnlineStatus uint8 `json:"online_status"`
|
||||
BemFaEnable uint8 `json:"bem_fa_enable"`
|
||||
BemFaName string `json:"bem_fa_name"`
|
||||
}
|
||||
|
||||
// 设备操作日志平台
|
||||
type DeviceOperationLogPlatform uint8
|
||||
|
||||
const (
|
||||
// 设备操作日志平台 - 管理后台
|
||||
DeviceOperationLogPlatformBackstage DeviceOperationLogPlatform = iota + 1
|
||||
// 设备操作日志平台 - 语音助手
|
||||
DeviceOperationLogPlatformAssistant
|
||||
// 设备操作日志平台 - 设备
|
||||
DeviceOperationLogPlatformDevice
|
||||
// 设备操作日志平台 - APP
|
||||
DeviceOperationLogPlatformApp
|
||||
// 设备操作日志平台 - 自动化
|
||||
DeviceOperationLogPlatformAutomation
|
||||
// 设备操作日志平台 - 桌面端
|
||||
DeviceOperationLogPlatformDesktop
|
||||
// 设备操作日志平台 - API
|
||||
DeviceOperationLogPlatformAPI
|
||||
)
|
||||
|
||||
// 设备操作日志结果
|
||||
type DeviceOperationLogResult uint8
|
||||
|
||||
const (
|
||||
// 设备操作日志结果 - 成功
|
||||
DeviceOperationLogResultSuccess DeviceOperationLogResult = iota + 1
|
||||
// 设备操作日志结果 - 失败
|
||||
DeviceOperationLogResultFail
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user