// api.jshttp://zlink.bjdexn.cn
// const baseUrl = 'http://192.168.8.102:8088';  // 替换为您的接口基础 URL
const esosUrl = 'https://esos-iot.bjdexn.cn';  // 线上
const baseUrl = 'https://esos-iot.bjdexn.cn:9443';  // 线上

// const baseUrl = 'http://192.168.8.105:8888';  // 替换为您的接口基础 URL
//  
// 封装网络请求方法 
// isPublic: true  不检验token
// useEsos: true   使用esosUrl地址
function request(url, method, data, options = {}) {
  const { isPublic = false, useEsos = false } = options;
  
  return new Promise((resolve, reject) => {
    // 动态选择根地址
    const rootUrl = useEsos ? esosUrl : baseUrl;
    const header = {
      'Content-Type': 'application/x-www-form-urlencoded'
    };

    // 非公共接口需携带 Token
    if (!isPublic) {
      const token = wx.getStorageSync('token');
      if (token) {
        header['Authorization'] = `Bearer ${token}`;
      } else {
        redirectToLogin('请先登录');
        reject({ code: 401, message: '未找到认证 Token' });
        return;
      }
    }

    wx.request({
      url: rootUrl + url,
      header,
      method,
      data,
      success: (res) => {
        console.log(res);
        // Token 失效或未授权
        if ([320, 400, 401, 403].includes(res.statusCode)) {
          handleTokenInvalid(res.data.msg || '登录已过期');
          reject(res.data);
          return;
        }

        // 请求成功但业务逻辑错误（如 code != 200）
        if (res.statusCode === 200||res.data.code==0) {
          res.data.code === 200||res.data.code === 0 ? resolve(res.data) : reject(res.data);
        } else {
          reject(res.data.msg || { code: res.statusCode, message: '请求异常' });
        }
      },
      fail: (err) => {
        console.error('请求失败:', err);
        wx.showToast({ title: '网络错误', icon: 'none' });
        reject(err);
      }
    });
  });
}

// 跳转到登录页
function redirectToLogin(message = '') {
  wx.clearStorageSync();
  const pages = getCurrentPages();
  const currentRoute = pages[pages.length - 1]?.route || '';

  // 避免重复跳转
  if (!currentRoute.includes('/package-user/pages/login/index')) {
    wx.showToast({ title: message, icon: 'none' });
    wx.reLaunch({ url: '/package-user/pages/login/index' });
  }
}

// 处理 Token 失效
function handleTokenInvalid(message) {
  console.warn('Token 失效:', message);
  redirectToLogin(message || '请重新登录');
}
// 导出封装的请求方法
module.exports = {
  request: request
};
 