This commit is contained in:
ChuXun
2025-10-19 20:28:31 +08:00
parent c81f8a8b03
commit eaab9a762a
100 changed files with 23416 additions and 0 deletions

165
utils/storage.js Normal file
View 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
}