| @@ -35,8 +35,11 @@ func (*ObjectAccessStatDB) BatchAddCounter(ctx SQLContext, entries []coormq.AddA | |||||
| return err | 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 { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| @@ -54,12 +54,24 @@ func (t *UpdatePackageAccessStatAmount) Execute(execCtx ExecuteContext) { | |||||
| return | 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 { | } else { | ||||
| err := execCtx.Args.DB.PackageAccessStat().BatchUpdateAmount(execCtx.Args.DB.SQLCtx(), t.PackageIDs, config.Cfg().AccessStatHistoryAmount) | err := execCtx.Args.DB.PackageAccessStat().BatchUpdateAmount(execCtx.Args.DB.SQLCtx(), t.PackageIDs, config.Cfg().AccessStatHistoryAmount) | ||||
| if err != nil { | if err != nil { | ||||
| log.Warnf("batch update package access stat amount: %v", err) | log.Warnf("batch update package access stat amount: %v", err) | ||||
| return | 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 | |||||
| } | |||||
| } | } | ||||
| } | } | ||||