public static string GetSignature(string param, HttpRequestBase request) { param = param + ",appId,timestamp,nonce"; Dictionary <string, string> dict = new Dictionary <string, string>(); var _params = param.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var a in _params) { if (a == "url") { dict.Add(a, request[a].Split(',')[0]); } else if (a == "appId" && request[a] == null) { string routeDataAppid = request.RequestContext.RouteData.Values["appid"].ToString(); dict.Add(a, routeDataAppid); } else { dict.Add(a, request[a]); } } string appid = dict["appId"]; //string appSignKey = CommonService.GetSysConfig(appid, "iMih0xabKQdw8CBbkTM5Ley84WhN4oL6u5lbDui6G9tUlQo7fJE1CcktZ2UiETnU1FZ0R3ZvzYLKOzmaziyms5QuMia8czkEwFv2TQUg4G45Ha0aHPEHXnhjVqUPnKPJ"); string appSignKey = WeChatCommonService.GetWeChatConfig(Convert.ToInt32(appid))?.AppSignKey; dict.Add("appSignKey", appSignKey); return(ApiCommon.GetSignature(dict, request.Params)); }
/// <summary> /// 微信关注数据追加 /// </summary> private static void InsertWechatFollowReport() { var objConfig = WeChatCommonService.GetWeChatConfig(0); string strToken = AccessTokenContainer.TryGetToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret); var departmentList = MailListApi.GetDepartmentMemberInfo(strToken, 1, 1, 0); //关注用户列表 var followerList = departmentList.userlist.Where(a => a.status == 1).ToList(); //为关注用户列表 var unFollowerList = departmentList.userlist.Where(a => a.status == 4).ToList(); DateTime dtNow = DateTime.Now; WechatFollowReport wechatFollowReport = new WechatFollowReport() { StatisticsDate = Convert.ToDateTime(dtNow.AddDays(-1).ToString("yyyy-MM-dd")), FollowCount = followerList.Count, UnFollowCount = unFollowerList.Count, CreatedDate = dtNow }; BaseService <WechatFollowReport> ser = new BaseService <WechatFollowReport>(); ser.Repository.Insert(wechatFollowReport); }
public ActionResult Get(string msg_signature = "", string timestamp = "", string nonce = "", string echostr = "") { try { var iAppID = int.Parse(Request["AppID"] ?? "0"); var objConfig = WeChatCommonService.GetWeChatConfig(iAppID); //return Content(echostr); //返回随机字符串则表示验证通过 var verifyUrl = Signature.VerifyURL(objConfig.WeixinToken, objConfig.WeixinEncodingAESKey, objConfig.WeixinCorpId, msg_signature, timestamp, nonce, echostr); var logstr = string.Format("-objConfig.WeixinToken = {0}\n-objConfig.WeixinEncodingAESKey={1}\n-msg_signature={2}\n-timestamp={3}\n-nonce={4}\n-echostr={5}\n-objConfig.WeixinCorpId={6}", objConfig.WeixinToken, objConfig.WeixinEncodingAESKey, msg_signature, timestamp, nonce, echostr, objConfig.WeixinCorpId); log.Debug(logstr); if (verifyUrl != null) { log.Debug(verifyUrl); return(Content(verifyUrl)); //返回解密后的随机字符串则表示验证通过 } else { log.Debug("verifyUrl is null"); return(Content("如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。")); } } catch (Exception ex) { log.Error(ex, Request.Url.ToString()); } return(Content("")); }
/// <summary> /// Event事件类型请求之CLICK /// </summary> public override IResponseMessageBase OnEvent_ClickRequest(RequestMessageEvent_Click requestMessage) { log.Debug("Entering Event事件类型请求之CLICK - " + requestMessage.EventKey); string errorMessage; if (!SmartphoneMenuPermissionManager.PermissionCheck(requestMessage.EventKey, requestMessage.FromUserName, requestMessage.AgentID, out errorMessage)) { return(NoPermissionResponse(errorMessage)); } // 记录用户行为 _wr.CallUserBehavior(requestMessage.EventKey, requestMessage.FromUserName, requestMessage.AgentID.ToString(CultureInfo.InvariantCulture), "", "", 4); var objConfig = WeChatCommonService.GetWeChatConfig(requestMessage.AgentID); switch (requestMessage.AgentID) { default: { LogManager.GetLogger(this.GetType()).Debug("Entering default2"); var menu = Infrastructure.Web.Domain.Service.CommonService.lstCategory.FirstOrDefault(a => a.CategoryCode == requestMessage.EventKey); if (menu == null) { return(null); } LogManager.GetLogger(this.GetType()).Debug("menu is ready"); AppMenuView appMenu = new AppMenuView(); appMenu.ButtonReturnType = JsonHelper.FromJson <ButtonReturnType>(menu.Function); if (appMenu == null || appMenu.ButtonReturnType == null || string.IsNullOrEmpty(appMenu.ButtonReturnType.ResponseMsgType)) { LogManager.GetLogger(this.GetType()).Debug("appMenu parsed is NULL"); return(null); } switch (appMenu.ButtonReturnType.ResponseMsgType.ToLower()) { case "text": var textMessage = this.CreateResponseMessage <ResponseMessageText>(); LogManager.GetLogger(this.GetType()).Debug("appMenu.ButtonReturnType = " + appMenu.ButtonReturnType); LogManager.GetLogger(this.GetType()).Debug("appMenu.ButtonReturnType.Content = " + appMenu.ButtonReturnType.Content); textMessage.Content = appMenu.ButtonReturnType.Content; return(textMessage); case "news": LogManager.GetLogger(this.GetType()).Debug("appMenu.ButtonReturnType.NewsPushNumber= " + appMenu.ButtonReturnType.NewsPushNumber); var articles = (appMenu.ButtonReturnType.NewsPushNumber != null && appMenu.ButtonReturnType.NewsPushNumber != 0) ? GetPushArticles(requestMessage.EventKey, appMenu.ButtonReturnType.NewsPushNumber) : GetPushArticles(requestMessage.EventKey); return(CreateResponse(articles, objConfig.WXHost, "/News/ArticleInfo/wxdetail/")); } break; } } return(DefaultResponseMessage(requestMessage)); }
public ActionResult EditTicket(string id, int appId) { //var obj = GetObject(id); var obj = _objService.Repository.GetByKey(int.Parse(id)); var questionView = _objService.GetQuestionDetail(id, obj); var user = _objUserService.GetBylillyId(obj.CreatedUserId); if (user != null) { questionView.Tel = user.Tel; } var objConfig = WeChatCommonService.GetWeChatConfig(obj.AppId.GetValueOrDefault()); string strToken = AccessTokenContainer.TryGetToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret); var objone = MailListApi.GetMember(strToken, obj.CreatedUserId); if (objone != null) { questionView.EMail = objone.email; } if (!string.IsNullOrEmpty(id) && id != "0") { AppDataPermissionCheck(_permissionService, appId, obj.AppId.GetValueOrDefault()); } return(Json(questionView, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 企业号百分比统计 /// </summary> /// <returns></returns> public async Task <ActionResult> Enterprise(string state, string date) { if (string.IsNullOrEmpty(date)) { } else { //定义饼柱状图标的list List <string> xAxisList = new List <string>(); DateTime dt = DateTime.Parse(date); // 获取token var objConfig = WeChatCommonService.GetWeChatConfig(); var token = await getToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret); // 使用获取app列表的API var empagent = await getagentlist(token); foreach (var emp in empagent.agentlist) { xAxisList.Add(emp.name); } var newObj = new { xAxis = xAxisList, //Data = seriesList, }; } return(null); }
/// <summary> /// tag信息列表情报获得 /// </summary> /// <param name="appId">appid</param> /// <returns>tag列表</returns> private List <TagItem> PrepareEditData(int appId) { var Config = WeChatCommonService.GetWeChatConfig(appId); string accessToken = AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret); var tagList = MailListApi.GetTagList(accessToken).taglist; return(tagList); }
public string GetToken(int iAppID) { var Config = WeChatCommonService.GetWeChatConfig(iAppID); return(AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret)); // return resultToken.access_token; }
/// <summary> /// 首次关注应用事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage) { var responseMessage = this.CreateResponseMessage <ResponseMessageText>(); var objConfig = WeChatCommonService.GetWeChatConfig(requestMessage.AgentID); responseMessage.Content = objConfig.WelcomeMessage; return(responseMessage); }
public static GetAppInfoResult GetUserOrDept(int iAppID) { var objConfig = WeChatCommonService.GetWeChatConfig(iAppID); string strToken = AccessTokenContainer.TryGetToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret); return(AppApi.GetAppInfo(strToken, iAppID)); // Ret.allow_userinfos }
/// <summary> /// 微信认证成功 /// </summary> /// <returns></returns> public ActionResult Subscribed(string lillyId) { var objConfig = WeChatCommonService.GetWeChatConfig(1); var token = AccessTokenContainer.TryGetToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret); LogManager.GetLogger(this.GetType()).Debug("Starting ConcernApi.TwoVerification... Token=" + token + " - lillyid=" + lillyId); var result = ConcernApi.TwoVerification(token, lillyId); return(Redirect("/subscribed.html")); }
public string GetToken(int iAppID) { LogManager.GetLogger(this.GetType()).Error("Request.Url.AbsoluteUri:" + Request.Url.AbsoluteUri); var Config = WeChatCommonService.GetWeChatConfig(iAppID); LogManager.GetLogger(this.GetType()).Debug("host:" + Request.Url.Host); return(AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret)); // return resultToken.access_token; }
/// <summary> /// 微信图文推送。该函数不建议使用,建议使用PublishMessage函数代替。 /// </summary> /// <param name="iAppID"></param> /// <param name="strMsgType"></param> /// <param name="strUser"></param> /// <param name="strDept"></param> /// <param name="strTags"></param> /// <param name="strContent"></param> /// <param name="lstContent"></param> /// <returns></returns> public static MassResult SendMsg(int iAppID, string strMsgType, string strUser, string strDept, string strTags, string strContent, List <Article> lstContent) { MassResult objResult = null; int IsSec = 0; var objConfig = WeChatCommonService.GetWeChatConfig(iAppID); LogManager.GetLogger(typeof(WechatCommon)).Debug("strUser:{0} strDept:{1} strTags:{2} Msg:{3}", strUser, strDept, strTags, strContent); string strToken = AccessTokenContainer.TryGetToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret); switch (strMsgType) { case "text": objResult = MassApi.SendText(strToken, strUser, strDept, strTags, iAppID.ToString(), strContent, IsSec); break; case "image": Dictionary <string, Stream> dic = new Dictionary <string, Stream>(); // for (int i = 0; i < Request.Files.Count; i++) { var stream = System.IO.File.OpenRead(HttpContext.Current.Server.MapPath("~/") + "/style/images/meteorshower.jpg"); dic.Add("meteorshower.jpg", stream); } var ret = MediaApi.Upload(strToken, UploadMediaFileType.file, dic, ""); objResult = MassApi.SendImage(strToken, strUser, strDept, strTags, iAppID.ToString(), ret.media_id, IsSec); break; case "news": objResult = MassApi.SendNews(strToken, strUser, strDept, strTags, iAppID.ToString(), lstContent, IsSec); break; case "file": Dictionary <string, Stream> dic1 = new Dictionary <string, Stream>(); for (int i = 0; i < HttpContext.Current.Request.Files.Count; i++) { var stream = System.IO.File.OpenRead(HttpContext.Current.Server.MapPath("~/") + "/style/images/meteorshower.jpg"); dic1.Add("meteorshower.jpg", stream); } var ret1 = MediaApi.Upload(strToken, UploadMediaFileType.file, dic1, ""); objResult = MassApi.SendFile(strToken, strUser, strDept, strTags, iAppID.ToString(), ret1.media_id, IsSec); break; } return(objResult); }
public string rtntoken(int agentid = 0) { var Config = WeChatCommonService.GetWeChatConfig(agentid); var strToken = AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret); if (!string.IsNullOrEmpty(strToken)) { return(strToken); } return(null); }
/// <summary> /// 用户进入应用事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_EnterAgentRequest(RequestMessageEvent_Enter_Agent requestMessage) { LogManager.GetLogger(this.GetType()).Debug("用户进入应用事件 - AppID:" + requestMessage.AgentID); // 记录用户行为 _wr.CallUserBehavior(requestMessage.EventKey, requestMessage.FromUserName, requestMessage.AgentID.ToString(CultureInfo.InvariantCulture), "", "", 10); // 先判断是否第一次进入。 // 从_weChatAppUser中获取当前用户 string userId = requestMessage.FromUserName; bool isFirstJoin = false; var existingUser = _weChatAppUserService.Repository.Entities.FirstOrDefault(a => a.WeChatUserID == userId && a.WeChatAppID == requestMessage.AgentID); var objConfig = WeChatCommonService.GetWeChatConfig(requestMessage.AgentID); CategoryType appType = (CategoryType)requestMessage.AgentID; isFirstJoin = (existingUser == null || existingUser == default(WeChatAppUser)); // 如果是第一次进入,需要将用户插入到数据库中 if (isFirstJoin) { LogManager.GetLogger(this.GetType()).Debug("new WeChatAppUser - WeChatAppID=" + appType.ToDescription()); // 将用户信息插入到数据库中 _weChatAppUserService.Repository.Insert(new WeChatAppUser() { WeChatAppID = requestMessage.AgentID, WeChatUserID = userId }); } // 只有第一次推送。 if (isFirstJoin) { List <ArticleInfoView> items; // TODO: 查找所有新闻的最新6条数据,组织图文推送 switch (appType) { default: { LogManager.GetLogger(this.GetType()).Debug("App Type not defined."); items = _articleInfoService.GetList <ArticleInfoView>(a => a.ArticleStatus == "Published" && a.AppId == requestMessage.AgentID && a.ArticleCateSub.EndsWith("ENTRY_PUSH")) .OrderBy("PublishDate", System.ComponentModel.ListSortDirection.Descending) .ToList(); return(CreateResponse(items, objConfig.WXHost, "/News/ArticleInfo/wxdetail/")); } } } return(null); }
/// <summary> /// {"appid":"wx41a2bf0afed3b33d","noncestr":"USUtYzXJw4wELBKX","sign":"ed18cbd26d2f82b44dd2fb70743b484e68e68d3c","timestamp":"1438746212"} /// </summary> /// <returns></returns> public ActionResult sign(int appId, string url) { log.Debug("web API sign Start appId:{0} Uri:{1} Request URL:{2}", appId, url, Request.Url); var config = WeChatCommonService.GetWeChatConfig(appId); var ret = JSSDKHelper.GetJsSdkUiPackage(config.WeixinCorpId, config.WeixinCorpSecret, url); log.Debug("web API sign End UserID:{0} noncestr:{1} Signature:{2} Timestamp:{3}", config.WeixinAppId, ret.NonceStr, ret.Signature, ret.Timestamp); return(Json(new { appid = ret.AppId, noncestr = ret.NonceStr, sign = ret.Signature, timestamp = ret.Timestamp }, JsonRequestBehavior.AllowGet)); }
protected bool SetAuth(HttpContext hc) { if (!(hc.Request.IsAuthenticated && hc.User.Identity != null)) { // LogManager.GetLogger(this.GetType()).Error("1"); hc.Session["ReturnUrl"] = hc.Request.Url.AbsoluteUri; // LogManager.GetLogger(this.GetType()).Error("2"); var objConfig = WeChatCommonService.GetWeChatConfig(2); // LogManager.GetLogger(this.GetType()).Error("3"); string CorpId = objConfig.WeixinCorpId; string strRet = WebConfigurationManager.AppSettings["UserBackUrl"]; // LogManager.GetLogger(this.GetType()).Error("4"); // LogManager.GetLogger(this.GetType()).Debug("UrlStart"); string strUrl = OAuth2Api.GetCode(CorpId, hc.Server.UrlEncode(strRet), "About"); // LogManager.GetLogger(this.GetType()).Error("5"); hc.Response.Redirect(strUrl); return(false); } return(true); // LogManager.GetLogger(this.GetType()).Debug(strUrl); }
/// <summary> /// 获取jssdk参数 /// </summary> /// <param name="appId"></param> /// <param name="url"></param> /// <returns></returns> public ActionResult sign(int appId, string url) { //if (!VerifyParam("url")) //{ // return ErrMsg(); //} //string url = Request["url"]; System.IO.File.AppendAllText(Server.MapPath("~/app_data/logs/a.txt"), appId + "\r\n" + "url " + url + "\r\n" + "Request.Url " + Request.Url); //string newUrl = string.Empty; //byte[] bytes = Convert.FromBase64String(HttpUtility.UrlDecode(url)); //newUrl = Encoding.UTF8.GetString(bytes); //System.IO.File.AppendAllText(Server.MapPath("~/app_data/logs/a.txt"), appId + "\r\n" + "newUrl " + newUrl + "\r\n" + "Request.Url " + Request.Url); //url = HttpUtility.UrlDecode(url); //System.IO.File.AppendAllText(Server.MapPath("~/app_data/logs/a.txt"), "\r\n"+ " url " + url+"\r\n"); //LogManager.GetLogger(this.GetType()).Debug("API sign Start appId:{0} Uri:{1} Request URL:{2}", appId, url, Request.Url); // log.Debug("API sign Start appId:{0} Uri:{1} Request URL:{2}", appId, url, Request.Url); var config = WeChatCommonService.GetWeChatConfig(appId); //var ret = Weixin.QY.Helpers.JSSDKHelper.GetJsSdkUiPackage(config.WeixinCorpId, config.WeixinCorpSecret, url); var ret = Weixin.QY.Helpers.JSSDKHelper.GetJsSdkUiPackage(config.WeixinCorpId, config.WeixinCorpSecret, url); System.IO.File.AppendAllText(Server.MapPath("~/app_data/logs/a.txt"), "\r\n" + "WeixinAppId " + config.WeixinAppId + "\r\n" + "NonceStr " + ret.NonceStr + "\r\n" + "Signature " + ret.Signature + "\r\n" + "Timestamp " + ret.Timestamp); // log.Debug("API sign End UserID:{0} noncestr:{1} Signature:{2} Timestamp:{3}", config.WeixinAppId, ret.NonceStr, ret.Signature, ret.Timestamp); return(Json(new { appid = ret.AppId, noncestr = ret.NonceStr, sign = ret.Signature, timestamp = ret.Timestamp }, JsonRequestBehavior.AllowGet)); }
public ActionResult GetNewJsSDK(int appId, string url, string clientId) { if (!VerifyNewParam("url", clientId, _signCheckService)) { return(ErrMsg()); } log.Debug("web API sign Start appId:{0} Uri:{1} Request URL:{2}", appId, url, Request.Url); var config = WeChatCommonService.GetWeChatConfig(appId); var ret = Weixin.QY.Helpers.JSSDKHelper.GetJsSdkUiPackage(config.WeixinCorpId, config.WeixinCorpSecret, url); log.Debug("web API sign End UserID:{0} noncestr:{1} Signature:{2} Timestamp:{3}", config.WeixinAppId, ret.NonceStr, ret.Signature, ret.Timestamp); return(Json(new { appid = ret.AppId, noncestr = ret.NonceStr, sign = ret.Signature, timestamp = ret.Timestamp }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 批量操作--导入成员 /// </summary> /// <param name="OPType"></param> /// <returns></returns> public ActionResult batchuser(int?OPType) { string strRet = "[\"jsonrpc\" : \"2.0\", \"result\" : null, \"id\" : \"{0}\"]"; string strErrRet = "[\"jsonrpc\" : \"2.0\", \"error\" : [\"code\": {0}, \"message\": \"{1}\"], \"id\" : \"id\"]"; string operateType = ""; try { if (Request.Files.Count == 0) { strRet = string.Format(strErrRet, "100", "未发现上传文件!"); return(Content(strRet)); } Dictionary <string, Stream> dic = new Dictionary <string, Stream>(); for (int i = 0; i < Request.Files.Count; i++) { HttpPostedFileBase objFile = Request.Files[i]; dic.Add(objFile.FileName, objFile.InputStream); } var ret = MediaApi.Upload(GetToken(), UploadMediaFileType.file, dic, ""); System.Threading.Thread.Sleep(1000); //上传失败 if (!string.IsNullOrEmpty(ret.errmsg) && ret.errmsg.IndexOf("ok") < 0) { strRet = string.Format(strErrRet, ret.errcode, ret.errmsg); return(Content(strRet)); } BatchUserResult objRet; var objConfig = WeChatCommonService.GetWeChatConfig(AppId); string callbackUrl = CommonService.GetSysConfig(SysConfigCode.CallBackUrl, "");//从Sysconfig数据库中读url BatchUser objUser = new BatchUser() { media_id = ret.media_id, callback = new callback() { token = objConfig.WeixinToken, // Token, encodingaeskey = objConfig.WeixinEncodingAESKey, // EncodingAESKey, url = callbackUrl //app.innocellence.com/wechatqy/led } }; if (OPType == 1) { objRet = MailListApi.BatchUpdateUser(GetToken(), objUser); operateType = "sync_user"; } else if (OPType == 2) { objRet = MailListApi.BatchReplaceUser(GetToken(), objUser); operateType = "replace_user"; } else if (OPType == 3) { objRet = MailListApi.BatchReplaceDept(GetToken(), objUser); operateType = "replace_party"; } else { objRet = new BatchUserResult() { errmsg = "参数错误!" }; } //当执行导入操作时将返回的jobId插入到表中去 if (!string.IsNullOrEmpty(objRet.errmsg)) { strRet = string.Format(strRet, objRet.jobid); var jobLog = new BatchJobLog() { JobID = objRet.jobid, Status = 0, Type = operateType, CreatedDate = DateTime.Now }; _batchJobLogService.Repository.Insert(jobLog);//插入表中 } else { strRet = string.Format(strErrRet, objRet.errcode, objRet.errmsg); } } catch (Exception ex) { strRet = string.Format(strErrRet, "102", ex.Message); } return(Content(strRet.Replace("[", "{").Replace("]", "}"))); }
private static string GetToken(int appId) { var config = WeChatCommonService.GetWeChatConfig(appId); return(AccessTokenContainer.TryGetToken(config.WeixinCorpId, config.WeixinCorpSecret)); }
public override ActionResult Edit(string id) { string strToken = rtntoken(int.Parse(id)); GetAppInfoResult result = AppApi.GetAppInfo(strToken, int.Parse(id)); ViewBag.result = result; //部门信息 //List<DepartmentList> subdepartList = MailListApi.GetDepartmentList(GetToken(), 0).department; List <DepartmentList> subdepartList = new List <DepartmentList>(); if (WeChatCommonService.lstDepartment != null) { subdepartList = WeChatCommonService.lstDepartment; } if (result.allow_partys != null) { String allowpart = string.Join(",", result.allow_partys.partyid); List <string> departname = new List <string>(); foreach (var part in allowpart.Split(',')) { foreach (var allow in subdepartList) { if (allow.id.ToString() == part) { departname.Add(allow.name); break; } } } ViewBag.depatlist = departname; } else { ViewBag.depatlist = new List <string>(); } //标签信息 //var tagList = MailListApi.GetTagList(strToken).taglist; //ViewBag.taglist = tagList; List <TagItem> tagList = new List <TagItem>(); if (WeChatCommonService.lstTag != null) { tagList = WeChatCommonService.lstTag; } if (result.allow_tags != null) { String allowtag = string.Join(",", result.allow_tags.tagid); List <string> tagname = new List <string>(); foreach (var tag in allowtag.Split(',')) { foreach (var tag_list in tagList) { if (tag_list.tagid == tag) { tagname.Add(tag_list.tagname); break; } } } ViewBag.tagname = tagname; } else { ViewBag.tagname = new List <string>(); } //用户信息 List <GetMemberResult> user_List = new List <GetMemberResult>(); if (WeChatCommonService.lstUser != null) { user_List = WeChatCommonService.lstUser; } List <GetAppInfo_AllowUserInfos_User> userList = result.allow_userinfos.user; Dictionary <string, string> username = new Dictionary <string, string>(); foreach (var user in userList) { foreach (var user1 in user_List) { if (user1.userid == user.userid) { username.Add(user1.name, user1.avatar); break; } } } ViewBag.userlist = username; //获取corpid与secret var Config = WeChatCommonService.GetWeChatConfig(int.Parse(id)); if (Config != null) { ViewBag.corpid = Config.WeixinCorpId; ViewBag.secret = Config.WeixinCorpSecret; ViewBag.welcomemessage = Config.WelcomeMessage; ViewBag.configid = Config.Id; } return(View("../appmanage/Edit", result)); }
/// <summary> /// 应用统计 /// </summary> /// <returns></returns> public async Task <ActionResult> Statistics(string state, string begindate, string enddate) { if (!string.IsNullOrEmpty(begindate) && !string.IsNullOrEmpty(enddate)) { DateTime dt = DateTime.Parse(begindate); DateTime dt1 = DateTime.Parse(enddate).AddDays(1); // 获取token var objConfig = WeChatCommonService.GetWeChatConfig(); var token = await getToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret); // 使用获取app列表的API var empagent = await getagentlist(token); //定义饼状图标的list var legendList = new List <string>(); List <int> agentList = _userBehaviorService.GetAgentList(dt, dt1); var middletrans = new Dictionary <int, string>(); foreach (var emp in empagent.agentlist) { foreach (var agent in agentList) { if (emp.agentid == agent.ToString()) { legendList.Add(emp.name); middletrans.Add(agent, emp.name); break; } } } var tabledata = _userBehaviorService.GetByList(dt, dt1); //考虑到图表的SereisData数据为一个列表 var seriesList = new List <SereisData>(); foreach (var kvp in tabledata) { var seriesObj = new SereisData(); foreach (KeyValuePair <int, string> mtrans in middletrans) { if (kvp.AppId == mtrans.Key) { string text = mtrans.Value; if (!string.IsNullOrEmpty(text)) { seriesObj.Sereisname = text; seriesObj.Sereisvalue = kvp.Count; seriesList.Add(seriesObj); } break; } } } var newObj = new { legend = legendList, Data = seriesList, }; if (state == "2") { return(Json(newObj, JsonRequestBehavior.AllowGet)); } else { return(View()); } } return(View()); }
public JsonResult SendNewEmployee() { var AppId = CommonService.GetSysConfig("NewEmployeeAppId", ""); var articleSettingList = _localSADService.SendArticleToNewEmployee(); try { foreach (var em in articleSettingList) { if (em.employeeLst.Count > 0) { string[] ids = em.ArticleId.Split(','); List <Article> articlelist = new List <Article>(); foreach (var item in ids) { Message message = _messageService.Repository.Entities.Where(a => a.Id.ToString() == item).SingleOrDefault(); if (message != null) { var article = new Article() { Title = message.Title, Description = message.Comment, PicUrl = string.Format("{0}/Common/PushFile?id={1}&FileName={2}", WechatBaseUrl, message.ThumbImageId, message.ThumbImageUrl), Url = string.Format("{0}/News/Message/WxDetailh5/{1}", WechatBaseUrl, item) }; articlelist.Add(article); } } WechatCommon.PublishMessage(int.Parse(AppId), articlelist, em.UserLst, "", ""); BaseService <LogsModel> objServLogs = new BaseService <LogsModel>(); string tmpCategory = em.Month + "&" + em.Days; string tmpCateDis = ""; switch (tmpCategory) { case "&7": tmpCateDis = "7 days"; break; case "&15": tmpCateDis = "15 days"; break; case "5&": tmpCateDis = "5 months"; break; case "6&": tmpCateDis = "6 months"; break; default: break; } string[] arrID = em.UserLst.Split('|'); foreach (string strID in arrID) { if (strID != "") { objServLogs.Repository.Insert(new LogsModel() { LogCate = tmpCateDis, LogContent = "发送成功", CreatedUserID = strID, CreatedUserName = strID }); } } } } var deleteuserList = _localSADService.GetDeleteNewEmployee(); string newname = CommonService.GetSysConfig("TagNameNewEmployee", ""); var Config = WeChatCommonService.GetWeChatConfig(int.Parse(AppId)); var token = AccessTokenContainer.TryGetToken(Config.WeixinCorpId, Config.WeixinCorpSecret); //var taglist = MailListApi.GetTagList(token).taglist.Where(x => x.tagname == tagName); var taglist = WeChatCommonService.lstTag.Where(x => x.tagname == newname); int tagid = taglist.FirstOrDefault() != null?Convert.ToInt32(taglist.FirstOrDefault().tagid) : 0; string[] userLst = deleteuserList.Split('|'); List <string> userlist = new List <string>(); foreach (string user in userLst) { userlist.Add(user); } MailListApi.DelTagMember(token, tagid, userlist.ToArray()); } catch (Exception ex) { _logger.Error("Publish Message Error: {0}", ex.Message.ToString()); return(Json(false, JsonRequestBehavior.AllowGet)); } return(Json(true, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> Department(string date) { if (string.IsNullOrEmpty(date)) { } else { // 获取token var objConfig = WeChatCommonService.GetWeChatConfig(); var token = await getToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret); // 使用获取员工详情的API var empDetails = await getEmployeesDetail(token); // 获取部门列表 var departments = await getDepartments(token); // 处理部门关系,暂定只有5层 foreach (var dept in departments.department) { int level = 1; int parentId = dept.parentid; while (parentId != 0) { var parentDept = departments.department.Where(t => t.id == parentId).FirstOrDefault(); if (parentDept != null) { level++; parentId = parentDept.parentid; } } dept.level = level; } //找出部门关系是3的 //定义柱状图标的list List <string> xAxisList = new List <string>(); //考虑到图表的SereisData数据为一个列表 List <SereisData> seriesList = new List <SereisData>(); List <SereisData> unseriesList = new List <SereisData>(); int subscrib = 0; foreach (var dept in departments.department) { if (dept.level == 4) { if (xAxisList.Contains(dept.name)) { } else { xAxisList.Add(dept.name); } } } //根据xAxisList建立对应的seriesList,unseriesList foreach (var t in xAxisList) { SereisData sda = new SereisData(); sda.Sereisname = t; sda.Sereisvalue = 0; seriesList.Add(sda); SereisData unsda = new SereisData(); unsda.Sereisname = t; unsda.Sereisvalue = 0; unseriesList.Add(unsda); } // 更新员工信息,把部门的名称填入 foreach (var emp in empDetails.userlist) { if (emp.department.Count() == 1) { var dept = departments.department.Where(t => t.id == emp.department[0]).FirstOrDefault(); if (dept != null) { int level = dept.level; while (level > 1) { emp.deptLvs[level] = dept.name; dept = departments.department.Where(t => t.id == dept.parentid).FirstOrDefault(); level--; } } } } //找出部门对应员工的关注数 foreach (var emp in empDetails.userlist) { if (emp.department.Count() != 1) { continue; } foreach (var xAxis in xAxisList) { if (emp.deptLvs[4] == xAxis) { if (emp.status == 1) { foreach (var t in seriesList) { if (t.Sereisname == xAxis) { t.Sereisvalue += 1; break; } } } else { foreach (var t in unseriesList) { if (t.Sereisname == xAxis) { t.Sereisvalue += 1; break; } } } break; } } } var newObj = new { xAxis = xAxisList, Data = seriesList, UnData = unseriesList }; return(Json(newObj, JsonRequestBehavior.AllowGet)); } return(View()); }
/// <summary> /// 获取配置 /// </summary> /// <returns></returns> protected SysWechatConfig GetWechatConfig() { string appid = Request["appid"]; return(WeChatCommonService.GetWeChatConfig(int.Parse(appid))); }
public ActionResult Post(PostModel postModel, bool isDebug = false) { var maxRecordCount = 10; log.Debug("Entering WeChat Post "); Stream s = System.Web.HttpContext.Current.Request.InputStream; byte[] b = new byte[s.Length]; s.Read(b, 0, (int)s.Length); var postStr = Encoding.UTF8.GetString(b); log.Debug("content-type: " + Request.ContentType); log.Debug("raw data: " + postStr); log.Debug("raw url: " + Request.RawUrl); QyCustomMessageHandler messageHandler = null; //var iAppID = int.Parse(Request["AppID"] ?? "1"); try { var objConfig = WeChatCommonService.GetWeChatConfig(); postModel.Token = objConfig.WeixinToken; // Token; postModel.EncodingAESKey = objConfig.WeixinEncodingAESKey; // EncodingAESKey; postModel.CorpId = objConfig.WeixinCorpId; // CorpId; } catch (Exception ex) { log.Error(ex, "CommonService.GetWeChatConfig - Exception: " + ex.Message); } try { log.Debug("weixin maxRecordCount2: " + maxRecordCount); //自定义MessageHandler,对微信请求的详细判断操作都在这里面。 messageHandler = new QyCustomMessageHandler(Request.InputStream, postModel, maxRecordCount, isDebug); log.Debug("messageHandler.RequestMessage : " + messageHandler.RequestMessage); if (messageHandler.RequestMessage == null) { log.Debug("messageHandler.RequestMessage is null"); //验证不通过或接受信息有错误 } //messageHandler.RequestDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_Request_" + messageHandler.RequestMessage.FromUserName + ".txt")); //执行微信处理过程 messageHandler.Execute(); //测试时可开启,帮助跟踪数据 //messageHandler.ResponseDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_Response_" + messageHandler.ResponseMessage.ToUserName + ".txt")); //messageHandler.FinalResponseDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_FinalResponse_" + messageHandler.ResponseMessage.ToUserName + ".txt")); if (isDebug) { // messageHandler.FinalResponseDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_FinalResponse_" + messageHandler.ResponseMessage.ToUserName + ".txt")); log.Debug("messageHandler.ResponseMessage : " + messageHandler.FinalResponseDocument.Document.ToString()); } //自动返回加密后结果 return(new FixWeixinBugWeixinResult(messageHandler)); } catch (Exception ex) { log.Error(ex, "执行微信处理过程 - Exception: " + ex.Message); if (messageHandler != null) { log.Error("执行微信处理过程 - Request: " + messageHandler.RequestDocument.ToString()); log.Error("执行微信处理过程 - Response: " + messageHandler.FinalResponseDocument.ToString()); } } return(Content("")); }