|
@@ -67,7 +67,6 @@ 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);
|
|
@@ -417,6 +416,154 @@ namespace GxPress.Repository.Implement.Note
|
|
|
await connection.ExecuteScalarAsync<int>(sql);
|
|
|
return result;
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// web页面查询话题
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="request"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<PagedList<NoteTopicResult>> GetTopicNoteAsync(NoteSearchPageListRequest request)
|
|
|
+ {
|
|
|
+ var sql = $@"SELECT
|
|
|
+ a.Id,
|
|
|
+ a.Title,
|
|
|
+ a.Content,
|
|
|
+ a.CreatedDate,
|
|
|
+ b.Name,
|
|
|
+ b.AvatarUrl,
|
|
|
+ c.Id,
|
|
|
+ c.FolderName,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_analyze
|
|
|
+ WHERE
|
|
|
+ TypeValue = 3 AND SourceId = a.Id
|
|
|
+ AND AnalyzeType = 1) AS PraiseCount,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_analyze
|
|
|
+ WHERE
|
|
|
+ UserId = {request.UserId} AND TypeValue = 3
|
|
|
+ AND SourceId = a.Id
|
|
|
+ AND AnalyzeType = 1
|
|
|
+ LIMIT 0 , 1) AS IsPraise,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_comment
|
|
|
+ WHERE
|
|
|
+ ArticleId = a.Id AND TypeValue = 3
|
|
|
+ AND Pid = 0) AS CommentCount,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_analyze
|
|
|
+ WHERE
|
|
|
+ UserId = {request.UserId} AND TypeValue = 3
|
|
|
+ AND SourceId = a.Id
|
|
|
+ AND AnalyzeType = 4) AS RetransmissionCount,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_analyze
|
|
|
+ WHERE
|
|
|
+ UserId = {request.UserId} AND TypeValue = 3
|
|
|
+ AND SourceId = a.Id
|
|
|
+ AND AnalyzeType = 4
|
|
|
+ LIMIT 0 , 1) AS IsRetransmission,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_analyze
|
|
|
+ WHERE
|
|
|
+ UserId = {request.UserId} AND TypeValue = 3
|
|
|
+ AND SourceId = a.Id
|
|
|
+ AND AnalyzeType = 3
|
|
|
+ LIMIT 0 , 1) AS IsCollect
|
|
|
+ FROM
|
|
|
+ tede_note a
|
|
|
+ INNER JOIN
|
|
|
+ tede_user b ON a.UserId = b.Id
|
|
|
+ INNER JOIN
|
|
|
+ tede_middle c ON c.Id = a.FolderId
|
|
|
+ WHERE
|
|
|
+ a.IsTopic = 1";
|
|
|
+ if (!string.IsNullOrEmpty(request.SearchKey))
|
|
|
+ {
|
|
|
+ sql += $@" and (b.Name like '%11%' or a.Title like '%11%' or a.Content like '%11%')";
|
|
|
+ }
|
|
|
+ sql += $@" AND (a.FolderId IN (SELECT
|
|
|
+ Id
|
|
|
+ FROM
|
|
|
+ tede_middle
|
|
|
+ WHERE
|
|
|
+ id IN (SELECT
|
|
|
+ MiddleId
|
|
|
+ FROM
|
|
|
+ tede_folder_user
|
|
|
+ WHERE
|
|
|
+ UserId = {request.UserId})
|
|
|
+ AND RoleId IN (3))
|
|
|
+ OR a.FolderId IN (SELECT
|
|
|
+ Id
|
|
|
+ FROM
|
|
|
+ tede_middle
|
|
|
+ WHERE
|
|
|
+ RoleId IN (1))) ";
|
|
|
+ sql += $@" limit {(request.Page - 1) * request.PerPage},{request.PerPage}";
|
|
|
+
|
|
|
+ var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypestr, DatabaseType.MySql);
|
|
|
+ var database = new Database(databaseType, _connectionString);
|
|
|
+ var connection = database.GetConnection();
|
|
|
+ var result = new PagedList<NoteTopicResult>();
|
|
|
+ result.Items =
|
|
|
+ await connection
|
|
|
+ .QueryAsync<NoteTopicResult, User, Entity.Middle.Middle, NoteTopicResult>(sql,
|
|
|
+ (noteTopicResult, user, middle) =>
|
|
|
+ {
|
|
|
+ noteTopicResult.UserName = user == null ? "" : user.Name;
|
|
|
+ noteTopicResult.AvatarUrl = user == null ? "" : StringUtils.AddDomainMin(user.AvatarUrl);
|
|
|
+ noteTopicResult.FolderId = middle == null ? 0 : middle.Id;
|
|
|
+ return noteTopicResult;
|
|
|
+ }, splitOn: "Id,Name,Id");
|
|
|
+ sql = $@"SELECT
|
|
|
+ count(1)
|
|
|
+ FROM
|
|
|
+ tede_note a
|
|
|
+ INNER JOIN
|
|
|
+ tede_user b ON a.UserId = b.Id
|
|
|
+ INNER JOIN
|
|
|
+ tede_middle c ON c.Id = a.FolderId
|
|
|
+ WHERE
|
|
|
+ a.IsTopic = 1";
|
|
|
+ if (!string.IsNullOrEmpty(request.SearchKey))
|
|
|
+ {
|
|
|
+ sql += $@" and (b.Name like '%11%' or a.Title like '%11%' or a.Content like '%11%')";
|
|
|
+ }
|
|
|
+ sql += $@" AND (a.FolderId IN (SELECT
|
|
|
+ Id
|
|
|
+ FROM
|
|
|
+ tede_middle
|
|
|
+ WHERE
|
|
|
+ id IN (SELECT
|
|
|
+ MiddleId
|
|
|
+ FROM
|
|
|
+ tede_folder_user
|
|
|
+ WHERE
|
|
|
+ UserId = {request.UserId})
|
|
|
+ AND RoleId IN (3))
|
|
|
+ OR a.FolderId IN (SELECT
|
|
|
+ Id
|
|
|
+ FROM
|
|
|
+ tede_middle
|
|
|
+ WHERE
|
|
|
+ RoleId IN (1))) ";
|
|
|
+ result.Total =
|
|
|
+ await connection.ExecuteScalarAsync<int>(sql);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|