Setting.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import Config from '@/core/config'
  2. import storage from '@/utils/storage'
  3. import * as SettingApi from '@/api/setting'
  4. const CACHE_KEY = 'Setting'
  5. const OTHER = '_other'
  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. SettingApi.data()
  19. .then(result => {
  20. resolve(result.data.setting)
  21. })
  22. })
  23. }
  24. /**
  25. * 获取商城设置
  26. * 有缓存的情况下返回缓存, 没有缓存从后端api获取
  27. * @param {bool} isCache 是否从缓存中获取 [优点不用每次请求后端api 缺点后台更新设置后需等待时效性]
  28. */
  29. const data = isCache => {
  30. if (isCache == undefined) {
  31. isCache = Config.get('enabledSettingCache')
  32. }
  33. return new Promise((resolve, reject) => {
  34. const cacheData = getStorage()
  35. if (isCache && cacheData) {
  36. resolve(cacheData)
  37. } else {
  38. getApiData()
  39. .then(data => {
  40. setStorage(data)
  41. resolve(data)
  42. })
  43. }
  44. })
  45. }
  46. // 获取商城设置(指定项)
  47. const item = (key, isCache) => {
  48. return new Promise((resolve, reject) => {
  49. data(isCache)
  50. .then(setting => {
  51. resolve(setting[key])
  52. })
  53. })
  54. }
  55. // 获取H5端访问地址
  56. const h5Url = (isCache = false) => {
  57. return new Promise((resolve, reject) => {
  58. data(isCache)
  59. .then(setting => {
  60. const h5Url = setting[OTHER]['h5Url']
  61. resolve(h5Url)
  62. })
  63. })
  64. }
  65. export default {
  66. data,
  67. item,
  68. h5Url
  69. }