2025-03-28 17:51:34 +08:00

54 lines
1.1 KiB
Go

package system
import (
"encoding/json"
"net/http"
"management/internal/db/model/dto"
"management/internal/erpserver/biz"
"management/internal/global/know"
"management/internal/pkg/session"
"management/internal/pkg/tpl"
)
type MenuHandler interface {
MenuExpansion
}
type MenuExpansion interface {
Menus(w http.ResponseWriter, r *http.Request)
}
type menuHandler struct {
render tpl.Renderer
session session.ISession
biz biz.IBiz
}
var _ MenuHandler = (*menuHandler)(nil)
func NewMenuHandler(render tpl.Renderer, session session.ISession, biz biz.IBiz) *menuHandler {
return &menuHandler{
render: render,
session: session,
biz: biz,
}
}
func (h *menuHandler) Menus(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
b := h.session.GetBytes(ctx, know.StoreName)
var u dto.AuthorizeUser
if err := json.Unmarshal(b, &u); err != nil {
h.render.JSONERR(w, err.Error())
return
}
menus, err := h.biz.SystemV1().MenuBiz().RecursiveSysMenus(ctx, u.RoleID)
if err != nil {
h.render.JSONERR(w, err.Error())
return
}
h.render.JSON(w, menus)
}