59 lines
1.6 KiB
Go
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)
|
|
}
|