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.
91 lines
2.3 KiB
91 lines
2.3 KiB
import store from '@/store'
|
|
import Config from '@/core/config'
|
|
import storage from '@/utils/storage'
|
|
import * as SettingApi from '@/api/setting'
|
|
import SettingKeyEnum from '@/common/enum/setting/Key'
|
|
import MpAlipaySettingModel from '@/common/model/mp/alipay/Setting'
|
|
import platform from '@/core/platform'
|
|
|
|
const CACHE_KEY = 'Setting'
|
|
|
|
// 写入缓存, 到期时间10分钟
|
|
const setStorage = data => {
|
|
const expireTime = 10 * 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 是否从缓存中获取 [优点不用每次请求后端api 缺点后台更新设置后需等待时效性]
|
|
*/
|
|
const data = (isCache = undefined) => {
|
|
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)
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
// 获取商城设置(指定项)
|
|
const item = (key, isCache = undefined) => {
|
|
return new Promise((resolve, reject) => {
|
|
data(isCache).then(setting => resolve(setting[key]))
|
|
})
|
|
}
|
|
|
|
// 设置全局自定义主题
|
|
const setAppTheme = () => {
|
|
return new Promise((resolve, reject) => {
|
|
item(SettingKeyEnum.APP_THEME.value).then(appTheme => {
|
|
store.dispatch('SetAppTheme', appTheme)
|
|
resolve()
|
|
})
|
|
})
|
|
}
|
|
|
|
// 是否显示客服按钮 (微信小程序客服只有在微信小程序端显示)
|
|
const isShowCustomerBtn = async () => {
|
|
// #ifdef MP-ALIPAY
|
|
return await MpAlipaySettingModel.isShowCustomerBtn()
|
|
// #endif
|
|
// #ifndef MP-ALIPAY
|
|
const setting = await item(SettingKeyEnum.CUSTOMER.value, true)
|
|
if (!setting.enabled) {
|
|
return false
|
|
}
|
|
return setting.provider === 'wxqykf' || (setting.provider === 'mpwxkf' && platform === 'MP-WEIXIN')
|
|
// #endif
|
|
}
|
|
|
|
export default {
|
|
setStorage,
|
|
data,
|
|
item,
|
|
setAppTheme,
|
|
isShowCustomerBtn
|
|
} |