You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
1.8 KiB
86 lines
1.8 KiB
1 month ago
|
package main
|
||
|
|
||
|
import (
|
||
|
"gofaster/internal/config"
|
||
|
"gofaster/internal/controller"
|
||
|
"gofaster/internal/middleware"
|
||
|
"gofaster/internal/model"
|
||
|
"gofaster/internal/repository"
|
||
|
"gofaster/internal/service"
|
||
|
"gofaster/pkg/database"
|
||
|
"gofaster/pkg/logger"
|
||
|
"gofaster/routes"
|
||
|
|
||
|
"github.com/gin-gonic/gin"
|
||
|
"go.uber.org/zap"
|
||
|
"gorm.io/gorm"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
// 加载配置
|
||
|
cfg := config.LoadConfig()
|
||
|
|
||
|
// 初始化日志
|
||
|
log := logger.NewLogger(cfg.Log.Level, cfg.Log.Path)
|
||
|
defer log.Sync()
|
||
|
|
||
|
// 初始化数据库
|
||
|
db, err := database.NewDB(&cfg.DB)
|
||
|
if err != nil {
|
||
|
log.Fatal("Failed to connect database", zap.Error(err))
|
||
|
}
|
||
|
|
||
|
// 自动迁移
|
||
|
if err := autoMigrate(db); err != nil {
|
||
|
log.Fatal("Failed to migrate database", zap.Error(err))
|
||
|
}
|
||
|
|
||
|
// 初始化Redis
|
||
|
redisClient := database.NewRedisClient(&cfg.Redis)
|
||
|
|
||
|
// 初始化服务层
|
||
|
userRepo := repository.NewUserRepo(db)
|
||
|
userService := service.NewUserService(userRepo)
|
||
|
|
||
|
// 初始化控制器
|
||
|
userCtrl := controller.NewUserController(userService)
|
||
|
|
||
|
// 初始化Gin
|
||
|
app := gin.New()
|
||
|
|
||
|
// 中间件
|
||
|
app.Use(middleware.LoggerMiddleware(log, db))
|
||
|
app.Use(middleware.RecoveryMiddleware(log))
|
||
|
app.Use(middleware.CORSMiddleware())
|
||
|
|
||
|
// 路由
|
||
|
api := app.Group("/api")
|
||
|
routes.RegisterUserRoutes(api, userCtrl)
|
||
|
|
||
|
// 认证路由
|
||
|
authApi := api.Group("")
|
||
|
authApi.Use(middleware.AuthMiddleware(cfg.JWT.Secret))
|
||
|
{
|
||
|
// 需要认证的路由
|
||
|
}
|
||
|
|
||
|
// 启动服务器
|
||
|
log.Info("Starting server", zap.String("port", cfg.Server.Port))
|
||
|
if err := app.Run(":" + cfg.Server.Port); err != nil {
|
||
|
log.Fatal("Failed to start server", zap.Error(err))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func autoMigrate(db *gorm.DB) error {
|
||
|
return db.AutoMigrate(
|
||
|
&model.User{},
|
||
|
&model.Role{},
|
||
|
&model.Permission{},
|
||
|
&model.ActionLog{},
|
||
|
&model.Workflow{},
|
||
|
&model.WorkflowNode{},
|
||
|
&model.WorkflowInstance{},
|
||
|
&model.WorkflowTask{},
|
||
|
)
|
||
|
}
|