Пример #1
0
        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));
        }
Пример #2
0
 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();
     }
 }
Пример #3
0
        /// <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);
            }
        }
Пример #4
0
 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();
         }
     }
 }
Пример #5
0
        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);
                }
            }
        }
Пример #6
0
 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);
     }
 }
Пример #7
0
    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);
        }
    }
Пример #8
0
        public ActionResult DeleteConfirmed(string id)
        {
            WeChatUser weChatUser = db.WeChatUsers.Find(id);

            db.WeChatUsers.Remove(weChatUser);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Пример #9
0
        private void ChatWithContact(WeChatUser contact)
        {
            ChatListManager.ChatWithContact(contact);

            //导航到聊天列表
            NavigateCommand.Execute("ChatListView");
            ChatNavChecked = true;
        }
Пример #10
0
        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;
            }
            //回复消息的时候也需要验证消息,这个很多开发者没有注意这个,存在安全隐患
            //微信中 谁都可以获取信息 所以 关系不大 对于普通用户 但是对于某些涉及到验证信息的开发非常有必要
            //接收消息
        }
Пример #11
0
        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);
        }
Пример #12
0
 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));
 }
Пример #13
0
    /// <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);
    }
Пример #14
0
        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);
        }
Пример #15
0
    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 = "此用户没有成员资格信息,请核查。";
            }
        }
    }
Пример #16
0
 /// <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);
        }
Пример #18
0
        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());
        }
Пример #19
0
        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);
        }
Пример #20
0
        // 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));
        }
Пример #21
0
 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");
     }
 }
Пример #22
0
        //接受视频消息  备注:"&"=>"@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);
     }
 }
Пример #25
0
        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);
        }
Пример #26
0
        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;
        }
Пример #27
0
 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);
         }
     }
 }
Пример #28
0
        //接受图片消息 备注:"&"=>"@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);
        }
Пример #29
0
        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);
        }
Пример #30
0
 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("你不是管理员,没有权限删除成员!");
         }
     }
 }
Пример #31
0
        /// <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);
        }
Пример #32
0
        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);
            }
        }
Пример #33
0
        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 "";
        }
Пример #34
0
 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();
 }
Пример #35
0
        //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;
        }
Пример #36
0
 public void Insert(WeChatUser wechatuser)
 {
     DbContext.WeChatUsers.Add(wechatuser);
     DbContext.SaveChanges();
 }