114 lines
3.7 KiB
Go
114 lines
3.7 KiB
Go
package build
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"management/internal/erpserver/handler"
|
|
"management/internal/erpserver/repository"
|
|
"management/internal/erpserver/repository/seed"
|
|
"management/internal/erpserver/repository/system"
|
|
v1 "management/internal/erpserver/service/v1"
|
|
"management/internal/erpserver/service/v1/common"
|
|
system2 "management/internal/erpserver/service/v1/system"
|
|
"management/internal/pkg/cache"
|
|
"management/internal/pkg/config"
|
|
"management/internal/pkg/mid"
|
|
"management/internal/pkg/render"
|
|
"management/internal/pkg/session"
|
|
|
|
"github.com/drhin/logger"
|
|
)
|
|
|
|
func Initialize(conf *config.Config, log *logger.Logger) (http.Handler, func(), error) {
|
|
db, cleanup, err := repository.NewDB(conf, log)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
rd, cleanup2, err := cache.ConnectRedis(conf, log)
|
|
if err != nil {
|
|
cleanup()
|
|
return nil, nil, err
|
|
}
|
|
|
|
sm, err := session.NewSCSManager(rd, conf)
|
|
if err != nil {
|
|
cleanup2()
|
|
cleanup()
|
|
return nil, nil, err
|
|
}
|
|
|
|
redisCache := cache.NewRedisCache(rd)
|
|
|
|
// =================================================================================================================
|
|
// repo
|
|
|
|
repo := repository.NewRepository(db, log)
|
|
transaction := repository.NewTransaction(repo)
|
|
|
|
userRepository := system.NewUserRepository(repo)
|
|
roleRepository := system.NewRoleRepository(repo)
|
|
menuRepository := system.NewMenuRepository(repo)
|
|
roleMenuRepository := system.NewRoleMenuRepository(repo)
|
|
departmentRepository := system.NewDepartmentRepository(repo)
|
|
configRepository := system.NewConfigRepository(repo)
|
|
loginLogRepository := system.NewLoginLogRepository(repo)
|
|
auditLogRepository := system.NewAuditLogRepository(repo)
|
|
|
|
sd := seed.NewSeed(configRepository, departmentRepository, roleRepository, userRepository, menuRepository)
|
|
if err := sd.Run(); err != nil {
|
|
cleanup2()
|
|
cleanup()
|
|
return nil, nil, err
|
|
}
|
|
|
|
// =================================================================================================================
|
|
// service
|
|
|
|
service := v1.NewService(log, transaction, sm, redisCache)
|
|
|
|
loginLogService := system2.NewLoginLogService(service, loginLogRepository)
|
|
roleMenuService := system2.NewRoleMenuService(service, roleMenuRepository)
|
|
roleService := system2.NewRoleService(service, roleRepository)
|
|
userService := system2.NewUserService(service, userRepository, roleService, loginLogService)
|
|
menuService := system2.NewMenuService(service, menuRepository, roleService, roleMenuService)
|
|
departmentService := system2.NewDepartmentService(service, departmentRepository)
|
|
configService := system2.NewConfigService(service, configRepository)
|
|
captchaService := common.NewCaptchaService()
|
|
auditLogService := system2.NewAuditLogService(service, auditLogRepository)
|
|
|
|
// =================================================================================================================
|
|
// mid
|
|
|
|
// 初始化审计缓冲器
|
|
mid.InitAuditBuffer(auditLogService, log)
|
|
|
|
// =================================================================================================================
|
|
// render
|
|
|
|
rdr := render.NewRender(log)
|
|
|
|
// =================================================================================================================
|
|
// app route
|
|
|
|
cfg := handler.Config{
|
|
Conf: conf,
|
|
Log: log,
|
|
Sm: sm,
|
|
Render: rdr,
|
|
CaptchaService: captchaService,
|
|
UserService: userService,
|
|
RoleService: roleService,
|
|
DepartmentService: departmentService,
|
|
MenuService: menuService,
|
|
ConfigService: configService,
|
|
AuditLogService: auditLogService,
|
|
LoginLogService: loginLogService,
|
|
}
|
|
app := handler.WebApp(cfg)
|
|
return app, func() {
|
|
cleanup2()
|
|
cleanup()
|
|
}, nil
|
|
}
|