/**
 * H5版本的用户API
 * 基于request，兼容小程序的userApi接口
 * 依赖：common.js (提供公共工具函数)
 */

// 注意：getUrlParams, getDeviceInfo, getMockWechatCode, userManager
// 这些函数已在 common.js 中定义，这里直接使用全局函数

const h5UserApi = {
  // 账号密码登录 - H5版本
  async accountLogin(data, onComplete) {
    try {
      console.log('🔐 H5账号登录开始:', data)

      // 获取设备信息并更新
      const deviceInfo = getDeviceInfo()
      const newDeviceInfo = {
        ...deviceInfo,
        deviceId: `(${data.yhm})${deviceInfo.model}`,
      }
      
      // H5环境下保存到localStorage
      localStorage.setItem('deviceInfo', JSON.stringify(newDeviceInfo))

      // 获取微信授权码 (H5环境下的处理)
      const wechatCode = data.wechatCode || getMockWechatCode()

      // 构建请求参数
      const requestData = {
        ...data,
        wechatCode: wechatCode
      }

      console.log('📤 发送登录请求:', requestData)

      // 发送登录请求
      const promise = request.post(
        `/service?ssServ=ssLogin&yhm=${data.yhm}&mm=${data.mm}&wdConfirmationCaptchaService=0&wechatCode=${wechatCode}`,
        requestData,
        {
          loading: false, // 禁用全局 loading，由登录页面自己控制
          request: {
            timeout: 15000 // 登录请求 15 秒超时
          }
        }
      )

      // 处理请求结果
      const result = await promise

      console.log('✅ H5登录请求成功:', result)

      // 无论成功还是失败，都调用完成回调
      if (onComplete) {
        onComplete()
      }

      return result

    } catch (error) {
      console.error('❌ H5登录请求失败:', error)

      // 确保调用完成回调
      if (onComplete) {
        onComplete()
      }

      throw error
    }
  },

  // 自动登录 - H5版本
  async autoLogin(data) {
    console.log('🔄 H5自动登录:', data)

    return request.post(
      `/service?ssServ=ssLogin&wdConfirmationCaptchaService=0&mdToken=${data.mdToken}`,
      data,
      {
        loading: false // 自动登录不显示 loading，避免打扰用户
      }
    )
  },

  // 微信登录 - H5版本
  async wechatLogin(data, onComplete) {
    try {
      console.log('🔐 H5微信登录开始:', data)

      // 在H5环境下，微信登录需要特殊处理
      // 这里先使用模拟的code
      const wechatCode = data.code || getMockWechatCode()

      const requestData = {
        ...data,
        code: wechatCode
      }

      const promise = request.post(
        `/service?ssServ=ssLogin&wdConfirmationCaptchaService=0`,
        requestData,
        {
          loading: false, // 禁用全局 loading，由登录页面自己控制
          request: {
            timeout: 15000 // 微信登录请求 15 秒超时
          }
        }
      )

      const result = await promise

      console.log('✅ H5微信登录成功:', result)

      // 无论成功还是失败，都调用完成回调
      if (onComplete) {
        onComplete()
      }

      return result

    } catch (error) {
      console.error('❌ H5微信登录失败:', error)

      // 确保调用完成回调
      if (onComplete) {
        onComplete()
      }

      throw error
    }
  },

  // 获取用户信息
  async getUserInfo(userId) {
    console.log('👤 H5获取用户信息:', userId)

    return request.get(`/service?ssServ=user.getUserInfo&userId=${userId}`, {}, {
      loading: false
    })
  },

  // 登出 (使用 common.js 中的 userManager)
  async logout() {
    console.log('🚪 H5用户登出')

    try {
      // 使用公共的用户管理器清除登录信息
      userManager.clearLoginInfo()

      // 可以调用服务端登出接口
      // await request.post('/service?ssServ=ss.logout', {}, { loading: false })

      console.log('✅ H5登出成功')
      return { success: true }

    } catch (error) {
      console.error('❌ H5登出失败:', error)
      throw error
    }
  },

  // 检查登录状态 (使用 common.js 中的 userManager)
  checkLoginStatus() {
    return userManager.checkLoginStatus()
  },

  // 保存用户信息 (使用 common.js 中的 userManager)
  saveUserInfo(userInfo) {
    return userManager.saveUserInfo(userInfo)
  },

  // 获取保存的用户信息 (使用 common.js 中的 userManager)
  getSavedUserInfo() {
    return userManager.getSavedUserInfo()
  }
}

// 导出到全局
window.h5UserApi = h5UserApi

console.log('✅ H5 UserApi已加载')
