using ConsoleApp1.Controller.Sql_controller;
using DingTalk.Api;
using DingTalk.Api.Request;
using DingTalk.Api.Response;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1.Controller.DDing_API
{
///
/// 钉钉接口类
///
public class DingdingAPI
{
private DateTime dtttime;
private static HttpHepler http = new HttpHepler();
//房德
//AUTHCORPID(被授权方(房德)corpid)
//private static String auth_corpid = "ding81b4dfad3a436bd735c2f4657eb6378f";
//CUSTOMKEY
private static String accessKey = "dingrfl7dbbgi0t1ygdl";
//CUSTOMSECTET
private static String accessSecret = "ocqGE5j-fW4yHIdqV2CLH8vTBY34EEoRT-FRh_wPO9uvvZoDDbrUFKdYcdXby1gB";
private static string access_token = "";
private static string agentid = "1109021768";
///
/// 获取Token
///
/// ·
public string getAccessToken()
{
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
OapiGettokenRequest req = new OapiGettokenRequest();
req.Appkey = accessKey;
req.Appsecret = accessSecret;
req.SetHttpMethod("GET");
OapiGettokenResponse rsp = client.Execute(req, access_token);
Console.WriteLine(rsp.Body);
JObject json = JsonConvert.DeserializeObject(rsp.Body.ToString());
access_token = json["access_token"].ToString();
return access_token;
}
public string dttoken()
{
if (dtttime.ToString() == "0001/1/1 0:00:00")
{
dtttime = DateTime.Now;
access_token = getAccessToken();
}
if (dtttime.ToString() != "0001/1/1 0:00:00" && (dtttime.AddHours(2) < dtttime))
{
access_token = getAccessToken();
}
return access_token;
}
///
/// 获取企业授权信息
///
///
//public string get_auth_info()
//{
// IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/get_auth_info");
// OapiServiceGetAuthInfoRequest req = new OapiServiceGetAuthInfoRequest();
// req.AuthCorpid = "ding81b4dfad3a436bd735c2f4657eb6378f";
// OapiServiceGetAuthInfoResponse rsp = client.Execute(req, accessKey, accessSecret, suiteTicket);
// JObject json = JsonConvert.DeserializeObject(rsp.Body.ToString());
// //string aaa = json["auth_corp_info"]["corpid"].ToString();
// agentid = json["auth_info"]["agent"][0]["agentid"].ToString();
// return agentid;
//}
///
/// 获取花名册元数据
///
///
public string smartwork(string token)
{
string url = "https://oapi.dingtalk.com/topapi/smartwork/hrm/roster/meta/get?access_token=" + token;
string dictionary = "{\"agentid\"" + ":" + "\"" + agentid + "\"}";
var str = http.HttpPost(url, dictionary);
return str.ToString();
}
///
/// 更新员工花名册信息
///
///
public string employee(Dictionary dic)
{
try
{
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/update");
OapiV2UserUpdateRequest req = new OapiV2UserUpdateRequest();
req.Userid = dic["F0000019"].ToString();
req.Title = dic["F0000011"].ToString();
req.DeptIdList = dic["F0000009"].ToString();
List list2 = new List();
OapiV2UserUpdateRequest.DeptOrderDomain obj3 = new OapiV2UserUpdateRequest.DeptOrderDomain();
list2.Add(obj3);
obj3.DeptId = Convert.ToInt32(dic["F0000009"].ToString());
obj3.Order = 1L;
req.DeptOrderList_ = list2;
List list5 = new List();
OapiV2UserUpdateRequest.DeptTitleDomain obj6 = new OapiV2UserUpdateRequest.DeptTitleDomain();
list5.Add(obj6);
obj6.DeptId = Convert.ToInt32(dic["F0000009"].ToString());
obj6.Title = dic["F0000010"].ToString();
req.DeptTitleList_ = list5;
OapiV2UserUpdateResponse rsp = client.Execute(req, access_token);
Console.WriteLine(rsp.Body);
return rsp.Body;
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 更新花名册信息
///
/// Userid
/// GroupId
/// 值
/// Code
///
public string employee(string Userid, string GroupId, string Value, string FieldCode)
{
try
{
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/v2/update");
OapiSmartworkHrmEmployeeV2UpdateRequest req = new OapiSmartworkHrmEmployeeV2UpdateRequest();
req.Agentid = 1041506050L;
OapiSmartworkHrmEmployeeV2UpdateRequest.EmpUpdateByCustomParamDomain obj1 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpUpdateByCustomParamDomain();
List list3 = new List();
OapiSmartworkHrmEmployeeV2UpdateRequest.EmpGroupFieldVoDomain obj4 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpGroupFieldVoDomain();
list3.Add(obj4);
List list6 = new List();
OapiSmartworkHrmEmployeeV2UpdateRequest.EmpListFieldVoDomain obj7 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpListFieldVoDomain();
list6.Add(obj7);
List list9 = new List();
OapiSmartworkHrmEmployeeV2UpdateRequest.EmpFieldVoDomain obj10 = new OapiSmartworkHrmEmployeeV2UpdateRequest.EmpFieldVoDomain();
list9.Add(obj10);
obj10.FieldCode = FieldCode;
obj10.Value = Value;
obj7.Section = list9;
obj4.Sections = list6;
obj4.GroupId = GroupId;
obj1.Groups = list3;
obj1.Userid = Userid;
req.Param_ = obj1;
OapiSmartworkHrmEmployeeV2UpdateResponse rsp = client.Execute(req, access_token);
Console.WriteLine(rsp.Body);
return rsp.Body;
}
catch (Exception ex)
{
throw ex;
}
}
public string The_Contract(Dictionary dic)
{
string FieldCode = "", Value = "", Userid = dic["F0000014"].ToString();
try
{
foreach (var item in dic.Keys)
{
switch (item)
{
case "F0000010": //现合同开始日期
FieldCode = "sys05-nowContractStartTime";
Value = dic["F0000010"].ToString();
The_Contract(Userid, Value, FieldCode);
break;
case "F0000011": //现合同结束日期
FieldCode = "sys05-nowContractEndTime";
Value = dic["F0000011"].ToString();
The_Contract(Userid, Value, FieldCode);
break;
case "F0000026": //续签期限
FieldCode = "sys05-contractPeriodType";
Value = dic["F0000026"].ToString();
switch (Value)
{
case "无":
Value = "1";
break;
case "6个月":
Value = "2";
break;
case "12个月":
Value = "3";
break;
case "24个月":
Value = "4";
break;
case "36个月或以上":
Value = "5";
break;
default:
break;
}
The_Contract(Userid, Value, FieldCode);
break;
case "F0000016": //续签次数
FieldCode = "sys05-contractRenewCount";
Value = dic["F0000016"].ToString();
The_Contract(Userid, Value, FieldCode);
break;
default:
break;
}
}
return "Ok";
}
catch (Exception ex)
{
throw ex;
}
}
///
/// 更新花名册信息
///
///
public string The_Contract(string Userid, string value, string FieldCode)
{
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/update");
OapiSmartworkHrmEmployeeUpdateRequest req = new OapiSmartworkHrmEmployeeUpdateRequest();
OapiSmartworkHrmEmployeeUpdateRequest.PreEntryEmployeeAddParamDomain obj1 = new OapiSmartworkHrmEmployeeUpdateRequest.PreEntryEmployeeAddParamDomain();
obj1.Userid = Userid;
List list3 = new List();
OapiSmartworkHrmEmployeeUpdateRequest.GroupMetaInfoDomain obj4 = new OapiSmartworkHrmEmployeeUpdateRequest.GroupMetaInfoDomain();
list3.Add(obj4);
obj4.GroupId = "sys05";
List list6 = new List();
OapiSmartworkHrmEmployeeUpdateRequest.EmpListFieldVODomain obj7 = new OapiSmartworkHrmEmployeeUpdateRequest.EmpListFieldVODomain();
list6.Add(obj7);
List list9 = new List();
OapiSmartworkHrmEmployeeUpdateRequest.EmpFieldVoDomain obj10 = new OapiSmartworkHrmEmployeeUpdateRequest.EmpFieldVoDomain();
list9.Add(obj10);
obj10.Value = value;
obj10.FieldCode = FieldCode; //起始日
obj7.Section = list9;
obj4.Sections = list6;
obj1.Groups = list3;
req.Param_ = obj1;
req.Agentid = Convert.ToInt32(agentid);
OapiSmartworkHrmEmployeeUpdateResponse rsp = client.Execute(req, access_token);
Console.WriteLine(rsp.Body);
return rsp.Body;
}
///
/// 批量获取员工花名册字段信息
///
/// Token
/// 员工ID列表-最长长度20
///
public string smartwork_list(string access_token, string userid_list, string field_filter_list)
{
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/list");
OapiSmartworkHrmEmployeeListRequest req = new OapiSmartworkHrmEmployeeListRequest();
req.UseridList = userid_list;
//req.FieldFilterList = field_filter_list.ToString();
OapiSmartworkHrmEmployeeListResponse rsp = client.Execute(req, access_token);
return rsp.Body;
}
///
/// 查询公司在职员工列表
///
/// Token
/// 员工状态
/// 分页起始值
/// 分页大小
/// UserId 员工ID
public string smartwork_smartwork(string access_token, string status_list = "2,3,5,-1", int offset = 0, int size = 50)
{
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/queryonjob");
OapiSmartworkHrmEmployeeQueryonjobRequest req = new OapiSmartworkHrmEmployeeQueryonjobRequest();
req.StatusList = "2,3,5,-1";
req.Offset = offset;
req.Size = size;
OapiSmartworkHrmEmployeeQueryonjobResponse rsp = client.Execute(req, access_token);
return rsp.Body;
}
///
/// 智能人事获取员工花名册信息
///
///
public string listemployee(string userid)
{
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/v2/list");
OapiSmartworkHrmEmployeeV2ListRequest req = new OapiSmartworkHrmEmployeeV2ListRequest();
req.UseridList = userid;
req.Agentid = Convert.ToInt32(agentid);
OapiSmartworkHrmEmployeeV2ListResponse rsp = client.Execute(req, access_token);
//Console.WriteLine(rsp.Body);
return rsp.Body;
}
}
}