Files
go_process_manager/api/config.go
liuzhihang1 831ea9889f 初次提交
2024-06-26 20:45:23 +08:00

95 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
}