package domain import ( "admin/apps/game/domain/projects" "admin/apps/game/domain/repo" "admin/internal/consts" "admin/internal/errcode" "admin/internal/model/dto" "admin/lib/xlog" "context" "github.com/ClickHouse/clickhouse-go/v2/lib/driver" "github.com/jmoiron/sqlx" "gorm.io/gorm" "time" ) type GameLogService struct { projectRepo repo.IProjectRepo repo repo.IGameLogRepo } func NewGameLogSvc(db *gorm.DB, metaDb *gorm.DB, ckDb driver.Conn, clickHouseSqlx *sqlx.DB) *GameLogService { return &GameLogService{projectRepo: repo.NewProjectRepo(db), repo: repo.NewGameLogRepo(metaDb, ckDb, clickHouseSqlx)} } func (svc *GameLogService) QueryEventList(projectId, appId int, eventName []string, serverId int, account, roleId string, pageNo, pageLen int, dateStart, dateEnd time.Time) (totalCount int, fieldsDescInfo []*dto.GameLogFieldInfo, rows [][]any, err error) { _, projectEt, find, err := svc.projectRepo.GetById(projectId) if err != nil { return 0, nil, nil, err } if !find { return 0, nil, nil, errcode.New(errcode.ServerError, "not found project %v db data", projectId) } var attrList []*repo.AttrInfo attrList, err = svc.repo.QueryAttrListByEvent(appId, eventName) if err != nil { return } querier := svc.repo.NewEventListQuerier("xwl_event41", eventName, attrList) totalCount, fieldsDescInfo, rows, err = querier.CondRoleId(serverId, roleId).CondAccount(serverId, account). Go(context.Background(), pageNo, pageLen, dateStart, dateEnd) if err != nil { xlog.Warnf("event list error:%v", err) return } hook := projects.GetProjectResourceHook(projectEt, consts.ResourcesName_GameLog) if h, ok := hook.(projects.IGameLogEventListHook); ok { totalCount, fieldsDescInfo, rows = h.Trim(projectEt, eventName, totalCount, fieldsDescInfo, rows) } return }