ts-glitter 21.0.9 → 21.1.2
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.
- package/lowcode/Entry.js +1 -1
- package/lowcode/Entry.ts +1 -1
- package/lowcode/cms-plugin/POS-setting.js +10 -6
- package/lowcode/cms-plugin/POS-setting.ts +11 -5
- package/lowcode/cms-plugin/data-analyze-orders.js +1 -0
- package/lowcode/cms-plugin/data-analyze-orders.ts +1 -1
- package/lowcode/cms-plugin/data-analyze.js +21 -1
- package/lowcode/cms-plugin/data-analyze.ts +24 -25
- package/lowcode/cms-plugin/pos-basic-setting.ts +1 -0
- package/lowcode/cms-plugin/pos-config-setting.js +56 -8
- package/lowcode/cms-plugin/pos-config-setting.ts +81 -28
- package/lowcode/cms-plugin/pos-pages/products-page.js +13 -2
- package/lowcode/cms-plugin/pos-pages/products-page.ts +14 -2
- package/lowcode/editor-components/font-select.js +1 -0
- package/lowcode/editor-components/font-select.ts +64 -0
- package/lowcode/official_view_component/official/component.js +10 -5
- package/lowcode/official_view_component/official/component.ts +22 -13
- package/lowcode/setting/fonts-config.js +119 -59
- package/lowcode/setting/fonts-config.ts +7075 -6999
- package/package.json +1 -1
- package/src/api-public/controllers/index.js.map +1 -1
- package/src/api-public/controllers/index.ts +1 -0
- package/src/api-public/services/checkout-event.js +1 -3
- package/src/api-public/services/checkout-event.js.map +1 -1
- package/src/api-public/services/data-analyze.d.ts +4 -4
- package/src/api-public/services/data-analyze.js +213 -283
- package/src/api-public/services/data-analyze.js.map +1 -1
- package/src/api-public/services/data-analyze.ts +222 -332
- package/src/api-public/services/public-table-check.js +13 -0
- package/src/api-public/services/public-table-check.js.map +1 -1
- package/src/api-public/services/public-table-check.ts +13 -0
- package/src/api-public/services/schedule.d.ts +1 -0
- package/src/api-public/services/schedule.js +87 -54
- package/src/api-public/services/schedule.js.map +1 -1
- package/src/api-public/services/schedule.ts +101 -57
- package/src/api-public/services/shopping.js +2 -3
- package/src/api-public/services/shopping.js.map +1 -1
- package/src/api-public/services/shopping.ts +2 -3
- package/src/api-public/utils/ut-permission.d.ts +0 -1
- package/src/run.js +2 -3
- package/src/run.js.map +1 -1
- package/src/run.ts +1 -1
- /package/{vp00rqhw1r.json → ye8r333y6g.json} +0 -0
|
@@ -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
|
-
|
|
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
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
|
|
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
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
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
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
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
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
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
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
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
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
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
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
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
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
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
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
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
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
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
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
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
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
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
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
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
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
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,64 @@ 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
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
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(${'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
|
-
|
|
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:
|
|
1134
|
+
count_array: dataList.reverse().map((dd) => {
|
|
1135
|
+
return (dd && parseInt(dd, 10)) || 0;
|
|
1136
|
+
}),
|
|
1159
1137
|
};
|
|
1160
1138
|
}
|
|
1161
1139
|
async getActiveRecentWeek() {
|
|
1162
|
-
const
|
|
1163
|
-
|
|
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, []);
|
|
1140
|
+
const utTimer = new ut_timer_js_1.UtTimer('GET-RECENT-ACTIVE-USER-WEEK');
|
|
1141
|
+
const checkPoint = utTimer.checkPoint;
|
|
1173
1142
|
const now = moment_1.default.tz('Asia/Taipei').toDate();
|
|
1174
|
-
const dataList = Array.from({ length: 14 }, (_, index) => {
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
const
|
|
1182
|
-
|
|
1143
|
+
const dataList = await Promise.all(Array.from({ length: 14 }, (_, index) => index).map((dd, index) => {
|
|
1144
|
+
return new Promise(async (resolve, reject) => {
|
|
1145
|
+
const sql = `
|
|
1146
|
+
select count
|
|
1147
|
+
from \`${this.app}\`.visit_logs where
|
|
1148
|
+
DATE(${'date'}) = DATE(DATE_SUB(${convertTimeZone('NOW()')}, INTERVAL ${index} DAY))
|
|
1149
|
+
`;
|
|
1150
|
+
const queryData = await database_js_1.default.query(sql, []);
|
|
1151
|
+
resolve((queryData[0] && queryData[0]['count']) || 0);
|
|
1183
1152
|
});
|
|
1184
|
-
|
|
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);
|
|
1153
|
+
}));
|
|
1194
1154
|
return {
|
|
1195
|
-
count_array:
|
|
1155
|
+
count_array: dataList.reverse().map((dd) => {
|
|
1156
|
+
return (dd && parseInt(dd, 10)) || 0;
|
|
1157
|
+
}),
|
|
1196
1158
|
};
|
|
1197
1159
|
}
|
|
1198
1160
|
async getActiveRecentMonth() {
|
|
1199
|
-
const
|
|
1200
|
-
|
|
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, []);
|
|
1161
|
+
const utTimer = new ut_timer_js_1.UtTimer('GET-RECENT-ACTIVE-USER-WEEK');
|
|
1162
|
+
const checkPoint = utTimer.checkPoint;
|
|
1210
1163
|
const now = moment_1.default.tz('Asia/Taipei').toDate();
|
|
1211
|
-
const dataList = Array.from({ length: 30 }, (_, index) => {
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
const
|
|
1219
|
-
|
|
1164
|
+
const dataList = await Promise.all(Array.from({ length: 30 }, (_, index) => index).map((dd, index) => {
|
|
1165
|
+
return new Promise(async (resolve, reject) => {
|
|
1166
|
+
const sql = `
|
|
1167
|
+
select count
|
|
1168
|
+
from \`${this.app}\`.visit_logs where
|
|
1169
|
+
DATE(${'date'}) = DATE(DATE_SUB(${convertTimeZone('NOW()')}, INTERVAL ${index} DAY))
|
|
1170
|
+
`;
|
|
1171
|
+
const queryData = await database_js_1.default.query(sql, []);
|
|
1172
|
+
resolve((queryData[0] && queryData[0]['count']) || 0);
|
|
1220
1173
|
});
|
|
1221
|
-
|
|
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);
|
|
1174
|
+
}));
|
|
1231
1175
|
return {
|
|
1232
|
-
count_array:
|
|
1176
|
+
count_array: dataList.reverse().map((dd) => {
|
|
1177
|
+
return (dd && parseInt(dd, 10)) || 0;
|
|
1178
|
+
}),
|
|
1233
1179
|
};
|
|
1234
1180
|
}
|
|
1235
1181
|
async getActiveRecentCustom(query) {
|
|
@@ -1237,40 +1183,24 @@ class DataAnalyze {
|
|
|
1237
1183
|
const formatStartDate = `"${tool_js_1.default.replaceDatetime(qData.start)}"`;
|
|
1238
1184
|
const formatEndDate = `"${tool_js_1.default.replaceDatetime(qData.end)}"`;
|
|
1239
1185
|
const days = this.diffDates(new Date(qData.start), new Date(qData.end));
|
|
1240
|
-
const
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
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;
|
|
1186
|
+
const utTimer = new ut_timer_js_1.UtTimer('GET-RECENT-ACTIVE-USER-WEEK');
|
|
1187
|
+
const checkPoint = utTimer.checkPoint;
|
|
1188
|
+
const now = moment_1.default.tz('Asia/Taipei').toDate();
|
|
1189
|
+
const dataList = await Promise.all(Array.from({ length: days }, (_, index) => index).map((dd, index) => {
|
|
1190
|
+
return new Promise(async (resolve, reject) => {
|
|
1191
|
+
const sql = `
|
|
1192
|
+
select count
|
|
1193
|
+
from \`${this.app}\`.visit_logs where
|
|
1194
|
+
DATE(${'date'}) = DATE(DATE_SUB(${convertTimeZone('NOW()')}, INTERVAL ${index} DAY))
|
|
1195
|
+
`;
|
|
1196
|
+
const queryData = await database_js_1.default.query(sql, []);
|
|
1197
|
+
resolve((queryData[0] && queryData[0]['count']) || 0);
|
|
1261
1198
|
});
|
|
1262
|
-
|
|
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);
|
|
1199
|
+
}));
|
|
1272
1200
|
return {
|
|
1273
|
-
count_array:
|
|
1201
|
+
count_array: dataList.reverse().map((dd) => {
|
|
1202
|
+
return (dd && parseInt(dd, 10)) || 0;
|
|
1203
|
+
}),
|
|
1274
1204
|
};
|
|
1275
1205
|
}
|
|
1276
1206
|
async getRegisterMonth() {
|
|
@@ -1280,16 +1210,16 @@ class DataAnalyze {
|
|
|
1280
1210
|
await new Promise(resolve => {
|
|
1281
1211
|
for (let index = 0; index < 30; index++) {
|
|
1282
1212
|
const monthCheckoutSQL = `
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1213
|
+
SELECT count(1)
|
|
1214
|
+
FROM \`${this.app}\`.t_user
|
|
1215
|
+
WHERE
|
|
1216
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1217
|
+
, INTERVAL ${index} DAY))
|
|
1218
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1219
|
+
, INTERVAL ${index} DAY))
|
|
1220
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1221
|
+
, INTERVAL ${index} DAY))
|
|
1222
|
+
AND status <> 0;
|
|
1293
1223
|
`;
|
|
1294
1224
|
database_js_1.default.query(monthCheckoutSQL, []).then(data => {
|
|
1295
1225
|
countArray[index] = data[0]['count(1)'];
|
|
@@ -1326,16 +1256,16 @@ class DataAnalyze {
|
|
|
1326
1256
|
await new Promise(resolve => {
|
|
1327
1257
|
for (let index = 0; index < days; index++) {
|
|
1328
1258
|
const monthCheckoutSQL = `
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1259
|
+
SELECT count(1)
|
|
1260
|
+
FROM \`${this.app}\`.t_user
|
|
1261
|
+
WHERE
|
|
1262
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
1263
|
+
, INTERVAL ${index} DAY))
|
|
1264
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
1265
|
+
, INTERVAL ${index} DAY))
|
|
1266
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
1267
|
+
, INTERVAL ${index} DAY))
|
|
1268
|
+
AND status <> 0;
|
|
1339
1269
|
`;
|
|
1340
1270
|
database_js_1.default.query(monthCheckoutSQL, []).then(data => {
|
|
1341
1271
|
countArray[index] = data[0]['count(1)'];
|
|
@@ -1369,16 +1299,16 @@ class DataAnalyze {
|
|
|
1369
1299
|
await new Promise(resolve => {
|
|
1370
1300
|
for (let index = 0; index < 14; index++) {
|
|
1371
1301
|
const monthCheckoutSQL = `
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1302
|
+
SELECT count(1)
|
|
1303
|
+
FROM \`${this.app}\`.t_user
|
|
1304
|
+
WHERE
|
|
1305
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1306
|
+
, INTERVAL ${index} DAY))
|
|
1307
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1308
|
+
, INTERVAL ${index} DAY))
|
|
1309
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1310
|
+
, INTERVAL ${index} DAY))
|
|
1311
|
+
AND status <> 0;
|
|
1382
1312
|
`;
|
|
1383
1313
|
database_js_1.default.query(monthCheckoutSQL, []).then(data => {
|
|
1384
1314
|
countArray[index] = data[0]['count(1)'];
|
|
@@ -1415,12 +1345,12 @@ class DataAnalyze {
|
|
|
1415
1345
|
await new Promise(resolve => {
|
|
1416
1346
|
for (let index = 0; index < 12; index++) {
|
|
1417
1347
|
const monthRegisterSQL = `
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1348
|
+
SELECT count(1)
|
|
1349
|
+
FROM \`${this.app}\`.t_user
|
|
1350
|
+
WHERE MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1351
|
+
, INTERVAL ${index} MONTH))
|
|
1352
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1353
|
+
, INTERVAL ${index} MONTH))
|
|
1424
1354
|
`;
|
|
1425
1355
|
database_js_1.default.query(monthRegisterSQL, []).then(data => {
|
|
1426
1356
|
pass++;
|