public IHttpActionResult DdCallBack(dynamic e) { //接收回调事件 string encrypt = (string)e.encrypt; var request = HttpContext.Current.Request; string signature = request["signature"]; string timestamp = request["timestamp"]; string nonce = request["nonce"]; DdEncrypt de = new DdEncrypt(DdOperator.GetDdApi()); //解密加调事件 string re = de.DecryptMsg(encrypt, signature, timestamp, nonce); //处理回调事件 Task.Run(() => { //事件为审批回调,启用异步处理 dynamic robj = JsonHelper.ToObj(re); DdCallBackSysOper.GetOper().DdCallBack(robj); }); //返回加密成功标志给钉钉 var obj = de.EncryptMsg("success"); return(Ok(obj)); }
protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); //钉钉初始化 DdOperator ddOper = DdOperator.GetDdApi(); ddOper.CorpId = ConfigurationManager.AppSettings["CorpId"]; ddOper.CorpSecret = ConfigurationManager.AppSettings["CorpSecret"]; ddOper.AgentID = ConfigurationManager.AppSettings["AgentID"]; var dbso = DdCallBackSysOper.GetOper(); dbso.SysPath = HttpContext.Current.Server.MapPath("~"); Task.Factory.StartNew(() => { ddOper.SetDept(new DeptOper().GetDepts()); }); Task.Run(async delegate { await Task.Delay(5000); //注册回调 DdCallbackOper dcb = new DdCallbackOper(ddOper); dcb.CallBackUrl = Config.GetSampleConfig().CallBackUrl; dcb.RegisterCallBack(); //处理历吏回调 bool hasMore = false; do { var re = dcb.GetFailCallBack(); re.FailedList.ForEach(p => { dynamic robj = JsonHelper.ToObj(p.BpmsInstanceChange); dbso.DdCallBack(robj.bpmsCallBackData); }); hasMore = re.HasMore; } while (hasMore); }); }