618 lines
16 KiB
Go
618 lines
16 KiB
Go
package http
|
||
|
||
import (
|
||
"encoding/json"
|
||
"fmt"
|
||
"go-common/app/admin/main/config/model"
|
||
"go-common/library/ecode"
|
||
"go-common/library/log"
|
||
bm "go-common/library/net/http/blademaster"
|
||
"go-common/library/time"
|
||
"strconv"
|
||
"strings"
|
||
|
||
"github.com/jinzhu/gorm"
|
||
)
|
||
|
||
func createConfig(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.CreateConfigReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
user := user(c)
|
||
if _, err = svr.AuthApp(c, user, c.Request.Header.Get("Cookie"), v.TreeID); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
conf := &model.Config{}
|
||
conf.Operator = user
|
||
conf.Name = v.Name
|
||
conf.Mark = v.Mark
|
||
conf.Comment = v.Comment
|
||
conf.State = v.State
|
||
conf.From = v.From
|
||
c.JSON(nil, svr.CreateConf(conf, v.TreeID, v.Env, v.Zone, v.SkipLint))
|
||
}
|
||
|
||
func lintConfig(c *bm.Context) {
|
||
var req struct {
|
||
Name string `form:"name" validate:"required"`
|
||
Comment string `form:"comment" validate:"required"`
|
||
}
|
||
if err := c.Bind(&req); err != nil {
|
||
// ignore error
|
||
return
|
||
}
|
||
c.JSON(svr.LintConfig(req.Name, req.Comment))
|
||
}
|
||
|
||
func updateConfValue(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.UpdateConfValueReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
user := user(c)
|
||
if _, err = svr.AuthApps(c, user, c.Request.Header.Get("Cookie")); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
conf := &model.Config{}
|
||
conf.Name = v.Name
|
||
conf.ID = v.ID
|
||
conf.Operator = user
|
||
conf.Mark = v.Mark
|
||
conf.Comment = v.Comment
|
||
conf.State = v.State
|
||
conf.Mtime = time.Time(v.Mtime)
|
||
var configs *model.Config
|
||
configs, err = svr.Value(v.ID)
|
||
if err != nil {
|
||
res["message"] = "未找到源文件"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
if v.NewCommon > 0 {
|
||
common := &model.CommonConf{}
|
||
common2 := &model.CommonConf{}
|
||
if err = svr.DB.Where("id = ?", configs.From).First(common).Error; err != nil {
|
||
res["message"] = "未找到公共源文件"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
if err = svr.DB.Where("team_id = ? and name = ? and state = 2 and id = ?", common.TeamID, common.Name, v.NewCommon).Order("id desc").First(common2).Error; err != nil {
|
||
res["message"] = "未找到最新的公共文件"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
conf.From = v.NewCommon
|
||
}
|
||
//验证是否最新源文件
|
||
newConfig := &model.Config{}
|
||
if err = svr.DB.Where("app_id = ? and name = ?", configs.AppID, configs.Name).Order("id desc").First(newConfig).Error; err != nil {
|
||
res["message"] = "未找到最新文件"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
//默认验证ignore 0
|
||
if newConfig.ID != v.ID && v.Ignore == 0 && user != newConfig.Operator {
|
||
err = ecode.ConfigNotNow
|
||
res["message"] = fmt.Sprintf("当前源文件:(%d)有最新源文件版本(%d)操作人:%s是否继续提交?", v.ID, newConfig.ID, newConfig.Operator)
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(nil, svr.UpdateConfValue(conf, v.SkipLint))
|
||
}
|
||
|
||
func value(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ValueReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
var TreeID int64
|
||
TreeID, err = svr.ConfigGetTreeID(v.ConfigID)
|
||
if err != nil {
|
||
res["message"] = "未找到tree_id"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
if _, err = svr.AuthApp(c, user(c), c.Request.Header.Get("Cookie"), TreeID); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.Value(v.ConfigID))
|
||
}
|
||
|
||
func configsByBuildID(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ConfigsByBuildIDReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if _, err = svr.AuthApps(c, user(c), c.Request.Header.Get("Cookie")); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.ConfigsByBuildID(v.BuildID))
|
||
}
|
||
|
||
func configsByTagID(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ConfigsByTagIDReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if _, err = svr.AuthApps(c, user(c), c.Request.Header.Get("Cookie")); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.ConfigsByTagID(v.TagID))
|
||
}
|
||
|
||
func configsByAppName(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ConfigsByAppNameReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if _, err = svr.AuthApp(c, user(c), c.Request.Header.Get("Cookie"), v.TreeID); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.ConfigsByAppName(v.AppName, v.Env, v.Zone, v.TreeID, 0))
|
||
}
|
||
|
||
func configSearchAll(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ConfigSearchAllReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
nodes, err := svr.AuthApps(c, user(c), c.Request.Header.Get("Cookie"))
|
||
if err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.ConfigSearchAll(c, v.Env, v.Zone, v.Like, nodes))
|
||
}
|
||
|
||
func configSearchApp(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ConfigSearchAppReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if _, err = svr.AuthApp(c, user(c), c.Request.Header.Get("Cookie"), v.TreeID); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.ConfigSearchApp(c, v.AppName, v.Env, v.Zone, v.Like, v.BuildID, v.TreeID))
|
||
}
|
||
|
||
func configsByName(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ConfigsByNameReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if _, err = svr.AuthApp(c, user(c), c.Request.Header.Get("Cookie"), v.TreeID); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.ConfigsByTree(v.TreeID, v.Env, v.Zone, v.Name))
|
||
}
|
||
|
||
func configs(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ConfigsReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if _, err = svr.AuthApp(c, user(c), c.Request.Header.Get("Cookie"), v.TreeID); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.Configs(v.AppName, v.Env, v.Zone, v.BuildID, v.TreeID))
|
||
}
|
||
|
||
func configRefs(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ConfigRefsReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if _, err = svr.AuthApp(c, user(c), c.Request.Header.Get("Cookie"), v.TreeID); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.ConfigRefs(v.AppName, v.Env, v.Zone, v.BuildID, v.TreeID))
|
||
}
|
||
|
||
func namesByAppName(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.NamesByAppNameReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if _, err = svr.AuthApp(c, user(c), c.Request.Header.Get("Cookie"), v.TreeID); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.NamesByAppTree(v.AppName, v.Env, v.Zone, v.TreeID))
|
||
}
|
||
|
||
func diff(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.DiffReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if _, err = svr.AuthApps(c, user(c), c.Request.Header.Get("Cookie")); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.Diff(v.ConfigID, v.BuildID))
|
||
}
|
||
|
||
func configDel(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ConfigDelReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if _, err = svr.AuthApps(c, user(c), c.Request.Header.Get("Cookie")); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(nil, svr.ConfigDel(v.ConfigID))
|
||
}
|
||
|
||
func configBuildInfos(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ConfigBuildInfosReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if _, err = svr.AuthApp(c, user(c), c.Request.Header.Get("Cookie"), v.TreeID); err != nil {
|
||
res["message"] = "服务树权限不足"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.BuildConfigInfos(v.AppName, v.Env, v.Zone, v.BuildID, v.TreeID))
|
||
}
|
||
|
||
func configUpdate(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.ConfigUpdateReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
app := &model.App{}
|
||
if err = svr.DB.Where("name = ? and env = ? and zone = ? and tree_id = ? and token = ?", v.AppName, v.Env, v.Zone, v.TreeID, v.Token).First(app).Error; err != nil {
|
||
res["message"] = "参数不正确,未找到该服务"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
var obj []map[string]string
|
||
err = json.Unmarshal([]byte(v.Data), &obj)
|
||
tx := svr.DB.Begin()
|
||
for _, val := range obj {
|
||
if len(val["name"]) > 0 {
|
||
config := &model.Config{}
|
||
if err = tx.Where("app_id = ? and name = ? and state = 1", app.ID, val["name"]).First(config).Error; err != nil {
|
||
if err != gorm.ErrRecordNotFound {
|
||
c.JSON(nil, err)
|
||
tx.Rollback()
|
||
return
|
||
}
|
||
} else {
|
||
//把老的更新了再加新的
|
||
ups := map[string]interface{}{
|
||
"state": 2,
|
||
}
|
||
if err = tx.Model(&model.App{}).Where("id = ? ", config.ID).Updates(ups).Error; err != nil {
|
||
c.JSON(nil, err)
|
||
tx.Rollback()
|
||
return
|
||
}
|
||
}
|
||
//加新的
|
||
m := &model.Config{
|
||
AppID: app.ID,
|
||
Name: val["name"],
|
||
Comment: val["comment"],
|
||
State: 2,
|
||
Mark: val["mark"],
|
||
Operator: v.User,
|
||
}
|
||
db := tx.Create(m)
|
||
if err = db.Error; err != nil {
|
||
res["message"] = "创建失败"
|
||
c.JSONMap(res, err)
|
||
tx.Rollback()
|
||
return
|
||
}
|
||
} else {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
tx.Rollback()
|
||
return
|
||
}
|
||
}
|
||
tx.Commit()
|
||
c.JSON(nil, err)
|
||
}
|
||
|
||
func tagUpdate(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.TagUpdateReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if len(strings.TrimSpace(v.Build)) == 0 {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
app := &model.App{}
|
||
if err = svr.DB.Where("name = ? and env = ? and zone = ? and tree_id = ? and token = ?", v.AppName, v.Env, v.Zone, v.TreeID, v.Token).First(app).Error; err != nil {
|
||
res["message"] = "参数不正确,未找到该服务"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
confs := []*model.Config{}
|
||
tags := &model.Tag{}
|
||
tag := &model.Tag{}
|
||
build := &model.Build{}
|
||
tagConfigs := []*model.Config{}
|
||
var in []string
|
||
var in2 []string
|
||
var nameString string
|
||
tmp := make(map[string]struct{})
|
||
if v.ConfigIDs == "" && v.Names == "" {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
} else if v.Names != "" {
|
||
in = strings.Split(v.Names, ",")
|
||
if err = svr.DB.Select("max(id) as id,name").Where("app_id = ? and state = 2 and is_delete = 0 and name in (?)", app.ID, in).Group("name").Find(&confs).Error; err != nil {
|
||
res["message"] = "未找到发版文件"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
for _, vv := range confs {
|
||
if len(nameString) > 0 {
|
||
nameString = nameString + ","
|
||
}
|
||
nameString = nameString + strconv.FormatInt(vv.ID, 10)
|
||
}
|
||
tag.ConfigIDs = nameString
|
||
} else if v.ConfigIDs != "" {
|
||
in = strings.Split(v.ConfigIDs, ",")
|
||
if err = svr.DB.Where("app_id = ? and state = 2 and is_delete = 0 and id in (?)", app.ID, in).Find(&confs).Error; err != nil {
|
||
res["message"] = "未找到发版文件"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
tag.ConfigIDs = v.ConfigIDs
|
||
}
|
||
if v.Names != "" && v.Increment == 1 {
|
||
if err = svr.DB.Where("app_id = ? and name = ?", app.ID, v.Build).Order("id desc").First(build).Error; err != nil {
|
||
res["message"] = "未找到对应的build"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
if err = svr.DB.Where("app_id = ? and build_id = ?", app.ID, build.ID).Order("id desc").First(tags).Error; err != nil {
|
||
res["message"] = "未找到对应的tag"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
in2 = strings.Split(tags.ConfigIDs, ",")
|
||
if err = svr.DB.Where("app_id = ? and state = 2 and id in (?)", app.ID, in2).Find(&tagConfigs).Error; err != nil {
|
||
res["message"] = "未找到tag中的文件"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
for _, vv := range tagConfigs {
|
||
tss := 0
|
||
for _, vvv := range confs {
|
||
if vv.Name == vvv.Name {
|
||
tss = 1
|
||
}
|
||
}
|
||
if tss != 1 {
|
||
if len(nameString) > 0 {
|
||
nameString = nameString + ","
|
||
}
|
||
nameString = nameString + strconv.FormatInt(vv.ID, 10)
|
||
}
|
||
}
|
||
tag.ConfigIDs = nameString
|
||
} else {
|
||
if len(confs) != len(in) {
|
||
res["message"] = "发版数据不符"
|
||
c.JSONMap(res, ecode.RequestErr)
|
||
return
|
||
}
|
||
for _, vv := range confs {
|
||
if _, ok := tmp[vv.Name]; !ok {
|
||
tmp[vv.Name] = struct{}{}
|
||
}
|
||
}
|
||
if len(tmp) != len(confs) {
|
||
res["message"] = "有重复的文件名"
|
||
c.JSONMap(res, ecode.RequestErr)
|
||
return
|
||
}
|
||
}
|
||
tag.Operator = v.User
|
||
tag.Mark = v.Mark
|
||
if v.Force == 1 {
|
||
tag.Force = 1
|
||
}
|
||
c.JSON(nil, svr.UpdateTag(c, v.TreeID, v.Env, v.Zone, v.Build, tag))
|
||
}
|
||
|
||
func canalTagUpdate(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.CanalTagUpdateReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if v.Force != 1 {
|
||
v.Force = 0
|
||
}
|
||
if len(strings.TrimSpace(v.Build)) == 0 {
|
||
c.JSON(nil, ecode.RequestErr)
|
||
return
|
||
}
|
||
app := &model.App{}
|
||
if err = svr.DB.Where("name = ? and env = ? and zone = ? and tree_id = ? and token = ?", v.AppName, v.Env, v.Zone, v.TreeID, v.Token).First(app).Error; err != nil {
|
||
res["message"] = "参数不正确,未找到该服务"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
confs := []*model.Config{}
|
||
configs := []*model.Config{}
|
||
tags := &model.Tag{}
|
||
tag := &model.Tag{}
|
||
build := &model.Build{}
|
||
tagConfigs := []*model.Config{}
|
||
var in []string
|
||
var in2 []string
|
||
var nameString string
|
||
tmp := make(map[string]struct{})
|
||
in = strings.Split(v.ConfigIDs, ",")
|
||
if err = svr.DB.Where("app_id = ? and state = 2 and id in(?)", app.ID, in).Find(&configs).Error; err != nil {
|
||
res["message"] = "未找到文件"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
if len(configs) != len(in) {
|
||
res["message"] = fmt.Sprintf("数据不匹配,传的数据为(%v)条,查到的数据为(%v)条,app_id(%v),config_ids(%v),in(%v)", len(in), len(configs), app.ID, v.ConfigIDs, in)
|
||
err = ecode.RequestErr
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
if err = svr.DB.Where("app_id = ? and name = ?", app.ID, v.Build).Order("id desc").First(build).Error; err != nil {
|
||
res["message"] = "未找到对应的build"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
if err = svr.DB.Where("app_id = ? and build_id = ?", app.ID, build.ID).Order("id desc").First(tags).Error; err != nil {
|
||
res["message"] = "未找到对应的tag"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
in2 = strings.Split(tags.ConfigIDs, ",")
|
||
if err = svr.DB.Where("app_id = ? and state = 2 and id in (?)", app.ID, in2).Find(&tagConfigs).Error; err != nil {
|
||
res["message"] = "未找到tag中的文件"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
if err = svr.DB.Select("id,app_id,name,`from`,state,mark,operator,ctime,mtime").Where(in2).Find(&confs).Error; err != nil {
|
||
log.Error("ConfigsByIDs(%v) error(%v)", in2, err)
|
||
res["message"] = "config文件未找到"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
for _, val := range confs {
|
||
for _, vv := range configs {
|
||
if val.Name == vv.Name {
|
||
if len(nameString) > 0 {
|
||
nameString = nameString + ","
|
||
}
|
||
nameString = nameString + strconv.FormatInt(vv.ID, 10)
|
||
tmp[vv.Name] = struct{}{}
|
||
}
|
||
}
|
||
if _, ok := tmp[val.Name]; !ok {
|
||
if len(nameString) > 0 {
|
||
nameString = nameString + ","
|
||
}
|
||
nameString = nameString + strconv.FormatInt(val.ID, 10)
|
||
}
|
||
}
|
||
for _, val := range configs {
|
||
if _, ok := tmp[val.Name]; !ok {
|
||
if len(nameString) > 0 {
|
||
nameString = nameString + ","
|
||
}
|
||
nameString = nameString + strconv.FormatInt(val.ID, 10)
|
||
}
|
||
}
|
||
tag.ConfigIDs = nameString
|
||
tag.Operator = v.User
|
||
tag.Mark = v.Mark
|
||
tag.Force = v.Force
|
||
c.JSON(nil, svr.UpdateTag(c, v.TreeID, v.Env, v.Zone, v.Build, tag))
|
||
}
|
||
|
||
func canalConfigCreate(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.CanalConfigCreateReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if err = svr.CanalCheckToken(v.AppName, v.Env, v.Zone, v.Token); err != nil {
|
||
res["message"] = "未找到数据"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
conf := &model.Config{}
|
||
conf.Operator = v.User
|
||
conf.Name = v.Name
|
||
conf.Mark = v.Mark
|
||
conf.Comment = v.Comment
|
||
conf.State = v.State
|
||
conf.From = v.From
|
||
c.JSON(nil, svr.CreateConf(conf, v.TreeID, v.Env, v.Zone, true))
|
||
}
|
||
|
||
func canalNameConfigs(c *bm.Context) {
|
||
res := map[string]interface{}{}
|
||
v := new(model.CanalNameConfigsReq)
|
||
err := c.Bind(v)
|
||
if err != nil {
|
||
return
|
||
}
|
||
if err = svr.CanalCheckToken(v.AppName, v.Env, v.Zone, v.Token); err != nil {
|
||
res["message"] = "未找到数据"
|
||
c.JSONMap(res, err)
|
||
return
|
||
}
|
||
c.JSON(svr.ConfigsByTree(v.TreeID, v.Env, v.Zone, v.Name))
|
||
}
|