package handler import ( "context" "fmt" "net/http" "management/internal/erpserver/model/dto" "management/internal/pkg/config" "management/internal/pkg/know" "management/internal/pkg/render" "management/internal/pkg/session" "github.com/a-h/templ" "github.com/drhin/logger" "go.uber.org/zap" ) //type RouterGroup interface { // Register(router chi.Router) //} type Handler struct { Config *config.Config Log *logger.Logger session session.Manager render render.Render } func NewHandler( config *config.Config, log *logger.Logger, session session.Manager, render render.Render, ) *Handler { return &Handler{ Config: config, Log: log, session: session, render: render, } } // ===================================================================================================================== // mid 帮助方法 func (h *Handler) AuthUser(ctx context.Context) dto.AuthorizeUser { u, err := h.session.GetUser(ctx, know.StoreName) if err != nil { return dto.AuthorizeUser{} } return u } func (h *Handler) RenewToken(ctx context.Context) error { return h.session.RenewToken(ctx) } func (h *Handler) Destroy(ctx context.Context) error { return h.session.Destroy(ctx) } // ===================================================================================================================== // render 帮助方法 func (h *Handler) Render(ctx context.Context, w http.ResponseWriter, t templ.Component) { if err := t.Render(ctx, w); err != nil { h.Log.Error(err.Error(), err, zap.String("templ render", fmt.Sprintf("%v", t)), ) } } func (h *Handler) HTML(w http.ResponseWriter, r *http.Request, name string, data map[string]any) { h.render.HTML(w, r, name, data) } func (h *Handler) JSON(w http.ResponseWriter, data any) { h.render.JSON(w, data) } func (h *Handler) JSONObj(w http.ResponseWriter, message string, data any) { h.render.JSONObj(w, message, data) } func (h *Handler) JSONOk(w http.ResponseWriter, message string) { h.render.JSONOk(w, message) } func (h *Handler) JSONErr(w http.ResponseWriter, message string) { h.render.JSONErr(w, message) }