2025-07-02 14:51:23 +08:00

96 lines
2.2 KiB
Go

package handler
import (
"net/http"
"management/internal/erpserver/handler/auth"
"management/internal/erpserver/handler/captcha"
"management/internal/erpserver/handler/system"
"management/internal/erpserver/handler/upload"
v1 "management/internal/erpserver/service/v1"
authv1 "management/internal/erpserver/service/v1/auth"
"management/internal/pkg/config"
"management/internal/pkg/mid"
"management/internal/pkg/render"
"management/internal/pkg/token"
"management/internal/tasks"
"github.com/drhin/logger"
"github.com/gin-gonic/gin"
)
type Config struct {
Conf *config.Config
Log *logger.Logger
Token token.Maker
Render render.Renderer
TaskDistributor tasks.TaskDistributor
CaptchaService v1.CaptchaService
AuthService *authv1.Auth
UserService v1.UserService
RoleService v1.RoleService
DepartmentService v1.DepartmentService
MenuService v1.MenuService
ConfigService v1.ConfigService
AuditLogService v1.AuditLogService
LoginLogService v1.LoginLogService
}
func WebApp(cfg Config) http.Handler {
app := gin.New()
app.Use(gin.Recovery())
if gin.Mode() == gin.DebugMode {
app.Use(gin.Logger())
}
//app.Static("/public/*", "./public/")
publishApp := app.Group("")
privateApp := app.Group("")
privateApp.Use(mid.Authorize(cfg.Token, cfg.MenuService))
{
// 健康监测
publishApp.GET("/health", func(c *gin.Context) {
c.JSON(http.StatusOK, "ok")
})
}
{
// 公共方法
captcha.Routes(publishApp, captcha.Config{
Conf: cfg.Conf,
CaptchaService: cfg.CaptchaService,
})
upload.Routes(privateApp, upload.Config{
Log: cfg.Log,
})
}
{
// 登陆
auth.Routes(publishApp, privateApp, auth.Config{
Log: cfg.Log,
CaptchaService: cfg.CaptchaService,
AuthService: cfg.AuthService,
UserService: cfg.UserService,
MenuService: cfg.MenuService,
})
}
{
// 后台管理
system.Routes(privateApp, system.Config{
RoleService: cfg.RoleService,
MenuService: cfg.MenuService,
AuditLogService: cfg.AuditLogService,
LoginLogService: cfg.LoginLogService,
ConfigService: cfg.ConfigService,
})
}
return app
}