1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package jobs
- import (
- "encoding/json"
- "gadmin/config"
- model2 "gadmin/internal/gorm/model"
- "gadmin/internal/gorm/query"
- "github.com/sirupsen/logrus"
- "gorm.io/gen"
- "log"
- )
- var MaxTalents = new(jMaxTalents)
- type jMaxTalents struct {
- Stat map[int]int
- }
- func (j *jMaxTalents) Run() {
- logrus.Info("jMaxTalents Run.....")
- j.Stat = make(map[int]int)
- j.stat()
- }
- func (j *jMaxTalents) stat() {
- var (
- results []*model2.PlayerMaterial
- m = query.Use(config.GDB1).PlayerMaterial
- )
- err := m.Select(m.ID, m.Talents).
- FindInBatches(&results, 10000, func(tx gen.Dao, batch int) error {
- for _, result := range results {
- if result.Talents == "" {
- logrus.Warningf("无Talents,跳过..")
- continue
- }
- var talents = make(map[int]int)
- if err := json.Unmarshal([]byte(result.Talents), &talents); err != nil {
- logrus.Warningf("Unmarshal talents err:%+v", err)
- panic(err)
- }
- if len(talents) > 0 {
- for id, level := range talents {
- lv, ok := j.Stat[id]
- if !ok {
- j.Stat[id] = level
- continue
- }
- if lv < level {
- j.Stat[id] = level
- continue
- }
- }
- }
- }
- return nil
- })
- if err != nil {
- panic(err)
- } else {
- logrus.Warningf("stat:%+v", j.Stat)
- log.Println("stat MaxTalents finished")
- }
- }
|