protected void Page_Load(object sender, EventArgs e) { m_AdminForm = AdminBlogArticleFilter.GetFromFilter("filter"); int userid = _Request.Get <int>("userid", Method.Get, 0); if (userid > 0) { m_AdminForm.AuthorID = userid; } if (_Request.IsClick("advancedsearch")) { SearchAlbums(); } else if (_Request.IsClick("deletechecked")) { DeleteChecked(); } else if (_Request.IsClick("deletesearched")) { DeleteSearched(); //DeletedSearchResult(); } using (ErrorScope es = new ErrorScope()) { int pageNumber = _Request.Get <int>("page", 0); m_ArticleListPageSize = m_AdminForm.PageSize; m_ArticleList = BlogBO.Instance.GetBlogArticlesForAdmin(MyUserID, m_AdminForm, pageNumber); if (m_ArticleList != null) { m_TotalArticleCount = m_ArticleList.TotalRecords; UserBO.Instance.WaitForFillSimpleUsers <BlogArticle>(m_ArticleList); } if (es.HasUnCatchedError) { es.CatchError <ErrorInfo>(delegate(ErrorInfo error) { ShowError(error); }); } } }
public override bool BeforeExecute(int operatorUserID, string param, ref long offset, ref int totalCount, out string title) { StringList paramData = StringList.Parse(param); AdminBlogArticleFilter filter = AdminBlogArticleFilter.Parse(paramData[0]); //只取一条数据测试下就可以 filter.PageSize = 1; BlogArticleCollection articles = BlogBO.Instance.GetBlogArticlesForAdmin(operatorUserID, filter, 1); if (articles == null || articles.Count == 0) { title = "没有数据可以删除"; return(false); } totalCount = articles.TotalRecords; title = "将删除 " + totalCount + " 篇日志"; return(true); }
public override void AfterExecute(int operatorUserID, string param, bool success, int totalCount, int finishedCount, out string title) { if (success) { title = "删除日志成功,共删除 " + finishedCount + " 篇日志"; StringList paramData = StringList.Parse(param); AdminBlogArticleFilter filter = AdminBlogArticleFilter.Parse(paramData[0]); if (success) { User operatorUser = UserBO.Instance.GetUser(operatorUserID, GetUserOption.WithAll); Logs.LogManager.LogOperation( new Blog_DeleteBlogArticleBySearch(operatorUserID, operatorUser.Name, IPUtil.GetCurrentIP(), filter, finishedCount) ); } } else { title = "删除日志失败"; } }
public override bool StepExecute(int operatorUserID, string param, ref long offset, ref int totalCount, ref int finishedCount, out string title, out bool isLastStep) { StringList paramData = StringList.Parse(param); AdminBlogArticleFilter filter = AdminBlogArticleFilter.Parse(paramData[0]); int stepCount; if (BlogBO.Instance.DeleteBlogArticlesForAdmin(operatorUserID, filter, paramData[1] == "1", stepDeleteCount, out stepCount)) // .DeleteDoingsBySearch(filter, 200); { finishedCount += stepCount; isLastStep = stepCount < stepDeleteCount; title = "正在删除日志,总数 " + totalCount + ",已删 " + finishedCount; } else { isLastStep = true; title = string.Empty; } return(true); }
private string BuildConditionsByFilter(SqlQuery query, AdminBlogArticleFilter filter, int operatorUserID, IEnumerable<Guid> excludeRoleIDs, bool startWithWhere) { StringBuffer sqlConditions = new StringBuffer(); if (string.IsNullOrEmpty(filter.SearchKey) == false) { switch (filter.SearchMode) { case SearchArticleMethod.Subject: //标题筛选 sqlConditions += " AND [Subject] LIKE '%' + @Keywords + '%'"; break; case SearchArticleMethod.FullText: //正文筛选 sqlConditions += " AND [Content] LIKE '%' + @Keywords + '%'"; break; default: sqlConditions += " AND ([Subject] LIKE '%' + @Keywords + '%' OR [Content] LIKE '%' + @Keywords + '%')"; break; } query.CreateParameter<string>("@Keywords", filter.SearchKey, SqlDbType.NVarChar, 1000); } if (string.IsNullOrEmpty(filter.CreateIP) == false) { sqlConditions += " AND [CreateIP] LIKE '%' + @CreateIP + '%'"; query.CreateParameter<string>("@CreateIP", filter.CreateIP, SqlDbType.VarChar, 50); } if (filter.ArticleID != null) { sqlConditions += " AND [ArticleID] = @ArticleID"; query.CreateParameter<int?>("@ArticleID", filter.ArticleID, SqlDbType.Int); } if (filter.AuthorID != null) { sqlConditions += " AND [UserID] = @UserID"; query.CreateParameter<int?>("@UserID", filter.AuthorID, SqlDbType.Int); } if (filter.BeginDate != null) { sqlConditions += " AND [CreateDate] >= @BeginDate"; query.CreateParameter<DateTime?>("@BeginDate", filter.BeginDate, SqlDbType.DateTime); } if (filter.EndDate != null) { sqlConditions += " AND [CreateDate] <= @EndDate"; query.CreateParameter<DateTime?>("@EndDate", filter.EndDate, SqlDbType.DateTime); } if (filter.TotaLViewsScopeBegin != null && filter.TotalViewsScopeEnd != null) { sqlConditions += " AND ([TotalViews] >= @TotalViewsScopeBegin AND [TotalViews] <= @TotalViewsScopeEnd)"; query.CreateParameter<int?>("@TotalViewsScopeBegin", filter.TotaLViewsScopeBegin, SqlDbType.Int); query.CreateParameter<int?>("@TotalViewsScopeEnd", filter.TotalViewsScopeEnd, SqlDbType.Int); } if (filter.TotalCommentsScopeBegin != null && filter.TotalCommentsScopeEnd != null) { sqlConditions += " AND ([TotalComments] >= @TotalCommentsScopeBegin AND [TotalComments] <= @TotalCommentsScopeEnd)"; query.CreateParameter<int?>("@TotalCommentsScopeBegin", filter.TotalCommentsScopeBegin, SqlDbType.Int); query.CreateParameter<int?>("@TotalCommentsScopeEnd", filter.TotalCommentsScopeEnd, SqlDbType.Int); } if (string.IsNullOrEmpty(filter.Username) == false) { sqlConditions += " AND [UserID] = (SELECT [UserID] FROM [bx_Users] WHERE [Username] = @Username)"; query.CreateParameter<string>("@Username", filter.Username, SqlDbType.NVarChar, 50); } string excludeRoleSQL = DaoUtil.GetExcludeRoleSQL("[UserID]", "[LastEditUserID]", operatorUserID, excludeRoleIDs, query); if (string.IsNullOrEmpty(excludeRoleSQL) == false) { sqlConditions += " AND " + excludeRoleSQL; } if (sqlConditions.Length > 0) { sqlConditions.Remove(0, 5); if (startWithWhere) sqlConditions.InnerBuilder.Insert(0, " WHERE "); } return sqlConditions.ToString(); }
public override DeleteResult DeleteBlogArticlesBySearch(AdminBlogArticleFilter filter, int operatorUserID, IEnumerable<Guid> excludeRoleIDs, int topCount, out int deletedCount) { deletedCount = 0; using (SqlQuery query = new SqlQuery()) { string conditions = BuildConditionsByFilter(query, filter, operatorUserID, excludeRoleIDs, true); StringBuffer sql = new StringBuffer(); sql += @" DECLARE @DeleteData table (UserID int, ArticleID int); INSERT INTO @DeleteData SELECT TOP (@TopCount) [UserID],[ArticleID] FROM [bx_BlogArticles] " + conditions + @"; DELETE [bx_BlogArticles] WHERE ArticleID IN (SELECT [ArticleID] FROM @DeleteData); SELECT @@ROWCOUNT; SELECT [UserID],COUNT(*) AS [Count] FROM @DeleteData GROUP BY [UserID];"; query.CreateTopParameter("@TopCount", topCount); query.CommandText = sql.ToString(); using (XSqlDataReader reader = query.ExecuteReader()) { DeleteResult deleteResult = new DeleteResult(); if (reader.Read()) deletedCount = reader.Get<int>(0); if (reader.NextResult()) { while (reader.Read()) { deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count")); } } return deleteResult; } } }
public override BlogArticleCollection GetBlogArticlesBySearch(int operatorID, Guid[] excludeRoleIDs, AdminBlogArticleFilter filter, int pageNumber) { using (SqlQuery query = new SqlQuery()) { string conditions = BuildConditionsByFilter(query, filter, operatorID, excludeRoleIDs, false); query.Pager.TableName = "[bx_BlogArticles]"; query.Pager.SortField = filter.Order.ToString(); if (filter.Order != AdminBlogArticleFilter.OrderBy.ArticleID) { query.Pager.PrimaryKey = "ArticleID"; } query.Pager.IsDesc = filter.IsDesc; query.Pager.PageNumber = pageNumber; query.Pager.PageSize = filter.PageSize; query.Pager.SelectCount = true; query.Pager.Condition = conditions.ToString(); using (XSqlDataReader reader = query.ExecuteReader()) { BlogArticleCollection articles = new BlogArticleCollection(reader); if (reader.NextResult()) { if (reader.Read()) { articles.TotalRecords = reader.Get<int>(0); } } return articles; } } }
/// <summary> /// 删除搜索结果 /// </summary> /// <param name="filter">搜索条件</param> /// <param name="operatorID">操作者ID</param> /// <param name="excludeRoleIDs">操作者没有权限管理的用户组ID</param> /// <param name="isGetDeleteResult">是否获取删除结果</param> /// <param name="topCount">删除搜索结果的前几条</param> /// <param name="deletedCount">真实删除的条数</param> /// <returns></returns> public abstract DeleteResult DeleteBlogArticlesBySearch(AdminBlogArticleFilter filter, int operatorID, IEnumerable <Guid> excludeRoleIDs, int topCount, out int deletedCount);
/// <summary> /// 搜索博客日志(后台管理用) /// </summary> /// <param name="operatorID">操作者ID</param> /// <param name="excludeRoleIDs">在返回结果中要排除哪些用户组成员发布的日志</param> /// <param name="filter">搜索条件</param> /// <param name="pageNumber">数据分页页码</param> /// /// <returns></returns> public abstract BlogArticleCollection GetBlogArticlesBySearch(int operatorID, Guid[] excludeRoleIDs, AdminBlogArticleFilter filter, int pageNumber);
private void SearchAlbums() { AdminBlogArticleFilter filter = AdminBlogArticleFilter.GetFromForm(); filter.Apply("filter", "page"); }