Example #1
0
 /// <summary>
 /// 获取用户相册照片列表(用于用户空间)
 /// </summary>
 /// <param name="tenantTypeId">租户类型</param>
 /// <param name="albumId">相册ID</param>
 /// <param name="ignoreAuditAndPrivacy">是否忽略审核状态和隐私,相册主人查看时为true</param>
 /// <param name="sortBy">排序依据</param>
 /// <param name="pageSize">分页大小</param>
 /// <param name="pageIndex">页码</param>
 /// <returns>返回照片分页列表</returns>
 public PagingDataSet <Photo> GetPhotosOfAlbum(string tenantTypeId, long albumId, bool ignoreAuditAndPrivacy, SortBy_Photo sortBy = SortBy_Photo.DateCreated_Desc, DateTime?createDateTime = null, int pageSize = 20, int pageIndex = 1)
 {
     return(photoRepository.GetUserPhotos(tenantTypeId, null, ignoreAuditAndPrivacy, null, albumId, null, sortBy, createDateTime, pageSize, pageIndex));
 }
Example #2
0
 /// <summary>
 /// 获取所有者照片列表(用于群组)
 /// </summary>
 /// <remarks>
 /// 缓存周期:对象集合,使用分区缓存
 /// </remarks>
 /// <param name="tenantTypeId">租户类型</param>
 /// <param name="ownerId">拥有者ID</param>
 /// <param name="ignoreAuditAndPrivacy">是否忽略审核状态和隐私,相册主人查看时为true</param>
 /// <param name="tagName">标签</param>
 /// <param name="albumId">相册ID</param>
 /// <param name="isEssential">是否精华</param>
 /// <param name="sortBy">排序依据</param>
 /// <param name="pageSize">分页大小</param>
 /// <param name="pageIndex">页码</param>
 /// <returns>返回照片分页列表</returns>
 public PagingDataSet <Photo> GetOwnerPhotos(string tenantTypeId, long ownerId, bool ignoreAuditAndPrivacy, string tagName, long?albumId, bool?isEssential, SortBy_Photo sortBy = SortBy_Photo.DateCreated_Desc, int pageSize = 20, int pageIndex = 1)
 {
     return(photoRepository.GetOwnerPhotos(tenantTypeId, ownerId, ignoreAuditAndPrivacy, tagName, albumId, isEssential, sortBy, pageSize, pageIndex));
 }
Example #3
0
 /// <summary>
 /// 获取照片列表(用于频道页面)
 /// </summary>
 /// <remarks>
 /// 缓存周期:常用对象集合,不用维护即时性
 /// </remarks>
 /// <param name="tenantTypeId">租户类型</param>
 /// <param name="tagName">标签</param>
 /// <param name="isEssential">是否精华</param>
 /// <param name="sortBy">排序依据</param>
 /// <param name="pageSize">分页大小</param>
 /// <param name="pageIndex">页码</param>
 /// <returns>返回照片分页列表</returns>
 public PagingDataSet <Photo> GetPhotos(string tenantTypeId, string tagName, bool?isEssential, SortBy_Photo sortBy = SortBy_Photo.DateCreated_Desc, int pageSize = 20, int pageIndex = 1)
 {
     return(photoRepository.GetPhotos(tenantTypeId, tagName, isEssential, sortBy, null, pageSize, pageIndex));
 }
Example #4
0
        /// <summary>
        /// 通用的获取SQL的方法
        /// </summary>
        /// <param name="tenantTypeId">租户类型id</param>
        /// <param name="descriptionKeyword">描述性字段</param>
        /// <param name="userId">用户id</param>
        /// <param name="ownerId">拥有者id</param>
        /// <param name="isEssential">是否精华</param>
        /// <param name="auditStatus">审核状态</param>
        /// <param name="tagName">标签名</param>
        /// <param name="ignoreAuditAndPrivacy">是否忽略审核和隐私状态</param>
        /// <param name="albumId">相册id</param>
        /// <param name="sortBy">排序方式</param>
        /// <returns>SQL</returns>
        private Sql GetSql_GetPhotos(string tenantTypeId, string descriptionKeyword, long?userId, long?ownerId, bool?isEssential, DateTime?createDateTime
                                     , AuditStatus?auditStatus, string tagName, bool?ignoreAuditAndPrivacy, long?albumId, SortBy_Photo sortBy)
        {
            Sql sql         = Sql.Builder;
            Sql sql_Where   = Sql.Builder;
            Sql sql_Orderby = Sql.Builder;

            sql.Select("spb_Photos.*")
            .From("spb_Photos");

            if (!string.IsNullOrEmpty(tenantTypeId))
            {
                sql_Where.Where("spb_Photos.TenantTypeId = @0", tenantTypeId);
            }

            if (!string.IsNullOrEmpty(descriptionKeyword))
            {
                sql_Where.Where("spb_Photos.Description like @0", "%" + StringUtility.StripSQLInjection(descriptionKeyword) + "%");
            }

            if (userId.HasValue)
            {
                sql_Where.Where("spb_Photos.UserId = @0", userId.Value);
            }

            if (ownerId.HasValue)
            {
                sql_Where.Where("spb_Photos.OwnerId = @0", ownerId.Value);
            }

            if (auditStatus.HasValue)
            {
                sql_Where.Where("spb_Photos.AuditStatus = @0", auditStatus.Value);
            }

            if (isEssential.HasValue)
            {
                sql_Where.Where("spb_Photos.IsEssential = @0", isEssential);
            }

            if (createDateTime.HasValue)
            {
                sql_Where.Where("spb_Photos.DateCreated > @0", createDateTime);
            }

            if (!string.IsNullOrEmpty(tagName))
            {
                sql.InnerJoin("tn_ItemsInTags")
                .On("spb_Photos.PhotoId = tn_ItemsInTags.ItemId");

                sql_Where.Where("tn_ItemsInTags.TagName=@0", tagName)
                .Where("tn_ItemsInTags.TenantTypeId = @0", TenantTypeIds.Instance().Photo());
            }

            if (ignoreAuditAndPrivacy.HasValue && !ignoreAuditAndPrivacy.Value)
            {
                switch (this.PubliclyAuditStatus)
                {
                case PubliclyAuditStatus.Again:
                case PubliclyAuditStatus.Fail:
                case PubliclyAuditStatus.Pending:
                case PubliclyAuditStatus.Success:
                    sql_Where.Where("spb_Photos.AuditStatus = @0", this.PubliclyAuditStatus);
                    break;

                case PubliclyAuditStatus.Pending_GreaterThanOrEqual:
                case PubliclyAuditStatus.Again_GreaterThanOrEqual:
                    sql_Where.Where("spb_Photos.AuditStatus > @0", this.PubliclyAuditStatus);
                    break;
                }

                sql_Where.Where("spb_Photos.PrivacyStatus <> @0", PrivacyStatus.Private);
            }

            if (albumId.HasValue)
            {
                sql_Where.Where("spb_Photos.AlbumId = @0", albumId);
            }

            CountService countService   = new CountService(TenantTypeIds.Instance().Photo());
            string       countTableName = countService.GetTableName_Counts();

            switch (sortBy)
            {
            case SortBy_Photo.DateCreated_Desc:
                sql_Orderby.OrderBy("spb_Photos.PhotoId desc");
                break;

            case SortBy_Photo.HitTimes_Desc:
                sql.LeftJoin(countTableName).On("spb_Photos.PhotoId = " + countTableName + ".ObjectId");
                sql_Where.Where(countTableName + ".CountType = @0 or " + countTableName + ".CountType is null", CountTypes.Instance().HitTimes());
                sql_Orderby.OrderBy(countTableName + ".StatisticsCount desc");
                break;

            case SortBy_Photo.CommentCount_Desc:
                sql.LeftJoin(countTableName).On("spb_Photos.PhotoId = " + countTableName + ".ObjectId");
                sql_Where.Where(countTableName + ".CountType = @0 or " + countTableName + ".CountType is null", CountTypes.Instance().CommentCount());
                sql_Orderby.OrderBy(countTableName + ".StatisticsCount desc");
                break;

            case SortBy_Photo.SupportCount_Desc:
                sql.LeftJoin("tn_Attitudes").On("spb_Photos.PhotoId = tn_Attitudes.ObjectId");
                sql_Where.Where("tn_Attitudes.TenantTypeId = @0", TenantTypeIds.Instance().Photo());
                sql_Orderby.OrderBy("tn_Attitudes.SupportCount desc");
                break;
            }

            sql.Append(sql_Where)
            .Append(sql_Orderby);

            return(sql);
        }
Example #5
0
 /// <summary>
 /// 获取所有者照片列表(用于群组)
 /// </summary>
 /// <remarks>
 /// 缓存周期:对象集合,使用分区缓存
 /// </remarks>
 /// <param name="tenantTypeId">租户类型</param>
 /// <param name="ownerId">拥有者ID</param>
 /// <param name="ignoreAuditAndPrivacy">是否忽略审核状态和隐私,相册主人查看时为true</param>
 /// <param name="tagName">标签</param>
 /// <param name="albumId">相册ID</param>
 /// <param name="isEssential">是否精华</param>
 /// <param name="sortBy">排序依据</param>
 /// <param name="pageSize">分页大小</param>
 /// <param name="pageIndex">页码</param>
 /// <returns>返回照片分页列表</returns>
 public PagingDataSet <Photo> GetOwnerPhotos(string tenantTypeId, long ownerId, bool ignoreAuditAndPrivacy, string tagName, long?albumId, bool?isEssential, SortBy_Photo sortBy, int pageSize, int pageIndex)
 {
     return(GetPagingEntities(pageSize, pageIndex, CachingExpirationType.ObjectCollection, () =>
     {
         string ownerIdCacheKey = RealTimeCacheHelper.GetListCacheKeyPrefix(CacheVersionType.AreaVersion, "OwnerId", ownerId);
         return string.Format("GetUserPhotos::TenantTypeId-{0};IgnoreAuditAndPrivacy-{1};TagName-{2};AlbumId-{3};IsEssential-{4};SortBy_Photo-{5};OwnerId-{6}", tenantTypeId, ignoreAuditAndPrivacy, tagName, albumId, isEssential, sortBy, ownerIdCacheKey);
     }, () =>
     {
         return GetSql_GetPhotos(tenantTypeId, string.Empty, null, ownerId, isEssential, null, null, tagName, ignoreAuditAndPrivacy, albumId, sortBy);
     }));
 }
Example #6
0
        /// <summary>
        /// 获取照片列表(用于频道页面)
        /// </summary>
        /// <remarks>
        /// 缓存周期:常用对象集合,不用维护即时性
        /// </remarks>
        /// <param name="tenantTypeId">租户类型</param>
        /// <param name="tagName">标签</param>
        /// <param name="isEssential">是否精华</param>
        /// <param name="sortBy">排序依据</param>
        /// <param name="createDatetime">动态所需时间</param>
        /// <param name="pageSize">分页大小</param>
        /// <param name="pageIndex">页码</param>
        /// <returns>返回照片分页列表</returns>
        public PagingDataSet <Photo> GetPhotos(string tenantTypeId, string tagName, bool?isEssential, SortBy_Photo sortBy, DateTime?createDateTime, int pageSize, int pageIndex)
        {
            Sql sql = GetSql_GetPhotos(tenantTypeId, string.Empty, null, null, isEssential, createDateTime, null, tagName, false, null, sortBy);

            return(GetPagingEntities(pageSize, pageIndex, CachingExpirationType.UsualObjectCollection, () =>
            {
                return string.Format("GetPhotos::TenantTypeId-{0};TagName-{1};SortBy_Photo-{2};isEssential-{3}", tenantTypeId, tagName, sortBy, isEssential);
            }, () =>
            {
                return sql;
            }));
        }
Example #7
0
        /// <summary>
        /// 照片排行瀑布流
        /// </summary>
        public ActionResult _Photos(string tagName = null, bool?isEssential = null, SortBy_Photo sortBy = SortBy_Photo.DateCreated_Desc, int pageSize = 20, int pageIndex = 1)
        {
            PagingDataSet <Photo> photos = photoService.GetPhotos(TenantTypeIds.Instance().User(), tagName, isEssential, sortBy, pageSize, pageIndex);

            return(View(photos));
        }