uniugm/admin/apps/game/domain/gamelog.go
2025-07-17 17:09:09 +08:00

58 lines
1.8 KiB
Go

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
}