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) }