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
|
@@ -1,408 +1,125 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { faker } from '@faker-js/faker';
|
|
2
|
+
import tool from '../../../modules/tool';
|
|
2
3
|
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"userData": {
|
|
18
|
-
"name": "王雅筑",
|
|
19
|
-
"email": "laiyan@xie.org",
|
|
20
|
-
"phone": "079 80649448",
|
|
21
|
-
"address": "151 北竿民富街7號5樓"
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"userID": 721915421,
|
|
26
|
-
"account": "wenjun@duan.net",
|
|
27
|
-
"userData": {
|
|
28
|
-
"name": "區筱涵",
|
|
29
|
-
"email": "maogang@hotmail.com",
|
|
30
|
-
"phone": "05 3667675",
|
|
31
|
-
"address": "421 永和德巷6號0樓"
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"userID": 883970641,
|
|
36
|
-
"account": "wmo@gmail.com",
|
|
37
|
-
"userData": {
|
|
38
|
-
"name": "楊馨儀",
|
|
39
|
-
"email": "vxiao@yuan.com",
|
|
40
|
-
"phone": "06 4378949",
|
|
41
|
-
"address": "61451 新竹自由街522號0樓"
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"userID": 585116688,
|
|
46
|
-
"account": "guiyingzhao@liu.tw",
|
|
47
|
-
"userData": {
|
|
48
|
-
"name": "林欣怡",
|
|
49
|
-
"email": "chao34@hotmail.com",
|
|
50
|
-
"phone": "(00) 53833705",
|
|
51
|
-
"address": "11709 楊梅復興巷34號2樓"
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"userID": 442761262,
|
|
56
|
-
"account": "taopeng@yi.com",
|
|
57
|
-
"userData": {
|
|
58
|
-
"name": "段心怡",
|
|
59
|
-
"email": "xia87@zou.org",
|
|
60
|
-
"phone": "064 70127794",
|
|
61
|
-
"address": "533 太保市延平巷8號之5"
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
"userID": 268443530,
|
|
66
|
-
"account": "jren@hotmail.com",
|
|
67
|
-
"userData": {
|
|
68
|
-
"name": "陳筱涵",
|
|
69
|
-
"email": "taofu@wu.tw",
|
|
70
|
-
"phone": "09-4250063",
|
|
71
|
-
"address": "15219 竹田象山路312號之1"
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
"userID": 152436798,
|
|
76
|
-
"account": "pinghao@hotmail.com",
|
|
77
|
-
"userData": {
|
|
78
|
-
"name": "方慧君",
|
|
79
|
-
"email": "qtan@qiao.tw",
|
|
80
|
-
"phone": "0999-580472",
|
|
81
|
-
"address": "517 卑南市新店街1段8號5樓"
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"userID": 886107062,
|
|
86
|
-
"account": "shenqiang@yahoo.com",
|
|
87
|
-
"userData": {
|
|
88
|
-
"name": "尚瑋婷",
|
|
89
|
-
"email": "edai@hotmail.com",
|
|
90
|
-
"phone": "04-51581793",
|
|
91
|
-
"address": "750 阿里山市新生巷73號之8"
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"userID": 839614602,
|
|
96
|
-
"account": "jie56@zeng.org",
|
|
97
|
-
"userData": {
|
|
98
|
-
"name": "鄭雅玲",
|
|
99
|
-
"email": "kcai@kong.com",
|
|
100
|
-
"phone": "0928-659383",
|
|
101
|
-
"address": "27072 太平象山路896號之6"
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
"userID": 296639113,
|
|
106
|
-
"account": "lei48@cai.tw",
|
|
107
|
-
"userData": {
|
|
108
|
-
"name": "藍俊賢",
|
|
109
|
-
"email": "shenxiulan@yahoo.com",
|
|
110
|
-
"phone": "0998-246847",
|
|
111
|
-
"address": "518 台南縣福德路1段854號之9"
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
"userID": 594450314,
|
|
116
|
-
"account": "naxiao@zhong.com",
|
|
117
|
-
"userData": {
|
|
118
|
-
"name": "陳俊宏",
|
|
119
|
-
"email": "lei80@chen.com",
|
|
120
|
-
"phone": "03-7355758",
|
|
121
|
-
"address": "224 褒忠興路4段5號之0"
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
"userID": 571743035,
|
|
126
|
-
"account": "yanpan@gmail.com",
|
|
127
|
-
"userData": {
|
|
128
|
-
"name": "朱俊傑",
|
|
129
|
-
"email": "liwan@yahoo.com",
|
|
130
|
-
"phone": "07-27252128",
|
|
131
|
-
"address": "199 白沙縣文昌巷5號之3"
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
"userID": 275242882,
|
|
136
|
-
"account": "dtang@hotmail.com",
|
|
137
|
-
"userData": {
|
|
138
|
-
"name": "陳志宏",
|
|
139
|
-
"email": "gongtao@lu.com",
|
|
140
|
-
"phone": "031 39522022",
|
|
141
|
-
"address": "838 頭份市昆陽街5號3樓"
|
|
142
|
-
}
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
"userID": 800201543,
|
|
146
|
-
"account": "nyi@han.tw",
|
|
147
|
-
"userData": {
|
|
148
|
-
"name": "萬志偉",
|
|
149
|
-
"email": "guiying19@hotmail.com",
|
|
150
|
-
"phone": "0939-570967",
|
|
151
|
-
"address": "10909 基隆關渡巷827號之1"
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
"userID": 209347859,
|
|
156
|
-
"account": "ping97@gmail.com",
|
|
157
|
-
"userData": {
|
|
158
|
-
"name": "李怡伶",
|
|
159
|
-
"email": "juan08@fu.tw",
|
|
160
|
-
"phone": "(02) 70429217",
|
|
161
|
-
"address": "678 苗栗四維巷633號5樓"
|
|
162
|
-
}
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
"userID": 896423437,
|
|
166
|
-
"account": "dongmin@gmail.com",
|
|
167
|
-
"userData": {
|
|
168
|
-
"name": "李宜君",
|
|
169
|
-
"email": "taogang@zeng.org",
|
|
170
|
-
"phone": "06-2737923",
|
|
171
|
-
"address": "82379 卑南新莊巷114號之5"
|
|
172
|
-
}
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
"userID": 896718329,
|
|
176
|
-
"account": "jing34@qian.org",
|
|
177
|
-
"userData": {
|
|
178
|
-
"name": "趙家瑋",
|
|
179
|
-
"email": "fengli@liao.com",
|
|
180
|
-
"phone": "0943748214",
|
|
181
|
-
"address": "196 南投文化路4號之0"
|
|
182
|
-
}
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
"userID": 230314524,
|
|
186
|
-
"account": "leina@gao.com",
|
|
187
|
-
"userData": {
|
|
188
|
-
"name": "沈宇軒",
|
|
189
|
-
"email": "dongming@hotmail.com",
|
|
190
|
-
"phone": "064 82345461",
|
|
191
|
-
"address": "62005 板橋文昌巷16號8樓"
|
|
192
|
-
}
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
"userID": 706890450,
|
|
196
|
-
"account": "maojun@hotmail.com",
|
|
197
|
-
"userData": {
|
|
198
|
-
"name": "許淑慧",
|
|
199
|
-
"email": "lifu@yahoo.com",
|
|
200
|
-
"phone": "03-3904055",
|
|
201
|
-
"address": "83928 豐原石牌路812號之5"
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
].map((dd:any)=>{
|
|
205
|
-
dd.created_time=formatDate(getRandomDateInLastYear())
|
|
206
|
-
dd.online_time=dd.created_time
|
|
207
|
-
return dd
|
|
208
|
-
}).concat([ {
|
|
209
|
-
"userID": 533088504,
|
|
210
|
-
"account": "qiang21@gmail.com",
|
|
211
|
-
"userData": {
|
|
212
|
-
"name": "孫俊傑",
|
|
213
|
-
"email": "pingsong@hotmail.com",
|
|
214
|
-
"phone": "08 3492612",
|
|
215
|
-
"address": "39055 雲林市南街728號2樓"
|
|
216
|
-
}
|
|
217
|
-
},
|
|
218
|
-
{
|
|
219
|
-
"userID": 751423210,
|
|
220
|
-
"account": "xiuying06@jin.org",
|
|
221
|
-
"userData": {
|
|
222
|
-
"name": "楊依婷",
|
|
223
|
-
"email": "jie28@yahoo.com",
|
|
224
|
-
"phone": "02 9986338",
|
|
225
|
-
"address": "111 牡丹民富路66號6樓"
|
|
226
|
-
}
|
|
227
|
-
},
|
|
228
|
-
{
|
|
229
|
-
"userID": 860563659,
|
|
230
|
-
"account": "ming22@fu.tw",
|
|
231
|
-
"userData": {
|
|
232
|
-
"name": "盛宜庭",
|
|
233
|
-
"email": "dmeng@yahoo.com",
|
|
234
|
-
"phone": "00 7083391",
|
|
235
|
-
"address": "191 關山延平街32號8樓"
|
|
236
|
-
}
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
"userID": 929032544,
|
|
240
|
-
"account": "yumin@gmail.com",
|
|
241
|
-
"userData": {
|
|
242
|
-
"name": "李淑玲",
|
|
243
|
-
"email": "xiuyingxiong@hotmail.com",
|
|
244
|
-
"phone": "09 2811247",
|
|
245
|
-
"address": "72990 關山縣民富街2號之0"
|
|
246
|
-
}
|
|
247
|
-
},
|
|
248
|
-
{
|
|
249
|
-
"userID": 668276258,
|
|
250
|
-
"account": "oliang@tao.tw",
|
|
251
|
-
"userData": {
|
|
252
|
-
"name": "顧惠如",
|
|
253
|
-
"email": "yan02@yahoo.com",
|
|
254
|
-
"phone": "0991076610",
|
|
255
|
-
"address": "775 斗六市民享街86號6樓"
|
|
256
|
-
}
|
|
257
|
-
},
|
|
258
|
-
{
|
|
259
|
-
"userID": 195779643,
|
|
260
|
-
"account": "xia26@yahoo.com",
|
|
261
|
-
"userData": {
|
|
262
|
-
"name": "李怡萱",
|
|
263
|
-
"email": "yangwan@yuan.com",
|
|
264
|
-
"phone": "014 56652773",
|
|
265
|
-
"address": "21436 關山頂福州街4段830號8樓"
|
|
266
|
-
}
|
|
267
|
-
},
|
|
268
|
-
{
|
|
269
|
-
"userID": 186030320,
|
|
270
|
-
"account": "guofang@su.com",
|
|
271
|
-
"userData": {
|
|
272
|
-
"name": "谷雅筑",
|
|
273
|
-
"email": "qiang85@yahoo.com",
|
|
274
|
-
"phone": "08-25166632",
|
|
275
|
-
"address": "765 樹林中山街1號之8"
|
|
276
|
-
}
|
|
277
|
-
},
|
|
278
|
-
{
|
|
279
|
-
"userID": 556053034,
|
|
280
|
-
"account": "yanzhu@cui.tw",
|
|
281
|
-
"userData": {
|
|
282
|
-
"name": "封佳樺",
|
|
283
|
-
"email": "ibai@gmail.com",
|
|
284
|
-
"phone": "07 3630810",
|
|
285
|
-
"address": "22082 蘆竹市勝利巷0號7樓"
|
|
286
|
-
}
|
|
287
|
-
},
|
|
288
|
-
{
|
|
289
|
-
"userID": 728465781,
|
|
290
|
-
"account": "jfang@hotmail.com",
|
|
291
|
-
"userData": {
|
|
292
|
-
"name": "淩俊宏",
|
|
293
|
-
"email": "ajin@fan.com",
|
|
294
|
-
"phone": "02-4998536",
|
|
295
|
-
"address": "93245 太保市仁愛巷32號0樓"
|
|
296
|
-
}
|
|
297
|
-
},
|
|
298
|
-
{
|
|
299
|
-
"userID": 491526415,
|
|
300
|
-
"account": "min11@yahoo.com",
|
|
301
|
-
"userData": {
|
|
302
|
-
"name": "楊淑貞",
|
|
303
|
-
"email": "fang31@duan.com",
|
|
304
|
-
"phone": "0947-090015",
|
|
305
|
-
"address": "21281 蘆洲市關渡路118號之7"
|
|
306
|
-
}
|
|
307
|
-
},
|
|
308
|
-
{
|
|
309
|
-
"userID": 118825806,
|
|
310
|
-
"account": "lei45@tao.tw",
|
|
311
|
-
"userData": {
|
|
312
|
-
"name": "薛惠婷",
|
|
313
|
-
"email": "yan70@yahoo.com",
|
|
314
|
-
"phone": "056 97442826",
|
|
315
|
-
"address": "520 中和縣永安巷8號之1"
|
|
316
|
-
}
|
|
317
|
-
},
|
|
318
|
-
{
|
|
319
|
-
"userID": 988087131,
|
|
320
|
-
"account": "epan@lin.com",
|
|
321
|
-
"userData": {
|
|
322
|
-
"name": "藍雅萍",
|
|
323
|
-
"email": "yan01@wan.org",
|
|
324
|
-
"phone": "0906867913",
|
|
325
|
-
"address": "22002 中和市忠孝巷770號7樓"
|
|
326
|
-
}
|
|
327
|
-
},
|
|
328
|
-
{
|
|
329
|
-
"userID": 303909308,
|
|
330
|
-
"account": "tao49@gmail.com",
|
|
331
|
-
"userData": {
|
|
332
|
-
"name": "顏雅芳",
|
|
333
|
-
"email": "oyao@zhao.com",
|
|
334
|
-
"phone": "08 9703081",
|
|
335
|
-
"address": "43813 蘆竹古亭街43號之3"
|
|
336
|
-
}
|
|
337
|
-
},
|
|
338
|
-
{
|
|
339
|
-
"userID": 866064022,
|
|
340
|
-
"account": "pengguiying@gmail.com",
|
|
341
|
-
"userData": {
|
|
342
|
-
"name": "周雅玲",
|
|
343
|
-
"email": "xiongming@zeng.net",
|
|
344
|
-
"phone": "(04) 46540680",
|
|
345
|
-
"address": "95639 光復龍山寺巷33號之2"
|
|
346
|
-
}
|
|
347
|
-
},
|
|
348
|
-
{
|
|
349
|
-
"userID": 774773685,
|
|
350
|
-
"account": "mingguo@gmail.com",
|
|
351
|
-
"userData": {
|
|
352
|
-
"name": "劉沖",
|
|
353
|
-
"email": "xiongfang@pan.net",
|
|
354
|
-
"phone": "(07) 56662135",
|
|
355
|
-
"address": "52862 桃園市象山路8段7號5樓"
|
|
356
|
-
}
|
|
357
|
-
},
|
|
358
|
-
{
|
|
359
|
-
"userID": 284204049,
|
|
360
|
-
"account": "jing84@xiao.com",
|
|
361
|
-
"userData": {
|
|
362
|
-
"name": "曹宜君",
|
|
363
|
-
"email": "yanyu@yahoo.com",
|
|
364
|
-
"phone": "019 55962789",
|
|
365
|
-
"address": "142 馬公縣劍南路939號之7"
|
|
366
|
-
}
|
|
367
|
-
}].map((dd:any)=>{
|
|
368
|
-
dd.created_time=formatDate(getRandomDateInLast14Days())
|
|
369
|
-
dd.online_time=dd.created_time
|
|
370
|
-
return dd
|
|
371
|
-
})).map((dd)=>{
|
|
372
|
-
dd.pwd='12345'
|
|
373
|
-
return dd
|
|
374
|
-
})
|
|
4
|
+
export type TypeFakeUser = {
|
|
5
|
+
userID: number;
|
|
6
|
+
account: string;
|
|
7
|
+
pwd: string;
|
|
8
|
+
userData: {
|
|
9
|
+
name: string;
|
|
10
|
+
email: string;
|
|
11
|
+
phone: string;
|
|
12
|
+
address: string;
|
|
13
|
+
birth: string;
|
|
14
|
+
};
|
|
15
|
+
created_time: string;
|
|
16
|
+
online_time: string;
|
|
17
|
+
};
|
|
375
18
|
|
|
19
|
+
export class FakeUser {
|
|
20
|
+
generateUser(num = 100): TypeFakeUser[] {
|
|
21
|
+
const FakeDataGenerator = require('fake-data-generator-taiwan');
|
|
22
|
+
const twGenerator = new FakeDataGenerator();
|
|
23
|
+
const dataList = [];
|
|
24
|
+
const idSet = new Set();
|
|
25
|
+
const emailSet = new Set();
|
|
376
26
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
27
|
+
for (let i = 0; i < num; i++) {
|
|
28
|
+
let id = 0;
|
|
29
|
+
do {
|
|
30
|
+
id = Number(faker.string.numeric({ length: 9, allowLeadingZeros: false }));
|
|
31
|
+
} while (idSet.has(id));
|
|
32
|
+
idSet.add(id);
|
|
381
33
|
|
|
382
|
-
|
|
34
|
+
let email = '';
|
|
35
|
+
do {
|
|
36
|
+
email = faker.internet.email({ lastName: tool.randomNumber(5) });
|
|
37
|
+
} while (emailSet.has(email));
|
|
38
|
+
emailSet.add(email);
|
|
383
39
|
|
|
384
|
-
|
|
385
|
-
|
|
40
|
+
const password = faker.internet.password();
|
|
41
|
+
const name = twGenerator.Name.generate();
|
|
42
|
+
const phone = twGenerator.Mobile.generate(0, 10);
|
|
43
|
+
const address = twGenerator.Address.generate();
|
|
44
|
+
const birthdate = faker.date.birthdate().toISOString().slice(0, 10);
|
|
386
45
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
46
|
+
const dateTimeArray = [
|
|
47
|
+
getDateInRange(-2, 0, 0, true),
|
|
48
|
+
getDateInRange(0, -6, 0, true),
|
|
49
|
+
getDateInRange(0, 0, -30, true),
|
|
50
|
+
];
|
|
51
|
+
const randomIndex = Math.floor(Math.random() * dateTimeArray.length);
|
|
52
|
+
const dateTime = dateTimeArray[randomIndex];
|
|
394
53
|
|
|
395
|
-
|
|
54
|
+
const record = {
|
|
55
|
+
userID: id,
|
|
56
|
+
account: email,
|
|
57
|
+
pwd: password,
|
|
58
|
+
userData: {
|
|
59
|
+
name: name,
|
|
60
|
+
email: email,
|
|
61
|
+
phone: phone,
|
|
62
|
+
address: address,
|
|
63
|
+
birth: birthdate,
|
|
64
|
+
},
|
|
65
|
+
created_time: dateTime,
|
|
66
|
+
online_time: dateTime,
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
dataList.push(record);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return dataList;
|
|
73
|
+
}
|
|
396
74
|
}
|
|
397
75
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
76
|
+
/**
|
|
77
|
+
* 取得指定時間範圍內的日期,可隨機或準確指定
|
|
78
|
+
* @param years 年數 (負數表示過去幾年)
|
|
79
|
+
* @param months 月數 (負數表示過去幾個月)
|
|
80
|
+
* @param days 天數 (負數表示過去幾天)
|
|
81
|
+
* @param isRandom 是否產生隨機時間,false 則返回準確的起始時間
|
|
82
|
+
* @param referenceDate 參考日期,預設為現在
|
|
83
|
+
* @returns 格式化後的日期字串
|
|
84
|
+
*/
|
|
85
|
+
function getDateInRange(years = 0, months = 0, days = 0, isRandom = true, referenceDate: Date = new Date()): string {
|
|
86
|
+
// 複製參考日期以避免修改原始日期
|
|
87
|
+
const startDate = new Date(referenceDate);
|
|
88
|
+
|
|
89
|
+
// 設定開始日期
|
|
90
|
+
startDate.setFullYear(startDate.getFullYear() + years);
|
|
91
|
+
startDate.setMonth(startDate.getMonth() + months);
|
|
92
|
+
startDate.setDate(startDate.getDate() + days);
|
|
401
93
|
|
|
402
|
-
|
|
403
|
-
|
|
94
|
+
// 確保開始日期和參考日期的順序正確
|
|
95
|
+
const earlierDate = startDate < referenceDate ? startDate : referenceDate;
|
|
96
|
+
const laterDate = startDate < referenceDate ? referenceDate : startDate;
|
|
404
97
|
|
|
405
|
-
|
|
98
|
+
// 依據 isRandom 決定回傳隨機日期或準確日期
|
|
99
|
+
let resultDate: Date;
|
|
100
|
+
if (isRandom) {
|
|
101
|
+
// 生成隨機時間
|
|
102
|
+
resultDate = new Date(earlierDate.getTime() + Math.random() * (laterDate.getTime() - earlierDate.getTime()));
|
|
103
|
+
} else {
|
|
104
|
+
// 返回準確的時間 (起始點)
|
|
105
|
+
resultDate = startDate;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return formatDate(resultDate);
|
|
406
109
|
}
|
|
407
110
|
|
|
111
|
+
/**
|
|
112
|
+
* 格式化日期為 YYYY-MM-DD HH:MM:SS 格式
|
|
113
|
+
* @param date 日期物件
|
|
114
|
+
* @returns 格式化後的日期字串
|
|
115
|
+
*/
|
|
116
|
+
function formatDate(date: Date): string {
|
|
117
|
+
const year = date.getFullYear();
|
|
118
|
+
const month = ('0' + (date.getMonth() + 1)).slice(-2);
|
|
119
|
+
const day = ('0' + date.getDate()).slice(-2);
|
|
120
|
+
const hours = ('0' + date.getHours()).slice(-2);
|
|
121
|
+
const minutes = ('0' + date.getMinutes()).slice(-2);
|
|
122
|
+
const seconds = ('0' + date.getSeconds()).slice(-2);
|
|
408
123
|
|
|
124
|
+
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
|
125
|
+
}
|
|
@@ -7,6 +7,8 @@ exports.InitialFakeData = void 0;
|
|
|
7
7
|
const database_1 = __importDefault(require("../../modules/database"));
|
|
8
8
|
const fake_user_js_1 = require("./fake-data-model/fake-user.js");
|
|
9
9
|
const fake_order_js_1 = require("./fake-data-model/fake-order.js");
|
|
10
|
+
const checkout_js_1 = require("./checkout.js");
|
|
11
|
+
const ut_timer_1 = require("../utils/ut-timer");
|
|
10
12
|
class InitialFakeData {
|
|
11
13
|
constructor(app_name) {
|
|
12
14
|
this.app_name = app_name;
|
|
@@ -15,16 +17,54 @@ class InitialFakeData {
|
|
|
15
17
|
await this.insertFakeUser();
|
|
16
18
|
}
|
|
17
19
|
async insertFakeUser() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
const utTimer = new ut_timer_1.UtTimer('insert-fake-user');
|
|
21
|
+
const users = new fake_user_js_1.FakeUser().generateUser(15000);
|
|
22
|
+
const orders = new fake_order_js_1.FakeOrder(users).generateOrder(10000);
|
|
23
|
+
const preservedEmails = [
|
|
24
|
+
'sam38124@gmail.com',
|
|
25
|
+
'jianzhiwang826@gmail.com',
|
|
26
|
+
'a0981825882@gmail.com',
|
|
27
|
+
'open94006880103@gmail.com',
|
|
28
|
+
];
|
|
29
|
+
await database_1.default.query(`DELETE FROM \`${this.app_name}\`.t_user WHERE id > 0 AND account NOT IN (?)
|
|
30
|
+
`, [preservedEmails]);
|
|
31
|
+
utTimer.checkPoint('Delete Account');
|
|
32
|
+
await database_1.default.query(`DELETE FROM \`${this.app_name}\`.t_checkout WHERE id > 0 AND email NOT IN (?)
|
|
33
|
+
`, [preservedEmails]);
|
|
34
|
+
utTimer.checkPoint('Delete Checkout');
|
|
35
|
+
const userChunk = 500;
|
|
36
|
+
const userChunksCount = Math.ceil(users.length / userChunk);
|
|
37
|
+
for (let i = 0; i < userChunksCount; i++) {
|
|
38
|
+
const userSlice = users.slice(i * userChunk, (i + 1) * userChunk);
|
|
39
|
+
await database_1.default.query(`INSERT INTO \`${this.app_name}\`.t_user
|
|
40
|
+
(userID, account, userData, created_time, online_time, pwd) VALUES ?`, [
|
|
41
|
+
userSlice.map(user => [
|
|
42
|
+
user.userID,
|
|
43
|
+
user.userData.email,
|
|
44
|
+
JSON.stringify(user.userData),
|
|
45
|
+
user.created_time,
|
|
46
|
+
user.online_time,
|
|
47
|
+
user.pwd,
|
|
48
|
+
]),
|
|
49
|
+
]);
|
|
50
|
+
utTimer.checkPoint(`Insert Users Query ${i}`);
|
|
51
|
+
}
|
|
52
|
+
const orderChunk = 200;
|
|
53
|
+
const orderChunksCount = Math.ceil(orders.length / orderChunk);
|
|
54
|
+
for (let i = 0; i < orderChunksCount; i++) {
|
|
55
|
+
const orderSlice = orders.slice(i * orderChunk, (i + 1) * orderChunk);
|
|
56
|
+
await database_1.default.query(`INSERT INTO \`${this.app_name}\`.t_checkout
|
|
57
|
+
(cart_token, status, email, orderData, created_time) VALUES ?`, [orderSlice]);
|
|
58
|
+
utTimer.checkPoint(`Insert Checkout Array ${i}`);
|
|
59
|
+
await Promise.all(orderSlice.map(async (order) => {
|
|
60
|
+
await checkout_js_1.CheckoutService.updateAndMigrateToTableColumn({
|
|
61
|
+
cart_token: order[0],
|
|
62
|
+
orderData: JSON.parse(order[3]),
|
|
63
|
+
app_name: this.app_name,
|
|
64
|
+
});
|
|
65
|
+
utTimer.checkPoint(`Migrate To Table Column #${order[0]}`);
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
28
68
|
}
|
|
29
69
|
}
|
|
30
70
|
exports.InitialFakeData = InitialFakeData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initial-fake-data.js","sourceRoot":"","sources":["initial-fake-data.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAwC;
|
|
1
|
+
{"version":3,"file":"initial-fake-data.js","sourceRoot":"","sources":["initial-fake-data.ts"],"names":[],"mappings":"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"}
|