"use strict"; const common_vendor = require("../common/vendor.js"); const utils_api = require("./api.js"); const TOKEN_KEY = "user_token"; const USER_INFO_KEY = "user_info"; let statusCheckTimer = null; const STATUS_CHECK_INTERVAL = 1e4; let isShowingDisabledModal = false; const setToken = (token) => { common_vendor.index.setStorageSync(TOKEN_KEY, token); }; const getToken = () => { return common_vendor.index.getStorageSync(TOKEN_KEY) || null; }; const removeToken = () => { common_vendor.index.removeStorageSync(TOKEN_KEY); }; const setUserInfo = (userInfo) => { common_vendor.index.setStorageSync(USER_INFO_KEY, JSON.stringify(userInfo)); }; const getUserInfo = () => { const userInfo = common_vendor.index.getStorageSync(USER_INFO_KEY); return userInfo ? JSON.parse(userInfo) : null; }; const removeUserInfo = () => { common_vendor.index.removeStorageSync(USER_INFO_KEY); }; const isLoggedIn = () => { return !!getToken(); }; const logout = () => { stopStatusCheck(); removeToken(); removeUserInfo(); }; const wxSilentLogin = async (loginCode) => { try { console.log("[静默登录] 开始检查用户状态, code:", loginCode); const result = await utils_api.wxSilentLoginApi({ loginCode }); console.log("[静默登录] 后端响应:", result); if (result.code === 200 && result.data.isSign === "true" && result.data.token) { setToken(result.data.token); console.log("[静默登录] 老用户登录成功"); await fetchAndSaveUserInfo(); startStatusCheck(); } return result.data; } catch (error) { console.error("[静默登录] 失败:", error); throw error; } }; const wxPhoneLogin = async (params) => { try { console.log("[手机号登录] 开始验证手机号"); const result = await utils_api.wxPhoneLoginApi(params); console.log("[手机号登录] 后端响应:", result); if (result.code === 200 && result.data.isSign === "true" && result.data.token) { setToken(result.data.token); console.log("[手机号登录] 已注册用户登录成功"); await fetchAndSaveUserInfo(); startStatusCheck(); } return result.data; } catch (error) { console.error("[手机号登录] 失败:", error); throw error; } }; const wxCompleteUserInfo = async (userInfo) => { try { console.log("[完善信息] 提交用户信息"); const result = await utils_api.wxCompleteUserInfoApi(userInfo); console.log("[完善信息] 后端响应:", result); if (result.code === 200 && result.data.token) { setToken(result.data.token); console.log("[完善信息] 注册成功"); await fetchAndSaveUserInfo(); startStatusCheck(); return true; } else { throw new Error(result.message || "注册失败"); } } catch (error) { console.error("[完善信息] 失败:", error); throw error; } }; const fetchAndSaveUserInfo = async () => { try { const result = await utils_api.getUserInfoApi(); if (result.code === 200 && result.data) { setUserInfo(result.data); console.log("[用户信息] 获取成功"); } } catch (error) { console.error("[用户信息] 获取失败:", error); } }; const refreshUserInfo = async () => { if (!isLoggedIn()) { return null; } try { const result = await utils_api.getUserInfoApi(); if (result.code === 200 && result.data) { const userInfo = { nickname: result.data.nickname || "", avatar: result.data.avatar || "", phone: result.data.phone || "", status: result.data.status || 0 }; if (userInfo.status === 1) { console.log("[用户状态] 账号已被禁用,自动退出登录"); handleUserDisabled(); return null; } setUserInfo(userInfo); console.log("[刷新用户状态] 成功, status:", userInfo.status); return userInfo; } } catch (error) { console.warn("[刷新用户状态] 失败:", error.message); } return getUserInfo(); }; const handleUserDisabled = () => { if (isShowingDisabledModal) { return; } isShowingDisabledModal = true; stopStatusCheck(); logout(); common_vendor.index.showModal({ title: "账号已禁用", content: "您的账号已被禁用,如有疑问请联系客服", showCancel: false, confirmText: "我知道了", success: () => { isShowingDisabledModal = false; common_vendor.index.switchTab({ url: "/pages/mine/mine" }); } }); }; const startStatusCheck = () => { if (statusCheckTimer) { return; } if (!isLoggedIn()) { return; } console.log("[状态检查] 启动定时检查"); checkUserStatus(); statusCheckTimer = setInterval(() => { checkUserStatus(); }, STATUS_CHECK_INTERVAL); }; const stopStatusCheck = () => { if (statusCheckTimer) { console.log("[状态检查] 停止定时检查"); clearInterval(statusCheckTimer); statusCheckTimer = null; } }; const checkUserStatus = async () => { if (!isLoggedIn()) { stopStatusCheck(); return; } try { const result = await utils_api.getUserInfoApi(); if (result.code === 200 && result.data) { if (result.data.status === 1) { console.log("[状态检查] 检测到账号被禁用"); handleUserDisabled(); } } } catch (error) { console.warn("[状态检查] 检查失败:", error.message); } }; const checkLogin = (callback) => { if (isLoggedIn()) { return true; } common_vendor.index.showModal({ title: "登录提示", content: '此功能需要登录后使用,请点击"立即登录"按钮进行授权', showCancel: false, confirmText: "我知道了" }); return false; }; exports.checkLogin = checkLogin; exports.getUserInfo = getUserInfo; exports.isLoggedIn = isLoggedIn; exports.logout = logout; exports.refreshUserInfo = refreshUserInfo; exports.setUserInfo = setUserInfo; exports.startStatusCheck = startStatusCheck; exports.stopStatusCheck = stopStatusCheck; exports.wxCompleteUserInfo = wxCompleteUserInfo; exports.wxPhoneLogin = wxPhoneLogin; exports.wxSilentLogin = wxSilentLogin;