示例#1
0
文件: UserDao.cs 项目: Oldsooh/SHTS
        private WeChatUser ConvertToWeChatUserObject(SqlDataReader reader)
        {
            WeChatUser weChatUser = new WeChatUser
            {
                AccessToken = reader["AccessToken"].DBToString(),
                AccessTokenExpired = reader["AccessTokenExpired"].DBToBoolean(),
                AccessTokenExpireTime = reader["AccessTokenExpireTime"].DBToDateTime(),
                City = reader["City"].DBToString(),
                County = reader["County"].DBToString(),
                CreatedTime = reader["CreatedTime"].DBToDateTime(),
                Id = reader["Id"].DBToInt32(),
                NickName = reader["NickName"].DBToString(),
                OpenId = reader["OpenId"].DBToString(),
                Photo = reader["Photo"].DBToString(),
                Province = reader["Province"].DBToString(),
                Sex = reader["Sex"].DBToInt32(),
                UserId = reader["UserId"].DBToNullableInt32(),
                HasSubscribed = reader["HasSubscribed"].DBToBoolean(),
                HasAuthorized = reader["HasAuthorized"].DBToBoolean(),
                LastRequestTimestamp = reader["LastRequestTimestamp"].DBToDateTime()
            };

            return weChatUser;
        }
示例#2
0
文件: UserDao.cs 项目: Oldsooh/SHTS
        /// <summary>
        /// 更新微信用户信息。
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public bool UpdateWeChatUser(SqlConnection conn, WeChatUser user)
        {
            SqlParameter[] parameters =
            {
                new SqlParameter("@Id", user.Id),
                new SqlParameter("@UserId", user.UserId),
                new SqlParameter("@OpenId", user.OpenId),
                new SqlParameter("@NickName", user.NickName),
                new SqlParameter("@Sex", user.Sex),
                new SqlParameter("@Province", user.Province),
                new SqlParameter("@City", user.City),
                new SqlParameter("@County", user.County),
                new SqlParameter("@Photo", user.Photo),
                new SqlParameter("@AccessToken", user.AccessToken),
                new SqlParameter("@AccessTokenExpired", user.AccessTokenExpired),
                new SqlParameter("@AccessTokenExpireTime", user.AccessTokenExpireTime),
                new SqlParameter("@HasSubscribed", user.HasSubscribed),
                new SqlParameter("@HasAuthorized", user.HasAuthorized)
            };

            DBHelper.CheckSqlSpParameter(parameters);
            return DBHelper.RunNonQueryProcedure(conn, SP_WeChatUserUpdate, parameters) > 0;
        }
示例#3
0
文件: UserDao.cs 项目: Oldsooh/SHTS
        /// <summary>
        /// 注册微信用户。如果用户属于取消关注后重新关注,那么更新以前微信数据信息,不重新增加新数据
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public bool WeChatUserRegister(SqlConnection conn, WeChatUser user)
        {
            SqlParameter[] parameters =
            {
                new SqlParameter("@Id", SqlDbType.Int, 4),
                new SqlParameter("@UserId", user.UserId),
                new SqlParameter("@OpenId", user.OpenId),
                new SqlParameter("@NickName", user.NickName),
                new SqlParameter("@Sex", user.Sex),
                new SqlParameter("@Province", user.Province),
                new SqlParameter("@City", user.City),
                new SqlParameter("@County", user.County),
                new SqlParameter("@Photo", user.Photo),
                new SqlParameter("@AccessToken", user.AccessToken),
                new SqlParameter("@AccessTokenExpired", user.AccessTokenExpired),
                new SqlParameter("@AccessTokenExpireTime", user.AccessTokenExpireTime),
                new SqlParameter("@HasSubscribed", user.HasSubscribed),
                new SqlParameter("@HasAuthorized", user.HasAuthorized),
                new SqlParameter("@CreatedTime", user.CreatedTime)
            };

            parameters[0].Direction = ParameterDirection.Output;
            DBHelper.CheckSqlSpParameter(parameters);

            return DBHelper.RunNonQueryProcedure(conn, SP_WeChatUserRegister, parameters) > 0;
        }
示例#4
0
        private bool IsLastRequestTimeExceed48Hours(WeChatUser wechatUser)
        {
            if (!wechatUser.LastRequestTimestamp.HasValue)
            {
                return true;
            }

            return (DateTime.Now - wechatUser.LastRequestTimestamp.Value).TotalHours > 48;
        }
示例#5
0
        /// <summary>
        /// 设置默认微信用户session信息来绕过微信授权检测,仅用于电脑测试。
        /// </summary>
        private void SetWeChatUserSessionForTestingUseOnly()
        {
            WeChatUser wechatUser = new UserService().GetWeChatUserByWeChatUserId(112820);// 112816
            if (wechatUser.IsNotNull())
            {
                CurrentWeChatUser = wechatUser;
                if (wechatUser.UserId.HasValue)
                {

                    User user = new UserService().GetUserById(wechatUser.UserId.Value);
                    if (user.IsNotNull())
                    {
                        CurrentUser = user;

                        wechatUser.IsUserLoggedIn = IsUserLogin;
                        wechatUser.IsUserIdentified = IsIdentified;
                        wechatUser.IsUserVip = IsVip;
                    }
                }
            }
        }
示例#6
0
        /// <summary>
        /// 检测微信用户授权信息,如果不符合则需要重新进行微信授权验证。
        /// </summary>
        /// <param name="filterContext"></param>
        private bool SetWeChatUserInfoWithValidation(ActionExecutingContext filterContext)
        {
            bool isWeChatAuthRequired = false;
            var wechatOpenIdCookie = filterContext.RequestContext.HttpContext.Request.Cookies[WeChatOpenIdCookieName];

            //用户还未授权或Cookie被清空, 重新授权。
            if (wechatOpenIdCookie == null || string.IsNullOrEmpty(wechatOpenIdCookie.Value))
            {
                isWeChatAuthRequired = true;
            }
            else
            {
                var wechatUser = userService.GetWeChatUser(wechatOpenIdCookie.Value);

                // 取消强制关注逻辑
                //用户还未关注,提示用户关注我们先。
                //if (wechatUser == null || !wechatUser.HasSubscribed.HasValue || !wechatUser.HasSubscribed.Value)
                //{
                //    filterContext.Result = new RedirectResult(FollowUsUrl);
                //}
                //else

                // 未获得用户数据,重新授权
                if (wechatUser == null || !wechatUser.HasAuthorized.HasValue || !wechatUser.HasAuthorized.Value)
                {
                    isWeChatAuthRequired = true;
                }
                else
                {
                    //更新Session信息
                    if (wechatUser.UserId.HasValue)
                    {
                        var user = userService.GetUserById(wechatUser.UserId.Value);

                        if (user != null)
                        {
                            CurrentUser = user;
                            wechatUser.IsUserLoggedIn = IsUserLogin;
                            wechatUser.IsUserIdentified = IsIdentified;
                            wechatUser.IsUserVip = IsVip;
                        }
                    }

                    CurrentWeChatUser = wechatUser;
                }
            }

            return isWeChatAuthRequired;
        }
示例#7
0
        /// <summary>
        /// Updates wechat user information.
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public bool UpdateWeChatUser(WeChatUser user)
        {
            bool result = false;

            var conn = DBHelper.GetSqlConnection();

            try
            {
                conn.Open();
                result = userDao.UpdateWeChatUser(conn, user);
            }
            catch (Exception ex)
            {
                LogService.Log("更新微信用户信息失败", ex.ToString());
            }
            finally
            {
                conn.Close();
            }

            return result;
        }
示例#8
0
        /// <summary>
        /// 微信用户关注,注册。无失败操作
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool WeChatUserSubscribe(string openId, bool hasSubscribed = true, bool hasAuthorized = false)
        {
            bool result = false;
            var conn = DBHelper.GetSqlConnection();
            try
            {
                conn.Open();
                WeChatUser weChatUser = userDao.GetWeChatUser(openId, conn);

                if (weChatUser != null)
                {
                    weChatUser.HasSubscribed = hasSubscribed;
                    result = userDao.UpdateWeChatUser(conn, weChatUser);
                }
                else
                {
                    weChatUser = new WeChatUser();

                    weChatUser.OpenId = openId;
                    weChatUser.HasSubscribed = hasSubscribed;
                    weChatUser.HasAuthorized = hasAuthorized;
                    weChatUser.CreatedTime = DateTime.Now;

                    result = userDao.WeChatUserRegister(conn, weChatUser);
                }
            }
            catch (Exception e)
            {
                LogService.Log("微信用户注册失败--" + e.Message, e.ToString());
            }
            finally
            {
                conn.Close();
            }
            return result;
        }