package com.ff.game.api.jili.client;

import com.dtflys.forest.annotation.*;
import com.ff.game.api.jili.address.MyJILIAddressSource;
import com.ff.game.api.jili.dto.*;
import com.ff.game.api.request.GamesBaseRequestDTO;

/**
 * jili 请求
 *
 * @author shi
 * @date 2025/02/10
 */
@Address(source = MyJILIAddressSource.class)
public interface JILIClient {
    /**
     * 创建成员
     *
     * @param parameters 参数
     * @return {@link String }
     */
    @Get("/CreateMember?${parameters}")
    JILICreateMemberResponseDTO createMember(@Var("parameters") String parameters);

    /**
     * 获取会员信息
     *
     * @param parameters 参数
     * @return {@link JILIMemberInfoDTO }
     */
    @Get("/GetMemberInfo?${parameters}")
    JILIMemberInfoDTO getMemberInfo(@Var("parameters") String parameters);

    /**
     * 无重定向登录
     *
     * @param parameters 参数
     * @return {@link JILILoginWithoutRedirectResponseDTO }
     */
    @Get("/LoginWithoutRedirect?${parameters}")
    JILILoginWithoutRedirectResponseDTO loginWithoutRedirect(@Var("parameters") String parameters);

    /**
     * 获取游戏列表
     *
     * @param parameters 参数
     * @return {@link JILIGamesDTO }
     */
    @Get("/GetGameList?${parameters}")
    JILIGamesDTO getGameList(@Var("parameters") String parameters);

    /**
     * 按代理id进行交换转账
     *
     * @param parameters 参数
     * @return {@link JILIExchangeMoneyResponseDTO }
     */
    @Post(
            url = "/ExchangeTransferByAgentId?${parameters}",
            headers = {
                    "Content-type: application/x-www-form-urlencoded"
            }
            )
    JILIExchangeMoneyResponseDTO exchangeTransferByAgentId(@Var("parameters") String parameters,@Body("AgentId") String agentId);

    /**
     * 按时间获取投注记录
     *
     * @param parameters 参数
     * @param agentId    代理id
     * @return {@link JILIBetRecordResponseDTO }
     */
    @Post(
            url = "/GetBetRecordByTime?${parameters}",
            headers = {
                    "Content-type: application/x-www-form-urlencoded"
            }
            )
    JILIBetRecordResponseDTO  getBetRecordByTime(@Var("parameters") String parameters,@Body("AgentId") String agentId);

    /**
     * 赠送免费局数
     *
     * @param parameters 参数
     * @return {@link JILICreateFreeSpinResponseDTO }
     */
    @Post(
            url = "/CreateFreeSpin?${parameters}",
            headers = {
                    "Content-type: application/x-www-form-urlencoded"
            }
            )
    JILICreateFreeSpinResponseDTO createFreeSpin(@Var("parameters") String parameters,@Body("AgentId") String agentId);

    /**
     * 获取游戏详细信息
     *
     * @param parameters 参数
     * @return {@link JILIGetGameDetailResponseDTO }
     */
    @Get("/GetGameDetail?${parameters}")
    JILIGetGameDetailResponseDTO getGameDetail(@Var("parameters") String parameters);

    /**
     * 踢出队员
     *
     * @param parameters 参数
     * @return {@link JILIKickMemberDTO }
     */
    @Get("/KickMember?${parameters}")
    JILIKickMemberDTO kickMember(@Var("parameters") String parameters);

    /**
     * 踢出所有队员
     *
     * @param parameters 参数
     * @return {@link JILIKickMemberAllDTO }
     */
    @Get("/KickMemberAll?${parameters}")
    JILIKickMemberAllDTO kickMemberAll(@Var("parameters") String parameters);

    /**
     * 免费游戏玩家使用的纪录
     *
     * @param parameters 参数
     * @return {@link JILIGetFreeSpinDashflowResponseDTO }
     */
    @Post(
            url = "/GetFreeSpinDashflow?${parameters}"
            )
    JILIGetFreeSpinDashflowResponseDTO getFreeSpinDashflow(@Var("parameters") String parameters);

    @Post(
            url = "/CancelFreeSpin?${parameters}"
            )
    JILICancelFreeSpinResponseDTO cancelFreeSpin(@Var("parameters") String parameters);
}
