227 lines
4.2 KiB
JavaScript
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,
|
|
}; |