コード例 #1
0
        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));
        }
コード例 #2
0
ファイル: Global.asax.cs プロジェクト: whj998013/sampleServer
        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);
            });
        }