public DingHelper() { if (string.IsNullOrWhiteSpace(_accessToken)) { var obj = HttpHelper.HttpGet("https://oapi.dingtalk.com/gettoken?appkey=dingklt9rga2qkadjq8y&appsecret=arrM5lbKTHxFT6Kx-xohhqvF9Wrbt5jEASA97Up_U42Z4H9TLbVEehcoeeWsHUzU"); _accessToken = JsonHelper.DeserializeJsonToObject <dynamic>(obj).access_token; } }
/// <summary> /// 获取审批实例 /// </summary> /// <param name="process_instance_id"></param> /// <returns></returns> public dynamic GetProcessInstance(string process_instance_id) { Dictionary <string, object> dic = new Dictionary <string, object>(); dic.Add("process_instance_id", process_instance_id); var response = HttpHelper.Post($"https://oapi.dingtalk.com/topapi/processinstance/get?access_token={_accessToken}", JsonHelper.SerializeObject(dic)); return(JsonHelper.DeserializeJsonToObject <dynamic>(response.ToString())); }
/// <summary> /// 发送工作消息 /// </summary> /// <returns></returns> public dynamic GetCorpconversation(string userId, tongjiModel msg) { Dictionary <string, object> dic = new Dictionary <string, object>(); dic.Add("agent_id", "248921930"); dic.Add("userid_list", userId); dic.Add("msg", msg); var response = HttpHelper.Post($"https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token={_accessToken}", JsonHelper.SerializeObject(dic)); return(JsonHelper.DeserializeJsonToObject <dynamic>(response.ToString())); }
/// <summary> /// 查询请假状态 /// </summary> /// <param name="userIdList"></param> /// <param name="start_time">开始时间 ,UNIX时间戳,支持最多180天的查询</param> /// <param name="end_time"></param> /// <param name="offset"></param> /// <param name="limit"></param> /// <returns></returns> public dynamic Getleavestatus(string userid_list, long start_time, long end_time, int offset, int size) { Dictionary <string, object> dic = new Dictionary <string, object>(); dic.Add("userid_list", userid_list); dic.Add("start_time", start_time); dic.Add("end_time", end_time); dic.Add("offset", offset); dic.Add("size", size); var response = HttpHelper.Post($"https://oapi.dingtalk.com/topapi/attendance/getleavestatus?access_token={_accessToken}", JsonHelper.SerializeObject(dic)); return(JsonHelper.DeserializeJsonToObject <dynamic>(response.ToString())); }
/// <summary> /// 批量获取审批实例id /// </summary> /// <param name="userid_list"></param> /// <param name="start_time"></param> /// <param name="end_time"></param> /// <param name="cursor"></param> /// <param name="size"></param> /// <returns></returns> public ProcessInstanceResult GetProcessInstanceIds(string userid_list, long start_time, long end_time, int cursor, int size = 10) { Dictionary <string, object> dic = new Dictionary <string, object>(); dic.Add("process_code", "PROC-84D8542B-C0D8-4476-9087-A68322D2F8E6"); dic.Add("userid_list", userid_list); dic.Add("start_time", start_time); dic.Add("end_time", end_time); dic.Add("cursor", cursor); dic.Add("size", size); var response = HttpHelper.Post($"https://oapi.dingtalk.com/topapi/processinstance/listids?access_token={_accessToken}", JsonHelper.SerializeObject(dic)); return(JsonHelper.DeserializeJsonToObject <ProcessInstanceResult>(response.ToString())); }
/// <summary> /// 获取打卡详情 /// </summary> /// <param name="userIds"></param> /// <returns></returns> public dynamic GetAttendanceListRecord(string userIdList, DateTime checkDateFrom, DateTime checkDateTo) { Dictionary <string, object> dic = new Dictionary <string, object>(); var ids = new List <string>(); ids.Add(userIdList); dic.Add("userIds", ids); dic.Add("isI18n", "false"); dic.Add("checkDateFrom", checkDateFrom.ToString("yyyy-MM-dd HH:mm:ss")); dic.Add("checkDateTo", checkDateTo.ToString("yyyy-MM-dd HH:mm:ss")); var response = HttpHelper.Post($"https://oapi.dingtalk.com/attendance/listRecord?access_token={_accessToken}", JsonHelper.SerializeObject(dic)); return(JsonHelper.DeserializeJsonToObject <dynamic>(response.ToString())); }
/// <summary> /// 获取打卡结果 /// </summary> /// <param name="userId"></param> /// <returns></returns> public Attendance GetAttendance(string userIdList, DateTime workDateFrom, DateTime workDateTo, int offset, int limit) { Dictionary <string, object> dic = new Dictionary <string, object>(); var ids = new List <string>(); ids.Add(userIdList); dic.Add("userIdList", ids); dic.Add("workDateFrom", workDateFrom.ToString("yyyy-MM-dd HH:mm:ss")); dic.Add("workDateTo", workDateTo.ToString("yyyy-MM-dd HH:mm:ss")); dic.Add("offset", offset.ToString()); dic.Add("limit", limit.ToString()); var response = HttpHelper.Post($"https://oapi.dingtalk.com/attendance/list?access_token={_accessToken}", JsonHelper.SerializeObject(dic)); return(JsonHelper.DeserializeJsonToObject <Attendance>(response.ToString())); }
/// <summary> /// 发送消息 /// </summary> /// <returns></returns> public dynamic SendChat(string cid, string content) { Dictionary <string, string> dic = new Dictionary <string, string>(); var msg = new TextMsg(); msg.msgtype = "text"; msg.text = new Text(); msg.text.content = content; dic.Add("sender", "0540636631658"); dic.Add("cid", cid); //dic.Add("chatid", "0b261630e9743b229cb12861dd550185"); dic.Add("msg", JsonHelper.SerializeObject(msg)); var response = HttpHelper.Post($"https://oapi.dingtalk.com/message/send_to_conversation?access_token={_accessToken}", JsonHelper.SerializeObject(dic)); return(JsonHelper.DeserializeJsonToObject <dynamic>(response.ToString())); }
/// <summary> /// 设置高级查询 /// </summary> /// <returns></returns> public string SetStrWhereHtml() { var TableModel = this.GetTableModel(); var TableFielModelList = this.GetTableFieldModel(); string strHtml = ""; if (TableModel.IsWhere == 1) { if (TableFielModelList != null && TableFielModelList.Count > 0) { var SEOHtml = ""; var SEOValue = ""; var SEOText = ""; foreach (var item in TableFielModelList) { string type = item.SelectType.ToString(); switch (type) { case "1": strHtml += "<div class=\"col-lg-2\" style=\"width: 12%;\">"; strHtml += "<label class=\"col-xs control-label table-label\">" + item.FieldText + "<span class=\"text-danger\">(模糊查询)</span></label >"; strHtml += "<input type=\"text\" name=\"" + item.FieldKey + "\" class=\"form-control\" placeholder=\"" + item.FieldText + "\" />"; strHtml += "</div>"; break; case "2": strHtml += "<div class=\"col-lg-2\" style=\"width: 12%;\">"; strHtml += "<label class=\"col-xs control-label table-label\">" + item.FieldText + "<span class=\"text-danger\">(下拉查询)</span></label >"; strHtml += "<select name=\"" + item.FieldKey + "\" class=\"form-control select2 select2-hidden-accessible\" aria-hidden=\"true\" >"; strHtml += "<option selected = \"selected\" value = \"AllOption\" >全部</option >"; string data = item.SelectData; System.Data.DataTable objdata = JsonHelper.DeserializeJsonToObject <System.Data.DataTable>(data); if (objdata != null && objdata.Rows.Count > 0) { for (int j = 0; j < objdata.Rows.Count; j++) { if (objdata.Rows[j][0].ToString().ToUpper() == "SQL") { var sqldata = objdata.Rows[j][1].ToString(); System.Data.DataTable tsqldt = BaseClass.GetDataTable(BaseClass.GetValueForKey(sqldata)); if (tsqldt != null && tsqldt.Rows.Count > 0) { for (int m = 0; m < tsqldt.Rows.Count; m++) { strHtml += "<option value = \"" + tsqldt.Rows[m][1].ToString() + "\" >" + tsqldt.Rows[m][0].ToString() + "</option >"; } } } else { strHtml += "<option value = \"" + objdata.Rows[j][1].ToString() + "\" >" + objdata.Rows[j][0].ToString() + "</option >"; } } } strHtml += "</select>"; strHtml += "</div>"; break; case "3": strHtml += "<div class=\"col-lg-2\" style=\"width: 12%;\">"; strHtml += "<label class=\"col-xs control-label table-label\">" + item.FieldText + "<span class=\"text-danger\">(等于查询)</span></label >"; strHtml += "<input type=\"text\" name=\"" + item.FieldKey + "\" data-type=\"datepicker\" class=\"form-control\" placeholder=\"" + item.FieldText + "\" />"; strHtml += "</div>"; break; case "4": var value = item.SelectData; var datatype = "datepicker"; var minView = "day"; var format = "yyyy-mm-dd"; if (value == "yearM" || value == "date") { datatype = "datepicker"; if (value == "yearM") { minView = "3"; format = "yyyy-mm"; } else if (value == "date") { minView = "2"; format = "yyyy-mm-dd"; } } else if (value == "time1" || value == "time2") { datatype = "datetimepicker"; minView = "0"; if (value == "time1") { format = "yyyy-mm-dd hh:ii"; } else if (value == "time2") { format = "yyyy-mm-dd hh:ii:ss"; } } strHtml += "<div class=\"col-lg-3\">"; strHtml += "<label class=\"col-xs control-label table-label\" style=\"width:100%;\">" + item.FieldText + "<span class=\"text-danger\">(时间查询)<span></label >"; strHtml += "<input type=\"text\" style=\"width:40%;display: inline;\" name=\"" + item.FieldKey + "__Start\" data-type=\"" + datatype + "\" class=\"form-control\" placeholder=\"起始时间\" id=\"" + item.FieldKey + "__Start\" />"; strHtml += " <input type=\"text\" style=\"width:40%;display: inline;\" name=\"" + item.FieldKey + "__End\" data-type=\"" + datatype + "\" class=\"form-control\" placeholder=\"截止时间\" id=\"" + item.FieldKey + "__End\" />"; strHtml += "</div>"; strHtml += "<script src=\"../../Script/AdminLTE-2.4.2/bower_components/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js\"></script>"; strHtml += "<script>$('#" + item.FieldKey + "__Start').datetimepicker({format: '" + format + "',autoclose : true,minView: '" + minView + "',todayBtn: true,minuteStep: 1});$('#" + item.FieldKey + "__End').datetimepicker({format: '" + format + "',autoclose : true,minView: '" + minView + "',todayBtn: true,minuteStep: 1})</script>"; break; case "5": SEOValue += item.FieldKey + ","; SEOText += item.FieldText + "、"; break; default: break; } } strHtml += "<div bnt-click=\"Select\" class=\"col-sm-1 table-p\" style=\"margin-top:30px;\"><button type =\"button\" class=\"btn btn-danger pull-right btn-block btn-primary\">查询</button></div>"; if (SEOValue.Length > 0) { SEOHtml += "<div class=\"col-lg-2\">"; SEOHtml += "<label class=\"col-xs control-label table-label\">搜索<span class=\"text-danger\">(" + SEOText.TrimEnd('、') + ")</span></label >"; SEOHtml += "<input type=\"text\" bnt-keyup=\"SEOFieldKey\" bnt-value=\"" + SEOValue.TrimEnd(',') + "\" name=\"SEOFieldKey\" data-type=\"datepicker\" class=\"form-control\" placeholder=\"搜索\" />"; SEOHtml += "</div>"; strHtml = SEOHtml + strHtml; } } } return(strHtml); }
/// <summary> /// 获取用户详情 /// </summary> /// <param name="userId"></param> /// <returns></returns> public dynamic GetUserDetail(string userId) { var response = HttpHelper.HttpGet($"https://oapi.dingtalk.com/user/get?access_token={_accessToken}&userid={userId}"); return(JsonHelper.DeserializeJsonToObject <dynamic>(response)); }
/// <summary> /// 部门id获取所有用户的id /// </summary> /// <param name="deptId"></param> public dynamic GetUserIds(string deptId) { var response = HttpHelper.HttpGet($"https://oapi.dingtalk.com/user/getDeptMember?access_token={_accessToken}&deptId={deptId}"); return(JsonHelper.DeserializeJsonToObject <dynamic>(response).userIds); }
/// <summary> /// 获取所有部门信息 /// </summary> /// <returns></returns> public dynamic GetDepartment() { var response = HttpHelper.HttpGet($"https://oapi.dingtalk.com/department/list?access_token={_accessToken}"); return(JsonHelper.DeserializeJsonToObject <dynamic>(response).department); }
/// <summary> /// 获取jsapi_ticket /// </summary> /// <returns></returns> public string GetTicket() { var response = HttpHelper.HttpGet($"https://oapi.dingtalk.com/get_jsapi_ticket?access_token={_accessToken}"); return(JsonHelper.DeserializeJsonToObject <dynamic>(response.ToString()).ticket); }
//设置高级查询 public string SetStrWhereHtml() { DataTable dt = TableFieldInfo; string strHtml = ""; if (TableModel.IsWhere == 1) { if (dt != null && dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { string type = dt.Rows[i]["SelectType"].ToString(); switch (type) { case "1": strHtml += "<div class=\"col-lg-2 col-xs-5 table-s\">"; strHtml += "<label class=\"col-xs control-label table-label\">" + dt.Rows[i]["FieldValue"].ToString() + "<span class=\"text-danger\">(模糊查询)</span></label >"; strHtml += "<input type=\"text\" name=\"" + dt.Rows[i]["FieldKey"].ToString() + "|" + dt.Rows[i]["SelectType"].ToString() + "\" class=\"form-control\" placeholder=\"" + dt.Rows[i]["FieldValue"].ToString() + "\" />"; strHtml += "</div>"; break; case "2": strHtml += "<div class=\"col-lg-2 col-xs-5 table-s\">"; strHtml += "<label class=\"col-xs control-label table-label\">" + dt.Rows[i]["FieldValue"].ToString() + "<span class=\"text-danger\">(下拉查询)</span></label >"; strHtml += "<select name=\"" + dt.Rows[i]["FieldKey"].ToString() + "|" + dt.Rows[i]["SelectType"].ToString() + "\" class=\"form-control select2 select2-hidden-accessible\" tabindex=\"-1\" aria-hidden=\"true\" >"; strHtml += "<option selected = \"selected\" value = \"00\" >全部</option >"; string data = dt.Rows[i]["SelectData"].ToString(); DataTable objdata = JsonHelper.DeserializeJsonToObject <DataTable>(data); if (objdata != null && objdata.Rows.Count > 0) { for (int j = 0; j < objdata.Rows.Count; j++) { if (objdata.Rows[j][0].ToString().ToUpper() == "SQL") { var sqldata = objdata.Rows[j][1].ToString(); DataTable tsqldt = BaseClass.GetDataTable(BaseClass.GetSgForStr(sqldata)); if (tsqldt != null && tsqldt.Rows.Count > 0) { for (int m = 0; m < tsqldt.Rows.Count; m++) { strHtml += "<option value = \"" + tsqldt.Rows[m][1].ToString() + "\" >" + tsqldt.Rows[m][0].ToString() + "</option >"; } } } else { strHtml += "<option value = \"" + objdata.Rows[j][1].ToString() + "\" >" + objdata.Rows[j][0].ToString() + "</option >"; } } } strHtml += "</select>"; strHtml += "</div>"; break; case "3": strHtml += "<div class=\"col-lg-2 col-xs-5 table-s\">"; strHtml += "<label class=\"col-xs control-label table-label\">" + dt.Rows[i]["FieldValue"].ToString() + "<span class=\"text-danger\">(等于查询)<span></label >"; strHtml += "<input type=\"text\" name=\"" + dt.Rows[i]["FieldKey"].ToString() + "|" + dt.Rows[i]["SelectType"].ToString() + "\" data-type=\"datepicker\" class=\"form-control\" placeholder=\"" + dt.Rows[i]["FieldValue"].ToString() + "\" />"; strHtml += "</div>"; break; default: break; } } strHtml += "<div bnt-click=\"Select\" class=\"col-sm-1 table-p\" style=\"margin-top:30px;\"><button type =\"button\" class=\"btn btn-danger pull-right btn-block btn-primary\">查询</button></div>"; } } return(strHtml); }
/** * 设置数据值 * @param key 字段名 * @param value 字段值 */ public void SetValues(string json) { m_values = JsonHelper.DeserializeJsonToObject <SortedDictionary <string, object> >(json); }