package com.zanxiang.game.module.manage.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zanxiang.game.module.manage.pojo.params.GameAuthAddParam;
import com.zanxiang.game.module.manage.pojo.params.GameAuthListParam;
import com.zanxiang.game.module.manage.pojo.params.GameAuthUpdateParam;
import com.zanxiang.game.module.manage.pojo.vo.GameAuthVO;
import com.zanxiang.game.module.mybatis.entity.GameAuth;
import reactor.util.function.Tuple2;

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

/**
 * @author : lingfeng
 * @time : 2023-08-16
 * @description : 游戏授权
 */
public interface IGameAuthService extends IService<GameAuth> {

    /**
     * 游戏身份验证添加
     *
     * @param param 参数
     * @return boolean
     */
    boolean gameAuthAdd(GameAuthAddParam param);

    /**
     * 游戏身份验证更新
     *
     * @param param 参数
     * @return boolean
     */
    boolean gameAuthUpdate(GameAuthUpdateParam param);

    /**
     * 列表页面
     *
     * @param param 参数
     * @return {@link IPage}<{@link GameAuthVO}>
     */
    IPage<GameAuthVO> listOfPage(GameAuthListParam param);

    /**
     * 删除通过id
     *
     * @param id id
     * @return boolean
     */
    boolean deleteById(Long id);

    /**
     * 查询指定人的游戏列表, 查询自己则传null
     *
     * @param userId 用户id
     * @return {@link Tuple2}<{@link String}, {@link List}<{@link Long}>>
     */
    Tuple2<String, List<Long>> getUserGameList(String userId);

    /**
     * 代理用户选择列表
     *
     * @return {@link Map}<{@link Long}, {@link String}>
     */
    Map<Long, String> agentUserChoiceList();
}
