/**
 * 接口文档目录
 * ----------------
 * 公共模块
 * - 上传图片接口 (uploadImage)
 * 用户模块
 * - 用户注册接口 (postUserRegister)
 * - 用户登录接口 (postUserLogin)
 * - 用户退出登录接口 (logout)
 * - 发送验证码接口 (sendCode)
 * - 用户详情接口 (getUserInfo)
 * - 修改用户信息接口 (updateUserInfo)
 * - 注销账号接口 (deleteAccount)
 * - 修改密码接口 (resetPassword)
 * 首页模块
 * - 轮播图接口 (getBanner)
 * - 赛事列表接口 (getSportSchedule)
 * - 赛事详情接口 (getSportInfo)
 * - 让球赔率列表接口 (getSportHandicap)
 * - 进球数赔率列表接口 (getSportJinQiuShu)
 * - 胜负平赔率列表接口 (getSportShenFuPin)
 * 资金模块
 * - 在线充值币种列表接口 (getRechargeCurrencyList)
 * - 获取汇率接口 (getExchangeRate)
 * - 充值地址、提现币种列表接口 (getRechargeAddressAndWithdrawCurrencyList)
 * - 提现接口 (withdraw)
 * - 充值接口 (recharge)
 * - 充值、提现的历史记录接口 (getRechargeWithdrawHistory)
 * - 获取余额接口 (getBalance)
 * - 资金记录接口 (getMoneyLog)
 * 订单模块
 * - 订单列表接口 (getOrderList)
 * - 订单详情接口 (getOrderInfo)
 * - 提交订单接口 (submitOrder)
 */

// 引入封装的请求
import request from '@/request/index.js';

/************************* 公共 **************************/

/**
 * 上传图片接口
 * @description POST请求，Content-Type为multipart/form-data
 * @param {Object} data - 请求体参数（multipart/form-data格式）
 * @param {File} data.file - 图片文件（必需）
 * @returns {Promise} 请求Promise对象
 */
export const uploadImage = (data) => {
    return request.post('/upload/image', data);
};

/************************* 用户 **************************/

/**
 * 用户注册接口
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {string} data.type - 注册类型（必需）：email邮箱，phone手机号
 * @param {string} data.account - 邮箱/账号（必需）
 * @param {string} data.password - 密码（必需）
 * @param {integer} data.code - 验证码（必需）
 * @returns {Promise} 请求Promise对象
 */
export const postUserRegister = (data) => {
    return request.post('/user/register', data, { showSuccessTip: false});
};

export const setAccount = (data) => {
    return request.post('/user/setAccount', data);
};
export const postUserCaptcha = (data) => {
    return request.get('/user/captcha', data);
};


/**
 * 用户登录接口
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {string} data.account - 邮箱/账号（必需）
 * @param {string} data.password - 密码（必需）
 * @returns {Promise} 请求Promise对象
 */
export const postUserLogin = (data) => {
    return request.post('/user/login', data);
};

/**
 * 用户退出登录接口
 * @description GET请求
 * @returns {Promise} 请求Promise对象
 */
export const logout = () => {
    return request.get('/user/logout');
};

/**
 * 发送验证码接口
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {string} data.email - 邮箱（必需）
 * @returns {Promise} 请求Promise对象
 */
export const sendCode = (data) => {
    return request.post('/user/sendCode', data);
};

/**
 * 用户详情接口
 * @description GET请求
 * @returns {Promise} 请求Promise对象
 */
export const getUserInfo = () => {
    return request.get('/user/info');
};

/**
 * 修改用户信息接口
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {string} [data.avatar] - 头像地址
 * @param {string} [data.email] - 邮箱
 * @param {string} [data.phone] - 手机号
 * @returns {Promise} 请求Promise对象
 */
export const updateUserInfo = (data) => {
    return request.post('/user/update', data);
};

/**
 * 注销账号接口
 * @description GET请求
 * @returns {Promise} 请求Promise对象
 */
export const deleteAccount = () => {
    return request.get('/user/delete');
};

/**
 * 修改密码接口
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {string} data.old_password - 旧密码（必需）
 * @param {string} data.new_password - 新密码（必需）
 * @returns {Promise} 请求Promise对象
 */
export const resetPassword = (data) => {
    return request.post('/user/resetPassword', data);
};

/************************* 首页 **************************/

/**
 * 轮播图接口
 * @description GET请求
 * @param {Object} params - URL查询参数
 * @param {integer} params.type - 轮播图类型（必需），1=活动轮播图；2=banner
 * @returns {Promise} 请求Promise对象
 */
export const getBanner = (params) => {
    return request({
        url: '/index/banner',
        method: 'get',
        params,
        hideLoading: true
    });
};
export const getActivity = (params) => {
    return request({
        url: '/index/activity',
        params,
        method: 'get',
        hideLoading: true
    });
};

export const getActivityInfo = (params) => {
    return request({
        url: '/index/activityInfo',
        params,
        method: 'get',
        hideLoading: true
    });
};

/**
 * 赛事列表接口
 * @description GET请求
 * @param {Object} [params] - URL查询参数
 * @param {integer} [params.page] - 页码
 * @param {integer} [params.limit] - 每页条数
 * @param {integer} [params.is_roll] - 是否滚球 0否 1是
 * @param {integer} [params.state] - 比赛状态：0未开始 1进行中 2已完场 3延期 4取消
 * @returns {Promise} 请求Promise对象
 */
export const getSportSchedule = (params) => {
    return request.get('/index/sport', { params });
};

export const getWorldCupSport = (params) => {
    return request.get('/index/worldCupSport', { params });
};


/**
 * 赛事详情接口
 * @description GET请求
 * @param {Object} params - URL查询参数
 * @param {integer} params.data_id - 赛事ID（必需）
 * @returns {Promise} 请求Promise对象
 */
export const getSportInfo = (params) => {
    return request.get('/index/sportInfo', { params });
};

/**
 * 让球赔率列表接口
 * @description GET请求
 * @param {Object} [params] - URL查询参数
 * @param {integer} [params.page] - 页码
 * @param {integer} [params.limit] - 每页条数
 * @param {integer} [params.data_id] - 赛事列表的data_id
 * @returns {Promise} 请求Promise对象
 */
export const getSportHandicap = (params) => {
    return request.get('/index/SportHandicap', { params });
};

/**
 * 进球数赔率列表接口
 * @description GET请求
 * @param {Object} [params] - URL查询参数
 * @param {integer} [params.page] - 页码
 * @param {integer} [params.limit] - 每页条数
 * @param {integer} [params.data_id] - 赛事列表的data_id
 * @returns {Promise} 请求Promise对象
 */
export const getSportJinQiuShu = (params) => {
    return request.get('/index/SportJinQiuShu', { params });
};

/**
 * 胜负平赔率列表接口
 * @description GET请求
 * @param {Object} [params] - URL查询参数
 * @param {integer} [params.page] - 页码
 * @param {integer} [params.limit] - 每页条数
 * @param {integer} [params.data_id] - 赛事列表的data_id
 * @returns {Promise} 请求Promise对象
 */
export const getSportShenFuPin = (params) => {
    return request.get('/index/SportShenFuPin', { params });
};

/************************* 资金 **************************/

/**
 * 在线充值币种列表接口
 * @description GET请求
 * @returns {Promise} 请求Promise对象
 */
export const getRechargeCurrencyList = () => {
    return request.get('/wallet/currency');
};

/**
 * 获取汇率接口
 * @description GET请求
 * @param {Object} params - 查询参数
 * @param {string} params.symbol - 币种（必需）
 * @returns {Promise} 请求Promise对象
 */
export const getExchangeRate = (params) => {
    return request.get('/wallet/getBlockChainFee', { params });
};

/**
 * 充值地址、提现币种列表接口
 * @description GET请求
 * @param {Object} params - 查询参数
 * @param {integer} params.type - 类型（必需），1:充值地址列表 2:提现币种列表
 * @returns {Promise} 请求Promise对象
 */
export const getRechargeAddressAndWithdrawCurrencyList = (params) => {
    return request.get('/wallet/rechargeAddress', { params });
};

/**
 * 提现接口
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {string} data.type - 提现类型（必需）：bank银行卡，crypto_coin币种
 * @param {integer} data.amount - 提现金额，最低1（必需）
 * @param {string} data.payment_receipt - 支付凭证的图片链接（必需）
 * @param {string} [data.currency] - 币种（type=crypto_coin必填）
 * @param {string} [data.network_type] - 网络类型（type=crypto_coin必填）
 * @param {string} [data.address] - 提现地址（type=crypto_coin必填）
 * @param {string} [data.bank_card_no] - 银行卡号（type=bank必填）
 * @param {string} [data.bank_user_name] - 开户人姓名（type=bank必填）
 * @param {string} [data.bank] - 银行名称（type=bank必填）
 * @param {string} [data.safe_word] - 资金密码
 * @returns {Promise} 请求Promise对象
 */
export const withdraw = (data) => {
    return request.post('/wallet/withdraw', data);
};

/**
 * 充值接口
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {integer} data.amount - 金额，最低1（必需）
 * @param {string} data.payment_receipt - 支付凭证的图片链接（必需）
 * @param {string} [data.currency] - 币种
 * @param {string} [data.network_type] - 网络类型
 * @param {string} [data.address] - 充值地址
 * @returns {Promise} 请求Promise对象
 */
export const recharge = (data) => {
    return request.post('/wallet/recharge', data);
};

/**
 * 充值的历史记录接口
 * @description GET请求
 * @param {Object} params - 查询参数
 * @param {integer} params.page - 页码（必需）
 * @param {integer} params.limit - 每页条数（必需）
 * @param {string} params.type - 类型（必需）：withdraw提现, recharge充值
 * @param {string} [params.start_time] - 开始时间 yyyy-mm-dd
 * @param {string} [params.end_time] - 结束时间 yyyy-mm-dd
 * @returns {Promise} 请求Promise对象
 */
export const getRecharge = (params) => {
    return request.get('/wallet/rechargeHistory', { params });
};

/**
 * 提现的历史记录接口
 * @description GET请求
 * @param {Object} params - 查询参数
 * @param {integer} params.page - 页码（必需）
 * @param {integer} params.limit - 每页条数（必需）
 * @param {string} params.type - 类型（必需）：withdraw提现, recharge充值
 * @param {string} [params.start_time] - 开始时间 yyyy-mm-dd
 * @param {string} [params.end_time] - 结束时间 yyyy-mm-dd
 * @returns {Promise} 请求Promise对象
 */
export const getWithdrawHistory = (params) => {
    return request.get('/wallet/withdrawHistory', { params });
};

/**
 * 获取余额接口
 * @description GET请求
 * @returns {Promise} 请求Promise对象
 */
export const getBalance = () => {
    return request.get('/wallet/getUsdt', {
        hideLoading: true,
        showSuccessTip: false
    });
};

/**
 * 资金记录接口
 * @description GET请求
 * @param {Object} params - 查询参数
 * @param {string} params.transaction_type - 订单类型（必需）：recharge充值, withdraw提现, sport下注
 * @param {string} [params.page] - 页码
 * @param {string} [params.limit] - 每页条数
 * @param {string} [params.start_time] - 开始时间 yyyy-mm-dd
 * @param {string} [params.end_time] - 结束时间 yyyy-mm-dd
 * @returns {Promise} 请求Promise对象
 */
export const getMoneyLog = (params) => {
    return request.get('/wallet/moneyLog', { params });
};

/************************* 订单 **************************/

/**
 * 订单列表接口
 * @description GET请求
 * @param {Object} [params] - URL查询参数
 * @param {string} [params.page] - 页码
 * @param {string} [params.limit] - 每页条数
 * @param {integer} [params.is_win] - 是否中奖：0没中奖 1中奖 2和局 3平手半
 * @param {integer} [params.status] - 结算状态：0未结算 1已结算 2已取消
 * @returns {Promise} 请求Promise对象
 */
export const getOrderList = (params) => {
    return request.get('/order/list', { params });
};

/**
 * 订单详情接口
 * @description GET请求
 * @param {Object} params - URL查询参数
 * @param {string} [params.order_id] - 订单编号 示例:2026020910444587277
 * @returns {Promise} 请求Promise对象
 */
export const getOrderInfo = (params) => {
    return request.get('/order/info', { params });
};

/**
 * pc28详情接口
 * @description GET请求
 * @param {Object} params - URL查询参数
 * @param {string} [params.order_id] - 订单编号 示例:2026020910444587277
 * @returns {Promise} 请求Promise对象
 */
export const betInfo = (params) => {
    return request.get('/game/betInfo', { params });
};

/**
 * 提交订单接口
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {Object[]} data.data - 订单数据数组
 * @param {string} data.data[].data_id - 数据ID（必需）
 * @param {string} data.data[].btn - 下注项名称（必需）
 * @param {string} data.data[].wsi - 下注项的唯一标识（必需）
 * @param {string} data.data[].si - si标识（必需）
 * @param {string} data.data[].o - 赔率（必需）
 * @param {string} data.data[].amount - 金额（必需）
 * @returns {Promise} 请求Promise对象
 */
export const submitOrder = (data) => {
    return request.post('/order/submit', data);
};

/**
 * 申请退款接口
 * @description POST请求，Content-Type为multipart/form-data
 * @param {Object} data - 请求体参数（multipart/form-data格式）
 * @param {string} data.order_id - 订单编号（必需）
 * @returns {Promise} 请求Promise对象
 */
export const applyRefund = (data) => request({ url: '/order/refund', method: 'post', data })

/**
 * 修改资金密码接口
 * @description POST请求，Content-Type为multipart/form-data
 * @param {Object} data - 请求体参数（multipart/form-data格式）
 * @param {string} [data.old_password] - 旧资金密码（可选），示例：1234567
 * @param {string} data.password - 新资金密码（必需），示例：123456
 * @returns {Promise} 请求Promise对象
 */
export const modifySafeWord = (data) => request({ url: '/user/safeWord', method: 'post', data })

// 获取投注项列表接口
export const getGameRuleList = (params) => {
    return request({ url: '/game/rule', method: 'get', params })
}
// 提交投注
export const submitGameBet = (data) => request({ url: '/game/bet', method: 'post', data })
// 投注记录接口
export const getGameBetList= (params) => request({ url: '/game/betList', method: 'get', params })
export const getGameissueList= (params) => request({ url: '/game/betList', method: 'get', params })

/******六合彩************/
// 获取玩法
export const getHowPlay = (params) => request({ url: '/lhcGame/index', method: 'get', params, hideLoading: true })

// 六合彩信息（号码和生肖相互转换）
export const getLHCInfo = (params) => request({ url: '/lhc/info', method: 'get', params, hideLoading: true })

// 玩法详情
export const getPlayInfo = (params) => request({ url: '/lhcNumber/index', method: 'get', params })

// 注单提交（结算）
export const submitBetCart = (data) => request({ url: '/lhcOrder/submit', method: 'post', data })

// 订单列表
export const getDigitalOrderList = (params) => request({ url: '/lhcOrder/list', method: 'get', params })

// 订单详情
export const getDigitalOrderInfo = (params) => request({ url: '/lhcOrder/info', method: 'get', params })


/**
 * 配置接口
 * @description GET请求
 * @returns {Promise} 请求Promise对象
 */
export const getConfigIndex = () => {
    return request({ url: '/index/config', method: 'get' })

};

/**
 * 转入余额宝
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {string} data.amount - 转入金额，最小为1
 * @returns {Promise} 请求Promise对象
 */
export const addYuebao = (data) => {
    return request({ url: '/yuebao/add', method: 'post', data })
};

/**
 * 转出余额宝
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {string} data.amount - 转出金额
 * @returns {Promise} 请求Promise对象
 */
export const withdrawYuebao = (data) => {
    return request({ url: '/yuebao/out', method: 'post', data })
};

/**
 * 持仓列表
 * @description GET请求
 * @param {Object} params - URL查询参数
 * @param {string} [params.status] - 状态筛选
 * @returns {Promise} 请求Promise对象
 */
export const getYuebaoItemList = (params) => {
    return request({ url: '/yuebao/itemList', method: 'get', params })
};

/**
 * 余额宝明细
 * @description GET请求
 * @param {Object} params - URL查询参数
 * @param {string} [params.status] - 状态筛选
 * @returns {Promise} 请求Promise对象
 */
export const getYuebaoLogList = (params) => {
    return request({ url: '/yuebao/logList', method: 'get', params })
};



/**
 * 联赛列表
 * @description GET请求
 * @param {Object} params - URL查询参数
 * @param {string} [params.status] - 状态筛选
 * @returns {Promise} 请求Promise对象
 */
export const getLeagueList = (params) => {
    return request({ url: '/index/leagueList', method: 'get', params })
};


/************************* 钱包/提现设置 **************************/

/**
 * 添加银行卡接口
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {integer} data.id - ID
 * @param {string} data.channel - 提现通道（必需）
 * @param {string} data.account - 姓名（必需）
 * @param {string} data.card_no - 卡号（必需）
 * @param {string} data.bank_name - 银行名称/支付宝（必需）
 * @param {string} [data.alias] - 别名
 * @returns {Promise} 请求Promise对象
 */
export const addBank = (data) => {
    return request.post('/wallet/addBank', data);
};

/**
 * 删除银行卡接口
 * @description GET请求
 * @param {Object} params - 查询参数
 * @param {integer} params.id - 银行卡条目ID（必需）
 * @returns {Promise} 请求Promise对象
 */
export const delBank = (params) => {
    return request.get('/wallet/delBank', { params });
};

/**
 * 获取银行卡列表接口
 * @description GET请求
 * @param {Object} params - 查询参数
 * @param {string} params.channel - 提现通道（必需）
 * @returns {Promise} 请求Promise对象
 */
export const getBankList = (params) => {
    return request.get('/wallet/bankList', { params });
};

/**
 * 添加提现地址接口
 * @description POST请求
 * @param {Object} data - 请求体参数
 * @param {integer} data.id - ID
 * @param {string} data.address - 提现地址（必需）
 * @param {string} [data.alias] - 别名
 * @returns {Promise} 请求Promise对象
 */
export const addAddress = (data) => {
    return request.post('/wallet/addAddress', data);
};

/**
 * 删除提现地址接口
 * @description GET请求
 * @param {Object} params - 查询参数
 * @param {integer} params.id - 地址条目ID（必需）
 * @returns {Promise} 请求Promise对象
 */
export const delAddress = (params) => {
    return request.get('/wallet/delAddress', { params });
};

/**
 * 获取提现地址列表接口
 * @description GET请求
 * @returns {Promise} 请求Promise对象
 */
export const getAddressList = () => {
    return request.get('/wallet/address');
};

// 获取彩票封盘状态
export const gameLotteryStatus = (params) => {
    return request.get('/game/lotteryStatus', { params });
};

// 游客模式获取token
export const userGuestRegister = (params) => {
    return request.get('/user/guestRegister', { params });
};


// 提现订单撤回
export const walletWithdrawCancel = (data) => {
    return request.post('/wallet/withdrawCancel',  data);
};

// 提交冠军投注
export const submitSportGame = (data) => {
    return request.post('/sportGameOrder/submit', data);
};

// 冠军投注列表
export const getSportGameList = (params) => {
    return request.get('/index/sportGame', { params });
};

// 足球游戏投注记录
export const sportGameOrderList = (params) => {
    return request.get('/sportGameOrder/list', { params });
};


// 足球游戏投注详情
export const sportGameOrderInfo = (params) => {
    return request.get('/sportGameOrder/info', { params });
};

// 极速游戏列表
export const getJisuGameList = (params) => {
    return request.get('/jisuGame/index', { params });
};

// 极速游戏下注
export const submitJisuGameOrder = (data) => {
    return request.post('/jisuGameOrder/submit', data);
};

// 极速游戏下注
export const jisuGameLotteryStatus = (params) => {
    return request.get('/jisuGame/lotteryStatus', { params });
};

// 极速游戏投注记录
export const getJisuGameOrderList = (params) => {
    return request.get('/jisuGameOrder/list', { params });
};

// 极速游戏投注详情
export const getJisuGameOrderInfo = (params) => {
    return request.get('/jisuGameOrder/info', { params });
};

/**
 * 彩票配置
 * @description GET请求
 * @param {Object} params - URL查询参数
 * @returns {Promise} 请求Promise对象
 */
export const gameConfig = (params) => {
    return request.get('/index/gameConfig', { params });
};


export const GetLastLottery = (params) => {
    return request.get('/index/getLastLottery', { params });
};

export const gameHistoryPcIssue = (params) => {
    return request.get('/game/historyPcIssue', { params });
};

export const gameHistoryIssue = (params) => {
    return request.get('/game/historyIssue', { params });
};

export const jisuGameHistoryLottery = (params) => {
    return request.get('/jisuGame/historyLottery', { params });
};

export const lhcGameHistoryLottery = (params) => {
    return request.get('/lhcGame/historyLottery', { params });
};

export const lhcOrderRefund = (params) => {
    return request.get('/lhcOrder/refund', { params });
};

export const indexSportCount = (params) => {
    return request.get('/index/sportCount', { params });
};
