Store.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import store from '@/store'
  2. import StoreApi from '@/api/store'
  3. import storage from '@/utils/storage'
  4. import SettingModel from '@/common/model/Setting'
  5. const CACHE_KEY = 'Store'
  6. // 写入缓存, 到期时间10分钟
  7. const setStorage = data => {
  8. const expireTime = 10 * 60
  9. storage.set(CACHE_KEY, data, expireTime)
  10. }
  11. // 获取缓存中的数据
  12. const getStorage = () => {
  13. return storage.get(CACHE_KEY)
  14. }
  15. // 获取后端接口商城设置 (最新)
  16. const getApiData = () => {
  17. return new Promise((resolve, reject) => {
  18. StoreApi.data().then(result => {
  19. // 初始化商城数据
  20. initStoreData(result.data)
  21. resolve(result.data)
  22. })
  23. })
  24. }
  25. // 初始化商城数据
  26. const initStoreData = data => {
  27. // 将商城基本信息写入缓存
  28. setStorage(data)
  29. // 设置商城设置缓存
  30. SettingModel.setStorage(data.setting)
  31. // 设置全局自定义主题
  32. SettingModel.setAppTheme()
  33. }
  34. /**
  35. * 获取商城基础信息
  36. * 有缓存的情况下返回缓存, 没有缓存从后端api获取
  37. */
  38. const data = (isCache = true) => {
  39. return new Promise((resolve, reject) => {
  40. const cacheData = getStorage()
  41. if (isCache && cacheData) {
  42. resolve(cacheData)
  43. } else {
  44. getApiData().then(data => {
  45. resolve(data)
  46. })
  47. }
  48. })
  49. }
  50. // 获取商城基本信息
  51. const storeInfo = () => {
  52. return new Promise((resolve, reject) => {
  53. data().then(data => resolve(data.storeInfo))
  54. })
  55. }
  56. // 获取H5端访问地址
  57. const h5Url = () => {
  58. return new Promise((resolve, reject) => {
  59. data().then(data => {
  60. const h5Url = data.clientData.h5.setting.baseUrl
  61. resolve(h5Url)
  62. })
  63. })
  64. }
  65. export default {
  66. data,
  67. storeInfo,
  68. h5Url
  69. }