完成基本框架搭建及系统用户登录流程

This commit is contained in:
2025-08-28 17:24:32 +08:00
parent 5a8029b3c6
commit 0a3be6cf9e
22 changed files with 736 additions and 16 deletions

View File

@@ -0,0 +1,49 @@
package core
import (
"fmt"
"gin-admin/internal/core/config"
"gin-admin/internal/core/initialize"
"gin-admin/pkg/logger"
)
// @Author: yv1ing
// @Author: me@yvling.cn
// @Date: 2025/8/28 13:58
// @Desc: API服务入口
func Start() {
var err error
// 加载配置
err = initialize.InitConfig()
if err != nil {
logger.Error("加载配置失败:", err)
return
}
// 初始化数据库
err = initialize.InitDatabase()
if err != nil {
logger.Error("初始化数据库失败:", err)
return
}
// 初始化系统用户
err = initialize.InitSysUser()
if err != nil {
logger.Error("初始化系统用户失败:", err)
return
}
// 初始化引擎
eng := initialize.InitEngine()
addr := fmt.Sprintf("%s:%d", config.Config.ListenHost, config.Config.ListenPort)
// 启动引擎
logger.Info("正在启动引擎,监听在:", addr)
err = eng.Run(addr)
if err != nil {
logger.Error("启动引擎失败:", err)
}
}

View File

@@ -0,0 +1,18 @@
package config
// @Author: yv1ing
// @Author: me@yvling.cn
// @Date: 2025/8/28 14:01
// @Desc: 系统全局配置
type globalConfig struct {
ListenHost string
ListenPort uint
SecretKey string
RootName string
RootPass string
Mysql mysqlConfig
}
var Config *globalConfig

View File

@@ -0,0 +1,14 @@
package config
// @Author: yv1ing
// @Author: me@yvling.cn
// @Date: 2025/8/28 14:24
// @Desc: MySQL配置
type mysqlConfig struct {
Host string
Port uint
Username string
Password string
Database string
}

View File

@@ -0,0 +1,20 @@
package initialize
import (
"gin-admin/internal/core/config"
"github.com/BurntSushi/toml"
)
// @Author: yv1ing
// @Author: me@yvling.cn
// @Date: 2025/8/28 14:06
// @Desc: 初始化系统配置
func InitConfig() error {
_, err := toml.DecodeFile("configs/config.toml", &config.Config)
if err != nil {
return err
}
return nil
}

View File

@@ -0,0 +1,41 @@
package initialize
import (
"fmt"
"gin-admin/internal/core/config"
"gin-admin/internal/repository"
"gorm.io/driver/mysql"
"gorm.io/gorm"
systemmodel "gin-admin/internal/model/system"
)
// @Author: yv1ing
// @Author: me@yvling.cn
// @Date: 2025/8/28 14:22
// @Desc: 初始化mysql数据库
func dsn() string {
return fmt.Sprintf(
"%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
config.Config.Mysql.Username,
config.Config.Mysql.Password,
config.Config.Mysql.Host,
config.Config.Mysql.Port,
config.Config.Mysql.Database,
)
}
func InitDatabase() error {
db, err := gorm.Open(mysql.Open(dsn()), &gorm.Config{})
if err != nil {
return err
}
err = db.AutoMigrate(
&systemmodel.User{},
)
repository.SetupRepository(db)
return nil
}

View File

@@ -0,0 +1,20 @@
package initialize
import (
"gin-admin/internal/router"
"github.com/gin-gonic/gin"
)
// @Author: yv1ing
// @Author: me@yvling.cn
// @Date: 2025/8/28 13:59
// @Desc: 初始化gin引擎
func InitEngine() *gin.Engine {
gin.SetMode(gin.ReleaseMode)
eng := gin.New()
router.SetupRoutes(eng)
return eng
}

View File

@@ -0,0 +1,26 @@
package initialize
import (
"gin-admin/internal/core/config"
"gin-admin/internal/repository"
"gin-admin/pkg/encrypt"
systemmodel "gin-admin/internal/model/system"
systemrepository "gin-admin/internal/repository/system"
)
// @Author: yv1ing
// @Author: me@yvling.cn
// @Date: 2025/8/28 17:05
// @Desc: 初始化系统用户
func InitSysUser() error {
return systemrepository.CreateUser(repository.Repo.DB, &systemmodel.User{
IsActive: true,
Username: config.Config.RootName,
Password: encrypt.Sha256String(config.Config.RootPass, config.Config.SecretKey),
Avatar: "/logo.png",
Email: "root@gin-admin.cn",
Phone: "18888888888",
})
}