You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yanzong_qianduan/common/model/groupon/Setting.js

53 lines
1.1 KiB

11 months ago
import Config from '@/core/config'
import * as SettingApi from '@/api/groupon/setting'
import storage from '@/utils/storage'
const CACHE_KEY = 'Groupon-Setting'
// 写入缓存, 到期时间30分钟
const setStorage = (data) => {
const expireTime = 30 * 60
storage.set(CACHE_KEY, data, expireTime)
}
// 获取缓存中的数据
const getStorage = () => {
return storage.get(CACHE_KEY)
}
// 获取后端接口商城设置 (最新)
const getApiData = () => {
return new Promise((resolve, reject) => {
SettingApi.data()
.then(result => {
resolve(result.data.setting)
})
})
}
/**
* 获取商城设置
* 有缓存的情况下返回缓存, 没有缓存从后端api获取
* @param {bool} isCache 是否从缓存中获取
*/
const data = (isCache = false) => {
if (isCache == undefined) {
isCache = Config.get('enabledSettingCache')
}
return new Promise((resolve, reject) => {
const cacheData = getStorage()
if (isCache && cacheData) {
resolve(cacheData)
} else {
getApiData().then(data => {
setStorage(data)
resolve(data)
})
}
})
}
export default {
data
}