perf: 减少统计页面资料读取并优化区服选项查询

This commit is contained in:
Yvan
2026-11-04 16:42:11 +08:00
parent 503f3b1a7d
commit 2efce4d821
8 changed files with 184 additions and 13 deletions
+18 -3
View File
@@ -213,9 +213,6 @@ func (r *analyticsRepo) Aggregate(ctx context.Context, kind business.AnalyticsKi
return result, nil
}
}
if err := fillAnalyticsNames(db, kind, scope, f, rowMap); err != nil {
return nil, err
}
for _, row := range rowMap {
result.Rows = append(result.Rows, row)
}
@@ -228,6 +225,18 @@ func (r *analyticsRepo) Aggregate(ctx context.Context, kind business.AnalyticsKi
})
return result, nil
}
func (r *analyticsRepo) FillNames(ctx context.Context, kind business.AnalyticsKind, scope business.AnalyticsScope, f business.AnalyticsFilter, rows []*business.AnalyticsRow) error {
if len(rows) == 0 {
return nil
}
byKey := make(map[business.AnalyticsKey]*business.AnalyticsRow, len(rows))
for _, row := range rows {
byKey[row.AnalyticsKey] = row
}
return fillAnalyticsNames(r.data.DB().WithContext(ctx), kind, scope, f, byKey)
}
func analyticsPairs(keys []business.AnalyticsKey) [][]any {
result := make([][]any, 0, len(keys))
for _, key := range keys {
@@ -269,6 +278,12 @@ func fillAnalyticsNames(db *gorm.DB, kind business.AnalyticsKind, scope business
for key := range rows {
keys = append(keys, key)
}
sort.Slice(keys, func(i, j int) bool {
if keys[i].ID != keys[j].ID {
return keys[i].ID < keys[j].ID
}
return keys[i].SourceDB < keys[j].SourceDB
})
type entityPO struct {
ID int64
SourceDB string `gorm:"column:source_db"`