public override bool BeforeExecute(int operatorUserID, string param, ref long offset, ref int totalCount, out string title) { StringList paramData = StringList.Parse(param); AdminPhotoFilter filter = AdminPhotoFilter.Parse(paramData[0]); //只取一条数据测试下就可以 filter.PageSize = 1; PhotoCollection photos = AlbumBO.Instance.GetPhotosForAdmin(operatorUserID, filter, 1); if (photos == null || photos.Count == 0) { title = "没有数据可以删除"; return(false); } totalCount = photos.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); AdminPhotoFilter filter = AdminPhotoFilter.Parse(paramData[0]); if (success) { User operatorUser = UserBO.Instance.GetUser(operatorUserID, GetUserOption.WithAll); Logs.LogManager.LogOperation( new Album_DeletePhotoBySearch(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); AdminPhotoFilter filter = AdminPhotoFilter.Parse(paramData[0]); int stepCount; if (AlbumBO.Instance.DeletePhotosForAdmin(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); }
protected void Page_Load(object sender, EventArgs e) { m_AdminForm = AdminPhotoFilter.GetFromFilter("filter"); if (m_AdminForm.IsNull) { int albumID = _Request.Get <int>("albumID", Method.Get, 0); if (albumID > 0) { m_AdminForm.AlbumID = albumID; } } if (_Request.IsClick("advancedsearch")) { SearchAlbums(); } else if (_Request.IsClick("deletechecked")) { DeleteChecked(); } else if (_Request.IsClick("deletesearched")) { DeleteSearched(); } int page = _Request.Get <int>("page", Method.Get, 1); m_PhotoList = AlbumBO.Instance.GetPhotosForAdmin(MyUserID, m_AdminForm, page); if (m_PhotoList != null) { m_PhotoTotalCount = m_PhotoList.TotalRecords; UserBO.Instance.WaitForFillSimpleUsers <Photo>(m_PhotoList); } }
private string BuildConditionsByFilter(SqlQuery query, AdminPhotoFilter filter, int operatorUserID, IEnumerable<Guid> excludeRoleIds, bool startWithWhere) { StringBuffer sqlConditions = new StringBuffer(); if (filter.PhotoID != null) { sqlConditions += " AND [PhotoID] = @PhotoID"; query.CreateParameter<int?>("@PhotoID", filter.PhotoID, SqlDbType.Int); } if (filter.AuthorID != null) { sqlConditions += " AND [UserID] = @UserID"; query.CreateParameter<int?>("@UserID", filter.AuthorID, SqlDbType.Int); } if (filter.AlbumID != null) { sqlConditions += " AND [AlbumID] = @AlbumID"; query.CreateParameter<int?>("@AlbumID", filter.AlbumID, 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 (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); } if (string.IsNullOrEmpty(filter.CreateIP) == false) { sqlConditions += " AND [CreateIP] LIKE '%' + @CreateIP + '%'"; query.CreateParameter<string>("@CreateIP", filter.CreateIP, SqlDbType.VarChar, 50); } if (string.IsNullOrEmpty(filter.SearchKey) == false) { sqlConditions += " AND ([Name] LIKE '%' + @Name + '%' OR [Description] LIKE '%' + @Name + '%')"; query.CreateParameter<string>("@Name", filter.SearchKey, SqlDbType.NVarChar, 50); } string excludeRolesSql = DaoUtil.GetExcludeRoleSQL("[UserID]", "[LastEditUserID]", operatorUserID, excludeRoleIds, query); if (string.IsNullOrEmpty(excludeRolesSql) == false) sqlConditions += " AND " + excludeRolesSql; if (sqlConditions.Length > 0) { sqlConditions.Remove(0, 5); if (startWithWhere) sqlConditions.InnerBuilder.Insert(0, " WHERE "); } return sqlConditions.ToString(); }
public override DeleteResult DeletePhotosBySearch(AdminPhotoFilter filter, int operatorUserID, IEnumerable<Guid> excludeRoleIDs, int topCount, out int deletedCount, out int[] deletedPhotoIDs) { 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, PhotoID int); INSERT INTO @DeleteData SELECT TOP (@TopCount) [UserID],[PhotoID] FROM [bx_Photos] " + conditions + @"; UPDATE [bx_Albums] SET [CoverPhotoID] = NULL, [Cover] = '' WHERE CoverPhotoID IN (SELECT [PhotoID] FROM @DeleteData); DELETE [bx_Photos] WHERE PhotoID IN (SELECT [PhotoID] FROM @DeleteData); SELECT @@ROWCOUNT; SELECT [UserID],COUNT(*) AS [Count] FROM @DeleteData GROUP BY [UserID]; SELECT [PhotoID] FROM @DeleteData"; 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); while (reader.Read()) { deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count")); } reader.NextResult(); List<int> deletedPhotos = new List<int>(); while (reader.Read()) { deletedPhotos.Add(reader.Get<int>(0)); } deletedPhotoIDs = deletedPhotos.ToArray(); return deleteResult; } } }
public override PhotoCollection GetPhotosBySearch(AdminPhotoFilter filter, int operatorID, IEnumerable<Guid> excludeRoleIDs, int pageNumber) { using (SqlQuery query = new SqlQuery()) { string sqlCondition = BuildConditionsByFilter(query, filter, operatorID, excludeRoleIDs, false); query.Pager.TableName = "bx_Photos"; query.Pager.SortField = filter.Order.ToString(); if (filter.Order != AdminPhotoFilter.OrderBy.PhotoID) { query.Pager.PrimaryKey = "PhotoID"; } query.Pager.PageNumber = pageNumber; query.Pager.PageSize = filter.PageSize; query.Pager.SelectCount = true; query.Pager.IsDesc = filter.IsDesc; query.Pager.Condition = sqlCondition; using (XSqlDataReader reader = query.ExecuteReader()) { PhotoCollection photos = new PhotoCollection(reader); if (reader.NextResult()) { if (reader.Read()) { photos.TotalRecords = reader.Get<int>(0); } } return photos; } } }
/// <summary> /// 高级批量删除相片 /// </summary> public abstract DeleteResult DeletePhotosBySearch(AdminPhotoFilter filter, int operatorUserID, IEnumerable <Guid> excludeRoleIDs, int topCount, out int deletedCount, out int[] deletedPhotoIDs);
/// <summary> /// 高级搜索相片 /// </summary> public abstract PhotoCollection GetPhotosBySearch(AdminPhotoFilter filter, int operatorID, IEnumerable <Guid> excludeRoleIDs, int pageNumber);
private void SearchAlbums() { AdminPhotoFilter filter = AdminPhotoFilter.GetFromForm(); filter.Apply("filter", "page"); }