/**
 * 用户相关接口
 */
import http from '../utils/request.js';

/**
 * 微信登录
 * @param {Object} loginParams - 登录参数
 * @returns {Promise} - 返回登录结果
 */
export function wxLogin(loginParams) {
  // 获取 CSRF token
  const csrfToken = uni.getStorageSync('csrfToken');
  
  // 确保参数格式正确，完全匹配后端期望的格式
  const requestData = {
    code: loginParams.code,
    userInfo: {
      nickname: loginParams.userInfo?.nickName || '微信用户',
      avatarUrl: loginParams.userInfo?.avatarUrl || '',
      gender: loginParams.userInfo?.gender || 0,
      province: loginParams.userInfo?.province || '',
      city: loginParams.userInfo?.city || '',
      country: loginParams.userInfo?.country || ''
    },
    signature: loginParams.signature || '',
    rawData: loginParams.rawData || '',
    encryptedData: loginParams.encryptedData || '',
    iv: loginParams.iv || '',
    _csrf: csrfToken // 添加 CSRF token
  };
  
  return http.post('/wechat/wechatLogin', requestData, {
    header: {
      'X-CSRF-Token': csrfToken
    }
  });
}

/**
 * 获取用户详细信息
 * @param {String} userId - 用户ID，可选
 * @returns {Promise} - 返回用户详细信息
 */
export const getUserInfo = (userId) => {
  // 如果提供了userId，则获取指定用户信息，否则获取当前登录用户信息
  const url = userId ? `/wechat/getUserDetail?id=${userId}` : '/wechat/getUserDetail';
  return http.get(url);
};

/**
 * 获取用户手机号
 * @param {Object} params - 包含code、encryptedData和iv的对象
 * @returns {Promise} - 返回用户手机号信息
 */
export const getUserPhoneNumber = (params) => {
  return http.post('/wechat/getUserPhoneNumber', params);
};

/**
 * 更新用户信息
 * @param {Object} userData - 用户数据
 * @returns {Promise} - 返回更新结果
 */
export const updateUserInfo = (userData) => {
  return http.put('/api/user/update', userData);
};

/**
 * 上传用户头像
 * @param {String} filePath - 文件路径
 * @returns {Promise} - 返回上传结果
 */
export const uploadAvatar = (filePath) => {
  return http.upload('/api/upload/avatar', filePath, 'avatar');
};

/**
 * 退出登录
 * @returns {Promise} - 返回退出结果
 */
export const logout = () => {
  return http.post('/api/user/logout');
}; 

/**
 * 获取职位列表
 * @param {Object} params - 查询参数
 * @param {Number} params.page - 页码
 * @param {Number} params.pageSize - 每页数量
 * @param {String} params.searchTerms - 搜索关键词
 * @param {String} params.status - 职位状态
 * @param {Number} params.tenant_id - 租户ID
 * @returns {Promise} - 返回职位列表
 */
export const getJobList = (params = {}) => {
  // 设置默认参数
  const defaultParams = {
    page: 1,
    pageSize: 10,
    searchTerms: '',
    status: '',
    tenant_id: 1
  };
  
  // 合并默认参数和传入参数
  const queryParams = { ...defaultParams, ...params };
  
  return http.get('/api/job/list', defaultParams);
};

/* 填写用户信息 */
export const fillUserInfo = (params) => {
  return http.post('/api/system/wechat/save_user_info', params);
};

/* 获取面试列表 */
export const getInterviewList = (params) => {
  return http.get('/system/job/questions', params);
};

/* 获取面试详情 */
export const getInterviewDetail = (params) => {
  return http.get('/system/interview_question/detail', params);
};

/* 提交答案 */
export const submitAnswer = (params) => {
  return http.post('/api/job/submit_answer', params);
};

/* 申请职位 */
export const applyJob = (params) => {
  return http.post('/api/job/apply', params);
};

/* 文件上传 */
export const uploadPhoto = (params) => {
  return http.post('/api/system/upload/', params);
};

