Files
yang 507b79f257 1、新增首页合计详情页;
2、新增索引和缓存;
2026-05-14 11:19:36 +08:00

50 lines
1.5 KiB
Go

package main
import (
"github.com/gin-gonic/gin"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"level_go/internal/api"
"level_go/internal/router"
"level_go/internal/service"
"level_go/pkg/config"
"log"
)
// main 是服务启动入口,负责完成配置加载、数据库连接、依赖组装和 HTTP 路由启动。
func main() {
gin.SetMode(gin.ReleaseMode)
// 初始化配置文件,后续数据库 DSN 和服务端口都从全局配置中读取。
config.InitConfig()
// 使用配置中的 MySQL DSN 建立 GORM 连接;连接失败时直接终止进程,避免服务在不可用状态下启动。
dsn := config.GetDSN()
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal("数据库连接失败:", err)
}
sqlDB, err := db.DB()
if err != nil {
log.Fatal("获取数据库连接池失败:", err)
}
sqlDB.SetMaxIdleConns(20)
sqlDB.SetMaxOpenConns(100)
// 依赖注入:Service 持有数据库连接,Handler 持有对应 Service。
commonSrv := &service.CommonService{DB: db}
stockSrv := &service.StockService{DB: db}
limitBoardSrv := &service.LimitBoardService{DB: db}
commonHandler := &api.CommonHandler{Service: commonSrv}
stockHandler := &api.StockHandler{Service: stockSrv}
limitBoardHandler := api.NewLimitBoardHandler(limitBoardSrv)
// 创建 Gin 路由并启动 HTTP 服务。
r := router.NewRouter(commonHandler, stockHandler, limitBoardHandler)
port := config.GetServerPort()
log.Printf("服务启动于端口 %s", port)
r.Run(port)
}