feat: done

This commit is contained in:
2025-12-18 00:21:49 +08:00
parent 7261c0fcc3
commit bfce71b56d
15 changed files with 331 additions and 17 deletions

View File

@@ -0,0 +1,9 @@
package dto
import "quyun/v2/database/models"
type MeResponse struct {
Tenant *models.Tenant `json:"tenant,omitempty"`
User *models.User `json:"user,omitempty"`
TenantUser *models.TenantUser `json:"tenant_user,omitempty"`
}

View File

@@ -0,0 +1,32 @@
package tenant
import (
"quyun/v2/app/http/tenant/dto"
"quyun/v2/database/models"
"github.com/gofiber/fiber/v3"
)
// @provider
type me struct{}
// get
//
// @Summary 当前租户上下文信息
// @Tags Tenant
// @Accept json
// @Produce json
// @Param tenant_code path string true "Tenant Code"
// @Success 200 {object} dto.MeResponse
//
// @Router /t/:tenant_code/v1/me [get]
// @Bind tenant local key(tenant)
// @Bind user local key(user)
// @Bind tenantUser local key(tenant_user)
func (*me) get(ctx fiber.Ctx, tenant *models.Tenant, user *models.User, tenantUser *models.TenantUser) (*dto.MeResponse, error) {
return &dto.MeResponse{
Tenant: tenant,
User: user,
TenantUser: tenantUser,
}, nil
}

View File

@@ -0,0 +1,37 @@
package tenant
import (
"quyun/v2/app/middlewares"
"go.ipao.vip/atom"
"go.ipao.vip/atom/container"
"go.ipao.vip/atom/contracts"
"go.ipao.vip/atom/opt"
)
func Provide(opts ...opt.Option) error {
if err := container.Container.Provide(func() (*me, error) {
obj := &me{}
return obj, nil
}); err != nil {
return err
}
if err := container.Container.Provide(func(
me *me,
middlewares *middlewares.Middlewares,
) (contracts.HttpRoute, error) {
obj := &Routes{
me: me,
middlewares: middlewares,
}
if err := obj.Prepare(); err != nil {
return nil, err
}
return obj, nil
}, atom.GroupRoutes); err != nil {
return err
}
return nil
}

View File

@@ -0,0 +1,54 @@
// Code generated by atomctl. DO NOT EDIT.
// Package tenant provides HTTP route definitions and registration
// for the quyun/v2 application.
package tenant
import (
"quyun/v2/app/middlewares"
"quyun/v2/database/models"
"github.com/gofiber/fiber/v3"
log "github.com/sirupsen/logrus"
_ "go.ipao.vip/atom"
_ "go.ipao.vip/atom/contracts"
. "go.ipao.vip/atom/fen"
)
// Routes implements the HttpRoute contract and provides route registration
// for all controllers in the tenant module.
//
// @provider contracts.HttpRoute atom.GroupRoutes
type Routes struct {
log *log.Entry `inject:"false"`
middlewares *middlewares.Middlewares
// Controller instances
me *me
}
// Prepare initializes the routes provider with logging configuration.
func (r *Routes) Prepare() error {
r.log = log.WithField("module", "routes.tenant")
r.log.Info("Initializing routes module")
return nil
}
// Name returns the unique identifier for this routes provider.
func (r *Routes) Name() string {
return "tenant"
}
// Register registers all HTTP routes with the provided fiber router.
// Each route is registered with its corresponding controller action and parameter bindings.
func (r *Routes) Register(router fiber.Router) {
// Register routes for controller: me
r.log.Debugf("Registering route: Get /t/:tenant_code/v1/me -> me.get")
router.Get("/t/:tenant_code/v1/me"[len(r.Path()):], DataFunc3(
r.me.get,
Local[*models.Tenant]("tenant"),
Local[*models.User]("user"),
Local[*models.TenantUser]("tenant_user"),
))
r.log.Info("Successfully registered all routes")
}

View File

@@ -0,0 +1,14 @@
package tenant
func (r *Routes) Path() string {
return "/t/:tenant_code/v1"
}
func (r *Routes) Middlewares() []any {
return []any{
r.middlewares.DebugMode,
r.middlewares.TenantResolve,
r.middlewares.TenantAuth,
r.middlewares.TenantRequireMember,
}
}