@@ -0,0 +1,54 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user