1
zrg
2024-10-15 a1e3e548ea03ceb32d07bf9f73f4719dd14f7f2e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using Top.Api.Util;
using Top.Api;
using Top.Api.DingTalk;
 
namespace DingTalk.Api.Request
{
    /// <summary>
    /// TOP API: dingtalk.oapi.v2.user.create
    /// </summary>
    public class OapiV2UserCreateRequest : BaseDingTalkRequest<DingTalk.Api.Response.OapiV2UserCreateResponse>
    {
        /// <summary>
        /// 创建本组织专属帐号时可指定头像MediaId。只支持参考jpg/png,生成方法 https://developers.dingtalk.com/document/app/upload-media-files
        /// </summary>
        public string AvatarMediaId { get; set; }
 
        /// <summary>
        /// 所属部门id列表
        /// </summary>
        public string DeptIdList { get; set; }
 
        /// <summary>
        /// 汇报线架构-员工所在部门链信息
        /// </summary>
        public string DeptName { get; set; }
 
        /// <summary>
        /// 员工在对应的部门中的排序。
        /// </summary>
        public string DeptOrderList { get; set; }
 
        public List<DeptOrderDomain> DeptOrderList_ { set { this.DeptOrderList = TopUtils.ObjectToJson(value); } } 
 
        /// <summary>
        /// 部门内任职
        /// </summary>
        public string DeptPositionList { get; set; }
 
        public List<DeptPositionDomain> DeptPositionList_ { set { this.DeptPositionList = TopUtils.ObjectToJson(value); } } 
 
        /// <summary>
        /// 员工在对应的部门中的职位。
        /// </summary>
        public string DeptTitleList { get; set; }
 
        public List<DeptTitleDomain> DeptTitleList_ { set { this.DeptTitleList = TopUtils.ObjectToJson(value); } } 
 
        /// <summary>
        /// 员工邮箱,长度最大50个字符。企业内必须唯一,不可重复。
        /// </summary>
        public string Email { get; set; }
 
        /// <summary>
        /// 是否专属帐号(true时,不能指定loginEmail或mobile)
        /// </summary>
        public Nullable<bool> ExclusiveAccount { get; set; }
 
        /// <summary>
        /// 专属帐号类型:sso: 企业自建专属帐号;dingtalk:钉钉自建专属帐号。
        /// </summary>
        public string ExclusiveAccountType { get; set; }
 
        /// <summary>
        /// 专属帐号手机号
        /// </summary>
        public string ExclusiveMobile { get; set; }
 
        /// <summary>
        /// 专属帐号手机号验证状态
        /// </summary>
        public string ExclusiveMobileVerifyStatus { get; set; }
 
        /// <summary>
        /// 自定义字段列表
        /// </summary>
        public string ExtAttrs { get; set; }
 
        public List<EmpExtAttrDomain> ExtAttrs_ { set { this.ExtAttrs = TopUtils.ObjectToJson(value); } } 
 
        /// <summary>
        /// 自定义字段更新模式,0-覆盖方式 1-追加方式 (默认是覆盖)
        /// </summary>
        public Nullable<long> ExtAttrsUpdateMode { get; set; }
 
        /// <summary>
        /// 扩展属性,长度最大2000个字符。可以设置多种属性(手机上最多显示10个扩展属性,具体显示哪些属性,请到OA管理后台->设置->通讯录信息设置和OA管理后台->设置->手机端显示信息设置)。 该字段的值支持链接类型填写,同时链接支持变量通配符自动替换,目前支持通配符有:userid,corpid。示例: [工位地址](http://www.dingtalk.com?userid=#userid#&corpid=#corpid#)
        /// </summary>
        public string Extension { get; set; }
 
        /// <summary>
        /// 组织内昵称(花名)
        /// </summary>
        public string FlowerName { get; set; }
 
        /// <summary>
        /// 自定义性别字段
        /// </summary>
        public string Gender { get; set; }
 
        /// <summary>
        /// 汇报线架构-是否有下属
        /// </summary>
        public Nullable<bool> HasSubordinate { get; set; }
 
        /// <summary>
        /// 是否号码隐藏。隐藏手机号后,手机号在个人资料页隐藏,但仍可对其发DING、发起钉钉免费商务电话。
        /// </summary>
        public Nullable<bool> HideMobile { get; set; }
 
        /// <summary>
        /// 入职时间,Unix时间戳,单位ms。
        /// </summary>
        public Nullable<long> HiredDate { get; set; }
 
        /// <summary>
        /// 钉钉专属帐号初始密码
        /// </summary>
        public string InitPassword { get; set; }
 
        /// <summary>
        /// 员工工号,长度最大50个字符。
        /// </summary>
        public string JobNumber { get; set; }
 
        /// <summary>
        /// 是否外包员工
        /// </summary>
        public Nullable<bool> Limited { get; set; }
 
        /// <summary>
        /// 登录邮箱
        /// </summary>
        public string LoginEmail { get; set; }
 
        /// <summary>
        /// 钉钉专属帐号登录名
        /// </summary>
        public string LoginId { get; set; }
 
        /// <summary>
        /// 直属主管
        /// </summary>
        public string ManagerUserid { get; set; }
 
        /// <summary>
        /// 手机号码,企业内必须唯一,不可重复。如果是国际号码,请使用+xx-xxxxxx的格式
        /// </summary>
        public string Mobile { get; set; }
 
        /// <summary>
        /// 员工名称,长度最大80个字符。
        /// </summary>
        public string Name { get; set; }
 
        /// <summary>
        /// 创建本组织专属帐号时可指定昵称
        /// </summary>
        public string Nickname { get; set; }
 
        /// <summary>
        /// 员工的企业邮箱,长度最大100个字符。员工的企业邮箱已开通,才能增加此字段。
        /// </summary>
        public string OrgEmail { get; set; }
 
        /// <summary>
        /// 企业邮箱类型(profession:标准版,base:基础版)
        /// </summary>
        public string OrgEmailType { get; set; }
 
        /// <summary>
        /// 需要添加的专属帐号所属corpid
        /// </summary>
        public string OuterExclusiveCorpid { get; set; }
 
        /// <summary>
        /// 需要添加的专属帐号所属userid
        /// </summary>
        public string OuterExclusiveUserid { get; set; }
 
        /// <summary>
        /// 备注,长度最大2000个字符。
        /// </summary>
        public string Remark { get; set; }
 
        /// <summary>
        /// 是否高管模式。开启后,手机号码对所有员工隐藏。普通员工无法对其发DING、发起钉钉免费商务电话。高管之间不受影响。
        /// </summary>
        public Nullable<bool> SeniorMode { get; set; }
 
        /// <summary>
        /// 分机号,长度最大50个字符。企业内必须唯一,不可重复
        /// </summary>
        public string Telephone { get; set; }
 
        /// <summary>
        /// 职位,长度最大200个字符。
        /// </summary>
        public string Title { get; set; }
 
        /// <summary>
        /// 员工id,长度最大64个字符。员工在当前企业内的唯一标识。
        /// </summary>
        public string Userid { get; set; }
 
        /// <summary>
        /// 办公地点,长度最大100个字符。
        /// </summary>
        public string WorkPlace { get; set; }
 
        #region IDingTalkRequest Members
 
        public override string GetApiName()
        {
            return "dingtalk.oapi.v2.user.create";
        }
 
        public override string GetApiCallType()
        {
            return DingTalkConstants.CALL_TYPE_OAPI;
        }
 
        public override IDictionary<string, string> GetParameters()
        {
            TopDictionary parameters = new TopDictionary();
            parameters.Add("avatarMediaId", this.AvatarMediaId);
            parameters.Add("dept_id_list", this.DeptIdList);
            parameters.Add("dept_name", this.DeptName);
            parameters.Add("dept_order_list", this.DeptOrderList);
            parameters.Add("dept_position_list", this.DeptPositionList);
            parameters.Add("dept_title_list", this.DeptTitleList);
            parameters.Add("email", this.Email);
            parameters.Add("exclusive_account", this.ExclusiveAccount);
            parameters.Add("exclusive_account_type", this.ExclusiveAccountType);
            parameters.Add("exclusive_mobile", this.ExclusiveMobile);
            parameters.Add("exclusive_mobile_verify_status", this.ExclusiveMobileVerifyStatus);
            parameters.Add("ext_attrs", this.ExtAttrs);
            parameters.Add("ext_attrs_update_mode", this.ExtAttrsUpdateMode);
            parameters.Add("extension", this.Extension);
            parameters.Add("flower_name", this.FlowerName);
            parameters.Add("gender", this.Gender);
            parameters.Add("has_subordinate", this.HasSubordinate);
            parameters.Add("hide_mobile", this.HideMobile);
            parameters.Add("hired_date", this.HiredDate);
            parameters.Add("init_password", this.InitPassword);
            parameters.Add("job_number", this.JobNumber);
            parameters.Add("limited", this.Limited);
            parameters.Add("login_email", this.LoginEmail);
            parameters.Add("login_id", this.LoginId);
            parameters.Add("manager_userid", this.ManagerUserid);
            parameters.Add("mobile", this.Mobile);
            parameters.Add("name", this.Name);
            parameters.Add("nickname", this.Nickname);
            parameters.Add("org_email", this.OrgEmail);
            parameters.Add("org_email_type", this.OrgEmailType);
            parameters.Add("outer_exclusive_corpid", this.OuterExclusiveCorpid);
            parameters.Add("outer_exclusive_userid", this.OuterExclusiveUserid);
            parameters.Add("remark", this.Remark);
            parameters.Add("senior_mode", this.SeniorMode);
            parameters.Add("telephone", this.Telephone);
            parameters.Add("title", this.Title);
            parameters.Add("userid", this.Userid);
            parameters.Add("work_place", this.WorkPlace);
            if (this.otherParams != null)
            {
                parameters.AddAll(this.otherParams);
            }
            return parameters;
        }
 
        public override void Validate()
        {
            RequestValidator.ValidateMaxListSize("dept_id_list", this.DeptIdList, 100);
            RequestValidator.ValidateObjectMaxListSize("dept_order_list", this.DeptOrderList, 100);
            RequestValidator.ValidateObjectMaxListSize("dept_position_list", this.DeptPositionList, 999);
            RequestValidator.ValidateObjectMaxListSize("dept_title_list", this.DeptTitleList, 100);
            RequestValidator.ValidateMaxLength("email", this.Email, 50);
            RequestValidator.ValidateObjectMaxListSize("ext_attrs", this.ExtAttrs, 999);
            RequestValidator.ValidateMinValue("hired_date", this.HiredDate, 1);
            RequestValidator.ValidateMaxLength("job_number", this.JobNumber, 50);
            RequestValidator.ValidateMaxLength("login_email", this.LoginEmail, 64);
            RequestValidator.ValidateRequired("name", this.Name);
            RequestValidator.ValidateMaxLength("name", this.Name, 80);
            RequestValidator.ValidateMaxLength("org_email", this.OrgEmail, 100);
            RequestValidator.ValidateMaxLength("remark", this.Remark, 2000);
            RequestValidator.ValidateMaxLength("telephone", this.Telephone, 50);
            RequestValidator.ValidateMaxLength("title", this.Title, 200);
            RequestValidator.ValidateMaxLength("userid", this.Userid, 64);
            RequestValidator.ValidateMaxLength("work_place", this.WorkPlace, 100);
        }
 
    /// <summary>
/// DeptOrderDomain Data Structure.
/// </summary>
[Serializable]
 
public class DeptOrderDomain : TopObject
{
            /// <summary>
            /// 部门id
            /// </summary>
            [XmlElement("dept_id")]
            public Nullable<long> DeptId { get; set; }
    
            /// <summary>
            /// 员工在部门中的排序。
            /// </summary>
            [XmlElement("order")]
            public Nullable<long> Order { get; set; }
}
 
    /// <summary>
/// DeptTitleDomain Data Structure.
/// </summary>
[Serializable]
 
public class DeptTitleDomain : TopObject
{
            /// <summary>
            /// 部门id
            /// </summary>
            [XmlElement("dept_id")]
            public Nullable<long> DeptId { get; set; }
    
            /// <summary>
            /// 员工在部门中的职位。
            /// </summary>
            [XmlElement("title")]
            public string Title { get; set; }
}
 
    /// <summary>
/// DeptPositionDomain Data Structure.
/// </summary>
[Serializable]
 
public class DeptPositionDomain : TopObject
{
            /// <summary>
            /// 部门id
            /// </summary>
            [XmlElement("dept_id")]
            public Nullable<long> DeptId { get; set; }
    
            /// <summary>
            /// 是否是主任职
            /// </summary>
            [XmlElement("is_main")]
            public Nullable<bool> IsMain { get; set; }
    
            /// <summary>
            /// 部门内直属主管员工id
            /// </summary>
            [XmlElement("manager_userid")]
            public string ManagerUserid { get; set; }
    
            /// <summary>
            /// 部门内职位
            /// </summary>
            [XmlElement("title")]
            public string Title { get; set; }
    
            /// <summary>
            /// 部门内办公地
            /// </summary>
            [XmlElement("work_place")]
            public string WorkPlace { get; set; }
}
 
    /// <summary>
/// EmpExtAttrValueDomain Data Structure.
/// </summary>
[Serializable]
 
public class EmpExtAttrValueDomain : TopObject
{
            /// <summary>
            /// 自定义字段图片值
            /// </summary>
            [XmlArray("images")]
            [XmlArrayItem("string")]
            public List<string> Images { get; set; }
    
            /// <summary>
            /// 自定义字段文本值
            /// </summary>
            [XmlElement("text")]
            public string Text { get; set; }
    
            /// <summary>
            /// 自定义字段链接值
            /// </summary>
            [XmlElement("url")]
            public string Url { get; set; }
}
 
    /// <summary>
/// EmpExtAttrDomain Data Structure.
/// </summary>
[Serializable]
 
public class EmpExtAttrDomain : TopObject
{
            /// <summary>
            /// 自定义字段编码
            /// </summary>
            [XmlElement("code")]
            public string Code { get; set; }
    
            /// <summary>
            /// 自定义字段值
            /// </summary>
            [XmlElement("value")]
            public EmpExtAttrValueDomain Value { get; set; }
}
 
        #endregion
    }
}