128 lines
2.8 KiB
Go
Raw Permalink Normal View History

2019-04-22 02:59:20 +00:00
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
}