From 4e2e2a3a52b27ab09c53d9a4e2cde15a87b00642 Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Wed, 11 Sep 2024 16:10:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=BB=9F=E8=AE=A1=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/pkgs/db/object_access_stat.go | 7 +++++-- .../event/update_package_access_stat_amount.go | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/common/pkgs/db/object_access_stat.go b/common/pkgs/db/object_access_stat.go index 3fbd0cc..46f9544 100644 --- a/common/pkgs/db/object_access_stat.go +++ b/common/pkgs/db/object_access_stat.go @@ -35,8 +35,11 @@ func (*ObjectAccessStatDB) BatchAddCounter(ctx SQLContext, entries []coormq.AddA return err } -func (*ObjectAccessStatDB) BatchUpdateAmount(ctx SQLContext, objIDs []cdssdk.ObjectID, historyWeight float64) error { - stmt, args, err := sqlx.In("update ObjectAccessStat set Amount=Amount*?+Counter*(1-?), Counter = 0 where ObjectID in (?)", historyWeight, historyWeight, objIDs) +func (*ObjectAccessStatDB) BatchUpdateAmountInPackage(ctx SQLContext, pkgIDs []cdssdk.PackageID, historyWeight float64) error { + stmt, args, err := sqlx.In("update ObjectAccessStat inner join Object"+ + " on ObjectAccessStat.ObjectID = Object.ObjectID"+ + " set Amount=Amount*?+Counter*(1-?), Counter = 0"+ + " where PackageID in (?)", historyWeight, historyWeight, pkgIDs) if err != nil { return err } diff --git a/scanner/internal/event/update_package_access_stat_amount.go b/scanner/internal/event/update_package_access_stat_amount.go index b2346dd..072e9c6 100644 --- a/scanner/internal/event/update_package_access_stat_amount.go +++ b/scanner/internal/event/update_package_access_stat_amount.go @@ -54,12 +54,24 @@ func (t *UpdatePackageAccessStatAmount) Execute(execCtx ExecuteContext) { return } + err = execCtx.Args.DB.ObjectAccessStat().UpdateAllAmount(execCtx.Args.DB.SQLCtx(), config.Cfg().AccessStatHistoryAmount) + if err != nil { + log.Warnf("update all object access stat amount: %v", err) + return + } + } else { err := execCtx.Args.DB.PackageAccessStat().BatchUpdateAmount(execCtx.Args.DB.SQLCtx(), t.PackageIDs, config.Cfg().AccessStatHistoryAmount) if err != nil { log.Warnf("batch update package access stat amount: %v", err) return } + + err = execCtx.Args.DB.ObjectAccessStat().BatchUpdateAmountInPackage(execCtx.Args.DB.SQLCtx(), t.PackageIDs, config.Cfg().AccessStatHistoryAmount) + if err != nil { + log.Warnf("batch update object access stat amount in package: %v", err) + return + } } }