ts-glitter 20.6.8 → 20.6.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 +2 -2
- package/lowcode/Entry.ts +2 -2
- package/lowcode/backend-manager/bg-blog.js +617 -621
- package/lowcode/backend-manager/bg-blog.ts +2323 -2325
- package/lowcode/backend-manager/bg-line.js +5 -4
- package/lowcode/backend-manager/bg-line.ts +5 -4
- package/lowcode/backend-manager/bg-list-component.js +9 -0
- package/lowcode/backend-manager/bg-list-component.ts +15 -1
- package/lowcode/backend-manager/bg-notify.js +6 -4
- package/lowcode/backend-manager/bg-notify.ts +6 -4
- package/lowcode/backend-manager/bg-product.js +145 -0
- package/lowcode/backend-manager/bg-product.ts +153 -0
- package/lowcode/backend-manager/bg-sns.js +5 -3
- package/lowcode/backend-manager/bg-sns.ts +5 -3
- package/lowcode/backend-manager/bg-widget.js +92 -4
- package/lowcode/backend-manager/bg-widget.ts +122 -6
- package/lowcode/backend-manager/splitPage.js +0 -39
- package/lowcode/backend-manager/splitPage.ts +0 -40
- package/lowcode/cms-plugin/auto-fcm-advertise.js +17 -5
- package/lowcode/cms-plugin/auto-fcm-advertise.ts +19 -6
- package/lowcode/cms-plugin/auto-fcm-history.js +2732 -0
- package/lowcode/cms-plugin/auto-fcm-history.ts +2995 -0
- package/lowcode/cms-plugin/cms-router.js +5 -0
- package/lowcode/cms-plugin/cms-router.ts +6 -0
- package/lowcode/cms-plugin/filter-options.js +80 -27
- package/lowcode/cms-plugin/filter-options.ts +83 -27
- package/lowcode/cms-plugin/language-backend.js +50 -39
- package/lowcode/cms-plugin/language-backend.ts +109 -95
- package/lowcode/cms-plugin/menus-setting.js +175 -151
- package/lowcode/cms-plugin/menus-setting.ts +620 -591
- package/lowcode/cms-plugin/model/order.d.ts +1 -0
- package/lowcode/cms-plugin/module/data.js +7 -7
- package/lowcode/cms-plugin/module/data.ts +262 -233
- package/lowcode/cms-plugin/module/delivery-html.js +18 -10
- package/lowcode/cms-plugin/module/delivery-html.ts +26 -10
- package/lowcode/cms-plugin/module/order-setting.js +458 -328
- package/lowcode/cms-plugin/module/order-setting.ts +622 -351
- package/lowcode/cms-plugin/module/product-excel.js +1 -1
- package/lowcode/cms-plugin/module/product-excel.ts +2 -1
- package/lowcode/cms-plugin/order/order-module.js +90 -1
- package/lowcode/cms-plugin/order/order-module.ts +106 -1
- package/lowcode/cms-plugin/pos-pages/payment-page.js +11 -8
- package/lowcode/cms-plugin/pos-pages/payment-page.ts +28 -15
- package/lowcode/cms-plugin/pos-pages/products-page.js +0 -39
- package/lowcode/cms-plugin/pos-pages/products-page.ts +0 -40
- package/lowcode/cms-plugin/shopping-collections.ts +1 -3
- package/lowcode/cms-plugin/shopping-finance-setting.js +19 -80
- package/lowcode/cms-plugin/shopping-finance-setting.ts +19 -87
- package/lowcode/cms-plugin/shopping-order-manager.js +122 -38
- package/lowcode/cms-plugin/shopping-order-manager.ts +160 -58
- package/lowcode/cms-plugin/shopping-product-setting.js +364 -376
- package/lowcode/cms-plugin/shopping-product-setting.ts +406 -415
- package/lowcode/cms-plugin/shopping-setting-advance.js +57 -16
- package/lowcode/cms-plugin/shopping-setting-advance.ts +69 -18
- package/lowcode/cms-plugin/user/user-module.js +2 -43
- package/lowcode/cms-plugin/user/user-module.ts +2 -46
- package/lowcode/cms-plugin/user-list.js +4 -6
- package/lowcode/cms-plugin/user-list.ts +35 -38
- package/lowcode/css/editor.css +42 -3
- package/lowcode/glitter-base/global/language.js +6 -1
- package/lowcode/glitter-base/global/language.ts +10 -4
- package/lowcode/glitter-base/global/payment-config.js +19 -16
- package/lowcode/glitter-base/global/payment-config.ts +22 -16
- package/lowcode/glitter-base/global/shipment-config.js +6 -5
- package/lowcode/glitter-base/global/shipment-config.ts +12 -10
- package/lowcode/glitter-base/route/fcm.js +21 -1
- package/lowcode/glitter-base/route/fcm.ts +22 -2
- package/lowcode/glitter-base/route/shopping.js +8 -32
- package/lowcode/glitter-base/route/shopping.ts +10 -33
- package/lowcode/glitter-base/route/user.js +11 -2
- package/lowcode/glitter-base/route/user.ts +23 -12
- package/lowcode/jspage/function-page/setting_editor.js +9 -0
- package/lowcode/jspage/function-page/setting_editor.ts +9 -0
- package/lowcode/public-components/blogs/list.js +223 -195
- package/lowcode/public-components/blogs/list.ts +383 -352
- package/lowcode/public-components/product/product-list.js +8 -4
- package/lowcode/public-components/product/product-list.ts +9 -4
- package/lowcode/public-components/terms-related/index.js +1 -1
- package/lowcode/public-components/terms-related/index.ts +1 -1
- package/lowcode/public-components/user-manager/um-login.js +1 -1
- package/lowcode/public-components/user-manager/um-login.ts +2 -2
- package/lowcode/public-components/user-manager/um-order.js +41 -5
- package/lowcode/public-components/user-manager/um-order.ts +58 -20
- package/lowcode/public-components/user-manager/um-voucher.ts +2 -2
- package/nhi4veq3gk.json +1 -0
- package/package.json +1 -1
- package/src/Language.d.ts +2 -0
- package/src/Language.js +66 -65
- package/src/Language.js.map +1 -1
- package/src/Language.ts +719 -715
- package/src/api-public/config/shipment-config.js +3 -2
- package/src/api-public/config/shipment-config.js.map +1 -1
- package/src/api-public/config/shipment-config.ts +3 -2
- package/src/api-public/controllers/ai-chat.js.map +1 -1
- package/src/api-public/controllers/ai-chat.ts +1 -2
- package/src/api-public/controllers/fcm.js +23 -58
- package/src/api-public/controllers/fcm.js.map +1 -1
- package/src/api-public/controllers/fcm.ts +28 -56
- package/src/api-public/controllers/shop.js +7 -1
- package/src/api-public/controllers/shop.js.map +1 -1
- package/src/api-public/controllers/shop.ts +17 -10
- package/src/api-public/controllers/user.js +1 -0
- package/src/api-public/controllers/user.js.map +1 -1
- package/src/api-public/controllers/user.ts +2 -0
- package/src/api-public/services/auto-send-email.js +247 -187
- package/src/api-public/services/auto-send-email.js.map +1 -1
- package/src/api-public/services/auto-send-email.ts +568 -505
- package/src/api-public/services/delivery.js +1 -1
- package/src/api-public/services/delivery.js.map +1 -1
- package/src/api-public/services/delivery.ts +6 -5
- package/src/api-public/services/financial-service.js +1 -2
- package/src/api-public/services/financial-service.js.map +1 -1
- package/src/api-public/services/financial-service.ts +4 -6
- package/src/api-public/services/manager.d.ts +4 -3
- package/src/api-public/services/manager.js +8 -12
- package/src/api-public/services/manager.js.map +1 -1
- package/src/api-public/services/manager.ts +57 -59
- package/src/api-public/services/model/handlePaymentTransaction.d.ts +1 -1
- package/src/api-public/services/model/handlePaymentTransaction.js +23 -3
- package/src/api-public/services/model/handlePaymentTransaction.js.map +1 -1
- package/src/api-public/services/model/handlePaymentTransaction.ts +25 -36
- 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 +22 -2
- package/src/api-public/services/shopping.js +362 -90
- package/src/api-public/services/shopping.js.map +1 -1
- package/src/api-public/services/shopping.ts +481 -134
- package/src/api-public/services/user.d.ts +1 -0
- package/src/api-public/services/user.js +32 -12
- package/src/api-public/services/user.js.map +1 -1
- package/src/api-public/services/user.ts +38 -19
- package/src/api-public/services/workers.js +3 -3
- package/src/api-public/services/workers.js.map +1 -1
- package/src/api-public/services/workers.ts +103 -103
- package/src/app-project/serverless/src/modules/database.js +1 -1
- package/src/app-project/serverless/src/modules/database.js.map +1 -1
- package/src/app-project/serverless/src/modules/database.ts +171 -171
- package/src/controllers/template.d.ts +1 -1
- package/src/controllers/template.js +16 -16
- package/src/controllers/template.js.map +1 -1
- package/src/controllers/template.ts +98 -84
- package/src/modules/database.js +3 -1
- package/src/modules/database.js.map +1 -1
- package/src/modules/database.ts +185 -181
- package/src/modules/firebase.d.ts +17 -0
- package/src/modules/firebase.js +126 -0
- package/src/modules/firebase.js.map +1 -1
- package/src/modules/firebase.ts +169 -0
- package/src/public-config-initial/auto-fcm.js +8 -2
- package/src/public-config-initial/auto-fcm.js.map +1 -1
- package/src/public-config-initial/auto-fcm.ts +15 -6
- package/src/services/app.d.ts +2 -1
- package/src/services/app.js.map +1 -1
- package/src/services/app.ts +2 -1
- package/src/services/template.d.ts +3 -2
- package/src/services/template.js +2 -1
- package/src/services/template.js.map +1 -1
- package/src/services/template.ts +13 -20
|
@@ -35,7 +35,7 @@ const product_initial_js_1 = require("./product-initial.js");
|
|
|
35
35
|
const ut_timer_js_1 = require("../utils/ut-timer.js");
|
|
36
36
|
const auto_fcm_js_1 = require("../../public-config-initial/auto-fcm.js");
|
|
37
37
|
const handlePaymentTransaction_js_1 = __importDefault(require("./model/handlePaymentTransaction.js"));
|
|
38
|
-
const
|
|
38
|
+
const Language_js_1 = require("../../Language.js");
|
|
39
39
|
class OrderDetail {
|
|
40
40
|
constructor(subtotal, shipment) {
|
|
41
41
|
this.discount = 0;
|
|
@@ -204,14 +204,14 @@ class Shopping {
|
|
|
204
204
|
}
|
|
205
205
|
if (query.filter_visible) {
|
|
206
206
|
if (query.filter_visible === 'true') {
|
|
207
|
-
querySql.push(`(content->>'$.visible'
|
|
207
|
+
querySql.push(`(content->>'$.visible' IS NULL || content->>'$.visible' = 'true')`);
|
|
208
208
|
}
|
|
209
209
|
else {
|
|
210
210
|
querySql.push(`(content->>'$.visible' = 'false')`);
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
else if (!query.is_manger && `${query.show_hidden}` !== 'true') {
|
|
214
|
-
querySql.push(`(content->>'$.visible'
|
|
214
|
+
querySql.push(`(content->>'$.visible' IS NULL || content->>'$.visible' = 'true')`);
|
|
215
215
|
}
|
|
216
216
|
if (query.productType) {
|
|
217
217
|
query.productType.split(',').map(dd => {
|
|
@@ -345,6 +345,28 @@ class Shopping {
|
|
|
345
345
|
querySql.push(`(content->>'$.channel' IS NULL ${channelJoin})`);
|
|
346
346
|
}
|
|
347
347
|
}
|
|
348
|
+
if (query.manager_tag) {
|
|
349
|
+
const tagSplit = query.manager_tag.split(',').map(tag => tag.trim());
|
|
350
|
+
if (tagSplit.length > 0) {
|
|
351
|
+
const tagJoin = tagSplit.map(tag => {
|
|
352
|
+
return `JSON_CONTAINS(content->>'$.product_customize_tag', '"${tag}"')`;
|
|
353
|
+
});
|
|
354
|
+
querySql.push(`(${tagJoin.join(' OR ')})`);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
if (query.general_tag) {
|
|
358
|
+
const tagSplit = query.general_tag.split(',').map(tag => tag.trim());
|
|
359
|
+
if (tagSplit.length > 0) {
|
|
360
|
+
const tagJoin = tagSplit.map(tag => {
|
|
361
|
+
var _a;
|
|
362
|
+
return `(JSON_CONTAINS(
|
|
363
|
+
JSON_EXTRACT(content, '$.product_tag.language."${(_a = query.language) !== null && _a !== void 0 ? _a : 'zh-TW'}"'),
|
|
364
|
+
JSON_QUOTE('${tag}')
|
|
365
|
+
))`;
|
|
366
|
+
});
|
|
367
|
+
querySql.push(`(${tagJoin.join(' OR ')})`);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
348
370
|
if (query.id_list && idStr) {
|
|
349
371
|
querySql.push(`(id in (${idStr}))`);
|
|
350
372
|
}
|
|
@@ -745,6 +767,151 @@ class Shopping {
|
|
|
745
767
|
throw exception_js_1.default.BadRequestError('BAD_REQUEST', 'GetProduct Error:' + e, null);
|
|
746
768
|
}
|
|
747
769
|
}
|
|
770
|
+
async initProductCustomizeTagConifg() {
|
|
771
|
+
var _a, _b;
|
|
772
|
+
try {
|
|
773
|
+
const managerTags = await new user_js_1.User(this.app).getConfigV2({ key: 'product_manager_tags', user_id: 'manager' });
|
|
774
|
+
console.log(`initProductCustomizeTagConifg=>getData=>`, managerTags);
|
|
775
|
+
if (managerTags && Array.isArray(managerTags.list)) {
|
|
776
|
+
return managerTags;
|
|
777
|
+
}
|
|
778
|
+
console.log(`query_sql=>`, `SELECT
|
|
779
|
+
GROUP_CONCAT(DISTINCT JSON_UNQUOTE(JSON_EXTRACT(content, '$.product_customize_tag')) SEPARATOR ',') AS unique_tags
|
|
780
|
+
FROM \`${this.app}\`.t_manager_post
|
|
781
|
+
WHERE JSON_UNQUOTE(JSON_EXTRACT(content, '$.type')) = 'product'`);
|
|
782
|
+
const getData = await database_js_1.default.query(`
|
|
783
|
+
SELECT
|
|
784
|
+
GROUP_CONCAT(DISTINCT JSON_UNQUOTE(JSON_EXTRACT(content, '$.product_customize_tag')) SEPARATOR ',') AS unique_tags
|
|
785
|
+
FROM \`${this.app}\`.t_manager_post
|
|
786
|
+
WHERE JSON_UNQUOTE(JSON_EXTRACT(content, '$.type')) = 'product'
|
|
787
|
+
`, []);
|
|
788
|
+
const unique_tags_string = (_b = (_a = getData[0]) === null || _a === void 0 ? void 0 : _a.unique_tags) !== null && _b !== void 0 ? _b : '';
|
|
789
|
+
console.log(`JSON_STRING=>`, `[${unique_tags_string}]`);
|
|
790
|
+
const unique_tags_array = JSON.parse(`[${unique_tags_string}]`);
|
|
791
|
+
const unique_tags_flot = Array.isArray(unique_tags_array) ? unique_tags_array.flat() : [];
|
|
792
|
+
const data = { list: [...new Set(unique_tags_flot)] };
|
|
793
|
+
console.log(`product_manager_tags=>setData=>`, managerTags);
|
|
794
|
+
await new user_js_1.User(this.app).setConfig({
|
|
795
|
+
key: 'product_manager_tags',
|
|
796
|
+
user_id: 'manager',
|
|
797
|
+
value: data,
|
|
798
|
+
});
|
|
799
|
+
return data;
|
|
800
|
+
}
|
|
801
|
+
catch (error) {
|
|
802
|
+
throw exception_js_1.default.BadRequestError('BAD_REQUEST', 'Set product customize tag conifg Error:' + error, null);
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
async setProductCustomizeTagConifg(add_tags) {
|
|
806
|
+
var _a;
|
|
807
|
+
const tagConfig = await new user_js_1.User(this.app).getConfigV2({ key: 'product_manager_tags', user_id: 'manager' });
|
|
808
|
+
const tagList = (_a = tagConfig === null || tagConfig === void 0 ? void 0 : tagConfig.list) !== null && _a !== void 0 ? _a : [];
|
|
809
|
+
const data = { list: [...new Set([...tagList, ...add_tags])] };
|
|
810
|
+
await new user_js_1.User(this.app).setConfig({
|
|
811
|
+
key: 'product_manager_tags',
|
|
812
|
+
user_id: 'manager',
|
|
813
|
+
value: data,
|
|
814
|
+
});
|
|
815
|
+
return data;
|
|
816
|
+
}
|
|
817
|
+
async initProductGeneralTagConifg() {
|
|
818
|
+
var _a, _b;
|
|
819
|
+
try {
|
|
820
|
+
const generalTags = await new user_js_1.User(this.app).getConfigV2({ key: 'product_general_tags', user_id: 'manager' });
|
|
821
|
+
if (generalTags && Array.isArray(generalTags.list)) {
|
|
822
|
+
return generalTags;
|
|
823
|
+
}
|
|
824
|
+
console.log(`initProductCustomizeTagConifg=>getData=>`, generalTags);
|
|
825
|
+
const getData = await database_js_1.default.query(`
|
|
826
|
+
SELECT
|
|
827
|
+
GROUP_CONCAT(DISTINCT JSON_UNQUOTE(JSON_EXTRACT(content, '$.product_tag.language')) SEPARATOR ',') AS unique_tags
|
|
828
|
+
FROM \`${this.app}\`.t_manager_post
|
|
829
|
+
WHERE JSON_UNQUOTE(JSON_EXTRACT(content, '$.type')) = 'product'
|
|
830
|
+
`, []);
|
|
831
|
+
const unique_tags_string = (_b = (_a = getData[0]) === null || _a === void 0 ? void 0 : _a.unique_tags) !== null && _b !== void 0 ? _b : '';
|
|
832
|
+
console.log(`JSON_STRING=>`, `[${unique_tags_string}]`);
|
|
833
|
+
const unique_tags_array = JSON.parse(`[${unique_tags_string}]`);
|
|
834
|
+
console.log(`JSON_DATA=>`, unique_tags_array);
|
|
835
|
+
const unique_tags_flot = Array.isArray(unique_tags_array) ? unique_tags_array.flat() : [];
|
|
836
|
+
const list = {};
|
|
837
|
+
unique_tags_flot.map(item => {
|
|
838
|
+
Language_js_1.Language.locationList.map(lang => {
|
|
839
|
+
var _a;
|
|
840
|
+
list[lang] = [...((_a = list[lang]) !== null && _a !== void 0 ? _a : []), ...item[lang]];
|
|
841
|
+
});
|
|
842
|
+
});
|
|
843
|
+
Language_js_1.Language.locationList.map(lang => {
|
|
844
|
+
list[lang] = [...new Set(list[lang])];
|
|
845
|
+
});
|
|
846
|
+
const data = { list };
|
|
847
|
+
await new user_js_1.User(this.app).setConfig({
|
|
848
|
+
key: 'product_general_tags',
|
|
849
|
+
user_id: 'manager',
|
|
850
|
+
value: data,
|
|
851
|
+
});
|
|
852
|
+
return data;
|
|
853
|
+
}
|
|
854
|
+
catch (error) {
|
|
855
|
+
throw exception_js_1.default.BadRequestError('BAD_REQUEST', 'Set product general tag conifg Error:' + error, null);
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
async setProductGeneralTagConifg(add_tags) {
|
|
859
|
+
var _a, _b;
|
|
860
|
+
const tagConfig = (_a = (await new user_js_1.User(this.app).getConfigV2({ key: 'product_general_tags', user_id: 'manager' }))) !== null && _a !== void 0 ? _a : (await this.initProductGeneralTagConifg());
|
|
861
|
+
(_b = tagConfig.list) !== null && _b !== void 0 ? _b : (tagConfig.list = {});
|
|
862
|
+
Language_js_1.Language.locationList.map(lang => {
|
|
863
|
+
var _a;
|
|
864
|
+
const originList = (_a = tagConfig.list[lang]) !== null && _a !== void 0 ? _a : [];
|
|
865
|
+
const updateList = add_tags[lang];
|
|
866
|
+
tagConfig.list[lang] = [...new Set([...originList, ...updateList])];
|
|
867
|
+
});
|
|
868
|
+
await new user_js_1.User(this.app).setConfig({
|
|
869
|
+
key: 'product_general_tags',
|
|
870
|
+
user_id: 'manager',
|
|
871
|
+
value: tagConfig,
|
|
872
|
+
});
|
|
873
|
+
return tagConfig;
|
|
874
|
+
}
|
|
875
|
+
async initOrderCustomizeTagConifg() {
|
|
876
|
+
var _a, _b;
|
|
877
|
+
try {
|
|
878
|
+
const managerTags = await new user_js_1.User(this.app).getConfigV2({ key: 'order_manager_tags', user_id: 'manager' });
|
|
879
|
+
if (managerTags && Array.isArray(managerTags.list)) {
|
|
880
|
+
return managerTags;
|
|
881
|
+
}
|
|
882
|
+
const getData = await database_js_1.default.query(`
|
|
883
|
+
SELECT
|
|
884
|
+
GROUP_CONCAT(DISTINCT JSON_UNQUOTE(JSON_EXTRACT(orderData, '$.tags')) SEPARATOR ',') AS unique_tags
|
|
885
|
+
FROM \`${this.app}\`.t_checkout
|
|
886
|
+
WHERE JSON_UNQUOTE(JSON_EXTRACT(orderData, '$.tags')) IS NOT NULL
|
|
887
|
+
`, []);
|
|
888
|
+
const unique_tags_string = (_b = (_a = getData[0]) === null || _a === void 0 ? void 0 : _a.unique_tags) !== null && _b !== void 0 ? _b : '';
|
|
889
|
+
const unique_tags_array = JSON.parse(`[${unique_tags_string}]`);
|
|
890
|
+
const unique_tags_flot = Array.isArray(unique_tags_array) ? unique_tags_array.flat() : [];
|
|
891
|
+
const data = { list: [...new Set(unique_tags_flot)] };
|
|
892
|
+
await new user_js_1.User(this.app).setConfig({
|
|
893
|
+
key: 'order_manager_tags',
|
|
894
|
+
user_id: 'manager',
|
|
895
|
+
value: data,
|
|
896
|
+
});
|
|
897
|
+
return data;
|
|
898
|
+
}
|
|
899
|
+
catch (error) {
|
|
900
|
+
throw exception_js_1.default.BadRequestError('BAD_REQUEST', 'Set order customize tag conifg Error:' + express_1.default, null);
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
async setOrderCustomizeTagConifg(add_tags) {
|
|
904
|
+
var _a;
|
|
905
|
+
const tagConfig = await new user_js_1.User(this.app).getConfigV2({ key: 'order_manager_tags', user_id: 'manager' });
|
|
906
|
+
const tagList = (_a = tagConfig === null || tagConfig === void 0 ? void 0 : tagConfig.list) !== null && _a !== void 0 ? _a : [];
|
|
907
|
+
const data = { list: [...new Set([...tagList, ...add_tags])] };
|
|
908
|
+
await new user_js_1.User(this.app).setConfig({
|
|
909
|
+
key: 'order_manager_tags',
|
|
910
|
+
user_id: 'manager',
|
|
911
|
+
value: data,
|
|
912
|
+
});
|
|
913
|
+
return data;
|
|
914
|
+
}
|
|
748
915
|
async getAllUseVoucher(userID) {
|
|
749
916
|
const now = Date.now();
|
|
750
917
|
const allVoucher = (await this.querySql([`(content->>'$.type'='voucher')`], {
|
|
@@ -1232,6 +1399,7 @@ class Shopping {
|
|
|
1232
1399
|
};
|
|
1233
1400
|
const newOrderID = Date.now();
|
|
1234
1401
|
const carData = {
|
|
1402
|
+
orderID: `${newOrderID}`,
|
|
1235
1403
|
discount: (_b = orderData.discount) !== null && _b !== void 0 ? _b : 0,
|
|
1236
1404
|
customer_info: orderData.customer_info || {},
|
|
1237
1405
|
lineItems: (_c = orderData.lineItems) !== null && _c !== void 0 ? _c : [],
|
|
@@ -1242,7 +1410,6 @@ class Shopping {
|
|
|
1242
1410
|
rebate: (_j = orderData.rebate) !== null && _j !== void 0 ? _j : 0,
|
|
1243
1411
|
goodsWeight: 0,
|
|
1244
1412
|
use_rebate: orderData.use_rebate || 0,
|
|
1245
|
-
orderID: `${newOrderID}`,
|
|
1246
1413
|
shipment_support: shipment_setting.support,
|
|
1247
1414
|
shipment_info: shipment_setting.info,
|
|
1248
1415
|
shipment_selector: [
|
|
@@ -1275,8 +1442,12 @@ class Shopping {
|
|
|
1275
1442
|
fbp: sqlData.fbp,
|
|
1276
1443
|
editRecord: [],
|
|
1277
1444
|
};
|
|
1278
|
-
|
|
1279
|
-
|
|
1445
|
+
await order_event_js_1.OrderEvent.insertOrder({
|
|
1446
|
+
cartData: orderData,
|
|
1447
|
+
status: 0,
|
|
1448
|
+
app: this.app,
|
|
1449
|
+
});
|
|
1450
|
+
const result = await new handlePaymentTransaction_js_1.default(this.app, orderData.customer_info.payment_select).processPayment(carData, return_url);
|
|
1280
1451
|
return result;
|
|
1281
1452
|
}
|
|
1282
1453
|
}
|
|
@@ -1328,7 +1499,7 @@ class Shopping {
|
|
|
1328
1499
|
querySql.push(`(archived="${query.archived}")`);
|
|
1329
1500
|
}
|
|
1330
1501
|
else if (query.archived === 'false') {
|
|
1331
|
-
querySql.push(`((archived
|
|
1502
|
+
querySql.push(`((archived IS NULL) or (archived!='true'))`);
|
|
1332
1503
|
}
|
|
1333
1504
|
query.status && querySql.push(`status IN (${query.status})`);
|
|
1334
1505
|
query.email && querySql.push(`email=${database_js_1.default.escape(query.email)}`);
|
|
@@ -1479,8 +1650,48 @@ class Shopping {
|
|
|
1479
1650
|
}
|
|
1480
1651
|
}
|
|
1481
1652
|
async splitOrder(obj) {
|
|
1482
|
-
var _a, _b;
|
|
1483
1653
|
try {
|
|
1654
|
+
async function processCheckoutsStaggered(splitOrderArray, orderData, context) {
|
|
1655
|
+
const promises = splitOrderArray.map((order, index) => {
|
|
1656
|
+
return new Promise((resolve, reject) => {
|
|
1657
|
+
const delay = 1000 * index;
|
|
1658
|
+
setTimeout(() => {
|
|
1659
|
+
var _a, _b;
|
|
1660
|
+
const payload = {
|
|
1661
|
+
code_array: [],
|
|
1662
|
+
order_id: (_b = (_a = orderData === null || orderData === void 0 ? void 0 : orderData.splitOrders) === null || _a === void 0 ? void 0 : _a[index]) !== null && _b !== void 0 ? _b : '',
|
|
1663
|
+
line_items: order.lineItems,
|
|
1664
|
+
customer_info: order.customer_info,
|
|
1665
|
+
return_url: '',
|
|
1666
|
+
user_info: order.user_info,
|
|
1667
|
+
discount: order.discount,
|
|
1668
|
+
voucher: order.voucher,
|
|
1669
|
+
total: order.total,
|
|
1670
|
+
pay_status: Number(order.pay_status),
|
|
1671
|
+
};
|
|
1672
|
+
context
|
|
1673
|
+
.toCheckout(payload, 'split')
|
|
1674
|
+
.then(() => {
|
|
1675
|
+
resolve();
|
|
1676
|
+
})
|
|
1677
|
+
.catch((error) => {
|
|
1678
|
+
reject(error);
|
|
1679
|
+
});
|
|
1680
|
+
}, delay);
|
|
1681
|
+
});
|
|
1682
|
+
});
|
|
1683
|
+
try {
|
|
1684
|
+
await Promise.all(promises);
|
|
1685
|
+
return true;
|
|
1686
|
+
}
|
|
1687
|
+
catch (e) {
|
|
1688
|
+
console.error('處理拆分訂單結帳時至少發生一個錯誤 (從 Promise.all 捕獲):', e);
|
|
1689
|
+
return {
|
|
1690
|
+
result: 'failure',
|
|
1691
|
+
reason: e,
|
|
1692
|
+
};
|
|
1693
|
+
}
|
|
1694
|
+
}
|
|
1484
1695
|
const currentTime = new Date().toISOString();
|
|
1485
1696
|
function generateOrderIds(orderId, arrayLength) {
|
|
1486
1697
|
const orderIdArray = [];
|
|
@@ -1515,21 +1726,7 @@ class Shopping {
|
|
|
1515
1726
|
cart_token: orderData.orderID,
|
|
1516
1727
|
orderData,
|
|
1517
1728
|
});
|
|
1518
|
-
|
|
1519
|
-
await (new checkout_event_js_1.CheckoutEvent(this.app, this.token)).toCheckout({
|
|
1520
|
-
code_array: [],
|
|
1521
|
-
order_id: (_b = (_a = orderData === null || orderData === void 0 ? void 0 : orderData.splitOrders) === null || _a === void 0 ? void 0 : _a[index]) !== null && _b !== void 0 ? _b : '',
|
|
1522
|
-
line_items: order.lineItems,
|
|
1523
|
-
customer_info: order.customer_info,
|
|
1524
|
-
return_url: '',
|
|
1525
|
-
user_info: order.user_info,
|
|
1526
|
-
discount: order.discount,
|
|
1527
|
-
voucher: order.voucher,
|
|
1528
|
-
total: order.total,
|
|
1529
|
-
pay_status: Number(order.pay_status),
|
|
1530
|
-
}, 'split');
|
|
1531
|
-
}
|
|
1532
|
-
return true;
|
|
1729
|
+
return await processCheckoutsStaggered(splitOrderArray, orderData, this);
|
|
1533
1730
|
}
|
|
1534
1731
|
catch (e) {
|
|
1535
1732
|
throw exception_js_1.default.BadRequestError('BAD_REQUEST', 'splitOrder Error:' + e, null);
|
|
@@ -1955,7 +2152,12 @@ class Shopping {
|
|
|
1955
2152
|
delete update.orderData.user_info.shipment_date;
|
|
1956
2153
|
}
|
|
1957
2154
|
const updateProgress = update.orderData.progress;
|
|
1958
|
-
if (
|
|
2155
|
+
if (updateProgress === 'wait' &&
|
|
2156
|
+
update.orderData.user_info.shipment_number &&
|
|
2157
|
+
update.orderData.user_info.shipment_number !== origin.orderData.user_info.shipment_number) {
|
|
2158
|
+
await this.sendNotifications(orderData, 'in_stock');
|
|
2159
|
+
}
|
|
2160
|
+
else if (prevProgress !== updateProgress) {
|
|
1959
2161
|
if (updateProgress === 'shipping') {
|
|
1960
2162
|
await this.sendNotifications(orderData, 'shipment');
|
|
1961
2163
|
}
|
|
@@ -1973,10 +2175,11 @@ class Shopping {
|
|
|
1973
2175
|
update.orderData.lineItems = update.orderData.lineItems.filter((item) => item.count > 0);
|
|
1974
2176
|
this.writeRecord(origin, update);
|
|
1975
2177
|
const updateData = Object.entries(update).reduce((acc, [key, value]) => (Object.assign(Object.assign({}, acc), { [key]: typeof value === 'object' ? JSON.stringify(value) : value })), {});
|
|
1976
|
-
await database_js_1.default.query(`UPDATE \`${this.app}\`.t_checkout
|
|
1977
|
-
SET ?
|
|
1978
|
-
WHERE id = ?;
|
|
2178
|
+
await database_js_1.default.query(`UPDATE \`${this.app}\`.t_checkout SET ? WHERE id = ?;
|
|
1979
2179
|
`, [updateData, origin.id]);
|
|
2180
|
+
if (Array.isArray(update.orderData.tags)) {
|
|
2181
|
+
await this.setOrderCustomizeTagConifg(update.orderData.tags);
|
|
2182
|
+
}
|
|
1980
2183
|
await Promise.all(origin.orderData.lineItems.map(async (lineItem) => {
|
|
1981
2184
|
var _a;
|
|
1982
2185
|
const shopping = new Shopping(this.app, this.token);
|
|
@@ -2121,6 +2324,7 @@ class Shopping {
|
|
|
2121
2324
|
const typeMap = {
|
|
2122
2325
|
shipment: 'shipment',
|
|
2123
2326
|
arrival: 'shipment-arrival',
|
|
2327
|
+
in_stock: 'in-stock',
|
|
2124
2328
|
};
|
|
2125
2329
|
if (lineID) {
|
|
2126
2330
|
const line = new line_message_1.LineMessage(this.app);
|
|
@@ -2289,10 +2493,11 @@ class Shopping {
|
|
|
2289
2493
|
}
|
|
2290
2494
|
async getCheckOut(query) {
|
|
2291
2495
|
try {
|
|
2292
|
-
let querySql = ['1=1'];
|
|
2293
|
-
let orderString = 'order by id desc';
|
|
2294
2496
|
const timer = new ut_timer_js_1.UtTimer('get-checkout-info');
|
|
2295
2497
|
timer.checkPoint('start');
|
|
2498
|
+
const querySql = ['o.id IS NOT NULL'];
|
|
2499
|
+
let orderString = 'order by created_time desc';
|
|
2500
|
+
await this.initOrderCustomizeTagConifg();
|
|
2296
2501
|
if (query.search && query.searchType) {
|
|
2297
2502
|
switch (query.searchType) {
|
|
2298
2503
|
case 'cart_token':
|
|
@@ -2338,7 +2543,7 @@ class Shopping {
|
|
|
2338
2543
|
let search = [];
|
|
2339
2544
|
query.reconciliation_status.map(status => {
|
|
2340
2545
|
if (status === 'pending_entry') {
|
|
2341
|
-
search.push(`total_received
|
|
2546
|
+
search.push(`total_received IS NULL`);
|
|
2342
2547
|
}
|
|
2343
2548
|
else if (status === 'completed_entry') {
|
|
2344
2549
|
search.push(`total_received = total`);
|
|
@@ -2350,10 +2555,10 @@ class Shopping {
|
|
|
2350
2555
|
search.push(`(total_received < total) && ((total_received + offset_amount) = total)`);
|
|
2351
2556
|
}
|
|
2352
2557
|
else if (status === 'pending_offset') {
|
|
2353
|
-
search.push(`(total_received < total) && (offset_amount
|
|
2558
|
+
search.push(`(total_received < total) && (offset_amount IS NULL)`);
|
|
2354
2559
|
}
|
|
2355
2560
|
else if (status === 'pending_refund') {
|
|
2356
|
-
search.push(`(total_received > total) && (offset_amount
|
|
2561
|
+
search.push(`(total_received > total) && (offset_amount IS NULL)`);
|
|
2357
2562
|
}
|
|
2358
2563
|
});
|
|
2359
2564
|
querySql.push(`(${search
|
|
@@ -2393,7 +2598,7 @@ class Shopping {
|
|
|
2393
2598
|
querySql.push(`shipment_number is NOT null`);
|
|
2394
2599
|
}
|
|
2395
2600
|
else if (query.progress === 'wait') {
|
|
2396
|
-
querySql.push(`shipment_number
|
|
2601
|
+
querySql.push(`shipment_number IS NULL`);
|
|
2397
2602
|
}
|
|
2398
2603
|
let newArray = query.progress.split(',');
|
|
2399
2604
|
let temp = '';
|
|
@@ -2413,7 +2618,7 @@ class Shopping {
|
|
|
2413
2618
|
querySql.push(`order_source='POS'`);
|
|
2414
2619
|
}
|
|
2415
2620
|
else if (query.is_pos === 'false') {
|
|
2416
|
-
querySql.push(`(order_source!='POS' or order_source
|
|
2621
|
+
querySql.push(`(order_source!='POS' or order_source IS NULL)`);
|
|
2417
2622
|
}
|
|
2418
2623
|
if (query.shipment) {
|
|
2419
2624
|
let shipment = query.shipment.split(',');
|
|
@@ -2458,36 +2663,90 @@ class Shopping {
|
|
|
2458
2663
|
break;
|
|
2459
2664
|
}
|
|
2460
2665
|
}
|
|
2461
|
-
|
|
2666
|
+
if (query.manager_tag) {
|
|
2667
|
+
const tagSplit = query.manager_tag.split(',').map(tag => tag.trim());
|
|
2668
|
+
if (tagSplit.length > 0) {
|
|
2669
|
+
const tagJoin = tagSplit.map(tag => {
|
|
2670
|
+
return `JSON_CONTAINS(orderData->>'$.tags', '"${tag}"')`;
|
|
2671
|
+
});
|
|
2672
|
+
querySql.push(`(${tagJoin.join(' OR ')})`);
|
|
2673
|
+
}
|
|
2674
|
+
}
|
|
2675
|
+
if (query.status) {
|
|
2676
|
+
querySql.push(`o.status IN (${query.status})`);
|
|
2677
|
+
}
|
|
2462
2678
|
const orderMath = [];
|
|
2463
2679
|
query.email && orderMath.push(`(email=${database_js_1.default.escape(query.email)})`);
|
|
2464
2680
|
query.phone && orderMath.push(`(email=${database_js_1.default.escape(query.phone)})`);
|
|
2465
2681
|
if (orderMath.length) {
|
|
2466
|
-
querySql.push(`(${orderMath.join('
|
|
2682
|
+
querySql.push(`(${orderMath.join(' OR ')})`);
|
|
2683
|
+
}
|
|
2684
|
+
if (query.member_levels) {
|
|
2685
|
+
let temp = [];
|
|
2686
|
+
const queryLevel = query.member_levels.split(',');
|
|
2687
|
+
const queryIdLevel = queryLevel.filter(level => level !== 'null');
|
|
2688
|
+
if (queryLevel.includes('null')) {
|
|
2689
|
+
temp = [`u.member_level IS NULL`, `u.member_level = ''`];
|
|
2690
|
+
}
|
|
2691
|
+
if (queryIdLevel.length > 0) {
|
|
2692
|
+
temp = [
|
|
2693
|
+
...temp,
|
|
2694
|
+
`u.member_level IN (${queryIdLevel
|
|
2695
|
+
.map(level => {
|
|
2696
|
+
return database_js_1.default.escape(level);
|
|
2697
|
+
})
|
|
2698
|
+
.join(',')})`,
|
|
2699
|
+
];
|
|
2700
|
+
}
|
|
2701
|
+
if (temp.length > 0) {
|
|
2702
|
+
querySql.push(`(${temp.join(' OR ')})`);
|
|
2703
|
+
}
|
|
2467
2704
|
}
|
|
2468
2705
|
if (query.filter_type === 'true' || query.archived) {
|
|
2469
2706
|
if (query.archived === 'true') {
|
|
2470
|
-
querySql.push(`(archived="${query.archived}")
|
|
2471
|
-
AND (order_status IS NULL OR order_status NOT IN (-99))`);
|
|
2707
|
+
querySql.push(`(archived="${query.archived}") AND (order_status IS NULL OR order_status NOT IN (-99))`);
|
|
2472
2708
|
}
|
|
2473
2709
|
else {
|
|
2474
|
-
querySql.push(`((archived="${query.archived}") or (archived
|
|
2710
|
+
querySql.push(`((archived="${query.archived}") or (archived IS NULL))`);
|
|
2475
2711
|
}
|
|
2476
2712
|
}
|
|
2477
2713
|
else if (query.filter_type === 'normal') {
|
|
2478
|
-
querySql.push(`((archived
|
|
2714
|
+
querySql.push(`((archived IS NULL) or (archived!='true'))`);
|
|
2479
2715
|
}
|
|
2480
2716
|
if (!(query.filter_type === 'true' || query.archived)) {
|
|
2481
|
-
querySql.push(`((order_status
|
|
2482
|
-
}
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2717
|
+
querySql.push(`((order_status IS NULL) or (order_status NOT IN (-99)))`);
|
|
2718
|
+
}
|
|
2719
|
+
const baseSelect = `
|
|
2720
|
+
SELECT
|
|
2721
|
+
o.*,
|
|
2722
|
+
i.invoice_no,
|
|
2723
|
+
i.invoice_data,
|
|
2724
|
+
i.\`status\` as invoice_status
|
|
2725
|
+
FROM`;
|
|
2726
|
+
const joinClause = `LEFT JOIN \`${this.app}\`.t_invoice_memory i ON o.cart_token = i.order_id AND i.status = 1`;
|
|
2727
|
+
const whereClause = `WHERE ${querySql.join(' AND ')}`;
|
|
2728
|
+
let sql;
|
|
2729
|
+
if (query.member_levels) {
|
|
2730
|
+
sql = `
|
|
2731
|
+
(
|
|
2732
|
+
(
|
|
2733
|
+
${baseSelect} \`${this.app}\`.t_user u
|
|
2734
|
+
LEFT JOIN \`${this.app}\`.t_checkout o ON o.email = u.phone
|
|
2735
|
+
${joinClause}
|
|
2736
|
+
${whereClause}
|
|
2737
|
+
)
|
|
2738
|
+
UNION
|
|
2739
|
+
(
|
|
2740
|
+
${baseSelect} \`${this.app}\`.t_user u
|
|
2741
|
+
LEFT JOIN \`${this.app}\`.t_checkout o ON o.email = u.email
|
|
2742
|
+
${joinClause}
|
|
2743
|
+
${whereClause}
|
|
2744
|
+
)
|
|
2745
|
+
) ${orderString}`;
|
|
2746
|
+
}
|
|
2747
|
+
else {
|
|
2748
|
+
sql = `${baseSelect} \`${this.app}\`.t_checkout o ${joinClause} ${whereClause} ${orderString}`;
|
|
2749
|
+
}
|
|
2491
2750
|
if (query.returnSearch == 'true') {
|
|
2492
2751
|
const data = await database_js_1.default.query(`SELECT *
|
|
2493
2752
|
FROM \`${this.app}\`.t_checkout
|
|
@@ -2512,28 +2771,23 @@ class Shopping {
|
|
|
2512
2771
|
}
|
|
2513
2772
|
return data[0];
|
|
2514
2773
|
}
|
|
2515
|
-
const response_data = await new Promise(async (resolve
|
|
2516
|
-
timer.checkPoint('start-query-response_data');
|
|
2774
|
+
const response_data = await new Promise(async (resolve) => {
|
|
2517
2775
|
if (query.id) {
|
|
2518
|
-
const data = (await database_js_1.default.query(`SELECT *
|
|
2519
|
-
FROM (${sql}) as subqyery limit ${query.page * query.limit}, ${query.limit}
|
|
2776
|
+
const data = (await database_js_1.default.query(`SELECT * FROM (${sql}) as subqyery limit ${query.page * query.limit}, ${query.limit}
|
|
2520
2777
|
`, []))[0];
|
|
2778
|
+
timer.checkPoint('get response_data (has query.id)');
|
|
2521
2779
|
resolve({
|
|
2522
2780
|
data: data,
|
|
2523
2781
|
result: !!data,
|
|
2524
2782
|
});
|
|
2525
2783
|
}
|
|
2526
2784
|
else {
|
|
2527
|
-
const data = await database_js_1.default.query(`SELECT *
|
|
2528
|
-
FROM (${sql}) as subqyery limit ${query.page * query.limit}, ${query.limit}
|
|
2785
|
+
const data = await database_js_1.default.query(`SELECT * FROM (${sql}) as subqyery limit ${query.page * query.limit}, ${query.limit}
|
|
2529
2786
|
`, []);
|
|
2530
|
-
timer.checkPoint('
|
|
2531
|
-
console.log(sql);
|
|
2787
|
+
timer.checkPoint('get response_data (not query.id)');
|
|
2532
2788
|
resolve({
|
|
2533
2789
|
data: data,
|
|
2534
|
-
total: (await database_js_1.default.query(`SELECT count(1)
|
|
2535
|
-
FROM (${sql}) as subqyery
|
|
2536
|
-
`, []))[0]['count(1)'],
|
|
2790
|
+
total: (await database_js_1.default.query(`SELECT count(1) FROM (${sql}) as subqyery`, []))[0]['count(1)'],
|
|
2537
2791
|
});
|
|
2538
2792
|
}
|
|
2539
2793
|
});
|
|
@@ -2602,11 +2856,12 @@ class Shopping {
|
|
|
2602
2856
|
catch (e) { }
|
|
2603
2857
|
})
|
|
2604
2858
|
.concat(obMap.map(async (order) => {
|
|
2859
|
+
var _a;
|
|
2605
2860
|
const invoice = (await new invoice_js_1.Invoice(this.app).getInvoice({
|
|
2606
2861
|
page: 0,
|
|
2607
2862
|
limit: 1,
|
|
2608
2863
|
search: order.cart_token,
|
|
2609
|
-
searchType: order.orderData.order_number,
|
|
2864
|
+
searchType: (_a = order.orderData) === null || _a === void 0 ? void 0 : _a.order_number,
|
|
2610
2865
|
})).data[0];
|
|
2611
2866
|
order.invoice_number = invoice && invoice.invoice_no;
|
|
2612
2867
|
}))
|
|
@@ -2871,8 +3126,7 @@ class Shopping {
|
|
|
2871
3126
|
else if (Object.keys(variant.stockList).length === 0) {
|
|
2872
3127
|
variant.stockList[storeConfig.list[0].id] = { count: variant.stock };
|
|
2873
3128
|
}
|
|
2874
|
-
const insertData = await database_js_1.default.query(`INSERT INTO \`${this.app}\`.t_variants
|
|
2875
|
-
SET ?
|
|
3129
|
+
const insertData = await database_js_1.default.query(`INSERT INTO \`${this.app}\`.t_variants SET ?
|
|
2876
3130
|
`, [
|
|
2877
3131
|
{
|
|
2878
3132
|
content: JSON.stringify(variant),
|
|
@@ -2885,7 +3139,14 @@ class Shopping {
|
|
|
2885
3139
|
}
|
|
2886
3140
|
return insertData;
|
|
2887
3141
|
});
|
|
2888
|
-
|
|
3142
|
+
const chunk = 10;
|
|
3143
|
+
const chunkLength = Math.ceil(insertPromises.length / chunk);
|
|
3144
|
+
for (let i = 0; i < chunkLength; i++) {
|
|
3145
|
+
const promisesArray = insertPromises.slice(i * chunk, (i + 1) * chunk);
|
|
3146
|
+
setTimeout(async () => {
|
|
3147
|
+
await Promise.all(promisesArray);
|
|
3148
|
+
}, 200);
|
|
3149
|
+
}
|
|
2889
3150
|
const exhibitionConfig = await _user.getConfigV2({ key: 'exhibition_manager', user_id: 'manager' });
|
|
2890
3151
|
exhibitionConfig.list = (_b = exhibitionConfig.list) !== null && _b !== void 0 ? _b : [];
|
|
2891
3152
|
exhibitionConfig.list.forEach((exhibition) => {
|
|
@@ -3439,11 +3700,11 @@ class Shopping {
|
|
|
3439
3700
|
productArray[index] = product;
|
|
3440
3701
|
}
|
|
3441
3702
|
else {
|
|
3442
|
-
console.error('Product id not exist:', product);
|
|
3703
|
+
console.error('Product id not exist:', product.title);
|
|
3443
3704
|
}
|
|
3444
3705
|
}
|
|
3445
3706
|
else {
|
|
3446
|
-
console.error('Product has not id:', product);
|
|
3707
|
+
console.error('Product has not id:', product.title);
|
|
3447
3708
|
}
|
|
3448
3709
|
resolve(true);
|
|
3449
3710
|
});
|
|
@@ -3473,8 +3734,8 @@ class Shopping {
|
|
|
3473
3734
|
return [product.id || null, (_a = this.token) === null || _a === void 0 ? void 0 : _a.userID, JSON.stringify(product)];
|
|
3474
3735
|
});
|
|
3475
3736
|
if (productArray.length) {
|
|
3476
|
-
const data = await database_js_1.default.query(`
|
|
3477
|
-
|
|
3737
|
+
const data = await database_js_1.default.query(`REPLACE INTO \`${this.app}\`.\`t_manager_post\` (id,userID,content) values ?
|
|
3738
|
+
`, [
|
|
3478
3739
|
productArray.map((product) => {
|
|
3479
3740
|
var _a;
|
|
3480
3741
|
if (!product.id) {
|
|
@@ -3503,30 +3764,41 @@ class Shopping {
|
|
|
3503
3764
|
product.id = product.id || insertIDStart++;
|
|
3504
3765
|
return new Shopping(this.app, this.token).postVariantsAndPriceValue(product);
|
|
3505
3766
|
});
|
|
3506
|
-
|
|
3767
|
+
const chunk = 10;
|
|
3768
|
+
const chunkLength = Math.ceil(promises.length / chunk);
|
|
3769
|
+
for (let i = 0; i < chunkLength; i++) {
|
|
3770
|
+
const promisesArray = promises.slice(i * chunk, (i + 1) * chunk);
|
|
3771
|
+
setTimeout(async () => {
|
|
3772
|
+
await Promise.all(promisesArray);
|
|
3773
|
+
}, 200);
|
|
3774
|
+
}
|
|
3507
3775
|
}
|
|
3508
3776
|
async putProduct(content) {
|
|
3509
|
-
|
|
3510
|
-
const language = await app_js_1.App.getSupportLanguage(this.app);
|
|
3511
|
-
for (const b of language) {
|
|
3512
|
-
const find_conflict = await database_js_1.default.query(`select count(1)
|
|
3513
|
-
from \`${this.app}\`.\`t_manager_post\`
|
|
3514
|
-
where content ->>'$.language_data."${b}".seo.domain'='${decodeURIComponent(content.language_data[b].seo.domain)}'
|
|
3515
|
-
and id != ${content.id}`, []);
|
|
3516
|
-
if (find_conflict[0]['count(1)'] > 0) {
|
|
3517
|
-
throw exception_js_1.default.BadRequestError('BAD_REQUEST', 'DOMAIN ALREADY EXISTS:', {
|
|
3518
|
-
message: '網域已被使用',
|
|
3519
|
-
code: '733',
|
|
3520
|
-
});
|
|
3521
|
-
}
|
|
3522
|
-
}
|
|
3523
|
-
}
|
|
3777
|
+
var _a, _b, _c;
|
|
3524
3778
|
try {
|
|
3525
3779
|
content.type = 'product';
|
|
3780
|
+
if (content.language_data) {
|
|
3781
|
+
const language = await app_js_1.App.getSupportLanguage(this.app);
|
|
3782
|
+
for (const b of language) {
|
|
3783
|
+
const find_conflict = await database_js_1.default.query(`SELECT count(1)
|
|
3784
|
+
FROM \`${this.app}\`.t_manager_post
|
|
3785
|
+
WHERE content ->>'$.language_data."${b}".seo.domain'='${decodeURIComponent(content.language_data[b].seo.domain)}'
|
|
3786
|
+
AND id != ${content.id}`, []);
|
|
3787
|
+
if (find_conflict[0]['count(1)'] > 0) {
|
|
3788
|
+
throw exception_js_1.default.BadRequestError('BAD_REQUEST', 'DOMAIN ALREADY EXISTS:', {
|
|
3789
|
+
message: '網域已被使用',
|
|
3790
|
+
code: '733',
|
|
3791
|
+
});
|
|
3792
|
+
}
|
|
3793
|
+
}
|
|
3794
|
+
}
|
|
3526
3795
|
this.checkVariantDataType(content.variants);
|
|
3527
|
-
|
|
3528
|
-
|
|
3529
|
-
|
|
3796
|
+
await Promise.all([
|
|
3797
|
+
this.setProductCustomizeTagConifg((_a = content.product_customize_tag) !== null && _a !== void 0 ? _a : []),
|
|
3798
|
+
this.setProductGeneralTagConifg((_c = (_b = content.product_tag) === null || _b === void 0 ? void 0 : _b.language) !== null && _c !== void 0 ? _c : []),
|
|
3799
|
+
]);
|
|
3800
|
+
await database_js_1.default.query(`UPDATE \`${this.app}\`.\`t_manager_post\` SET ? WHERE id = ?
|
|
3801
|
+
`, [
|
|
3530
3802
|
{
|
|
3531
3803
|
content: JSON.stringify(content),
|
|
3532
3804
|
},
|
|
@@ -3696,7 +3968,7 @@ class Shopping {
|
|
|
3696
3968
|
query.id && querySql.push(`(v.id = ${query.id})`);
|
|
3697
3969
|
if (query.id_list) {
|
|
3698
3970
|
if ((_a = query.id_list) === null || _a === void 0 ? void 0 : _a.includes('-')) {
|
|
3699
|
-
querySql.push(`(v.product_id in (${query.id_list.split(',').map(
|
|
3971
|
+
querySql.push(`(v.product_id in (${query.id_list.split(',').map(dd => {
|
|
3700
3972
|
return dd.split('-')[0];
|
|
3701
3973
|
})}))`);
|
|
3702
3974
|
}
|
|
@@ -3793,7 +4065,7 @@ class Shopping {
|
|
|
3793
4065
|
if ((_c = query.id_list) === null || _c === void 0 ? void 0 : _c.includes('-')) {
|
|
3794
4066
|
data.data = data.data.filter((dd) => {
|
|
3795
4067
|
var _a;
|
|
3796
|
-
return (_a = query.id_list) === null || _a === void 0 ? void 0 : _a.split(',').find(
|
|
4068
|
+
return (_a = query.id_list) === null || _a === void 0 ? void 0 : _a.split(',').find(d1 => {
|
|
3797
4069
|
return d1 === [dd.product_id, ...dd.variant_content.spec].join('-');
|
|
3798
4070
|
});
|
|
3799
4071
|
});
|