重新初始化仓库
This commit is contained in:
		
							
								
								
									
										160
									
								
								construct/init.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								construct/init.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,160 @@
 | 
			
		||||
// Package construct ...
 | 
			
		||||
//
 | 
			
		||||
// Author : go_developer@163.com<白茶清欢>
 | 
			
		||||
//
 | 
			
		||||
// Date : 1:23 下午 2021/8/7
 | 
			
		||||
package construct
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"git.zhangdeman.cn/zhangdeman/center-config/dao"
 | 
			
		||||
	"git.zhangdeman.cn/zhangdeman/center-config/define/config"
 | 
			
		||||
	"git.zhangdeman.cn/zhangdeman/center-config/manager"
 | 
			
		||||
	"git.zhangdeman.cn/zhangdeman/center-config/response"
 | 
			
		||||
	"git.zhangdeman.cn/zhangdeman/gopkg/middleware/mysql"
 | 
			
		||||
	"git.zhangdeman.cn/zhangdeman/gopkg/util"
 | 
			
		||||
	"github.com/gin-gonic/gin"
 | 
			
		||||
	"go.uber.org/zap/zapcore"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	// ProjectPath 项目路径
 | 
			
		||||
	ProjectPath string
 | 
			
		||||
	// Env 运行环境
 | 
			
		||||
	Env string
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Bootstrap 引导服务启动
 | 
			
		||||
//
 | 
			
		||||
// Author : go_developer@163.com<白茶清欢>
 | 
			
		||||
//
 | 
			
		||||
// Date : 1:25 下午 2021/8/7
 | 
			
		||||
func Bootstrap(router *gin.Engine) error {
 | 
			
		||||
	// 初始化
 | 
			
		||||
	if len(Env) == 0 {
 | 
			
		||||
		Env = "product"
 | 
			
		||||
	}
 | 
			
		||||
	ProjectPath, _ = util.GetProjectPath()
 | 
			
		||||
	// 初始化数据库
 | 
			
		||||
	if err := InitDatabase(); nil != err {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	// 初始化各种管理实例
 | 
			
		||||
	manager.Init()
 | 
			
		||||
	// 初始化请求路由
 | 
			
		||||
	initRouter(router)
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// InitDatabase 初始化数据库
 | 
			
		||||
//
 | 
			
		||||
// Author : go_developer@163.com<白茶清欢>
 | 
			
		||||
//
 | 
			
		||||
// Date : 1:27 下午 2021/8/7
 | 
			
		||||
func InitDatabase() error {
 | 
			
		||||
	// 读取数据库配置, 并初始化
 | 
			
		||||
	var (
 | 
			
		||||
		err      error
 | 
			
		||||
		dbConfig config.Database
 | 
			
		||||
	)
 | 
			
		||||
	if err = util.ReadYmlConfig(ProjectPath+"/etc/database/"+Env+".yml", &dbConfig); nil != err {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err = dao.InitDatabase(dbConfig.DB, &mysql.LogConfig{
 | 
			
		||||
		Level:            zapcore.Level(dbConfig.Log.Level),
 | 
			
		||||
		ConsoleOutput:    dbConfig.Log.Console,
 | 
			
		||||
		SplitConfig:      dbConfig.Log.Split,
 | 
			
		||||
		ExtractFieldList: dbConfig.Log.ExtractFieldList,
 | 
			
		||||
		TraceFieldName:   dbConfig.Log.TraceFieldName,
 | 
			
		||||
	}); nil != err {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// initRouter 初始化路由
 | 
			
		||||
//
 | 
			
		||||
// Author : go_developer@163.com<白茶清欢>
 | 
			
		||||
//
 | 
			
		||||
// Date : 6:34 下午 2021/8/9
 | 
			
		||||
func initRouter(router *gin.Engine) {
 | 
			
		||||
	// 创建命名空间
 | 
			
		||||
	router.POST("/namespace/create", func(ctx *gin.Context) {
 | 
			
		||||
		createForm, err := manager.Namespace.ValidateCreateForm(ctx)
 | 
			
		||||
		if nil != err {
 | 
			
		||||
			response.ManagerAPIFail(ctx, -1, map[string]interface{}{"reason": err.Error()})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		if err := manager.Namespace.Create(createForm); nil != err {
 | 
			
		||||
			response.ManagerAPIFail(ctx, -1, map[string]interface{}{"reason": err.Error()})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		response.ManagerAPISuccess(ctx, map[string]interface{}{})
 | 
			
		||||
	})
 | 
			
		||||
	// 激活命名空间
 | 
			
		||||
	router.POST("/namespace/active", func(ctx *gin.Context) {
 | 
			
		||||
		activeForm, err := manager.Namespace.ValidateActiveForm(ctx)
 | 
			
		||||
		if nil != err {
 | 
			
		||||
			response.ManagerAPIFail(ctx, -1, map[string]interface{}{"reason": err.Error()})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		if err := manager.Namespace.Active(activeForm); nil != err {
 | 
			
		||||
			response.ManagerAPIFail(ctx, -1, map[string]interface{}{"reason": err.Error()})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		response.ManagerAPISuccess(ctx, map[string]interface{}{})
 | 
			
		||||
	})
 | 
			
		||||
	// 新增配置
 | 
			
		||||
	router.POST("/config/create", func(ctx *gin.Context) {
 | 
			
		||||
		createForm, err := manager.Config.ValidateCreateOrUpdateConfigForm(ctx)
 | 
			
		||||
		if nil != err {
 | 
			
		||||
			response.ManagerAPIFail(ctx, -1, map[string]interface{}{"reason": err.Error()})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		if err := manager.Config.Create(createForm, nil); nil != err {
 | 
			
		||||
			response.ManagerAPIFail(ctx, -1, map[string]interface{}{"reason": err.Error()})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		response.ManagerAPISuccess(ctx, map[string]interface{}{})
 | 
			
		||||
	})
 | 
			
		||||
	// 修改配置
 | 
			
		||||
	router.POST("/config/update", func(ctx *gin.Context) {
 | 
			
		||||
		updateForm, err := manager.Config.ValidateCreateOrUpdateConfigForm(ctx)
 | 
			
		||||
		if nil != err {
 | 
			
		||||
			response.ManagerAPIFail(ctx, -1, map[string]interface{}{"reason": err.Error()})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		if err := manager.Config.Update(updateForm, nil, nil); nil != err {
 | 
			
		||||
			response.ManagerAPIFail(ctx, -1, map[string]interface{}{"reason": err.Error()})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		response.ManagerAPISuccess(ctx, map[string]interface{}{})
 | 
			
		||||
	})
 | 
			
		||||
	// 设置配置
 | 
			
		||||
	router.POST("/config/set", func(ctx *gin.Context) {
 | 
			
		||||
		createOrUpdateForm, err := manager.Config.ValidateCreateOrUpdateConfigForm(ctx)
 | 
			
		||||
		if nil != err {
 | 
			
		||||
			response.ManagerAPIFail(ctx, -1, map[string]interface{}{"reason": err.Error()})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		if err := manager.Config.CreateOrUpdateConfig(createOrUpdateForm); nil != err {
 | 
			
		||||
			response.ManagerAPIFail(ctx, -1, map[string]interface{}{"reason": err.Error()})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		response.ManagerAPISuccess(ctx, map[string]interface{}{})
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	// 读取配置(从内存读取)
 | 
			
		||||
	router.GET("/config/read", func(ctx *gin.Context) {
 | 
			
		||||
		namespaceName := ctx.DefaultQuery("namespace", "")
 | 
			
		||||
		key := ctx.DefaultQuery("key", "")
 | 
			
		||||
		if len(namespaceName) == 0 || len(key) == 0 {
 | 
			
		||||
			response.ReadConfigAPISuccess(ctx, `param fail : namespace and key are required`)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		response.ReadConfigAPISuccess(ctx, manager.Storage.GetConf(namespaceName, key))
 | 
			
		||||
	})
 | 
			
		||||
	if err := router.Run(":10998"); nil != err {
 | 
			
		||||
		panic("端口监听失败 : " + err.Error())
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user