完成基础脚手架

This commit is contained in:
LeeX
2022-05-09 09:00:14 +08:00
parent 632c76dfa6
commit 5fd8e0a694
37 changed files with 2867 additions and 0 deletions

9
initialize/clients.go Normal file
View File

@@ -0,0 +1,9 @@
package initialize
import "ginDemo/client"
// 初始化数据库客户端
func initClient() {
client.InitMySQLClient()
//client.InitRedisClient()
}

67
initialize/config.go Normal file
View File

@@ -0,0 +1,67 @@
package initialize
import (
"ginDemo/config"
"gitee.ltd/lxh/logger"
"github.com/caarlos0/env/v6"
"github.com/fsnotify/fsnotify"
nr "github.com/lixh00/nacos-viper-remote"
"github.com/spf13/viper"
_ "github.com/spf13/viper/remote"
)
var vp *viper.Viper
// 初始化Nacos
func initNacos() {
// 初始化Nacos配置
if err := env.Parse(&config.Nacos); err != nil {
panic(err)
}
if config.Nacos.Host == "" {
logger.Say.Panic("Nacos配置错误")
}
}
// 初始化配置文件
func initConfig() {
vp = viper.New()
// 配置 Viper for Nacos 的远程仓库参数
nr.SetOptions(&nr.Option{
Url: config.Nacos.Host, // nacos server 多地址需要地址用;号隔开,如 Url: "loc1;loc2;loc3"
Port: config.Nacos.Port, // nacos server端口号
NamespaceId: config.Nacos.NamespaceId, // nacos namespace
GroupName: "DEFAULT_GROUP", // nacos group
Config: nr.Config{DataId: config.Nacos.CenterConfigName}, // nacos DataID
Auth: nil, // 如果需要验证登录,需要此参数
})
err := vp.AddRemoteProvider("nacos", config.Nacos.Host, "")
if err != nil {
logger.Say.Panicf("%s", err)
}
vp.SetConfigType("yaml")
//尝试进行配置读取
if err = vp.ReadRemoteConfig(); err != nil {
logger.Say.Panic(err)
}
//异步监听Nacos中的配置变化如发生配置更改会直接同步到 viper实例中。
err = vp.WatchRemoteConfigOnChannel()
if err != nil {
logger.Say.Errorf("监听远程配置变动失败: %v", err)
}
// 解析配置文件为结构体
if err = vp.Unmarshal(&config.Scd); err != nil {
logger.Say.Panic(err)
}
vp.WatchConfig() // 监听配置文件变化
vp.OnConfigChange(func(e fsnotify.Event) {
logger.Say.Info("配置文件发生变动:", e.Name)
if err = vp.Unmarshal(&config.Scd); err != nil {
logger.Say.Panic(err)
}
// 配置文件发生变动,重新初始化一下连接信息
initClient()
})
}

19
initialize/db_table.go Normal file
View File

@@ -0,0 +1,19 @@
package initialize
import (
"ginDemo/client"
"ginDemo/model/entity"
"gitee.ltd/lxh/logger"
)
// 初始化数据库表
func databaseTable() {
dbs := []any{
new(entity.User), // 管理员用户
}
if err := client.MySQL.AutoMigrate(dbs...); err != nil {
logger.Say.Panicf("数据库表预初始化处理:%s", err.Error())
}
logger.Say.Debugf("数据库表预初始化处理完成")
}

9
initialize/init.go Normal file
View File

@@ -0,0 +1,9 @@
package initialize
// InitSystem 初始化系统
func InitSystem() {
initNacos() // 初始化nacos
initConfig() // 初始化配置
initClient() // 初始化连接池等信息
databaseTable() // 初始化数据库表信息
}