1
This commit is contained in:
165
utils/storage.js
Normal file
165
utils/storage.js
Normal file
@@ -0,0 +1,165 @@
|
||||
/**
|
||||
* 本地存储管理器
|
||||
* 提供统一的数据存储接口和错误处理
|
||||
*/
|
||||
|
||||
class Storage {
|
||||
/**
|
||||
* 设置数据
|
||||
*/
|
||||
static set(key, data) {
|
||||
try {
|
||||
wx.setStorageSync(key, data)
|
||||
return { success: true }
|
||||
} catch (e) {
|
||||
console.error(`存储失败 [${key}]:`, e)
|
||||
return { success: false, error: e }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据
|
||||
*/
|
||||
static get(key, defaultValue = null) {
|
||||
try {
|
||||
const data = wx.getStorageSync(key)
|
||||
return data || defaultValue
|
||||
} catch (e) {
|
||||
console.error(`读取失败 [${key}]:`, e)
|
||||
return defaultValue
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除数据
|
||||
*/
|
||||
static remove(key) {
|
||||
try {
|
||||
wx.removeStorageSync(key)
|
||||
return { success: true }
|
||||
} catch (e) {
|
||||
console.error(`删除失败 [${key}]:`, e)
|
||||
return { success: false, error: e }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空所有数据
|
||||
*/
|
||||
static clear() {
|
||||
try {
|
||||
wx.clearStorageSync()
|
||||
return { success: true }
|
||||
} catch (e) {
|
||||
console.error('清空存储失败:', e)
|
||||
return { success: false, error: e }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取存储信息
|
||||
*/
|
||||
static getInfo() {
|
||||
try {
|
||||
return wx.getStorageInfoSync()
|
||||
} catch (e) {
|
||||
console.error('获取存储信息失败:', e)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量设置
|
||||
*/
|
||||
static setMultiple(items) {
|
||||
const results = []
|
||||
for (const [key, value] of Object.entries(items)) {
|
||||
results.push(this.set(key, value))
|
||||
}
|
||||
return results
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取
|
||||
*/
|
||||
static getMultiple(keys, defaultValue = null) {
|
||||
const result = {}
|
||||
keys.forEach(key => {
|
||||
result[key] = this.get(key, defaultValue)
|
||||
})
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据同步管理器
|
||||
* 处理本地和云端数据同步
|
||||
*/
|
||||
class SyncManager {
|
||||
constructor() {
|
||||
this.syncQueue = []
|
||||
this.isSyncing = false
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加到同步队列
|
||||
*/
|
||||
addToQueue(type, data) {
|
||||
this.syncQueue.push({
|
||||
type,
|
||||
data,
|
||||
timestamp: Date.now()
|
||||
})
|
||||
this.processQueue()
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理同步队列
|
||||
*/
|
||||
async processQueue() {
|
||||
if (this.isSyncing || this.syncQueue.length === 0) {
|
||||
return
|
||||
}
|
||||
|
||||
this.isSyncing = true
|
||||
|
||||
while (this.syncQueue.length > 0) {
|
||||
const item = this.syncQueue.shift()
|
||||
try {
|
||||
await this.syncItem(item)
|
||||
} catch (e) {
|
||||
console.error('同步失败:', e)
|
||||
// 重新加入队列
|
||||
this.syncQueue.push(item)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
this.isSyncing = false
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步单个项目
|
||||
*/
|
||||
async syncItem(item) {
|
||||
// TODO: 实现云端同步逻辑
|
||||
console.log('同步数据:', item)
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(resolve, 100)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取待同步数量
|
||||
*/
|
||||
getPendingCount() {
|
||||
return this.syncQueue.length
|
||||
}
|
||||
}
|
||||
|
||||
const syncManager = new SyncManager()
|
||||
|
||||
module.exports = {
|
||||
Storage,
|
||||
syncManager
|
||||
}
|
||||
Reference in New Issue
Block a user