165 lines
4.6 KiB
JavaScript
165 lines
4.6 KiB
JavaScript
/**
|
||
* 存储管理对象
|
||
* 目标:将现有系统的所有需要存储的数据,统一管理
|
||
*
|
||
* @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
|