file
This commit is contained in:
@@ -16,19 +16,23 @@ import (
|
||||
rbachdl "portal-mini-go/internal/handler/admin/rbac"
|
||||
userhdl "portal-mini-go/internal/handler/admin/user"
|
||||
app1hdl "portal-mini-go/internal/handler/miniapp/app1"
|
||||
filehdl "portal-mini-go/internal/handler/file"
|
||||
"portal-mini-go/internal/middleware"
|
||||
"portal-mini-go/internal/pkg/config"
|
||||
"portal-mini-go/internal/pkg/response"
|
||||
"portal-mini-go/internal/pkg/session"
|
||||
"portal-mini-go/internal/pkg/storage"
|
||||
"portal-mini-go/internal/pkg/wechat"
|
||||
adminrepo "portal-mini-go/internal/repository/admin"
|
||||
miniapprepo "portal-mini-go/internal/repository/miniapp"
|
||||
"portal-mini-go/internal/repository/user"
|
||||
filerepo "portal-mini-go/internal/repository/file"
|
||||
authsvc "portal-mini-go/internal/service/admin/auth"
|
||||
miniappsvc "portal-mini-go/internal/service/admin/miniapp"
|
||||
adminrbac "portal-mini-go/internal/service/admin/rbac"
|
||||
usersvc "portal-mini-go/internal/service/admin/user"
|
||||
app1svc "portal-mini-go/internal/service/miniapp/app1"
|
||||
filesvc "portal-mini-go/internal/service/file"
|
||||
)
|
||||
|
||||
// New 构造并装配整个 HTTP 服务。
|
||||
@@ -44,6 +48,19 @@ func New(cfg *config.Config, db *gorm.DB, store session.Store) *gin.Engine {
|
||||
response.OK(c, gin.H{"status": "ok"})
|
||||
})
|
||||
|
||||
// 文件存储:依据配置构造(当前支持本地磁盘,minIO 等预留)。
|
||||
fileStore, err := storage.New(cfg.Upload)
|
||||
if err != nil {
|
||||
slog.Error("init storage", slog.Any("err", err))
|
||||
os.Exit(1)
|
||||
}
|
||||
// 本地存储静态目录对外可访问(与 file.URL 拼接的 baseURL 对齐)。
|
||||
r.Static(cfg.Upload.BaseURL, cfg.Upload.LocalPath)
|
||||
// 共享的文件服务实例,admin 与小程序端复用。
|
||||
fileRepo := filerepo.New(db)
|
||||
fileSvc := filesvc.New(fileRepo, fileStore, cfg.Upload)
|
||||
fileHdl := filehdl.NewHandler(fileSvc)
|
||||
|
||||
// 共享基础设施:微信客户端、用户仓储、小程序仓储。
|
||||
wx := wechat.NewClient()
|
||||
userRepo := user.New(db)
|
||||
@@ -55,6 +72,11 @@ func New(cfg *config.Config, db *gorm.DB, store session.Store) *gin.Engine {
|
||||
{
|
||||
app1Svc := app1svc.New(userRepo, miniRepo, wx, store)
|
||||
app1hdl.Register(ma, app1hdl.NewHandler(app1Svc), middleware.MiniUserAuth(store))
|
||||
|
||||
// 文件上传服务:小程序端已登录用户可上传/管理文件。
|
||||
maAuth := ma.Group("")
|
||||
maAuth.Use(middleware.MiniUserAuth(store))
|
||||
filehdl.RegisterMiniAppUpload(maAuth, fileHdl)
|
||||
}
|
||||
|
||||
// 后台 RBAC 基础设施:仓储、缓存、权限 Provider、种子初始化。
|
||||
@@ -100,6 +122,9 @@ func New(cfg *config.Config, db *gorm.DB, store session.Store) *gin.Engine {
|
||||
// 用户管理:各小程序端用户(列表、详情、编辑、禁用/启用)。
|
||||
userSvc := usersvc.New(userRepo)
|
||||
userhdl.Register(authAd, userhdl.NewHandler(userSvc))
|
||||
|
||||
// 文件上传服务:后台已认证管理员可上传/管理文件(admin 与 ma 双入口复用同一 Service)。
|
||||
filehdl.RegisterAdminUpload(authAd, fileHdl)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user