hikvision-cli 1.0.0

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.
Files changed (73) hide show
  1. package/dist/commands/binding.d.ts +6 -0
  2. package/dist/commands/binding.d.ts.map +1 -0
  3. package/dist/commands/binding.js +274 -0
  4. package/dist/commands/binding.js.map +1 -0
  5. package/dist/commands/card.d.ts +6 -0
  6. package/dist/commands/card.d.ts.map +1 -0
  7. package/dist/commands/card.js +259 -0
  8. package/dist/commands/card.js.map +1 -0
  9. package/dist/commands/group.d.ts +6 -0
  10. package/dist/commands/group.d.ts.map +1 -0
  11. package/dist/commands/group.js +87 -0
  12. package/dist/commands/group.js.map +1 -0
  13. package/dist/commands/org.d.ts +6 -0
  14. package/dist/commands/org.d.ts.map +1 -0
  15. package/dist/commands/org.js +248 -0
  16. package/dist/commands/org.js.map +1 -0
  17. package/dist/commands/person.d.ts +6 -0
  18. package/dist/commands/person.d.ts.map +1 -0
  19. package/dist/commands/person.js +563 -0
  20. package/dist/commands/person.js.map +1 -0
  21. package/dist/commands/service.d.ts +6 -0
  22. package/dist/commands/service.d.ts.map +1 -0
  23. package/dist/commands/service.js +153 -0
  24. package/dist/commands/service.js.map +1 -0
  25. package/dist/commands/sync.d.ts +6 -0
  26. package/dist/commands/sync.d.ts.map +1 -0
  27. package/dist/commands/sync.js +138 -0
  28. package/dist/commands/sync.js.map +1 -0
  29. package/dist/commands/system.d.ts +6 -0
  30. package/dist/commands/system.d.ts.map +1 -0
  31. package/dist/commands/system.js +167 -0
  32. package/dist/commands/system.js.map +1 -0
  33. package/dist/commands/vehicle.d.ts +12 -0
  34. package/dist/commands/vehicle.d.ts.map +1 -0
  35. package/dist/commands/vehicle.js +550 -0
  36. package/dist/commands/vehicle.js.map +1 -0
  37. package/dist/index.d.ts +6 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +94 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/services/hikvisionClient.d.ts +25 -0
  42. package/dist/services/hikvisionClient.d.ts.map +1 -0
  43. package/dist/services/hikvisionClient.js +59 -0
  44. package/dist/services/hikvisionClient.js.map +1 -0
  45. package/dist/utils/config.d.ts +66 -0
  46. package/dist/utils/config.d.ts.map +1 -0
  47. package/dist/utils/config.js +213 -0
  48. package/dist/utils/config.js.map +1 -0
  49. package/dist/utils/output.d.ts +42 -0
  50. package/dist/utils/output.d.ts.map +1 -0
  51. package/dist/utils/output.js +157 -0
  52. package/dist/utils/output.js.map +1 -0
  53. package/dist/utils/validation.d.ts +52 -0
  54. package/dist/utils/validation.d.ts.map +1 -0
  55. package/dist/utils/validation.js +171 -0
  56. package/dist/utils/validation.js.map +1 -0
  57. package/package.json +29 -0
  58. package/src/commands/binding.ts +305 -0
  59. package/src/commands/card.ts +238 -0
  60. package/src/commands/group.ts +91 -0
  61. package/src/commands/org.ts +228 -0
  62. package/src/commands/person.ts +596 -0
  63. package/src/commands/service.ts +174 -0
  64. package/src/commands/sync.ts +156 -0
  65. package/src/commands/system.ts +137 -0
  66. package/src/commands/vehicle.ts +572 -0
  67. package/src/index.ts +111 -0
  68. package/src/services/hikvisionClient.ts +74 -0
  69. package/src/types/cli-table3.d.ts +20 -0
  70. package/src/utils/config.ts +199 -0
  71. package/src/utils/output.ts +181 -0
  72. package/src/utils/validation.ts +160 -0
  73. package/tsconfig.json +19 -0
@@ -0,0 +1,563 @@
1
+ "use strict";
2
+ /**
3
+ * 人员管理命令
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.personCommands = void 0;
40
+ const commander_1 = require("commander");
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const config_1 = require("../utils/config");
44
+ const output_1 = require("../utils/output");
45
+ const hikvisionClient_1 = require("../services/hikvisionClient");
46
+ exports.personCommands = new commander_1.Command()
47
+ .command('person')
48
+ .description('人员管理');
49
+ // 新增人员
50
+ exports.personCommands
51
+ .command('add')
52
+ .description('新增人员')
53
+ .option('-n, --name <name>', '姓名')
54
+ .option('-p, --phone <phone>', '手机号')
55
+ .option('-i, --id-card <idCard>', '身份证号')
56
+ .option('-o, --org <orgIndexCode>', '组织 ID')
57
+ .option('-on, --org-path <orgPath>', '组织路径(如:保洁 或 外部人员/保安保洁/保洁)')
58
+ .option('-g, --gender <gender>', '性别 (1:男, 2:女)', '1')
59
+ .option('-e, --email <email>', '邮箱')
60
+ .option('-c, --card-no <cardNo>', '卡号')
61
+ .option('-j, --job-no <jobNo>', '工号')
62
+ .option('-ph, --photo <photoPath>', '照片文件路径(支持 jpg/png),添加人员时同步上传')
63
+ .action(async (options) => {
64
+ try {
65
+ const client = (0, hikvisionClient_1.createHikvisionClient)(config_1.config.get());
66
+ // 解析组织路径
67
+ let orgIndexCode = options.org;
68
+ if (options.orgPath && !orgIndexCode) {
69
+ orgIndexCode = await findOrgByPath(client, options.orgPath);
70
+ if (!orgIndexCode) {
71
+ (0, output_1.error)(`未找到匹配的组织路径:${options.orgPath}`);
72
+ return;
73
+ }
74
+ (0, output_1.info)(`已匹配到组织:${options.orgPath} → ${orgIndexCode}`);
75
+ }
76
+ if (!orgIndexCode) {
77
+ (0, output_1.error)('请指定组织 ID (-o) 或组织路径 (-on)');
78
+ return;
79
+ }
80
+ // 读取照片(如果有)
81
+ let faces;
82
+ if (options.photo) {
83
+ const faceData = await loadPhotoBase64(options.photo);
84
+ faces = [{ faceData }];
85
+ (0, output_1.info)(`已读取照片:${options.photo}`);
86
+ }
87
+ const result = await client.personService.create({
88
+ personName: options.name,
89
+ phoneNo: options.phone,
90
+ idCardNo: options.idCard,
91
+ orgIndexCode,
92
+ gender: options.gender,
93
+ email: options.email,
94
+ cardNo: options.cardNo,
95
+ jobNo: options.jobNo,
96
+ faces,
97
+ });
98
+ (0, output_1.success)(`人员添加成功!`);
99
+ console.log((0, output_1.formatOutput)(result));
100
+ }
101
+ catch (err) {
102
+ (0, output_1.error)(`添加人员失败:${err.message || err}`);
103
+ }
104
+ });
105
+ // 查询人员列表
106
+ exports.personCommands
107
+ .command('list')
108
+ .description('查询人员列表')
109
+ .option('-p, --page <page>', '页码', '1')
110
+ .option('-s, --size <size>', '每页数量', '20')
111
+ .option('-n, --name <name>', '姓名搜索')
112
+ .option('-ph, --phone <phone>', '手机号搜索')
113
+ .option('-id, --id-card <idCard>', '身份证号搜索')
114
+ .option('-o, --org <orgIndexCode>', '组织 ID')
115
+ .option('-on, --org-name <orgName>', '组织名称(模糊搜索)')
116
+ .option('-g, --gender <gender>', '性别 (1:男, 2:女)')
117
+ .action(async (options) => {
118
+ try {
119
+ const client = (0, hikvisionClient_1.createHikvisionClient)(config_1.config.get());
120
+ // 如果指定了组织名称,需要先查找到 orgIndexCode
121
+ let orgIndexCode = options.org;
122
+ if (options.orgName && !orgIndexCode) {
123
+ const orgs = await client.personService.getOrganizations();
124
+ const found = orgs.find(o => o.orgName === options.orgName);
125
+ if (found) {
126
+ orgIndexCode = found.orgIndexCode;
127
+ }
128
+ else {
129
+ (0, output_1.error)(`未找到名为 "${options.orgName}" 的组织`);
130
+ return;
131
+ }
132
+ }
133
+ const result = await client.personService.list({
134
+ pageNo: parseInt(options.page),
135
+ pageSize: parseInt(options.size),
136
+ personName: options.name,
137
+ phoneNo: options.phone,
138
+ idCardNo: options.idCard,
139
+ orgIndexCode: orgIndexCode,
140
+ gender: options.gender,
141
+ });
142
+ console.log((0, output_1.formatOutput)(result));
143
+ }
144
+ catch (err) {
145
+ (0, output_1.error)(`查询人员失败:${err.message || err}`);
146
+ }
147
+ });
148
+ // 查询人员详情
149
+ exports.personCommands
150
+ .command('get')
151
+ .description('查询人员详情')
152
+ .argument('[personId]', '人员 ID')
153
+ .option('-i, --id <personId>', '人员 ID')
154
+ .option('-n, --name <name>', '姓名')
155
+ .option('-o, --org <orgIndexCode>', '组织 ID')
156
+ .option('-on, --org-name <orgName>', '组织名称')
157
+ .action(async (personId, options) => {
158
+ try {
159
+ const client = (0, hikvisionClient_1.createHikvisionClient)(config_1.config.get());
160
+ let targetId = personId || options.id;
161
+ // 如果没有提供 ID,通过名称+组织查找
162
+ if (!targetId && (options.name || options.orgName)) {
163
+ targetId = await findPersonId(client, options);
164
+ }
165
+ if (!targetId) {
166
+ (0, output_1.error)('请提供人员 ID,或使用 --name 和 --org/--org-name 指定人员');
167
+ return;
168
+ }
169
+ const result = await client.personService.getById(targetId);
170
+ console.log((0, output_1.formatOutput)(result));
171
+ }
172
+ catch (err) {
173
+ (0, output_1.error)(`查询人员详情失败:${err.message || err}`);
174
+ }
175
+ });
176
+ // 修改人员
177
+ exports.personCommands
178
+ .command('update')
179
+ .description('修改人员')
180
+ .argument('[personId]', '人员 ID')
181
+ .option('-n, --name <name>', '姓名')
182
+ .option('-p, --phone <phone>', '手机号')
183
+ .option('-i, --id-card <idCard>', '身份证号')
184
+ .option('-o, --org <orgIndexCode>', '组织 ID')
185
+ .option('-on, --org-name <orgName>', '组织名称')
186
+ .option('-g, --gender <gender>', '性别 (1:男, 2:女)')
187
+ .option('-s, --status <status>', '状态 (0:正常, 1:禁用, 2:离职)')
188
+ .option('-j, --job-no <jobNo>', '工号')
189
+ .action(async (personId, options) => {
190
+ try {
191
+ const client = (0, hikvisionClient_1.createHikvisionClient)(config_1.config.get());
192
+ let targetId = personId;
193
+ // 如果没有提供 ID,通过名称+组织查找
194
+ if (!targetId && (options.name || options.orgName)) {
195
+ targetId = await findPersonId(client, { name: options.name, orgIndexCode: options.org, orgName: options.orgName });
196
+ }
197
+ if (!targetId) {
198
+ (0, output_1.error)('请提供人员 ID,或使用 --name 和 --org/--org-name 指定人员');
199
+ return;
200
+ }
201
+ await client.personService.update(targetId, {
202
+ personName: options.name,
203
+ phoneNo: options.phone,
204
+ idCardNo: options.idCard,
205
+ orgIndexCode: options.org,
206
+ gender: options.gender,
207
+ status: options.status,
208
+ jobNo: options.jobNo,
209
+ });
210
+ (0, output_1.success)('人员信息已更新');
211
+ }
212
+ catch (err) {
213
+ (0, output_1.error)(`修改人员失败:${err.message || err}`);
214
+ }
215
+ });
216
+ // 删除人员
217
+ exports.personCommands
218
+ .command('delete')
219
+ .description('删除人员')
220
+ .argument('[personId]', '人员 ID')
221
+ .option('-n, --name <name>', '姓名')
222
+ .option('-o, --org <orgIndexCode>', '组织 ID')
223
+ .option('-on, --org-name <orgName>', '组织名称')
224
+ .action(async (personId, options) => {
225
+ try {
226
+ const client = (0, hikvisionClient_1.createHikvisionClient)(config_1.config.get());
227
+ let targetId = personId;
228
+ // 如果没有提供 ID,通过名称+组织查找
229
+ if (!targetId && (options.name || options.orgName)) {
230
+ targetId = await findPersonId(client, { name: options.name, orgIndexCode: options.org, orgName: options.orgName });
231
+ }
232
+ if (!targetId) {
233
+ (0, output_1.error)('请提供人员 ID,或使用 --name 和 --org/--org-name 指定人员');
234
+ return;
235
+ }
236
+ await client.personService.delete(targetId);
237
+ (0, output_1.success)('人员已删除');
238
+ }
239
+ catch (err) {
240
+ (0, output_1.error)(`删除人员失败:${err.message || err}`);
241
+ }
242
+ });
243
+ // 获取组织列表
244
+ exports.personCommands
245
+ .command('orgs')
246
+ .description('获取组织列表')
247
+ .option('-n, --name <name>', '按名称筛选(模糊匹配)')
248
+ .action(async (options) => {
249
+ try {
250
+ const client = (0, hikvisionClient_1.createHikvisionClient)(config_1.config.get());
251
+ const result = await client.personService.getOrganizations();
252
+ // 如果指定了名称,筛选结果
253
+ if (options.name) {
254
+ const filtered = result.filter(o => o.orgName.includes(options.name));
255
+ console.log((0, output_1.formatOutput)(filtered));
256
+ }
257
+ else {
258
+ console.log((0, output_1.formatOutput)(result));
259
+ }
260
+ }
261
+ catch (err) {
262
+ (0, output_1.error)(`获取组织列表失败:${err.message || err}`);
263
+ }
264
+ });
265
+ // 更新人员照片
266
+ exports.personCommands
267
+ .command('update-photo')
268
+ .description('更新人员照片')
269
+ .argument('[personId]', '人员 ID')
270
+ .option('-i, --id <personId>', '人员 ID')
271
+ .option('-n, --name <name>', '姓名')
272
+ .option('-o, --org <orgIndexCode>', '组织 ID')
273
+ .option('-on, --org-name <orgName>', '组织名称')
274
+ .option('-f, --file <filePath>', '照片文件路径(支持 jpg/png/jpeg)')
275
+ .action(async (personId, options) => {
276
+ try {
277
+ const client = (0, hikvisionClient_1.createHikvisionClient)(config_1.config.get());
278
+ // 查找人员
279
+ let targetId = personId || options.id;
280
+ if (!targetId && (options.name || options.orgName)) {
281
+ targetId = await findPersonId(client, {
282
+ name: options.name,
283
+ orgIndexCode: options.org,
284
+ orgName: options.orgName,
285
+ });
286
+ }
287
+ if (!targetId) {
288
+ (0, output_1.error)('请提供人员 ID,或使用 --name 和 --org/--org-name 指定人员');
289
+ return;
290
+ }
291
+ if (!options.file) {
292
+ (0, output_1.error)('请提供照片文件路径 (-f/--file)');
293
+ return;
294
+ }
295
+ // 读取照片并转为 base64
296
+ const faceData = await loadPhotoBase64(options.file);
297
+ // 直接尝试添加人脸,海康每人仅限1张,有旧照时 addFace 会报"Already Has Face"
298
+ try {
299
+ const result = await client.personService.addFace(targetId, faceData);
300
+ (0, output_1.success)(`人员照片已添加(faceId: ${result.faceId})`);
301
+ }
302
+ catch (err) {
303
+ if (err.message?.includes('Already Has Face') || err.message?.includes('already')) {
304
+ (0, output_1.error)(`该人员已有照片,每人仅限1张。如需更新,请先删除旧照后再添加。`);
305
+ }
306
+ else if (err.message?.includes('Picture Size')) {
307
+ (0, output_1.error)(`照片尺寸不合要求,建议:①确保照片中人脸区域清晰可见 ②裁剪图片使脸部占比更大 ③使用标准 JPEG/PNG 格式`);
308
+ }
309
+ else {
310
+ (0, output_1.error)(`添加照片失败:${err.message || err}`);
311
+ }
312
+ }
313
+ }
314
+ catch (err) {
315
+ (0, output_1.error)(`更新照片失败:${err.message || err}`);
316
+ }
317
+ });
318
+ // 添加人员照片(与 update-photo 相同逻辑)
319
+ exports.personCommands
320
+ .command('add-photo')
321
+ .description('为人员添加照片(无照片时添加,有照片时替换)')
322
+ .argument('[personId]', '人员 ID')
323
+ .option('-i, --id <personId>', '人员 ID')
324
+ .option('-n, --name <name>', '姓名')
325
+ .option('-o, --org <orgIndexCode>', '组织 ID')
326
+ .option('-on, --org-name <orgName>', '组织名称')
327
+ .option('-f, --file <filePath>', '照片文件路径(支持 jpg/png/jpeg)')
328
+ .action(async (personId, options) => {
329
+ // 复用 update-photo 的逻辑
330
+ const client = (0, hikvisionClient_1.createHikvisionClient)(config_1.config.get());
331
+ let targetId = personId || options.id;
332
+ if (!targetId && (options.name || options.orgName)) {
333
+ targetId = await findPersonId(client, {
334
+ name: options.name,
335
+ orgIndexCode: options.org,
336
+ orgName: options.orgName,
337
+ });
338
+ }
339
+ if (!targetId) {
340
+ (0, output_1.error)('请提供人员 ID,或使用 --name 和 --org/--org-name 指定人员');
341
+ return;
342
+ }
343
+ if (!options.file) {
344
+ (0, output_1.error)('请提供照片文件路径 (-f/--file)');
345
+ return;
346
+ }
347
+ try {
348
+ const faceData = await loadPhotoBase64(options.file);
349
+ // 直接添加人脸,有旧照时报"Already Has Face"
350
+ try {
351
+ const result = await client.personService.addFace(targetId, faceData);
352
+ (0, output_1.success)(`人员照片已添加(faceId: ${result.faceId})`);
353
+ }
354
+ catch (err) {
355
+ if (err.message?.includes('Already Has Face') || err.message?.includes('already')) {
356
+ (0, output_1.error)(`该人员已有照片,每人仅限1张。如需更新,请先删除旧照后再添加。`);
357
+ }
358
+ else if (err.message?.includes('Picture Size')) {
359
+ (0, output_1.error)(`照片尺寸不合要求,建议:①确保照片中人脸区域清晰可见 ②裁剪图片使脸部占比更大 ③使用标准 JPEG/PNG 格式`);
360
+ }
361
+ else {
362
+ (0, output_1.error)(`添加照片失败:${err.message || err}`);
363
+ }
364
+ }
365
+ }
366
+ catch (err) {
367
+ (0, output_1.error)(`添加照片失败:${err.message || err}`);
368
+ }
369
+ });
370
+ // 删除人员照片
371
+ exports.personCommands
372
+ .command('delete-photo')
373
+ .description('删除人员照片')
374
+ .argument('[personId]', '人员 ID')
375
+ .option('-i, --id <personId>', '人员 ID')
376
+ .option('-n, --name <name>', '姓名')
377
+ .option('-o, --org <orgIndexCode>', '组织 ID')
378
+ .option('-on, --org-name <orgName>', '组织名称')
379
+ .action(async (personId, options) => {
380
+ try {
381
+ const client = (0, hikvisionClient_1.createHikvisionClient)(config_1.config.get());
382
+ let targetId = personId || options.id;
383
+ if (!targetId && (options.name || options.orgName)) {
384
+ targetId = await findPersonId(client, {
385
+ name: options.name,
386
+ orgIndexCode: options.org,
387
+ orgName: options.orgName,
388
+ });
389
+ }
390
+ if (!targetId) {
391
+ (0, output_1.error)('请提供人员 ID,或使用 --name 和 --org/--org-name 指定人员');
392
+ return;
393
+ }
394
+ // 尝试删除人脸。海康无按人员ID删除人脸的API,
395
+ // 如果知道 faceId 可以直接删除;不知道则无法删除(需手动处理)
396
+ // 此处直接报错提示用户提供 faceId
397
+ (0, output_1.error)(`删除照片需要提供 faceId,请通过其他途径获取后人脸 ID 后再删除。`);
398
+ }
399
+ catch (err) {
400
+ (0, output_1.error)(`删除照片失败:${err.message || err}`);
401
+ }
402
+ });
403
+ // 查询已删除人员
404
+ exports.personCommands
405
+ .command('deleted')
406
+ .description('查询已删除人员(按时间范围,包含 status < 0 的记录)')
407
+ .option('--start-time <startTime>', '开始时间,格式:yyyy-MM-dd HH:mm:ss 或 yyyy-MM-dd')
408
+ .option('--end-time <endTime>', '结束时间,格式:yyyy-MM-dd HH:mm:ss 或 yyyy-MM-dd')
409
+ .option('-p, --page <page>', '页码', '1')
410
+ .option('-s, --size <size>', '每页数量', '50')
411
+ .action(async (options) => {
412
+ try {
413
+ const client = (0, hikvisionClient_1.createHikvisionClient)(config_1.config.get());
414
+ // 计算时间范围
415
+ const now = new Date();
416
+ const oneWeekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
417
+ const startTime = formatTimeForAPI(options.startTime || oneWeekAgo);
418
+ const endTime = formatTimeForAPI(options.endTime || now);
419
+ (0, output_1.info)(`查询时间范围:${startTime} ~ ${endTime}`);
420
+ // 调用增量接口
421
+ const result = await client.personService.listByTimeRange(startTime, endTime, parseInt(options.page), parseInt(options.size));
422
+ // 筛选出已删除的人员(status < 0)
423
+ const deletedPersons = result.list.filter(p => p.status < 0);
424
+ if (result.total === 0) {
425
+ (0, output_1.info)('在指定时间范围内未查询到任何人员记录');
426
+ return;
427
+ }
428
+ console.log((0, output_1.formatOutput)(result));
429
+ if (deletedPersons.length > 0) {
430
+ (0, output_1.success)(`\n共 ${deletedPersons.length} 条已删除记录(status < 0):`);
431
+ for (const p of deletedPersons) {
432
+ console.log(` ${p.personId} ${p.personName} status=${p.status} 删除时间=${p.updateTime}`);
433
+ }
434
+ }
435
+ else {
436
+ (0, output_1.info)('在指定时间范围内未发现已删除的人员记录');
437
+ }
438
+ }
439
+ catch (err) {
440
+ (0, output_1.error)(`查询已删除人员失败:${err.message || err}`);
441
+ }
442
+ });
443
+ /**
444
+ * 根据组织路径(如:保洁 或 外部人员/保安保洁/保洁)查找 orgIndexCode
445
+ */
446
+ async function findOrgByPath(client, orgPath) {
447
+ const orgs = await client.personService.getOrganizations();
448
+ const pathParts = orgPath.split('/').map(p => p.trim()).filter(p => p);
449
+ if (pathParts.length === 0)
450
+ return null;
451
+ const lastPart = pathParts[pathParts.length - 1];
452
+ const matches = [];
453
+ for (const org of orgs) {
454
+ if (org.orgName === lastPart) {
455
+ matches.push({ org, score: 1 });
456
+ }
457
+ }
458
+ if (matches.length === 0)
459
+ return null;
460
+ if (matches.length === 1)
461
+ return matches[0].org.orgIndexCode;
462
+ // 多个匹配时,返回第一个
463
+ return matches[0].org.orgIndexCode;
464
+ }
465
+ /**
466
+ * 根据姓名+部门查找人员 ID
467
+ */
468
+ async function findPersonId(client, opts) {
469
+ // 如果有 orgName,先查 orgIndexCode
470
+ let orgIndexCode = opts.orgIndexCode;
471
+ if (opts.orgName && !orgIndexCode) {
472
+ const orgs = await client.personService.getOrganizations();
473
+ const found = orgs.find(o => o.orgName === opts.orgName);
474
+ if (!found) {
475
+ return null;
476
+ }
477
+ orgIndexCode = found.orgIndexCode;
478
+ }
479
+ // 搜索人员
480
+ const list = await client.personService.list({
481
+ pageNo: 1,
482
+ pageSize: 50,
483
+ personName: opts.name,
484
+ orgIndexCode: orgIndexCode,
485
+ });
486
+ const persons = list.list ?? list;
487
+ if (persons.length === 0) {
488
+ return null;
489
+ }
490
+ if (persons.length === 1) {
491
+ return persons[0].personId || persons[0].personId;
492
+ }
493
+ // 多个匹配时提示用户
494
+ console.log(`找到 ${persons.length} 条匹配记录,请使用 ID 删除:`);
495
+ for (const p of persons) {
496
+ console.log(` ${p.personId} ${p.personName} ${p.phoneNo || '-'} ${p.jobNo || '-'}`);
497
+ }
498
+ return null;
499
+ }
500
+ /**
501
+ * 读取照片文件并转为 base64(自动去除 data:image/... 前缀)
502
+ * 添加了文件大小限制和路径安全验证
503
+ */
504
+ const MAX_PHOTO_SIZE = 10 * 1024 * 1024; // 10MB
505
+ async function loadPhotoBase64(filePath) {
506
+ // 安全检查:解析绝对路径并验证在允许范围内
507
+ const resolvedPath = path.resolve(filePath);
508
+ const allowedDir = process.cwd();
509
+ if (!resolvedPath.startsWith(allowedDir) && !fs.existsSync(resolvedPath)) {
510
+ throw new Error(`文件路径无效:${filePath}`);
511
+ }
512
+ if (!fs.existsSync(resolvedPath)) {
513
+ throw new Error(`照片文件不存在:${filePath}`);
514
+ }
515
+ const ext = path.extname(resolvedPath).toLowerCase();
516
+ if (!['.jpg', '.jpeg', '.png', '.bmp', '.gif'].includes(ext)) {
517
+ throw new Error(`不支持的照片格式:${ext},仅支持 jpg/jpeg/png/bmp/gif`);
518
+ }
519
+ const buffer = fs.readFileSync(resolvedPath);
520
+ // 文件大小验证,防止内存耗尽或 DoS
521
+ if (buffer.length > MAX_PHOTO_SIZE) {
522
+ throw new Error(`照片文件过大:${(buffer.length / 1024).toFixed(2)}KB,最大支持 ${MAX_PHOTO_SIZE / 1024}KB`);
523
+ }
524
+ if (buffer.length < 100) {
525
+ throw new Error(`照片文件无效或损坏`);
526
+ }
527
+ const mimeMap = {
528
+ '.jpg': 'image/jpeg',
529
+ '.jpeg': 'image/jpeg',
530
+ '.png': 'image/png',
531
+ '.bmp': 'image/bmp',
532
+ '.gif': 'image/gif',
533
+ };
534
+ const mime = mimeMap[ext] || 'image/jpeg';
535
+ const base64 = buffer.toString('base64');
536
+ // 去除 data:image/... 前缀,只保留纯 base64 数据
537
+ return base64;
538
+ }
539
+ /**
540
+ * 格式化时间为海康 API 所需格式
541
+ * @param input Date 对象或字符串
542
+ * @returns 格式:yyyy-MM-dd'T'HH:mm:ss.SSS+0800
543
+ */
544
+ function formatTimeForAPI(input) {
545
+ if (typeof input === 'string') {
546
+ // 如果是纯日期格式如 "2026-05-19",直接返回加上默认时间
547
+ if (/^\d{4}-\d{2}-\d{2}$/.test(input)) {
548
+ return `${input}T00:00:00.000+0800`;
549
+ }
550
+ // 尝试解析字符串
551
+ const d = new Date(input);
552
+ if (isNaN(d.getTime())) {
553
+ throw new Error(`无法解析时间字符串:${input}`);
554
+ }
555
+ return formatDate(d);
556
+ }
557
+ return formatDate(input);
558
+ }
559
+ function formatDate(d) {
560
+ const pad = (n) => n.toString().padStart(2, '0');
561
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}.000+0800`;
562
+ }
563
+ //# sourceMappingURL=person.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"person.js","sourceRoot":"","sources":["../../src/commands/person.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 服务控制命令
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const serviceCommands: Command;
6
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/commands/service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0DpC,eAAO,MAAM,eAAe,SAEK,CAAC"}