package handler import ( "management/internal/erpserver/biz" "management/internal/erpserver/handler/budget" "management/internal/erpserver/handler/common" "management/internal/erpserver/handler/customer" "management/internal/erpserver/handler/expense" "management/internal/erpserver/handler/income" "management/internal/erpserver/handler/project" "management/internal/erpserver/handler/system" "management/internal/pkg/config" "management/internal/pkg/middleware" "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 ProjectHandler() project.ProjectHandler BudgetHandler() budget.BudgetHandler CustomerHandler() customer.CustomerHandler IncomeHandler() income.IncomeHandler ExpenseHandler() expense.ExpenseHandler } // handler 是 IHandler 的一个具体实现. type handler struct { conf *config.Config render tpl.Renderer redis redis.IRedis session session.ISession biz biz.IBiz mi middleware.IMiddleware } // 确保 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, mi middleware.IMiddleware) *handler { return &handler{ conf: conf, render: render, redis: redis, session: session, biz: biz, mi: mi, } } // 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, h.mi) } // ProjectHandler 返回一个实现了 ProjectHandler 接口的实例. func (h *handler) ProjectHandler() project.ProjectHandler { return project.NewProjectHandler(h.render, h.biz, h.mi) } // BudgetHandler 返回一个实现了 BudgetHandler 接口的实例. func (h *handler) BudgetHandler() budget.BudgetHandler { return budget.NewBudgetHandler(h.render, h.biz, h.mi) } // CustomerHandler 返回一个实现了 CustomerHandler 接口的实例. func (h *handler) CustomerHandler() customer.CustomerHandler { return customer.NewCustomerHandler(h.render, h.biz, h.mi) } // IncomeHandler 返回一个实现了 IncomeHandler 接口的实例. func (h *handler) IncomeHandler() income.IncomeHandler { return income.NewIncomeHandler(h.render, h.biz, h.mi) } // ExpenseHandler 返回一个实现了 ExpenseHandler 接口的实例. func (h *handler) ExpenseHandler() expense.ExpenseHandler { return expense.NewExpenseHandler(h.render, h.biz, h.mi) }