material_manage_system/internal/handler/organization_context.go
2026-10-09 09:56:21 +08:00

40 lines
1.1 KiB
Go

package handler
import (
"errors"
"github.com/gin-gonic/gin"
"github.com/wmms/wmms/internal/middleware"
"github.com/wmms/wmms/internal/service"
"github.com/wmms/wmms/pkg/response"
)
func (h *Handler) ListAccessibleOrganizations(c *gin.Context) {
access, err := service.NewOrganizationAccessService().List(middleware.GetCurrentUserID(c))
if err != nil {
response.InternalError(c, "公司访问范围加载失败")
return
}
response.Success(c, access)
}
func (h *Handler) SwitchOrganizationContext(c *gin.Context) {
var req struct {
OrganizationID int64 `json:"organization_id" binding:"required,gt=0"`
PreviousOrganizationID int64 `json:"previous_organization_id"`
}
if !bind(c, &req) {
return
}
result, err := service.NewOrganizationAccessService().Switch(middleware.GetCurrentUserID(c), req.OrganizationID, req.PreviousOrganizationID)
if err != nil {
if errors.Is(err, service.ErrOrganizationInaccessible) {
response.Forbidden(c, err.Error())
} else {
response.InternalError(c, "公司切换失败")
}
return
}
response.Success(c, result)
}