package user import ( "fmt" "time" "91porn-server/common/log" "91porn-server/common/timeutil/timerange" "91porn-server/models/s/statrecordmod" ) func RunSync(defaultDate time.Time) { log.Info("SqlCollasper sync") defer log.Info("SqlCollasper sync user total work end.") // 获取上次数据同步的记录时间 lastSyncAt, err := statrecordmod.LastRecordTime(statrecordmod.SqlCollasperUserTotalWork, defaultDate) if err != nil { log.Error("SqlCollasper RunSync user total work get last record time failed", log.E(err)) return } var now = time.Now() var recentMinute = timerange.RecentMinute(now, statrecordmod.FiveMinuteScale) for recentMinute.After(lastSyncAt) { var end time.Time if lastSyncAt.Add(time.Hour * 24).Before(now) { end = lastSyncAt.Add(time.Hour * 24) } else { end = lastSyncAt.Add(statrecordmod.FiveMinuteScale * time.Minute) if end.After(recentMinute) { end = recentMinute } } var subTimeRange = timerange.TimeRange{ Head: lastSyncAt, Tail: end, } if err = commit(subTimeRange); err != nil { log.Error("SqlCollasper sync audiobook data RunSync commit err! ", log.E(err)) return } lastSyncAt = end } } func commit(t timerange.TimeRange) error { if err := doSyncWorkCount(t.Head, t.Tail); err != nil { return fmt.Errorf("SqlCollasper sync commit incPageView failed!, err:%+v\n", err) } if err := statrecordmod.UpsertOneTrans(nil, statrecordmod.SqlCollasperUserTotalWork, t.Tail); err != nil { return fmt.Errorf("SqlCollasper sync commit UpsertOneTrans failed!, err:%+v\n", err) } return nil }