pageStatistics.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /**
  2. * !页面统计:访问次数、停留时长
  3. */
  4. import devCache from "./devCache"
  5. import devOptions from "./devOptions";
  6. import jsonCompress from "./jsonCompress";
  7. import { timeFormat } from "./timeFormat";
  8. /**
  9. * 页面注销时提交
  10. */
  11. function pageStatisticsReport(
  12. route, activeTime,
  13. ) {
  14. try {
  15. if (!route) return false;
  16. let options = devOptions.getOptions()
  17. if (!options.pageStatistics.status) return; //! 配置文件关闭页面统计
  18. let logs = devCache.get("pageCount");
  19. if (!logs) logs = [];
  20. let pageIndex = logs.findIndex(x => x.route == route)
  21. if (pageIndex == -1) {
  22. logs.push({
  23. route,
  24. activeTimeCount: activeTime,
  25. })
  26. } else {
  27. logs[pageIndex].activeTimeCount = activeTime + logs[pageIndex].activeTimeCount;
  28. }
  29. logs = jsonCompress.compressArray(logs, "end", options.pageStatistics.size)
  30. devCache.set("pageCount", logs)
  31. let now = new Date().getTime();
  32. let date = timeFormat(now, "yyyy-mm-dd");
  33. let dayOnline = devCache.get("dayOnline");
  34. if (!dayOnline) dayOnline = [];
  35. let i = dayOnline.findIndex(x => x.date == date);
  36. if (i == -1) {
  37. dayOnline.unshift({
  38. date,
  39. activeTimeCount: activeTime,
  40. page: [
  41. {
  42. r: route,
  43. t: activeTime,
  44. }
  45. ]
  46. })
  47. } else {
  48. dayOnline[i].activeTimeCount = dayOnline[i].activeTimeCount + activeTime;
  49. let pi = dayOnline[i].page.findIndex(x => x.r == route);
  50. if (pi == -1) {
  51. dayOnline[i].page.push({
  52. r: route,
  53. t: activeTime,
  54. })
  55. } else {
  56. dayOnline[i].page[pi].t = dayOnline[i].page[pi].t + activeTime;
  57. }
  58. }
  59. if (dayOnline.length > options.pageStatistics.dayOnlineRowMax) {
  60. dayOnline = dayOnline.splice(0, options.pageStatistics.dayOnlineRowMax)
  61. }
  62. dayOnline = jsonCompress.compressArray(dayOnline, "end", options.pageStatistics.size)
  63. devCache.set("dayOnline", dayOnline)
  64. } catch (error) {
  65. console.log("pageStatistics error", error);
  66. }
  67. }
  68. export default pageStatisticsReport;