|
@@ -20,6 +20,7 @@ namespace GxPress.Repository.Implement.Note
|
|
|
public class NoteRepository : INoteRepository
|
|
|
{
|
|
|
private readonly Repository<Entity.Note.Note> _repository;
|
|
|
+ private readonly Repository<Entity.Middle.Middle> _middleRepository;
|
|
|
private readonly IMapper _mapper;
|
|
|
private readonly string _connectionString;
|
|
|
private readonly string _databaseTypestr;
|
|
@@ -31,6 +32,7 @@ namespace GxPress.Repository.Implement.Note
|
|
|
StringUtils.ToEnum<DatabaseType>(dbOptionsAccessor.CurrentValue.DatabaseType, DatabaseType.MySql);
|
|
|
var database = new Database(databaseType, dbOptionsAccessor.CurrentValue.ConnectionString);
|
|
|
_repository = new Repository<Entity.Note.Note>(database);
|
|
|
+ _middleRepository = new Repository<Entity.Middle.Middle>(database);
|
|
|
_mapper = mapper;
|
|
|
}
|
|
|
|
|
@@ -80,13 +82,13 @@ namespace GxPress.Repository.Implement.Note
|
|
|
/// <returns></returns>
|
|
|
public async Task<PagedList<NotePageListRequest>> NotePageListAsync(NoteSearchPageListRequest request)
|
|
|
{
|
|
|
+
|
|
|
var pagedList = new PagedList<NotePageListRequest>();
|
|
|
- var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypestr, DatabaseType.MySql);
|
|
|
- var database = new Database(databaseType, _connectionString);
|
|
|
- var connection = database.GetConnection();
|
|
|
+ // var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypestr, DatabaseType.MySql);
|
|
|
+ // var database = new Database(databaseType, _connectionString);
|
|
|
+ // var connection = database.GetConnection();
|
|
|
var result =
|
|
|
- await connection
|
|
|
- .QueryAsync<NotePageListRequest>(GetCollectionSql(request));
|
|
|
+ await _middleRepository.GetAllAsync<NotePageListRequest>(request.ResultQuery);
|
|
|
foreach (var item in result)
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(item.FolderName))
|
|
@@ -99,7 +101,8 @@ namespace GxPress.Repository.Implement.Note
|
|
|
item.AvatarUrl = StringUtils.AddDomainMin(item.AvatarUrl);
|
|
|
}
|
|
|
pagedList.Items = result;
|
|
|
- pagedList.Total = await NotePageListCountAsync(GetCollectionSqlCount(request));
|
|
|
+ pagedList.Total = await _middleRepository.CountAsync(request.CountQuery);
|
|
|
+ //pagedList.Total = await NotePageListCountAsync(GetCollectionSqlCount(request));
|
|
|
return pagedList;
|
|
|
}
|
|
|
/// <summary>
|
|
@@ -160,324 +163,6 @@ namespace GxPress.Repository.Implement.Note
|
|
|
pagedList.Total = await NotePageListCountAsync(sql);
|
|
|
return pagedList;
|
|
|
}
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// 集合
|
|
|
- /// </summary>
|
|
|
- /// <param name="request"></param>
|
|
|
- /// <returns></returns>
|
|
|
- public string GetCollectionSql(NoteSearchPageListRequest request)
|
|
|
- {
|
|
|
- string sql = "";
|
|
|
- var noteTypeId = request.TypeValue == 0 ? AllTypeConst.Note.GetHashCode() : AllTypeConst.TopicNote.GetHashCode();
|
|
|
- if (request.VisitUserId > 0)
|
|
|
- {
|
|
|
- var sqlStr = $"a.Id";
|
|
|
- if (request.FolderId > 0)
|
|
|
- sqlStr = "a.ParentId";
|
|
|
- sql =
|
|
|
- $@"SELECT a.Id,a.MiddleId,a.RoleId,a.ParentId,a.AttributeValue,a.UserId,
|
|
|
- a.CreatedDate,a.LastModifiedDate,a.IsTop,a.FolderName,a.FolderType,
|
|
|
- (SELECT GROUP_CONCAT(SourceName Separator'、') from tede_user_middle where MiddleType={noteTypeId}
|
|
|
- and DataSourceId=a.MiddleSonId) as EnjoyUser,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = {noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 1) AS PraiseCount,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue ={noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 1
|
|
|
- LIMIT 0 , 1) AS IsPraise,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_comment
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND ArticleId = a.MiddleId
|
|
|
- AND TypeValue = {noteTypeId}) AS CommentCount,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = {noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 4) AS RetransmissionCount,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = {noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 4
|
|
|
- LIMIT 0 , 1) AS IsRetransmission,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue ={noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 3
|
|
|
- LIMIT 0 , 1) AS IsCollect,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = {noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 3) AS IsCollect,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_middle
|
|
|
- WHERE
|
|
|
- ParentId = a.Id and IsDelete=0) FileCount, b.Title, b.Content,b.ReadCount,b.MediaId,b.CatalogId,
|
|
|
- b.ChapterId,c.Name,c.AvatarUrl,d.Name AS DepartmentName,
|
|
|
- (SELECT
|
|
|
- FolderName
|
|
|
- FROM
|
|
|
- tede_middle
|
|
|
- WHERE
|
|
|
- id =a.ParentId) AS FolderParentName,
|
|
|
- (SELECT
|
|
|
- Id
|
|
|
- FROM
|
|
|
- tede_middle
|
|
|
- WHERE
|
|
|
- id =a.ParentId ) AS FolderId
|
|
|
- FROM tede_middle a LEFT JOIN tede_note b ON a.MiddleId = b.Id
|
|
|
- left join tede_user c on c.Id=b.UserId
|
|
|
- left join tede_department d on d.Id=c.DepartmentId
|
|
|
- WHERE
|
|
|
- a.FolderType = {noteTypeId} AND a.userId = {request.VisitUserId}
|
|
|
- AND a.IsDelete = 0
|
|
|
- AND (a.UserId IN (SELECT
|
|
|
- Id
|
|
|
- FROM
|
|
|
- tede_user
|
|
|
- WHERE
|
|
|
- 1 = a.RoleId)
|
|
|
- OR a.UserId IN (SELECT
|
|
|
- Id
|
|
|
- FROM
|
|
|
- tede_user
|
|
|
- WHERE
|
|
|
- 0 = a.RoleId)
|
|
|
- OR {sqlStr} IN (SELECT
|
|
|
- MiddleId
|
|
|
- FROM
|
|
|
- tede_folder_user
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND MiddleId = {sqlStr}))";
|
|
|
- if (request.TypeValue == 0)
|
|
|
- sql += "and (a.RoleId=2 or a.AttributeValue<>2)";
|
|
|
- else
|
|
|
- sql += "and (a.RoleId in(1,3) or a.AttributeValue<>2)";
|
|
|
- if (request.FolderId == 0 && !string.IsNullOrEmpty(request.SearchKey))
|
|
|
- sql += $@" AND (b.Title LIKE '%{request.SearchKey}%' OR a.FolderName LIKE '%{request.SearchKey}%' or b.TextContent LIKE '%{request.SearchKey}%' or b.UserId in (select Id from tede_user where name like '%{request.SearchKey}%'))";
|
|
|
- else if (!string.IsNullOrEmpty(request.SearchKey))
|
|
|
- sql += $@" and a.ParentId={request.FolderId} AND(b.Title LIKE '%{request.SearchKey}%' OR a.FolderName LIKE '%{request.SearchKey}%' or b.TextContent LIKE '%{request.SearchKey}%')";
|
|
|
- else
|
|
|
- sql += $" and a.ParentId={request.FolderId}";
|
|
|
- sql +=
|
|
|
- $@" ORDER BY a.IsSystemDefault desc,a.AttributeValue desc,a.IsTop DESC, a.LastModifiedDate DESC";
|
|
|
- if (request.Page > 0)
|
|
|
- sql += $@" limit {(request.Page - 1) * request.PerPage},{request.PerPage}";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- sql =
|
|
|
- $@"SELECT a.Id,a.MiddleId,a.RoleId,a.ParentId,a.AttributeValue,a.UserId,
|
|
|
- a.CreatedDate,a.LastModifiedDate,a.IsTop,a.FolderName,a.FolderType,
|
|
|
- (SELECT GROUP_CONCAT(SourceName Separator'、') from tede_user_middle where MiddleType={noteTypeId}
|
|
|
- and DataSourceId=a.MiddleSonId) as EnjoyUser,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = {noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 1) AS PraiseCount,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue ={noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 1
|
|
|
- LIMIT 0 , 1) AS IsPraise,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_comment
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND ArticleId = a.MiddleId
|
|
|
- AND TypeValue = {noteTypeId}) AS CommentCount,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = {noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 4) AS RetransmissionCount,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = {noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 4
|
|
|
- LIMIT 0 , 1) AS IsRetransmission,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue ={noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 3
|
|
|
- LIMIT 0 , 1) AS IsCollect,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_analyze
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = {noteTypeId}
|
|
|
- AND SourceId = a.MiddleId
|
|
|
- AND AnalyzeType = 3) AS IsCollect,
|
|
|
- (SELECT
|
|
|
- COUNT(1)
|
|
|
- FROM
|
|
|
- tede_middle
|
|
|
- WHERE
|
|
|
- ParentId = a.Id and IsDelete=0) FileCount, b.Title, b.Content,b.ReadCount,b.MediaId,b.CatalogId,
|
|
|
- b.ChapterId,c.Name,c.AvatarUrl,d.Name AS DepartmentName,
|
|
|
- (SELECT
|
|
|
- FolderName
|
|
|
- FROM
|
|
|
- tede_middle
|
|
|
- WHERE
|
|
|
- id =a.ParentId) AS FolderParentName,
|
|
|
- (SELECT
|
|
|
- Id
|
|
|
- FROM
|
|
|
- tede_middle
|
|
|
- WHERE
|
|
|
- id =a.ParentId ) AS FolderId
|
|
|
- FROM tede_middle a LEFT JOIN tede_note b ON a.MiddleId = b.Id
|
|
|
- left join tede_user c on c.Id=b.UserId
|
|
|
- left join tede_department d on d.Id=c.DepartmentId
|
|
|
- WHERE a.FolderType = {noteTypeId} and a.UserId = {request.UserId} AND a.IsDelete = 0 ";
|
|
|
- if (request.TypeValue == 0)
|
|
|
- sql += " AND (a.RoleId = 2 OR a.AttributeValue in( 1,2))";
|
|
|
- else
|
|
|
- sql += "and (a.RoleId in(1,3) or a.AttributeValue in( 1,2))";
|
|
|
- if (request.FolderId == 0 && !string.IsNullOrEmpty(request.SearchKey))
|
|
|
- sql += $@" AND (b.Title LIKE '%{request.SearchKey}%' OR a.FolderName LIKE '%{request.SearchKey}%' or b.TextContent LIKE '%{request.SearchKey}%')";
|
|
|
- else if (!string.IsNullOrEmpty(request.SearchKey))
|
|
|
- sql += $@" and a.ParentId={request.FolderId} AND(b.Title LIKE '%{request.SearchKey}%' OR a.FolderName LIKE '%{request.SearchKey}%' or b.TextContent LIKE '%{request.SearchKey}%')";
|
|
|
- else
|
|
|
- sql += $" and a.ParentId={request.FolderId}";
|
|
|
- sql +=
|
|
|
- $@" ORDER BY a.AttributeValue desc,a.IsTop DESC, a.LastModifiedDate DESC";
|
|
|
- if (request.Page > 0)
|
|
|
- sql += $@" limit {(request.Page - 1) * request.PerPage},{request.PerPage}";
|
|
|
- }
|
|
|
- return sql;
|
|
|
- }
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// 条数
|
|
|
- /// </summary>
|
|
|
- /// <param name="request"></param>
|
|
|
- /// <returns></returns>
|
|
|
- public string GetCollectionSqlCount(NoteSearchPageListRequest request)
|
|
|
- {
|
|
|
- var noteTypeId = request.TypeValue == 0 ? AllTypeConst.Note.GetHashCode() : AllTypeConst.TopicNote.GetHashCode();
|
|
|
- string sql = "";
|
|
|
-
|
|
|
- if (request.VisitUserId > 0)
|
|
|
- {
|
|
|
- var sqlStr = $"a.Id";
|
|
|
- if (request.FolderId > 0)
|
|
|
- sqlStr = "a.ParentId";
|
|
|
- sql =
|
|
|
- $@"SELECT count(1)
|
|
|
- FROM tede_middle a LEFT JOIN tede_note b ON a.MiddleId = b.Id
|
|
|
- left join tede_user c on c.Id=b.UserId
|
|
|
- left join tede_department d on d.Id=c.DepartmentId
|
|
|
- WHERE a.FolderType = {noteTypeId} and
|
|
|
- a.userId = {request.VisitUserId}
|
|
|
- AND a.IsDelete = 0
|
|
|
- AND (a.UserId IN (SELECT
|
|
|
- Id
|
|
|
- FROM
|
|
|
- tede_user
|
|
|
- WHERE
|
|
|
- 1 = a.RoleId)
|
|
|
- OR a.UserId IN (SELECT
|
|
|
- Id
|
|
|
- FROM
|
|
|
- tede_user
|
|
|
- WHERE
|
|
|
- 0 = a.RoleId)
|
|
|
- OR {sqlStr} IN (SELECT
|
|
|
- MiddleId
|
|
|
- FROM
|
|
|
- tede_folder_user
|
|
|
- WHERE
|
|
|
- UserId = {request.UserId} AND MiddleId = {sqlStr}))";
|
|
|
- if (request.TypeValue == 0)
|
|
|
- sql += "and (a.RoleId in(2) or a.AttributeValue<>2)";
|
|
|
- else
|
|
|
- {
|
|
|
- sql += "and (a.RoleId in(1,3) or a.AttributeValue<>2)";
|
|
|
- }
|
|
|
- if (request.FolderId == 0 && !string.IsNullOrEmpty(request.SearchKey))
|
|
|
- sql += $@" AND(b.Title LIKE '%{request.SearchKey}%' OR a.FolderName LIKE '%{request.SearchKey}%' or b.TextContent LIKE '%{request.SearchKey}%')";
|
|
|
- else if (!string.IsNullOrEmpty(request.SearchKey))
|
|
|
- sql += $@" and a.ParentId={request.FolderId} AND(b.Title LIKE '%{request.SearchKey}%' OR a.FolderName LIKE '%{request.SearchKey}%' or b.TextContent LIKE '%{request.SearchKey}%')";
|
|
|
- else
|
|
|
- sql += $" and a.ParentId={request.FolderId}";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- sql =
|
|
|
- $@"SELECT count(1) FROM tede_middle a LEFT JOIN tede_note b ON a.MiddleId = b.Id left join tede_user c on c.Id=b.UserId left join tede_department d
|
|
|
- on d.Id=c.DepartmentId WHERE a.FolderType = {noteTypeId} and a.UserId = {request.UserId} AND a.IsDelete = 0";
|
|
|
- if (request.TypeValue == 0)
|
|
|
- sql += " and (a.RoleId in(2) or a.AttributeValue in(1,2))";
|
|
|
- else
|
|
|
- {
|
|
|
- sql += " and (a.RoleId in(1,3) or a.AttributeValue in(1,2))";
|
|
|
- }
|
|
|
- if (request.FolderId == 0 && !string.IsNullOrEmpty(request.SearchKey))
|
|
|
- sql += $@" AND (b.Title LIKE '%{request.SearchKey}%' OR a.FolderName LIKE '%{request.SearchKey}%' or b.TextContent LIKE '%{request.SearchKey}%')";
|
|
|
- else if (!string.IsNullOrEmpty(request.SearchKey))
|
|
|
- sql += $@" and a.ParentId={request.FolderId} AND(b.Title LIKE '%{request.SearchKey}%' OR a.FolderName LIKE '%{request.SearchKey}%' or b.TextContent LIKE '%{request.SearchKey}%')";
|
|
|
- else
|
|
|
- sql += $" and a.ParentId={request.FolderId}";
|
|
|
- }
|
|
|
-
|
|
|
- return sql;
|
|
|
- }
|
|
|
-
|
|
|
public async Task<int> NotePageListCountAsync(string sql)
|
|
|
{
|
|
|
var pagedList = new PagedList<NotePageListRequest>();
|