public RESTfulModel Save(SaveAuthModel model)
        {
            // 授权信息存数据库
            try
            {
                // 验证

                // jsapi_ticket
                string url_jsapi = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + model.AuthorizerAccessToken + "&type=jsapi";
                LogHelper.Info("获取(刷新)jsapi_ticket url_jsapi", url_jsapi);
                string responseBody_jsapi = HttpHelper.Get(url_jsapi);
                LogHelper.Info("获取(刷新)jsapi_ticket responseBody_jsapi", responseBody_jsapi);
                TicketGetResp resp_jsapi = JsonConvert.DeserializeObject <TicketGetResp>(responseBody_jsapi);

                // api_ticket
                string url_api = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + model.AuthorizerAccessToken + "&type=wx_card";
                LogHelper.Info("获取(刷新)api_ticket url_api", url_api);
                string responseBody_api = HttpHelper.Get(url_api);
                LogHelper.Info("获取(刷新)api_ticket responseBody_api", responseBody_api);
                TicketGetResp resp_api = JsonConvert.DeserializeObject <TicketGetResp>(responseBody_api);

                AuthorizationInfoModel authorizationInfoModel = authorizationInfoDAL.GetModel(model.AuthorizerAppID);
                if (authorizationInfoModel != null)
                {
                    // 更新
                    authorizationInfoDAL.Update(
                        model.AuthorizerAppID,
                        authorizationInfoModel.AuthorizerAccessToken,// 当前的置为旧的,用于消息延时
                        model.AuthorizerAccessToken,
                        model.ExpiresIn,
                        model.AuthorizerRefreshToken,
                        resp_jsapi.Ticket,
                        resp_api.Ticket,
                        model.AuthTime);
                }
                else
                {
                    // 插入
                    authorizationInfoDAL.Insert(
                        model.AuthorizerAppID,
                        model.AuthorizerAccessToken,
                        model.AuthorizerAccessToken,
                        model.ExpiresIn,
                        model.AuthorizerRefreshToken,
                        resp_jsapi.Ticket,
                        resp_api.Ticket,
                        model.AuthTime);
                }

                return(new RESTfulModel()
                {
                    Code = (int)CodeEnum.成功, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.成功), "成功")
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(new RESTfulModel()
                {
                    Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常)
                });
            }
        }
 public RESTfulModel Save(SaveAuthModel model)
 {
     return(authorizationInfoBLL.Save(model));
 }
        public RESTfulModel SaveAuth(string authCode, int expiresIn, string userID)
        {
            try
            {
                DateTime authTime = DateTime.Now;

                #region 4、使用授权码换取公众号的接口调用凭据和授权信息
                string componentAppID = ConfigHelper.ComponentAppId;

                string componentAccessToken = componentAccessTokenDAL.Get();
                string url_4 = "https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=" + componentAccessToken;

                LogHelper.Info("4、使用授权码换取公众号的接口调用凭据和授权信息 url_4", url_4);

                // 4、使用授权码换取公众号的接口调用凭据和授权信息
                AuthorizationInfoGetReq req_4 = new AuthorizationInfoGetReq();
                req_4.ComponentAppId    = componentAppID;
                req_4.AuthorizationCode = authCode;
                string requestBody_4 = JsonConvert.SerializeObject(req_4);

                LogHelper.Info("4、使用授权码换取公众号的接口调用凭据和授权信息 requestBody_4", requestBody_4);

                string responseBody_4 = HttpHelper.Post(url_4, requestBody_4);

                LogHelper.Info("4、使用授权码换取公众号的接口调用凭据和授权信息 responseBody_4", responseBody_4);

                AuthorizationInfoGetResp resp_4 = JsonConvert.DeserializeObject <AuthorizationInfoGetResp>(responseBody_4);
                #endregion

                #region 调用远程接口保存AccessToken信息
                string url = ConfigHelper.DomainToken + "api/accesstoken/save";

                LogHelper.Info("调用远程接口保存AccessToken信息 url", url);

                SaveAuthModel req = new SaveAuthModel()
                {
                    AuthorizerAppID        = resp_4.AuthorizationInfo.AuthorizerAppID,
                    AuthorizerAccessToken  = resp_4.AuthorizationInfo.AuthorizerAccessToken,
                    ExpiresIn              = resp_4.AuthorizationInfo.ExpiresIn,
                    AuthorizerRefreshToken = resp_4.AuthorizationInfo.AuthorizerRefreshToken,
                    AuthTime = authTime
                };
                string requestBody = JsonConvert.SerializeObject(req);

                LogHelper.Info("调用远程接口保存AccessToken信息 requestBody", requestBody);

                string responseBody = HttpHelper.Post(url, requestBody);

                LogHelper.Info("调用远程接口保存AccessToken信息 responseBody", responseBody);

                RESTfulModel resp = JsonConvert.DeserializeObject <RESTfulModel>(responseBody);
                #endregion

                if (resp.Code == 0)
                {
                    #region 权限
                    // 删除权限
                    funcInfoDAL.Delete(resp_4.AuthorizationInfo.AuthorizerAppID);
                    // 插入权限,不存在空集合
                    List <int> funcscopeCategoryIdList = resp_4.AuthorizationInfo.FuncInfo.Select(o => o.FuncscopeCategory.ID).ToList();
                    foreach (var funcscopeCategoryId in funcscopeCategoryIdList)
                    {
                        funcInfoDAL.Insert(resp_4.AuthorizationInfo.AuthorizerAppID, funcscopeCategoryId);
                    }
                    #endregion

                    // 保存授权者信息
                    return(SaveAuthorizer(componentAppID, componentAccessToken, resp_4.AuthorizationInfo.AuthorizerAppID, userID, authTime));
                }
                else
                {
                    return(new RESTfulModel()
                    {
                        Code = (int)CodeEnum.保存授权信息失败, Msg = codeMsgDAL.GetByCode((int)CodeEnum.保存授权信息失败)
                    });
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(new RESTfulModel()
                {
                    Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常)
                });
            }
        }