package com.YuyeTech.HeartRate.game.gameInfo.service;

import com.YuyeTech.HeartRate.common.service.CommonService;
import com.YuyeTech.HeartRate.game.gameInfo.projo.GameInfo;
import com.YuyeTech.HeartRate.dto.GameDTO;
import com.YuyeTech.HeartRate.game.gameInfo.vo.GameInfoVo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

/**
 * 游戏
 *
 * @author:slambb
 * @date:2020/1/10
 */
public interface GameInfoService extends CommonService<GameInfoVo, GameInfo, String> {

    /**
     * 根据游戏类目type，来查询对应的游戏列表.
     */
    List<GameDTO> findList(String userId, Integer categoryType, String endTime, Pageable pageable);
    /**
     * 根据游戏类目type 和 平台类型，来查询对应的游戏列表.
     */
    List<GameDTO> findListByTypeAndPlatform(String userId, Integer categoryType, Integer platform, String endTime, Pageable pageable);

    List<GameDTO> findListByTag(String userId, Integer categoryType, Integer platform, Integer tagId, Pageable pageable);

    Page<GameInfo> findPage(String userId, Integer categoryType, Pageable pageable);
    /**
     * 查询全部游戏
     */
    List<GameInfo> findAll();

    /**
     * 根據是否顯示排行遊戲來查詢全部數據
     * @return
     */
    List<GameDTO> findAllByRankingShow(String userId,Integer rankingShow ,Pageable pageable);
    List<GameDTO> findAllByRankingShowAndPlatform(String userId,Integer rankingShow,Integer platform ,Pageable pageable);

    /**
     * 查询游戏详情
     */
    Map findByGameDetail(String gameId,Boolean addDomain);

    /**
     * 添加游戏
     */
    GameInfo addGameInfo(GameInfo gameInfo);

    /**
     * 添加游戏和刷新
     * @return
     */
    GameInfo addGameInfoAndFlush(GameInfo gameInfo);

    /**
     * game info是否返回具有带前缀的url
     * @param gameId
     * @param bDomain
     * @return
     */
    GameInfo findByGameId(String gameId,Boolean bDomain);
    /**
     * 删除游戏
     * @param gameId
     * @return
     */
    String deleteByGameId(String gameId);

    /**
     * 模糊搜索游戏名字
     * @param pageable
     * @param username
     * @return
     */
    Page<GameInfo> fuzzySearchByGameName(Pageable pageable, String username);


    /**
     * 3d视界 -- 根据游戏类目type，来查询对应的游戏列表.
     */
    List<GameInfo> TDFindList(Integer categoryType, Pageable pageable);
}
