- Add internal/service/finance/types.go: AssetType enum, param/result structs - Add internal/service/finance/service.go: Service interface, read-only ctor - Add internal/service/finance/query_user.go: QueryUserProfitLoss (4 fan-out scans) - Add internal/service/finance/query_activity.go: QueryActivityProfitLoss (4 fan-out scans) - Add internal/service/finance/service_test.go: 22 integration tests (all pass) - Wire finance.Service into admin handler (admin.go) - Replace dashboard_activity cost scan with finance.Service call (D-09: value_cents single source of truth) - Revenue/gamepass/draw-count scans unchanged; response schema fully compatible Co-Authored-By: claude-flow <ruv@ruv.net>
74 lines
2.6 KiB
Go
Executable File
74 lines
2.6 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"
|
|
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"
|
|
|
|
"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)
|
|
}
|
|
|
|
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),
|
|
}
|
|
}
|