ts-glitter 20.4.6 → 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 +7 -4
- 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
|
@@ -32,6 +32,8 @@ import { ApiPublic } from './public-table-check.js';
|
|
|
32
32
|
import { UtTimer } from '../utils/ut-timer';
|
|
33
33
|
import { AutoFcm } from '../../public-config-initial/auto-fcm.js';
|
|
34
34
|
import { PhoneVerify } from './phone-verify.js';
|
|
35
|
+
import { StackTracker, Stack } from '../../update-progress-track.js';
|
|
36
|
+
import { InitialFakeData } from './initial-fake-data.js';
|
|
35
37
|
|
|
36
38
|
interface UserQuery {
|
|
37
39
|
page?: number;
|
|
@@ -166,9 +168,9 @@ export class User {
|
|
|
166
168
|
|
|
167
169
|
public async phoneVerify(account: string) {
|
|
168
170
|
const time: any = await redis.getValue(`verify-phone-${account}-last-time`);
|
|
169
|
-
let last_count: any = parseInt(`${(await redis.getValue(`verify-phone-${account}-last-count`)) || '0'}`,10);
|
|
171
|
+
let last_count: any = parseInt(`${(await redis.getValue(`verify-phone-${account}-last-count`)) || '0'}`, 10);
|
|
170
172
|
last_count++;
|
|
171
|
-
if(last_count>3){
|
|
173
|
+
if (last_count > 3) {
|
|
172
174
|
return {
|
|
173
175
|
out_limit: true,
|
|
174
176
|
};
|
|
@@ -1250,6 +1252,12 @@ export class User {
|
|
|
1250
1252
|
public async getUserList(query: UserQuery) {
|
|
1251
1253
|
try {
|
|
1252
1254
|
const checkPoint = new UtTimer('GET-USER-LIST').checkPoint;
|
|
1255
|
+
|
|
1256
|
+
// if (this.app === 't_1725992531001') {
|
|
1257
|
+
// await new InitialFakeData('t_1725992531001').run();
|
|
1258
|
+
// checkPoint('Run InitialFakeData');
|
|
1259
|
+
// }
|
|
1260
|
+
|
|
1253
1261
|
const orderCountingSQL = await this.getCheckoutCountingModeSQL();
|
|
1254
1262
|
const querySql: string[] = ['1=1'];
|
|
1255
1263
|
const noRegisterUsers: any[] = [];
|
|
@@ -1507,31 +1515,140 @@ export class User {
|
|
|
1507
1515
|
orderBy: query.order_string ?? '',
|
|
1508
1516
|
});
|
|
1509
1517
|
|
|
1510
|
-
const
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
dd.pwd = undefined;
|
|
1520
|
-
const find_level=levelData.find((d1:any)=>{
|
|
1521
|
-
return dd.member_level===d1.id;
|
|
1518
|
+
const processChunk = 1000;
|
|
1519
|
+
|
|
1520
|
+
const getUserQuery = async (param?: { page?: number; limit?: number }) => {
|
|
1521
|
+
const dataSQL = await this.getUserAndOrderSQL({
|
|
1522
|
+
select: 'o.email, o.order_count, o.total_amount, u.*, lo.last_order_total, lo.last_order_time',
|
|
1523
|
+
where: querySql,
|
|
1524
|
+
orderBy: query.order_string ?? '',
|
|
1525
|
+
page: param?.page,
|
|
1526
|
+
limit: param?.limit,
|
|
1522
1527
|
});
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1528
|
+
|
|
1529
|
+
const levelData = (await this.getConfigV2({ key: 'member_level_config', user_id: 'manager' })).levels ?? [];
|
|
1530
|
+
|
|
1531
|
+
const getUsers = (await db.query(dataSQL, [])).map((dd: any) => {
|
|
1532
|
+
dd.pwd = undefined;
|
|
1533
|
+
const find_level = levelData.find((d1: any) => {
|
|
1534
|
+
return dd.member_level === d1.id;
|
|
1535
|
+
});
|
|
1536
|
+
dd.tag_name = find_level ? find_level.tag_name : '一般會員';
|
|
1537
|
+
return dd;
|
|
1538
|
+
});
|
|
1539
|
+
checkPoint('getUsers');
|
|
1540
|
+
|
|
1541
|
+
if (param) {
|
|
1542
|
+
const dataArray = [];
|
|
1543
|
+
|
|
1544
|
+
for (let i = 0; i < getUsers.length; i += processChunk) {
|
|
1545
|
+
const data = await processUserData(getUsers.slice(i, i + processChunk));
|
|
1546
|
+
dataArray.push(data);
|
|
1547
|
+
checkPoint(`processUserData ${i}`);
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1550
|
+
return dataArray.flat();
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
return getUsers.map((user: any) => ({ userID: user.userID }));
|
|
1554
|
+
};
|
|
1555
|
+
|
|
1556
|
+
const processUserData = async (userData: any) => {
|
|
1557
|
+
// 會員等級 Map
|
|
1558
|
+
const levels = await this.getUserLevel(userData.map((user: any) => ({ userId: user.userID })));
|
|
1559
|
+
const levelMap = new Map(levels.map(lv => [lv.id, lv.data.dead_line ?? '']));
|
|
1560
|
+
checkPoint('levels');
|
|
1561
|
+
|
|
1562
|
+
const mapUser = async (user: any) => {
|
|
1563
|
+
const phone = user.userData.phone || 'asnhsauh';
|
|
1564
|
+
const email = user.userData.email || 'asnhsauh';
|
|
1565
|
+
|
|
1566
|
+
// 取得購物金餘額
|
|
1567
|
+
const userRebate = await new Rebate(this.app).getOneRebate({
|
|
1568
|
+
user_id: user.userID,
|
|
1569
|
+
quickPass: true,
|
|
1570
|
+
});
|
|
1571
|
+
user.rebate = userRebate ? userRebate.point : 0;
|
|
1572
|
+
|
|
1573
|
+
// 取得會員等級截止日
|
|
1574
|
+
user.member_deadline = levelMap.get(user.userID) ?? '';
|
|
1575
|
+
user.latest_order_date = (
|
|
1576
|
+
await db.query(
|
|
1577
|
+
`select created_time
|
|
1578
|
+
from \`${this.app}\`.t_checkout
|
|
1579
|
+
where email in ('${email}', '${phone}')
|
|
1580
|
+
and ${orderCountingSQL}
|
|
1581
|
+
order by created_time desc limit 0,1`,
|
|
1582
|
+
[]
|
|
1583
|
+
)
|
|
1584
|
+
)[0];
|
|
1585
|
+
user.latest_order_date = user.latest_order_date && user.latest_order_date.created_time;
|
|
1586
|
+
user.latest_order_total = (
|
|
1587
|
+
await db.query(
|
|
1588
|
+
`select total
|
|
1589
|
+
from \`${this.app}\`.t_checkout
|
|
1590
|
+
where email in ('${email}', '${phone}')
|
|
1591
|
+
and ${orderCountingSQL}
|
|
1592
|
+
order by created_time desc limit 0,1`,
|
|
1593
|
+
[]
|
|
1594
|
+
)
|
|
1595
|
+
)[0];
|
|
1596
|
+
user.latest_order_total = user.latest_order_total && user.latest_order_total.total;
|
|
1597
|
+
user.checkout_total = (
|
|
1598
|
+
await db.query(
|
|
1599
|
+
`select sum(total)
|
|
1600
|
+
from \`${this.app}\`.t_checkout
|
|
1601
|
+
where email in ('${email}', '${phone}')
|
|
1602
|
+
and ${orderCountingSQL} `,
|
|
1603
|
+
[]
|
|
1604
|
+
)
|
|
1605
|
+
)[0];
|
|
1606
|
+
user.checkout_total = user.checkout_total && user.checkout_total['sum(total)'];
|
|
1607
|
+
user.checkout_count = (
|
|
1608
|
+
await db.query(
|
|
1609
|
+
`select count(1)
|
|
1610
|
+
from \`${this.app}\`.t_checkout
|
|
1611
|
+
where email in ('${email}', '${phone}')
|
|
1612
|
+
and ${orderCountingSQL} `,
|
|
1613
|
+
[]
|
|
1614
|
+
)
|
|
1615
|
+
)[0];
|
|
1616
|
+
user.checkout_count = user.checkout_count && user.checkout_count['count(1)'];
|
|
1617
|
+
user.last_order_total = user.last_order_total || 0;
|
|
1618
|
+
user.order_count = user.order_count || 0;
|
|
1619
|
+
user.total_amount = user.total_amount || 0;
|
|
1620
|
+
};
|
|
1621
|
+
|
|
1622
|
+
// 批次處理會員資料
|
|
1623
|
+
|
|
1624
|
+
if (Array.isArray(userData) && userData.length > 0) {
|
|
1625
|
+
const chunkSize = 100;
|
|
1626
|
+
|
|
1627
|
+
for (let i = 0; i < userData.length; i += chunkSize) {
|
|
1628
|
+
const batch = userData.slice(i, i + chunkSize);
|
|
1629
|
+
await Promise.all(
|
|
1630
|
+
batch.map(async (user: any) => {
|
|
1631
|
+
await mapUser(user);
|
|
1632
|
+
checkPoint('mapUser');
|
|
1633
|
+
})
|
|
1634
|
+
);
|
|
1635
|
+
}
|
|
1636
|
+
}
|
|
1637
|
+
|
|
1638
|
+
return userData;
|
|
1639
|
+
};
|
|
1640
|
+
|
|
1641
|
+
const [pageUsers, allUsers] = await Promise.all([
|
|
1642
|
+
getUserQuery({ page: query.page, limit: query.limit }),
|
|
1643
|
+
query.all_result ? getUserQuery() : [],
|
|
1644
|
+
]);
|
|
1645
|
+
checkPoint('return data');
|
|
1646
|
+
|
|
1532
1647
|
return {
|
|
1533
1648
|
// 指定頁數和符合篩選條件的會員資料
|
|
1534
|
-
data:
|
|
1649
|
+
data: pageUsers,
|
|
1650
|
+
// 所有符合篩選條件的會員資料
|
|
1651
|
+
...(allUsers.length > 0 ? { allUsers } : {}),
|
|
1535
1652
|
// 所有符合篩選條件的會員數量
|
|
1536
1653
|
total: (await db.query(countSQL, []))[0]['count(1)'],
|
|
1537
1654
|
// 額外資料(例如未註冊的訂閱者資料)
|
|
@@ -1696,13 +1813,22 @@ export class User {
|
|
|
1696
1813
|
if (existNormalTag || existZeroValue) {
|
|
1697
1814
|
return levelList;
|
|
1698
1815
|
}
|
|
1699
|
-
|
|
1816
|
+
|
|
1817
|
+
const formatLevelList = levelList.map((item: any) => {
|
|
1818
|
+
item.index++;
|
|
1819
|
+
return item;
|
|
1820
|
+
});
|
|
1821
|
+
return [this.normalMember, ...formatLevelList];
|
|
1700
1822
|
}
|
|
1701
1823
|
|
|
1702
1824
|
private async filterMemberUpdates(idList: string[]): Promise<any[]> {
|
|
1703
1825
|
try {
|
|
1704
1826
|
const memberUpdates: any[] = [];
|
|
1705
1827
|
|
|
1828
|
+
if (idList.length === 0) {
|
|
1829
|
+
return [];
|
|
1830
|
+
}
|
|
1831
|
+
|
|
1706
1832
|
if (idList.length > 10000) {
|
|
1707
1833
|
const idSetArray = [...new Set(idList)];
|
|
1708
1834
|
const idMap = new Map();
|
|
@@ -1757,14 +1883,11 @@ export class User {
|
|
|
1757
1883
|
}
|
|
1758
1884
|
}
|
|
1759
1885
|
|
|
1760
|
-
private async setLevelData(user: any, memberUpdates: any,
|
|
1886
|
+
private async setLevelData(user: any, quickPass: boolean, memberUpdates: any, levelList: any) {
|
|
1761
1887
|
const { userID, userData } = user;
|
|
1762
1888
|
const { level_status, level_default, email } = userData;
|
|
1763
1889
|
|
|
1764
|
-
const levelList = levelConfig ?? (await this.getLevelConfig());
|
|
1765
|
-
|
|
1766
1890
|
const normalMember = levelList[0] ?? this.normalMember;
|
|
1767
|
-
|
|
1768
1891
|
const normalData = {
|
|
1769
1892
|
id: normalMember.id,
|
|
1770
1893
|
og: normalMember,
|
|
@@ -1784,6 +1907,35 @@ export class User {
|
|
|
1784
1907
|
};
|
|
1785
1908
|
}
|
|
1786
1909
|
|
|
1910
|
+
// 啟用快速通關處理會員等級
|
|
1911
|
+
if (quickPass) {
|
|
1912
|
+
const index = user.member_level ? levelList.findIndex((level: any) => level.id === user.member_level) : 0;
|
|
1913
|
+
const getLevel = levelList[index];
|
|
1914
|
+
|
|
1915
|
+
const formatData = {
|
|
1916
|
+
id: getLevel.id,
|
|
1917
|
+
og: {
|
|
1918
|
+
id: getLevel.id,
|
|
1919
|
+
index: index,
|
|
1920
|
+
duration: getLevel.duration,
|
|
1921
|
+
tag_name: getLevel.tag_name,
|
|
1922
|
+
condition: getLevel.condition,
|
|
1923
|
+
dead_line: getLevel.dead_line,
|
|
1924
|
+
create_date: getLevel.create_date,
|
|
1925
|
+
},
|
|
1926
|
+
trigger: true,
|
|
1927
|
+
tag_name: getLevel.tag_name,
|
|
1928
|
+
dead_line: '',
|
|
1929
|
+
};
|
|
1930
|
+
|
|
1931
|
+
return {
|
|
1932
|
+
id: userID,
|
|
1933
|
+
email,
|
|
1934
|
+
status: 'auto',
|
|
1935
|
+
data: formatData,
|
|
1936
|
+
};
|
|
1937
|
+
}
|
|
1938
|
+
|
|
1787
1939
|
// 處理自動等級
|
|
1788
1940
|
if (memberUpdates.length > 0) {
|
|
1789
1941
|
const matchedUpdates = await this.checkMember(user, false);
|
|
@@ -1821,6 +1973,8 @@ export class User {
|
|
|
1821
1973
|
status: 'auto' | 'manual';
|
|
1822
1974
|
}[]
|
|
1823
1975
|
> {
|
|
1976
|
+
const utTimer = new UtTimer('getUserLevel');
|
|
1977
|
+
|
|
1824
1978
|
const idList: string[] = data
|
|
1825
1979
|
.filter(item => Boolean(item.userId))
|
|
1826
1980
|
.map(item => `${item.userId}`)
|
|
@@ -1843,27 +1997,21 @@ export class User {
|
|
|
1843
1997
|
|
|
1844
1998
|
if (!users || users.length == 0) return [];
|
|
1845
1999
|
|
|
1846
|
-
const chunk =
|
|
1847
|
-
const chunkArray = [];
|
|
2000
|
+
const chunk = 20;
|
|
1848
2001
|
const dataList: any = [];
|
|
1849
2002
|
const levelConfig = await this.getLevelConfig();
|
|
1850
2003
|
const memberUpdates = await this.filterMemberUpdates(idList);
|
|
1851
2004
|
|
|
1852
2005
|
for (let i = 0; i < users.length; i += chunk) {
|
|
1853
|
-
|
|
2006
|
+
const userArray = users.slice(i, i + chunk);
|
|
2007
|
+
await Promise.all(
|
|
2008
|
+
userArray.map(async (user: any) => {
|
|
2009
|
+
const userData = await this.setLevelData(user, users.length > 100, memberUpdates, levelConfig);
|
|
2010
|
+
dataList.push(userData);
|
|
2011
|
+
})
|
|
2012
|
+
);
|
|
1854
2013
|
}
|
|
1855
2014
|
|
|
1856
|
-
await Promise.all(
|
|
1857
|
-
chunkArray.map(async userArray => {
|
|
1858
|
-
await Promise.all(
|
|
1859
|
-
userArray.map(async (user: any) => {
|
|
1860
|
-
const userData = await this.setLevelData(user, memberUpdates, levelConfig);
|
|
1861
|
-
dataList.push(userData);
|
|
1862
|
-
})
|
|
1863
|
-
);
|
|
1864
|
-
})
|
|
1865
|
-
);
|
|
1866
|
-
|
|
1867
2015
|
return dataList;
|
|
1868
2016
|
}
|
|
1869
2017
|
|
|
@@ -2119,8 +2267,7 @@ export class User {
|
|
|
2119
2267
|
}
|
|
2120
2268
|
if (
|
|
2121
2269
|
login_config.phone_verify &&
|
|
2122
|
-
!(await PhoneVerify.verify(par.userData.phone, par.userData.verify_code_phone))
|
|
2123
|
-
&&
|
|
2270
|
+
!(await PhoneVerify.verify(par.userData.phone, par.userData.verify_code_phone)) &&
|
|
2124
2271
|
register_form.list.find((dd: any) => {
|
|
2125
2272
|
return dd.key === 'phone' && `${dd.hidden}` !== 'true';
|
|
2126
2273
|
})
|
|
@@ -2192,6 +2339,139 @@ export class User {
|
|
|
2192
2339
|
}
|
|
2193
2340
|
}
|
|
2194
2341
|
|
|
2342
|
+
public async batchGetUser(userId: string[]) {
|
|
2343
|
+
try {
|
|
2344
|
+
const sql = `SELECT * FROM \`${this.app}\`.t_user WHERE userID = ?`;
|
|
2345
|
+
const dataArray: any = [];
|
|
2346
|
+
|
|
2347
|
+
const stack: Stack = {
|
|
2348
|
+
appName: this.app,
|
|
2349
|
+
taskId: Tool.randomString(12),
|
|
2350
|
+
taskTag: 'batchGetUser',
|
|
2351
|
+
progress: 0,
|
|
2352
|
+
};
|
|
2353
|
+
|
|
2354
|
+
StackTracker.stack.push(stack);
|
|
2355
|
+
|
|
2356
|
+
if (Array.isArray(userId) && userId.length > 0) {
|
|
2357
|
+
const chunkSize = 100;
|
|
2358
|
+
for (let i = 0; i < userId.length; i += chunkSize) {
|
|
2359
|
+
const size = i + chunkSize;
|
|
2360
|
+
const batch = userId.slice(i, size);
|
|
2361
|
+
await Promise.all(
|
|
2362
|
+
batch.map(async id => {
|
|
2363
|
+
const results = await db.query(sql, [db.escape(id)]);
|
|
2364
|
+
results.forEach((result: any) => delete result.pwd);
|
|
2365
|
+
dataArray.push(results);
|
|
2366
|
+
})
|
|
2367
|
+
);
|
|
2368
|
+
StackTracker.setProgress(stack.taskId, StackTracker.calcPercentage(size, userId.length));
|
|
2369
|
+
}
|
|
2370
|
+
}
|
|
2371
|
+
|
|
2372
|
+
StackTracker.clearProgress(stack.taskId);
|
|
2373
|
+
|
|
2374
|
+
return dataArray.flat();
|
|
2375
|
+
} catch (error) {
|
|
2376
|
+
throw exception.BadRequestError('BAD_REQUEST', 'Batch get userData:' + error, null);
|
|
2377
|
+
}
|
|
2378
|
+
}
|
|
2379
|
+
|
|
2380
|
+
public async batchUpdateUserData(trackName: string, users: { id: string; data: any }[]) {
|
|
2381
|
+
try {
|
|
2382
|
+
const stack: Stack = {
|
|
2383
|
+
appName: this.app as string,
|
|
2384
|
+
taskId: Tool.randomString(12),
|
|
2385
|
+
taskTag: trackName,
|
|
2386
|
+
progress: 0,
|
|
2387
|
+
};
|
|
2388
|
+
|
|
2389
|
+
StackTracker.stack.push(stack);
|
|
2390
|
+
|
|
2391
|
+
if (Array.isArray(users) && users.length > 0) {
|
|
2392
|
+
const chunkSize = 200;
|
|
2393
|
+
for (let i = 0; i < users.length; i += chunkSize) {
|
|
2394
|
+
const size = i + chunkSize;
|
|
2395
|
+
const batch = users.slice(i, size);
|
|
2396
|
+
StackTracker.setProgress(stack.taskId, StackTracker.calcPercentage(size, users.length));
|
|
2397
|
+
await Promise.all(
|
|
2398
|
+
batch.map(async user => {
|
|
2399
|
+
await new Promise(async resolve => {
|
|
2400
|
+
await this.updateUserData(user.id, user.data);
|
|
2401
|
+
setTimeout(() => resolve(true), 200);
|
|
2402
|
+
});
|
|
2403
|
+
})
|
|
2404
|
+
);
|
|
2405
|
+
}
|
|
2406
|
+
}
|
|
2407
|
+
|
|
2408
|
+
StackTracker.clearProgress(stack.taskId);
|
|
2409
|
+
|
|
2410
|
+
return;
|
|
2411
|
+
} catch (error) {
|
|
2412
|
+
throw exception.BadRequestError('BAD_REQUEST', 'Batch update userData:' + error, null);
|
|
2413
|
+
}
|
|
2414
|
+
}
|
|
2415
|
+
|
|
2416
|
+
public async batchAddtag(userId: string[], tags: string[]) {
|
|
2417
|
+
try {
|
|
2418
|
+
const users = await this.batchGetUser(userId);
|
|
2419
|
+
|
|
2420
|
+
const updateData = users.map((item: any) => {
|
|
2421
|
+
item.userData.tags = item.userData.tags ? [...new Set([...item.userData.tags, ...tags])] : tags;
|
|
2422
|
+
|
|
2423
|
+
return {
|
|
2424
|
+
id: item.userID,
|
|
2425
|
+
data: item,
|
|
2426
|
+
};
|
|
2427
|
+
});
|
|
2428
|
+
|
|
2429
|
+
await this.batchUpdateUserData('batchAddtag', updateData);
|
|
2430
|
+
} catch (error) {
|
|
2431
|
+
throw exception.BadRequestError('BAD_REQUEST', 'Batch add tag:' + error, null);
|
|
2432
|
+
}
|
|
2433
|
+
}
|
|
2434
|
+
|
|
2435
|
+
public async batchRemovetag(userId: string[], tags: string[]) {
|
|
2436
|
+
try {
|
|
2437
|
+
const users = await this.batchGetUser(userId);
|
|
2438
|
+
const postMap: Map<string, boolean> = new Map(tags.map(tag => [tag, true]));
|
|
2439
|
+
|
|
2440
|
+
const updateData = users.map((item: any) => {
|
|
2441
|
+
item.userData.tags = item.userData.tags ? item.userData.tags.filter((tag: string) => !postMap.get(tag)) : [];
|
|
2442
|
+
|
|
2443
|
+
return {
|
|
2444
|
+
id: item.userID,
|
|
2445
|
+
data: item,
|
|
2446
|
+
};
|
|
2447
|
+
});
|
|
2448
|
+
|
|
2449
|
+
await this.batchUpdateUserData('batchRemovetag', updateData);
|
|
2450
|
+
} catch (error) {
|
|
2451
|
+
throw exception.BadRequestError('BAD_REQUEST', 'Batch remove tag:' + error, null);
|
|
2452
|
+
}
|
|
2453
|
+
}
|
|
2454
|
+
|
|
2455
|
+
public async batchManualLevel(userId: string[], level: string[]) {
|
|
2456
|
+
try {
|
|
2457
|
+
const users = await this.batchGetUser(userId);
|
|
2458
|
+
|
|
2459
|
+
const updateData = users.map((item: any) => {
|
|
2460
|
+
item.userData.level_status = 'manual';
|
|
2461
|
+
item.userData.level_default = level;
|
|
2462
|
+
|
|
2463
|
+
return {
|
|
2464
|
+
id: item.userID,
|
|
2465
|
+
data: item,
|
|
2466
|
+
};
|
|
2467
|
+
});
|
|
2468
|
+
|
|
2469
|
+
await this.batchUpdateUserData('batchManualLevel', updateData);
|
|
2470
|
+
} catch (error) {
|
|
2471
|
+
throw exception.BadRequestError('BAD_REQUEST', 'Batch manual level:' + error, null);
|
|
2472
|
+
}
|
|
2473
|
+
}
|
|
2474
|
+
|
|
2195
2475
|
public async clearUselessData(userData: any, manager: boolean) {
|
|
2196
2476
|
let config = await App.getAdConfig(this.app, 'glitterUserForm');
|
|
2197
2477
|
let register_form =
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voucher.js","sourceRoot":"","sources":["voucher.ts"],"names":[],"mappings":";;;;;;AAAA,+CAAyC;AACzC,4EAA2C;AAC3C,8EAAmD;AAGnD,MAAa,OAAO;IAIhB,YAAY,QAAgB,EAAE,KAAa;QACvC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAY;QAChC,IAAI;
|
|
1
|
+
{"version":3,"file":"voucher.js","sourceRoot":"","sources":["voucher.ts"],"names":[],"mappings":";;;;;;AAAA,+CAAyC;AACzC,4EAA2C;AAC3C,8EAAmD;AAGnD,MAAa,OAAO;IAIhB,YAAY,QAAgB,EAAE,KAAa;QACvC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAY;QAChC,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,IAAI,sBAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;gBAC9E,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,qBAAE,CAAC,KAAK,CACvB,YAAY,IAAI,CAAC,GAAG;;;8BAGN,SAAS,CAAC,EAAE,EAAE,EAC5B,CAAC,OAAO,CAAC,CACZ,CAAC;YACF,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,sBAAS,CAAC,eAAe,CAAC,aAAa,EAAE,mBAAmB,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAClF,CAAC;IACL,CAAC;CACJ;AA7BD,0BA6BC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workers.js","sourceRoot":"","sources":["workers.ts"],"names":[],"mappings":";;;;;;AAAA,6DAAmC;AACnC,0DAAkC;AAClC,8EAAmD;AACnD,mDAAgE;AAOhE,2BAAU,aAAV,2BAAU,uBAAV,2BAAU,CAAE,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACrC,IAAI;
|
|
1
|
+
{"version":3,"file":"workers.js","sourceRoot":"","sources":["workers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ut-permission.js","sourceRoot":"","sources":["ut-permission.ts"],"names":[],"mappings":";;;;;;AACA,4EAA2C;AAC3C,+CAA6C;AAG7C,MAAa,YAAY;IACd,MAAM,CAAC,SAAS,CAAC,GAAoB;QACxC,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,IAAI;
|
|
1
|
+
{"version":3,"file":"ut-permission.js","sourceRoot":"","sources":["ut-permission.ts"],"names":[],"mappings":";;;;;;AACA,4EAA2C;AAC3C,+CAA6C;AAG7C,MAAa,YAAY;IACd,MAAM,CAAC,SAAS,CAAC,GAAoB;QACxC,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,IAAI,CAAC;gBACD,MAAM,OAAO,GAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAY,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;gBACtF,MAAM,MAAM,GAAG,MAAM,qBAAE,CAAC,KAAK,CACzB;2BACO,sBAAU,CAAC,SAAS;;;;qDAIM,sBAAU,CAAC,SAAS;;;qBAGpD,EACD,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CACnE,CAAC;gBACF,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACM,MAAM,CAAC,mBAAmB,CAAC,QAAgB,EAAE,OAAe;QAC/D,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,qBAAE,CAAC,KAAK,CACzB;2BACO,sBAAU,CAAC,SAAS;;;;qDAIM,sBAAU,CAAC,SAAS;;;qBAGpD,EACD,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CACzC,CAAC;gBACF,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,GAAoB;QACxC,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,IAAI,CAAC;gBACD,OAAO,CACH,CACI,MAAM,qBAAE,CAAC,KAAK,CACV;sCACU,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;8CACR,EAClB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAC1B,CACJ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CACxB,CAAC;YACN,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA/DD,oCA+DC"}
|
package/src/config.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export declare const config: {
|
|
|
38
38
|
readonly sshIP: string | undefined;
|
|
39
39
|
readonly AWS_S3_PREFIX_DOMAIN_NAME: string;
|
|
40
40
|
readonly SINGLE_TYPE: boolean;
|
|
41
|
-
getRoute: (r: string, type?:
|
|
41
|
+
getRoute: (r: string, type?: "public" | "normal") => string;
|
|
42
42
|
public_route: {
|
|
43
43
|
user: string;
|
|
44
44
|
invoice: string;
|
|
@@ -71,6 +71,7 @@ export declare const config: {
|
|
|
71
71
|
voucher: string;
|
|
72
72
|
reconciliation: string;
|
|
73
73
|
fb: string;
|
|
74
|
+
progress: string;
|
|
74
75
|
};
|
|
75
76
|
route: {
|
|
76
77
|
shopee: string;
|
package/src/config.js
CHANGED
package/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["config.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AACb,gDAAwB;AACxB,oDAA4B;AAC5B,sDAA8B;AAE9B,MAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["config.ts"],"names":[],"mappings":"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"}
|