前言:需求需要獲取企業微信通訊錄成員部門名稱,通過api只能返回最后一級部門名稱,現在需要獲取完整部門,分多級。
首先通過手機號調用企業微信api獲取個人詳細信息,獲取部門id,下面方法直接返回部門全稱
public string getnames(int id) { string str = ""; int pid; partment department = null; //定義好幾個null后面用來組裝或者替換數據 string name = null; department = DepartmentAPI.get(id)[0]; pid = department.getParentid(); name = department.getName();//根據id得到部門名稱和父id if (pid == 1) { str = name+"/"; } while (pid!=1) { //當父id不為1時候,循環,父id為“1”時候表示已經取到最頂層“微信企業號”了 str = name + "/" + str; //拼接部門:海直通用航空有限責任公司/維修工程部/生產計划與控制室 / pid = department.getParentid(); //得到父id department = DepartmentAPI.get(pid)[0]; //根據父id再取上一層部門 name = department.getName(); //重新賦值給name } str = str.Substring(0, str.Length - 1); //去除最后一個“/”:海直通用航空有限責任公司/維修工程部/生產計划與控制室 return str; }
上面用到的DepartmentAPI.get(id) department.getParentid() department.getName() 需要兩個類,partment.cs和DepartmentAPI .cs
public class partment { public int id { get; set; } public string name { get; set; } public int parentid { get; set; } public int getId() { return id; } public void setId(int id) { this.id = id; } public string getName() { return name; } public int getParentid() { return parentid; } public void setParentid(int parentid) { this.parentid = parentid; } public void setName(string name) { this.name = name; } } public class DepartmentAPI { public static List<partment> getAllDepartment() { try { db_cohccardEntities db = new db_cohccardEntities(); WeiXin weixin = new WeiXin(); string mess = string.Empty; List<News> list = new List<News>(); News newsitem = new News(); News news = db.News.Where(u => u.Sys_CoID == 33).FirstOrDefault(); var client = new RestClient("https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=***************"); var request = new RestRequest(Method.GET); request.AddHeader("Postman-Token", "0cc27133-4ee9-4af6-ae75-223e75883142"); request.AddHeader("cache-control", "no-cache"); IRestResponse response = client.Execute(request); dynamic obj = JsonConvert.DeserializeObject<dynamic>(response.Content.ToString()); List<partment> partments =obj.department.ToObject<List<partment>>(); return partments; } catch (Exception ex) { return null; } } public static List<partment> get(int id) { List<partment> list = getAllDepartment(); List<partment> dList = new List<partment>(); if (list != null) { foreach (partment item in list) { if (item.getId().Equals(id)) { dList.Add(item); } } return dList; } return null; } }