83 lines
3.0 KiB
Go
Executable File

package admin
import (
"bindbox-game/internal/pkg/logger"
"bindbox-game/internal/repository/mysql"
"bindbox-game/internal/repository/mysql/dao"
activitysvc "bindbox-game/internal/service/activity"
adminsvc "bindbox-game/internal/service/admin"
bannersvc "bindbox-game/internal/service/banner"
channelsvc "bindbox-game/internal/service/channel"
douyinsvc "bindbox-game/internal/service/douyin"
financesvc "bindbox-game/internal/service/finance"
gamesvc "bindbox-game/internal/service/game"
livestreamsvc "bindbox-game/internal/service/livestream"
productsvc "bindbox-game/internal/service/product"
prizegrantsvc "bindbox-game/internal/service/prize_grant_activity"
snapshotsvc "bindbox-game/internal/service/snapshot"
synthesissvc "bindbox-game/internal/service/synthesis"
syscfgsvc "bindbox-game/internal/service/sysconfig"
thresholdsvc "bindbox-game/internal/service/threshold_activity"
titlesvc "bindbox-game/internal/service/title"
usersvc "bindbox-game/internal/service/user"
welfaresvc "bindbox-game/internal/service/welfare_activity"
"github.com/redis/go-redis/v9"
)
type handler struct {
logger logger.CustomLogger
writeDB *dao.Query
readDB *dao.Query
repo mysql.Repo
svc adminsvc.Service
activity activitysvc.Service
product productsvc.Service
userSvc usersvc.Service
banner bannersvc.Service
channel channelsvc.Service
title titlesvc.Service
syscfg syscfgsvc.Service
snapshotSvc snapshotsvc.Service
rollbackSvc snapshotsvc.RollbackService
douyinSvc douyinsvc.Service
livestream livestreamsvc.Service
synthesis synthesissvc.Service
financeSvc financesvc.Service // P&L service (read-only)
welfare welfaresvc.Service
threshold thresholdsvc.Service
prizeGrant prizegrantsvc.Service
}
func New(logger logger.CustomLogger, db mysql.Repo, rdb *redis.Client) *handler {
userSvc := usersvc.New(logger, db)
snapshotSvc := snapshotsvc.NewService(db)
rollbackSvc := snapshotsvc.NewRollbackService(db, snapshotSvc)
syscfgSvc := syscfgsvc.New(logger, db)
ticketSvc := gamesvc.NewTicketService(logger, db) // 游戏资格服务
titleSvc := titlesvc.New(logger, db) // 称号服务
return &handler{
logger: logger,
writeDB: dao.Use(db.GetDbW()),
readDB: dao.Use(db.GetDbR()),
repo: db,
svc: adminsvc.New(logger, db),
activity: activitysvc.New(logger, db, userSvc, rdb),
product: productsvc.New(logger, db),
userSvc: userSvc,
banner: bannersvc.New(logger, db),
channel: channelsvc.New(logger, db),
title: titleSvc,
syscfg: syscfgSvc,
snapshotSvc: snapshotSvc,
rollbackSvc: rollbackSvc,
douyinSvc: douyinsvc.New(logger, db, syscfgSvc, ticketSvc, userSvc, titleSvc),
livestream: livestreamsvc.New(logger, db, ticketSvc),
synthesis: synthesissvc.New(db),
financeSvc: financesvc.New(logger, db),
welfare: welfaresvc.New(logger, db),
threshold: thresholdsvc.New(logger, db),
prizeGrant: prizegrantsvc.New(logger, db),
}
}