mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 21:50:28 +08:00 
			
		
		
		
	
		
			
	
	
		
			102 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			102 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								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,
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |