Setting.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import * as SettingApi from '@/api/setting'
  2. import storage from '@/utils/storage'
  3. const CACHE_KEY = 'Setting'
  4. const OTHER = '_other'
  5. // 写入缓存, 到期时间10分钟
  6. const setStorage = (data) => {
  7. const expireTime = 10 * 60
  8. storage.set(CACHE_KEY, data, expireTime)
  9. }
  10. // 获取缓存中的数据
  11. const getStorage = () => {
  12. return storage.get(CACHE_KEY)
  13. }
  14. // 获取后端接口商城设置 (最新)
  15. const getApiData = () => {
  16. return new Promise((resolve, reject) => {
  17. SettingApi.data()
  18. .then(result => {
  19. resolve(result.data.setting)
  20. })
  21. })
  22. }
  23. /**
  24. * 获取商城设置
  25. * 有缓存的情况下返回缓存, 没有缓存从后端api获取
  26. * @param {bool} isCache 是否从缓存中获取 [优点不用每次请求后端api 缺点后台更新设置后需等待时效性]
  27. */
  28. const data = (isCache = false) => {
  29. return new Promise((resolve, reject) => {
  30. const cacheData = getStorage()
  31. if (isCache && cacheData) {
  32. resolve(cacheData)
  33. } else {
  34. getApiData()
  35. .then(data => {
  36. setStorage(data)
  37. resolve(data)
  38. })
  39. }
  40. })
  41. }
  42. // 获取商城设置(指定项)
  43. const item = (key, isCache = false) => {
  44. return new Promise((resolve, reject) => {
  45. data(isCache)
  46. .then(setting => {
  47. resolve(setting[key])
  48. })
  49. })
  50. }
  51. // 获取H5端访问地址
  52. const h5Url = (isCache = false) => {
  53. return new Promise((resolve, reject) => {
  54. data(isCache)
  55. .then(setting => {
  56. const h5Url = setting[OTHER]['h5Url']
  57. resolve(h5Url)
  58. })
  59. })
  60. }
  61. export default {
  62. data,
  63. item,
  64. h5Url
  65. }