You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
2.8 KiB
127 lines
2.8 KiB
package service |
|
|
|
import ( |
|
"context" |
|
|
|
"go-common/app/interface/main/esports/model" |
|
) |
|
|
|
// Game get game. |
|
func (s *Service) Game(c context.Context, p *model.ParamGame) (rs map[int64]*model.Game, err error) { |
|
var ( |
|
ok bool |
|
games []*model.Game |
|
gameMap map[int64]*model.Game |
|
) |
|
rs = make(map[int64]*model.Game, len(p.GameIDs)) |
|
if p.Tp == _lolType { |
|
if games, ok = s.lolGameMap.Data[p.MatchID]; !ok { |
|
return |
|
} |
|
} else if p.Tp == _dotaType { |
|
if games, ok = s.dotaGameMap.Data[p.MatchID]; !ok { |
|
return |
|
} |
|
} |
|
count := len(games) |
|
if count == 0 { |
|
return |
|
} |
|
gameMap = make(map[int64]*model.Game, count) |
|
for _, game := range games { |
|
gameMap[game.ID] = game |
|
} |
|
for _, id := range p.GameIDs { |
|
if game, ok := gameMap[id]; ok { |
|
rs[id] = game |
|
} |
|
} |
|
return |
|
} |
|
|
|
// Items get items. |
|
func (s *Service) Items(c context.Context, p *model.ParamLeidas) (rs map[int64]*model.Item, err error) { |
|
rs = make(map[int64]*model.Item, len(p.IDs)) |
|
if p.Tp == _lolType { |
|
for _, id := range p.IDs { |
|
if item, ok := s.lolItemsMap.Data[id]; ok { |
|
rs[id] = item |
|
} |
|
} |
|
} else if p.Tp == _dotaType { |
|
for _, id := range p.IDs { |
|
if item, ok := s.dotaItemsMap.Data[id]; ok { |
|
rs[id] = item |
|
} |
|
} |
|
} |
|
return |
|
} |
|
|
|
// Heroes lol:champions ; dota2 heroes. |
|
func (s *Service) Heroes(c context.Context, p *model.ParamLeidas) (rs interface{}, err error) { |
|
var ( |
|
champions map[int64]*model.Champion |
|
dotaHeroes map[int64]*model.Hero |
|
) |
|
if p.Tp == _lolType { |
|
champions = make(map[int64]*model.Champion, len(p.IDs)) |
|
for _, id := range p.IDs { |
|
if item, ok := s.lolChampions.Data[id]; ok { |
|
champions[id] = item |
|
} |
|
} |
|
rs = champions |
|
} else if p.Tp == _dotaType { |
|
dotaHeroes = make(map[int64]*model.Hero, len(p.IDs)) |
|
for _, id := range p.IDs { |
|
if item, ok := s.dotaHeroes.Data[id]; ok { |
|
dotaHeroes[id] = item |
|
} |
|
} |
|
rs = dotaHeroes |
|
} |
|
return |
|
} |
|
|
|
// Abilities lol:spells;dota2:abilities. |
|
func (s *Service) Abilities(c context.Context, p *model.ParamLeidas) (rs interface{}, err error) { |
|
infos := make(map[int64]*model.LdInfo, len(p.IDs)) |
|
if p.Tp == _lolType { |
|
for _, id := range p.IDs { |
|
if info, ok := s.lolSpells.Data[id]; ok { |
|
infos[id] = info |
|
} |
|
} |
|
rs = infos |
|
} else if p.Tp == _dotaType { |
|
for _, id := range p.IDs { |
|
if info, ok := s.dotaAbilities.Data[id]; ok { |
|
infos[id] = info |
|
} |
|
} |
|
rs = infos |
|
} |
|
return |
|
} |
|
|
|
// Players get players. |
|
func (s *Service) Players(c context.Context, p *model.ParamLeidas) (rs interface{}, err error) { |
|
infos := make(map[int64]*model.LdInfo, len(p.IDs)) |
|
if p.Tp == _lolType { |
|
for _, id := range p.IDs { |
|
if info, ok := s.lolPlayers.Data[id]; ok { |
|
infos[id] = info |
|
} |
|
} |
|
rs = infos |
|
} else if p.Tp == _dotaType { |
|
for _, id := range p.IDs { |
|
if info, ok := s.dotaPlayers.Data[id]; ok { |
|
infos[id] = info |
|
} |
|
} |
|
rs = infos |
|
} |
|
return |
|
}
|
|
|