You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.6 KiB
58 lines
1.6 KiB
/* |
|
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) |
|
}
|
|
|