ts-glitter 20.4.5 → 20.4.7
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-widget.js +19 -17
- package/lowcode/backend-manager/bg-widget.ts +19 -17
- package/lowcode/cms-plugin/user/user-module.js +28 -28
- package/lowcode/cms-plugin/user/user-module.ts +29 -31
- package/lowcode/cms-plugin/user-list.js +55 -42
- package/lowcode/cms-plugin/user-list.ts +71 -47
- package/lowcode/glitter-base/route/progress.js +32 -0
- package/lowcode/glitter-base/route/progress.ts +36 -0
- package/lowcode/glitter-base/route/user.js +37 -1
- package/lowcode/glitter-base/route/user.ts +40 -1
- package/lowcode/glitterBundle/dialog/ShareDialog.ts +0 -1
- package/package.json +3 -1
- package/src/api-public/controllers/ai-chat.js.map +1 -1
- package/src/api-public/controllers/app-release.js.map +1 -1
- package/src/api-public/controllers/delivery.js.map +1 -1
- package/src/api-public/controllers/graph-api.js.map +1 -1
- package/src/api-public/controllers/index.js +9 -8
- package/src/api-public/controllers/index.js.map +1 -1
- package/src/api-public/controllers/index.ts +171 -169
- package/src/api-public/controllers/lambda.js.map +1 -1
- package/src/api-public/controllers/manager.js.map +1 -1
- package/src/api-public/controllers/post.js.map +1 -1
- package/src/api-public/controllers/progress.d.ts +3 -0
- package/src/api-public/controllers/progress.js +29 -0
- package/src/api-public/controllers/progress.js.map +1 -0
- package/src/api-public/controllers/progress.ts +25 -0
- package/src/api-public/controllers/sql_api.js.map +1 -1
- package/src/api-public/controllers/track.js.map +1 -1
- package/src/api-public/controllers/user.js +47 -1
- package/src/api-public/controllers/user.js.map +1 -1
- package/src/api-public/controllers/user.ts +44 -3
- package/src/api-public/services/checkout.d.ts +1 -0
- package/src/api-public/services/checkout.js +16 -6
- package/src/api-public/services/checkout.js.map +1 -1
- package/src/api-public/services/checkout.ts +28 -18
- package/src/api-public/services/customer-sessions.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-order.d.ts +6 -1
- package/src/api-public/services/fake-data-model/fake-order.js +159 -155
- package/src/api-public/services/fake-data-model/fake-order.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-order.ts +186 -179
- package/src/api-public/services/fake-data-model/fake-product.js +94 -94
- package/src/api-public/services/fake-data-model/fake-product.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-product.ts +109 -114
- package/src/api-public/services/fake-data-model/fake-user.d.ts +17 -1
- package/src/api-public/services/fake-data-model/fake-user.js +70 -384
- package/src/api-public/services/fake-data-model/fake-user.js.map +1 -1
- package/src/api-public/services/fake-data-model/fake-user.ts +111 -394
- package/src/api-public/services/initial-fake-data.js +50 -10
- package/src/api-public/services/initial-fake-data.js.map +1 -1
- package/src/api-public/services/initial-fake-data.ts +92 -22
- package/src/api-public/services/invoice.js.map +1 -1
- package/src/api-public/services/manager.js.map +1 -1
- package/src/api-public/services/notify.js +234 -213
- package/src/api-public/services/notify.js.map +1 -1
- package/src/api-public/services/notify.ts +520 -494
- 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/rebate.d.ts +1 -0
- package/src/api-public/services/rebate.js +15 -8
- package/src/api-public/services/rebate.js.map +1 -1
- package/src/api-public/services/rebate.ts +24 -15
- package/src/api-public/services/recommend.js.map +1 -1
- package/src/api-public/services/schedule.js +8 -5
- package/src/api-public/services/schedule.js.map +1 -1
- package/src/api-public/services/schedule.ts +344 -335
- package/src/api-public/services/shopee.js.map +1 -1
- package/src/api-public/services/shopping.d.ts +1 -1
- package/src/api-public/services/shopping.js +28 -25
- package/src/api-public/services/shopping.js.map +1 -1
- package/src/api-public/services/shopping.ts +89 -76
- package/src/api-public/services/stock.js.map +1 -1
- package/src/api-public/services/user.d.ts +10 -1
- package/src/api-public/services/user.js +245 -42
- package/src/api-public/services/user.js.map +1 -1
- package/src/api-public/services/user.ts +325 -45
- package/src/api-public/services/voucher.js.map +1 -1
- package/src/api-public/services/workers.js.map +1 -1
- package/src/api-public/utils/ut-permission.d.ts +0 -1
- package/src/api-public/utils/ut-permission.js.map +1 -1
- package/src/config.d.ts +2 -1
- package/src/config.js +2 -1
- package/src/config.js.map +1 -1
- package/src/config.ts +142 -142
- package/src/controllers/app.js.map +1 -1
- package/src/controllers/backend-server.js.map +1 -1
- package/src/controllers/filemanager.js.map +1 -1
- package/src/controllers/index.js.map +1 -1
- package/src/controllers/user.js.map +1 -1
- package/src/domain-check.js.map +1 -1
- package/src/index.js.map +1 -1
- package/src/index.ts +3 -12
- package/src/modules/AWSLib.js +2 -3
- package/src/modules/AWSLib.js.map +1 -1
- package/src/modules/database.d.ts +1 -2
- package/src/modules/database.js.map +1 -1
- package/src/modules/firebase.js.map +1 -1
- package/src/modules/logger.js.map +1 -1
- package/src/modules/redis.d.ts +1 -1
- package/src/modules/redis.js.map +1 -1
- package/src/run.js +1 -2
- package/src/run.js.map +1 -1
- package/src/services/backend-service.js.map +1 -1
- package/src/services/create-instance.js +3 -4
- package/src/services/create-instance.js.map +1 -1
- package/src/services/global-event.js.map +1 -1
- package/src/services/ios-release.js.map +1 -1
- package/src/services/page.js.map +1 -1
- package/src/services/private_config.js.map +1 -1
- package/src/services/release.js.map +1 -1
- package/src/services/seo.js.map +1 -1
- package/src/services/tool.js +2 -3
- package/src/services/tool.js.map +1 -1
- package/src/services/user.js.map +1 -1
- package/src/services/web-socket.js.map +1 -1
- package/src/update-progress-track.d.ts +14 -0
- package/src/update-progress-track.js +28 -0
- package/src/update-progress-track.js.map +1 -0
- package/src/update-progress-track.ts +34 -0
|
@@ -59,6 +59,7 @@ const public_table_check_js_1 = require("./public-table-check.js");
|
|
|
59
59
|
const ut_timer_1 = require("../utils/ut-timer");
|
|
60
60
|
const auto_fcm_js_1 = require("../../public-config-initial/auto-fcm.js");
|
|
61
61
|
const phone_verify_js_1 = require("./phone-verify.js");
|
|
62
|
+
const update_progress_track_js_1 = require("../../update-progress-track.js");
|
|
62
63
|
class User {
|
|
63
64
|
constructor(app, token) {
|
|
64
65
|
this.normalMember = {
|
|
@@ -1032,7 +1033,7 @@ class User {
|
|
|
1032
1033
|
return orderByMap[orderBy] || 'u.id DESC';
|
|
1033
1034
|
}
|
|
1034
1035
|
async getUserList(query) {
|
|
1035
|
-
var _a, _b, _c
|
|
1036
|
+
var _a, _b, _c;
|
|
1036
1037
|
try {
|
|
1037
1038
|
const checkPoint = new ut_timer_1.UtTimer('GET-USER-LIST').checkPoint;
|
|
1038
1039
|
const orderCountingSQL = await this.getCheckoutCountingModeSQL();
|
|
@@ -1260,34 +1261,97 @@ class User {
|
|
|
1260
1261
|
where: querySql,
|
|
1261
1262
|
orderBy: (_c = query.order_string) !== null && _c !== void 0 ? _c : '',
|
|
1262
1263
|
});
|
|
1263
|
-
const
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
dd.pwd = undefined;
|
|
1273
|
-
const find_level = levelData.find((d1) => {
|
|
1274
|
-
return dd.member_level === d1.id;
|
|
1264
|
+
const processChunk = 1000;
|
|
1265
|
+
const getUserQuery = async (param) => {
|
|
1266
|
+
var _a, _b;
|
|
1267
|
+
const dataSQL = await this.getUserAndOrderSQL({
|
|
1268
|
+
select: 'o.email, o.order_count, o.total_amount, u.*, lo.last_order_total, lo.last_order_time',
|
|
1269
|
+
where: querySql,
|
|
1270
|
+
orderBy: (_a = query.order_string) !== null && _a !== void 0 ? _a : '',
|
|
1271
|
+
page: param === null || param === void 0 ? void 0 : param.page,
|
|
1272
|
+
limit: param === null || param === void 0 ? void 0 : param.limit,
|
|
1275
1273
|
});
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1274
|
+
const levelData = (_b = (await this.getConfigV2({ key: 'member_level_config', user_id: 'manager' })).levels) !== null && _b !== void 0 ? _b : [];
|
|
1275
|
+
const getUsers = (await database_1.default.query(dataSQL, [])).map((dd) => {
|
|
1276
|
+
dd.pwd = undefined;
|
|
1277
|
+
const find_level = levelData.find((d1) => {
|
|
1278
|
+
return dd.member_level === d1.id;
|
|
1279
|
+
});
|
|
1280
|
+
dd.tag_name = find_level ? find_level.tag_name : '一般會員';
|
|
1281
|
+
return dd;
|
|
1282
|
+
});
|
|
1283
|
+
checkPoint('getUsers');
|
|
1284
|
+
if (param) {
|
|
1285
|
+
const dataArray = [];
|
|
1286
|
+
for (let i = 0; i < getUsers.length; i += processChunk) {
|
|
1287
|
+
const data = await processUserData(getUsers.slice(i, i + processChunk));
|
|
1288
|
+
dataArray.push(data);
|
|
1289
|
+
checkPoint(`processUserData ${i}`);
|
|
1290
|
+
}
|
|
1291
|
+
return dataArray.flat();
|
|
1292
|
+
}
|
|
1293
|
+
return getUsers.map((user) => ({ userID: user.userID }));
|
|
1290
1294
|
};
|
|
1295
|
+
const processUserData = async (userData) => {
|
|
1296
|
+
const levels = await this.getUserLevel(userData.map((user) => ({ userId: user.userID })));
|
|
1297
|
+
const levelMap = new Map(levels.map(lv => { var _a; return [lv.id, (_a = lv.data.dead_line) !== null && _a !== void 0 ? _a : '']; }));
|
|
1298
|
+
checkPoint('levels');
|
|
1299
|
+
const mapUser = async (user) => {
|
|
1300
|
+
var _a;
|
|
1301
|
+
const phone = user.userData.phone || 'asnhsauh';
|
|
1302
|
+
const email = user.userData.email || 'asnhsauh';
|
|
1303
|
+
const userRebate = await new rebate_js_1.Rebate(this.app).getOneRebate({
|
|
1304
|
+
user_id: user.userID,
|
|
1305
|
+
quickPass: true,
|
|
1306
|
+
});
|
|
1307
|
+
user.rebate = userRebate ? userRebate.point : 0;
|
|
1308
|
+
user.member_deadline = (_a = levelMap.get(user.userID)) !== null && _a !== void 0 ? _a : '';
|
|
1309
|
+
user.latest_order_date = (await database_1.default.query(`select created_time
|
|
1310
|
+
from \`${this.app}\`.t_checkout
|
|
1311
|
+
where email in ('${email}', '${phone}')
|
|
1312
|
+
and ${orderCountingSQL}
|
|
1313
|
+
order by created_time desc limit 0,1`, []))[0];
|
|
1314
|
+
user.latest_order_date = user.latest_order_date && user.latest_order_date.created_time;
|
|
1315
|
+
user.latest_order_total = (await database_1.default.query(`select total
|
|
1316
|
+
from \`${this.app}\`.t_checkout
|
|
1317
|
+
where email in ('${email}', '${phone}')
|
|
1318
|
+
and ${orderCountingSQL}
|
|
1319
|
+
order by created_time desc limit 0,1`, []))[0];
|
|
1320
|
+
user.latest_order_total = user.latest_order_total && user.latest_order_total.total;
|
|
1321
|
+
user.checkout_total = (await database_1.default.query(`select sum(total)
|
|
1322
|
+
from \`${this.app}\`.t_checkout
|
|
1323
|
+
where email in ('${email}', '${phone}')
|
|
1324
|
+
and ${orderCountingSQL} `, []))[0];
|
|
1325
|
+
user.checkout_total = user.checkout_total && user.checkout_total['sum(total)'];
|
|
1326
|
+
user.checkout_count = (await database_1.default.query(`select count(1)
|
|
1327
|
+
from \`${this.app}\`.t_checkout
|
|
1328
|
+
where email in ('${email}', '${phone}')
|
|
1329
|
+
and ${orderCountingSQL} `, []))[0];
|
|
1330
|
+
user.checkout_count = user.checkout_count && user.checkout_count['count(1)'];
|
|
1331
|
+
user.last_order_total = user.last_order_total || 0;
|
|
1332
|
+
user.order_count = user.order_count || 0;
|
|
1333
|
+
user.total_amount = user.total_amount || 0;
|
|
1334
|
+
};
|
|
1335
|
+
if (Array.isArray(userData) && userData.length > 0) {
|
|
1336
|
+
const chunkSize = 100;
|
|
1337
|
+
for (let i = 0; i < userData.length; i += chunkSize) {
|
|
1338
|
+
const batch = userData.slice(i, i + chunkSize);
|
|
1339
|
+
await Promise.all(batch.map(async (user) => {
|
|
1340
|
+
await mapUser(user);
|
|
1341
|
+
checkPoint('mapUser');
|
|
1342
|
+
}));
|
|
1343
|
+
}
|
|
1344
|
+
}
|
|
1345
|
+
return userData;
|
|
1346
|
+
};
|
|
1347
|
+
const [pageUsers, allUsers] = await Promise.all([
|
|
1348
|
+
getUserQuery({ page: query.page, limit: query.limit }),
|
|
1349
|
+
query.all_result ? getUserQuery() : [],
|
|
1350
|
+
]);
|
|
1351
|
+
checkPoint('return data');
|
|
1352
|
+
return Object.assign(Object.assign({ data: pageUsers }, (allUsers.length > 0 ? { allUsers } : {})), { total: (await database_1.default.query(countSQL, []))[0]['count(1)'], extra: {
|
|
1353
|
+
noRegisterUsers: noRegisterUsers.length > 0 ? noRegisterUsers : undefined,
|
|
1354
|
+
} });
|
|
1291
1355
|
}
|
|
1292
1356
|
catch (e) {
|
|
1293
1357
|
throw exception_1.default.BadRequestError('BAD_REQUEST', 'getUserList Error:' + e, null);
|
|
@@ -1393,11 +1457,18 @@ class User {
|
|
|
1393
1457
|
if (existNormalTag || existZeroValue) {
|
|
1394
1458
|
return levelList;
|
|
1395
1459
|
}
|
|
1396
|
-
|
|
1460
|
+
const formatLevelList = levelList.map((item) => {
|
|
1461
|
+
item.index++;
|
|
1462
|
+
return item;
|
|
1463
|
+
});
|
|
1464
|
+
return [this.normalMember, ...formatLevelList];
|
|
1397
1465
|
}
|
|
1398
1466
|
async filterMemberUpdates(idList) {
|
|
1399
1467
|
try {
|
|
1400
1468
|
const memberUpdates = [];
|
|
1469
|
+
if (idList.length === 0) {
|
|
1470
|
+
return [];
|
|
1471
|
+
}
|
|
1401
1472
|
if (idList.length > 10000) {
|
|
1402
1473
|
const idSetArray = [...new Set(idList)];
|
|
1403
1474
|
const idMap = new Map();
|
|
@@ -1440,11 +1511,10 @@ class User {
|
|
|
1440
1511
|
return [];
|
|
1441
1512
|
}
|
|
1442
1513
|
}
|
|
1443
|
-
async setLevelData(user, memberUpdates,
|
|
1514
|
+
async setLevelData(user, quickPass, memberUpdates, levelList) {
|
|
1444
1515
|
var _a;
|
|
1445
1516
|
const { userID, userData } = user;
|
|
1446
1517
|
const { level_status, level_default, email } = userData;
|
|
1447
|
-
const levelList = levelConfig !== null && levelConfig !== void 0 ? levelConfig : (await this.getLevelConfig());
|
|
1448
1518
|
const normalMember = (_a = levelList[0]) !== null && _a !== void 0 ? _a : this.normalMember;
|
|
1449
1519
|
const normalData = {
|
|
1450
1520
|
id: normalMember.id,
|
|
@@ -1462,6 +1532,31 @@ class User {
|
|
|
1462
1532
|
data: matchedLevel !== null && matchedLevel !== void 0 ? matchedLevel : normalData,
|
|
1463
1533
|
};
|
|
1464
1534
|
}
|
|
1535
|
+
if (quickPass) {
|
|
1536
|
+
const index = user.member_level ? levelList.findIndex((level) => level.id === user.member_level) : 0;
|
|
1537
|
+
const getLevel = levelList[index];
|
|
1538
|
+
const formatData = {
|
|
1539
|
+
id: getLevel.id,
|
|
1540
|
+
og: {
|
|
1541
|
+
id: getLevel.id,
|
|
1542
|
+
index: index,
|
|
1543
|
+
duration: getLevel.duration,
|
|
1544
|
+
tag_name: getLevel.tag_name,
|
|
1545
|
+
condition: getLevel.condition,
|
|
1546
|
+
dead_line: getLevel.dead_line,
|
|
1547
|
+
create_date: getLevel.create_date,
|
|
1548
|
+
},
|
|
1549
|
+
trigger: true,
|
|
1550
|
+
tag_name: getLevel.tag_name,
|
|
1551
|
+
dead_line: '',
|
|
1552
|
+
};
|
|
1553
|
+
return {
|
|
1554
|
+
id: userID,
|
|
1555
|
+
email,
|
|
1556
|
+
status: 'auto',
|
|
1557
|
+
data: formatData,
|
|
1558
|
+
};
|
|
1559
|
+
}
|
|
1465
1560
|
if (memberUpdates.length > 0) {
|
|
1466
1561
|
const matchedUpdates = await this.checkMember(user, false);
|
|
1467
1562
|
const triggeredLevel = matchedUpdates.find((v) => v.trigger);
|
|
@@ -1482,6 +1577,7 @@ class User {
|
|
|
1482
1577
|
};
|
|
1483
1578
|
}
|
|
1484
1579
|
async getUserLevel(data) {
|
|
1580
|
+
const utTimer = new ut_timer_1.UtTimer('getUserLevel');
|
|
1485
1581
|
const idList = data
|
|
1486
1582
|
.filter(item => Boolean(item.userId))
|
|
1487
1583
|
.map(item => `${item.userId}`)
|
|
@@ -1498,20 +1594,17 @@ class User {
|
|
|
1498
1594
|
`, []);
|
|
1499
1595
|
if (!users || users.length == 0)
|
|
1500
1596
|
return [];
|
|
1501
|
-
const chunk =
|
|
1502
|
-
const chunkArray = [];
|
|
1597
|
+
const chunk = 20;
|
|
1503
1598
|
const dataList = [];
|
|
1504
1599
|
const levelConfig = await this.getLevelConfig();
|
|
1505
1600
|
const memberUpdates = await this.filterMemberUpdates(idList);
|
|
1506
1601
|
for (let i = 0; i < users.length; i += chunk) {
|
|
1507
|
-
|
|
1508
|
-
}
|
|
1509
|
-
await Promise.all(chunkArray.map(async (userArray) => {
|
|
1602
|
+
const userArray = users.slice(i, i + chunk);
|
|
1510
1603
|
await Promise.all(userArray.map(async (user) => {
|
|
1511
|
-
const userData = await this.setLevelData(user, memberUpdates, levelConfig);
|
|
1604
|
+
const userData = await this.setLevelData(user, users.length > 100, memberUpdates, levelConfig);
|
|
1512
1605
|
dataList.push(userData);
|
|
1513
1606
|
}));
|
|
1514
|
-
}
|
|
1607
|
+
}
|
|
1515
1608
|
return dataList;
|
|
1516
1609
|
}
|
|
1517
1610
|
async subscribe(email, tag) {
|
|
@@ -1710,11 +1803,10 @@ class User {
|
|
|
1710
1803
|
});
|
|
1711
1804
|
}
|
|
1712
1805
|
if (login_config.phone_verify &&
|
|
1713
|
-
!(await phone_verify_js_1.PhoneVerify.verify(par.userData.phone, par.userData.verify_code_phone))
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
})) {
|
|
1806
|
+
!(await phone_verify_js_1.PhoneVerify.verify(par.userData.phone, par.userData.verify_code_phone)) &&
|
|
1807
|
+
register_form.list.find((dd) => {
|
|
1808
|
+
return dd.key === 'phone' && `${dd.hidden}` !== 'true';
|
|
1809
|
+
})) {
|
|
1718
1810
|
throw exception_1.default.BadRequestError('BAD_REQUEST', 'Verify code error.', {
|
|
1719
1811
|
msg: 'phone-verify-false',
|
|
1720
1812
|
});
|
|
@@ -1763,6 +1855,117 @@ class User {
|
|
|
1763
1855
|
throw exception_1.default.BadRequestError(e.code || 'BAD_REQUEST', e.message, { data: userData });
|
|
1764
1856
|
}
|
|
1765
1857
|
}
|
|
1858
|
+
async batchGetUser(userId) {
|
|
1859
|
+
try {
|
|
1860
|
+
const sql = `SELECT * FROM \`${this.app}\`.t_user WHERE userID = ?`;
|
|
1861
|
+
const dataArray = [];
|
|
1862
|
+
const stack = {
|
|
1863
|
+
appName: this.app,
|
|
1864
|
+
taskId: tool_js_1.default.randomString(12),
|
|
1865
|
+
taskTag: 'batchGetUser',
|
|
1866
|
+
progress: 0,
|
|
1867
|
+
};
|
|
1868
|
+
update_progress_track_js_1.StackTracker.stack.push(stack);
|
|
1869
|
+
if (Array.isArray(userId) && userId.length > 0) {
|
|
1870
|
+
const chunkSize = 100;
|
|
1871
|
+
for (let i = 0; i < userId.length; i += chunkSize) {
|
|
1872
|
+
const size = i + chunkSize;
|
|
1873
|
+
const batch = userId.slice(i, size);
|
|
1874
|
+
await Promise.all(batch.map(async (id) => {
|
|
1875
|
+
const results = await database_1.default.query(sql, [database_1.default.escape(id)]);
|
|
1876
|
+
results.forEach((result) => delete result.pwd);
|
|
1877
|
+
dataArray.push(results);
|
|
1878
|
+
}));
|
|
1879
|
+
update_progress_track_js_1.StackTracker.setProgress(stack.taskId, update_progress_track_js_1.StackTracker.calcPercentage(size, userId.length));
|
|
1880
|
+
}
|
|
1881
|
+
}
|
|
1882
|
+
update_progress_track_js_1.StackTracker.clearProgress(stack.taskId);
|
|
1883
|
+
return dataArray.flat();
|
|
1884
|
+
}
|
|
1885
|
+
catch (error) {
|
|
1886
|
+
throw exception_1.default.BadRequestError('BAD_REQUEST', 'Batch get userData:' + error, null);
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
async batchUpdateUserData(trackName, users) {
|
|
1890
|
+
try {
|
|
1891
|
+
const stack = {
|
|
1892
|
+
appName: this.app,
|
|
1893
|
+
taskId: tool_js_1.default.randomString(12),
|
|
1894
|
+
taskTag: trackName,
|
|
1895
|
+
progress: 0,
|
|
1896
|
+
};
|
|
1897
|
+
update_progress_track_js_1.StackTracker.stack.push(stack);
|
|
1898
|
+
if (Array.isArray(users) && users.length > 0) {
|
|
1899
|
+
const chunkSize = 200;
|
|
1900
|
+
for (let i = 0; i < users.length; i += chunkSize) {
|
|
1901
|
+
const size = i + chunkSize;
|
|
1902
|
+
const batch = users.slice(i, size);
|
|
1903
|
+
update_progress_track_js_1.StackTracker.setProgress(stack.taskId, update_progress_track_js_1.StackTracker.calcPercentage(size, users.length));
|
|
1904
|
+
await Promise.all(batch.map(async (user) => {
|
|
1905
|
+
await new Promise(async (resolve) => {
|
|
1906
|
+
await this.updateUserData(user.id, user.data);
|
|
1907
|
+
setTimeout(() => resolve(true), 200);
|
|
1908
|
+
});
|
|
1909
|
+
}));
|
|
1910
|
+
}
|
|
1911
|
+
}
|
|
1912
|
+
update_progress_track_js_1.StackTracker.clearProgress(stack.taskId);
|
|
1913
|
+
return;
|
|
1914
|
+
}
|
|
1915
|
+
catch (error) {
|
|
1916
|
+
throw exception_1.default.BadRequestError('BAD_REQUEST', 'Batch update userData:' + error, null);
|
|
1917
|
+
}
|
|
1918
|
+
}
|
|
1919
|
+
async batchAddtag(userId, tags) {
|
|
1920
|
+
try {
|
|
1921
|
+
const users = await this.batchGetUser(userId);
|
|
1922
|
+
const updateData = users.map((item) => {
|
|
1923
|
+
item.userData.tags = item.userData.tags ? [...new Set([...item.userData.tags, ...tags])] : tags;
|
|
1924
|
+
return {
|
|
1925
|
+
id: item.userID,
|
|
1926
|
+
data: item,
|
|
1927
|
+
};
|
|
1928
|
+
});
|
|
1929
|
+
await this.batchUpdateUserData('batchAddtag', updateData);
|
|
1930
|
+
}
|
|
1931
|
+
catch (error) {
|
|
1932
|
+
throw exception_1.default.BadRequestError('BAD_REQUEST', 'Batch add tag:' + error, null);
|
|
1933
|
+
}
|
|
1934
|
+
}
|
|
1935
|
+
async batchRemovetag(userId, tags) {
|
|
1936
|
+
try {
|
|
1937
|
+
const users = await this.batchGetUser(userId);
|
|
1938
|
+
const postMap = new Map(tags.map(tag => [tag, true]));
|
|
1939
|
+
const updateData = users.map((item) => {
|
|
1940
|
+
item.userData.tags = item.userData.tags ? item.userData.tags.filter((tag) => !postMap.get(tag)) : [];
|
|
1941
|
+
return {
|
|
1942
|
+
id: item.userID,
|
|
1943
|
+
data: item,
|
|
1944
|
+
};
|
|
1945
|
+
});
|
|
1946
|
+
await this.batchUpdateUserData('batchRemovetag', updateData);
|
|
1947
|
+
}
|
|
1948
|
+
catch (error) {
|
|
1949
|
+
throw exception_1.default.BadRequestError('BAD_REQUEST', 'Batch remove tag:' + error, null);
|
|
1950
|
+
}
|
|
1951
|
+
}
|
|
1952
|
+
async batchManualLevel(userId, level) {
|
|
1953
|
+
try {
|
|
1954
|
+
const users = await this.batchGetUser(userId);
|
|
1955
|
+
const updateData = users.map((item) => {
|
|
1956
|
+
item.userData.level_status = 'manual';
|
|
1957
|
+
item.userData.level_default = level;
|
|
1958
|
+
return {
|
|
1959
|
+
id: item.userID,
|
|
1960
|
+
data: item,
|
|
1961
|
+
};
|
|
1962
|
+
});
|
|
1963
|
+
await this.batchUpdateUserData('batchManualLevel', updateData);
|
|
1964
|
+
}
|
|
1965
|
+
catch (error) {
|
|
1966
|
+
throw exception_1.default.BadRequestError('BAD_REQUEST', 'Batch manual level:' + error, null);
|
|
1967
|
+
}
|
|
1968
|
+
}
|
|
1766
1969
|
async clearUselessData(userData, manager) {
|
|
1767
1970
|
var _a, _b;
|
|
1768
1971
|
let config = await app_js_1.default.getAdConfig(this.app, 'glitterUserForm');
|