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)); }
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); }
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); }
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); }
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)); }
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); }
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); }
public int GetContinuousDays(int userId) { UserSignInInfo userSignInInfo = this.Get <UserSignInInfo>(userId); return(userSignInInfo?.ContinuousDays ?? 0); }
/// <summary> /// 修改数据 /// </summary> /// <param name="model"></param> /// <returns></returns> public int Update(UserSignInInfo model) { return(dal.Update(model)); }
/// <summary> /// 添加数据到数据库 /// </summary> /// <param name="model"></param> /// <returns></returns> public int Insert(UserSignInInfo model) { return(dal.Insert(model)); }
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, "")); } }