优化结构

This commit is contained in:
Yvan
2026-08-20 20:39:09 +08:00
parent b88c220e20
commit 01b5c2f78a
73 changed files with 3171 additions and 794 deletions
+41 -37
View File
@@ -11,6 +11,11 @@ import (
"kra/internal/biz"
"kra/internal/conf"
"kra/internal/data"
"kra/internal/data/payment"
"kra/internal/data/system"
"kra/internal/integration/cache"
"kra/internal/integration/email"
"kra/internal/integration/storage"
"kra/internal/server"
"kra/internal/server/handler"
"kra/internal/service"
@@ -27,58 +32,57 @@ import (
// wireApp init kratos application.
func wireApp(confServer *conf.Server, runtime *conf.Runtime, logger *slog.Logger, reloadableLogger *logging.ReloadableLogger, string2 string) (*kratos.App, func(), error) {
dataData, cleanup, err := data.NewData(runtime, logger)
reloadable, err := storage.NewFileStorage(runtime)
if err != nil {
return nil, nil, err
}
authorityAccessRepo := data.NewAuthorityAccessRepo(dataData)
apiRepo := data.NewAPIRepo(dataData)
dataData, cleanup, err := data.NewData(runtime, logger, reloadable)
if err != nil {
return nil, nil, err
}
authorityAccessRepo := system.NewAuthorityAccessRepo(dataData)
apiRepo := system.NewAPIRepo(dataData)
accessControlUsecase := biz.NewAccessControlUsecase(authorityAccessRepo, apiRepo)
accessControlService := service.NewAccessControlService(accessControlUsecase)
authorityUsecase := biz.NewAuthorityUsecase(authorityAccessRepo)
authorityService := service.NewAuthorityService(authorityUsecase)
authority := handler.NewAuthority(authorityService)
menuRepo := data.NewMenuRepo(dataData)
menuRepo := system.NewMenuRepo(dataData)
menuUsecase := biz.NewMenuUsecase(menuRepo)
menuService := service.NewMenuService(menuUsecase)
menu := handler.NewMenu(menuService)
apiUsecase := biz.NewAPIUsecase(apiRepo)
runtimeSettings := data.NewRuntimeSettings(runtime)
runtimeSettings := system.NewRuntimeSettings(runtime)
apiService := service.NewAPIService(apiUsecase, runtimeSettings)
api := handler.NewAPI(apiService)
permissionRepo := data.NewPermissionRepo(dataData)
permissionRepo := system.NewPermissionRepo(dataData)
permissionUsecase := biz.NewPermissionUsecase(permissionRepo)
permissionService := service.NewPermissionService(permissionUsecase)
permission := handler.NewPermission(permissionService)
departmentRepo := data.NewDepartmentRepo(dataData)
departmentRepo := system.NewDepartmentRepo(dataData)
departmentUsecase := biz.NewDepartmentUsecase(departmentRepo)
departmentService := service.NewDepartmentService(departmentUsecase)
positionRepo := data.NewPositionRepo(dataData)
positionRepo := system.NewPositionRepo(dataData)
positionUsecase := biz.NewPositionUsecase(positionRepo)
positionService := service.NewPositionService(positionUsecase)
organization := handler.NewOrganization(departmentService, positionService)
announcementRepo := data.NewAnnouncementRepo(dataData)
announcementRepo := system.NewAnnouncementRepo(dataData)
announcementUsecase := biz.NewAnnouncementUsecase(announcementRepo)
announcementService := service.NewAnnouncementService(announcementUsecase)
announcement := handler.NewAnnouncement(announcementService)
emailRepo := data.NewEmailRepo(runtime)
emailRepo := email.NewEmailRepo(runtime)
emailUsecase := biz.NewEmailUsecase(emailRepo)
emailService := service.NewEmailService(emailUsecase)
email := handler.NewEmail(emailService)
paymentRepo := data.NewPaymentRepo(dataData)
paymentOrderRepo := data.NewPaymentOrderRepo(dataData)
handlerEmail := handler.NewEmail(emailService)
paymentRepo := payment.NewPaymentRepo(dataData)
paymentOrderRepo := payment.NewPaymentOrderRepo(dataData)
paymentUsecase := biz.NewPaymentUsecase(paymentRepo, paymentOrderRepo, logger)
paymentService := service.NewPaymentService(paymentUsecase)
payment := handler.NewPayment(paymentService)
taskRepo := data.NewTaskRepo(dataData)
handlerPayment := handler.NewPayment(paymentService)
taskRepo := system.NewTaskRepo(dataData)
taskUsecase := biz.NewTaskUsecase(taskRepo)
mediaRepo := data.NewMediaRepo(dataData)
fileStorage, err := data.NewFileStorage(dataData)
if err != nil {
cleanup()
return nil, nil, err
}
mediaUsecase := biz.NewMediaUsecase(mediaRepo, fileStorage, runtimeSettings)
mediaRepo := system.NewMediaRepo(dataData)
mediaUsecase := biz.NewMediaUsecase(mediaRepo, reloadable, runtimeSettings)
taskExecutor := worker.NewTaskExecutor(taskUsecase, mediaUsecase, runtime)
taskScheduler := worker.NewTaskScheduler(taskUsecase, authorityUsecase, taskExecutor, logger)
taskRuntime := worker.NewTaskRuntime(taskScheduler)
@@ -87,46 +91,46 @@ func wireApp(confServer *conf.Server, runtime *conf.Runtime, logger *slog.Logger
task := handler.NewTask(taskService)
mediaService := service.NewMediaService(mediaUsecase, runtimeSettings)
media := handler.NewMedia(mediaService)
auditQueryRepo := data.NewAuditRepo(dataData)
auditQueryRepo := system.NewAuditRepo(dataData)
auditUsecase := biz.NewAuditUsecase(auditQueryRepo)
auditService := service.NewAuditService(auditUsecase)
auditRecordRepo := data.NewAuditRecorderRepo(dataData)
auditRecordRepo := system.NewAuditRecorderRepo(dataData)
auditRecorderUsecase := biz.NewAuditRecorderUsecase(auditRecordRepo)
auditRecorder := service.NewAuditRecorder(auditRecorderUsecase)
logFileRepo := data.NewLogFileRepo(dataData)
logFileRepo := system.NewLogFileRepo(dataData)
logViewerUsecase := biz.NewLogViewerUsecase(logFileRepo)
logViewerService := service.NewLogViewerService(logViewerUsecase)
audit := handler.NewAudit(auditService, auditRecorder, logViewerService, logger)
exportRepo := data.NewExportRepo(dataData)
exportRepo := system.NewExportRepo(dataData)
exportUsecase := biz.NewExportUsecase(exportRepo)
cache := data.NewCache(dataData)
exportService := service.NewExportService(exportUsecase, cache)
bizCache := cache.New(dataData)
exportService := service.NewExportService(exportUsecase, bizCache)
export := handler.NewExport(exportService)
versionRepo := data.NewVersionRepo(dataData)
versionRepo := system.NewVersionRepo(dataData)
versionUsecase := biz.NewVersionUsecase(versionRepo)
versionService := service.NewVersionService(versionUsecase)
version := handler.NewVersion(versionService)
dictionaryRepo := data.NewDictionaryRepo(dataData)
dictionaryRepo := system.NewDictionaryRepo(dataData)
dictionaryUsecase := biz.NewDictionaryUsecase(dictionaryRepo)
dictionaryService := service.NewDictionaryService(dictionaryUsecase)
dictionary := handler.NewDictionary(dictionaryService)
parameterRepo := data.NewParameterRepo(dataData)
parameterRepo := system.NewParameterRepo(dataData)
parameterUsecase := biz.NewParameterUsecase(parameterRepo)
parameterService := service.NewParameterService(parameterUsecase)
parameter := handler.NewParameter(parameterService)
apiTokenRepo := data.NewAPITokenRepo(dataData)
apiTokenRepo := system.NewAPITokenRepo(dataData)
tokenUsecase := biz.NewTokenUsecase(apiTokenRepo)
tokenIssuer := data.NewTokenIssuer(runtimeSettings)
tokenIssuer := system.NewTokenIssuer(runtimeSettings)
tokenService := service.NewTokenService(tokenUsecase, tokenIssuer)
apiToken := handler.NewAPIToken(tokenService)
initializationRepo := data.NewInitializationRepo(dataData)
systemConfigUsecase := biz.NewSystemConfigUsecase(initializationRepo, taskRuntime)
systemConfigService := service.NewSystemConfigService(systemConfigUsecase, runtimeSettings)
securityRepo := data.NewSecurityRepo(dataData)
securityUsecase := biz.NewSecurityUsecase(securityRepo, cache, runtimeSettings, tokenUsecase)
securityRepo := system.NewSecurityRepo(dataData)
securityUsecase := biz.NewSecurityUsecase(securityRepo, bizCache, runtimeSettings, tokenUsecase)
securityService := service.NewSecurityService(securityUsecase)
systemConfig := handler.NewSystemConfig(systemConfigService, securityService)
userRepo := data.NewUserRepo(dataData)
userRepo := system.NewUserRepo(dataData)
userUsecase := biz.NewUserUsecase(userRepo)
authenticationUsecase := biz.NewAuthenticationUsecase(userUsecase, securityUsecase, tokenIssuer, auditRecordRepo)
authService := service.NewAuthService(authenticationUsecase)
@@ -135,7 +139,7 @@ func wireApp(confServer *conf.Server, runtime *conf.Runtime, logger *slog.Logger
user := handler.NewUser(userService, authService)
navigation := handler.NewNavigation(userService)
session := handler.NewSession(tokenService)
set := handler.NewSet(authority, menu, api, permission, organization, announcement, email, payment, task, media, audit, export, version, dictionary, parameter, apiToken, systemConfig, public, user, navigation, session)
set := handler.NewSet(authority, menu, api, permission, organization, announcement, handlerEmail, handlerPayment, task, media, audit, export, version, dictionary, parameter, apiToken, systemConfig, public, user, navigation, session)
engine := server.NewGinEngine(runtime, accessControlService, set, authService, securityService, auditRecorder, logger, string2)
httpServer := server.NewGinServer(confServer, engine)
app := newApp(logger, httpServer, taskScheduler, auditRecorder, reloadableLogger)