mirror of
https://github.com/lzh-1625/go_process_manager.git
synced 2025-10-29 18:41:52 +08:00
rename service
This commit is contained in:
144
internal/app/logic/config.go
Normal file
144
internal/app/logic/config.go
Normal file
@@ -0,0 +1,144 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"strconv"
|
||||
|
||||
"github.com/lzh-1625/go_process_manager/config"
|
||||
"github.com/lzh-1625/go_process_manager/internal/app/model"
|
||||
"github.com/lzh-1625/go_process_manager/internal/app/repository"
|
||||
)
|
||||
|
||||
type configLogic struct{}
|
||||
|
||||
var (
|
||||
ConfigLogic = new(configLogic)
|
||||
)
|
||||
|
||||
func (c *configLogic) GetSystemConfiguration() []model.SystemConfigurationVo {
|
||||
result := []model.SystemConfigurationVo{}
|
||||
typeElem := reflect.TypeOf(config.CF).Elem()
|
||||
valueElem := reflect.ValueOf(config.CF).Elem()
|
||||
for i := 0; i < typeElem.NumField(); i++ {
|
||||
typeField := typeElem.Field(i)
|
||||
valueField := valueElem.Field(i)
|
||||
defaultValue := typeField.Tag.Get("default")
|
||||
if defaultValue == "-" {
|
||||
continue
|
||||
}
|
||||
var value any
|
||||
switch typeField.Type.Kind() {
|
||||
case reflect.Int64, reflect.Int:
|
||||
value = valueField.Int()
|
||||
case reflect.String:
|
||||
value = valueField.String()
|
||||
case reflect.Bool:
|
||||
value = valueField.Bool()
|
||||
case reflect.Float64:
|
||||
value = valueField.Float()
|
||||
default:
|
||||
continue
|
||||
}
|
||||
result = append(result, model.SystemConfigurationVo{
|
||||
Key: typeField.Name,
|
||||
Value: value,
|
||||
Default: defaultValue,
|
||||
Describe: typeField.Tag.Get("describe"),
|
||||
})
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func (c *configLogic) SetSystemConfiguration(kv map[string]string) error {
|
||||
typeElem := reflect.TypeOf(config.CF).Elem()
|
||||
valueElem := reflect.ValueOf(config.CF).Elem()
|
||||
for i := 0; i < typeElem.NumField(); i++ {
|
||||
typeField := typeElem.Field(i)
|
||||
valueField := valueElem.Field(i)
|
||||
for k, v := range kv {
|
||||
if typeField.Name == k {
|
||||
var err error
|
||||
switch typeField.Type.Kind() {
|
||||
case reflect.String:
|
||||
valueField.SetString(v)
|
||||
case reflect.Bool:
|
||||
value, errV := strconv.ParseBool(v)
|
||||
err = errV
|
||||
if err == nil {
|
||||
valueField.SetBool(value)
|
||||
}
|
||||
case reflect.Float64:
|
||||
value, errV := strconv.ParseFloat(v, 64)
|
||||
err = errV
|
||||
if err == nil {
|
||||
valueField.SetFloat(value)
|
||||
}
|
||||
case reflect.Int64, reflect.Int:
|
||||
value, errV := strconv.ParseInt(v, 10, 64)
|
||||
err = errV
|
||||
if err == nil {
|
||||
valueField.SetInt(value)
|
||||
}
|
||||
default:
|
||||
continue
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = repository.ConfigRepository.SetConfigValue(k, v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// reset system config to default
|
||||
func (c *configLogic) ResetSystemConfiguration() error {
|
||||
typeElem := reflect.TypeOf(config.CF).Elem()
|
||||
valueElem := reflect.ValueOf(config.CF).Elem()
|
||||
for i := 0; i < typeElem.NumField(); i++ {
|
||||
typeField := typeElem.Field(i)
|
||||
valueField := valueElem.Field(i)
|
||||
var err error
|
||||
defaultValue := typeField.Tag.Get("default")
|
||||
if defaultValue == "-" {
|
||||
continue
|
||||
}
|
||||
switch typeField.Type.Kind() {
|
||||
case reflect.String:
|
||||
valueField.SetString(defaultValue)
|
||||
case reflect.Bool:
|
||||
value, errV := strconv.ParseBool(defaultValue)
|
||||
err = errV
|
||||
if err == nil {
|
||||
valueField.SetBool(value)
|
||||
}
|
||||
case reflect.Float64:
|
||||
value, errV := strconv.ParseFloat(defaultValue, 64)
|
||||
err = errV
|
||||
if err == nil {
|
||||
valueField.SetFloat(value)
|
||||
}
|
||||
case reflect.Int64, reflect.Int:
|
||||
value, errV := strconv.ParseInt(defaultValue, 10, 64)
|
||||
err = errV
|
||||
if err == nil {
|
||||
valueField.SetInt(value)
|
||||
}
|
||||
default:
|
||||
continue
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = repository.ConfigRepository.SetConfigValue(typeField.Name, defaultValue)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user