Setting.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import * as SettingApi from '@/api/setting'
  2. import storage from '@/utils/storage'
  3. const CACHE_KEY = 'Setting'
  4. // 写入缓存, 到期时间30分钟
  5. const setStorage = (data) => {
  6. const expireTime = 30 * 60
  7. storage.set(CACHE_KEY, data, expireTime)
  8. }
  9. // 获取缓存中的数据
  10. const getStorage = () => {
  11. return storage.get(CACHE_KEY)
  12. }
  13. // 获取后端接口商城设置 (最新)
  14. const getApiData = () => {
  15. return new Promise((resolve, reject) => {
  16. SettingApi.data()
  17. .then(result => {
  18. resolve(result.data.setting)
  19. })
  20. })
  21. }
  22. /**
  23. * 获取商城设置
  24. * 有缓存的情况下返回缓存, 没有缓存从后端api获取
  25. * @param {bool} isCache 是否从缓存中获取
  26. */
  27. const data = (isCache = true) => {
  28. return new Promise((resolve, reject) => {
  29. const cacheData = getStorage()
  30. if (isCache && cacheData) {
  31. resolve(cacheData)
  32. } else {
  33. getApiData().then(data => {
  34. setStorage(data)
  35. resolve(data)
  36. })
  37. }
  38. })
  39. }
  40. // 获取商城设置(指定项)
  41. const item = (key, isCache = true) => {
  42. return new Promise((resolve, reject) => {
  43. data(isCache).then(setting => {
  44. resolve(setting[key])
  45. })
  46. })
  47. }
  48. export default {
  49. data,
  50. item
  51. }