change router struct
This commit is contained in:
113
cmd/build/build.go
Normal file
113
cmd/build/build.go
Normal file
@@ -0,0 +1,113 @@
|
||||
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
|
||||
}
|
||||
17
cmd/erp.go
17
cmd/erp.go
@@ -7,9 +7,8 @@ import (
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
"management/internal/erpserver"
|
||||
"management/cmd/build"
|
||||
"management/internal/pkg/config"
|
||||
"management/internal/pkg/mid"
|
||||
|
||||
"github.com/drhin/logger"
|
||||
"github.com/fvbock/endless"
|
||||
@@ -51,34 +50,26 @@ func runErp() error {
|
||||
return err
|
||||
}
|
||||
|
||||
app, fn, err := erpserver.NewWire(conf, l)
|
||||
app, fn, err := build.Initialize(conf, l)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer fn()
|
||||
|
||||
// database seed
|
||||
if err := app.Seed.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 初始化审计缓冲器
|
||||
mid.InitAuditBuffer(app.AuditLogService, l)
|
||||
|
||||
address := fmt.Sprintf("%s:%d", conf.App.Host, conf.App.Port)
|
||||
log.Printf("Starting manage server on %s", address)
|
||||
|
||||
if runtime.GOOS == "windows" {
|
||||
s := &http.Server{
|
||||
Addr: address,
|
||||
Handler: app.Router,
|
||||
Handler: app,
|
||||
ReadTimeout: 20 * time.Second,
|
||||
WriteTimeout: 20 * time.Second,
|
||||
MaxHeaderBytes: 1 << 20,
|
||||
}
|
||||
return s.ListenAndServe()
|
||||
} else {
|
||||
s := endless.NewServer(address, app.Router)
|
||||
s := endless.NewServer(address, app)
|
||||
s.ReadHeaderTimeout = 20 * time.Second
|
||||
s.WriteTimeout = 20 * time.Second
|
||||
s.MaxHeaderBytes = 1 << 20
|
||||
|
||||
Reference in New Issue
Block a user