54 lines
1.1 KiB
Go
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)
|
|
}
|