Пример #1
0
        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);
        }
Пример #2
0
        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 = "删除相片失败";
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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();
        }
Пример #6
0
        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;
                }
            }

        }
Пример #7
0
        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;
                }
            }
        }
Пример #8
0
 /// <summary>
 /// 高级批量删除相片
 /// </summary>
 public abstract DeleteResult DeletePhotosBySearch(AdminPhotoFilter filter, int operatorUserID, IEnumerable <Guid> excludeRoleIDs, int topCount, out int deletedCount, out int[] deletedPhotoIDs);
Пример #9
0
 /// <summary>
 /// 高级搜索相片
 /// </summary>
 public abstract PhotoCollection GetPhotosBySearch(AdminPhotoFilter filter, int operatorID, IEnumerable <Guid> excludeRoleIDs, int pageNumber);
Пример #10
0
        private void SearchAlbums()
        {
            AdminPhotoFilter filter = AdminPhotoFilter.GetFromForm();

            filter.Apply("filter", "page");
        }