Esempio n. 1
0
        public int SaveUserSignIn(UserSignInInfo model, int cDays)
        {
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append("IF NOT EXISTS (SELECT UserId FROM Hishop_UserSignIn WHERE UserId=@UserId) ");
            stringBuilder.Append(" BEGIN ");
            stringBuilder.Append("INSERT INTO Hishop_UserSignIn(UserId,LastSignDate,ContinuousDays) VALUES(@UserId,@LastSignDate,1); ");
            stringBuilder.Append(" END ");
            stringBuilder.Append(" ELSE IF NOT EXISTS (SELECT UserId FROM Hishop_UserSignIn WHERE UserId=@UserId And LastSignDate=@LastSignDate) ");
            stringBuilder.Append(" BEGIN ");
            if (cDays > 1)
            {
                stringBuilder.Append("UPDATE Hishop_UserSignIn SET ContinuousDays=CASE WHEN DATEDIFF(day,LastSignDate,@LastSignDate)=1 THEN (ContinuousDays+1)%@CDays ELSE 1 END WHERE UserId=@UserId; ");
                stringBuilder.Append("UPDATE Hishop_UserSignIn SET LastSignDate=@LastSignDate WHERE UserId=@UserId;");
            }
            else
            {
                stringBuilder.Append("UPDATE Hishop_UserSignIn SET ContinuousDays=1,LastSignDate=@LastSignDate WHERE UserId=@UserId; ");
            }
            stringBuilder.Append(" END ");
            DbCommand sqlStringCommand = base.database.GetSqlStringCommand(stringBuilder.ToString());

            base.database.AddInParameter(sqlStringCommand, "UserId", DbType.Int32, model.UserId);
            base.database.AddInParameter(sqlStringCommand, "LastSignDate", DbType.DateTime, model.LastSignDate);
            if (cDays > 1)
            {
                base.database.AddInParameter(sqlStringCommand, "CDays", DbType.Int32, cDays);
            }
            return(base.database.ExecuteNonQuery(sqlStringCommand));
        }
Esempio n. 2
0
        public IList <UserSignInInfo> GetList()
        {
            StringBuilder sb = new StringBuilder(250);

            sb.Append(@"select Id,UserId,SignInXml,LastUpdatedDate 
			            from UserSignIn
					    order by LastUpdatedDate desc "                    );

            IList <UserSignInInfo> list = new List <UserSignInInfo>();

            using (SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.SqlProviderConnString, CommandType.Text, sb.ToString()))
            {
                if (reader != null && reader.HasRows)
                {
                    while (reader.Read())
                    {
                        UserSignInInfo model = new UserSignInInfo();
                        model.Id              = reader.GetGuid(0);
                        model.UserId          = reader.GetGuid(1);
                        model.SignInXml       = reader.GetString(2);
                        model.LastUpdatedDate = reader.GetDateTime(3);

                        list.Add(model);
                    }
                }
            }

            return(list);
        }
Esempio n. 3
0
        public UserSignInInfo GetModel(object Id)
        {
            UserSignInInfo model = null;

            StringBuilder sb = new StringBuilder(300);

            sb.Append(@"select top 1 Id,UserId,SignInXml,LastUpdatedDate 
			            from UserSignIn
						where Id = @Id "                        );
            SqlParameter parm = new SqlParameter("@Id", SqlDbType.UniqueIdentifier);

            parm.Value = Guid.Parse(Id.ToString());

            using (SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.SqlProviderConnString, CommandType.Text, sb.ToString(), parm))
            {
                if (reader != null)
                {
                    while (reader.Read())
                    {
                        model                 = new UserSignInInfo();
                        model.Id              = reader.GetGuid(0);
                        model.UserId          = reader.GetGuid(1);
                        model.SignInXml       = reader.GetString(2);
                        model.LastUpdatedDate = reader.GetDateTime(3);
                    }
                }
            }

            return(model);
        }
Esempio n. 4
0
        public IList <UserSignInInfo> GetList(string sqlWhere, params SqlParameter[] cmdParms)
        {
            StringBuilder sb = new StringBuilder(250);

            sb.Append(@"select Id,UserId,SignInXml,LastUpdatedDate
                        from UserSignIn ");
            if (!string.IsNullOrEmpty(sqlWhere))
            {
                sb.AppendFormat(" where 1=1 {0} ", sqlWhere);
            }

            IList <UserSignInInfo> list = new List <UserSignInInfo>();

            using (SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.SqlProviderConnString, CommandType.Text, sb.ToString(), cmdParms))
            {
                if (reader != null && reader.HasRows)
                {
                    while (reader.Read())
                    {
                        UserSignInInfo model = new UserSignInInfo();
                        model.Id              = reader.GetGuid(0);
                        model.UserId          = reader.GetGuid(1);
                        model.SignInXml       = reader.GetString(2);
                        model.LastUpdatedDate = reader.GetDateTime(3);

                        list.Add(model);
                    }
                }
            }

            return(list);
        }
Esempio n. 5
0
        public static int UserSignIn(int userId, int cDays)
        {
            DateTime       lastSignDate   = DateTime.Parse(DateTime.Now.ToShortDateString());
            UserSignInInfo userSignInInfo = new UserSignInInfo();

            userSignInInfo.UserId       = userId;
            userSignInInfo.LastSignDate = lastSignDate;
            return(new SignInDal().SaveUserSignIn(userSignInInfo, cDays));
        }
Esempio n. 6
0
        public IList <UserSignInInfo> GetList(int pageIndex, int pageSize, out int totalRecords, string sqlWhere, params SqlParameter[] cmdParms)
        {
            StringBuilder sb = new StringBuilder(250);

            sb.Append(@"select count(*) from UserSignIn ");
            if (!string.IsNullOrEmpty(sqlWhere))
            {
                sb.AppendFormat(" where 1=1 {0} ", sqlWhere);
            }
            totalRecords = (int)SqlHelper.ExecuteScalar(SqlHelper.SqlProviderConnString, CommandType.Text, sb.ToString(), cmdParms);

            if (totalRecords == 0)
            {
                return(new List <UserSignInInfo>());
            }

            sb.Clear();
            int startIndex = (pageIndex - 1) * pageSize + 1;
            int endIndex   = pageIndex * pageSize;

            sb.Append(@"select * from(select row_number() over(order by LastUpdatedDate desc) as RowNumber,
			          Id,UserId,SignInXml,LastUpdatedDate
					  from UserSignIn "                    );
            if (!string.IsNullOrEmpty(sqlWhere))
            {
                sb.AppendFormat(" where 1=1 {0} ", sqlWhere);
            }
            sb.AppendFormat(@")as objTable where RowNumber between {0} and {1} ", startIndex, endIndex);

            IList <UserSignInInfo> list = new List <UserSignInInfo>();

            using (SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.SqlProviderConnString, CommandType.Text, sb.ToString(), cmdParms))
            {
                if (reader != null && reader.HasRows)
                {
                    while (reader.Read())
                    {
                        UserSignInInfo model = new UserSignInInfo();
                        model.Id              = reader.GetGuid(1);
                        model.UserId          = reader.GetGuid(2);
                        model.SignInXml       = reader.GetString(3);
                        model.LastUpdatedDate = reader.GetDateTime(4);

                        list.Add(model);
                    }
                }
            }

            return(list);
        }
Esempio n. 7
0
        public int Insert(UserSignInInfo model)
        {
            StringBuilder sb = new StringBuilder(250);

            sb.Append(@"insert into UserSignIn (UserId,SignInXml,LastUpdatedDate)
			            values
						(@UserId,@SignInXml,@LastUpdatedDate)
			            "            );

            SqlParameter[] parms =
            {
                new SqlParameter("@UserId",          SqlDbType.UniqueIdentifier),
                new SqlParameter("@SignInXml",       SqlDbType.VarChar),
                new SqlParameter("@LastUpdatedDate", SqlDbType.DateTime)
            };
            parms[0].Value = model.UserId;
            parms[1].Value = model.SignInXml;
            parms[2].Value = model.LastUpdatedDate;

            return(SqlHelper.ExecuteNonQuery(SqlHelper.SqlProviderConnString, CommandType.Text, sb.ToString(), parms));
        }
        private UserSignInInfo MapUser(PasswordVerificationResult passwordVerificationResult, User dbUser)
        {
            if (dbUser == null)
            {
                throw new ArgumentNullException(nameof(dbUser));
            }

            if (passwordVerificationResult == PasswordVerificationResult.Failed)
            {
                return(null);
            }

            var userSignInInfo = new UserSignInInfo()
            {
                RequirePasswordChange = dbUser.RequirePasswordChange,
                UserAreaCode          = dbUser.UserAreaCode,
                UserId            = dbUser.UserId,
                IsAccountVerified = dbUser.AccountVerifiedDate.HasValue
            };

            return(userSignInInfo);
        }
        /// <summary>
        /// The user has been mapped, so complete the mapping of the outer result.
        /// </summary>
        private UserCredentialsAuthenticationResult MapResult(
            UserSignInInfo user,
            AuthenticateUserCredentialsQuery query
            )
        {
            var result = new UserCredentialsAuthenticationResult();

            if (user == null)
            {
                result.Error = UserValidationErrors.Authentication.InvalidCredentials.Create(query.PropertyToValidate);
                return(result);
            }

            if (result.Error != null)
            {
                throw new InvalidOperationException($"Unexpected error state for a successful request: {result.Error.ErrorCode}");
            }

            result.User      = user;
            result.IsSuccess = true;

            return(result);
        }
Esempio n. 10
0
        public int GetContinuousDays(int userId)
        {
            UserSignInInfo userSignInInfo = this.Get <UserSignInInfo>(userId);

            return(userSignInInfo?.ContinuousDays ?? 0);
        }
Esempio n. 11
0
 /// <summary>
 /// 修改数据
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public int Update(UserSignInInfo model)
 {
     return(dal.Update(model));
 }
Esempio n. 12
0
 /// <summary>
 /// 添加数据到数据库
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public int Insert(UserSignInInfo model)
 {
     return(dal.Insert(model));
 }
Esempio n. 13
0
        public string SaveUserSignIn(string username)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(username))
                {
                    return(ReturnError("登录标识不能为空字符串,请检查", ""));
                }
                var user = Membership.GetUser(username);
                if (user == null)
                {
                    return(ReturnError("登录标识无效,请检查", ""));
                }
                var userId = user.ProviderUserKey;

                UserSignIn usiBll   = new UserSignIn();
                var        usiModel = usiBll.GetModelByUser(user.ProviderUserKey);

                HnztcQueueService hqs      = new HnztcQueueService();
                XElement          root     = null;
                DateTime          currTime = DateTime.Now;

                #region 如果从未签到过,无记录时,则新增一行记录

                if (usiModel == null)
                {
                    StringBuilder sb       = new StringBuilder(1000);
                    var           ts       = DateTime.Parse(string.Format("{0}-01", currTime.AddMonths(1).ToString("yyyy-MM"))) - DateTime.Parse(string.Format("{0}-01", currTime.ToString("yyyy-MM")));
                    var           totalDay = (int)ts.TotalDays;

                    sb.Append("<Root>");
                    sb.AppendFormat(@"<Xel Month=""{0}"">", currTime.ToString("yyyyMM"));
                    for (int i = 0; i < totalDay; i++)
                    {
                        int currGold = ((i + 1) == currTime.Day ? 1 : 0);
                        sb.AppendFormat(@"<Add Day=""{0}"" GoldLevel=""{1}"" />", string.Format("{0}-{1}", currTime.ToString("yyyy-MM"), (i + 1).ToString().PadLeft(2, '0')), currGold);
                    }
                    sb.AppendFormat("</Xel>");
                    sb.Append("</Root>");

                    usiModel                 = new UserSignInInfo();
                    usiModel.UserId          = userId;
                    usiModel.LastUpdatedDate = DateTime.Now;
                    usiModel.SignInXml       = sb.ToString();
                    if (usiBll.Insert(usiModel) < 1)
                    {
                        return(ReturnError("签到失败,原因:数据连接操作异常,请稍后再重试", ""));
                    }

                    hqs.SaveUserLevel(new UserLevelInfo {
                        UserId = Guid.Parse(usiModel.UserId.ToString()), TotalGold = 1
                    });
                    return(ReturnSuccess("签到成功!", 1));
                }

                #endregion

                root = XElement.Parse(usiModel.SignInXml);
                var lastXel = root.Elements("Xel").OrderByDescending(m => int.Parse(m.Attribute("Month").Value)).First();

                #region 如果是新的一年,则新增一行当前年数据

                if (!lastXel.Attribute("Month").Value.StartsWith(currTime.ToString("yyyy")))
                {
                    StringBuilder sb       = new StringBuilder(1000);
                    var           ts       = DateTime.Parse(string.Format("{0}-01", currTime.AddMonths(1).ToString("yyyy-MM"))) - DateTime.Parse(string.Format("{0}-01", currTime.ToString("yyyy-MM")));
                    var           totalDay = (int)ts.TotalDays;

                    sb.Append("<Root>");
                    sb.AppendFormat(@"<Xel Month=""{0}"">", currTime.ToString("yyyyMM"));
                    for (int i = 0; i < totalDay; i++)
                    {
                        int currGold = ((i + 1) == currTime.Day ? 1 : 0);
                        sb.AppendFormat(@"<Add Day=""{0}"" GoldLevel=""{1}"" />", string.Format("{0}-{1}", currTime.ToString("yyyy-MM"), (i + 1).ToString().PadLeft(2, '0')), currGold);
                    }
                    sb.AppendFormat("</Xel>");
                    sb.Append("</Root>");

                    usiModel                 = new UserSignInInfo();
                    usiModel.UserId          = userId;
                    usiModel.LastUpdatedDate = DateTime.Now;
                    usiModel.SignInXml       = sb.ToString();
                    if (usiBll.Insert(usiModel) < 1)
                    {
                        return(ReturnError("签到失败,原因:数据连接操作异常,请稍后再重试", ""));
                    }

                    hqs.SaveUserLevel(new UserLevelInfo {
                        UserId = Guid.Parse(usiModel.UserId.ToString()), TotalGold = 1
                    });
                    return(ReturnSuccess("签到成功!", 1));
                }

                #endregion

                var todayXel = lastXel.Descendants("Add").FirstOrDefault(m => m.Attribute("Day").Value.Trim() == currTime.ToString("yyyy-MM-dd"));

                #region 如果没有找到今天记录,则新增当前月的所有节点

                if (todayXel == null)
                {
                    StringBuilder sb       = new StringBuilder(1000);
                    var           ts       = DateTime.Parse(string.Format("{0}-01", currTime.AddMonths(1).ToString("yyyy-MM"))) - DateTime.Parse(string.Format("{0}-01", currTime.ToString("yyyy-MM")));
                    var           totalDay = (int)ts.TotalDays;

                    sb.AppendFormat(@"<Xel Month=""{0}"">", currTime.ToString("yyyyMM"));
                    for (int i = 0; i < totalDay; i++)
                    {
                        int currGold = ((i + 1) == currTime.Day ? 1 : 0);
                        sb.AppendFormat(@"<Add Day=""{0}"" GoldLevel=""{1}"" />", string.Format("{0}-{1}", currTime.ToString("yyyy-MM"), (i + 1).ToString().PadLeft(2, '0')), currGold);
                    }
                    sb.AppendFormat("</Xel>");

                    root.Add(sb.ToString());

                    usiModel.LastUpdatedDate = currTime;
                    usiModel.SignInXml       = HttpUtility.HtmlDecode(root.ToString());
                    if (usiBll.Update(usiModel) < 1)
                    {
                        return(ReturnError("数据库连接操作异常,请稍后再重试!", ""));
                    }

                    hqs.SaveUserLevel(new UserLevelInfo {
                        UserId = Guid.Parse(usiModel.UserId.ToString()), TotalGold = 1
                    });

                    return(ReturnSuccess("签到成功!", 1));
                }

                #endregion

                if (int.Parse(todayXel.Attribute("GoldLevel").Value) > 0)
                {
                    return(ReturnError("已签到,每天只能签到一次", ""));
                }
                int todayGold = 1;

                var prevXel = lastXel.Descendants("Add").First(m => m.Attribute("Day").Value.Trim() == currTime.AddDays(-1).ToString("yyyy-MM-dd"));
                if (int.Parse(prevXel.Attribute("GoldLevel").Value) > 0)
                {
                    todayGold = int.Parse(prevXel.Attribute("GoldLevel").Value) + 1;
                }
                todayXel.SetAttributeValue("GoldLevel", todayGold);

                usiModel.LastUpdatedDate = currTime;
                usiModel.SignInXml       = HttpUtility.HtmlDecode(root.ToString());
                if (usiBll.Update(usiModel) < 1)
                {
                    return(ReturnError("数据库连接操作异常,请稍后再重试!", ""));
                }

                hqs.SaveUserLevel(new UserLevelInfo {
                    UserId = Guid.Parse(usiModel.UserId.ToString()), TotalGold = todayGold
                });

                return(ReturnSuccess("签到成功!", todayGold));
            }
            catch (Exception ex)
            {
                new CustomException(ex.Message, ex);
                return(ReturnError(ex.Message, ""));
            }
        }