2025-04-02 10:16:07 +08:00

91 lines
2.9 KiB
Go

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