2025-06-16 15:48:55 +08:00

90 lines
1.9 KiB
Go

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