public ActionResult Create([Bind(Include = "OpenID,UserName,Address,Phone")] User user) { if (ModelState.IsValid) { // Create wechatUser //if (Session["AccessToken"] == null) //{ // var accessToken = AccessTokenContainer.TryGetAccessToken(Config.SenparcWeixinSetting.WeixinAppId, Config.SenparcWeixinSetting.WeixinAppSecret); // Session["AccessToken"] = accessToken; //} OAuthUserInfo userInfo = OAuthApi.GetUserInfo(Session["AccessToken"].ToString(), Session["OpenID"].ToString()); var weChatUser = db.WeChatUsers.Find(userInfo.openid); if (weChatUser == null) { weChatUser = new WeChatUser { OpenID = userInfo.openid, Nickname = userInfo.nickname, Sex = userInfo.sex, Country = userInfo.country, Province = userInfo.province, City = userInfo.city, HeadImgUrl = userInfo.headimgurl, SubscribeTime = DateTime.Now }; db.WeChatUsers.Add(weChatUser); // Create User db.Users.Add(user); db.SaveChanges(); return(RedirectToAction("Index")); } } return(View(user)); }
public void EGetEwm() { if (Context.Session["OpenIdE"] != null) { string OpenId = Context.Session["OpenIdE"].ToString(); WeChatUser wcu = ve.WeChatUser.FirstOrDefault(x => x.OpenId == OpenId && x.State == true); TempBind tb = null; int num = 0; do { num = TextStr.RandomArray(1, 50000, 100000)[0]; string str = num + ""; tb = ve.TempBind.FirstOrDefault(q => q.SceneId == str); } while (tb != null); tb = new TempBind(); tb.Token = wcu.Token; tb.SceneId = num + ""; tb.CreateDate = DateTime.Now; tb.DeviceId = wcu.DeviceId; ve.TempBind.Add(tb); ve.SaveChanges(); Context.Response.Clear(); Context.Response.ContentType = "image/jpg"; Context.Response.BinaryWrite(QrCodeManager.GenerateTemp(GetToken(), num)); Context.Response.End(); } }
/// <summary> /// 不带店铺场景值关注 /// </summary> /// <returns></returns> private async Task SubscribeNoWithScene(string openId, string nickName, string headImgUrl, int?tenantId, string scene, string ticket) { var user = await _wechatuserRepository.GetAll().Where(w => w.OpenId == openId).FirstOrDefaultAsync(); //await GetWeChatUserAsync(openId, tenantId); if (user != null) { user.NickName = nickName; user.UserType = UserTypeEnum.消费者; //user.BindStatus = WechatEnums.BindStatusEnum.未绑定; user.UserId = null; user.UserName = user.NickName; user.BindTime = DateTime.Now; user.HeadImgUrl = headImgUrl; user.AttentionTime = DateTime.Now; // 第一次关注时间 await _wechatuserRepository.UpdateAsync(user); } else { user = new WeChatUser(); user.NickName = nickName; user.OpenId = openId; user.TenantId = tenantId; user.UserType = UserTypeEnum.消费者; user.UserName = nickName; user.HeadImgUrl = headImgUrl; user.AttentionTime = DateTime.Now; // 最后一次关注时间 user.IntegralTotal = 0; //积分默认为0 user.BindStatus = BindStatusEnum.未绑定; await _wechatuserRepository.InsertAsync(user); } }
public static void UpdateUser(WeChatUser user) { using (WeChatDbContext entity = new WeChatDbContext()) { var weChatUser = (from item in entity.WeChatUsers where item.OpenId == user.OpenId orderby item.WeChatUserId descending select item).FirstOrDefault(); if (weChatUser != null) { entity.Entry(weChatUser).State = System.Data.Entity.EntityState.Modified; weChatUser.Subscribe = user.Subscribe; weChatUser.LastUpdateStateTime = DateTime.Now; if (user.Subscribe == 1) { weChatUser.City = user.City; weChatUser.Country = user.Country; weChatUser.HeadImgUrl = user.HeadImgUrl; weChatUser.Language = user.Language; weChatUser.NickName = user.NickName; weChatUser.Province = user.Province; weChatUser.LastSubscribeChannel = user.LastSubscribeChannel; weChatUser.Sex = user.Sex; } entity.SaveChanges(); } } }
public async Task SubscribeAsync(string openId, string nickName, string headImgUrl, int?tenantId) { using (_unitOfWorkManager.Current.SetTenantId(tenantId)) { var user = await GetWeChatUserAsync(openId, tenantId); if (user != null) { user.NickName = nickName; user.UserType = WechatEnums.UserTypeEnum.消费者; user.BindStatus = WechatEnums.BindStatusEnum.未绑定; user.UserId = null; user.UserName = user.NickName; user.BindTime = DateTime.Now; user.HeadImgUrl = headImgUrl; await _wechatuserRepository.UpdateAsync(user); } else { user = new WeChatUser(); user.NickName = nickName; user.OpenId = openId; user.TenantId = tenantId; user.UserType = WechatEnums.UserTypeEnum.消费者; user.UserName = nickName; user.HeadImgUrl = headImgUrl; user.BindStatus = WechatEnums.BindStatusEnum.未绑定; await _wechatuserRepository.InsertAsync(user); } } }
public void EGetUsers() { if (Context.Session["OpenIdE"] != null) { string OpenId = Context.Session["OpenIdE"].ToString(); WeChatUser wcu = ve.WeChatUser.FirstOrDefault(x => x.OpenId == OpenId && x.State == true); if (wcu == null) { return; } List <WeChatUser> wcus = ve.WeChatUser.Where(x => x.DeviceId == wcu.DeviceId).OrderBy(x => x.CreateDate).ToList(); Device_user du = new Device_user(); Dictionary <string, List <Dictionary <string, string> > > dic2 = new Dictionary <string, List <Dictionary <string, string> > >(); List <Dictionary <string, string> > list2 = new List <Dictionary <string, string> >(); foreach (var item in wcus) { Dictionary <string, string> dic3 = new Dictionary <string, string>(); dic3.Add("openid", item.OpenId); dic3.Add("lang", "zh_CN"); list2.Add(dic3); } dic2.Add("user_list", list2); string data2 = du.GetUserInformation2(JsonConvert.SerializeObject(dic2), GetToken()); Write(data2); } }
protected void Page_Load(object sender, EventArgs e) { if (Session["WxUser"] != null) { WeChatUser wxUser = Session["WxUser"] as WeChatUser; string jsTicket, jsSign, timestamp, nonceStr, url; url = Request.Url.ToString().Split('#')[0]; jsTicket = WxJSAPI.GetJsAPITicket(); jsSign = WxJSAPI.MakeJsAPISign(jsTicket, url, out nonceStr, out timestamp); //处理用户的推荐人 string agentOpenID = Request.QueryString["AgentOpenID"]; if (!string.IsNullOrEmpty(agentOpenID) && agentOpenID != wxUser.OpenID) { wxUser.AgentOpenID = agentOpenID; } if (string.IsNullOrEmpty(Page.Title)) { Page.Title = Config.SiteTitle; } else { Page.Title = Config.SiteTitle + " -- " + Page.Title; } //注册JS变量openID,用于用户分享页面时带上自己的OpenID ScriptManager.RegisterStartupScript(Page, this.GetType(), "openID", string.Format("var openID = '{0}';", wxUser.OpenID), true); //注册JS变量wxJsApiParam,用于调用微信的JS SDK ScriptManager.RegisterStartupScript(Page, this.GetType(), "wxJSAPI", string.Format("var wxJsApiParam = {{appId:'{0}', timestamp:'{1}', nonceStr:'{2}', signature:'{3}'}};", Config.APPID, timestamp, nonceStr, jsSign), true); //注册JS变量webConfigServer,用于用户分享页面时设置页面title等信息 ScriptManager.RegisterStartupScript(Page, this.GetType(), "webConfig", string.Format("var webConfigServer = {{siteDomain:'{0}',siteTitle:'{1}',siteDesc:'{2}',siteKeywords:'{3}',siteIcon:'{4}',siteCopyrights:'{5}',defaultImg:'{6}'}};", Request.Url.Scheme + "://" + Request.Url.Host, Config.SiteTitle, Config.SiteDesc, Config.SiteKeywords, Config.SiteIcon, Config.SiteCopyrights, Config.DefaultImg), true); } }
public ActionResult DeleteConfirmed(string id) { WeChatUser weChatUser = db.WeChatUsers.Find(id); db.WeChatUsers.Remove(weChatUser); db.SaveChanges(); return(RedirectToAction("Index")); }
private void ChatWithContact(WeChatUser contact) { ChatListManager.ChatWithContact(contact); //导航到聊天列表 NavigateCommand.Execute("ChatListView"); ChatNavChecked = true; }
public HttpResponseMessage Post() { try { Stream requestStream = System.Web.HttpContext.Current.Request.InputStream; byte[] requestByte = new byte[requestStream.Length]; requestStream.Read(requestByte, 0, (int)requestStream.Length); string reqXml = Encoding.UTF8.GetString(requestByte); if (string.IsNullOrEmpty(reqXml)) return ResponseMessage("success"); var wxXmlSerialize = new WxXmlSerialize(reqXml); WxXmlModel WxXmlModel = wxXmlSerialize.GetBaseModel(); switch (WxXmlModel.MsgType) { case "text"://文本 WxXmlModel.Content = wxXmlSerialize.GetValue("Content"); var xml = WxResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content); return ResponseMessage(xml); case "event"://事件 BaseEventEntity entity = new BaseEventEntity(); entity.FromUserName = WxXmlModel.FromUserName; entity.ToUserName = WxXmlModel.ToUserName; entity.CreateTime = long.Parse(WxXmlModel.CreateTime); entity.MsgType = WxXmlModel.MsgType; entity.Event = wxXmlSerialize.GetValue("Event"); entity.EventKey = wxXmlSerialize.GetValue("EventKey"); entity.Ticket = wxXmlSerialize.GetValue("Ticket"); //关注公众号 if (entity.Event == "subscribe") { WeChatUser chatUser = new WeChatUser(); chatUser.ToUserName = entity.ToUserName; chatUser.OpenID = entity.FromUserName; WeChatApi.AddWeiXinUser(chatUser); } //取消关注 else if (entity.Event == "unsubscribe") { WeChatApi.DeleteWeiXinUser(entity.FromUserName); } return ResponseMessage("success"); default: return ResponseMessage("success"); } } catch (Exception ex) { return ResponseMessage("success"); throw; } //回复消息的时候也需要验证消息,这个很多开发者没有注意这个,存在安全隐患 //微信中 谁都可以获取信息 所以 关系不大 对于普通用户 但是对于某些涉及到验证信息的开发非常有必要 //接收消息 }
public static ClaimsIdentity CreateIdentity(WeChatUser user, string authenticationType) { var identity = new ClaimsIdentity(DefaultAuthenticationTypes.ApplicationCookie); identity.AddClaim(new Claim(ClaimTypes.Name, user.NickName)); identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())); identity.AddClaim(new Claim("http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider", "ASP.NET Identity")); identity.AddClaim(new Claim("DisplayName", user.NickName)); return(identity); }
public ActionResult Edit([Bind(Include = "OpenID,Nickname,Sex,Province,City,Country,HeadImgUrl,SubscribeTime,Language,UserType")] WeChatUser weChatUser) { if (ModelState.IsValid) { db.Entry(weChatUser).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(weChatUser)); }
/// <summary> /// 查找指定OpenID的用户 /// </summary> /// <param name="conn"></param> /// <param name="openID"></param> /// <param name="userIsOnline">是否刷新用户活动时间</param> /// <returns></returns> public static WeChatUser FindUserByOpenID(SqlConnection conn, string openID, bool userIsOnline) { WeChatUser wxUser = null; try { using (SqlCommand cmdUser = conn.CreateCommand()) { SqlParameter paramUserID = cmdUser.CreateParameter(); paramUserID.ParameterName = "@OpenID"; paramUserID.SqlDbType = System.Data.SqlDbType.NVarChar; paramUserID.SqlValue = openID; cmdUser.Parameters.Add(paramUserID); cmdUser.CommandText = "select * from WeChatUsers where OpenID = @OpenID"; using (SqlDataReader sdrUser = cmdUser.ExecuteReader()) { while (sdrUser.Read()) { //加载此用户的成员资格信息 MembershipUser mUser = Membership.GetUser(sdrUser["OpenID"].ToString(), userIsOnline); if (mUser != null) { //使用新建的成员资格对象初始化微信用户对象 wxUser = new WeChatUser(mUser); } else { wxUser = new WeChatUser(); } wxUser.ID = int.Parse(sdrUser["Id"].ToString()); wxUser.OpenID = sdrUser["OpenID"].ToString(); wxUser.NickName = sdrUser["NickName"].ToString(); wxUser.Sex = sdrUser["Sex"] != DBNull.Value ? bool.Parse(sdrUser["Sex"].ToString()) : true; wxUser.Country = sdrUser["Country"].ToString(); wxUser.Province = sdrUser["Province"].ToString(); wxUser.City = sdrUser["City"].ToString(); wxUser.HeadImgUrl = sdrUser["HeadImgUrl"].ToString(); wxUser.Privilege = sdrUser["Privilege"].ToString(); wxUser.ClientIP = sdrUser["ClientIP"].ToString(); wxUser.IsSubscribe = sdrUser["IsSubscribe"] != DBNull.Value ? bool.Parse(sdrUser["IsSubscribe"].ToString()) : false; wxUser.MemberPoints = sdrUser["MemberPoints"] != DBNull.Value ? int.Parse(sdrUser["MemberPoints"].ToString()) : 0; } } } } catch (Exception ex) { throw ex; } return(wxUser); }
public void UpdateWeChatUser(WeChatUser user) { WeChatUserDal.Ins.UpdateWeChatUser(user); string key = getGetWeChatUserByUnionIDKey(user.UnionID); if (RedisBase.ContainsKey(key)) { RedisBase.Item_Remove(key); } RedisBase.Item_Set(key, user); }
protected void gvUserList_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { WeChatUser wxUser = (WeChatUser)e.Row.DataItem; //是否在线图标 HtmlContainerControl divIsOnline = e.Row.FindControl("divIsOnline") as HtmlContainerControl; if (wxUser.IsOnline) { divIsOnline.InnerHtml = "<i class=\"fa fa-check\"></i>"; divIsOnline.Attributes["title"] = "在线"; } else { divIsOnline.InnerHtml = "<i class=\"fa fa-close\"></i>"; divIsOnline.Attributes["title"] = "离线"; } //是否关注公众号图标 HtmlContainerControl divIsSubscribe = e.Row.FindControl("divIsSubscribe") as HtmlContainerControl; if (wxUser.IsSubscribe) { divIsSubscribe.InnerHtml = "<i class=\"fa fa-check\"></i>"; divIsSubscribe.Attributes["title"] = "已关注"; } else { divIsSubscribe.InnerHtml = "<i class=\"fa fa-close\"></i>"; divIsSubscribe.Attributes["title"] = "未关注"; } //是否允许登录 CheckBox cbIsApproved = e.Row.FindControl("cbIsApproved") as CheckBox; if (wxUser.ProviderUserKey != null) { cbIsApproved.Attributes["UserId"] = wxUser.ProviderUserKey.ToString(); if (wxUser.IsApproved) { cbIsApproved.Attributes["onclick"] = "if(!confirm('是否禁止此用户登录?')){return false;}"; } else { cbIsApproved.Attributes["onclick"] = "if(!confirm('是否允许此用户登录?')){return false;}"; } } else { cbIsApproved.Enabled = false; cbIsApproved.ToolTip = "此用户没有成员资格信息,请核查。"; } } }
/// <summary> /// 绑定微信用户 /// </summary> /// <param name="user"></param> public async Task <WeChatUser> BindWeChatUserAsync(WeChatUser user) { //存在就更新 if (_wechatuserRepository.GetAll().Any(u => u.Id == user.Id)) { return(await _wechatuserRepository.UpdateAsync(user)); } else //新增 { return(await _wechatuserRepository.InsertAsync(user)); } }
public HttpResponseMessage Post([FromBody] CarInfo model) { var wemodel = new WeChatUser() { CarId = model.Id, OpenId = model.OpenId }; var count = 0; if (string.IsNullOrEmpty(model.Id)) { model.Id = Guid.NewGuid().ToString(); wemodel.CarId = model.Id; count = CarInfoDappler.Add(model); //添加完后 用户绑定信息id if (count == 1) { WechatDappler.Update("update wechatUser set carId = @carId where openId=@openId", wemodel); } } else { count = CarInfoDappler.Update(model); } //判断是否所以信息都已填写 Type t = model.GetType(); PropertyInfo[] PropertyList = t.GetProperties(); var b = true; foreach (PropertyInfo item in PropertyList) { string name = item.Name; object value = item.GetValue(model); if (value != null) { if (value.ToString() != "") { continue; } } b = false; break; } if (b) { WechatDappler.Update("update wechatUser set status = 1 where openId=@openId", wemodel); } HttpResponseMessage result = Request.CreateResponse(HttpStatusCode.OK, new { status = "OK", data = count == 1 }, Configuration.Formatters.JsonFormatter); return(result); }
private string BindWeChat(string OpenId, string SceneId) { StringBuilder str = new StringBuilder(); TempBind tb = ve.TempBind.FirstOrDefault(q => q.SceneId == SceneId); if (tb != null) { WeChatUser tempwcu = ve.WeChatUser.FirstOrDefault(q => q.OpenId == OpenId && q.DeviceId == tb.DeviceId); if (tempwcu != null) { if (tb.Token != tempwcu.Token) { tempwcu.Token = tb.Token; ve.SaveChanges(); } str.Append("你的帐号已绑定【" + tempwcu.DeviceName + "】该设备!"); } else { string js = ""; Message ms = null; WeChatUser wcu = new WeChatUser(); wcu.OpenId = OpenId; wcu.Token = tb.Token; wcu.DeviceId = tb.DeviceId; wcu.DeviceName = tb.DeviceId; wcu.State = true; wcu.UserPhone = ""; wcu.HeadImg = "../Img/ejq.jpg"; wcu.CreateDate = DateTime.Now; ve.WeChatUser.Add(wcu); ve.SaveChanges(); List <WeChatUser> list = ve.WeChatUser.Where(x => x.OpenId == OpenId).ToList(); foreach (var item in list) { if (item.DeviceId == wcu.DeviceId) { continue; } item.State = false; ve.SaveChanges(); } str.Append("\n请在下方回复“绑定设备+手机号”\n如:绑定设备13212345678\n即可激活设备!"); js = "{\"Title\":\"绑定推送\",\"Type\":6,\"OpenId\":\"" + OpenId + "\",\"Content\":\"\"}"; ms = new Message("e家亲", js.Replace("&", "@1").Replace("=", "@2").Replace("%", "@3")); string returnStr = PushHelper.PushMsg(tb.Token, jsonSerializer.Serialize(ms)); JObject json = JObject.Parse(returnStr); returnStr = json["ret_code"].ToString(); } } return(str.ToString()); }
public HttpResponseMessage Post([FromBody] WeChatUser model) { var m = WechatDapper.Query("select * from WechatUser where openid=@openId", new { openId = model.OpenId }).FirstOrDefault(); if (m == null) { WechatDapper.Add(model); } HttpResponseMessage result = Request.CreateResponse(HttpStatusCode.OK, new { status = "OK" }, Configuration.Formatters.JsonFormatter); return(result); }
// GET: WeChatUsers/Delete/5 public ActionResult Delete(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WeChatUser weChatUser = db.WeChatUsers.Find(id); if (weChatUser == null) { return(HttpNotFound()); } return(View(weChatUser)); }
public void EDelDevice(string deviceId) { if (Context.Session["OpenIdE"] != null) { string OpenId = Context.Session["OpenIdE"].ToString(); WeChatUser wcu = ve.WeChatUser.FirstOrDefault(x => x.OpenId == OpenId && x.DeviceId == deviceId); string js = "{\"Title\":\"推送消息\",\"Type\":7,\"OpenId\":\"" + OpenId + "\",\"Content\":\"\"}"; Message ms = new Message("e家亲", js); PushHelper.PushMsg(wcu.Token, jsonSerializer.Serialize(ms)); ve.WeChatUser.Remove(wcu); ve.SaveChanges(); Write("true"); } }
//接受视频消息 备注:"&"=>"@1" "="=>"@2" "%"=>"@3" public string VideoHandle(XmlDocument xmldoc) { string responseContent = ""; XmlNode ToUserName = xmldoc.SelectSingleNode("/xml/ToUserName"); XmlNode FromUserName = xmldoc.SelectSingleNode("/xml/FromUserName"); XmlNode MediaId = xmldoc.SelectSingleNode("/xml/MediaId"); XmlNode ThumbMediaId = xmldoc.SelectSingleNode("/xml/ThumbMediaId"); if (MediaId != null) { WeChatUser wcu = ve.WeChatUser.FirstOrDefault(q => q.OpenId == FromUserName.InnerText && q.State == true); if (wcu != null) { string url = string.Format("https://api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}", ToKen, MediaId.InnerText); string img = string.Format("https://api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}", ToKen, ThumbMediaId.InnerText); string js = "{\"url\":\"" + url + "\",\"img\":\"" + img + "\"}"; js = "{\"Title\":\"推送视频\",\"Type\":4,\"OpenId\":\"" + wcu.OpenId + "\",\"Content\":" + js + "}"; Message ms = new Message("e家亲", js.Replace("&", "@1").Replace("=", "@2").Replace("%", "@3")); string returnStr = PushHelper.PushMsg(wcu.Token, jsonSerializer.Serialize(ms)); JObject json = JObject.Parse(returnStr); returnStr = json["ret_code"].ToString(); if (returnStr == "0") { responseContent = string.Format(ReplyType.Message_Text, FromUserName.InnerText, ToUserName.InnerText, DateTime.Now.Ticks, "你向设备【" + wcu.DeviceName + "】推送了一段视频!"); } else { responseContent = string.Format(ReplyType.Message_Text, FromUserName.InnerText, ToUserName.InnerText, DateTime.Now.Ticks, "推送视频失败!/:bome"); } } else { responseContent = string.Format(ReplyType.Message_Text, FromUserName.InnerText, ToUserName.InnerText, DateTime.Now.Ticks, "请先绑定设备!/::)"); } } return(responseContent); }
public object Post(LoginLogModel model) { if (model.WeChatUserModel.OpenId != null) { var wecharuser = _weChatUserService.GetWeChatUser(model.WeChatUserModel.OpenId); if (wecharuser == null) { wecharuser = new WeChatUser { Id = Guid.NewGuid(), OpenId = model.WeChatUserModel.OpenId, NickName = model.WeChatUserModel.NickName, Gender = (Gender)model.WeChatUserModel.Gender, Language = model.WeChatUserModel.Language, City = model.WeChatUserModel.City, Province = model.WeChatUserModel.Province, Headimgurl = model.WeChatUserModel.Headimgurl }; _weChatUserService.Insert(wecharuser); } else { wecharuser.OpenId = model.WeChatUserModel.OpenId; wecharuser.NickName = model.WeChatUserModel.NickName; wecharuser.Gender = (Gender)model.WeChatUserModel.Gender; wecharuser.Language = model.WeChatUserModel.Language; wecharuser.City = model.WeChatUserModel.City; wecharuser.Province = model.WeChatUserModel.Province; wecharuser.Headimgurl = model.WeChatUserModel.Headimgurl; _weChatUserService.Update(); } var loginLogId = Guid.NewGuid(); if (_loginLogService.GetLoginLog(model.State) == null) { _loginLogService.Insert(new LoginLog { Id = loginLogId, State = model.State, CreateTime = DateTime.Now, WeChatUser_Id = wecharuser.Id }); model.CreateTime = DateTime.Now; model.Id = loginLogId; } return(model); } return(null); }
public void UpdateWeChatUser(WeChatUser user) { try { ISession session = NHibernateSessionFactory.getSession(); ITransaction transaction = session.BeginTransaction(); session.SaveOrUpdate(user); transaction.Commit(); session.Close(); } catch (Exception ex) { ClassLoger.Error("WeChatUserDal.UpdateWeChatUser", ex); } }
private WeChatUser JObjectToUser(JToken jObject) { WeChatUser user = jObject.ToObject <WeChatUser>(); user.HeadImgUrl = user.UserName.GetIconUrl(); user.ChatNotifyClose = user.IsChatNotifyClose(); user.StartChar = user.GetStartChar(); //user.MemberList = jObject["MemberList"].Select(p => p.ToObject<ChatRoomMember>()).ToList(); if (string.IsNullOrEmpty(user.NickName) && user.MemberList != null) { user.NickName = string.Join(",", user.MemberList.Select(p => p.NickName)); } return(user); }
public void ChatWithContact(WeChatUser contact) { var chat = ChatList.FirstOrDefault(p => p.UserName == contact.UserName); if (chat == null) { chat = contact; ChatList.Insert(0, chat); } else { ChatList.Move(ChatList.IndexOf(chat), 0); } SelectedItem = chat; }
public static void InsertNewSubscribeUser(WeChatUser user) { using (WeChatDbContext entity = new WeChatDbContext()) { var olduser = (from item in entity.WeChatUsers where item.OpenId == user.OpenId select item).SingleOrDefault(); if (olduser == null) { entity.WeChatUsers.Add(user); entity.SaveChanges(); } else { UpdateUser(user); } } }
//接受图片消息 备注:"&"=>"@1" "="=>"@2" "%"=>"@3" public string ImageHandle(XmlDocument xmldoc) { string responseContent = ""; XmlNode ToUserName = xmldoc.SelectSingleNode("/xml/ToUserName"); XmlNode FromUserName = xmldoc.SelectSingleNode("/xml/FromUserName"); XmlNode PicUrl = xmldoc.SelectSingleNode("/xml/PicUrl"); if (PicUrl != null) { WeChatUser wcu = ve.WeChatUser.FirstOrDefault(q => q.OpenId == FromUserName.InnerText && q.State == true); if (wcu != null) { string js = "{\"Title\":\"推送图片\",\"Type\":2,\"OpenId\":\"" + wcu.OpenId + "\",\"Content\":\"" + PicUrl.InnerText + "\"}"; Message ms = new Message("e家亲", js.Replace("&", "@1").Replace("=", "@2").Replace("%", "@3")); string returnStr = PushHelper.PushMsg(wcu.Token, jsonSerializer.Serialize(ms)); JObject json = JObject.Parse(returnStr); returnStr = json["ret_code"].ToString(); if (returnStr == "0") { responseContent = string.Format(ReplyType.Message_News_Main, FromUserName.InnerText, ToUserName.InnerText, DateTime.Now.Ticks, "1", string.Format(ReplyType.Message_News_Item, "e家亲", "你向设备【" + wcu.DeviceName + "】推送了一张图片!", PicUrl.InnerText, "")); } else { responseContent = string.Format(ReplyType.Message_Text, FromUserName.InnerText, ToUserName.InnerText, DateTime.Now.Ticks, "推送图片失败!/:bome"); } } else { responseContent = string.Format(ReplyType.Message_Text, FromUserName.InnerText, ToUserName.InnerText, DateTime.Now.Ticks, "请先绑定设备!/::)"); } } return(responseContent); }
private static T ToObject <T>(this JsonElement element) where T : WeChatUser { var user = new WeChatUser(); var target = element.EnumerateObject(); user.OpenId = target.TryGetValue("OpenId"); user.UnionId = target.TryGetValue("UnionId"); user.NickName = target.TryGetValue("NickName"); user.Privilege = target.TryGetValue("Privilege"); user.Sex = target.TryGetValue("Sex"); user.Province = target.TryGetValue("Province"); user.City = target.TryGetValue("City"); user.Country = target.TryGetValue("Country"); user.HeadImgUrl = target.TryGetValue("HeadImgUrl"); user.Privilege = target.TryGetValue("Privilege"); return(user as T); }
public void ECheckUser() { if (Context.Session["OpenIdE"] != null) { string OpenId = Context.Session["OpenIdE"].ToString(); WeChatUser wcu = ve.WeChatUser.FirstOrDefault(x => x.OpenId == OpenId && x.State == true); List <WeChatUser> wcus = ve.WeChatUser.Where(x => x.DeviceId == wcu.DeviceId).OrderBy(x => x.CreateDate).ToList(); if (OpenId == wcus[0].OpenId) { Write("true"); } else { Write("你不是管理员,没有权限删除成员!"); } } }
/// <summary> /// 获取分组的头 /// </summary> /// <param name="user"></param> /// <returns></returns> private string GetStartChar(WeChatUser user) { string start_char; if (user.KeyWord == "gh_" && user.SnsFlag.Equals("0") || user.KeyWord == "cmb")//user.KeyWord =="cmb"是招商银行信用卡,实在找不出区别了 { start_char = "公众号"; } else if (user.UserName.Contains("@@") && user.SnsFlag.Equals("0")) { start_char = "群聊"; } else { start_char = string.IsNullOrEmpty(user.ShowPinYin) ? string.Empty : user.ShowPinYin.Substring(0, 1); } return(start_char); }
public WeChatUser GetWeChatUserByUnionID(string UnionID) { string key = getGetWeChatUserByUnionIDKey(UnionID); if (RedisBase.ContainsKey(key)) { return(RedisBase.Item_Get <WeChatUser>(key)); } else { WeChatUser wuser = WeChatUserDal.Ins.GetWeChatUserByUnionID(UnionID); if (wuser != null) { RedisBase.Item_Set(key, wuser); } return(wuser); } }
public void Weixin() { string weChat = ConfigurationManager.AppSettings["WeChatId"].ToString(); string templateId = ConfigurationManager.AppSettings["TemplateId"].ToString(); WeChatUser user = new WeChatUser(); UserSubscribeLog userlog = new UserSubscribeLog(); string accessToken = WeChatHelper.GetAccessToken(); StreamReader stream = new StreamReader(Request.InputStream); XElement xml = XElement.Load(stream); // 发送方帐号(open_id) string fromUserName = GetXmlNodeValue(xml, "FromUserName"); // 公众帐号 string toUserName = GetXmlNodeValue(xml, "ToUserName"); // 消息类型 string msgType = GetXmlNodeValue(xml, "MsgType"); string eventKey = String.Empty; string MsgId = String.Empty; if (GetXmlNodeValue(xml, "EventKey") != "") { eventKey = GetXmlNodeValue(xml, "EventKey"); } if (GetXmlNodeValue(xml, "MsgId") != "") { MsgId = GetXmlNodeValue(xml, "MsgId"); } user.OpenId = fromUserName; userlog.OpenId = fromUserName; XDocument xdoc = new XDocument(); try { #region Event if (msgType == "event") { string eventType = GetXmlNodeValue(xml, "Event"); if (eventType == "subscribe") { user.OpenId = fromUserName; user.Subscribe = 1; user.SubscribeTime = DateTime.Now; user.LastUpdateStateTime = DateTime.Now; user = WeChatHelper.GetSubscirbeUserInfo(accessToken, fromUserName); userlog.LastUpdateTime = DateTime.Now; userlog.Subcribe = 1; try { if ((eventKey != null) && (eventKey != "")) { if (eventKey.StartsWith("qrscene_")) { user.LastSubscribeChannel = Int32.Parse(eventKey.Split('_')[1].ToString()); userlog.Channel = user.LastSubscribeChannel; } } } catch { } DbServices.InsertUserSubcribeLog(userlog); DbServices.InsertNewSubscribeUser(user); List<Message> msglist = DbServices.GetMessage("subscribe"); YACHelper.SetYACUserOpenId(user.OpenId, user.LastSubscribeChannel); string returnXml = WeChatHelper.ResponseMessage(msglist, user.OpenId); Response.Write(returnXml); } if (eventType == "unsubscribe") { user.OpenId = fromUserName; user.Subscribe = 0; user.LastUpdateStateTime = DateTime.Now; //WeChatHelper.GetSubscirbeUserInfo(accessToken, fromUserName); userlog.Subcribe = 0; userlog.Channel = 0; userlog.LastUpdateTime = DateTime.Now; DbServices.InsertUserSubcribeLog(userlog); DbServices.UpdateUser(user); YACHelper.SetYACCancelUserOpenId(user.OpenId, user.LastSubscribeChannel); } if (eventType == "LOCATION") { } if (eventType == "CLICK") { if (eventKey != "") { List<Message> msglist = DbServices.GetMessage(eventKey); if ((msglist != null) && (msglist.Count > 0)) { string returnXml = WeChatHelper.ResponseMessage(msglist, user.OpenId); Response.Write(returnXml); } } } if (eventType == "VIEW") { } } #endregion #region Text if (msgType == "text") { //Response.Write(""); string content = GetXmlNodeValue(xml, "Content"); UserMessage um = new UserMessage(); um.Content = content; um.OpenId = user.OpenId; um.MsgId = MsgId; um.MessageType = "text"; //string withoutTrim = content.Trim(); #region 正常消息反馈机制 int start = Int32.Parse(ConfigurationManager.AppSettings["WorkStart"].ToString()); int end = Int32.Parse(ConfigurationManager.AppSettings["WorkEnd"].ToString()); if ((DateTime.Now.Hour > end) || (DateTime.Now.Hour < start))//晚上9点以后,早上8点以前,自动回复 { um.ResponseType = "AutoMsg"; DbServices.InsertUserMessage(um); StringBuilder message = new StringBuilder(); string words = ConfigurationManager.AppSettings["NightWords"].ToString(); message.Append(words); string returnMsg = WeChatHelper.ResponseMessage(message.ToString(), user.OpenId, weChat); Response.Write(returnMsg); } else { if (content == "养爱车求")//特殊关键字 { um.ResponseType = "AutoMsg"; DbServices.InsertUserMessage(um); StringBuilder message = new StringBuilder(); message.Append("后台地址:http://120.132.59.94/bk/"); message.Append("公司电话:400 0102 766"); message.Append("请牢记!"); string returnMsg = WeChatHelper.ResponseMessage(message.ToString(), user.OpenId, weChat); Response.Write(returnMsg); } else { KeyWord kw = DbServices.FindMyKeyword(content); if (kw != null)//关键字匹配 { if (!String.IsNullOrEmpty(kw.MsgKeyValue))//检查消息的keyvalue是否为空,如果不为空,则返回匹配value的消息列表 { um.ResponseType = "AutoKey"; um.ResponseKeValue = kw.MsgKeyValue; DbServices.InsertUserMessage(um); List<Message> msglist = DbServices.GetMessage(kw.MsgKeyValue); if ((msglist != null) && (msglist.Count > 0)) { string returnXml = WeChatHelper.ResponseMessage(msglist, user.OpenId); Response.Write(returnXml); } } else//读取关键字内容 { um.ResponseType = "AutoMsg"; um.ResponseId = kw.KeyWordId; DbServices.InsertUserMessage(um); var staff = DbServices.GetStaff(user.OpenId); string returnMsg = WeChatHelper.ResponseMessage(kw.Content, user.OpenId, weChat); Response.Write(returnMsg); } } else//非关键字匹配 { if (!DbServices.IsExistMessage(um)) { DbServices.InsertUserMessage(um); string returnContent = "骚扰大家了,客户向后台发送了文字消息,消息如下:" + content; bool isSendTemplateMsg = Convert.ToBoolean(ConfigurationManager.AppSettings["TemplateMsgOpen"].ToString()); if (isSendTemplateMsg) { List<Staff> staffList = DbServices.GetStaffList(); var wechatUser = DbServices.GetUserInfo(user.OpenId); string nickname = "养爱车粉丝"; if (wechatUser != null) { nickname = wechatUser.NickName; } foreach (var staff in staffList) { if (staff.IsEnabled) { if (!String.IsNullOrEmpty(staff.OpenId)) { string returnMsg = WeChatHelper.ResponseTemplateMessage(content, staff.OpenId, templateId, nickname); if (!staff.IsSend)//标记是否已经给这个人发送过模板消息了 { staff.IsSend = true; WeChatHelper.PostTemplateMessage(returnMsg, accessToken); } } } } } string responseStr = WeChatHelper.ResponseDKFMessage(user.OpenId, weChat); Response.Write(responseStr); } } } } #endregion } #endregion #region Image if (msgType == "image") { UserMessage um = new UserMessage(); string MediaId = GetXmlNodeValue(xml, "MediaId"); string PicUrl = GetXmlNodeValue(xml, "PicUrl"); um.PicUrl = PicUrl; um.OpenId = user.OpenId; um.MessageType = "image"; um.MsgId = MsgId; um.MediaId = MediaId; DbServices.InsertUserMessage(um); bool isNullKeyValue = Boolean.Parse(ConfigurationManager.AppSettings["NullKeyValue"].ToString()); if (isNullKeyValue) { Response.Write(""); } else { UserSubscribeLog userSubscribeLog = DbServices.GetUserSubcribeLogInfo(user.OpenId); if (userSubscribeLog != null) { string message = "欢迎关注养爱车:),您可以从加油站工作人员那里领取养爱车提供的小礼品(每人限领1份)。"; string returnMsg = WeChatHelper.ResponseMessage(message, user.OpenId, weChat); Response.Write(returnMsg); } } if (DateTime.Now.Hour > 22) { } } #endregion #region Vioce if (msgType == "voice") { string MediaId = GetXmlNodeValue(xml, "MediaId"); string Format = GetXmlNodeValue(xml, "Format"); UserMessage um = new UserMessage(); um.OpenId = um.OpenId; um.MediaId = MediaId; um.MsgId = MsgId; um.MessageType = "voice"; DbServices.InsertUserMessage(um); } #endregion #region Link if (msgType == "link") { string Title = GetXmlNodeValue(xml, "Title"); string Description = GetXmlNodeValue(xml, "Description"); string Url = GetXmlNodeValue(xml, "Url"); UserMessage um = new UserMessage(); um.OpenId = um.OpenId; um.Url = Url; um.Title = Title; um.Description = Description; um.MsgId = MsgId; um.MessageType = "link"; DbServices.InsertUserMessage(um); } #endregion } catch { Response.Write(""); } //return ""; }
public ActionResult UpdateUserInfo_TestPage() { foreach (var item in DbServices.GetNoInfoUsers()) { WeChatUser user = new WeChatUser(); string accessToken = WeChatHelper.GetAccessToken(); //user.LastUpdateStateTime = DateTime.Now; user = WeChatHelper.GetSubscirbeUserInfo(accessToken, item.OpenId); DbServices.UpdateUser(user); } return View(); }
//private static string GetFreshAccessToken() //{ // string accessToken = ""; // WebClient wc = new WebClient(); // byte[] data = null; // data = wc.DownloadData(String.Format(WeChatWebAPI.GetAccessToken, appId, appSecret)); // string strWebData = Encoding.Default.GetString(data); // var accessTokenModel = (JObject)JsonConvert.DeserializeObject(strWebData); // if (accessTokenModel["access_token"] != null) // { // accessToken = accessTokenModel["access_token"].ToString(); // int weChatExpiresIn = Int32.Parse(accessTokenModel["expires_in"].ToString()); // //UpdateAccessToken(accessToken, weChatExpiresIn); // } // return accessToken; //} #endregion //获取关注用户信息 public static WeChatUser GetSubscirbeUserInfo(string accessToken, string openId) { WebClient wc = new WebClient(); byte[] data = null; wc.Headers.Add("Content-Type", "application/json; encoding=utf-8"); data = wc.DownloadData(String.Format(WeChatWebAPI.GetWeChatUserInfo, accessToken, openId)); string strWebData = Encoding.UTF8.GetString(data); var jsonModel = (JObject)JsonConvert.DeserializeObject(strWebData); WeChatUser user = new WeChatUser(); if (jsonModel["subscribe"] != null) { user.Subscribe = Int32.Parse(jsonModel["subscribe"].ToString()); user.SubscribeTime = DateTime.Now; user.LastUpdateStateTime = DateTime.Now; user.OpenId = openId; if (user.Subscribe == 1) { user.NickName = jsonModel["nickname"].ToString(); user.Province = jsonModel["province"].ToString(); if (jsonModel["unionid"] != null) { user.UnionId = jsonModel["unionid"].ToString(); } user.City = jsonModel["city"].ToString(); user.Country = jsonModel["country"].ToString(); user.Language = jsonModel["language"].ToString(); user.HeadImgUrl = jsonModel["headimgurl"].ToString(); user.Sex = Int32.Parse(jsonModel["sex"].ToString()); } } return user; }
public void Insert(WeChatUser wechatuser) { DbContext.WeChatUsers.Add(wechatuser); DbContext.SaveChanges(); }