org 模块: - tenants 表 (UUID PK, name, slug, status, settings) - 完整 CRUD API: /api/v1/org/tenants - 多租户隔离 audit 模块: - audit_logs 表 (actor, action, resource, IP, 时间) - 查询 API: /api/v1/audit/logs (支持分页+筛选) - 按 tenant_id/user_id/action/resource 过滤
85 lines
1.6 KiB
Go
85 lines
1.6 KiB
Go
package interfaces
|
|
|
|
import (
|
|
"mengstack/internal/kernel/response"
|
|
"mengstack/internal/modules/org/application"
|
|
"mengstack/internal/modules/org/domain"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type Handler struct {
|
|
svc *application.Service
|
|
}
|
|
|
|
func NewHandler(svc *application.Service) *Handler {
|
|
return &Handler{svc: svc}
|
|
}
|
|
|
|
func (h *Handler) CreateTenant(c *gin.Context) {
|
|
var req domain.CreateTenantRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
response.Fail(c, response.NewBadRequest("invalid request body"))
|
|
return
|
|
}
|
|
|
|
dto, err := h.svc.CreateTenant(c.Request.Context(), req)
|
|
if err != nil {
|
|
response.HandleError(c, err)
|
|
return
|
|
}
|
|
|
|
response.Success(c, dto)
|
|
}
|
|
|
|
func (h *Handler) ListTenants(c *gin.Context) {
|
|
dtos, err := h.svc.ListTenants(c.Request.Context())
|
|
if err != nil {
|
|
response.HandleError(c, err)
|
|
return
|
|
}
|
|
|
|
response.Success(c, dtos)
|
|
}
|
|
|
|
func (h *Handler) GetTenant(c *gin.Context) {
|
|
id := c.Param("id")
|
|
|
|
dto, err := h.svc.GetTenant(c.Request.Context(), id)
|
|
if err != nil {
|
|
response.HandleError(c, err)
|
|
return
|
|
}
|
|
|
|
response.Success(c, dto)
|
|
}
|
|
|
|
func (h *Handler) UpdateTenant(c *gin.Context) {
|
|
id := c.Param("id")
|
|
|
|
var req domain.UpdateTenantRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
response.Fail(c, response.NewBadRequest("invalid request body"))
|
|
return
|
|
}
|
|
|
|
dto, err := h.svc.UpdateTenant(c.Request.Context(), id, req)
|
|
if err != nil {
|
|
response.HandleError(c, err)
|
|
return
|
|
}
|
|
|
|
response.Success(c, dto)
|
|
}
|
|
|
|
func (h *Handler) DeleteTenant(c *gin.Context) {
|
|
id := c.Param("id")
|
|
|
|
if err := h.svc.DeleteTenant(c.Request.Context(), id); err != nil {
|
|
response.HandleError(c, err)
|
|
return
|
|
}
|
|
|
|
response.Success(c, nil)
|
|
}
|