@nest-packages/nestjs-lark-sdk 0.1.0 → 0.1.2

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 (53) hide show
  1. package/dist/bitable-base-field.d.ts +309 -0
  2. package/dist/bitable-base-field.js +320 -0
  3. package/dist/bitable-base-field.js.map +1 -0
  4. package/dist/bitable-base-record.d.ts +214 -0
  5. package/dist/bitable-base-record.js +289 -0
  6. package/dist/bitable-base-record.js.map +1 -0
  7. package/dist/bitable-base.abstract.d.ts +18 -0
  8. package/dist/bitable-base.abstract.js +68 -0
  9. package/dist/bitable-base.abstract.js.map +1 -0
  10. package/dist/contact-base.d.ts +333 -0
  11. package/dist/contact-base.js +239 -0
  12. package/dist/contact-base.js.map +1 -0
  13. package/dist/feishu-base-plus.d.ts +26 -0
  14. package/dist/feishu-base-plus.js +187 -0
  15. package/dist/feishu-base-plus.js.map +1 -0
  16. package/dist/feishu-code.d.ts +22 -0
  17. package/dist/feishu-code.js +26 -0
  18. package/dist/feishu-code.js.map +1 -0
  19. package/dist/feishu.constants.d.ts +2 -0
  20. package/dist/feishu.constants.js +6 -0
  21. package/dist/feishu.constants.js.map +1 -0
  22. package/dist/feishu.utils.d.ts +11 -0
  23. package/dist/feishu.utils.js +23 -0
  24. package/dist/feishu.utils.js.map +1 -0
  25. package/dist/im-base.config.d.ts +3 -0
  26. package/dist/im-base.config.js +18 -0
  27. package/dist/im-base.config.js.map +1 -0
  28. package/dist/im-base.d.ts +140 -0
  29. package/dist/im-base.js +288 -0
  30. package/dist/im-base.js.map +1 -0
  31. package/dist/im-base.type.d.ts +27 -0
  32. package/dist/im-base.type.js +3 -0
  33. package/dist/im-base.type.js.map +1 -0
  34. package/dist/index.d.ts +8 -0
  35. package/dist/index.js +25 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/nestjs-lark-sdk.module.d.ts +24 -0
  38. package/dist/nestjs-lark-sdk.module.js +95 -0
  39. package/dist/nestjs-lark-sdk.module.js.map +1 -0
  40. package/dist/nestjs-lark-sdk.service.d.ts +1 -0
  41. package/dist/nestjs-lark-sdk.service.js +17 -0
  42. package/dist/nestjs-lark-sdk.service.js.map +1 -0
  43. package/dist/tsconfig.build.tsbuildinfo +1 -0
  44. package/dist/type.bitable.d.ts +12 -0
  45. package/dist/type.bitable.js +3 -0
  46. package/dist/type.bitable.js.map +1 -0
  47. package/dist/type.d.ts +68 -0
  48. package/dist/type.js +3 -0
  49. package/dist/type.js.map +1 -0
  50. package/dist/types/index.d.ts +224 -0
  51. package/dist/types/index.js +3 -0
  52. package/dist/types/index.js.map +1 -0
  53. package/package.json +13 -6
@@ -0,0 +1,333 @@
1
+ import { Client } from '@larksuiteoapi/node-sdk';
2
+ import { Logger } from '@nestjs/common';
3
+ import { FeishuBasePlus } from './feishu-base-plus';
4
+ import { TypeDepartment, TypeUserStore } from './type';
5
+ export declare class ContactBase {
6
+ readonly logger: Logger;
7
+ feishuBaseInstance: FeishuBasePlus;
8
+ readonly larkClient: Client;
9
+ constructor(feishuBaseInstance: FeishuBasePlus);
10
+ getOpenIdByMobile(mobiles: string[], user_id_type?: 'open_id' | 'union_id' | 'user_id'): Promise<{
11
+ code?: number | undefined;
12
+ msg?: string | undefined;
13
+ data?: {
14
+ user_list?: {
15
+ user_id?: string | undefined;
16
+ mobile?: string | undefined;
17
+ email?: string | undefined;
18
+ status?: {
19
+ is_frozen?: boolean | undefined;
20
+ is_resigned?: boolean | undefined;
21
+ is_activated?: boolean | undefined;
22
+ is_exited?: boolean | undefined;
23
+ is_unjoin?: boolean | undefined;
24
+ } | undefined;
25
+ }[] | undefined;
26
+ } | undefined;
27
+ }>;
28
+ getFeishuUserInfo(openId: string): Promise<{
29
+ msg: string;
30
+ mobile: string;
31
+ open_id: string;
32
+ user_id: string;
33
+ union_id: string;
34
+ name: string;
35
+ avatar: {
36
+ avatar_72?: string | undefined;
37
+ avatar_240?: string | undefined;
38
+ avatar_640?: string | undefined;
39
+ avatar_origin?: string | undefined;
40
+ };
41
+ } | {
42
+ msg: string;
43
+ mobile: string;
44
+ open_id: string;
45
+ name: string;
46
+ avatar: {};
47
+ user_id?: undefined;
48
+ union_id?: undefined;
49
+ }>;
50
+ getUserInfo(user_id: string): Promise<{
51
+ code?: number | undefined;
52
+ msg?: string | undefined;
53
+ data?: {
54
+ user?: {
55
+ union_id?: string | undefined;
56
+ user_id?: string | undefined;
57
+ open_id?: string | undefined;
58
+ name?: string | undefined;
59
+ en_name?: string | undefined;
60
+ nickname?: string | undefined;
61
+ email?: string | undefined;
62
+ mobile?: string | undefined;
63
+ mobile_visible?: boolean | undefined;
64
+ gender?: number | undefined;
65
+ avatar?: {
66
+ avatar_72?: string | undefined;
67
+ avatar_240?: string | undefined;
68
+ avatar_640?: string | undefined;
69
+ avatar_origin?: string | undefined;
70
+ } | undefined;
71
+ status?: {
72
+ is_frozen?: boolean | undefined;
73
+ is_resigned?: boolean | undefined;
74
+ is_activated?: boolean | undefined;
75
+ is_exited?: boolean | undefined;
76
+ is_unjoin?: boolean | undefined;
77
+ } | undefined;
78
+ department_ids?: string[] | undefined;
79
+ leader_user_id?: string | undefined;
80
+ city?: string | undefined;
81
+ country?: string | undefined;
82
+ work_station?: string | undefined;
83
+ join_time?: number | undefined;
84
+ is_tenant_manager?: boolean | undefined;
85
+ employee_no?: string | undefined;
86
+ employee_type?: number | undefined;
87
+ positions?: {
88
+ position_code?: string | undefined;
89
+ position_name?: string | undefined;
90
+ department_id?: string | undefined;
91
+ leader_user_id?: string | undefined;
92
+ leader_position_code?: string | undefined;
93
+ is_major?: boolean | undefined;
94
+ }[] | undefined;
95
+ orders?: {
96
+ department_id?: string | undefined;
97
+ user_order?: number | undefined;
98
+ department_order?: number | undefined;
99
+ is_primary_dept?: boolean | undefined;
100
+ }[] | undefined;
101
+ custom_attrs?: {
102
+ type?: string | undefined;
103
+ id?: string | undefined;
104
+ value?: {
105
+ text?: string | undefined;
106
+ url?: string | undefined;
107
+ pc_url?: string | undefined;
108
+ option_value?: string | undefined;
109
+ name?: string | undefined;
110
+ picture_url?: string | undefined;
111
+ generic_user?: {
112
+ id: string;
113
+ type: number;
114
+ } | undefined;
115
+ } | undefined;
116
+ }[] | undefined;
117
+ enterprise_email?: string | undefined;
118
+ time_zone?: string | undefined;
119
+ description?: string | undefined;
120
+ job_title?: string | undefined;
121
+ geo?: string | undefined;
122
+ job_level_id?: string | undefined;
123
+ job_family_id?: string | undefined;
124
+ assign_info?: {
125
+ subscription_id?: string | undefined;
126
+ license_plan_key?: string | undefined;
127
+ product_name?: string | undefined;
128
+ i18n_name?: {
129
+ zh_cn?: string | undefined;
130
+ ja_jp?: string | undefined;
131
+ en_us?: string | undefined;
132
+ } | undefined;
133
+ start_time?: string | undefined;
134
+ end_time?: string | undefined;
135
+ }[] | undefined;
136
+ department_path?: {
137
+ department_id?: string | undefined;
138
+ department_name?: {
139
+ name?: string | undefined;
140
+ i18n_name?: {
141
+ zh_cn?: string | undefined;
142
+ ja_jp?: string | undefined;
143
+ en_us?: string | undefined;
144
+ } | undefined;
145
+ } | undefined;
146
+ department_path?: {
147
+ department_ids?: string[] | undefined;
148
+ department_path_name?: {
149
+ name?: string | undefined;
150
+ i18n_name?: {
151
+ zh_cn?: string | undefined;
152
+ ja_jp?: string | undefined;
153
+ en_us?: string | undefined;
154
+ } | undefined;
155
+ } | undefined;
156
+ } | undefined;
157
+ }[] | undefined;
158
+ dotted_line_leader_user_ids?: string[] | undefined;
159
+ } | undefined;
160
+ } | undefined;
161
+ }>;
162
+ getOpenid(nickName: string | string[]): Promise<{
163
+ id: string;
164
+ }[]>;
165
+ getReceiveIds(nickNameList: string[]): Promise<string[]>;
166
+ getReceiveIdsByEhr(nickNameList: string[]): Promise<string[]>;
167
+ getDepartmentList(department_id: any, department_id_type?: 'department_id' | 'open_department_id'): Promise<TypeDepartment[]>;
168
+ private contactUserList;
169
+ private contactListAll;
170
+ getContacts(): Promise<TypeUserStore[]>;
171
+ getAllContacts(user_id_type?: 'open_id' | 'user_id' | 'union_id'): Promise<{
172
+ user_id?: string | undefined;
173
+ system_fields?: {
174
+ name?: string | undefined;
175
+ en_name?: string | undefined;
176
+ email?: string | undefined;
177
+ mobile?: string | undefined;
178
+ department_id?: string | undefined;
179
+ manager?: {
180
+ user_id?: string | undefined;
181
+ name?: string | undefined;
182
+ en_name?: string | undefined;
183
+ } | undefined;
184
+ job?: {
185
+ id?: number | undefined;
186
+ name?: string | undefined;
187
+ } | undefined;
188
+ job_level?: {
189
+ id?: number | undefined;
190
+ name?: string | undefined;
191
+ } | undefined;
192
+ work_location?: {
193
+ id?: number | undefined;
194
+ name?: string | undefined;
195
+ } | undefined;
196
+ gender?: number | undefined;
197
+ birthday?: string | undefined;
198
+ native_region?: {
199
+ iso_code?: string | undefined;
200
+ name?: string | undefined;
201
+ } | undefined;
202
+ ethnicity?: number | undefined;
203
+ marital_status?: number | undefined;
204
+ political_status?: number | undefined;
205
+ entered_workforce_date?: string | undefined;
206
+ id_type?: number | undefined;
207
+ id_number?: string | undefined;
208
+ hukou_type?: number | undefined;
209
+ hukou_location?: string | undefined;
210
+ bank_account_number?: string | undefined;
211
+ bank_name?: string | undefined;
212
+ social_security_account?: string | undefined;
213
+ provident_fund_account?: string | undefined;
214
+ employee_no?: string | undefined;
215
+ employee_type?: number | undefined;
216
+ status?: number | undefined;
217
+ hire_date?: string | undefined;
218
+ probation_months?: number | undefined;
219
+ conversion_date?: string | undefined;
220
+ application?: number | undefined;
221
+ application_status?: number | undefined;
222
+ last_day?: string | undefined;
223
+ departure_type?: number | undefined;
224
+ departure_reason?: number | undefined;
225
+ departure_notes?: string | undefined;
226
+ contract_company?: {
227
+ id?: number | undefined;
228
+ name?: string | undefined;
229
+ } | undefined;
230
+ contract_type?: number | undefined;
231
+ contract_start_date?: string | undefined;
232
+ contract_expiration_date?: string | undefined;
233
+ contract_sign_times?: number | undefined;
234
+ personal_email?: string | undefined;
235
+ family_address?: string | undefined;
236
+ primary_emergency_contact?: {
237
+ name?: string | undefined;
238
+ relationship?: number | undefined;
239
+ mobile?: string | undefined;
240
+ } | undefined;
241
+ emergency_contact?: {
242
+ name?: string | undefined;
243
+ relationship?: number | undefined;
244
+ mobile?: string | undefined;
245
+ }[] | undefined;
246
+ highest_level_of_edu?: {
247
+ level?: number | undefined;
248
+ school?: string | undefined;
249
+ major?: string | undefined;
250
+ degree?: number | undefined;
251
+ start?: string | undefined;
252
+ end?: string | undefined;
253
+ } | undefined;
254
+ education?: {
255
+ level?: number | undefined;
256
+ school?: string | undefined;
257
+ major?: string | undefined;
258
+ degree?: number | undefined;
259
+ start?: string | undefined;
260
+ end?: string | undefined;
261
+ }[] | undefined;
262
+ former_work_exp?: {
263
+ company?: string | undefined;
264
+ department?: string | undefined;
265
+ job?: string | undefined;
266
+ start?: string | undefined;
267
+ end?: string | undefined;
268
+ description?: string | undefined;
269
+ } | undefined;
270
+ work_exp?: {
271
+ company?: string | undefined;
272
+ department?: string | undefined;
273
+ job?: string | undefined;
274
+ start?: string | undefined;
275
+ end?: string | undefined;
276
+ description?: string | undefined;
277
+ }[] | undefined;
278
+ id_photo_po_side?: {
279
+ id?: string | undefined;
280
+ mime_type?: string | undefined;
281
+ name?: string | undefined;
282
+ size?: number | undefined;
283
+ }[] | undefined;
284
+ id_photo_em_side?: {
285
+ id?: string | undefined;
286
+ mime_type?: string | undefined;
287
+ name?: string | undefined;
288
+ size?: number | undefined;
289
+ }[] | undefined;
290
+ id_photo?: {
291
+ id?: string | undefined;
292
+ mime_type?: string | undefined;
293
+ name?: string | undefined;
294
+ size?: number | undefined;
295
+ }[] | undefined;
296
+ diploma_photo?: {
297
+ id?: string | undefined;
298
+ mime_type?: string | undefined;
299
+ name?: string | undefined;
300
+ size?: number | undefined;
301
+ }[] | undefined;
302
+ graduation_cert?: {
303
+ id?: string | undefined;
304
+ mime_type?: string | undefined;
305
+ name?: string | undefined;
306
+ size?: number | undefined;
307
+ }[] | undefined;
308
+ cert_of_merit?: {
309
+ id?: string | undefined;
310
+ mime_type?: string | undefined;
311
+ name?: string | undefined;
312
+ size?: number | undefined;
313
+ }[] | undefined;
314
+ offboarding_file?: {
315
+ id?: string | undefined;
316
+ mime_type?: string | undefined;
317
+ name?: string | undefined;
318
+ size?: number | undefined;
319
+ }[] | undefined;
320
+ cancel_onboarding_reason?: number | undefined;
321
+ cancel_onboarding_notes?: string | undefined;
322
+ employee_form_status?: number | undefined;
323
+ create_time?: number | undefined;
324
+ update_time?: number | undefined;
325
+ } | undefined;
326
+ custom_fields?: {
327
+ key?: string | undefined;
328
+ label?: string | undefined;
329
+ type?: "text" | "file" | "date" | "option" | undefined;
330
+ value?: string | undefined;
331
+ }[] | undefined;
332
+ }[]>;
333
+ }
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContactBase = void 0;
4
+ const _ = require("lodash");
5
+ const common_1 = require("@nestjs/common");
6
+ const feishu_code_1 = require("./feishu-code");
7
+ class ContactBase {
8
+ constructor(feishuBaseInstance) {
9
+ this.logger = new common_1.Logger(ContactBase.name);
10
+ this.contactUserList = new Map();
11
+ this.contactListAll = new Map();
12
+ this.feishuBaseInstance = feishuBaseInstance;
13
+ this.larkClient = feishuBaseInstance.larkClient;
14
+ }
15
+ async getOpenIdByMobile(mobiles, user_id_type = 'open_id') {
16
+ const contact = this.larkClient.contact;
17
+ const res = await contact.user.batchGetId({
18
+ data: {
19
+ mobiles,
20
+ include_resigned: true,
21
+ },
22
+ params: {
23
+ user_id_type,
24
+ },
25
+ });
26
+ return res;
27
+ }
28
+ async getFeishuUserInfo(openId) {
29
+ const res = await this.larkClient.contact.user.get({
30
+ params: {
31
+ user_id_type: 'open_id',
32
+ },
33
+ path: {
34
+ user_id: openId,
35
+ },
36
+ });
37
+ if (res.code === feishu_code_1.CODE_SUCCESS) {
38
+ return {
39
+ msg: res.msg,
40
+ mobile: res.data.user.mobile.replace('+86', ''),
41
+ open_id: res.data.user.open_id,
42
+ user_id: res.data.user.user_id,
43
+ union_id: res.data.user.union_id,
44
+ name: res.data.user.name,
45
+ avatar: res.data.user.avatar,
46
+ };
47
+ }
48
+ return {
49
+ msg: res.msg,
50
+ mobile: '',
51
+ open_id: '',
52
+ name: '',
53
+ avatar: {},
54
+ };
55
+ }
56
+ async getUserInfo(user_id) {
57
+ try {
58
+ const res = await this.larkClient.contact.user.get({
59
+ params: {
60
+ user_id_type: 'user_id',
61
+ },
62
+ path: {
63
+ user_id,
64
+ },
65
+ });
66
+ this.logger.debug('getUserInfo', res);
67
+ if (!res) {
68
+ return null;
69
+ }
70
+ if (res.code === feishu_code_1.CODE_SUCCESS) {
71
+ return res;
72
+ }
73
+ return null;
74
+ }
75
+ catch (error) {
76
+ this.logger.error('getUserInfo 程序执行报错', (error === null || error === void 0 ? void 0 : error.stack) || error);
77
+ return null;
78
+ }
79
+ }
80
+ async getOpenid(nickName) {
81
+ const feishuUserList = await this.getAllContacts('open_id');
82
+ const feishuId = feishuUserList.filter((item) => item.system_fields.name === nickName ||
83
+ (nickName === null || nickName === void 0 ? void 0 : nickName.includes(item.system_fields.name)));
84
+ return feishuId.map((item) => {
85
+ return {
86
+ id: item.user_id,
87
+ };
88
+ });
89
+ }
90
+ async getReceiveIds(nickNameList) {
91
+ const feishuUserList = await this.getContacts();
92
+ const list = Array.from(new Set(nickNameList))
93
+ .filter((item) => item)
94
+ .map((nickName) => {
95
+ const feishuId = feishuUserList.find((item) => item.name === nickName);
96
+ return feishuId === null || feishuId === void 0 ? void 0 : feishuId.open_id;
97
+ })
98
+ .filter((item) => item);
99
+ return list;
100
+ }
101
+ async getReceiveIdsByEhr(nickNameList) {
102
+ const feishuUserList = await this.getAllContacts('open_id');
103
+ const list = Array.from(new Set(nickNameList))
104
+ .filter((item) => item)
105
+ .map((nickName) => {
106
+ const feishuId = feishuUserList.find((item) => item.system_fields.name === nickName);
107
+ return feishuId === null || feishuId === void 0 ? void 0 : feishuId.user_id;
108
+ })
109
+ .filter((item) => item);
110
+ return list;
111
+ }
112
+ async getDepartmentList(department_id, department_id_type = 'department_id') {
113
+ let departments = [];
114
+ const { larkClient } = this;
115
+ const { logger } = this;
116
+ async function loopDepartment(department_id, page_token) {
117
+ const res = await larkClient.contact.department.children({
118
+ params: {
119
+ user_id_type: 'open_id',
120
+ department_id_type,
121
+ fetch_child: true,
122
+ page_size: 50,
123
+ page_token,
124
+ },
125
+ path: {
126
+ department_id,
127
+ },
128
+ });
129
+ if (res.code === feishu_code_1.CODE_SUCCESS) {
130
+ departments = res.data.items.concat(departments);
131
+ if (res.data.has_more) {
132
+ logger.debug(`获取 ${department_id} 子部门全部的数据, ${departments.length}`);
133
+ await loopDepartment(department_id, res.data.page_token);
134
+ }
135
+ }
136
+ }
137
+ logger.debug(`获取 ${department_id} 子部门`);
138
+ await loopDepartment(department_id, '');
139
+ logger.debug(`获取部门总数 ${departments.length}`);
140
+ return departments;
141
+ }
142
+ async getContacts() {
143
+ var _a;
144
+ const appId = this.feishuBaseInstance.appId;
145
+ const contactUserList = (_a = this.contactUserList) === null || _a === void 0 ? void 0 : _a.get(appId);
146
+ if (contactUserList === null || contactUserList === void 0 ? void 0 : contactUserList.length) {
147
+ return contactUserList;
148
+ }
149
+ const { larkClient } = this;
150
+ let userList = [];
151
+ const departmentList = await this.getDepartmentList(0);
152
+ async function getUserList(departmentId, page_token) {
153
+ const response = await larkClient.contact.user.list({
154
+ params: {
155
+ department_id_type: 'department_id',
156
+ page_size: 50,
157
+ page_token,
158
+ department_id: departmentId,
159
+ },
160
+ });
161
+ if (response.code === feishu_code_1.CODE_SUCCESS) {
162
+ userList = userList.concat(response.data.items);
163
+ if (response.data.has_more) {
164
+ this.logger.debug(`获取部门${departmentId}剩余的用户列表`);
165
+ await getUserList(departmentId, response.data.page_token);
166
+ }
167
+ }
168
+ }
169
+ for (const dept of departmentList) {
170
+ this.logger.debug(`获取部门${dept.department_id}用户列表`);
171
+ await getUserList(dept.department_id, '');
172
+ }
173
+ this.logger.debug(`userList过滤前 ${userList.length}`);
174
+ userList = userList
175
+ .filter((item) => (item === null || item === void 0 ? void 0 : item.name) && (item === null || item === void 0 ? void 0 : item.open_id))
176
+ .map((item) => {
177
+ var _a;
178
+ return Object.assign(Object.assign({}, item), { name: item.name, open_id: item.open_id, mobile: (_a = item === null || item === void 0 ? void 0 : item.mobile) === null || _a === void 0 ? void 0 : _a.replace('+86', ''), nickname: item.nickname, user_id: item.user_id });
179
+ });
180
+ userList = _.uniqBy(userList, 'open_id');
181
+ this.logger.debug(`userList过滤后 ${userList.length}`);
182
+ return userList;
183
+ }
184
+ async getAllContacts(user_id_type = 'open_id') {
185
+ var _a;
186
+ const appId = this.feishuBaseInstance.appId;
187
+ const contactListAllKey = `${appId}`;
188
+ const contactListAll = (_a = this.contactListAll) === null || _a === void 0 ? void 0 : _a.get(contactListAllKey);
189
+ if (contactListAll === null || contactListAll === void 0 ? void 0 : contactListAll.length) {
190
+ return contactListAll;
191
+ }
192
+ const { larkClient } = this;
193
+ const { logger } = this;
194
+ let userList = [];
195
+ async function getUserList(page_token) {
196
+ const response = await larkClient.ehr.employee.list({
197
+ params: {
198
+ page_size: 100,
199
+ view: 'full',
200
+ user_id_type,
201
+ page_token,
202
+ },
203
+ });
204
+ logger.debug(`获取通讯录 ${page_token} ${user_id_type}`);
205
+ if (response.code === feishu_code_1.CODE_SUCCESS) {
206
+ userList = userList.concat(response.data.items);
207
+ if (response.data.has_more) {
208
+ await getUserList(response.data.page_token);
209
+ }
210
+ }
211
+ else if ([feishu_code_1.CODE_FREQUENCY_LIMIT, feishu_code_1.INTERNAL_ERROR, feishu_code_1.InternalErrorInner].includes(response.code)) {
212
+ await getUserList(response.data.page_token);
213
+ }
214
+ }
215
+ await getUserList('0');
216
+ this.logger.debug('userList过滤前', userList.length);
217
+ userList = userList
218
+ .filter((user) => user.system_fields.last_day !== '2022-02-23' &&
219
+ user.user_id !== 'ou_641e04a092ef91e515c77cf2bb4f2514')
220
+ .reduce((acc, obj) => {
221
+ const index = acc.findIndex((item) => item.system_fields.mobile === obj.system_fields.mobile);
222
+ if (index >= 0) {
223
+ if (acc[index].system_fields.update_time < obj.system_fields.update_time) {
224
+ acc[index] = obj;
225
+ }
226
+ }
227
+ else {
228
+ acc.push(obj);
229
+ }
230
+ return acc;
231
+ }, []);
232
+ userList = _.uniqBy(userList, 'user_id');
233
+ this.logger.debug('userList过滤后', userList.length);
234
+ this.contactListAll.set(contactListAllKey, userList);
235
+ return userList;
236
+ }
237
+ }
238
+ exports.ContactBase = ContactBase;
239
+ //# sourceMappingURL=contact-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-base.js","sourceRoot":"","sources":["../src/contact-base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import {
2
+ CardActionHandler,
3
+ Client,
4
+ EventDispatcher,
5
+ } from '@larksuiteoapi/node-sdk';
6
+ import { Logger } from '@nestjs/common';
7
+ import { LarkClientCardActionHandlerType, LarkClientParamsType } from './types';
8
+ export declare class FeishuBasePlus {
9
+ protected readonly logger: Logger;
10
+ larkClient: Client;
11
+ appId: string;
12
+ encryptKey: string;
13
+ appSecret: string;
14
+ verificationToken: string;
15
+ eventDispatcher: EventDispatcher;
16
+ cardDispatcher: CardActionHandler;
17
+ static instance: Map<string, FeishuBasePlus>;
18
+ constructor(
19
+ larkClientParams: LarkClientParamsType,
20
+ larkClientCardActionHandler?: LarkClientCardActionHandlerType,
21
+ );
22
+ main(): void;
23
+ initLarkClient(): void;
24
+ initEventDispatcher(): void;
25
+ initCardDispatcher(): void;
26
+ }