const OFFLINE_QUEUE_KEY = 'hss_offline_queue'; class OfflineQueue { constructor() { try { this.queue = uni.getStorageSync(OFFLINE_QUEUE_KEY) || []; } catch (e) { this.queue = []; } } add(item) { this.queue.push({ ...item, createdAt: Date.now() }); this.save(); } save() { uni.setStorageSync(OFFLINE_QUEUE_KEY, this.queue); } getPending() { return [...this.queue]; } getCount() { return this.queue.length; } async retry(apiPost) { const failed = []; for (const item of this.queue) { try { const res = await apiPost(item.path, item.data); if (res.data && (res.data.code === 200 || res.data.code === '200')) continue; failed.push(item); } catch (e) { failed.push(item); } } this.queue = failed; this.save(); return { success: failed.length === 0, total: this.getCount(), remaining: failed.length }; } clear() { this.queue = []; this.save(); } } module.exports = { OfflineQueue };