/// <summary> /// 添加用户 /// </summary> /// <param name="CreateUserid">操作者ID</param> /// <param name="errMsg">返回错误信息</param> /// <param name="wxDepartmentID"></param> /// <returns></returns> public bool AddMember(string CreateUserid, ref string errMsg, string wxDepartmentID = null) { try { QYConfig.RegistWX(); var accessToken = AccessTokenContainer.GetToken(QYConfig.CorpId); var result = MailListApi.CreateMember(accessToken, UserId, Name, new int[] { int.Parse(wxDepartmentID ?? DepartMent.DepartmentID) }, Position, Mobile, null, Email, Weixinid, 0); if (result.errcode.ToString() == "请求成功") { var gresult = MailListApi.GetMember(accessToken, UserId); Avatar = gresult.avatar; if (MembertDA.AddMember(UserId, Name, Position, Mobile, Email, Weixinid, Avatar, Status, CreateBy, DepartmentPKId.ToString())) { return(true); } else { errMsg = result.errcode + ":" + result.errmsg; return(false); } } else { return(false); } } catch (Exception e) { Logger.Log4Net.Error("add Member error:" + e); errMsg = "操作失敗:" + e.Message; return(false); } }
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)); }
//[TestMethod] public void UpdateMemberTest(string userId) { var accessToken = AccessTokenContainer.GetToken(_corpId, base._corpSecret); var memberUpdateRequest = new MemberUpdateRequest() { userid = userId, english_name = "new english name", department = new long[] { 2 }, gender = "1", email = "*****@*****.**" }; var result = MailListApi.UpdateMember(accessToken, memberUpdateRequest); Assert.IsNotNull(result); Assert.IsTrue(result.errcode == ReturnCode_Work.请求成功); //校验更新成功 var newMemberData = MailListApi.GetMember(accessToken, userId); Assert.AreEqual(memberUpdateRequest.english_name, newMemberData.english_name); Assert.AreEqual(memberUpdateRequest.email, newMemberData.email); Console.WriteLine("new user info:" + newMemberData.ToJson()); }
public ResultJSON<UserDTO> Get(string id) { r.CurrentUser = UserName; var result = new UserDTO { WorkInfo = MailListApi.GetMember(option.AccessToken, id) }; var model = r.FirstOrDefault(u => u.UserId == id); if (model == null) { var user = new User { Name = result.WorkInfo.name, UserId = result.WorkInfo.userid, AccountName = result.WorkInfo.name }; model = r.Insert(user); } result.LocalInfo = model; return new ResultJSON<UserDTO> { Code = 0, Data = result }; }
public WorkJsonResult GetMember(GetMemberDto dto) { //dto.AccessToken = GetAccessToken(QyConfig.CorpID, QyConfig.CorpSecret); var result = MailListApi.GetMember(dto.AccessToken, dto.ID); return(result); }
public string GetDisplayName(string appId, int AccountManageID, string userIds = "", string groupIds = "") { var appInfo = lstSysWeChatConfig.SingleOrDefault(a => a.AccountManageId == AccountManageID); var token = CommonApi.GetToken(appInfo.WeixinCorpId, appInfo.WeixinCorpSecret); StringBuilder sb = new StringBuilder(); if (!string.IsNullOrEmpty(userIds)) { var users = userIds.Split(','); foreach (var user in users) { sb.Append(MailListApi.GetMember(token.access_token, user).name).Append(","); } } if (!string.IsNullOrEmpty(groupIds)) { sb.Append("|"); var groups = groupIds.Split(','); foreach (var group in groups) { sb.Append(MailListApi.GetDepartmentList(token.access_token, Int32.Parse(group)).department[0].name).Append(","); } } return(sb.ToString().TrimEnd(',')); }
/// <summary> /// 跳转通过oauth获取ticket, 主要逻辑以及跳转在WeChatBaseController中完成 /// </summary> /// <param name="appId"></param> /// <param name="uri"></param> /// <returns></returns> public ActionResult GetTicketExt(int appId, string uri) { string UserId = ViewBag.WeChatUserID; if (string.IsNullOrEmpty(UserId)) { return(Content("用户ID为空,请确定您已经关注企业号并且您的状态是在职!")); } log.Debug("API GetTicket Start UserID:{0} Uri:{1} URL:{2}", UserId, uri, Request.Url); string enTicket = EncryptionHelper.ConvertBase64(DesHelper.Encrypt(UserId + "|" + DateTime.UtcNow.ToFileTime().ToString(), CommonService.GetSysConfig("EncryptKey", ""))); string backUrl;//= EncryptionHelper.DecodeFrom64(uri) + enTicket; if (uri.IndexOf("_") >= 0) { var u = uri.Split('_'); var u1 = EncryptionHelper.DecodeFrom64(u[0]); backUrl = u1; // backUrl = (u1.IndexOf("?") >= 0 ? "&" : "?") + EncryptionHelper.DecodeFrom64(u[1]) + enTicket; } else { backUrl = EncryptionHelper.DecodeFrom64(uri); } string strRet = ""; if (backUrl.IndexOf("ticket=") > 0) { strRet = backUrl + enTicket; } else { strRet = backUrl + (backUrl.IndexOf("?") >= 0 ? "&" : "?") + "ticket=" + enTicket; } var strToken = GetTokenExt(); var userInfo = MailListApi.GetMember(strToken, UserId); // var userInfo = UserApi.Info(weChatConfig.WeixinAppId, weChatConfig.WeixinCorpSecret, openid); strRet = strRet + "&extend1="; if (userInfo != null) { strRet = strRet + userInfo; } else { log.Error("用户不存在: userid:{0}", UserId); } log.Debug("API GetTicket End backUrl:{0}", strRet); return(Redirect(strRet)); }
public ActionResult GetSFCode(string lillyID, string openID, string clientID) { if (!VerifyNewParam("lillyid,openid", clientID, _signCheckService)) { return(ErrMsg()); } var result = false; var strToken = GetToken(); var userInfo = MailListApi.GetMember(strToken, lillyID); System.Random r = new Random(); int rr = r.Next(100000, 999999); DateTime dttemp = DateTime.Now.AddMinutes(-5); var sfSearch = _shunFengInfoService.Repository.Entities.Where( t => t.LillyId == lillyID.ToUpper() && t.ValidBefore >= dttemp && t.IsValid == 0).FirstOrDefault(); //int inttemp = sfSearch.ToList().Count; if (sfSearch != null) { result = true; } else { _shunFengInfoService.Repository.Insert(new ShunFengInfo() { LillyId = lillyID.ToUpper(), OpenId = openID.ToUpper(), Email = userInfo.email.ToUpper(), Code = rr.ToString(), ValidBefore = DateTime.Now, CreatedUserID = "", CreatedDate = DateTime.Now, UpdatedUserID = "", UpdatedDate = DateTime.Now, IsDeleted = false, IsValid = 0 }); if (_shunFengInfoService.Repository.Entities.Where( t => t.LillyId == lillyID.ToUpper() && t.ValidBefore >= dttemp && t.IsValid == 0).FirstOrDefault() != null) { result = true; } } if (result) { var jsonString = CommonService.GetSysConfig("SFEmail", ""); _objService.SendMail(lillyID.ToUpper(), 0, rr.ToString(), jsonString, "", "", "验证码", true); } return(Json(new { result = result, }, JsonRequestBehavior.AllowGet)); }
//[TestMethod] public void GetMember(string userId) { var accessToken = AccessTokenContainer.GetToken(_corpId, base._corpSecret); var result = MailListApi.GetMember(accessToken, userId); Assert.IsNotNull(result); Assert.IsTrue(result.errcode == ReturnCode_Work.请求成功); }
public ActionResult ShowContent(string code, string state) { #region 获取用户code if (string.IsNullOrEmpty(code)) { return(Content("您拒绝了授权!")); } if (state != Session["State"] as string) { //这里的state其实是会暴露给客户端的,验证能力很弱,这里只是演示一下 //实际上可以存任何想传递的数据,比如用户ID,并且需要结合例如下面的Session["OAuthAccessToken"]进行验证 return(Content("验证失败!请从正规途径进入!")); } //企业号:通过验证,获取access_token var accessToken = Senparc.Weixin.QY.CommonAPIs.CommonApi.GetToken(CorpId, CorpSecret); if (accessToken.errcode != ReturnCode_QY.请求成功) { return(Content("错误:" + accessToken.errmsg)); } //下面2个数据也可以自己封装成一个类,储存在数据库中(建议结合缓存) //如果可以确保安全,可以将access_token存入用户的cookie中,每一个人的access_token是不一样的 //Session["OAuthAccessTokenStartTime"] = DateTime.Now; //Session["OAuthAccessToken"] = accessToken; //因为这里还不确定用户是否关注本微信,所以只能试探性地获取一下 try { //已关注,可以得到详细信息 userInfo = Senparc.Weixin.QY.AdvancedAPIs.OAuth2Api.GetUserId(accessToken.access_token, code); ViewData["ByBase"] = true; ViewData["UserId"] = userInfo.UserId; ViewData["DeviceId"] = userInfo.DeviceId; string NickName = MailListApi.GetMember(accessToken.access_token, userInfo.UserId).name; Session["NickName"] = NickName; } catch (ErrorJsonResultException ex) { //未关注,只能授权,无法得到详细信息 //这里的 ex.JsonResult 可能为:"{\"errcode\":40003,\"errmsg\":\"invalid openid\"}" return(Content("用户已授权,授权Token:" + accessToken.access_token + "ex:" + ex.Message)); } #endregion #region //获取时间戳 var timestamp = Senparc.Weixin.QY.Helpers.JSSDKHelper.GetTimestamp(); //获取随机码 var nonceStr = Senparc.Weixin.QY.Helpers.JSSDKHelper.GetNoncestr(); string ticket = JsApiTicketContainer.TryGetTicket(CorpId, CorpSecret, false); //获取签名 var signature = Senparc.Weixin.QY.Helpers.JSSDKHelper.GetSignature(ticket, nonceStr, timestamp, Request.Url.AbsoluteUri); #endregion var jssdkUiPackage = new Senparc.Weixin.QY.Helpers.JsSdkUiPackage(CorpId, timestamp.ToString(), nonceStr, signature); return(View(jssdkUiPackage)); }
public ActionResult GetNewByTicket(string ticket, string clientId) { if (!VerifyNewParam("ticket", clientId, _signCheckService)) { return(ErrMsg()); } var weChatConfig = GetWechatConfig(); var t = EncryptionHelper.DecodeFrom64(ticket); var key = DesHelper.Decrypt(t, CommonService.GetSysConfig("EncryptKey", "")); var openid = key.Split('|')[0]; var strToken = GetToken(); var userInfo = MailListApi.GetMember(strToken, openid); // var userInfo = UserApi.Info(weChatConfig.WeixinAppId, weChatConfig.WeixinCorpSecret, openid); //var userView = GetUserInfo((AddressBookMemberView)new AddressBookMemberView().ConvertAPIModel(userInfo)); if (userInfo != null) { var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(new { message = "", success = true, item = new { userid = userInfo.userid, name = userInfo.name, avatar = userInfo.avatar, status = userInfo.status, email = userInfo.email } }); return(Content(strJson, "application/json")); } else { log.Error("用户不存在:ticket:{0} userid:{1}", ticket, openid); return(Json(new { message = "用户不存在!", success = false }, JsonRequestBehavior.AllowGet)); } }
public static GetMemberResult GetMember(string userId, ref string erromsg) { GetMemberResult result = new GetMemberResult(); try { result = MailListApi.GetMember(GetToken(), userId); } catch (ErrorJsonResultException ex) { erromsg = WxReturnCodeMessage.GetReturnMessage((int)ex.JsonResult.errcode); } return(result); }
public IActionResult OAuth(string code, string state, string returnUrl) { if (string.IsNullOrEmpty(code)) { ViewData["Message"] = "code值为空"; return(View()); } var tokenResult = CommonApi.GetToken(WeixinOptions.CorpId, WeixinOptions.Secret); if (!(tokenResult.errcode == Senparc.Weixin.ReturnCode_QY.请求成功)) { ViewData["Message"] = JsonConvert.SerializeObject(tokenResult); return(View()); } var userinfoResult = OAuth2Api.GetUserId(tokenResult.access_token, code); if (!(userinfoResult.errcode == Senparc.Weixin.ReturnCode_QY.请求成功)) { ViewData["Message"] = JsonConvert.SerializeObject(userinfoResult); return(View()); } if (string.IsNullOrEmpty(userinfoResult.UserId)) { ViewData["Message"] = "非企业人员,考勤功能不可用!"; return(View()); } var memberResult = MailListApi.GetMember(tokenResult.access_token, userinfoResult.UserId); if (memberResult.errcode == Senparc.Weixin.ReturnCode_QY.请求成功) { if (string.IsNullOrEmpty(returnUrl)) { return(View()); } else { AppSessions.SetMember(memberResult); return(RedirectToAction(nameof(Index))); } } return(View()); }
//public JsonResult GetBatchNotification(RequestMessageEvent_Batch_Job_Result jobResult) //{ // return Json(doJson(null), JsonRequestBehavior.AllowGet); //} public override ActionResult Get(string Id) { string strID = Request["Id"]; if (!string.IsNullOrEmpty(strID)) { GetMemberResult result = MailListApi.GetMember(GetToken(), Id); result.entryDate = !_localservice.Repository.Entities.Where(a => a.LillyID == result.userid).IsEmpty() ? _localservice.Repository.Entities.Where(a => a.LillyID == result.userid).First().ACTL_HIRE_DT.ToString("yyyy-MM-dd") : "1900-01-01"; return(Json(result, JsonRequestBehavior.AllowGet)); } return(Json(null, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 获取成员 /// </summary> /// <param name="_userId"></param> /// <returns></returns> public static GetMemberResult GetMember(int _userId) { AccessTokenResult access_token_result = new AccessTokenResult(); QYConfigInfo config = GetQYConfig(); access_token_result = CommonApi.GetToken(config.QYCorpId, config.QYSecret); //调用接口 var result = MailListApi.GetMember(access_token_result.access_token, _userId.ToString()); if (result.errmsg == "ok") { return(result); } else { return(null); } }
/// <summary> /// 同步企业号用户 /// </summary> /// <param name="strUserID"></param> /// <param name="user"></param> /// <param name="config"></param> public static void SyncUserFromWechat(string strUserID, ref SysAddressBookMember user, SysWechatConfig config) { var token = WeChatCommonService.GetWeiXinToken(config.Id); var apiResult = MailListApi.GetMember(token, strUserID); IAddressBookService _addressBookServie = EngineContext.Current.Resolve <IAddressBookService>(); var Nowtime = System.DateTime.Now; //没找到用户,直接新建 if (user == null || user.Id == 0) { user = new SysAddressBookMember() { Avatar = apiResult.avatar, AccountManageId = config.AccountManageId, // CompanyID = apiResult. Gender = apiResult.gender, UserId = apiResult.userid, WeiXinId = apiResult.weixinid, UserName = apiResult.name, Status = 1, Department = JsonConvert.SerializeObject(apiResult.department), EmployeeStatus = Innocellence.WeChat.Domain.ModelsView.AddressBookMemberView.EmployeeStatusEnum.U.ToString(), Mobile = apiResult.mobile, Position = apiResult.position, Email = apiResult.email, CreateTime = DateTime.Now, DeleteFlag = 0, SubscribeTime = Nowtime }; _addressBookServie.Repository.Insert(user); } else { if (apiResult.errcode == ReturnCode_QY.请求成功) { user.Avatar = apiResult.avatar; } user.Status = 1; user.SubscribeTime = Nowtime; _addressBookServie.UpdateMember(user); } }
/// <summary> /// 根据Member的主键ID获取Member对象 /// </summary> /// <param name="ID">Menber的主键ID</param> /// <returns></returns> public static QYMemberBL GetMemberByPKID(string ID) { QYMemberDA MembertDA = new QYMemberDA(); QYMemberBL member = MembertDA.TableToEntity <QYMemberBL>(MembertDA.GetMemberByPKID(ID)).First(); var accessToken = AccessTokenContainer.GetToken(QYConfig.CorpId); var m = MailListApi.GetMember(accessToken, member.UserId); if (m != null) { if (m.status.ToString() != member.Status) { member.Status = m.status.ToString(); string errMsg = ""; member.UpdateMember("1", ref errMsg); } } return(member); }
/// <summary> /// 获取成员 /// </summary> /// <param name="QyID">企业ID</param> /// <param name="userId">员工UserID。必须企业内唯一</param> /// <returns></returns> public GetMemberResult GetUser(string QyID, string userId) { GetMemberResult result = null; try { result = MailListApi.GetMember(GetAccessToken(QyID), userId); } catch (Exception ex) { LogWriter.Error(ex, string.Format("获取QyID为{0}的成员失败", QyID)); result = MailListApi.GetMember(GetAccessToken(QyID, true), userId); } if (result.errcode != ReturnCode_QY.请求成功) { LogWriter.Info(string.Format("获取QyID为{0}的成员失败,原因:{1}", QyID, result.errmsg)); } return(result); }
public ActionResult GetSFUserInfo(string lillyID, string clientID) { if (!VerifyNewParam("lillyid", clientID, _signCheckService)) { return(ErrMsg()); } var user = MailListApi.GetMember(GetToken(), lillyID); if (user != null) { var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(new { message = "", success = true, data = new { userid = user.userid, name = user.name, avatar = user.avatar, status = user.status, email = user.email } }); return(Content(strJson, "application/json")); } else { var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(new { message = "", success = false, data = new { } }); return(Content(strJson, "application/json")); } }
/// <summary> /// 扫码推事件(显示消息接受中) /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_ScancodeWaitmsgRequest(RequestMessageEvent_Scancode_Waitmsg requestMessage) { QueryFromWebService qf = new QueryFromWebService(); var responseMessage = this.CreateResponseMessage <ResponseMessageText>(); string barCode = requestMessage.ScanCodeInfo.ScanResult; string eventKey = requestMessage.EventKey; string result = ""; switch (eventKey) { case "saoFangHu": { result = qf.QueryContractFromFangHu(barCode, requestMessage.FromUserName); } break; } var accessToken = AccessTokenContainer.TryGetToken(CorpId, CorpSecret); string NickName = MailListApi.GetMember(accessToken, responseMessage.ToUserName).name; responseMessage.Content = NickName + "您好!\r\n查询结果是:\r\n" + result; return(responseMessage); }
public Member GetMemberInfo(string accessToken, string userId) { var result = MailListApi.GetMember(accessToken, userId); if (result.errcode != ReturnCode_QY.请求成功) { throw new Exception(result.errcode.ToString()); } var x = result; return(new Member(x.userid, x.name, x.weixinid) { Department = new List <int>(x.department), Position = x.position, Gender = x.gender, Mobile = x.mobile, Email = x.email, Status = x.status, Avatar = x.avatar, Enable = x.status == 2 ? 0 : 1 }); }
public IActionResult GetOpenId(string id) { if (string.IsNullOrWhiteSpace(id)) { id = "/"; } #if DEBUG return(Redirect($"/#/wxhub/{WebUtility.UrlEncode("黄继业")}/{WebUtility.UrlEncode("13907741118")}/{false}/{0}/{WebUtility.UrlEncode(id)}")); #else if (!string.IsNullOrWhiteSpace(UserName) && !string.IsNullOrWhiteSpace(UserId) && !string.IsNullOrWhiteSpace(IsAdmin) && !string.IsNullOrWhiteSpace(IsLeader)) { return(Redirect($"/#/wxhub/{WebUtility.UrlEncode(UserName)}/{WebUtility.UrlEncode(UserId)}/{IsAdmin}/{IsLeader}/{WebUtility.UrlEncode(id)}")); } var state = Request.Query["state"]; if (state != "car0774") { return(Redirect(OAuth2Api.GetCode(option.CorpId, "https://" + Request.Host + Request.Path + Request.QueryString, "car0774", ""))); } else { option.AccessToken = AccessTokenContainer.TryGetToken(this.option.CorpId, this.option.Secret); var code = Request.Query["code"]; var at = OAuth2Api.GetUserId(option.AccessToken, code); var userinfo = MailListApi.GetMember(option.AccessToken, at.UserId); UserName = userinfo.name; UserId = at.UserId; IsAdmin = userinfo.department.Contains(7).ToString(); IsLeader = userinfo.isleader.ToString(); //超级管理员的部门id为7 return(Redirect($"/#/wxhub/{WebUtility.UrlEncode(userinfo.name)}/{WebUtility.UrlEncode(at.UserId)}/{userinfo.department.Contains(7)}/{userinfo.isleader}/{WebUtility.UrlEncode(id)}")); } #endif }
/// <summary> /// 文本消息接收事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage) { string result = ""; var accessToken = AccessTokenContainer.TryGetToken(CorpId, CorpSecret); string NickName = MailListApi.GetMember(accessToken, requestMessage.FromUserName).name; var responseMessage = this.CreateResponseMessage <ResponseMessageText>(); if (requestMessage.Content == null) { } else if (requestMessage.Content.ToLower().StartsWith("xlh"))//判断用户输入的内容初始是否含有xlh字段 { result = "您好!\r\n查询结果是:\r\n设备A\r\n信息:AAAAAAAAAAAAAAAAAAAAA"; //string barCode = requestMessage.Content.Substring(3);//截取用户输入的文本内容 //QueryFromWebService qf = new QueryFromWebService();//调用WebService获取查询内容 //result = qf.QueryContractFromFangHu(barCode, requestMessage.FromUserName); } else if (requestMessage.Content == "1") { result = NickName + "您好!\r\n【扫防护码】:如过您想要扫描防护设备上的二维码,请点击下方菜单的【扫防护码】按钮获取防护设备的详细信息。"; } else if (requestMessage.Content == "2") { result = NickName + "您好!\r\n【扫防化码】:如过您想要扫描防化设备上的二维码,请点击下方菜单的【扫防化码】按钮获取防化设备的详细信息。"; } else if (requestMessage.Content == "3") { result = NickName + "您好!\r\n【查序列号】:如过您想要输入序列号来查询设备或合同的信息,请点击下方菜单的【查序列号】按钮获取相应提示。"; } else { result = NickName + ",您好!\r\n不能识别您发送的消息,如需帮助请退出此应用返回上一层联系在线客服!"; } responseMessage.Content = result; return(responseMessage); }
public bool SendMail(int id, string question, string jsonString, string request, string baseUrl, string title) { //获取收件人信息 var receiver = string.Empty; //For local Testing "*****@*****.**" var objConfig = WeChatCommonService.GetWeChatConfigByID(AppId); string strToken = AccessTokenContainer.TryGetToken(objConfig.WeixinCorpId, objConfig.WeixinCorpSecret); var mobile = string.Empty; #if !DEBUG var obj = MailListApi.GetMember(strToken, ViewBag.WeChatUserID); if (obj != null) { receiver = obj.email; } else { receiver = ""; } #endif var EmailReceiver = ""; var EmailEnableSsl = false; var EmailHost = ""; var EmailPassword = ""; var EmailUserName = ""; var EmailPort = ""; var EmailSender = ""; var EmailEnable = true; var EmailTitle = ""; var EmailTemplate = ""; object jsonResult = null; LogManager.GetLogger(this.GetType()).Debug("request" + request); JavaScriptSerializer js = new JavaScriptSerializer(); jsonResult = js.Deserialize <object>(jsonString); var fullResult = jsonResult as Dictionary <string, object>; if (fullResult != null) { EmailReceiver = fullResult["EmailReceiver"] as string; EmailEnableSsl = bool.Parse(fullResult["EmailEnableSsl"].ToString()); EmailHost = fullResult["EmailHost"] as string; EmailPassword = fullResult["EmailPassword"] as string; EmailUserName = fullResult["EmailUserName"] as string; EmailPort = fullResult["EmailPort"] as string; EmailSender = fullResult["EmailSender"] as string; EmailEnable = bool.Parse(fullResult["EmailEnable"].ToString()); EmailTitle = fullResult["EmailTitle"] as string; EmailTemplate = fullResult["EmailTemplate"] as string; } if (!string.IsNullOrEmpty(EmailTitle)) { //特殊处理EmailTitle if (!string.IsNullOrEmpty(title)) { EmailTitle = string.Format("{0} ({1},{2})", EmailTitle, ViewBag.WeChatUserID, DateTime.Now.ToShortDateString()); } EmailTitle = EmailTitle.Replace("\r", "").Replace("\n", ""); } List <QuestionImagesView> lst = _objImageService.GetListByQuestionID <QuestionImagesView>(id); var attachlink = ""; if (lst != null || lst.Count > 0) { foreach (var attach in lst) { attachlink = string.Format("{0}<a href=\"{1}\">{2}</a>\n", attachlink, string.Format("{0}Common/QuestionFile?id={1}&filename={2}", baseUrl, attach.Id, attach.ImageName), attach.ImageName); } } var userModel = _objUserService.GetByWeChatUserID(ViewBag.WeChatUserID); if (userModel != null) { mobile = userModel.Tel; } var EmailContent = EmailTemplate.Replace("#Url#", request).Replace("#Question#", question). Replace("#WeChatUserID#", ViewBag.WeChatUserID).Replace("#Email#", receiver).Replace("#Contact#", mobile) .Replace("#Attachment#", attachlink); EmailMessageSettingsRecord set = new EmailMessageSettingsRecord() { Host = EmailHost, UserName = EmailUserName, Password = EmailPassword, Port = int.Parse(EmailPort), EnableSsl = EmailEnableSsl, Enable = EmailEnable, DeliveryMethod = "Network", Address = EmailSender, RequireCredentials = true }; Task.Run(() => { EmailMessageService ser = new EmailMessageService(set); ser.SendMessage(EmailSender, EmailReceiver, EmailTitle, EmailContent.Replace("\r\n", "<br/>").Replace("\n", "<br/>").Replace("\r", "<br/>")); }); return(true); }
public bool SendMail(int id, string question, string jsonString, string request, string baseUrl, string title) { //获取收件人信息 string strToken = WeChatCommonService.GetWeiXinToken(AppId); var mobile = string.Empty; var obj = MailListApi.GetMember(strToken, ViewBag.LillyId); string receiver = obj != null ? obj.email : ""; var EmailReceiver = ""; var EmailEnableSsl = false; var EmailHost = ""; var EmailPassword = ""; var EmailUserName = ""; var EmailPort = ""; var EmailSender = ""; var EmailEnable = true; var EmailTitle = ""; var EmailTemplate = ""; object jsonResult = null; LogManager.GetLogger(this.GetType()).Debug("request" + request); var js = new JavaScriptSerializer(); jsonResult = js.Deserialize <object>(jsonString); var fullResult = jsonResult as Dictionary <string, object>; if (fullResult != null) { EmailReceiver = fullResult["EmailReceiver"] as string; EmailEnableSsl = bool.Parse(fullResult["EmailEnableSsl"].ToString()); EmailHost = fullResult["EmailHost"] as string; EmailPassword = fullResult["EmailPassword"] as string; EmailUserName = fullResult["EmailUserName"] as string; EmailPort = fullResult["EmailPort"] as string; EmailSender = fullResult["EmailSender"] as string; EmailEnable = bool.Parse(fullResult["EmailEnable"].ToString()); EmailTitle = fullResult["EmailTitle"] as string; EmailTemplate = fullResult["EmailTemplate"] as string; } if (!string.IsNullOrEmpty(EmailTitle)) { //特殊处理EmailTitle if (!string.IsNullOrEmpty(title)) { EmailTitle = string.Format("{0} ({1},{2})", EmailTitle, ViewBag.LillyId, DateTime.Now.ToShortDateString()); } EmailTitle = EmailTitle.Replace("\r", "").Replace("\n", ""); } List <QuestionImagesView> lst = _objImageService.GetListByQuestionID <QuestionImagesView>(id); var attachlink = ""; if (lst != null) { attachlink = lst.Aggregate(attachlink, (current, attach) => string.Format("{0}<a href=\"{1}\">{2}</a>\n", current, string.Format("{0}Common/QuestionFile?id={1}&filename={2}", baseUrl, attach.Id, attach.ImageName), attach.ImageName)); } var userModel = _objUserService.GetBylillyId(ViewBag.LillyId); if (userModel != null) { mobile = userModel.Tel; } var emailContent = EmailTemplate.Replace("#Url#", request).Replace("#Question#", question). Replace("#LillyId#", ViewBag.LillyId).Replace("#Email#", receiver).Replace("#Contact#", mobile) .Replace("#Attachment#", attachlink); var set = new EmailMessageSettingsRecord() { Host = EmailHost, UserName = EmailUserName, Password = EmailPassword, Port = int.Parse(EmailPort), EnableSsl = EmailEnableSsl, Enable = EmailEnable, DeliveryMethod = "Network", Address = EmailSender, RequireCredentials = true }; Task.Run(() => { var ser = new EmailMessageService(set); ser.SendMessage(EmailSender, EmailReceiver, EmailTitle, emailContent.Replace("\r\n", "<br/>").Replace("\n", "<br/>").Replace("\r", "<br/>")); }); return(true); }
/// <summary> /// 根据ticket获得员工信息 /// </summary> /// <param name="ticket"></param> /// <returns></returns> public ActionResult GetByTicket(string ticket) { if (!VerifyParam("ticket")) { return(ErrMsg()); } var weChatConfig = GetWechatConfig(); var t = EncryptionHelper.DecodeFrom64(ticket); var key = DesHelper.Decrypt(t, CommonService.GetSysConfig("EncryptKey", "")); var openid = key.Split('|')[0]; var strToken = GetToken(); var userInfo = MailListApi.GetMember(strToken, openid); // var userInfo = UserApi.Info(weChatConfig.WeixinAppId, weChatConfig.WeixinCorpSecret, openid); //var userView = GetUserInfo((AddressBookMemberView)new AddressBookMemberView().ConvertAPIModel(userInfo)); if (userInfo != null) { var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(new { message = "", success = true, item = new { userid = userInfo.userid, name = userInfo.name, avatar = userInfo.avatar, status = userInfo.status, email = userInfo.email } }); return(Content(strJson, "application/json")); //return Json(new //{ // message = "", // success = true, // item= userView // //item = new // //{ // // id = userInfo.Id, // // teamId = userInfo.AccountManageId, // // userId = userInfo.UserId, // // name = userInfo.UserName, // // position = userInfo.Position, // // mobile = userInfo.Mobile, // // gender = userInfo.Gender, // // avatar = userInfo.Avatar, // // extend1 = "", // // // telephone = userInfo.te, // // email = userInfo.Email, // // wxid = userInfo.WeiXinId, // // hrcode = userInfo.EmployeeNo, // // status = userInfo.Status, // // createTime = userInfo.CreateTime // //}, //}, JsonRequestBehavior.AllowGet); } else { log.Error("用户不存在:ticket:{0} userid:{1}", ticket, openid); return(Json(new { message = "用户不存在!", success = false }, JsonRequestBehavior.AllowGet)); } }
/// <summary> /// 根据userId获取用户信息 /// </summary> /// <param name="userId"></param> /// <returns></returns> public ActionResult GetByUserId(string userId) { if (!VerifyParam("userId")) { return(ErrMsg()); } var result = new Innocellence.Interface.ViewModel.AccessJsonView(); var strToken = GetToken(); var user = MailListApi.GetMember(strToken, userId); if (user == null) { log.Error("用户不存在: userid:{0}", userId); result.success = false; result.message = "用户不存在!"; } else { //TODO, DB中现在没有的字段暂时赋为空置 result.success = true; //var userView = GetUserInfo((AddressBookMemberView)new AddressBookMemberView().ConvertAPIModel(user)); //var userView = new AccessUserInfoView(); //userView.Id = user.Id; //userView.position = user.Position; //userView.createTime = DateTimeHelper.GetWeixinDateTime(user.CreateTime.Value); //userView.birthday = ""; //userView.contactNumber = user.Mobile; // TODO: 还有个属性Mobile //userView.wxid = user.WeiXinId; ////userView.departmentList //// TODO: 如何将string 类型的user.Department转化为List类型 //userView.cityName = ""; //userView.registerAddress = ""; //userView.teamId = user.AccountManageId; //userView.city = ""; //userView.contactSignTime = ""; //userView.trainingAgreement = ""; //userView.name = ""; //userView.userId = user.UserId; //userView.gender = user.Gender.ToString(); //userView.major = ""; //userView.university = ""; //userView.citizenshipNumber = ""; //userView.status = user.Status; //userView.avatar = user.Avatar; //userView.englishName = ""; //userView.confidentialityAgreement = ""; //userView.degree = ""; //userView.email = user.Email; //userView.address = ""; //// TODO tag list ////userView.tagList = null //userView.publicAvatarPath = user.Avatar; //userView.hrcode = user.EmployeeNo; //userView.mobile = user.Mobile; result.item = user; } var strJson = Newtonsoft.Json.JsonConvert.SerializeObject(result); return(Content(strJson, "application/json")); // return Json(result, JsonRequestBehavior.AllowGet); }
//public SysWechatConfig GetAppSysWechatConfig(string appId) { // return lstSysWeChatConfig.Find(a => a.WeixinAppId == appId); //} public List <PersonGroup> GetAllPersonAndGroup(string appId, int accountManageId) { var id = int.Parse(appId); SysWechatConfig appInfo = null; if (id == 0) { appInfo = lstSysWeChatConfig.FirstOrDefault(a => a.AccountManageId == accountManageId); } else { appInfo = lstSysWeChatConfig.SingleOrDefault(a => a.Id == id && a.AccountManageId == accountManageId); } string token = (appInfo.IsCorp != null && !appInfo.IsCorp.Value) ? Innocellence.Weixin.MP.CommonAPIs.AccessTokenContainer.GetToken(appInfo.WeixinCorpId, appInfo.WeixinCorpSecret) : Innocellence.Weixin.QY.CommonAPIs.AccessTokenContainer.TryGetToken(appInfo.WeixinCorpId, appInfo.WeixinCorpSecret); var results = AppApi.GetAppInfo(token, int.Parse(appInfo.WeixinAppId)); List <PersonGroup> list = new List <PersonGroup>(); if (results.allow_userinfos != null) { foreach (var person in results.allow_userinfos.user) { PersonGroup personGroup = new PersonGroup(); personGroup.Type = "Person"; var p = MailListApi.GetMember(token, person.userid); personGroup.WeixinName = p.name; personGroup.WeixinId = p.userid; personGroup.Avatar = p.avatar; list.Add(personGroup); } } if (results.allow_partys != null) { foreach (var groupId in results.allow_partys.partyid) { PersonGroup personGroup = new PersonGroup(); personGroup.Type = "Group"; var d = MailListApi.GetDepartmentList(token, groupId).department.FirstOrDefault(); if (d != null) { personGroup.WeixinName = d.name; personGroup.WeixinId = d.id.ToString(); list.Add(personGroup); } } } if (results.allow_tags != null) { var allTagList = MailListApi.GetTagList(token).taglist; foreach (var groupId in results.allow_tags.tagid) //foreach (var tag in allTagList) { PersonGroup personGroup = new PersonGroup(); personGroup.Type = "Tag"; var tag = allTagList.Find(a => a.tagid == groupId.ToString()); if (tag != null) { personGroup.WeixinName = tag.tagname; personGroup.WeixinId = tag.tagid; list.Add(personGroup); } } } return(list); }
/// <summary> /// 获取成员 /// </summary> /// <param name="accessTokenOrAppKey">调用接口凭证(AccessToken)或AppKey(根据AccessTokenContainer.BuildingKey(corpId, corpSecret)方法获得)</param> /// <param name="userId">员工UserID</param> /// <returns></returns> public static MemberResult GetMember(string accessTokenOrAppKey, string userId) { var result = MailListApi.GetMember(accessTokenOrAppKey, userId); return(result.ToMemberResult()); }
public ActionResult UploadUser() { try { //同步部门 GetDepartmentListResult result = MailListApi.GetDepartmentList(WeixinWorkService.GetToken()); var departments = dbContext.SysDepartment.OrderByDescending(c => c.DepartmentName).ToList(); foreach (var item in departments) { if (item.DepartmentId == Guid.Parse("2379788E-45F0-417B-A103-0B6440A9D55D")) { continue; } var parentId = Convert.ToInt64(departments.Where(c => c.DepartmentId == item.ParentId).FirstOrDefault().WeixinWorkId); DepartmentList qyDep = result.department.Where(c => c.id == item.WeixinWorkId).FirstOrDefault(); if (qyDep == null) { var createResult = MailListApi.CreateDepartment(WeixinWorkService.GetToken(), item.DepartmentName, parentId == 0 ? 1 : parentId, 1000 - (item.OrderNo.HasValue ? item.OrderNo.Value : 0)); item.WeixinWorkId = createResult.id; } else { MailListApi.UpdateDepartment(WeixinWorkService.GetToken(), qyDep.id, item.DepartmentName, parentId == 0 ? 1 : parentId, 1000 - (item.OrderNo.HasValue ? item.OrderNo.Value : 0)); } dbContext.SaveChanges(); } //同步用户 var users = dbContext.SysUser.Where(c => c.UserCode != "admin").ToList(); foreach (var userItem in users) { long[] longArr = new long[1]; longArr[0] = Convert.ToInt64(dbContext.SysDepartment.Where(c => c.DepartmentId == userItem.DepartmentId).FirstOrDefault().WeixinWorkId); try { var memberResult = MailListApi.GetMember(WeixinWorkService.GetToken(), userItem.UserCode); if (memberResult.errcode == Senparc.Weixin.ReturnCode_Work.UserID不存在) { MemberCreateRequest request = new MemberCreateRequest(); request.email = userItem.Email; request.department = longArr; request.enable = 1; request.mobile = userItem.Mobile; request.name = userItem.UserName; request.userid = userItem.UserCode; MailListApi.CreateMember(WeixinWorkService.GetToken(), request); } else { MemberUpdateRequest updateRequest = new MemberUpdateRequest(); updateRequest.department = longArr; updateRequest.email = userItem.Email; updateRequest.enable = 1; updateRequest.mobile = userItem.Mobile; updateRequest.name = userItem.UserName; updateRequest.userid = userItem.UserCode; MailListApi.UpdateMember(WeixinWorkService.GetToken(), updateRequest); } } catch { } } return(Json(new { Code = 0, Msg = "同步成功!" })); } catch (Exception ex) { LogHelper.SaveLog(ex); return(Json(new { Code = 1, Msg = "服务器异常,请联系管理员!" })); } }