userCache.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import cacheManager from "@/utils/cacheManager.js"
  2. const TokenKey = 'Mta-UserCache'
  3. export function useUserCache() {
  4. function saveCache() {
  5. let pageId, key, value;
  6. if (arguments.length === 3) {
  7. pageId = arguments[0];
  8. key = arguments[1];
  9. value = arguments[2];
  10. } else if (arguments.length === 2) {
  11. pageId = arguments[0];
  12. key = 'default';
  13. value = arguments[1];
  14. } else {
  15. console.log('saveCache 参数非法');
  16. return;
  17. }
  18. const auth = cacheManager.get('auth');
  19. // console.log('auth:', auth)
  20. if (!auth) {
  21. throw new Error('用户未登录!')
  22. return;
  23. }
  24. const userId = auth.userId;
  25. // console.log('userId:', userId)
  26. if (!userId) {
  27. throw new Error('数据异常用户Id异常!')
  28. return;
  29. }
  30. let pageData = uni.getStorageSync(TokenKey);
  31. if (!pageData) {
  32. pageData = {};
  33. }
  34. if (!pageData[userId]) {
  35. pageData[userId] = {};
  36. }
  37. if (!pageData[userId][pageId]) {
  38. pageData[userId][pageId] = {};
  39. }
  40. let oriVal = pageData[userId][pageId][key];
  41. if (oriVal !== null && !Array.isArray(oriVal) && typeof oriVal === 'object') {
  42. Object.assign(oriVal, value);
  43. pageData[userId][pageId][key] = oriVal;
  44. } else {
  45. pageData[userId][pageId][key] = value;
  46. }
  47. pageData[userId][pageId]['markTime'] = new Date().getTime();
  48. uni.setStorageSync(TokenKey, pageData)
  49. }
  50. function getCache() {
  51. let pageId, key;
  52. if (arguments.length === 2) {
  53. pageId = arguments[0];
  54. key = arguments[1];
  55. } else if (arguments.length === 1) {
  56. pageId = arguments[0];
  57. key = 'default';
  58. } else {
  59. console.log('getCache 参数非法');
  60. return;
  61. }
  62. const auth = cacheManager.get('auth');
  63. if (!auth) {
  64. throw new Error('用户未登录!')
  65. return;
  66. }
  67. const userId = auth.userId;
  68. if (!userId) {
  69. throw new Error('数据异常用户Id异常!')
  70. return;
  71. }
  72. let pageData = uni.getStorageSync(TokenKey);
  73. if (!pageData || !pageData[userId] || !pageData[userId][pageId]) {
  74. return null;
  75. }
  76. return pageData[userId][pageId][key];
  77. }
  78. function getCacheOtherNotKey() {
  79. let pageId;
  80. pageId = arguments[0];
  81. const auth = cacheManager.get('auth');
  82. if (!auth) {
  83. throw new Error('用户未登录!')
  84. return;
  85. }
  86. const userId = auth.userId;
  87. if (!userId) {
  88. throw new Error('数据异常用户Id异常!')
  89. return;
  90. }
  91. let pageData = uni.getStorageSync(TokenKey);
  92. if (!pageData || !pageData[userId] || !pageData[userId][pageId]) {
  93. return null;
  94. }
  95. return pageData[userId][pageId];
  96. }
  97. function removeCache() {
  98. let pageId, key;
  99. if (arguments.length === 2) {
  100. pageId = arguments[0];
  101. key = arguments[1];
  102. } else if (arguments.length === 1) {
  103. pageId = arguments[0];
  104. } else {
  105. console.log('removeCache 参数非法');
  106. return;
  107. }
  108. const auth = cacheManager.get('auth');
  109. if (!auth) {
  110. throw new Error('用户未登录!')
  111. return;
  112. }
  113. const userId = auth.userId;
  114. if (!userId) {
  115. throw new Error('数据异常用户Id异常!')
  116. return;
  117. }
  118. if (pageId) {
  119. let pageData = uni.getStorageSync(TokenKey);
  120. if (!pageData) {
  121. return;
  122. }
  123. if (!pageData[userId]) {
  124. return;
  125. }
  126. if (arguments.length === 1) {
  127. delete pageData[userId][pageId];
  128. uni.setStorageSync(TokenKey, pageData)
  129. } else if (arguments.length === 2) {
  130. if (!pageData[userId][pageId]) {
  131. return;
  132. }
  133. delete pageData[userId][pageId][key];
  134. uni.setStorageSync(TokenKey, pageData)
  135. }
  136. }
  137. }
  138. return {
  139. saveCache,
  140. getCache,
  141. removeCache,
  142. getCacheOtherNotKey
  143. }
  144. }