/**
 * 仓库模块 - 仓库、回收、发货相关接口
 */
import RequestManager from '../request';

/**
 * 获取仓库首页数据
 * @param {Object} params 查询参数
 * @param {Number} params.page 页码
 * @param {Number} params.pageSize 每页数量
 * @param {Number} params.type 类型
 * @returns {Promise} 仓库数据
 */
export const getWarehouseIndex = async (params = {}) => {
    return await RequestManager.get('/warehouse_index', params, true);
};

/**
 * 回收奖品
 * @param {String} ids 奖品ID列表，逗号分隔
 * @returns {Promise} 回收结果
 */
export const recoveryPrize = async (ids) => {
    return await RequestManager.post('/warehouse_recovery', {
        ids
    });
};

/**
 * 发货奖品
 * @param {Object} params 发货参数
 * @param {String} params.ids 奖品ID列表，逗号分隔
 * @param {Number} params.address_id 收货地址ID
 * @returns {Promise} 发货结果
 */
export const sendPrize = async (params = {}) => {
    return await RequestManager.post('/warehouse_send', params);
};

/**
 * 确认发货
 * @param {Object} params 确认参数
 * @param {Number} params.id 发货记录ID
 * @returns {Promise} 确认结果
 */
export const confirmSend = async (params = {}) => {
    return await RequestManager.post('/warehouse_send_confirm', params);
};

/**
 * 获取发货记录列表
 * @param {Number} page 页码
 * @param {Number} pageSize 每页数量
 * @returns {Promise} 发货记录
 */
export const getSendRecord = async (page = 1, pageSize = 10) => {
    return await RequestManager.get('/warehouse_send_record', {
        page,
        pageSize
    }, true);
};

/**
 * 获取发货记录详情
 * @param {Number} id 发货记录ID
 * @returns {Promise} 发货详情
 */
export const getSendRecordDetail = async (id) => {
    return await RequestManager.get('/warehouse_send_record_detail', {
        id
    }, true);
};

/**
 * 获取回收记录列表
 * @param {Number} page 页码
 * @param {Number} pageSize 每页数量
 * @returns {Promise} 回收记录
 */
export const getRecoveryRecord = async (page = 1, pageSize = 10) => {
    return await RequestManager.get('/warehouse_recovery_record', {
        page,
        pageSize
    }, true);
};

/**
 * 获取物流信息
 * @param {Number} id 发货记录ID
 * @returns {Promise} 物流信息
 */
export const getLogistics = async (id) => {
    return await RequestManager.get('/warehouse_order_logistics', {
        id
    });
};

/**
 * 提现申请
 * @param {Object} params 提现参数
 * @param {Number} params.money 提现金额
 * @param {String} params.type 提现类型
 * @returns {Promise} 提现结果
 */
export const withdraw = async (params = {}) => {
    return await RequestManager.post('/withdraw', params);
};

/**
 * 获取提现记录
 * @param {Number} page 页码
 * @param {Number} pageSize 每页数量
 * @returns {Promise} 提现记录
 */
export const getWithdrawLog = async (page = 1, pageSize = 10) => {
    return await RequestManager.get('/withdraw_log', {
        page,
        pageSize
    }, true);
};

/**
 * 移入保险柜
 * @param {Object} params 参数
 * @param {String} params.recovery_info 奖品信息JSON
 * @returns {Promise} 操作结果
 */
export const moveInSafe = async (params = {}) => {
    return await RequestManager.post('/warehouse_movein', params);
};

/**
 * 移出保险柜
 * @param {Object} params 参数
 * @param {String} params.recovery_info 奖品信息JSON
 * @returns {Promise} 操作结果
 */
export const moveOutSafe = async (params = {}) => {
    return await RequestManager.post('/warehouse_remove', params);
};

/**
 * 回收奖品（带类型）
 * @param {Object} params 参数
 * @param {String} params.recovery_info 奖品信息JSON
 * @param {Number} params.type 类型
 * @returns {Promise} 操作结果
 */
export const recoveryPrizeWithType = async (params = {}) => {
    return await RequestManager.post('/warehouse_recovery', params);
};

/**
 * 发货奖品（完整参数）
 * @param {Object} params 发货参数
 * @param {String} params.recovery_info 奖品信息JSON
 * @param {Number} params.type 类型
 * @param {String} params.name 收货人姓名
 * @param {String} params.mobile 收货人电话
 * @param {String} params.address 收货地址
 * @param {String} params.message 备注
 * @returns {Promise} 发货结果
 */
export const sendPrizeWithAddress = async (params = {}) => {
    return await RequestManager.post('/warehouse_send', params);
};

/**
 * 获取发货记录（带状态）
 * @param {Object} params 查询参数
 * @param {Number} params.page 页码
 * @param {Number} params.status 状态
 * @returns {Promise} 发货记录
 */
export const getSendRecordWithStatus = async (params = {}) => {
    return await RequestManager.get('/warehouse_send_record', params, true);
};
