/** * 存储管理对象 * 目标:将现有系统的所有需要存储的数据,统一管理 * * @author terrfly * @site https://www.jeequan.com * @date 2022/04/13 07:18 */ import appConfig from '@/config/appConfig.js' // 应用级(vue级别)缓存, 当存在时则读取此值, 否则读取storage中的值。( vue线程内的缓存,不必要每次读取应用数据,影响性能) const appCache = { tokenVal: null, // token取值 currentUser: null, // 当前商户信息 } const model = { // 退出清空所有的缓存数据。 (不包含 环境相关) cleanByLogout: () => { // 1. 清空app级别缓存。 Object.keys(appCache).forEach((k) => (appCache[k] = null)) let envName = model.env() // 获取到当前的环境变量 uni.clearStorageSync() // 清除所有的缓存信息 model.env(envName) // 重置env }, // 获取和放置token token: (val, isDelete = false) => { if (isDelete) { appCache.tokenVal = '' return uni.removeStorageSync(appConfig.tokenKey) } if (val) { // 有值,为放置 appCache.tokenVal = val uni.setStorageSync(appConfig.tokenKey, val) } else { // 否则为获取 if (!appCache.tokenVal) { //缓存取不到,获取应用本地信息 appCache.tokenVal = uni.getStorageSync(appConfig.tokenKey) } return appCache.tokenVal } }, // 已经登录的用户记录 loggedInUser: (addUserName = null, removeUserName = null) => { let key = 'loggedInUserList' // 删除 if (removeUserName) { let nameList = uni.getStorageSync(key) || [] if (nameList.length <= 0) { //不存在数据 return false } let hasUserIndex = nameList.indexOf(removeUserName) if (hasUserIndex >= 0) { nameList.splice(hasUserIndex, 1) //删除 uni.setStorageSync(key, nameList) } return false } // 有新插入的记录 if (addUserName) { let nameList = uni.getStorageSync(key) || [] let hasUser = false for (let i = 0; i < nameList.length; i++) { if (nameList[i] == addUserName) { hasUser = true } } // 包含记录 if (hasUser) { return false } // 最多存储 5 个 if (nameList.length >= 5) { nameList.splice(0, 1) //删除第一个 } nameList.push(addUserName) uni.setStorageSync(key, nameList) //获取 } else { return uni.getStorageSync(key) || [] //默认空数组 } }, // 用户信息 userInfo: (currentUserInfo) => { if (currentUserInfo) { // 仅保存基础数据 let saveUser = { sysUserId: currentUserInfo.sysUserId, // 用户ID realname: currentUserInfo.realname, // 用户姓名 avatarUrl: currentUserInfo.avatarUrl, // 头像 telphone: currentUserInfo.telphone, // 手机号 userType: currentUserInfo.userType, // 用户类型 workState: currentUserInfo.workState, // 用户上班状态 mchNo: currentUserInfo.sysUserId, // 商户No mchShortName: currentUserInfo.shortName, // 商户简称 mchType: currentUserInfo.mchType, // 商户类型 mchLevel: currentUserInfo.mchLevel, // 商户级别 entIdList: currentUserInfo.entIdList, // 权限集合List } uni.setStorageSync('currentUserInfo', saveUser) // 改变存储 appCache.currentUser = null } if (!appCache.currentUser) { // 获取缓存数据 appCache.currentUser = uni.getStorageSync('currentUserInfo') } return appCache.currentUser }, // 项目环境变量:(测试、 生产的切换) env: (envMode) => { if (envMode) { uni.setStorageSync(appConfig.storeEnvEnumKey, envMode) // 改变存储 } return uni.getStorageSync(appConfig.storeEnvEnumKey) }, // 网站信息 siteInfos: (siteInfos) => { if (siteInfos) { uni.setStorageSync('siteInfos', siteInfos) // 改变存储 } return uni.getStorageSync('siteInfos') }, // unipush2 cid uniPush2Cid: (uniPush2Cid) => { if (uniPush2Cid) { uni.setStorageSync('uniPush2Cid', uniPush2Cid) // 改变存储 } return uni.getStorageSync('uniPush2Cid') }, faceModel: (faceM) => { if (faceM) return uni.setStorageSync('faceModel', faceM) //写入数据 return uni.getStorageSync('faceModel') //读取数据 }, deviceNo: (deviceNo) => { if (deviceNo) return uni.setStorageSync('deviceNo', deviceNo) //写入设备号 return uni.getStorageSync('deviceNo') //读取设备号 }, } export default model