mirror of
https://github.com/lzh-1625/go_process_manager.git
synced 2025-10-05 16:06:51 +08:00
初次提交
This commit is contained in:
94
api/config.go
Normal file
94
api/config.go
Normal file
@@ -0,0 +1,94 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"msm/config"
|
||||
"msm/dao"
|
||||
"msm/model"
|
||||
"msm/service/es"
|
||||
"reflect"
|
||||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type configApi struct{}
|
||||
|
||||
var ConfigApi = new(configApi)
|
||||
|
||||
func (c *configApi) GetSystemConfiguration(ctx *gin.Context) {
|
||||
typeElem := reflect.TypeOf(config.CF).Elem()
|
||||
valueElem := reflect.ValueOf(config.CF).Elem()
|
||||
result := []model.SystemConfigurationResp{}
|
||||
for i := 0; i < typeElem.NumField(); i++ {
|
||||
typeField := typeElem.Field(i)
|
||||
valueField := valueElem.Field(i)
|
||||
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.SystemConfigurationResp{
|
||||
Key: typeField.Name,
|
||||
Value: value,
|
||||
Default: typeField.Tag.Get("default"),
|
||||
Describe: typeField.Tag.Get("describe"),
|
||||
})
|
||||
}
|
||||
rOk(ctx, "获取系统配置成功", result)
|
||||
}
|
||||
|
||||
func (c *configApi) SetSystemConfiguration(ctx *gin.Context) {
|
||||
data := map[string]string{}
|
||||
errCheck(ctx, ctx.ShouldBindJSON(&data) != nil, "请求参数错误")
|
||||
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 data {
|
||||
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
|
||||
}
|
||||
errCheck(ctx, err != nil, k+"类似错误")
|
||||
errCheck(ctx, dao.ConfigDao.SetConfigValue(k, v) != nil, "修改配置失败")
|
||||
}
|
||||
}
|
||||
}
|
||||
rOk(ctx, "修改配置成功", nil)
|
||||
}
|
||||
|
||||
func (c *configApi) EsConfigReload(ctx *gin.Context) {
|
||||
errCheck(ctx, !es.InitEs(), "es连接失败,请检查是否启用es或账号密码是否存在错误")
|
||||
rOk(ctx, "已连接上es", nil)
|
||||
}
|
Reference in New Issue
Block a user