package jobs import ( "github.com/sirupsen/logrus" ) var RoleStill = new(jRoleStill) type jRoleStill struct{} type NewDropedRole struct { ID int64 `json:"id"` Order int `json:"order"` //Wear bool `json:"wear"` } func (j *jRoleStill) Run() { logrus.Info("jRoleStill Run.....") j.saveMaterial() } func (j *jRoleStill) saveMaterial() { // UPDATE `player_material` SET `roles` = '[{\"id\":100000010,\"order\":1}]' WHERE `roles` = '[{\"id\":100000010,\"wear\":true}]' // Roles string `gorm:"column:roles" json:"roles"` // .Where(u.ID.Eq(1)) .Where(u.Playerid.Gt(17367)) //var ( // results []*model2.UserAccount // m = query.Use(config.GDB).PlayerMaterial // u = query.Use(config.GDB).UserAccount //) //err := u.Select(u.ID, m.Roles). // LeftJoin(m, m.Playerid.EqCol(u.ID)). // //Where(u.ID.Eq(206)). // //Where(u.ID.Gt(584915)). // FindInBatches(&results, 1000, func(tx gen.Dao, batch int) error { // for _, result := range results { // logrus.Infof("playerid :%+v", result) // if result.Roles == "" { // logrus.Warningf("无Roles,跳过..") // continue // } // if strings.Contains(result.Roles, "order") { // logrus.Warningf("已转换,跳过..") // continue // } // var ( // oldRole []model.DropedRole // newRole []NewDropedRole // ) // // if err := json.Unmarshal([]byte(result.Roles), &oldRole); err != nil { // logrus.Warningf("Unmarshal oldRole err:%+v", err) // panic(err) // } // // if len(oldRole) > 0 { // for _, v := range oldRole { // order := 0 // if v.Wear { // order = 1 // } // newRole = append(newRole, NewDropedRole{ // ID: v.ID, // Order: order, // }) // } // // roles, err := json.Marshal(newRole) // if err != nil { // logrus.Warningf("json.Marshal newRole err:%+v", err) // panic(err) // } // data := model2.PlayerMaterial{Roles: string(roles)} // if _, err = query.Use(config.GDB).PlayerMaterial. // Where(m.Playerid.Eq(result.ID)). // Updates(&data); err != nil { // logrus.Warnf("PlayerMaterial Updates err . %v", err) // panic(err) // } // } // } // return nil // }) // //if err != nil { // panic(err) //} else { // log.Println("update finished") //} }