1
0
Files
omc_api/features/sys_config/api_sys_config.go
2023-10-10 10:56:44 +08:00

231 lines
5.6 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 sysconfig
import (
"fmt"
"net/http"
"strings"
"ems.agt/features/sys_config/model"
"ems.agt/features/sys_config/service"
"ems.agt/lib/core/utils/ctx"
"ems.agt/lib/core/utils/parse"
"ems.agt/lib/core/vo/result"
"ems.agt/lib/midware"
"ems.agt/lib/services"
"ems.agt/restagent/config"
)
// 参数配置信息接口添加到路由
func Routers() []services.RouterItem {
// 实例化控制层 SysConfigApi 结构体
var apis = &SysConfigApi{
sysConfigService: service.NewServiceSysConfig,
}
rs := [...]services.RouterItem{
{
Method: "GET",
Pattern: "/configs",
Handler: apis.List,
Middleware: midware.Authorize(nil),
},
{
Method: "GET",
Pattern: "/config/{configId}",
Handler: apis.Info,
Middleware: midware.Authorize(nil),
},
{
Method: "POST",
Pattern: "/config",
Handler: apis.Add,
Middleware: midware.Authorize(nil),
},
{
Method: "PUT",
Pattern: "/config",
Handler: apis.Edit,
Middleware: midware.Authorize(nil),
},
{
Method: "DELETE",
Pattern: "/config/{configIds}",
Handler: apis.Remove,
Middleware: midware.Authorize(nil),
},
{
Method: "PUT",
Pattern: "/config/refreshCache",
Handler: apis.RefreshCache,
Middleware: midware.Authorize(nil),
},
{
Method: "GET",
Pattern: "/config/configKey/{configKey}",
Handler: apis.ConfigKey,
Middleware: midware.Authorize(nil),
},
// 添加更多的 Router 对象...
}
// 生成两组前缀路由
rsPrefix := []services.RouterItem{}
for _, v := range rs {
path := "/configManage/{apiVersion}" + v.Pattern
// 固定前缀
v.Pattern = config.DefaultUriPrefix + path
rsPrefix = append(rsPrefix, v)
// 可配置
v.Pattern = config.UriPrefix + path
rsPrefix = append(rsPrefix, v)
}
return rsPrefix
}
// 参数配置信息
//
// PATH /configManage
type SysConfigApi struct {
// 参数配置服务
sysConfigService *service.ServiceSysConfig
}
// 参数配置列表
//
// GET /list
func (s *SysConfigApi) List(w http.ResponseWriter, r *http.Request) {
querys := ctx.QueryMap(r)
data := s.sysConfigService.SelectConfigPage(querys)
ctx.JSON(w, 200, result.Ok(data))
}
// 参数配置信息
//
// GET /:configId
func (s *SysConfigApi) Info(w http.ResponseWriter, r *http.Request) {
configId := ctx.Param(r, "configId")
if configId == "" {
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
return
}
data := s.sysConfigService.SelectConfigById(configId)
if data.ConfigID == configId {
ctx.JSON(w, 200, result.OkData(data))
return
}
ctx.JSON(w, 200, result.Err(nil))
}
// 参数配置新增
//
// POST /
func (s *SysConfigApi) Add(w http.ResponseWriter, r *http.Request) {
var body model.SysConfig
err := ctx.ShouldBindJSON(r, &body)
if err != nil || body.ConfigID != "" {
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
return
}
// 检查属性值唯一
uniqueConfigKey := s.sysConfigService.CheckUniqueConfigKey(body.ConfigKey, "")
if !uniqueConfigKey {
msg := fmt.Sprintf("参数配置新增【%s】失败参数键名已存在", body.ConfigKey)
ctx.JSON(w, 200, result.ErrMsg(msg))
return
}
body.CreateBy = ctx.LoginUserToUserName(r)
insertId := s.sysConfigService.InsertConfig(body)
if insertId != "" {
ctx.JSON(w, 200, result.Ok(nil))
return
}
ctx.JSON(w, 200, result.Err(nil))
}
// 参数配置修改
//
// PUT /
func (s *SysConfigApi) Edit(w http.ResponseWriter, r *http.Request) {
var body model.SysConfig
err := ctx.ShouldBindJSON(r, &body)
if err != nil || body.ConfigID == "" {
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
return
}
// 检查属性值唯一
uniqueConfigKey := s.sysConfigService.CheckUniqueConfigKey(body.ConfigKey, body.ConfigID)
if !uniqueConfigKey {
msg := fmt.Sprintf("参数配置修改【%s】失败参数键名已存在", body.ConfigKey)
ctx.JSON(w, 200, result.ErrMsg(msg))
return
}
// 检查是否存在
config := s.sysConfigService.SelectConfigById(body.ConfigID)
if config.ConfigID != body.ConfigID {
ctx.JSON(w, 200, result.ErrMsg("没有权限访问参数配置数据!"))
return
}
body.UpdateBy = ctx.LoginUserToUserName(r)
rows := s.sysConfigService.UpdateConfig(body)
if rows > 0 {
ctx.JSON(w, 200, result.Ok(nil))
return
}
ctx.JSON(w, 200, result.Err(nil))
}
// 参数配置删除
//
// DELETE /:configIds
func (s *SysConfigApi) Remove(w http.ResponseWriter, r *http.Request) {
configIds := ctx.Param(r, "configIds")
if configIds == "" {
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
return
}
// 处理字符转id数组后去重
ids := strings.Split(configIds, ",")
uniqueIDs := parse.RemoveDuplicates(ids)
if len(uniqueIDs) <= 0 {
ctx.JSON(w, 200, result.Err(nil))
return
}
rows, err := s.sysConfigService.DeleteConfigByIds(uniqueIDs)
if err != nil {
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
return
}
msg := fmt.Sprintf("删除成功:%d", rows)
ctx.JSON(w, 200, result.OkMsg(msg))
}
// 参数配置刷新缓存
//
// PUT /refreshCache
func (s *SysConfigApi) RefreshCache(w http.ResponseWriter, r *http.Request) {
s.sysConfigService.ResetConfigCache()
ctx.JSON(w, 200, result.Ok(nil))
}
// 参数配置根据参数键名
//
// GET /configKey/:configKey
func (s *SysConfigApi) ConfigKey(w http.ResponseWriter, r *http.Request) {
configKey := ctx.Param(r, "configKey")
if configKey == "" {
ctx.JSON(w, 400, result.CodeMsg(400, "参数错误"))
return
}
key := s.sysConfigService.SelectConfigValueByKey(configKey)
if key != "" {
ctx.JSON(w, 200, result.OkData(key))
return
}
ctx.JSON(w, 200, result.Err(nil))
}