package service import ( "blazing/cool" "blazing/modules/player/model" "github.com/gogf/gf/v2/frame/g" "github.com/samber/lo" ) type TitleService struct { BaseService } func (s *TitleService) Get() []uint32 { m1 := s.TestModel(s.Model) var talks *model.Title m1.Scan(&talks) if talks == nil { return []uint32{} } return talks.AvailableTitle } func (s *TitleService) Can(id uint32) bool { m1 := s.TestModel(s.Model) var talks *model.Title m1.Scan(&talks) if talks == nil { return false } _, ok := lo.Find(talks.AvailableTitle, func(item uint32) bool { return item == id }) return ok } func (s *TitleService) Give(id uint32) bool { m1 := s.TestModel(s.Model) var talks *model.Title m1.Scan(&talks) if talks == nil { m := s.TestModel(s.Model) data := g.Map{ "player_id": s.userid, "available_title": []uint32{id}, "is_vip": cool.Config.ServerInfo.IsVip, } m.Data(data).Insert() return true } talks.AvailableTitle = append(talks.AvailableTitle, id) m1.Save() return true } func NewTitleService(id uint32) *TitleService { return &TitleService{ BaseService: BaseService{userid: id, Service: &cool.Service{Model: model.NewPlayerTitle()}, }, } }