/// <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)); }
/// <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)); }
/// <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)); }
/// <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); }
/// <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); })); }
/// <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; })); }
/// <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)); }