Ejemplo n.º 1
0
        public ApiBase(string apiKey, EnvironmentSetting setting)
        {
            if (string.IsNullOrEmpty(apiKey))
            {
                throw new ArgumentException("API key must be not null or empty");
            }

            ParameterValidator.ValidateNotNull(setting, "Environment Setting");

            Environment = setting.EnvironmentName;

            if (setting.Services.ContainsKey(apiKey))
            {
                var serviceSetting = setting.Services[apiKey];
                Host            = serviceSetting.Host;
                ResourceAddress = serviceSetting.ResourceAddress;
                SubscriptionKey = serviceSetting.SubscriptionKey;
            }

            BaseUrl = Host;

            UserAccount = setting.UserAccounts.Where(x => x.Agent.Equals("breeze", StringComparison.CurrentCultureIgnoreCase)).First();

            AccessToken = AccessTokenHelper.GetAccessToken(setting.BrowserName, setting.WebUrl, UserAccount.Email, UserAccount.Password);
        }
Ejemplo n.º 2
0
        public HttpResponseMessage PostUser(UserModel user)
        {
            try
            {
                var isValidToken = AccessTokenHelper.ValidateAccessToken(user.AccessToken);
                if (!isValidToken)
                {
                    return(new HttpResponseMessage(HttpStatusCode.BadRequest)
                    {
                        Content = new StringContent("Invalid access token!")
                    });
                }
                var service = new DbService();
                service.PostUser(user);
                return(new HttpResponseMessage(HttpStatusCode.OK));
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("Duplicate") && ex.Message.Contains("MobileNumber"))
                {
                    return(new HttpResponseMessage(HttpStatusCode.BadRequest)
                    {
                        Content = new StringContent("Mobile Number already exits please provide a unique Number")
                    });
                }

                return(new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(ex.Message)
                });
            }
        }
Ejemplo n.º 3
0
        public async Task <RefreshTokenDm> RefreshAsync(RefreshTokenVm refreshTokenVm)
        {
            await SetActiveAccessTokenAsync(refreshTokenVm.RefreshToken);

            if (_activeAccessToken is null)
            {
                return(CreateInvalidResult(EResultStatus.InvalidRefreshToken));
            }

            if (!_activeAccessToken.IsActive)
            {
                return(CreateInvalidResult(EResultStatus.InvalidRefreshToken));
            }

            if (!IsValidationAccessToken(refreshTokenVm.AccessToken))
            {
                return(CreateInvalidResult(EResultStatus.InvalidRefreshToken));
            }

            if (!AccessTokenHelper.IsValidationExpirationDate(_activeAccessToken.ExpirationDate))
            {
                return(CreateInvalidResult(EResultStatus.RefreshTokenExpired));
            }


            return(CreateSuccessResult());
        }
        public void OnAuthorization(AuthorizationFilterContext context)
        {
            var guidAccessToken = ApplicationHelper.GetAuthorizationToken(context.HttpContext);

            if (IsNullOrWhiteSpace(guidAccessToken))
            {
                context.Result = CreateResult(EResultStatus.InvalidToken);
                return;
            }

            var jsonAccessToken = EncryptionHelper.AesDecryptString(guidAccessToken);

            if (IsNullOrEmpty(jsonAccessToken))
            {
                context.Result = CreateResult(EResultStatus.InvalidToken);
                return;
            }

            var accessTokenDataVm = jsonAccessToken.ObjectDeserialize <AccessTokenDataVm>();

            if (accessTokenDataVm is null)
            {
                context.Result = CreateResult(EResultStatus.InvalidToken);
                return;
            }

            if (!AccessTokenHelper.IsValidationExpirationDate(accessTokenDataVm.ExpirationDate))
            {
                context.Result = CreateResult(EResultStatus.AccessTokenExpired);
            }
        }
Ejemplo n.º 5
0
        public void GetAccessTokenTest()
        {
            string appid        = ConfigurationManager.AppSettings["WeixinAppId"];
            string secret       = ConfigurationManager.AppSettings["WeixinAppSecret"];
            string access_token = AccessTokenHelper.GetTokenForSqlServer(appid, secret);

            Assert.IsNotNull(access_token);
        }
        /// <summary>
        /// 订阅(关注)事件
        /// </summary>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage)
        {
            //var responseMessage = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage);
            //responseMessage.Content = GetWelcomeInfo();
            //if (!string.IsNullOrEmpty(requestMessage.EventKey))
            //{
            //    responseMessage.Content += "\r\n============\r\n场景值:" + requestMessage.EventKey;
            //}

            var responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageNews>(requestMessage);

            WeixinUserInfoResult user = null;

            try
            {
                user = WeixinApi.GetUserInfo(AccessTokenHelper.GetTokenForSqlServer(ConfigurationManager.AppSettings["WeixinAppId"], ConfigurationManager.AppSettings["WeixinAppSecret"]), WeixinOpenId);

                responseMessage.Articles.Add(new Article()
                {
                    Title = user.nickname + ",您有一个0元设计未领", PicUrl = "http://material-ui.net/content/zixun.jpg", Url = "http://material-ui.net/booking.html", Description = user.nickname + ",您有一个0元设计未领。实力整装,省钱,省力,省心。"
                });
            }
            catch (Exception ex)
            {
                responseMessage.Articles.Add(new Article()
                {
                    Title = "您有一个0元设计未领", PicUrl = "http://material-ui.net/content/zixun.jpg", Url = "http://material-ui.net/booking.html", Description = "您有一个0元设计未领。实力整装,省钱,省力,省心。" + ex.Message
                });
            }


            //获取订阅用户昵称

            //responseMessage.Articles.Add(new Article() { Title = user.nickname+",您有一个0元设计未领", PicUrl = "http://material-ui.net/content/zixun.jpg", Url = "http://material-ui.net/booking.html", Description = user.nickname+",您有一个0元设计未领。实力整装,省钱,省力,省心。" });



            //推送消息
            //下载文档
            //if (requestMessage.EventKey.StartsWith("qrscene_"))
            //{
            //    var sceneId = long.Parse(requestMessage.EventKey.Replace("qrscene_", ""));
            //    //var configHelper = new ConfigHelper(new HttpContextWrapper(HttpContext.Current));
            //    var codeRecord =
            //        ConfigHelper.CodeCollection.Values.FirstOrDefault(z => z.QrCodeTicket != null && z.QrCodeId == sceneId);

            //    if (codeRecord != null)
            //    {
            //        //确认可以下载
            //        codeRecord.AllowDownload = true;
            //        AdvancedAPIs.CustomApi.SendText(null, WeixinOpenId, GetDownloadInfo(codeRecord));
            //    }
            //}


            return(responseMessage);
        }
Ejemplo n.º 7
0
        public void SendTemplateMsg()
        {
            //var data = new {
            //    touser= "******",
            //    template_id= "qjoS1AGFKs9FuFRJI2oh5W1HMz9J5Og1XT9fTQmtZQU",
            //    data = new{
            //        first = new{
            //            value= "徐航,订单绑定成功。"
            //        },
            //        OrderSn = new
            //        {
            //            value= "242226243293916259"
            //        },
            //        OrderStatus = new
            //        {
            //            value="已付款"
            //        },
            //        remark = new
            //        {
            //            value= "可在“我的订单”中查看追踪订单信息。订单付款28.00元,预计可返现0.98元。"
            //        }

            //    }
            //};

            var data = new
            {
                touser      = "******",
                template_id = "WdfEogtJVP1p1uD2MyvQawv1bWwJZVg_F5gJvqo-8sg",
                url         = "http://tb.yshizi.cn/",
                data        = new
                {
                    first = new
                    {
                        value = "贤~枫之霖,您的返现已到账。"
                    },
                    order = new
                    {
                        value = "244813188846738893"
                    },
                    money = new
                    {
                        value = "5.28元"
                    },
                    remark = new
                    {
                        value = "请领取您的红包。"
                    }
                }
            };

            var result = WeixinHelper.SendTemplateMsg(AccessTokenHelper.GetAccessToken(), JsonConvert.SerializeObject(data));

            Assert.IsNull(result);
        }
Ejemplo n.º 8
0
 public async Task <IActionResult> IsLoggedIn()
 {
     try
     {
         await AccessTokenHelper.GetAccessToken(HttpContext, AzureAdB2COptions);
     }
     catch
     {
         return(Unauthorized());
     }
     return(Ok());
 }
        public void OnAuthorization(AuthorizationFilterContext context)
        {
            var guidAccessToken = ApplicationHelper.GetAuthorizationToken(context.HttpContext);

            if (IsNullOrWhiteSpace(guidAccessToken))
            {
                context.Result = CreateResult(EResultStatus.InvalidToken);
                return;
            }

            var jsonAccessToken = EncryptionHelper.AesDecryptString(guidAccessToken);

            if (IsNullOrEmpty(jsonAccessToken))
            {
                context.Result = CreateResult(EResultStatus.InvalidToken);
                return;
            }

            var accessTokenDataVm = jsonAccessToken.ObjectDeserialize <AccessTokenDataVm>();

            if (accessTokenDataVm is null)
            {
                context.Result = CreateResult(EResultStatus.InvalidToken);
                return;
            }

            if (!AccessTokenHelper.IsValidationExpirationDate(accessTokenDataVm.ExpirationDate))
            {
                context.Result = CreateResult(EResultStatus.AccessTokenExpired);
                return;
            }

            var service = context.HttpContext.RequestServices.GetService <IInMemoryUserAccessService>();


            var userAccessInMemoryVm = service.Get(accessTokenDataVm.UserId);

            if (userAccessInMemoryVm is null)
            {
                context.Result = CreateResult(EResultStatus.InvalidToken);
                return;
            }

            var hasAccess = HasUserAccess(userAccessInMemoryVm.UserAccessIds);

            if (!hasAccess)
            {
                context.Result = CreateResult(EResultStatus.AccessDenied);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 创建部门到微信中
        /// </summary>
        /// <param name="name"></param>
        /// <param name="parentid"></param>
        /// <param name="order"></param>
        /// <param name="id"></param>
        /// <param name="compid"></param>
        /// <returns></returns>
        public ReturnJson CreateDep(string name, int parentid, int order, int id, string compid)
        {
            string    sqlstr       = string.Format($"select * from Company where CompanyID='{compid}'");
            DataTable dt           = sql.GetDataTableCommand(sqlstr);
            string    accecctoken2 = AccessTokenHelper.GetQiye(dt.Rows[0]["Longcode"].ToString(), compid, dt.Rows[0]["attoken"].ToString(), DateTime.Parse(dt.Rows[0]["expressYxq"].ToString()));
            string    accecctoken  = "q5hqUNPXpenqP8CYoBKIXk_O1BQeEgGPGbAFAH4RZ0tlwbHg7RfUnehzzTflsBrzgTZ3SAfQoTyw-3JNenL8ZwqbJ032lpIdlzg9mHfi0JFq3i5hngTrQ39cgaSlXBCdbuFjox6je9mOIPwIJsDmJHNbznpjvJENrq5cIWzehBHSiruAKatdqY0leae1kFWJqW_izuoDRo3VpUB1r1GYfA";

            if (accecctoken.Contains("access_token"))
            {
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(QiYeaccess_token));
                MemoryStream     ms            = new MemoryStream(Encoding.UTF8.GetBytes(accecctoken));
                QiYeaccess_token obj           = (QiYeaccess_token)ser.ReadObject(ms);
                string           sqlstr2       = string.Format($"exec proc_Weixin 'UpdateAtoken','','','','','{compid}','','{obj.access_token}','{DateTime.Now.AddSeconds(int.Parse(obj.expires_in)).ToString("yyyy-MM-dd HH:mm:ss")}'");
                string           info2         = sql.EditDataCommand(sqlstr2);
                BonusHelper.AppConfig.Access_Token_Qiye = obj.access_token;
                BonusHelper.AppConfig.Qiye_YouXRQ       = DateTime.Now.AddSeconds(int.Parse(obj.expires_in)).ToString("yyyy-MM-dd HH:mm:ss");
            }
            //string accecctoken = "q5hqUNPXpenqP8CYoBKIXk_O1BQeEgGPGbAFAH4RZ0tlwbHg7RfUnehzzTflsBrzgTZ3SAfQoTyw-3JNenL8ZwqbJ032lpIdlzg9mHfi0JFq3i5hngTrQ39cgaSlXBCdbuFjox6je9mOIPwIJsDmJHNbznpjvJENrq5cIWzehBHSiruAKatdqY0leae1kFWJqW_izuoDRo3VpUB1r1GYfA";
            string url       = $"https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token={accecctoken}";
            string strpost   = "{\"name\": \"" + name + "\",   \"parentid\": " + parentid + ",   \"order\": " + order + "}";
            string strResult = httpHelp.PostWebRequest(url, strpost, Encoding.UTF8);

            try
            {
                if (!string.IsNullOrWhiteSpace(strResult) && strResult.Substring(0, 1) == "{" && strResult.Substring(strResult.Length - 1, 1) == "}")
                {
                    return(JSON.parse <ReturnJson>(strResult));
                }
                else
                {
                    return(new ReturnJson()
                    {
                        errmsg = string.IsNullOrWhiteSpace(strResult) ? "error" : strResult
                    });
                }
            }
            catch (Exception ex)
            {
                log.AppenLog("创建部门到微信中失败:" + ex.Message);
                return(new ReturnJson()
                {
                    errmsg = string.IsNullOrWhiteSpace(strResult) ? "error" : strResult
                });
            }
        }
Ejemplo n.º 11
0
 public HttpResponseMessage AccessToken()
 {
     try
     {
         var token = AccessTokenHelper.GetAccessToken();
         return(new HttpResponseMessage(HttpStatusCode.OK)
         {
             Content = new StringContent(JsonConvert.SerializeObject(token))
         });
     }
     catch (Exception ex)
     {
         return(new HttpResponseMessage(HttpStatusCode.BadRequest)
         {
             Content = new StringContent(ex.Message)
         });
     }
 }
Ejemplo n.º 12
0
        public static void Register()
        {
            Token          = System.Configuration.ConfigurationManager.AppSettings["Token"];
            EncodingAESKey = System.Configuration.ConfigurationManager.AppSettings["EncodingAESKey"];
            AppID          = System.Configuration.ConfigurationManager.AppSettings["AppID"];
            AppSecret      = System.Configuration.ConfigurationManager.AppSettings["AppSecret"];
            PartnerKey     = System.Configuration.ConfigurationManager.AppSettings["PartnerKey"];
            Domain         = System.Configuration.ConfigurationManager.AppSettings["Domain"];
            APIDomain      = System.Configuration.ConfigurationManager.AppSettings["APIDomain"];
            mch_id         = System.Configuration.ConfigurationManager.AppSettings["mch_id"];
            DeviceInfo     = System.Configuration.ConfigurationManager.AppSettings["device_info"];
            SpbillCreateIp = System.Configuration.ConfigurationManager.AppSettings["spbill_create_ip"];
            var openJSSDK = int.Parse(System.Configuration.ConfigurationManager.AppSettings["OpenJSSDK"]) > 0;

            OauthScope    = System.Configuration.ConfigurationManager.AppSettings["OauthScope"];
            Report_Levenl = int.Parse(System.Configuration.ConfigurationManager.AppSettings["Report_Levenl"]);
            PayNotifyUrl  = System.Configuration.ConfigurationManager.AppSettings["PayNotifyUrl"];

            WeixinDomain = "";
            AccessToken  = BasicAPI.GetAccessToken(AppID, AppSecret).access_token;

            WeixinSDK.GlobalContext.AppID          = AppID;
            WeixinSDK.GlobalContext.AppSecret      = AppSecret;
            WeixinSDK.GlobalContext.AccessToken    = AccessToken;
            WeixinSDK.GlobalContext.WebAccessToken = WebAccessToken;
            WeixinSDK.GlobalContext.Domain         = Domain;
            WeixinSDK.GlobalContext.APIDomain      = APIDomain;
            WeixinSDK.GlobalContext.MCHId          = mch_id;
            WeixinSDK.GlobalContext.PartnerKey     = PartnerKey;
            WeixinSDK.GlobalContext.DeviceInfo     = DeviceInfo;
            WeixinSDK.GlobalContext.SpbillCreateIp = SpbillCreateIp;
            WeixinSDK.GlobalContext.Report_Levenl  = Report_Levenl;
            WeixinSDK.GlobalContext.PayNotifyUrl   = PayNotifyUrl;
            AccessTokenHelper = new AccessTokenHelper(6000, AppID, AppSecret, openJSSDK);
            AccessTokenHelper.Run();
        }
Ejemplo n.º 13
0
 private static async Task <string> GetBearerToken(AadAppSettings authSettings)
 {
     return(await AccessTokenHelper.GetAccessToken(authSettings));
 }
Ejemplo n.º 14
0
        /// <summary>
        /// 得到永久授权码
        /// </summary>
        /// <param name="rc"></param>
        private void GetLongCode(object rc)
        {
            weixinStrct bs          = (weixinStrct)rc;
            string      ShortCode   = bs.ShortCode;
            string      corId       = bs.corpId;
            string      SuiteTicket = bs.SuiteTicket;

            log.AppenLog("线程:ShortCode:" + ShortCode + "_corId:" + corId + "_SuiteTicket:" + SuiteTicket);
            try
            {
                #region

                //通过临时授权码得到永久授权码
                //得到第三方应用凭证
                string suite_access_token = AccessTokenHelper.IssuitResult(corId, BonusHelper.AppConfig.Corpsecret, SuiteTicket);
                log.AppenLog("第三方应用凭证:" + suite_access_token);
                #region
                //ReturnJson rj = new ReturnJson();
                //if (!string.IsNullOrWhiteSpace(suitResult) && suitResult.Substring(0, 1) == "{" && suitResult.Substring(suitResult.Length - 1, 1) == "}")
                //{
                //    log.AppenLog("不为null");
                //    rj=JSON.parse<ReturnJson>(suitResult);
                //}
                //else
                //{
                //    log.AppenLog("为null");
                //    rj =new ReturnJson() { errmsg = string.IsNullOrWhiteSpace(suitResult) ? "error" : suitResult };
                //}
                #endregion
                //通过第三方应用凭证得到永久授权码
                Tuple <bool, LongShouquan> tu = GetLongCode(suite_access_token, ShortCode);
                if (tu.Item1)
                {
                    log.AppenLog("tu.Item1");
                    string sqlstr = string.Format($"exec proc_Weixin 'ZhuceCompany','{tu.Item2.auth_corp_info.corp_full_name}','{tu.Item2.auth_user_info.userid}','{tu.Item2.auth_corp_info.corp_square_logo_url}','{tu.Item2.permanent_code}','{tu.Item2.auth_corp_info.corpid}','{tu.Item2.auth_user_info.name}'");

                    log.AppenLog("Sqlstr:" + sqlstr);
                    //string str = "";
                    //Session[str] = tu.Item2;
                    string info = sql.EditDataCommand(sqlstr);
                    if (info == "0")
                    {
                        log.AppenLog("跟新成功");
                        //获取企业AccessToken  用于得到用户和部门

                        string Access_Token = AccessTokenHelper.GetQiye(tu.Item2.permanent_code.Replace("\"", ""), tu.Item2.auth_corp_info.corpid, string.Empty, DateTime.Now.AddDays(-1));
                        log.AppenLog("获取企业AccessToken:" + Access_Token);
                        if (Access_Token.Contains("access_token"))
                        {
                            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(QiYeaccess_token));
                            MemoryStream     ms            = new MemoryStream(Encoding.UTF8.GetBytes(Access_Token));
                            QiYeaccess_token obj           = (QiYeaccess_token)ser.ReadObject(ms);
                            string           sqlstr2       = string.Format($"exec proc_Weixin 'UpdateAtoken','','','','','{tu.Item2.auth_corp_info.corpid}','','{obj.access_token}','{DateTime.Now.AddSeconds(int.Parse(obj.expires_in)).ToString("yyyy-MM-dd HH:mm:ss")}'");
                            string           info2         = sql.EditDataCommand(sqlstr2);
                            BonusHelper.AppConfig.Access_Token_Qiye = obj.access_token;
                            BonusHelper.AppConfig.Qiye_YouXRQ       = DateTime.Now.AddSeconds(int.Parse(obj.expires_in)).ToString("yyyy-MM-dd HH:mm:ss");
                        }
                    }
                    else
                    {
                        log.AppenLog("跟新失败");
                    }
                }
                else
                {
                    log.AppenLog("false");
                }


                #endregion
            }
            catch (Exception ex)
            {
                log.AppenLog("线程错误:" + ex.Message);
            }
            //通过永久和id得到token
        }
Ejemplo n.º 15
0
        // GET: Wo
        public ActionResult Index(string userId, string counts, string companyId)

        {
            log.AppenLog("我看看22");
            try
            {
                string userID      = "";
                string CompanyId   = "";
                string user_ticket = "";//成员票据,通过这个得到登陆进来的人的详情信息
                #region 得到userid和公司id
                //当是从别的页面回来时
                if (!string.IsNullOrWhiteSpace(userId))
                {
                    userID = Base64MIMA.JIE(userId);
                }
                if (!string.IsNullOrWhiteSpace(companyId))
                {
                    CompanyId = Base64MIMA.JIE(companyId);
                }
                if (userID == "")
                {
                    //通过code得到userid
                    string code1 = Request["code"];
                    if (code1 != "")
                    {
                        Tuple <bool, UserInfo> tu2 = BonusHelper.AccessTokenHelper.GetWechatUserInfo2(code1);//第三方应用
                        if (tu2.Item1 || Session["aaa"] != null)
                        {
                            if (Session["aaa"] == null)
                            {
                                log.AppenLog("if");
                                userID         = tu2.Item2.UserId;//得到userid
                                Session["aaa"] = userID;
                                // c.Value = tu2.Item2;
                            }
                            else
                            {
                                log.AppenLog("else");
                                userID = Session["aaa"].ToString();
                                //userid = c.Value;
                            }
                        }

                        try
                        {
                            userID      = userID.Replace('"', ' ');
                            userID      = userID.Trim();
                            CompanyId   = tu2.Item2.CorpId;
                            user_ticket = tu2.Item2.user_ticket;
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                    else
                    {
                        //code为空,跳到错误页面
                        return(Redirect("/ErrorPage/Index"));
                    }
                }

                #endregion

                userID    = "lzc";
                CompanyId = "wx512ad5972960e003";
                //加密公司id和userid
                log.AppenLog("登陆进来userid:" + userId);
                ViewBag.CompanyID = Base64MIMA.JIA(CompanyId);
                ViewBag.userID    = Base64MIMA.JIA(userID);
                //工号
                ViewBag.SuserId = userID;
                #region 判断公司是否在有效期
                //在:看登陆进来的人是否是某个公司的负责人,如果是的话就把他的联系方式等填到相关公司表里,不是直接进入后台
                //不在:提示已经过了有效期,需要联系我们来审核
                string    sqlstr            = string.Format($"exec Proc_Wo 'IsValidComoany','{CompanyId}'");
                DataTable dt_IsValidComoany = sql.GetDataTableCommand(sqlstr);
                if (dt_IsValidComoany?.Rows.Count > 0)
                {
                    //通过user_ticket得到详细信息
                    string strResult = AccessTokenHelper.GetUserDetail2(user_ticket);
                    log.AppenLog("页面成员信息:" + strResult);
                    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(UserDetials));
                    MemoryStream ms  = new MemoryStream(Encoding.UTF8.GetBytes(strResult));
                    UserDetials  obj = (UserDetials)ser.ReadObject(ms);
                    //判断是否是某个公司的负责人
                    string    sqlstr2 = string.Format($"select * from Company where CompanyPrincipal='{userID}'");
                    DataTable dt2     = sql.GetDataTableCommand(sqlstr2);
                    if (dt2?.Rows.Count > 0)
                    {
                        //是某个公司负责人==>将他的信息放到公司列表里面去
                        string CompanyPhone = "";
                        string CompanyEmail = "";
                        string upCom        = "";
                        for (int i = 0; i < dt2?.Rows.Count; i++)
                        {
                            if (dt2.Rows[i]["CompanyPhone"].ToString() == "" || dt2.Rows[i]["CompanyEmail"].ToString() == "")
                            {
                                CompanyPhone = obj.mobile;
                                CompanyEmail = obj.email;
                                upCom       += string.Format($" update Company set CompanyPhone='{CompanyPhone}' where CompanyID={dt2.Rows[i]["CompanyID"].ToString()}");
                            }
                        }

                        if (upCom != "")
                        {
                            sql.EditDataCommand(upCom);
                        }
                    }
                    //更新对应人的信息
                    try
                    {
                        string py     = Pinyin.GetInitials(obj.name);                //简拼
                        string pinyin = Pinyin.GetPinyin(obj.name).Replace(" ", ""); //全拼
                        string upEmp  = string.Format($"exec Proc_Wo 'UpdateTouXiang','{obj.corpid}','{obj.userid}','{obj.avatar}','{obj.mobile}','{obj.email}','{pinyin}','{py}',{obj.gender}");
                        log.AppenLog("更新人员信息:" + upEmp);
                        string info_upEmp = sql.EditDataCommand(upEmp);
                        if (info_upEmp != "0")
                        {
                            return(Content("<script>alert('获取个人信息失败');history.go(-1);</script>"));
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                }
                else
                {
                    //return Content("<script>alert('您的使用期限已过,请联系我们!8888888');history.go(-1);</script>");
                    return(Redirect("/Wo/EndIndex"));
                }
                #endregion

                #region 个人信息与个人奖金
                string  infosql = string.Format($"exec proc_Main 'SelectEmpDetialWo','{userID}','','{CompanyId}'");
                DataSet info    = sql.GetDataSetCommand(infosql);
                if (info?.Tables.Count > 0)
                {
                    //个人信息
                    if (info?.Tables[0].Rows.Count > 0)
                    {
                        //是否位超级管理员
                        if (info.Tables[0].Rows[0]["RoleID"].ToString() == "8EA2CC5C-308D-4538-A9D8-FCAD7CA6FEB0")
                        {
                            ViewBag.chaoji = 1;
                        }
                        else
                        {
                            ViewBag.chaoji = 0;
                        }

                        ViewBag.info = info.Tables[0];
                    }
                    else
                    {
                        ViewBag.info   = null;
                        ViewBag.chaoji = 0;
                    }
                    //个人奖金
                    if (info?.Tables[1].Rows.Count > 0)
                    {
                        ViewBag.SumMoney = info.Tables[1].Rows[0][0];
                    }
                    else
                    {
                        ViewBag.SumMoney = "0.00";
                    }
                }
                else
                {
                    ViewBag.info   = null;
                    ViewBag.chaoji = 0;
                }

                #endregion

                #region 部门奖金
                string    isDepartPri = string.Format($"exec proc_Main 'SelectDepJIangjin','{userID}','','{CompanyId}'");
                DataTable dss         = sql.GetDataTableCommand(isDepartPri);
                if (dss?.Rows.Count > 0)
                {
                    ViewBag.depSumMoney = dss;
                }
                else
                {
                    ViewBag.depSumMoney = null;
                }
                //string isDepartPri = string.Format("SELECT DepartID FROM dbo.Depart WHERE DepartPrincipal='{0}'", userID);
                //                string isDepartPri = string.Format("SELECT DepartID FROM dbo.Depart WHERE DepartPrincipal='{0}' AND CompanyID='{1}'", userID, CompanyId);
                //                DataTable dss = sql.GetDataTableCommand(isDepartPri);
                //                if (dss.Rows.Count > 0)
                //                {
                //                    //是部门负责人
                //                    //ViewBag.isDepartPri = "youarePri";
                //                    //部门奖金
                //                    string sqlDepart = string.Format(@"SELECT DepartID,DepartName,ISNULL(EarMoney,'0.00') Earmoney,EarMan FROM  dbo.Depart d  LEFT JOIN
                //(SELECT  SUM(EarMoney) EarMoney ,EarMan   FROM dbo.BonusData2 WHERE BonusType=0 AND IsGet=0 GROUP BY EarMan )
                // b ON d.DepartID=b.EarMan  WHERE   DepartPrincipal='{0}'  and CompanyID='{1}'", userID, CompanyId);
                //                    DataTable DepartName = sql.GetDataTableCommand(sqlDepart);
                //                    if (DepartName.Rows.Count > 0)
                //                    {

                //                        ViewBag.depSumMoney = DepartName;
                //                    }
                //                    else
                //                    {
                //                        ViewBag.depSumMoney = null;
                //                    }
                //                }
                //                else
                //                {
                //                    //ViewBag.isDepartPri = null;
                //                }
                #endregion

                #region 奖金项
                string isitp = string.Format(@"SELECT A.BonusItemID,A.BIName,RM,IM FROM (
SELECT RuleData.BonusItemID,BIName,SUM(RemainMoney)RM FROM dbo.RuleData 
INNER JOIN dbo.BonusItem ON BonusItem.BonusItemID = RuleData.BonusItemID
WHERE  RuleData.BonusItemID IN (SELECT BonusItemID FROM dbo.BonusImpower WHERE BIState=0 AND EmpID='{0}') AND CompanyID='{2}'
AND GETDATE()<EndDate
GROUP BY RuleData.BonusItemID,BIName) AS A
LEFT JOIN 
(SELECT b2.BonusItemID,BIName,SUM(b1.RemainMoney) IM FROM dbo.BonusImpower  b1
INNER JOIN dbo.BonusItem b2 ON b2.BonusItemID = b1.BonusItemID 
WHERE BIState=0 AND EmpID = '{1}' AND (ImpowerDate >= DATEADD(MM, DATEDIFF(MM, 0, GETDATE()), 0) and IsValid=0)
GROUP BY b2.BonusItemID, BIName) AS B ON A.BonusItemID=B.BonusItemID AND A.BIName=B.BIName", userID, userID, CompanyId);

                DataTable itp = sql.GetDataTableCommand(isitp);
                if (itp?.Rows.Count > 0)
                {
                    ViewBag.itp = itp;
                }
                else
                {
                    ViewBag.itp = null;
                }
                //自己负责的奖金项
                string    isitem = string.Format("SELECT dbo.RuleData.BonusItemID,dbo.BonusItem.BIName,SUM(RemainMoney) AllMoney FROM dbo.RuleData INNER JOIN dbo.BonusItem ON BonusItem.BonusItemID = RuleData.BonusItemID WHERE BIState=0 AND CompanyID='{1}' AND BIPrincipal = '{0}' AND CONVERT(VARCHAR(30), GETDATE(), 102) < EndDate GROUP BY dbo.RuleData.BonusItemID, dbo.BonusItem.BIName", userID, CompanyId);
                DataTable item   = sql.GetDataTableCommand(isitem);
                if (item?.Rows.Count > 0)
                {
                    for (int i = 0; i < item?.Rows.Count; i++)
                    {
                        Session["shit" + i] = sql.GetDataTableProcedure("proc_BonusData", item.Rows[i]["BonusItemID"].ToString(), "1");
                    }
                    ViewBag.item = item;
                }
                else
                {
                    ViewBag.item = null;
                }
                //查自己有没有奖金发放权限
                string    sqlsq = string.Format($@"
SELECT b2.BonusItemID, BIName, SUM(b1.RemainMoney) IM FROM dbo.BonusImpower  b1
INNER JOIN dbo.BonusItem b2 ON b2.BonusItemID = b1.BonusItemID
WHERE BIState = 0 AND EmpID = '{userID}' AND(ImpowerDate >= DATEADD(MM, DATEDIFF(MM, 0, GETDATE()), 0) and IsValid = 0)
GROUP BY b2.BonusItemID, BIName");
                DataTable dtsq  = sql.GetDataTableCommand(sqlsq);
                ViewBag.counts = dtsq.Rows.Count + item.Rows.Count;
                ViewBag.count  = Base64MIMA.JIA((dtsq.Rows.Count + item.Rows.Count).ToString());
                #endregion

                InitJsapi(Base64MIMA.JIA(CompanyId));
            }
            catch (Exception ex)
            {
                log.AppenLog("woIndex错误:" + ex.Message);
                return(Redirect("/ErrorPage/Index"));
            }
            return(View());
        }
        public static async Task Run(
            [QueueTrigger(Settings.activityReportQueueName, Connection = "")] ActivityReportRequest inputQueueMessage,
            [Queue(Settings.activityReportQueueName, Connection = "")] ICollector <ActivityReportRequest> retryQueueMessages,
            ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed: {inputQueueMessage}");
            //We need YYYY-MM-DD foramt
            string todayStringUtc = DateTime.Today.ToString("yyyy-MM-dd");

            if (string.IsNullOrEmpty(accessToken))
            {
                accessToken = await AccessTokenHelper.FetchAccessToken();
            }

            //Generate HTTP Request
            string requestQuery = GenerateReportUrl(inputQueueMessage.Type, todayStringUtc);
            var    request      = new HttpRequestMessage()
            {
                RequestUri = new Uri(requestQuery),
                Method     = HttpMethod.Get
            };

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

            //Send Http Request and get report url
            HttpResponseMessage response = await graphHttpClient.SendAsync(request);

            if (response.IsSuccessStatusCode)
            {
                string downloadUrl = response.RequestMessage.RequestUri.ToString();
                //Console.WriteLine(downloadUrl);

                //Download report(csv file) and save it to blob storage
                var downloadResponse = await downloadClient.GetAsync(downloadUrl);

                if (downloadResponse.IsSuccessStatusCode)
                {
                    await UploadReport(inputQueueMessage.TypeString, downloadResponse, todayStringUtc);
                }
                //If we got 427 status (TooManyRequests), we need to handle Throttling. https://docs.microsoft.com/en-us/graph/throttling
                else if (downloadResponse.StatusCode == HttpStatusCode.TooManyRequests)
                {
                    TimeSpan sleepTime;
                    if (downloadResponse.Headers.RetryAfter.Delta.HasValue)
                    {
                        //Need to handle Nullable type https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/nullable-types/index
                        sleepTime = downloadResponse.Headers.RetryAfter.Delta.Value;
                    }
                    else
                    {
                        //Sleep 10 sec at 1st time, then speel 10 + 10n after 2nd time
                        sleepTime = new TimeSpan(0, 0, 10 + inputQueueMessage.RetryCount * 10);
                    }
                    Thread.Sleep(sleepTime);
                    retryQueueMessages.Add(new ActivityReportRequest(inputQueueMessage.Type, inputQueueMessage.RetryCount++));
                }
                else
                {
                    Console.WriteLine($"Response Status: {downloadResponse.StatusCode}");
                    Console.WriteLine($"Error Reason: {downloadResponse.ReasonPhrase}");
                    throw new Exception();//Throw exception and re-try with queue (max.5)
                }
            }
        }
Ejemplo n.º 17
0
        // GET: Me
        public ActionResult Index(string openid)
        {
            if (!string.IsNullOrEmpty(openid))
            {
                WxUserDao userDao = new WxUserDao();


                //1 查询是否已经存在ticket和nickname信息
                WxUser user = userDao.Find(openid);

                bool isExist = user != null;

                //2 如果没有nickname需获取用户信息
                if (user == null || string.IsNullOrEmpty(user.headimgurl) || string.IsNullOrEmpty(user.nickname))
                {
                    var userinfo = Common.HttpUtility.HttpGet($"https://api.weixin.qq.com/cgi-bin/user/info?access_token={AccessTokenHelper.GetAccessToken()}&openid={openid}&lang=zh_CN", "", "utf-8");

                    JObject jobect = (JObject)JsonConvert.DeserializeObject(userinfo);
                    if ((string)jobect["subscribe"] == "0")
                    {
                        return(View("Error", new { message = "未关注" }));
                    }

                    user            = new WxUser();
                    user.openid     = openid;
                    user.headimgurl = (string)jobect["headimgurl"];
                    user.nickname   = (string)jobect["nickname"];

                    user.ticket = WeixinHelper.CreateTempQRCode(openid);
                    user.ticketcreatedatetime = DateTime.Now;

                    if (!isExist)
                    {
                        userDao.Add(user);
                    }
                    else
                    {
                        userDao.Update(user);
                    }
                }


                return(View(user));
            }
            else
            {
                return(View("Error"));
            }
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 获取指定公司部门可见信息
        /// </summary>
        /// <param name="compid">公司id</param>
        /// <returns></returns>
        public ActionResult SelectDep(string compid)
        {
            compid = Base64MIMA.JIE(compid);
            string           sqlstr      = string.Format($"select * from Company where CompanyID='{compid}'");
            DataTable        dt          = sql.GetDataTableCommand(sqlstr);
            string           accecctoken = AccessTokenHelper.GetQiye(dt.Rows[0]["Longcode"].ToString(), compid, dt.Rows[0]["attoken"].ToString(), DateTime.Parse(dt.Rows[0]["expressYxq"].ToString()));
            QiYeaccess_token obj         = new QiYeaccess_token();

            if (accecctoken.Contains("access_token"))
            {
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(QiYeaccess_token));
                MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(accecctoken));
                obj = (QiYeaccess_token)ser.ReadObject(ms);
                string sqlstr2 = string.Format($"exec proc_Weixin 'UpdateAtoken','','','','','{compid}','','{obj.access_token}','{DateTime.Now.AddSeconds(int.Parse(obj.expires_in)).ToString("yyyy-MM-dd HH:mm:ss")}'");
                string info2   = sql.EditDataCommand(sqlstr2);
                accecctoken = obj.access_token;
            }
            //数据库里的部门
            string    sqldep = string.Format($"select * from Depart where CompanyID='wx512ad5972960e003'");
            DataTable dtdep  = sql.GetDataTableCommand(sqldep);

            string url       = $"https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token={accecctoken}&id=ID";
            string strResult = httpHelp.GetWebRequest(url);

            log.AppenLog("部门:" + strResult);
            try
            {
                if (!string.IsNullOrWhiteSpace(strResult) && strResult.Substring(0, 1) == "{" && strResult.Substring(strResult.Length - 1, 1) == "}")
                {
                    WechatReturnDep wrd = JSON.parse <WechatReturnDep>(strResult);
                    if (wrd.errcode == "0")
                    {
                        List <WechatDep> listDep = wrd.department;
                        if (listDep.Count > 0)
                        {
                            string sqlstr2 = "";
                            #region 将数据库里的数据给修改过来,以微信为准
                            var vupdate = (from s in listDep
                                           where dtdep.AsEnumerable().Any(x => s.id == x.Field <int>("DepartID") && compid == x.Field <string>("CompanyID") || s.name != x.Field <string>("DepartName") || s.parentid != x.Field <int>("PID"))
                                           select s).ToList();
                            log.AppenLog("vupdate:" + vupdate.Count);
                            if (vupdate.Count > 0)
                            {
                                foreach (var item in vupdate)
                                {
                                    string JX = Pinyin.GetInitials(item.name);                //简写
                                    string QP = Pinyin.GetPinyin(item.name).Replace(" ", ""); //全拼
                                    sqlstr2 += string.Format($"update Depart set SpellJX='{JX}',SpellQP='{QP}',DepartName='{item.name}',PID='{item.parentid}' where DepartID={item.id} and  CompanyID='{compid}' ");
                                }
                            }
                            #endregion

                            #region 将数据库里有微信没有的删掉
                            var vupdel = (from s in dtdep.AsEnumerable()
                                          where !listDep.Any(x => x.id == s.Field <int>("DepartID") && compid == s.Field <string>("CompanyID"))
                                          select s).ToList();
                            if (vupdel.Count > 0)
                            {
                                foreach (var item in vupdel)
                                {
                                    sqlstr2 += string.Format($"delete Depart where DepartID={item.Field<int>("DepartID")} and CompanyID='{compid}' ");
                                }
                            }
                            #endregion

                            #region 将数据库中没有,微信中有的增加
                            var vupadd = (from s in listDep
                                          where !dtdep.AsEnumerable().Any(x => s.id == x.Field <int>("DepartID") && compid == x.Field <string>("CompanyID"))
                                          select s).ToList();
                            foreach (var item in vupadd)
                            {
                                //看数据库里是否又这个部门,如果有就不用添加到数据库


                                //else
                                //{
                                string JX = Pinyin.GetInitials(item.name);                //简写
                                string QP = Pinyin.GetPinyin(item.name).Replace(" ", ""); //全拼
                                sqlstr2 += string.Format($"insert into Depart(DepartID,DepartName, PID, DepartPrincipal, Remark,SpellJX,SpellQP,CompanyId) values({item.id},'{item.name}', '{item.parentid}', null, '','{JX}','{QP}','{compid}') ");

                                //}
                                //循环添加到数据库中
                            }
                            #endregion
                            if (sqlstr2 == "")
                            {
                                return(Content("数据一致,不需要同步"));
                            }
                            string num = sql.EditDataCommand(sqlstr2);
                            if (num == "0")
                            {
                                return(Content("ok"));
                            }
                            else
                            {
                                return(Content("同步失败"));
                            }
                        }
                        else
                        {
                            return(Content("暂无信息需要同步"));
                        }
                    }
                    else
                    {
                        return(Content("error:" + strResult));
                    }
                }
                else
                {
                    return(Content("error:" + strResult));
                    //return new ReturnJson() { errmsg = string.IsNullOrWhiteSpace(strResult) ? "error" : strResult };
                }
            }
            catch (Exception ex)
            {
                log.AppenLog("从微信中读取数据失败:" + ex.Message);
                return(Content("从微信中读取数据失败:" + strResult));
            }
        }
Ejemplo n.º 19
0
        public static async Task Run(
            [QueueTrigger(Settings.userQueueName, Connection = "")] UserSyncRequest inputQueueItem,
            [Queue(Settings.userQueueName, Connection = "")] ICollector <UserSyncRequest> pagingQueueItems,
            [Table(Settings.userTableName, Connection = "")] ICollector <UserEntity> userEntities,
            [Queue(Settings.eventQueueName, Connection = "")] ICollector <CalendarSyncRequest> calendarQueueItems,
            ILogger log)
        {
            log.LogInformation("Fetch user info started");

            //If app doesn't have access token yet, fetch it from Azure AD
            if (string.IsNullOrEmpty(accessToken))
            {
                accessToken = await AccessTokenHelper.FetchAccessToken();
            }

            //If app get queue message without url, app will use default query. If not, app will use url (nextlink)
            string graphRequestUrl = string.IsNullOrEmpty(inputQueueItem.Url) ? defaultUserRequestUrl : inputQueueItem.Url;

            //Create http request message with access token
            var request = new HttpRequestMessage()
            {
                RequestUri = new Uri(graphRequestUrl),
                Method     = HttpMethod.Get
            };

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

            HttpResponseMessage response = await graphClient.SendAsync(request);

            log.LogInformation($"Reponse code is: {response.StatusCode}");

            if (response.StatusCode == HttpStatusCode.Unauthorized)
            {
                //When token expire after 60 min, we need to get new token
                accessToken = await AccessTokenHelper.FetchAccessToken();

                //App will re-try with same queue message
                pagingQueueItems.Add(inputQueueItem);
            }
            else if (response.StatusCode == HttpStatusCode.TooManyRequests)
            {
                System.Threading.Thread.Sleep(sleepInterval);
                pagingQueueItems.Add(inputQueueItem);
            }
            else if (response.IsSuccessStatusCode)
            {
                var responseData = await response.Content.ReadAsAsync <UserResponse>();

                //Pass @odata.nextlink to storage queue for requesting MS graph with multiple Azure Functions node
                if (!string.IsNullOrEmpty(responseData.NextLink))
                {
                    pagingQueueItems.Add(new UserSyncRequest()
                    {
                        Url = responseData.NextLink
                    });
                }

                foreach (User userData in responseData.value)
                {
                    //Save user data to Storage Table
                    userEntities.Add(new UserEntity(userData));
                    //Send queue message for fetching calendar items
                    calendarQueueItems.Add(new CalendarSyncRequest()
                    {
                        UserId = userData.Id,
                        Start  = DateTime.Now.AddDays(-1),
                        End    = DateTime.Now
                    }
                                           );
                }
            }
        }
Ejemplo n.º 20
0
        public static async Task Run(
            [QueueTrigger(Settings.eventQueueName, Connection = "")] CalendarSyncRequest inputQueueItem,
            [Queue(Settings.eventQueueName, Connection = "")] ICollector <CalendarSyncRequest> pagingQueueItems,
            [Table(Settings.eventTableName, Connection = "")] ICollector <EventEntity> eventEntities,
            ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed: {inputQueueItem}");

            //If app doesn't have access token yet, fetch it from Azure AD
            if (string.IsNullOrEmpty(accessToken))
            {
                accessToken = await AccessTokenHelper.FetchAccessToken();
            }

            /*
             * Create Http Request
             * In usual we use DefaultRequestHeaders to add http request header. Because many Azure Functions instance will use same httpClient, it will make conflict to handle it.
             * For resolving this, we create HttpRequestMessage for each request.
             * https://stackoverflow.com/questions/23521626/modify-request-headers-per-request-c-sharp-httpclient-pcl
             * */
            string requestQuery = string.IsNullOrEmpty(inputQueueItem.Url) ? CreateRequestQuery(inputQueueItem) : inputQueueItem.Url;
            var    request      = new HttpRequestMessage()
            {
                RequestUri = new Uri(requestQuery),
                Method     = HttpMethod.Get
            };

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

            HttpResponseMessage response = await graphHttpClient.SendAsync(request);

            if (response.StatusCode == HttpStatusCode.Unauthorized)
            {
                //When token expire after 60 min, we need to get new token
                accessToken = await AccessTokenHelper.FetchAccessToken();

                //App will re-try with same queue message
                pagingQueueItems.Add(inputQueueItem);
            }
            else if (response.StatusCode == HttpStatusCode.TooManyRequests)
            {
                System.Threading.Thread.Sleep(sleepInterval);
                pagingQueueItems.Add(inputQueueItem);
            }
            else if (response.IsSuccessStatusCode)
            {
                var responseData = await response.Content.ReadAsAsync <CalendarViewResponse>();

                //Pass @odata.nextlink to storage queue for requesting MS graph with multiple Azure Functions node
                if (!string.IsNullOrEmpty(responseData.odatanextLink))
                {
                    pagingQueueItems.Add(new CalendarSyncRequest()
                    {
                        UserId = inputQueueItem.UserId,
                        Url    = responseData.odatanextLink,
                        Start  = DateTime.Now.AddDays(-1),
                        End    = DateTime.Now
                    });
                }

                foreach (Event eventData in responseData.value)
                {
                    eventEntities.Add(new EventEntity(eventData, inputQueueItem.UserId));
                }
            }
        }