package service import ( "blazing/cool" "blazing/modules/blazing/model" "context" "fmt" "github.com/gogf/gf/v2/util/gconv" ) // 获取精灵信息 0是仓库,1是背包,2是放生 func (s *UserService) PetInfo(flag int) []model.PetEX { var tt []model.PetEX err := cool.DBM(s.pet.Model).Where("player_id", s.userid).Where("in_bag", flag).Scan(&tt) if err != nil { return []model.PetEX{} } for i := 0; i < len(tt); i++ { tt[i].Data.CatchTime = tt[i].CatchTime } return tt } func (s *UserService) PetInfo_One_exec(cachetime uint32, t func(*model.PetEX)) { m := cool.DBM(s.pet.Model).Where("player_id", s.userid).Where("catch_time", cachetime) var tt model.PetEX m.Scan(&tt) tt.Data.CatchTime = tt.CatchTime t(&tt) m.Update(tt) } func (s *UserService) PetInfo_One(cachetime uint32) model.PetEX { m := cool.DBM(s.pet.Model).Where("player_id", s.userid).Where("catch_time", cachetime) var tt model.PetEX m.Scan(&tt) tt.Data.CatchTime = tt.CatchTime return tt } func (s *UserService) PetAdd(y model.PetInfo) { for { m1 := cool.DBM(s.pet.Model).Where("player_id", s.userid) var player model.PetEX player.PlayerID = s.userid player.Data = y player.CatchTime = y.CatchTime player.InBag = 0 _, err := m1.Insert(player) if err != nil { y.CatchTime += 1 //自增保持时间排序 continue } break } } func (s *PetService) ModifyBefore(ctx context.Context, method string, param map[string]interface{}) (err error) { if method == "Update" { admin := cool.GetAdmin(ctx) userId := admin.UserId if 0 != gconv.Uint(param["in_bag"]) { err = fmt.Errorf("修改失败") } if userId != gconv.Uint(param["player_id"]) { err = fmt.Errorf("修改失败") } } return } type PetService struct { *cool.Service } func NewPetService() *PetService { return &PetService{ &cool.Service{ Model: model.NewPet(), PageQueryOp: &cool.QueryOp{ Where: func(ctx context.Context) [][]interface{} { var ( admin = cool.GetAdmin(ctx) userId = admin.UserId ) return [][]interface{}{ {"player_id", userId, true}, {"in_bag", 0, true}, } }, }, }, } }