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")
	//}
}
