[系统设置]增加界面设置,可以定制系统名称等

This commit is contained in:
GoEdgeLab
2020-11-22 15:34:13 +08:00
parent 683d536d82
commit 37313cfe68
24 changed files with 367 additions and 91 deletions

View File

@@ -0,0 +1,101 @@
package uimanager
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAdmin/internal/rpc"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/logs"
"reflect"
"sync"
)
var sharedUIConfig *UIConfig = nil
var locker sync.Mutex
const (
UISettingName = "adminUIConfig"
)
type UIConfig struct {
ProductName string `json:"productName"` // 产品名
AdminSystemName string `json:"adminSystemName"` // 管理员系统名称
ShowOpenSourceInfo bool `json:"showOpenSourceInfo"` // 是否显示开源信息
ShowVersion bool `json:"showVersion"` // 是否显示版本号
Version string `json:"version"` // 显示的版本号
}
func LoadUIConfig() (*UIConfig, error) {
locker.Lock()
defer locker.Unlock()
config, err := loadUIConfig()
if err != nil {
return nil, err
}
v := reflect.Indirect(reflect.ValueOf(config)).Interface().(UIConfig)
return &v, nil
}
func UpdateUIConfig(uiConfig *UIConfig) error {
locker.Lock()
defer locker.Unlock()
var rpcClient, err = rpc.SharedRPC()
if err != nil {
return err
}
valueJSON, err := json.Marshal(uiConfig)
if err != nil {
return err
}
_, err = rpcClient.SysSettingRPC().UpdateSysSetting(rpcClient.Context(0), &pb.UpdateSysSettingRequest{
Code: UISettingName,
ValueJSON: valueJSON,
})
if err != nil {
return err
}
sharedUIConfig = uiConfig
return nil
}
func loadUIConfig() (*UIConfig, error) {
if sharedUIConfig != nil {
return sharedUIConfig, nil
}
var rpcClient, err = rpc.SharedRPC()
if err != nil {
return nil, err
}
resp, err := rpcClient.SysSettingRPC().ReadSysSetting(rpcClient.Context(0), &pb.ReadSysSettingRequest{
Code: UISettingName,
})
if err != nil {
return nil, err
}
if len(resp.ValueJSON) == 0 {
sharedUIConfig = defaultUIConfig()
return sharedUIConfig, nil
}
config := &UIConfig{}
err = json.Unmarshal(resp.ValueJSON, config)
if err != nil {
logs.Println("[UI_MANAGER]" + err.Error())
sharedUIConfig = defaultUIConfig()
return sharedUIConfig, nil
}
sharedUIConfig = config
return sharedUIConfig, nil
}
func defaultUIConfig() *UIConfig {
return &UIConfig{
ProductName: "GoEdge",
AdminSystemName: "GoEdge管理员系统",
ShowOpenSourceInfo: true,
ShowVersion: true,
}
}

View File

@@ -0,0 +1,29 @@
package uimanager
import (
_ "github.com/iwind/TeaGo/bootstrap"
"testing"
"time"
)
func TestLoadSecurityConfig(t *testing.T) {
for i := 0; i < 10; i++ {
before := time.Now()
config, err := LoadUIConfig()
if err != nil {
t.Fatal(err)
}
t.Log(time.Since(before).Seconds()*1000, "ms")
t.Logf("%p", config)
}
}
func TestLoadUIConfig2(t *testing.T) {
for i := 0; i < 10; i++ {
config, err := LoadUIConfig()
if err != nil {
t.Fatal(err)
}
t.Log(config)
}
}