import axiosInstance from './axiosConfig';

/**
 * 获取需求列表
 * @returns {Promise<Array<Object>>} 返回需求列表数据
 */
export const getDemandsList = async () => {
    try {
        const response = await axiosInstance.get('/demands/getlist');
        return response.data; // 假设直接返回数组
    } catch (error) {
        console.error('获取需求列表失败:', error);
        throw error;
    }
};

/**
 * 添加需求 (注意：管理员后台可能不常用此功能)
 * @param {Object} demandData - 需求数据
 * @param {string} [demandData.requester] - 请求者
 * @param {string} [demandData.qq_code] - QQ号
 * @param {string} demandData.sendcontent - 请求内容 (对应后端的 sendcontent 和 content)
 * @param {string} [demandData.reward] - 悬赏金额
 * @param {string} demandData.date - 日期 (后端API会自动生成，但模型中包含此字段，前端添加时也提交此字段，如YYYY-MM-DD HH:MM:SS)
 * @returns {Promise<Object>} 返回添加需求的响应数据
 */
export const addDemand = async (demandData) => {
    try {
        const payload = {
            ...demandData,
            content: demandData.content // 直接使用传入的 content
        };
        const response = await axiosInstance.post('/demands/add', payload);
        console.log('添加需求的数据:', payload);
        return response.data;
    } catch (error) {
        console.error('添加需求失败:', error);
        throw error;
    }
};

/**
 * 更新需求
 * @param {number} id - 需求ID
 * @param {Object} dataToUpdate - 需要更新的数据
 * @param {string} dataToUpdate.sendcontent - 新的请求内容
 * // 如果后端允许更新其他字段，在此处添加
 * @returns {Promise<Object>} 返回更新需求的响应数据
 */
export const updateDemand = async (id, dataToUpdate) => {
    try {
        const payload = {
            ...dataToUpdate,
            content: dataToUpdate.content // 直接使用传入的 content
        };
        console.log('更新需求的数据:', payload);
        const response = await axiosInstance.put(`/demands/update/${id}`, payload);
        return response.data;
    } catch (error) {
        console.error('更新需求失败:', error);
        throw error;
    }
};

/**
 * 删除需求
 * @param {number} id - 需求ID
 * @returns {Promise<Object>}  返回删除需求的响应数据
 */
export const deleteDemand = async (id) => {
    try {
        const response = await axiosInstance.delete(`/demands/delete/${id}`);
        return response.data;
    } catch (error) {
        console.error('删除需求失败:', error);
        throw error;
    }
};

/**
 * 添加需求回复
 * @param {number} id - 需求ID
 * @param {Object} replyData - 回复数据
 * @param {string} replyData.reply - 回复内容
 * @returns {Promise<Object>} 返回添加回复的响应数据
 * 说明：会将回复内容与用户qq拼接在一起，格式qq:内容|qq:内容
 */
export const addDemandReply = async (id, replyData) => {
    try {
        const payload = {
            id: id,
            reply: replyData.reply
        };
        console.log('添加需求回复的数据:', payload);
        const response = await axiosInstance.put('/demands/reply', payload);
        return response.data;
    } catch (error) {
        console.error('添加需求回复失败:', error);
        throw error;
    }
};
