user-api.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. /**
  2. * H5版本的用户API
  3. * 基于request,兼容小程序的userApi接口
  4. * 依赖:common.js (提供公共工具函数)
  5. */
  6. // 注意:getUrlParams, getDeviceInfo, getMockWechatCode, userManager
  7. // 这些函数已在 common.js 中定义,这里直接使用全局函数
  8. const h5UserApi = {
  9. // 账号密码登录 - H5版本
  10. async accountLogin(data, onComplete) {
  11. try {
  12. console.log('🔐 H5账号登录开始:', data)
  13. // 获取设备信息并更新
  14. const deviceInfo = getDeviceInfo()
  15. const newDeviceInfo = {
  16. ...deviceInfo,
  17. deviceId: `(${data.yhm})${deviceInfo.model}`,
  18. }
  19. // H5环境下保存到localStorage
  20. localStorage.setItem('deviceInfo', JSON.stringify(newDeviceInfo))
  21. // 获取微信授权码 (H5环境下的处理)
  22. const wechatCode = data.wechatCode || getMockWechatCode()
  23. // 构建请求参数
  24. const requestData = {
  25. ...data,
  26. wechatCode: wechatCode
  27. }
  28. console.log('📤 发送登录请求:', requestData)
  29. // 发送登录请求
  30. const promise = request.post(
  31. `/service?ssServ=ss.login&yhm=${data.yhm}&mm=${data.mm}&wdConfirmationCaptchaService=0&wechatCode=${wechatCode}`,
  32. requestData,
  33. {
  34. loading: false, // 禁用全局 loading,由登录页面自己控制
  35. request: {
  36. timeout: 15000 // 登录请求 15 秒超时
  37. }
  38. }
  39. )
  40. // 处理请求结果
  41. const result = await promise
  42. console.log('✅ H5登录请求成功:', result)
  43. // 无论成功还是失败,都调用完成回调
  44. if (onComplete) {
  45. onComplete()
  46. }
  47. return result
  48. } catch (error) {
  49. console.error('❌ H5登录请求失败:', error)
  50. // 确保调用完成回调
  51. if (onComplete) {
  52. onComplete()
  53. }
  54. throw error
  55. }
  56. },
  57. // 自动登录 - H5版本
  58. async autoLogin(data) {
  59. console.log('🔄 H5自动登录:', data)
  60. return request.post(
  61. `/service?ssServ=ss.login&wdConfirmationCaptchaService=0&mdToken=${data.mdToken}`,
  62. data,
  63. {
  64. loading: false // 自动登录不显示 loading,避免打扰用户
  65. }
  66. )
  67. },
  68. // 微信登录 - H5版本
  69. async wechatLogin(data, onComplete) {
  70. try {
  71. console.log('🔐 H5微信登录开始:', data)
  72. // 在H5环境下,微信登录需要特殊处理
  73. // 这里先使用模拟的code
  74. const wechatCode = data.code || getMockWechatCode()
  75. const requestData = {
  76. ...data,
  77. code: wechatCode
  78. }
  79. const promise = request.post(
  80. `/service?ssServ=ss.login&wdConfirmationCaptchaService=0`,
  81. requestData,
  82. {
  83. loading: false, // 禁用全局 loading,由登录页面自己控制
  84. request: {
  85. timeout: 15000 // 微信登录请求 15 秒超时
  86. }
  87. }
  88. )
  89. const result = await promise
  90. console.log('✅ H5微信登录成功:', result)
  91. // 无论成功还是失败,都调用完成回调
  92. if (onComplete) {
  93. onComplete()
  94. }
  95. return result
  96. } catch (error) {
  97. console.error('❌ H5微信登录失败:', error)
  98. // 确保调用完成回调
  99. if (onComplete) {
  100. onComplete()
  101. }
  102. throw error
  103. }
  104. },
  105. // 获取用户信息
  106. async getUserInfo(userId) {
  107. console.log('👤 H5获取用户信息:', userId)
  108. return request.get(`/service?ssServ=user.getUserInfo&userId=${userId}`, {}, {
  109. loading: false
  110. })
  111. },
  112. // 登出 (使用 common.js 中的 userManager)
  113. async logout() {
  114. console.log('🚪 H5用户登出')
  115. try {
  116. // 使用公共的用户管理器清除登录信息
  117. userManager.clearLoginInfo()
  118. // 可以调用服务端登出接口
  119. // await request.post('/service?ssServ=ss.logout', {}, { loading: false })
  120. console.log('✅ H5登出成功')
  121. return { success: true }
  122. } catch (error) {
  123. console.error('❌ H5登出失败:', error)
  124. throw error
  125. }
  126. },
  127. // 检查登录状态 (使用 common.js 中的 userManager)
  128. checkLoginStatus() {
  129. return userManager.checkLoginStatus()
  130. },
  131. // 保存用户信息 (使用 common.js 中的 userManager)
  132. saveUserInfo(userInfo) {
  133. return userManager.saveUserInfo(userInfo)
  134. },
  135. // 获取保存的用户信息 (使用 common.js 中的 userManager)
  136. getSavedUserInfo() {
  137. return userManager.getSavedUserInfo()
  138. }
  139. }
  140. // 导出到全局
  141. window.h5UserApi = h5UserApi
  142. console.log('✅ H5 UserApi已加载')