ts-glitter 20.8.6 → 20.8.9
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/backend-manager/bg-product.js +1 -1
- package/lowcode/backend-manager/bg-product.ts +1 -1
- package/lowcode/backend-manager/bg-recommend.js +1 -1
- package/lowcode/backend-manager/bg-recommend.ts +2 -2
- package/lowcode/backend-manager/bg-shopping.js +2 -5
- package/lowcode/backend-manager/bg-shopping.ts +2 -5
- package/lowcode/cms-plugin/POS-setting.js +58 -34
- package/lowcode/cms-plugin/POS-setting.ts +69 -33
- package/lowcode/cms-plugin/data-analyze-orders.js +0 -1
- package/lowcode/cms-plugin/data-analyze-orders.ts +1 -1
- package/lowcode/cms-plugin/data-analyze.js +1 -21
- package/lowcode/cms-plugin/data-analyze.ts +25 -25
- package/lowcode/cms-plugin/filter-options.js +1 -1
- package/lowcode/cms-plugin/filter-options.ts +1 -2
- package/lowcode/cms-plugin/information/information-module.js +275 -0
- package/lowcode/cms-plugin/information/information-module.ts +308 -0
- package/lowcode/cms-plugin/pos-pages/models.ts +3 -1
- package/lowcode/cms-plugin/pos-pages/payment-page.js +3 -11
- package/lowcode/cms-plugin/pos-pages/payment-page.ts +3 -11
- package/lowcode/cms-plugin/pos-pages/pos-function.js +1 -0
- package/lowcode/cms-plugin/pos-pages/pos-function.ts +1 -0
- package/lowcode/cms-plugin/pos-pages/products-page.js +1 -1
- package/lowcode/cms-plugin/pos-pages/products-page.ts +1 -1
- package/lowcode/cms-plugin/product-service.js +4 -9
- package/lowcode/cms-plugin/product-service.ts +4 -13
- package/lowcode/cms-plugin/shopping-discount-setting.js +76 -27
- package/lowcode/cms-plugin/shopping-discount-setting.ts +123 -63
- package/lowcode/cms-plugin/shopping-information.js +21 -167
- package/lowcode/cms-plugin/shopping-information.ts +35 -191
- package/lowcode/cms-plugin/shopping-order-return.js +212 -360
- package/lowcode/cms-plugin/shopping-order-return.ts +349 -482
- package/lowcode/cms-plugin/shopping-product-setting.js +8 -0
- package/lowcode/cms-plugin/shopping-product-setting.ts +12 -4
- package/lowcode/form-view/e-commerce/product-select.js +59 -51
- package/lowcode/form-view/e-commerce/product-select.ts +279 -266
- package/lowcode/glitter-base/global/language.js +2 -1
- package/lowcode/glitter-base/global/language.ts +2 -1
- package/lowcode/public-components/checkout/index.ts +2078 -2078
- package/lowcode/public-components/headers/sy-02.js +190 -179
- package/lowcode/public-components/headers/sy-02.ts +397 -370
- package/lowcode/public-components/headers/sy-03.js +133 -107
- package/lowcode/public-components/headers/sy-03.ts +276 -244
- package/lowcode/public-components/headers/sy-04.js +181 -146
- package/lowcode/public-components/headers/sy-04.ts +289 -247
- package/lowcode/public-components/product/pd-class.js +31 -23
- package/lowcode/public-components/product/pd-class.ts +51 -29
- package/lowcode/public-components/user-manager/um-voucher.js +1 -0
- package/lowcode/public-components/user-manager/um-voucher.ts +1 -0
- package/package.json +1 -1
- package/src/Language.js +1 -1
- package/src/Language.js.map +1 -1
- package/src/Language.ts +1 -1
- package/src/api-public/controllers/ai-chat.js.map +1 -1
- package/src/api-public/controllers/ai-points.js.map +1 -1
- package/src/api-public/controllers/chat.js.map +1 -1
- package/src/api-public/controllers/customer-sessions.js.map +1 -1
- package/src/api-public/controllers/delivery.js.map +1 -1
- package/src/api-public/controllers/fb-message.js.map +1 -1
- package/src/api-public/controllers/fb-service.js.map +1 -1
- package/src/api-public/controllers/invoice.js.map +1 -1
- package/src/api-public/controllers/line-message.js.map +1 -1
- package/src/api-public/controllers/oauth.js.map +1 -1
- package/src/api-public/controllers/progress.js.map +1 -1
- package/src/api-public/controllers/rebate.js.map +1 -1
- package/src/api-public/controllers/recommend.js.map +1 -1
- package/src/api-public/controllers/reconciliation.js.map +1 -1
- package/src/api-public/controllers/shop.js +5 -2
- package/src/api-public/controllers/shop.js.map +1 -1
- package/src/api-public/controllers/shop.ts +7 -3
- package/src/api-public/controllers/shopee.js.map +1 -1
- package/src/api-public/controllers/sms-points.js.map +1 -1
- package/src/api-public/controllers/sms.js.map +1 -1
- package/src/api-public/controllers/smtp.js.map +1 -1
- package/src/api-public/controllers/stock.js.map +1 -1
- package/src/api-public/controllers/track.js.map +1 -1
- package/src/api-public/controllers/voucher.js.map +1 -1
- package/src/api-public/controllers/wallet.js.map +1 -1
- package/src/api-public/models/glitter-finance.js +1 -2
- package/src/api-public/models/glitter-finance.js.map +1 -1
- package/src/api-public/services/EcInvoice.js.map +1 -1
- package/src/api-public/services/ai-pointes.js.map +1 -1
- package/src/api-public/services/article.js.map +1 -1
- package/src/api-public/services/auto-send-email.js.map +1 -1
- package/src/api-public/services/chat.js.map +1 -1
- package/src/api-public/services/checkout-event.d.ts +1 -0
- package/src/api-public/services/checkout-event.js +17 -7
- package/src/api-public/services/checkout-event.js.map +1 -1
- package/src/api-public/services/checkout-event.ts +21 -9
- package/src/api-public/services/checkout.js.map +1 -1
- package/src/api-public/services/custom-code.js.map +1 -1
- package/src/api-public/services/customer-sessions.js.map +1 -1
- package/src/api-public/services/data-analyze.d.ts +1 -1
- package/src/api-public/services/data-analyze.js +209 -196
- package/src/api-public/services/data-analyze.js.map +1 -1
- package/src/api-public/services/data-analyze.ts +219 -205
- package/src/api-public/services/delivery.js.map +1 -1
- package/src/api-public/services/ezpay/tool.d.ts +0 -1
- package/src/api-public/services/ezpay/tool.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-order.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-product.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-user.js.map +1 -1
- package/src/api-public/services/fb-api.js.map +1 -1
- package/src/api-public/services/filter-protect-data.js.map +1 -1
- package/src/api-public/services/financial-service.d.ts +1 -0
- package/src/api-public/services/financial-service.js +10 -5
- package/src/api-public/services/financial-service.js.map +1 -1
- package/src/api-public/services/financial-service.ts +21 -16
- package/src/api-public/services/form-check.js.map +1 -1
- package/src/api-public/services/graph-api.js.map +1 -1
- package/src/api-public/services/initial-fake-data.js.map +1 -1
- package/src/api-public/services/invoice.d.ts +3 -9
- package/src/api-public/services/invoice.js +66 -85
- package/src/api-public/services/invoice.js.map +1 -1
- package/src/api-public/services/invoice.ts +287 -293
- package/src/api-public/services/language-setting.js.map +1 -1
- package/src/api-public/services/mail.js.map +1 -1
- package/src/api-public/services/manager.js.map +1 -1
- package/src/api-public/services/monitor.js.map +1 -1
- package/src/api-public/services/monitor.ts +1 -1
- package/src/api-public/services/paynow-logistics.js.map +1 -1
- package/src/api-public/services/phone-verify.js.map +1 -1
- package/src/api-public/services/pos.js.map +1 -1
- package/src/api-public/services/post.js.map +1 -1
- package/src/api-public/services/product-initial.js.map +1 -1
- package/src/api-public/services/rebate.js.map +1 -1
- package/src/api-public/services/reconciliation.js.map +1 -1
- package/src/api-public/services/schedule.d.ts +1 -0
- package/src/api-public/services/schedule.js +27 -0
- package/src/api-public/services/schedule.js.map +1 -1
- package/src/api-public/services/schedule.ts +30 -0
- package/src/api-public/services/shopping.d.ts +4 -3
- package/src/api-public/services/shopping.js +40 -20
- package/src/api-public/services/shopping.js.map +1 -1
- package/src/api-public/services/shopping.ts +52 -28
- package/src/api-public/services/sms-pointes.js.map +1 -1
- package/src/api-public/services/stock.js.map +1 -1
- package/src/api-public/services/terms-check.js.map +1 -1
- package/src/api-public/services/updated-table-checked.js.map +1 -1
- package/src/api-public/services/user-update.js.map +1 -1
- package/src/api-public/services/user.d.ts +10 -0
- package/src/api-public/services/user.js +35 -8
- package/src/api-public/services/user.js.map +1 -1
- package/src/api-public/services/user.ts +50 -7
- package/src/api-public/services/voucher.js.map +1 -1
- package/src/api-public/services/wallet.js.map +1 -1
- package/src/api-public/utils/ut-database.js.map +1 -1
- package/src/app-project/android/app/src/main/AndroidManifest.xml +4 -2
- package/src/app-project/android/app/src/main/res/xml/network_security_config.xml +3 -3
- package/src/app-project/android/app/src/main/res/xml/s.xml +5 -5
- package/src/app-project/android/gradlew.bat +94 -94
- package/src/app-project/serverless/src/controllers/index.js.map +1 -1
- package/src/app-project/serverless/src/controllers/sample.js.map +1 -1
- package/src/app-project/serverless/src/modules/database.d.ts +1 -2
- package/src/app-project/serverless/src/modules/database.js.map +1 -1
- package/src/app-project/serverless/src/modules/exception.js.map +1 -1
- package/src/app-project/serverless/src/modules/hooks.js.map +1 -1
- package/src/app-project/serverless/src/modules/logger.js.map +1 -1
- package/src/app-project/serverless/src/modules/redis.d.ts +1 -1
- package/src/app-project/serverless/src/modules/redis.js.map +1 -1
- package/src/app-project/serverless/src/modules/response.js.map +1 -1
- package/src/app-project/serverless/src/modules/ssh.js.map +1 -1
- package/src/controllers/ai.js.map +1 -1
- package/src/controllers/global-event.js.map +1 -1
- package/src/controllers/page.js.map +1 -1
- package/src/controllers/private_config.js.map +1 -1
- package/src/export/export-test.js.map +1 -1
- package/src/firebase/message.js +1 -2
- package/src/firebase/message.js.map +1 -1
- package/src/helper/app_creater.js +1 -2
- package/src/helper/app_creater.js.map +1 -1
- package/src/helper/glitter-util.d.ts +0 -1
- package/src/helper/glitter-util.js.map +1 -1
- package/src/lambda/interface.d.ts +1 -1
- package/src/lambda/interface.js +2 -2
- package/src/lambda/interface.js.map +1 -1
- package/src/modules/exception.js.map +1 -1
- package/src/modules/hooks.js.map +1 -1
- package/src/modules/response.js.map +1 -1
- package/src/modules/ssh.js.map +1 -1
- package/src/public-config-initial/auto-fcm.js.map +1 -1
- package/src/run.js.map +1 -1
- package/src/run.ts +12 -12
- package/src/services/ai.js.map +1 -1
- package/src/services/ses.js +1 -2
- package/src/services/ses.js.map +1 -1
- package/src/services/system-schedule.js.map +1 -1
- package/src/update-progress-track.js.map +1 -1
- package/src/update-script.js.map +1 -1
|
@@ -25,14 +25,20 @@ export class DataAnalyze {
|
|
|
25
25
|
async workerExample(data: { type: 0 | 1; divisor: number }) {
|
|
26
26
|
try {
|
|
27
27
|
// 以 t_voucher_history 更新資料舉例
|
|
28
|
-
const jsonData = await db.query(
|
|
28
|
+
const jsonData = await db.query(
|
|
29
|
+
`SELECT *
|
|
30
|
+
FROM \`${this.app}\`.t_voucher_history`,
|
|
31
|
+
[]
|
|
32
|
+
);
|
|
29
33
|
const t0 = performance.now();
|
|
30
34
|
|
|
31
35
|
// 單線程插入資料
|
|
32
36
|
if (data.type === 0) {
|
|
33
37
|
for (const record of jsonData) {
|
|
34
38
|
await db.query(
|
|
35
|
-
`UPDATE \`${this.app}\`.\`t_voucher_history\`
|
|
39
|
+
`UPDATE \`${this.app}\`.\`t_voucher_history\`
|
|
40
|
+
SET ?
|
|
41
|
+
WHERE id = ?
|
|
36
42
|
`,
|
|
37
43
|
[record, record.id]
|
|
38
44
|
);
|
|
@@ -47,7 +53,9 @@ export class DataAnalyze {
|
|
|
47
53
|
// 多線程插入資料
|
|
48
54
|
const formatJsonData = jsonData.map((record: any) => {
|
|
49
55
|
return {
|
|
50
|
-
sql: `UPDATE \`${this.app}\`.\`t_voucher_history\`
|
|
56
|
+
sql: `UPDATE \`${this.app}\`.\`t_voucher_history\`
|
|
57
|
+
SET ?
|
|
58
|
+
WHERE id = ?
|
|
51
59
|
`,
|
|
52
60
|
data: [record, record.id],
|
|
53
61
|
};
|
|
@@ -152,11 +160,13 @@ export class DataAnalyze {
|
|
|
152
160
|
const orderCountingSQL = await this.getOrderCountingSQL();
|
|
153
161
|
|
|
154
162
|
const getCheckoutsSQL = (monthOffset: number) => `
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
163
|
+
SELECT *
|
|
164
|
+
FROM \`${this.app}\`.t_checkout
|
|
165
|
+
WHERE MONTH (created_time) = MONTH (DATE_SUB(NOW()
|
|
166
|
+
, INTERVAL ${monthOffset} MONTH))
|
|
167
|
+
AND YEAR (created_time) = YEAR (DATE_SUB(NOW()
|
|
168
|
+
, INTERVAL ${monthOffset} MONTH))
|
|
169
|
+
AND (${orderCountingSQL});
|
|
160
170
|
`;
|
|
161
171
|
|
|
162
172
|
const calculateTotal = (checkouts: any[]): number =>
|
|
@@ -218,18 +228,18 @@ export class DataAnalyze {
|
|
|
218
228
|
// 組裝 SQL 查詢
|
|
219
229
|
const orderCountingSQL = await this.getOrderCountingSQL();
|
|
220
230
|
const checkoutSQL = `
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
231
|
+
SELECT *
|
|
232
|
+
FROM \`${this.app}\`.t_checkout
|
|
233
|
+
WHERE ${
|
|
234
|
+
duration === 'day'
|
|
235
|
+
? `created_time BETWEEN NOW() AND NOW() + INTERVAL 1 DAY - INTERVAL 1 SECOND`
|
|
236
|
+
: duration === 'month'
|
|
237
|
+
? `created_time BETWEEN DATE_SUB(NOW(), INTERVAL 1 MONTH) AND NOW()`
|
|
238
|
+
: sqlConditions.length
|
|
239
|
+
? sqlConditions.join(' AND ')
|
|
240
|
+
: '1=1'
|
|
241
|
+
}
|
|
242
|
+
AND (${orderCountingSQL});
|
|
233
243
|
`;
|
|
234
244
|
|
|
235
245
|
const checkouts = await db.query(checkoutSQL, []);
|
|
@@ -240,6 +250,7 @@ export class DataAnalyze {
|
|
|
240
250
|
|
|
241
251
|
checkouts.forEach(({ orderData }: { orderData: any }) => {
|
|
242
252
|
orderData.lineItems?.forEach((item: any) => {
|
|
253
|
+
item.collection=item.collection??[];
|
|
243
254
|
const existing = productMap.get(item.title);
|
|
244
255
|
const collections = new Set(item.collection.filter((c: string) => c.trim().length > 0));
|
|
245
256
|
|
|
@@ -298,11 +309,13 @@ export class DataAnalyze {
|
|
|
298
309
|
const orderCountingSQL = await this.getOrderCountingSQL();
|
|
299
310
|
|
|
300
311
|
const getCheckoutCountSQL = (monthOffset: number) => `
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
312
|
+
SELECT id
|
|
313
|
+
FROM \`${this.app}\`.t_checkout
|
|
314
|
+
WHERE MONTH (created_time) = MONTH (DATE_SUB(NOW()
|
|
315
|
+
, INTERVAL ${monthOffset} MONTH))
|
|
316
|
+
AND YEAR (created_time) = YEAR (DATE_SUB(NOW()
|
|
317
|
+
, INTERVAL ${monthOffset} MONTH))
|
|
318
|
+
AND ${orderCountingSQL};
|
|
306
319
|
`;
|
|
307
320
|
|
|
308
321
|
const recentMonthCheckouts = await db.query(getCheckoutCountSQL(0), []);
|
|
@@ -337,10 +350,10 @@ export class DataAnalyze {
|
|
|
337
350
|
const queries = Array.from({ length: 14 }, async (_, index) => {
|
|
338
351
|
const dayOffset = `DATE_SUB(DATE(NOW()), INTERVAL ${index} DAY)`;
|
|
339
352
|
const monthCheckoutSQL = `
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
353
|
+
SELECT orderData ->>'$.orderSource' as orderSource, orderData
|
|
354
|
+
FROM \`${this.app}\`.t_checkout
|
|
355
|
+
WHERE DATE (${convertTimeZone('created_time')}) = ${dayOffset}
|
|
356
|
+
AND ${orderCountingSQL};
|
|
344
357
|
`;
|
|
345
358
|
|
|
346
359
|
return db.query(monthCheckoutSQL, []).then(data => {
|
|
@@ -394,10 +407,10 @@ export class DataAnalyze {
|
|
|
394
407
|
const queries = Array.from({ length: 30 }, async (_, index) => {
|
|
395
408
|
const dayOffset = `DATE_SUB(DATE(NOW()), INTERVAL ${index} DAY)`;
|
|
396
409
|
const monthCheckoutSQL = `
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
410
|
+
SELECT orderData ->>'$.orderSource' as orderSource, orderData
|
|
411
|
+
FROM \`${this.app}\`.t_checkout
|
|
412
|
+
WHERE DATE (${convertTimeZone('created_time')}) = ${dayOffset}
|
|
413
|
+
AND ${orderCountingSQL};
|
|
401
414
|
`;
|
|
402
415
|
|
|
403
416
|
return db.query(monthCheckoutSQL, []).then(data => {
|
|
@@ -455,10 +468,10 @@ export class DataAnalyze {
|
|
|
455
468
|
const queries = Array.from({ length: days }, async (_, index) => {
|
|
456
469
|
const dayOffset = `DATE_SUB(DATE("${endDate}"), INTERVAL ${index} DAY)`;
|
|
457
470
|
const monthCheckoutSQL = `
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
471
|
+
SELECT orderData ->>'$.orderSource' as orderSource, orderData
|
|
472
|
+
FROM \`${this.app}\`.t_checkout
|
|
473
|
+
WHERE DATE (${convertTimeZone('created_time')}) = ${dayOffset}
|
|
474
|
+
AND ${orderCountingSQL};
|
|
462
475
|
`;
|
|
463
476
|
|
|
464
477
|
return db.query(monthCheckoutSQL, []).then(data => {
|
|
@@ -512,10 +525,11 @@ export class DataAnalyze {
|
|
|
512
525
|
const queries = Array.from({ length: 12 }, async (_, index) => {
|
|
513
526
|
const monthOffset = `DATE_FORMAT(DATE_SUB(${convertTimeZone('NOW()')}, INTERVAL ${index} MONTH), '%Y-%m')`;
|
|
514
527
|
const monthCheckoutSQL = `
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
528
|
+
SELECT orderData ->>'$.orderSource' as orderSource, orderData
|
|
529
|
+
FROM \`${this.app}\`.t_checkout
|
|
530
|
+
WHERE DATE_FORMAT(${convertTimeZone('created_time')}
|
|
531
|
+
, '%Y-%m') = ${monthOffset}
|
|
532
|
+
AND ${orderCountingSQL};
|
|
519
533
|
`;
|
|
520
534
|
|
|
521
535
|
return db.query(monthCheckoutSQL, []).then(data => {
|
|
@@ -566,15 +580,15 @@ export class DataAnalyze {
|
|
|
566
580
|
await new Promise(resolve => {
|
|
567
581
|
for (let index = 0; index < 12; index++) {
|
|
568
582
|
const monthCheckoutSQL = `
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
583
|
+
SELECT orderData
|
|
584
|
+
FROM \`${this.app}\`.t_checkout
|
|
585
|
+
WHERE
|
|
586
|
+
MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
587
|
+
, INTERVAL ${index} MONTH))
|
|
588
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
589
|
+
, INTERVAL ${index} MONTH))
|
|
590
|
+
AND ${orderCountingSQL};
|
|
591
|
+
`;
|
|
578
592
|
db.query(monthCheckoutSQL, []).then(data => {
|
|
579
593
|
pass++;
|
|
580
594
|
let total = 0;
|
|
@@ -644,17 +658,17 @@ export class DataAnalyze {
|
|
|
644
658
|
await new Promise(resolve => {
|
|
645
659
|
for (let index = 0; index < 14; index++) {
|
|
646
660
|
const monthCheckoutSQL = `
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
661
|
+
SELECT orderData
|
|
662
|
+
FROM \`${this.app}\`.t_checkout
|
|
663
|
+
WHERE
|
|
664
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
|
|
665
|
+
, INTERVAL ${index} DAY))
|
|
666
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
667
|
+
, INTERVAL ${index} DAY))
|
|
668
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
669
|
+
, INTERVAL ${index} DAY))
|
|
670
|
+
AND ${orderCountingSQL};
|
|
671
|
+
`;
|
|
658
672
|
db.query(monthCheckoutSQL, []).then(data => {
|
|
659
673
|
pass++;
|
|
660
674
|
let total = 0;
|
|
@@ -723,17 +737,17 @@ export class DataAnalyze {
|
|
|
723
737
|
await new Promise(resolve => {
|
|
724
738
|
for (let index = 0; index < 30; index++) {
|
|
725
739
|
const monthCheckoutSQL = `
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
740
|
+
SELECT orderData
|
|
741
|
+
FROM \`${this.app}\`.t_checkout
|
|
742
|
+
WHERE
|
|
743
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
|
|
744
|
+
, INTERVAL ${index} DAY))
|
|
745
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
746
|
+
, INTERVAL ${index} DAY))
|
|
747
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
748
|
+
, INTERVAL ${index} DAY))
|
|
749
|
+
AND ${orderCountingSQL};
|
|
750
|
+
`;
|
|
737
751
|
db.query(monthCheckoutSQL, []).then(data => {
|
|
738
752
|
pass++;
|
|
739
753
|
let total = 0;
|
|
@@ -816,17 +830,17 @@ export class DataAnalyze {
|
|
|
816
830
|
await new Promise(resolve => {
|
|
817
831
|
for (let index = 0; index < days; index++) {
|
|
818
832
|
const monthCheckoutSQL = `
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
833
|
+
SELECT orderData
|
|
834
|
+
FROM \`${this.app}\`.t_checkout
|
|
835
|
+
WHERE
|
|
836
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
837
|
+
, INTERVAL ${index} DAY))
|
|
838
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
839
|
+
, INTERVAL ${index} DAY))
|
|
840
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
841
|
+
, INTERVAL ${index} DAY))
|
|
842
|
+
AND ${orderCountingSQL};
|
|
843
|
+
`;
|
|
830
844
|
db.query(monthCheckoutSQL, []).then(data => {
|
|
831
845
|
pass++;
|
|
832
846
|
let total = 0;
|
|
@@ -894,15 +908,15 @@ export class DataAnalyze {
|
|
|
894
908
|
await new Promise(resolve => {
|
|
895
909
|
for (let index = 0; index < 12; index++) {
|
|
896
910
|
const monthCheckoutSQL = `
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
911
|
+
SELECT orderData
|
|
912
|
+
FROM \`${this.app}\`.t_checkout
|
|
913
|
+
WHERE
|
|
914
|
+
MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
915
|
+
, INTERVAL ${index} MONTH))
|
|
916
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
917
|
+
, INTERVAL ${index} MONTH))
|
|
918
|
+
AND ${orderCountingSQL};
|
|
919
|
+
`;
|
|
906
920
|
db.query(monthCheckoutSQL, []).then(data => {
|
|
907
921
|
pass++;
|
|
908
922
|
let total = 0;
|
|
@@ -977,17 +991,17 @@ export class DataAnalyze {
|
|
|
977
991
|
await new Promise(resolve => {
|
|
978
992
|
for (let index = 0; index < 14; index++) {
|
|
979
993
|
const monthCheckoutSQL = `
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
994
|
+
SELECT orderData
|
|
995
|
+
FROM \`${this.app}\`.t_checkout
|
|
996
|
+
WHERE
|
|
997
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
|
|
998
|
+
, INTERVAL ${index} DAY))
|
|
999
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1000
|
+
, INTERVAL ${index} DAY))
|
|
1001
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1002
|
+
, INTERVAL ${index} DAY))
|
|
1003
|
+
AND ${orderCountingSQL};
|
|
1004
|
+
`;
|
|
991
1005
|
db.query(monthCheckoutSQL, []).then(data => {
|
|
992
1006
|
pass++;
|
|
993
1007
|
let total = 0;
|
|
@@ -1062,17 +1076,17 @@ export class DataAnalyze {
|
|
|
1062
1076
|
await new Promise(resolve => {
|
|
1063
1077
|
for (let index = 0; index < 30; index++) {
|
|
1064
1078
|
const monthCheckoutSQL = `
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1079
|
+
SELECT orderData
|
|
1080
|
+
FROM \`${this.app}\`.t_checkout
|
|
1081
|
+
WHERE
|
|
1082
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1083
|
+
, INTERVAL ${index} DAY))
|
|
1084
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1085
|
+
, INTERVAL ${index} DAY))
|
|
1086
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1087
|
+
, INTERVAL ${index} DAY))
|
|
1088
|
+
AND ${orderCountingSQL};
|
|
1089
|
+
`;
|
|
1076
1090
|
db.query(monthCheckoutSQL, []).then(data => {
|
|
1077
1091
|
pass++;
|
|
1078
1092
|
let total = 0;
|
|
@@ -1150,17 +1164,17 @@ export class DataAnalyze {
|
|
|
1150
1164
|
await new Promise(resolve => {
|
|
1151
1165
|
for (let index = 0; index < days; index++) {
|
|
1152
1166
|
const monthCheckoutSQL = `
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1167
|
+
SELECT orderData
|
|
1168
|
+
FROM \`${this.app}\`.t_checkout
|
|
1169
|
+
WHERE
|
|
1170
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
1171
|
+
, INTERVAL ${index} DAY))
|
|
1172
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
1173
|
+
, INTERVAL ${index} DAY))
|
|
1174
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
1175
|
+
, INTERVAL ${index} DAY))
|
|
1176
|
+
AND ${orderCountingSQL}
|
|
1177
|
+
`;
|
|
1164
1178
|
db.query(monthCheckoutSQL, []).then(data => {
|
|
1165
1179
|
pass++;
|
|
1166
1180
|
let total = 0;
|
|
@@ -1230,14 +1244,14 @@ export class DataAnalyze {
|
|
|
1230
1244
|
startDate.setMonth(endDate.getMonth() - 12);
|
|
1231
1245
|
|
|
1232
1246
|
const sql = `
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1247
|
+
SELECT mac_address, created_time
|
|
1248
|
+
FROM \`${saasConfig.SAAS_NAME}\`.t_monitor
|
|
1249
|
+
WHERE app_name = ${db.escape(this.app)}
|
|
1250
|
+
AND req_type = 'file'
|
|
1251
|
+
AND created_time BETWEEN '${startDate.toISOString()}' AND '${endDate.toISOString()}'
|
|
1252
|
+
GROUP BY id, mac_address
|
|
1253
|
+
`;
|
|
1254
|
+
console.log(`sql: ${sql}`);
|
|
1241
1255
|
const queryData = await db.query(sql, []);
|
|
1242
1256
|
|
|
1243
1257
|
const now = moment.tz('Asia/Taipei').toDate(); // 當前時間
|
|
@@ -1274,15 +1288,15 @@ export class DataAnalyze {
|
|
|
1274
1288
|
|
|
1275
1289
|
async getActiveRecentWeek() {
|
|
1276
1290
|
const sql = `
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1291
|
+
SELECT mac_address, ${convertTimeZone('created_time')} AS created_time
|
|
1292
|
+
FROM \`${saasConfig.SAAS_NAME}\`.t_monitor
|
|
1293
|
+
WHERE app_name = ${db.escape(this.app)}
|
|
1294
|
+
AND req_type = 'file'
|
|
1295
|
+
AND ${convertTimeZone('created_time')} BETWEEN (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1296
|
+
, INTERVAL 14 DAY))
|
|
1297
|
+
AND ${convertTimeZone('NOW()')}
|
|
1298
|
+
GROUP BY id, mac_address
|
|
1299
|
+
`;
|
|
1286
1300
|
|
|
1287
1301
|
const queryData = await db.query(sql, []);
|
|
1288
1302
|
|
|
@@ -1322,15 +1336,15 @@ export class DataAnalyze {
|
|
|
1322
1336
|
|
|
1323
1337
|
async getActiveRecentMonth() {
|
|
1324
1338
|
const sql = `
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1339
|
+
SELECT mac_address, ${convertTimeZone('created_time')} AS created_time
|
|
1340
|
+
FROM \`${saasConfig.SAAS_NAME}\`.t_monitor
|
|
1341
|
+
WHERE app_name = ${db.escape(this.app)}
|
|
1342
|
+
AND req_type = 'file'
|
|
1343
|
+
AND ${convertTimeZone('created_time')} BETWEEN (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1344
|
+
, INTERVAL 30 DAY))
|
|
1345
|
+
AND ${convertTimeZone('NOW()')}
|
|
1346
|
+
GROUP BY id, mac_address
|
|
1347
|
+
`;
|
|
1334
1348
|
|
|
1335
1349
|
const queryData = await db.query(sql, []);
|
|
1336
1350
|
|
|
@@ -1374,15 +1388,15 @@ export class DataAnalyze {
|
|
|
1374
1388
|
const formatEndDate = `"${Tool.replaceDatetime(qData.end)}"`;
|
|
1375
1389
|
const days = this.diffDates(new Date(qData.start), new Date(qData.end));
|
|
1376
1390
|
const sql = `
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1391
|
+
SELECT mac_address, ${convertTimeZone('created_time')} AS created_time
|
|
1392
|
+
FROM \`${saasConfig.SAAS_NAME}\`.t_monitor
|
|
1393
|
+
WHERE app_name = ${db.escape(this.app)}
|
|
1394
|
+
AND req_type = 'file'
|
|
1395
|
+
AND ${convertTimeZone('created_time')}
|
|
1396
|
+
BETWEEN ${convertTimeZone(formatStartDate)}
|
|
1397
|
+
AND ${convertTimeZone(formatEndDate)}
|
|
1398
|
+
GROUP BY id, mac_address
|
|
1399
|
+
`;
|
|
1386
1400
|
|
|
1387
1401
|
const queryData = await db.query(sql, []);
|
|
1388
1402
|
|
|
@@ -1427,17 +1441,17 @@ export class DataAnalyze {
|
|
|
1427
1441
|
await new Promise(resolve => {
|
|
1428
1442
|
for (let index = 0; index < 30; index++) {
|
|
1429
1443
|
const monthCheckoutSQL = `
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1444
|
+
SELECT count(1)
|
|
1445
|
+
FROM \`${this.app}\`.t_user
|
|
1446
|
+
WHERE
|
|
1447
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1448
|
+
, INTERVAL ${index} DAY))
|
|
1449
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1450
|
+
, INTERVAL ${index} DAY))
|
|
1451
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1452
|
+
, INTERVAL ${index} DAY))
|
|
1453
|
+
AND status <> 0;
|
|
1454
|
+
`;
|
|
1441
1455
|
db.query(monthCheckoutSQL, []).then(data => {
|
|
1442
1456
|
countArray[index] = data[0]['count(1)'];
|
|
1443
1457
|
pass++;
|
|
@@ -1475,17 +1489,17 @@ export class DataAnalyze {
|
|
|
1475
1489
|
await new Promise(resolve => {
|
|
1476
1490
|
for (let index = 0; index < days; index++) {
|
|
1477
1491
|
const monthCheckoutSQL = `
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1492
|
+
SELECT count(1)
|
|
1493
|
+
FROM \`${this.app}\`.t_user
|
|
1494
|
+
WHERE
|
|
1495
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
1496
|
+
, INTERVAL ${index} DAY))
|
|
1497
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
1498
|
+
, INTERVAL ${index} DAY))
|
|
1499
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone(formatEndDate)}
|
|
1500
|
+
, INTERVAL ${index} DAY))
|
|
1501
|
+
AND status <> 0;
|
|
1502
|
+
`;
|
|
1489
1503
|
db.query(monthCheckoutSQL, []).then(data => {
|
|
1490
1504
|
countArray[index] = data[0]['count(1)'];
|
|
1491
1505
|
pass++;
|
|
@@ -1519,17 +1533,17 @@ export class DataAnalyze {
|
|
|
1519
1533
|
await new Promise(resolve => {
|
|
1520
1534
|
for (let index = 0; index < 14; index++) {
|
|
1521
1535
|
const monthCheckoutSQL = `
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1536
|
+
SELECT count(1)
|
|
1537
|
+
FROM \`${this.app}\`.t_user
|
|
1538
|
+
WHERE
|
|
1539
|
+
DAY (${convertTimeZone('created_time')}) = DAY (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1540
|
+
, INTERVAL ${index} DAY))
|
|
1541
|
+
AND MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1542
|
+
, INTERVAL ${index} DAY))
|
|
1543
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1544
|
+
, INTERVAL ${index} DAY))
|
|
1545
|
+
AND status <> 0;
|
|
1546
|
+
`;
|
|
1533
1547
|
db.query(monthCheckoutSQL, []).then(data => {
|
|
1534
1548
|
countArray[index] = data[0]['count(1)'];
|
|
1535
1549
|
pass++;
|
|
@@ -1561,8 +1575,8 @@ export class DataAnalyze {
|
|
|
1561
1575
|
const countArray: any = {};
|
|
1562
1576
|
const order = await db.query(
|
|
1563
1577
|
`SELECT count(1)
|
|
1564
|
-
|
|
1565
|
-
|
|
1578
|
+
FROM \`${this.app}\`.t_user
|
|
1579
|
+
WHERE DATE (created_time) = CURDATE()`,
|
|
1566
1580
|
[]
|
|
1567
1581
|
);
|
|
1568
1582
|
|
|
@@ -1570,13 +1584,13 @@ export class DataAnalyze {
|
|
|
1570
1584
|
await new Promise(resolve => {
|
|
1571
1585
|
for (let index = 0; index < 12; index++) {
|
|
1572
1586
|
const monthRegisterSQL = `
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1587
|
+
SELECT count(1)
|
|
1588
|
+
FROM \`${this.app}\`.t_user
|
|
1589
|
+
WHERE MONTH (${convertTimeZone('created_time')}) = MONTH (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1590
|
+
, INTERVAL ${index} MONTH))
|
|
1591
|
+
AND YEAR (${convertTimeZone('created_time')}) = YEAR (DATE_SUB(${convertTimeZone('NOW()')}
|
|
1592
|
+
, INTERVAL ${index} MONTH))
|
|
1593
|
+
`;
|
|
1580
1594
|
db.query(monthRegisterSQL, []).then(data => {
|
|
1581
1595
|
pass++;
|
|
1582
1596
|
countArray[index] = data[0]['count(1)'];
|
|
@@ -1613,16 +1627,16 @@ export class DataAnalyze {
|
|
|
1613
1627
|
// 並行查詢
|
|
1614
1628
|
const [order, unShipmentCount] = await Promise.all([
|
|
1615
1629
|
db.query(
|
|
1616
|
-
`SELECT status, orderData->>'$.total' as total
|
|
1630
|
+
`SELECT status, orderData ->>'$.total' as total
|
|
1617
1631
|
FROM \`${this.app}\`.t_checkout
|
|
1618
|
-
WHERE DATE(${convertTimeZone('created_time')}) = CURDATE()`,
|
|
1632
|
+
WHERE DATE (${convertTimeZone('created_time')}) = CURDATE()`,
|
|
1619
1633
|
[]
|
|
1620
1634
|
),
|
|
1621
1635
|
db.query(
|
|
1622
1636
|
`SELECT COUNT(1) as count
|
|
1623
1637
|
FROM \`${this.app}\`.t_checkout
|
|
1624
1638
|
WHERE ${orderCountingSQL}
|
|
1625
|
-
|
|
1639
|
+
AND DATE (${convertTimeZone('created_time')}) = CURDATE()`,
|
|
1626
1640
|
[]
|
|
1627
1641
|
),
|
|
1628
1642
|
]);
|