fastbee/yack-mini/miniprogram/utils/storage.js
2026-09-05 10:19:07 +08:00

227 lines
4.2 KiB
JavaScript

/**
* 本地存储工具
*/
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,
};