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" snapshotsvc "bindbox-game/internal/service/snapshot" synthesissvc "bindbox-game/internal/service/synthesis" syscfgsvc "bindbox-game/internal/service/sysconfig" 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 } 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), } }