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.
97 lines
2.3 KiB
97 lines
2.3 KiB
import store from '@/store'
|
|
import StoreApi from '@/api/store'
|
|
import storage from '@/utils/storage'
|
|
import { isWeixinOfficial } from '@/core/platform'
|
|
import SettingModel from '@/common/model/Setting'
|
|
import WxofficialSettingModel from '@/common/model/wxofficial/Setting'
|
|
|
|
const CACHE_KEY = 'Store'
|
|
|
|
// 写入缓存, 到期时间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) => {
|
|
StoreApi.data().then(result => {
|
|
// 初始化商城数据
|
|
initStoreData(result.data)
|
|
resolve(result.data)
|
|
})
|
|
})
|
|
}
|
|
|
|
// 初始化商城数据
|
|
const initStoreData = data => {
|
|
// 将商城基本信息写入缓存
|
|
setStorage(data)
|
|
// 设置商城设置缓存
|
|
SettingModel.setStorage(data.setting)
|
|
// 设置全局自定义主题
|
|
SettingModel.setAppTheme()
|
|
// 设置微信公众号链接分享卡片内容(全局)
|
|
if (isWeixinOfficial) {
|
|
WxofficialSettingModel.setGlobalShareCard(false)
|
|
}
|
|
// 设置开启的功能模块
|
|
store.dispatch('SetModules', data.modules)
|
|
}
|
|
|
|
/**
|
|
* 获取商城基础信息
|
|
* 有缓存的情况下返回缓存, 没有缓存从后端api获取
|
|
*/
|
|
const data = (isCache = true) => {
|
|
return new Promise((resolve, reject) => {
|
|
const cacheData = getStorage()
|
|
if (isCache && cacheData) {
|
|
resolve(cacheData)
|
|
} else {
|
|
getApiData().then(data => {
|
|
resolve(data)
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
// 获取商城基本信息
|
|
const storeInfo = () => {
|
|
return new Promise((resolve, reject) => {
|
|
data().then(data => resolve(data.storeInfo))
|
|
})
|
|
}
|
|
|
|
// 获取H5端访问地址
|
|
const h5Url = () => {
|
|
return new Promise((resolve, reject) => {
|
|
data().then(data => {
|
|
const h5Url = data.clientData.h5.setting.baseUrl
|
|
resolve(h5Url)
|
|
})
|
|
})
|
|
}
|
|
|
|
// 是否开启分销中心
|
|
const isEnabledDealer = () => {
|
|
return new Promise((resolve, reject) => {
|
|
data().then(data => {
|
|
const isEnabledDealer = Boolean(data.dealer.setting.is_open)
|
|
resolve(isEnabledDealer)
|
|
})
|
|
})
|
|
}
|
|
|
|
export default {
|
|
data,
|
|
storeInfo,
|
|
h5Url,
|
|
isEnabledDealer
|
|
} |