package handler import ( "management/internal/config" "management/internal/erpserver/biz" "management/internal/erpserver/handler/common" "management/internal/erpserver/handler/customer" "management/internal/erpserver/handler/project" "management/internal/erpserver/handler/system" "management/internal/pkg/redis" "management/internal/pkg/session" "management/internal/pkg/tpl" ) // IHandler 定义了Handler需要实现的方法. type IHandler interface { // 获取 Common Handler 接口. CommonHandler() common.CommonHandler // 获取 System Handler 接口. SystemHandler() system.SystemHandler PorjectHandler() project.PorjectHandler CustomerHandler() customer.CustomerHandler } // handler 是 IHandler 的一个具体实现. type handler struct { conf *config.Config render tpl.Renderer redis redis.IRedis session session.ISession biz biz.IBiz } // 确保 handler 实现了 IHandler 接口. var _ IHandler = (*handler)(nil) // NewHandler 创建一个 IHandler 类型的实例. func NewHandler(conf *config.Config, render tpl.Renderer, redis redis.IRedis, session session.ISession, biz biz.IBiz) *handler { return &handler{ conf: conf, render: render, redis: redis, session: session, biz: biz, } } // CommonHandler 返回一个实现了 CommonHandler 接口的实例. func (h *handler) CommonHandler() common.CommonHandler { return common.NewCommonHandler(h.conf, h.render, h.biz.CommonV1()) } // SystemHandler 返回一个实现了 SystemHandler 接口的实例. func (h *handler) SystemHandler() system.SystemHandler { return system.NewSystemHandler(h.render, h.redis, h.session, h.biz) } // PorjectHandler 返回一个实现了 PorjectHandler 接口的实例. func (h *handler) PorjectHandler() project.PorjectHandler { return project.NewPorjectHandler(h.render, h.biz) } // CustomerHandler 返回一个实现了 CustomerHandler 接口的实例. func (h *handler) CustomerHandler() customer.CustomerHandler { return customer.NewCustomerHandler(h.render, h.biz) }