ts-glitter 21.0.9 → 21.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,6 @@ const exception_js_1 = __importDefault(require("../../modules/exception.js"));
8
8
  const database_js_1 = __importDefault(require("../../modules/database.js"));
9
9
  const tool_js_1 = __importDefault(require("../../modules/tool.js"));
10
10
  const moment_1 = __importDefault(require("moment"));
11
- const config_js_1 = require("../../config.js");
12
11
  const shopping_js_1 = require("./shopping.js");
13
12
  const user_js_1 = require("./user.js");
14
13
  const workers_js_1 = require("./workers.js");
@@ -24,7 +23,7 @@ class DataAnalyze {
24
23
  async workerExample(data) {
25
24
  try {
26
25
  const jsonData = await database_js_1.default.query(`SELECT *
27
- FROM \`${this.app}\`.t_voucher_history`, []);
26
+ FROM \`${this.app}\`.t_voucher_history`, []);
28
27
  const t0 = performance.now();
29
28
  if (data.type === 0) {
30
29
  for (const record of jsonData) {
@@ -121,15 +120,15 @@ class DataAnalyze {
121
120
  async getRecentActiveUser() {
122
121
  try {
123
122
  const recentSQL = `
124
- SELECT *
125
- FROM \`${this.app}\`.t_user
126
- WHERE online_time BETWEEN DATE_SUB(NOW(), INTERVAL 10 MINUTE) AND NOW();
123
+ SELECT *
124
+ FROM \`${this.app}\`.t_user
125
+ WHERE online_time BETWEEN DATE_SUB(NOW(), INTERVAL 10 MINUTE) AND NOW();
127
126
  `;
128
127
  const recent_users = await database_js_1.default.query(recentSQL, []);
129
128
  const monthSQL = `
130
- SELECT *
131
- FROM \`${this.app}\`.t_user
132
- WHERE MONTH (online_time) = MONTH (NOW()) AND YEAR (online_time) = YEAR (NOW());
129
+ SELECT *
130
+ FROM \`${this.app}\`.t_user
131
+ WHERE MONTH (online_time) = MONTH (NOW()) AND YEAR (online_time) = YEAR (NOW());
133
132
  `;
134
133
  const month_users = await database_js_1.default.query(monthSQL, []);
135
134
  return { recent: recent_users.length, months: month_users.length };
@@ -142,13 +141,13 @@ class DataAnalyze {
142
141
  try {
143
142
  const orderCountingSQL = await this.getOrderCountingSQL();
144
143
  const getCheckoutsSQL = (monthOffset) => `
145
- SELECT *
146
- FROM \`${this.app}\`.t_checkout
147
- WHERE MONTH (created_time) = MONTH (DATE_SUB(NOW()
148
- , INTERVAL ${monthOffset} MONTH))
149
- AND YEAR (created_time) = YEAR (DATE_SUB(NOW()
150
- , INTERVAL ${monthOffset} MONTH))
151
- AND (${orderCountingSQL});
144
+ SELECT *
145
+ FROM \`${this.app}\`.t_checkout
146
+ WHERE MONTH (created_time) = MONTH (DATE_SUB(NOW()
147
+ , INTERVAL ${monthOffset} MONTH))
148
+ AND YEAR (created_time) = YEAR (DATE_SUB(NOW()
149
+ , INTERVAL ${monthOffset} MONTH))
150
+ AND (${orderCountingSQL});
152
151
  `;
153
152
  const calculateTotal = (checkouts) => checkouts.reduce((total, checkout) => total + parseInt(checkout.orderData.total, 10), 0);
154
153
  const recentMonthCheckouts = await database_js_1.default.query(getCheckoutsSQL(0), []);
@@ -193,16 +192,16 @@ class DataAnalyze {
193
192
  }
194
193
  const orderCountingSQL = await this.getOrderCountingSQL();
195
194
  const checkoutSQL = `
196
- SELECT *
197
- FROM \`${this.app}\`.t_checkout
198
- WHERE ${duration === 'day'
195
+ SELECT *
196
+ FROM \`${this.app}\`.t_checkout
197
+ WHERE ${duration === 'day'
199
198
  ? `created_time BETWEEN NOW() AND NOW() + INTERVAL 1 DAY - INTERVAL 1 SECOND`
200
199
  : duration === 'month'
201
200
  ? `created_time BETWEEN DATE_SUB(NOW(), INTERVAL 1 MONTH) AND NOW()`
202
201
  : sqlConditions.length
203
202
  ? sqlConditions.join(' AND ')
204
203
  : '1=1'}
205
- AND (${orderCountingSQL});
204
+ AND (${orderCountingSQL});
206
205
  `;
207
206
  const checkouts = await database_js_1.default.query(checkoutSQL, []);
208
207
  const productMap = new Map();
@@ -260,13 +259,13 @@ class DataAnalyze {
260
259
  try {
261
260
  const orderCountingSQL = await this.getOrderCountingSQL();
262
261
  const getCheckoutCountSQL = (monthOffset) => `
263
- SELECT id
264
- FROM \`${this.app}\`.t_checkout
265
- WHERE MONTH (created_time) = MONTH (DATE_SUB(NOW()
266
- , INTERVAL ${monthOffset} MONTH))
267
- AND YEAR (created_time) = YEAR (DATE_SUB(NOW()
268
- , INTERVAL ${monthOffset} MONTH))
269
- AND ${orderCountingSQL};
262
+ SELECT id
263
+ FROM \`${this.app}\`.t_checkout
264
+ WHERE MONTH (created_time) = MONTH (DATE_SUB(NOW()
265
+ , INTERVAL ${monthOffset} MONTH))
266
+ AND YEAR (created_time) = YEAR (DATE_SUB(NOW()
267
+ , INTERVAL ${monthOffset} MONTH))
268
+ AND ${orderCountingSQL};
270
269
  `;
271
270
  const recentMonthCheckouts = await database_js_1.default.query(getCheckoutCountSQL(0), []);
272
271
  const previousMonthCheckouts = await database_js_1.default.query(getCheckoutCountSQL(1), []);
@@ -293,10 +292,10 @@ class DataAnalyze {
293
292
  const queries = Array.from({ length: 14 }, async (_, index) => {
294
293
  const dayOffset = `DATE_SUB(DATE(NOW()), INTERVAL ${index} DAY)`;
295
294
  const monthCheckoutSQL = `
296
- SELECT orderData ->>'$.orderSource' as orderSource, orderData
297
- FROM \`${this.app}\`.t_checkout
298
- WHERE DATE (${convertTimeZone('created_time')}) = ${dayOffset}
299
- AND ${orderCountingSQL};
295
+ SELECT orderData ->>'$.orderSource' as orderSource, orderData
296
+ FROM \`${this.app}\`.t_checkout
297
+ WHERE DATE (${convertTimeZone('created_time')}) = ${dayOffset}
298
+ AND ${orderCountingSQL};
300
299
  `;
301
300
  return database_js_1.default.query(monthCheckoutSQL, []).then(data => {
302
301
  let total = 0, total_pos = 0, total_web = 0, total_store = 0;
@@ -337,10 +336,10 @@ class DataAnalyze {
337
336
  const queries = Array.from({ length: 30 }, async (_, index) => {
338
337
  const dayOffset = `DATE_SUB(DATE(NOW()), INTERVAL ${index} DAY)`;
339
338
  const monthCheckoutSQL = `
340
- SELECT orderData ->>'$.orderSource' as orderSource, orderData
341
- FROM \`${this.app}\`.t_checkout
342
- WHERE DATE (${convertTimeZone('created_time')}) = ${dayOffset}
343
- AND ${orderCountingSQL};
339
+ SELECT orderData ->>'$.orderSource' as orderSource, orderData
340
+ FROM \`${this.app}\`.t_checkout
341
+ WHERE DATE (${convertTimeZone('created_time')}) = ${dayOffset}
342
+ AND ${orderCountingSQL};
344
343
  `;
345
344
  return database_js_1.default.query(monthCheckoutSQL, []).then(data => {
346
345
  let total = 0, total_pos = 0, total_web = 0, total_store = 0;
@@ -383,10 +382,10 @@ class DataAnalyze {
383
382
  const queries = Array.from({ length: days }, async (_, index) => {
384
383
  const dayOffset = `DATE_SUB(DATE("${endDate}"), INTERVAL ${index} DAY)`;
385
384
  const monthCheckoutSQL = `
386
- SELECT orderData ->>'$.orderSource' as orderSource, orderData
387
- FROM \`${this.app}\`.t_checkout
388
- WHERE DATE (${convertTimeZone('created_time')}) = ${dayOffset}
389
- AND ${orderCountingSQL};
385
+ SELECT orderData ->>'$.orderSource' as orderSource, orderData
386
+ FROM \`${this.app}\`.t_checkout
387
+ WHERE DATE (${convertTimeZone('created_time')}) = ${dayOffset}
388
+ AND ${orderCountingSQL};
390
389
  `;
391
390
  return database_js_1.default.query(monthCheckoutSQL, []).then(data => {
392
391
  let total = 0, total_pos = 0, total_web = 0, total_store = 0;
@@ -427,11 +426,11 @@ class DataAnalyze {
427
426
  const queries = Array.from({ length: 12 }, async (_, index) => {
428
427
  const monthOffset = `DATE_FORMAT(DATE_SUB(${convertTimeZone('NOW()')}, INTERVAL ${index} MONTH), '%Y-%m')`;
429
428
  const monthCheckoutSQL = `
430
- SELECT orderData ->>'$.orderSource' as orderSource, orderData
431
- FROM \`${this.app}\`.t_checkout
432
- WHERE DATE_FORMAT(${convertTimeZone('created_time')}
433
- , '%Y-%m') = ${monthOffset}
434
- AND ${orderCountingSQL};
429
+ SELECT orderData ->>'$.orderSource' as orderSource, orderData
430
+ FROM \`${this.app}\`.t_checkout
431
+ WHERE DATE_FORMAT(${convertTimeZone('created_time')}
432
+ , '%Y-%m') = ${monthOffset}
433
+ AND ${orderCountingSQL};
435
434
  `;
436
435
  return database_js_1.default.query(monthCheckoutSQL, []).then(data => {
437
436
  let total = 0, total_pos = 0, total_web = 0, total_store = 0;
@@ -473,14 +472,14 @@ class DataAnalyze {
473
472
  await new Promise(resolve => {
474
473
  for (let index = 0; index < 12; index++) {
475
474
  const monthCheckoutSQL = `
476
- SELECT orderData
477
- FROM \`${this.app}\`.t_checkout
478
- WHERE
479
- MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
480
- , INTERVAL ${index} MONTH))
481
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
482
- , INTERVAL ${index} MONTH))
483
- AND ${orderCountingSQL};
475
+ SELECT orderData
476
+ FROM \`${this.app}\`.t_checkout
477
+ WHERE
478
+ MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
479
+ , INTERVAL ${index} MONTH))
480
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
481
+ , INTERVAL ${index} MONTH))
482
+ AND ${orderCountingSQL};
484
483
  `;
485
484
  database_js_1.default.query(monthCheckoutSQL, []).then(data => {
486
485
  pass++;
@@ -549,16 +548,16 @@ class DataAnalyze {
549
548
  await new Promise(resolve => {
550
549
  for (let index = 0; index < 14; index++) {
551
550
  const monthCheckoutSQL = `
552
- SELECT orderData
553
- FROM \`${this.app}\`.t_checkout
554
- WHERE
555
- DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
556
- , INTERVAL ${index} DAY))
557
- AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
558
- , INTERVAL ${index} DAY))
559
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
560
- , INTERVAL ${index} DAY))
561
- AND ${orderCountingSQL};
551
+ SELECT orderData
552
+ FROM \`${this.app}\`.t_checkout
553
+ WHERE
554
+ DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
555
+ , INTERVAL ${index} DAY))
556
+ AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
557
+ , INTERVAL ${index} DAY))
558
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
559
+ , INTERVAL ${index} DAY))
560
+ AND ${orderCountingSQL};
562
561
  `;
563
562
  database_js_1.default.query(monthCheckoutSQL, []).then(data => {
564
563
  pass++;
@@ -627,16 +626,16 @@ class DataAnalyze {
627
626
  await new Promise(resolve => {
628
627
  for (let index = 0; index < 30; index++) {
629
628
  const monthCheckoutSQL = `
630
- SELECT orderData
631
- FROM \`${this.app}\`.t_checkout
632
- WHERE
633
- DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
634
- , INTERVAL ${index} DAY))
635
- AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
636
- , INTERVAL ${index} DAY))
637
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
638
- , INTERVAL ${index} DAY))
639
- AND ${orderCountingSQL};
629
+ SELECT orderData
630
+ FROM \`${this.app}\`.t_checkout
631
+ WHERE
632
+ DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
633
+ , INTERVAL ${index} DAY))
634
+ AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
635
+ , INTERVAL ${index} DAY))
636
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
637
+ , INTERVAL ${index} DAY))
638
+ AND ${orderCountingSQL};
640
639
  `;
641
640
  database_js_1.default.query(monthCheckoutSQL, []).then(data => {
642
641
  pass++;
@@ -714,16 +713,16 @@ class DataAnalyze {
714
713
  await new Promise(resolve => {
715
714
  for (let index = 0; index < days; index++) {
716
715
  const monthCheckoutSQL = `
717
- SELECT orderData
718
- FROM \`${this.app}\`.t_checkout
719
- WHERE
720
- DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone(formatEndDate)}
721
- , INTERVAL ${index} DAY))
722
- AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone(formatEndDate)}
723
- , INTERVAL ${index} DAY))
724
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone(formatEndDate)}
725
- , INTERVAL ${index} DAY))
726
- AND ${orderCountingSQL};
716
+ SELECT orderData
717
+ FROM \`${this.app}\`.t_checkout
718
+ WHERE
719
+ DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone(formatEndDate)}
720
+ , INTERVAL ${index} DAY))
721
+ AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone(formatEndDate)}
722
+ , INTERVAL ${index} DAY))
723
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone(formatEndDate)}
724
+ , INTERVAL ${index} DAY))
725
+ AND ${orderCountingSQL};
727
726
  `;
728
727
  database_js_1.default.query(monthCheckoutSQL, []).then(data => {
729
728
  pass++;
@@ -792,14 +791,14 @@ class DataAnalyze {
792
791
  await new Promise(resolve => {
793
792
  for (let index = 0; index < 12; index++) {
794
793
  const monthCheckoutSQL = `
795
- SELECT orderData
796
- FROM \`${this.app}\`.t_checkout
797
- WHERE
798
- MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
799
- , INTERVAL ${index} MONTH))
800
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
801
- , INTERVAL ${index} MONTH))
802
- AND ${orderCountingSQL};
794
+ SELECT orderData
795
+ FROM \`${this.app}\`.t_checkout
796
+ WHERE
797
+ MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
798
+ , INTERVAL ${index} MONTH))
799
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
800
+ , INTERVAL ${index} MONTH))
801
+ AND ${orderCountingSQL};
803
802
  `;
804
803
  database_js_1.default.query(monthCheckoutSQL, []).then(data => {
805
804
  pass++;
@@ -874,16 +873,16 @@ class DataAnalyze {
874
873
  await new Promise(resolve => {
875
874
  for (let index = 0; index < 14; index++) {
876
875
  const monthCheckoutSQL = `
877
- SELECT orderData
878
- FROM \`${this.app}\`.t_checkout
879
- WHERE
880
- DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
881
- , INTERVAL ${index} DAY))
882
- AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
883
- , INTERVAL ${index} DAY))
884
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
885
- , INTERVAL ${index} DAY))
886
- AND ${orderCountingSQL};
876
+ SELECT orderData
877
+ FROM \`${this.app}\`.t_checkout
878
+ WHERE
879
+ DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
880
+ , INTERVAL ${index} DAY))
881
+ AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
882
+ , INTERVAL ${index} DAY))
883
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
884
+ , INTERVAL ${index} DAY))
885
+ AND ${orderCountingSQL};
887
886
  `;
888
887
  database_js_1.default.query(monthCheckoutSQL, []).then(data => {
889
888
  pass++;
@@ -958,16 +957,16 @@ class DataAnalyze {
958
957
  await new Promise(resolve => {
959
958
  for (let index = 0; index < 30; index++) {
960
959
  const monthCheckoutSQL = `
961
- SELECT orderData
962
- FROM \`${this.app}\`.t_checkout
963
- WHERE
964
- DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
965
- , INTERVAL ${index} DAY))
966
- AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
967
- , INTERVAL ${index} DAY))
968
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
969
- , INTERVAL ${index} DAY))
970
- AND ${orderCountingSQL};
960
+ SELECT orderData
961
+ FROM \`${this.app}\`.t_checkout
962
+ WHERE
963
+ DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
964
+ , INTERVAL ${index} DAY))
965
+ AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
966
+ , INTERVAL ${index} DAY))
967
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
968
+ , INTERVAL ${index} DAY))
969
+ AND ${orderCountingSQL};
971
970
  `;
972
971
  database_js_1.default.query(monthCheckoutSQL, []).then(data => {
973
972
  pass++;
@@ -1044,16 +1043,16 @@ class DataAnalyze {
1044
1043
  await new Promise(resolve => {
1045
1044
  for (let index = 0; index < days; index++) {
1046
1045
  const monthCheckoutSQL = `
1047
- SELECT orderData
1048
- FROM \`${this.app}\`.t_checkout
1049
- WHERE
1050
- DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone(formatEndDate)}
1051
- , INTERVAL ${index} DAY))
1052
- AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone(formatEndDate)}
1053
- , INTERVAL ${index} DAY))
1054
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone(formatEndDate)}
1055
- , INTERVAL ${index} DAY))
1056
- AND ${orderCountingSQL}
1046
+ SELECT orderData
1047
+ FROM \`${this.app}\`.t_checkout
1048
+ WHERE
1049
+ DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone(formatEndDate)}
1050
+ , INTERVAL ${index} DAY))
1051
+ AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone(formatEndDate)}
1052
+ , INTERVAL ${index} DAY))
1053
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone(formatEndDate)}
1054
+ , INTERVAL ${index} DAY))
1055
+ AND ${orderCountingSQL}
1057
1056
  `;
1058
1057
  database_js_1.default.query(monthCheckoutSQL, []).then(data => {
1059
1058
  pass++;
@@ -1119,117 +1118,58 @@ class DataAnalyze {
1119
1118
  async getActiveRecentYear() {
1120
1119
  const utTimer = new ut_timer_js_1.UtTimer('GET-RECENT-ACTIVE-USER-YEAR');
1121
1120
  const checkPoint = utTimer.checkPoint;
1122
- const endDate = moment_1.default.tz('Asia/Taipei').toDate();
1123
- endDate.setMonth(endDate.getMonth() + 1, 1);
1124
- const startDate = moment_1.default.tz('Asia/Taipei').toDate();
1125
- startDate.setMonth(endDate.getMonth() - 12);
1126
- const sql = `
1127
- SELECT mac_address, created_time
1128
- FROM \`${config_js_1.saasConfig.SAAS_NAME}\`.t_monitor
1129
- WHERE app_name = ${database_js_1.default.escape(this.app)}
1130
- AND req_type = 'file'
1131
- AND created_time BETWEEN '${startDate.toISOString()}' AND '${endDate.toISOString()}'
1132
- GROUP BY id, mac_address
1133
- `;
1134
- console.log(`getActiveRecentYear: ${sql}`);
1135
- checkPoint(`sql-start`);
1136
- const queryData = await database_js_1.default.query(sql, []);
1137
- checkPoint(`sql-end-${queryData.length}`);
1138
1121
  const now = moment_1.default.tz('Asia/Taipei').toDate();
1139
- const dataList = Array.from({ length: 12 }, (_, index) => {
1140
- const targetDate = new Date(now.getFullYear(), now.getMonth() - index, 1);
1141
- const year = targetDate.getFullYear();
1142
- const month = targetDate.getMonth() + 1;
1143
- const filteredData = queryData.filter((item) => {
1144
- const date = moment_1.default.tz(item.created_time, 'UTC').clone().tz('Asia/Taipei').toDate();
1145
- return date.getFullYear() === year && date.getMonth() + 1 === month;
1122
+ const dataList = await Promise.all(Array.from({ length: 12 }, (_, index) => index).map((dd, index) => {
1123
+ return new Promise(async (resolve, reject) => {
1124
+ const sql = `
1125
+ select sum(count)
1126
+ from \`${this.app}\`.visit_logs where
1127
+ MONTH(${convertTimeZone('date')}) = MONTH(DATE_SUB(${convertTimeZone('NOW()')}, INTERVAL ${index} MONTH))
1128
+ `;
1129
+ const queryData = await database_js_1.default.query(sql, []);
1130
+ resolve((queryData[0] && queryData[0]['sum(count)']) || 0);
1146
1131
  });
1147
- const uniqueMacAddresses = new Set(filteredData.map((item) => item.mac_address));
1148
- return {
1149
- year,
1150
- month,
1151
- total_count: filteredData.length,
1152
- unique_count: uniqueMacAddresses.size,
1153
- };
1154
- });
1155
- const result = dataList.map(data => data.unique_count);
1156
- checkPoint(`data-end`);
1132
+ }));
1157
1133
  return {
1158
- count_array: result.reverse(),
1134
+ count_array: dataList.reverse(),
1159
1135
  };
1160
1136
  }
1161
1137
  async getActiveRecentWeek() {
1162
- const sql = `
1163
- SELECT mac_address, ${convertTimeZone('created_time')} AS created_time
1164
- FROM \`${config_js_1.saasConfig.SAAS_NAME}\`.t_monitor
1165
- WHERE app_name = ${database_js_1.default.escape(this.app)}
1166
- AND req_type = 'file'
1167
- AND ${convertTimeZone('created_time')} BETWEEN (DATE_SUB(${convertTimeZone('NOW()')}
1168
- , INTERVAL 14 DAY))
1169
- AND ${convertTimeZone('NOW()')}
1170
- GROUP BY id, mac_address
1171
- `;
1172
- const queryData = await database_js_1.default.query(sql, []);
1138
+ const utTimer = new ut_timer_js_1.UtTimer('GET-RECENT-ACTIVE-USER-WEEK');
1139
+ const checkPoint = utTimer.checkPoint;
1173
1140
  const now = moment_1.default.tz('Asia/Taipei').toDate();
1174
- const dataList = Array.from({ length: 14 }, (_, index) => {
1175
- const targetDate = new Date(now.getTime());
1176
- targetDate.setDate(new Date(now.getTime()).getDate() - index);
1177
- const year = targetDate.getFullYear();
1178
- const month = targetDate.getMonth() + 1;
1179
- const day = targetDate.getDate();
1180
- const filteredData = queryData.filter((item) => {
1181
- const date = moment_1.default.tz(item.created_time, 'UTC').clone().tz('Asia/Taipei').toDate();
1182
- return date.getFullYear() === year && date.getMonth() + 1 === month && date.getDate() === day;
1141
+ const dataList = await Promise.all(Array.from({ length: 14 }, (_, index) => index).map((dd, index) => {
1142
+ return new Promise(async (resolve, reject) => {
1143
+ const sql = `
1144
+ select count
1145
+ from \`${this.app}\`.visit_logs where
1146
+ DATE(${convertTimeZone('date')}) = DATE(DATE_SUB(${convertTimeZone('NOW()')}, INTERVAL ${index} DAY))
1147
+ `;
1148
+ const queryData = await database_js_1.default.query(sql, []);
1149
+ resolve((queryData[0] && queryData[0]['count']) || 0);
1183
1150
  });
1184
- const uniqueMacAddresses = new Set(filteredData.map((item) => item.mac_address));
1185
- return {
1186
- year,
1187
- month,
1188
- day,
1189
- total_count: filteredData.length,
1190
- unique_count: uniqueMacAddresses.size,
1191
- };
1192
- });
1193
- const result = dataList.map(data => data.unique_count);
1151
+ }));
1194
1152
  return {
1195
- count_array: result.reverse(),
1153
+ count_array: dataList.reverse(),
1196
1154
  };
1197
1155
  }
1198
1156
  async getActiveRecentMonth() {
1199
- const sql = `
1200
- SELECT mac_address, ${convertTimeZone('created_time')} AS created_time
1201
- FROM \`${config_js_1.saasConfig.SAAS_NAME}\`.t_monitor
1202
- WHERE app_name = ${database_js_1.default.escape(this.app)}
1203
- AND req_type = 'file'
1204
- AND ${convertTimeZone('created_time')} BETWEEN (DATE_SUB(${convertTimeZone('NOW()')}
1205
- , INTERVAL 30 DAY))
1206
- AND ${convertTimeZone('NOW()')}
1207
- GROUP BY id, mac_address
1208
- `;
1209
- const queryData = await database_js_1.default.query(sql, []);
1157
+ const utTimer = new ut_timer_js_1.UtTimer('GET-RECENT-ACTIVE-USER-WEEK');
1158
+ const checkPoint = utTimer.checkPoint;
1210
1159
  const now = moment_1.default.tz('Asia/Taipei').toDate();
1211
- const dataList = Array.from({ length: 30 }, (_, index) => {
1212
- const targetDate = new Date(now.getTime());
1213
- targetDate.setDate(new Date(now.getTime()).getDate() - index);
1214
- const year = targetDate.getFullYear();
1215
- const month = targetDate.getMonth() + 1;
1216
- const day = targetDate.getDate();
1217
- const filteredData = queryData.filter((item) => {
1218
- const date = moment_1.default.tz(item.created_time, 'UTC').clone().tz('Asia/Taipei').toDate();
1219
- return date.getFullYear() === year && date.getMonth() + 1 === month && date.getDate() === day;
1160
+ const dataList = await Promise.all(Array.from({ length: 30 }, (_, index) => index).map((dd, index) => {
1161
+ return new Promise(async (resolve, reject) => {
1162
+ const sql = `
1163
+ select count
1164
+ from \`${this.app}\`.visit_logs where
1165
+ DATE(${convertTimeZone('date')}) = DATE(DATE_SUB(${convertTimeZone('NOW()')}, INTERVAL ${index} DAY))
1166
+ `;
1167
+ const queryData = await database_js_1.default.query(sql, []);
1168
+ resolve((queryData[0] && queryData[0]['count']) || 0);
1220
1169
  });
1221
- const uniqueMacAddresses = new Set(filteredData.map((item) => item.mac_address));
1222
- return {
1223
- year,
1224
- month,
1225
- day,
1226
- total_count: filteredData.length,
1227
- unique_count: uniqueMacAddresses.size,
1228
- };
1229
- });
1230
- const result = dataList.map(data => data.unique_count);
1170
+ }));
1231
1171
  return {
1232
- count_array: result.reverse(),
1172
+ count_array: dataList.reverse(),
1233
1173
  };
1234
1174
  }
1235
1175
  async getActiveRecentCustom(query) {
@@ -1237,40 +1177,22 @@ class DataAnalyze {
1237
1177
  const formatStartDate = `"${tool_js_1.default.replaceDatetime(qData.start)}"`;
1238
1178
  const formatEndDate = `"${tool_js_1.default.replaceDatetime(qData.end)}"`;
1239
1179
  const days = this.diffDates(new Date(qData.start), new Date(qData.end));
1240
- const sql = `
1241
- SELECT mac_address, ${convertTimeZone('created_time')} AS created_time
1242
- FROM \`${config_js_1.saasConfig.SAAS_NAME}\`.t_monitor
1243
- WHERE app_name = ${database_js_1.default.escape(this.app)}
1244
- AND req_type = 'file'
1245
- AND ${convertTimeZone('created_time')}
1246
- BETWEEN ${convertTimeZone(formatStartDate)}
1247
- AND ${convertTimeZone(formatEndDate)}
1248
- GROUP BY id, mac_address
1249
- `;
1250
- const queryData = await database_js_1.default.query(sql, []);
1251
- const now = (0, moment_1.default)(qData.end).tz('Asia/Taipei').clone().toDate();
1252
- const dataList = Array.from({ length: days }, (_, index) => {
1253
- const targetDate = new Date(now.getTime());
1254
- targetDate.setDate(new Date(now.getTime()).getDate() - index);
1255
- const year = targetDate.getFullYear();
1256
- const month = targetDate.getMonth() + 1;
1257
- const day = targetDate.getDate();
1258
- const filteredData = queryData.filter((item) => {
1259
- const date = moment_1.default.tz(item.created_time, 'UTC').clone().tz('Asia/Taipei').toDate();
1260
- return date.getFullYear() === year && date.getMonth() + 1 === month && date.getDate() === day;
1180
+ const utTimer = new ut_timer_js_1.UtTimer('GET-RECENT-ACTIVE-USER-WEEK');
1181
+ const checkPoint = utTimer.checkPoint;
1182
+ const now = moment_1.default.tz('Asia/Taipei').toDate();
1183
+ const dataList = await Promise.all(Array.from({ length: days }, (_, index) => index).map((dd, index) => {
1184
+ return new Promise(async (resolve, reject) => {
1185
+ const sql = `
1186
+ select count
1187
+ from \`${this.app}\`.visit_logs where
1188
+ DATE(${convertTimeZone('date')}) = DATE(DATE_SUB(${convertTimeZone('NOW()')}, INTERVAL ${index} DAY))
1189
+ `;
1190
+ const queryData = await database_js_1.default.query(sql, []);
1191
+ resolve((queryData[0] && queryData[0]['count']) || 0);
1261
1192
  });
1262
- const uniqueMacAddresses = new Set(filteredData.map((item) => item.mac_address));
1263
- return {
1264
- year,
1265
- month,
1266
- day,
1267
- total_count: filteredData.length,
1268
- unique_count: uniqueMacAddresses.size,
1269
- };
1270
- });
1271
- const result = dataList.map(data => data.unique_count);
1193
+ }));
1272
1194
  return {
1273
- count_array: result.reverse(),
1195
+ count_array: dataList.reverse(),
1274
1196
  };
1275
1197
  }
1276
1198
  async getRegisterMonth() {
@@ -1280,16 +1202,16 @@ class DataAnalyze {
1280
1202
  await new Promise(resolve => {
1281
1203
  for (let index = 0; index < 30; index++) {
1282
1204
  const monthCheckoutSQL = `
1283
- SELECT count(1)
1284
- FROM \`${this.app}\`.t_user
1285
- WHERE
1286
- DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
1287
- , INTERVAL ${index} DAY))
1288
- AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
1289
- , INTERVAL ${index} DAY))
1290
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
1291
- , INTERVAL ${index} DAY))
1292
- AND status <> 0;
1205
+ SELECT count(1)
1206
+ FROM \`${this.app}\`.t_user
1207
+ WHERE
1208
+ DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
1209
+ , INTERVAL ${index} DAY))
1210
+ AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
1211
+ , INTERVAL ${index} DAY))
1212
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
1213
+ , INTERVAL ${index} DAY))
1214
+ AND status <> 0;
1293
1215
  `;
1294
1216
  database_js_1.default.query(monthCheckoutSQL, []).then(data => {
1295
1217
  countArray[index] = data[0]['count(1)'];
@@ -1326,16 +1248,16 @@ class DataAnalyze {
1326
1248
  await new Promise(resolve => {
1327
1249
  for (let index = 0; index < days; index++) {
1328
1250
  const monthCheckoutSQL = `
1329
- SELECT count(1)
1330
- FROM \`${this.app}\`.t_user
1331
- WHERE
1332
- DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone(formatEndDate)}
1333
- , INTERVAL ${index} DAY))
1334
- AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone(formatEndDate)}
1335
- , INTERVAL ${index} DAY))
1336
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone(formatEndDate)}
1337
- , INTERVAL ${index} DAY))
1338
- AND status <> 0;
1251
+ SELECT count(1)
1252
+ FROM \`${this.app}\`.t_user
1253
+ WHERE
1254
+ DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone(formatEndDate)}
1255
+ , INTERVAL ${index} DAY))
1256
+ AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone(formatEndDate)}
1257
+ , INTERVAL ${index} DAY))
1258
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone(formatEndDate)}
1259
+ , INTERVAL ${index} DAY))
1260
+ AND status <> 0;
1339
1261
  `;
1340
1262
  database_js_1.default.query(monthCheckoutSQL, []).then(data => {
1341
1263
  countArray[index] = data[0]['count(1)'];
@@ -1369,16 +1291,16 @@ class DataAnalyze {
1369
1291
  await new Promise(resolve => {
1370
1292
  for (let index = 0; index < 14; index++) {
1371
1293
  const monthCheckoutSQL = `
1372
- SELECT count(1)
1373
- FROM \`${this.app}\`.t_user
1374
- WHERE
1375
- DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
1376
- , INTERVAL ${index} DAY))
1377
- AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
1378
- , INTERVAL ${index} DAY))
1379
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
1380
- , INTERVAL ${index} DAY))
1381
- AND status <> 0;
1294
+ SELECT count(1)
1295
+ FROM \`${this.app}\`.t_user
1296
+ WHERE
1297
+ DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
1298
+ , INTERVAL ${index} DAY))
1299
+ AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
1300
+ , INTERVAL ${index} DAY))
1301
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
1302
+ , INTERVAL ${index} DAY))
1303
+ AND status <> 0;
1382
1304
  `;
1383
1305
  database_js_1.default.query(monthCheckoutSQL, []).then(data => {
1384
1306
  countArray[index] = data[0]['count(1)'];
@@ -1415,12 +1337,12 @@ class DataAnalyze {
1415
1337
  await new Promise(resolve => {
1416
1338
  for (let index = 0; index < 12; index++) {
1417
1339
  const monthRegisterSQL = `
1418
- SELECT count(1)
1419
- FROM \`${this.app}\`.t_user
1420
- WHERE MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
1421
- , INTERVAL ${index} MONTH))
1422
- AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
1423
- , INTERVAL ${index} MONTH))
1340
+ SELECT count(1)
1341
+ FROM \`${this.app}\`.t_user
1342
+ WHERE MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
1343
+ , INTERVAL ${index} MONTH))
1344
+ AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
1345
+ , INTERVAL ${index} MONTH))
1424
1346
  `;
1425
1347
  database_js_1.default.query(monthRegisterSQL, []).then(data => {
1426
1348
  pass++;