Просмотр исходного кода

修复钉钉同步人员信息报错.新增钉钉部门,部门id,职位字段

彭聪 1 год назад
Родитель
Сommit
283fc04217

+ 13 - 0
Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Const/DingTalkConst.cs

@@ -31,4 +31,17 @@ public class DingTalkConst
     /// 工号
     /// </summary>
     public const string JobNumberField = "sys00-jobNumber";
+
+    /// <summary>
+    /// 主部门Id
+    /// </summary>
+    public const string DeptId = "sys00-mainDeptId";
+    /// <summary>
+    /// 主部门
+    /// </summary>
+    public const string Dept = "sys00-mainDept";
+    /// <summary>
+    /// 职位
+    /// </summary>
+    public const string Position = "sys00-position";
 }

+ 19 - 0
Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Entity/DingTalkUser.cs

@@ -73,4 +73,23 @@ public class DingTalkUser : EntityBase
     [SugarColumn(ColumnDescription = "工号", Length = 16)]
     [MaxLength(16)]
     public string? JobNumber { get; set; }
+    /// <summary>
+    /// 主部门Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "主部门Id", Length = 16)]
+    [MaxLength(16)]
+    public string? DeptId { get; set; }
+    /// <summary>
+    /// 主部门
+    /// </summary>
+    [SugarColumn(ColumnDescription = "主部门", Length = 16)]
+    [MaxLength(16)]
+    public string? Dept { get; set; }
+    /// <summary>
+    /// 职位
+    /// </summary>
+    [SugarColumn(ColumnDescription = "职位", Length = 16)]
+    [MaxLength(16)]
+    public string? Position { get; set; }
+
 }

+ 13 - 1
Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Job/SyncDingTalkUserJob.cs

@@ -95,6 +95,9 @@ public class SyncDingTalkUserJob : IJob
             Name = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.NameField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
             Mobile = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.MobileField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
             JobNumber = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.JobNumberField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
+            DeptId = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.DeptId).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
+            Dept = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.Dept).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
+            Position = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.Position).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
         }).ToList();
         if (iUser.Count > 0)
         {
@@ -109,6 +112,9 @@ public class SyncDingTalkUserJob : IJob
             Name = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.NameField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
             Mobile = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.MobileField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
             JobNumber = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.JobNumberField).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
+            DeptId = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.DeptId).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
+            Dept = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.Dept).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
+            Position = res.FieldDataList.Where(u => u.FieldCode == DingTalkConst.Position).Select(u => u.FieldValueList.Select(m => m.Value).FirstOrDefault()).FirstOrDefault(),
         }).ToList();
         if (uUser.Count > 0)
         {
@@ -118,6 +124,9 @@ public class SyncDingTalkUserJob : IJob
                 u.Name,
                 u.Mobile,
                 u.JobNumber,
+                u.DeptId,
+                u.Dept,
+                u.Position,
                 u.UpdateTime,
                 u.UpdateUserName,
                 u.UpdateUserId,
@@ -137,7 +146,10 @@ public class SyncDingTalkUserJob : IJob
             {
                 u.Id,
                 u.JobNumber,
-                u.Mobile
+                u.Mobile,
+                u.DeptId,
+                u.Dept,
+                u.Position
             }).ToListAsync();
         var uSysDingTalkUser = sysDingTalkUser.Select(u => new DingTalkUser
         {

+ 2 - 0
Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Service/Dto/GetDingTalkCurrentEmployeesRosterListInput.cs

@@ -25,5 +25,7 @@ public class GetDingTalkCurrentEmployeesRosterListInput
     /// <summary>
     /// 应用的AgentId
     /// </summary>
+    [Newtonsoft.Json.JsonProperty("agentid")]
+    [System.Text.Json.Serialization.JsonPropertyName("agentid")]
     public string AgentId { get; set; }
 }