/** * 本地存储工具 */ const TOKEN_KEY = 'yack_token'; const USER_INFO_KEY = 'yack_user_info'; const DEVICE_LIST_KEY = 'yack_device_list'; const PENDING_DATA_KEY = 'yack_pending_data'; /** * 获取 Token * @returns {string|null} */ function getToken() { try { return wx.getStorageSync(TOKEN_KEY) || null; } catch (e) { console.error('[Storage] getToken error:', e); return null; } } /** * 设置 Token * @param {string} token */ function setToken(token) { try { wx.setStorageSync(TOKEN_KEY, token); } catch (e) { console.error('[Storage] setToken error:', e); } } /** * 移除 Token */ function removeToken() { try { wx.removeStorageSync(TOKEN_KEY); } catch (e) { console.error('[Storage] removeToken error:', e); } } /** * 获取用户信息 * @returns {Object|null} */ function getUserInfo() { try { return wx.getStorageSync(USER_INFO_KEY) || null; } catch (e) { console.error('[Storage] getUserInfo error:', e); return null; } } /** * 设置用户信息 * @param {Object} userInfo */ function setUserInfo(userInfo) { try { wx.setStorageSync(USER_INFO_KEY, userInfo); } catch (e) { console.error('[Storage] setUserInfo error:', e); } } /** * 移除用户信息 */ function removeUserInfo() { try { wx.removeStorageSync(USER_INFO_KEY); } catch (e) { console.error('[Storage] removeUserInfo error:', e); } } /** * 获取设备列表 * @returns {Array} */ function getDeviceList() { try { return wx.getStorageSync(DEVICE_LIST_KEY) || []; } catch (e) { console.error('[Storage] getDeviceList error:', e); return []; } } /** * 保存设备列表 * @param {Array} devices */ function saveDeviceList(devices) { try { wx.setStorageSync(DEVICE_LIST_KEY, devices); } catch (e) { console.error('[Storage] saveDeviceList error:', e); } } /** * 添加设备 * @param {Object} device */ function addDevice(device) { const devices = getDeviceList(); // 检查是否已存在 const index = devices.findIndex(d => d.serialNumber === device.serialNumber); if (index >= 0) { devices[index] = device; } else { devices.push(device); } saveDeviceList(devices); } /** * 删除设备 * @param {string} serialNumber */ function removeDevice(serialNumber) { const devices = getDeviceList(); const newDevices = devices.filter(d => d.serialNumber !== serialNumber); saveDeviceList(newDevices); } /** * 更新设备 * @param {Object} device */ function updateDevice(device) { const devices = getDeviceList(); const index = devices.findIndex(d => d.serialNumber === device.serialNumber); if (index >= 0) { devices[index] = device; saveDeviceList(devices); } } /** * 获取单个设备 * @param {string} serialNumber * @returns {Object|null} */ function getDevice(serialNumber) { const devices = getDeviceList(); return devices.find(d => d.serialNumber === serialNumber) || null; } /** * 缓存待上报数据 * @param {Object} data */ function cachePendingData(data) { try { const pendingList = wx.getStorageSync(PENDING_DATA_KEY) || []; pendingList.push({ ...data, cacheTime: Date.now(), }); wx.setStorageSync(PENDING_DATA_KEY, pendingList); console.log('[Storage] 缓存待上报数据:', data); } catch (e) { console.error('[Storage] cachePendingData error:', e); } } /** * 获取待上报数据 * @returns {Array} */ function getPendingData() { try { return wx.getStorageSync(PENDING_DATA_KEY) || []; } catch (e) { console.error('[Storage] getPendingData error:', e); return []; } } /** * 清除待上报数据 */ function clearPendingData() { try { wx.removeStorageSync(PENDING_DATA_KEY); } catch (e) { console.error('[Storage] clearPendingData error:', e); } } /** * 清除所有数据 */ function clearAll() { try { wx.clearStorageSync(); console.log('[Storage] 已清除所有数据'); } catch (e) { console.error('[Storage] clearAll error:', e); } } module.exports = { getToken, setToken, removeToken, getUserInfo, setUserInfo, removeUserInfo, getDeviceList, saveDeviceList, addDevice, removeDevice, updateDevice, getDevice, cachePendingData, getPendingData, clearPendingData, clearAll, };