2026-04-20 18:31:47 +08:00

67 lines
2.0 KiB
Go

package router
import (
"context"
"net/http"
"chatapp3-golang/internal/config"
"chatapp3-golang/internal/repo"
"chatapp3-golang/internal/service/baishun"
"chatapp3-golang/internal/service/invite"
"chatapp3-golang/internal/service/luckygift"
"chatapp3-golang/internal/service/registerreward"
"chatapp3-golang/internal/service/signinreward"
"chatapp3-golang/internal/service/weekstar"
"github.com/gin-gonic/gin"
)
// Services 聚合所有业务模块服务,供路由层统一装配。
type Services struct {
Invite *invite.InviteService
Baishun *baishun.BaishunService
LuckyGift *luckygift.LuckyGiftService
RegisterReward *registerreward.RegisterRewardService
SignInReward *signinreward.SignInRewardService
WeekStar *weekstar.WeekStarService
}
// NewRouter 创建 Gin 路由,并按模块注册所有接口。
func NewRouter(
cfg config.Config,
repository *repo.Repository,
javaClient authGateway,
services Services,
) *gin.Engine {
engine := gin.New()
engine.Use(gin.Logger(), gin.Recovery())
registerHealthRoutes(engine, cfg, repository)
registerInviteRoutes(engine, javaClient, services.Invite)
registerRegisterRewardRoutes(engine, javaClient, services.RegisterReward)
registerSignInRewardRoutes(engine, javaClient, services.SignInReward)
registerWeekStarRoutes(engine, javaClient, services.WeekStar)
registerBaishunRoutes(engine, cfg, javaClient, services.Baishun)
registerLuckyGiftRoutes(engine, cfg, services.LuckyGift)
return engine
}
// registerHealthRoutes 注册健康检查接口。
func registerHealthRoutes(engine *gin.Engine, cfg config.Config, repository *repo.Repository) {
engine.GET("/health", func(c *gin.Context) {
ctx, cancel := context.WithTimeout(c.Request.Context(), cfg.HTTP.Timeout)
defer cancel()
if err := repository.Ping(ctx); err != nil {
c.JSON(http.StatusServiceUnavailable, gin.H{
"code": "dependency_unavailable",
"message": err.Error(),
})
return
}
c.JSON(http.StatusOK, gin.H{"code": "ok", "message": "success3"})
})
}