go-common/app/job/main/spy/service/rebuild.go
2019-04-22 18:49:16 +08:00

59 lines
1.6 KiB
Go

/*
rebuild: user portrait score reset to normal if it's score large than punishment threshold score
*/
package service
import (
"context"
"time"
spy "go-common/app/service/main/spy/model"
"go-common/library/log"
)
const (
_normal = 0
_ps = 100
)
func (s *Service) reBuild() {
var (
err error
count int64
)
current := time.Now()
before30d, _ := time.ParseDuration("-720h")
before31d, _ := time.ParseDuration("-744h")
start := current.Add(before31d)
end := current.Add(before30d)
log.Info("ReBuild task start: start:(%s) end:(%s))", start, end)
for t := 0; t < int(s.c.Property.UserInfoShard); t++ {
if count, err = s.dao.ReBuildMidCount(context.TODO(), t, _normal, start, end); err != nil {
log.Error("s.dao.ReBuildMidCount(%s, %s), err(%v)", start, end, err)
continue
}
log.Info("ReBuild task: index:%d, count:%d)", t, count)
if count <= 0 {
continue
}
total := count / _ps
log.Info("ReBuild task: shard:%d, count:%d, total:%d)", t, count, total)
for i := 0; int64(i) <= total; i++ {
midList, err := s.dao.ReBuildMidList(context.TODO(), t, _normal, start, end, _ps)
if err != nil {
log.Error("s.dao.ReBuildMidList(%s, %s, %d, %d)", start, end, i, _ps)
continue
}
for _, mid := range midList {
if err := s.spyRPC.ReBuildPortrait(context.TODO(), &spy.ArgReBuild{Mid: mid, Reason: "自动恢复行为得分"}); err != nil {
log.Error("s.spyRPC.ReBuildPortrait(%d), err:%v", mid, err)
continue
}
log.Info("ReBuild task: mid(%d) ReBuild Portrait success)", mid)
}
}
}
log.Info("ReBuild task end: start:(%s) end:(%s))", start, end)
}