/** * 本地工具类(无需接口的功能) */ // ===================== 本地缓存清理(核心实现) ===================== /** * 清理小程序缓存 * @returns {Promise<{size: string, success: boolean}>} */ export function clearCache() { return new Promise((resolve) => { try { // 1. 清理本地存储(除了token,避免清理后直接退出) const token = uni.getStorageSync('user_token') // 保留登录态 uni.clearStorageSync() if (token) uni.setStorageSync('user_token', token) // 恢复token // 2. 清理临时文件(如图片、视频缓存) uni.getFileSystemManager().rmdir({ dirPath: `${wx.env.USER_DATA_PATH}/tmp`, // 微信小程序临时目录 recursive: true, fail: () => {} // 目录不存在时忽略 }) // 3. 计算清理的缓存大小(模拟,真实场景可通过getStorageInfo获取) uni.getStorageInfo({ success: (res) => { const clearSize = (res.currentSize || 0).toFixed(2) uni.showToast({ title: `清理完成,释放${clearSize}KB`, icon: 'success' }) resolve({ success: true, size: `${clearSize}KB` }) }, fail: () => { uni.showToast({ title: '缓存清理成功', icon: 'success' }) resolve({ success: true, size: '未知' }) } }) } catch (err) { console.error('清理缓存失败:', err) uni.showToast({ title: '缓存清理失败', icon: 'none' }) resolve({ success: false, size: '0KB' }) } }) } // ===================== 偏好设置管理(适配后端接口) ===================== // 偏好设置本地存储键名 const PREFERENCE_KEY = 'user_preferences' /** * 默认偏好设置(后端易适配的核心配置) */ const DEFAULT_PREFERENCES = { theme: 'light', // 主题:light(浅色)/dark(深色)/auto(跟随系统) listStyle: 'card', // 列表样式:card(卡片)/list(列表) budgetWarn: true, // 预算超限提醒:true/false autoSync: true, // 自动同步(后端接口适配:true-后台自动同步/false-手动同步) remindTime: '08:00', // 待办提醒时间:HH:mm monthBudget: 5000, // 月预算(数字,后端用于超限提醒) currency: 'CNY' // 货币单位(后端统一适配) } /** * 获取偏好设置(本地优先,无则返回默认值) */ export function getPreferences() { try { const localPrefs = uni.getStorageSync(PREFERENCE_KEY) if (localPrefs && typeof localPrefs === 'object') { // 合并默认值(避免新增配置项缺失) return { ...DEFAULT_PREFERENCES, ...localPrefs } } return { ...DEFAULT_PREFERENCES } } catch (err) { console.error('获取偏好设置失败:', err) return { ...DEFAULT_PREFERENCES } } } /** * 保存偏好设置(本地+可选同步到后端) * @param {Object} prefs - 要修改的偏好设置 * @param {boolean} [syncToServer=true] - 是否同步到后端 * @returns {Promise} 最新的偏好设置 */ export async function savePreferences(prefs, syncToServer = true) { try { // 1. 合并并保存到本地 const currentPrefs = getPreferences() const newPrefs = { ...currentPrefs, ...prefs } uni.setStorageSync(PREFERENCE_KEY, newPrefs) // 2. 同步到后端(可选) if (syncToServer) { try { // 导入request(避免循环依赖) const request = (await import('./request.js')).default await request.post('/settings/save', { preferences: newPrefs }) } catch (err) { console.warn('偏好设置同步后端失败:', err) // 同步失败不影响本地保存 } } uni.showToast({ title: '设置保存成功', icon: 'success' }) return newPrefs } catch (err) { console.error('保存偏好设置失败:', err) uni.showToast({ title: '设置保存失败', icon: 'none' }) return getPreferences() } } /** * 重置偏好设置为默认值 */ export function resetPreferences() { uni.setStorageSync(PREFERENCE_KEY, DEFAULT_PREFERENCES) uni.showToast({ title: '已恢复默认设置', icon: 'success' }) return { ...DEFAULT_PREFERENCES } } // ===================== 其他本地实用功能 ===================== /** * 获取小程序版本信息 */ export function getAppVersion() { const systemInfo = uni.getSystemInfoSync() return { version: systemInfo.version || '未知', platform: systemInfo.platform || '未知', appName: '备忘录' // 替换为你的小程序名称 } }