|
@@ -16,6 +16,7 @@ using GxPress.Entity.Topic;
|
|
|
using GxPress.Result;
|
|
|
using SqlKata;
|
|
|
using GxPress.Result.Job;
|
|
|
+using GxPress.EnumConst;
|
|
|
|
|
|
namespace GxPress.Repository.Implement
|
|
|
{
|
|
@@ -118,6 +119,7 @@ namespace GxPress.Repository.Implement
|
|
|
/// <returns></returns>
|
|
|
public async Task<PagedList<TopicListPageResult>> FindTopicByGroupIdAsync(TopicDetailListRequest request)
|
|
|
{
|
|
|
+ var topicConts = GxPress.EnumConst.AllTypeConst.Topic.GetHashCode();
|
|
|
//用户收件人
|
|
|
var resultData = new PagedList<TopicListPageResult>();
|
|
|
var showKey = $@"SELECT a.*,(SELECT
|
|
@@ -125,7 +127,7 @@ namespace GxPress.Repository.Implement
|
|
|
FROM
|
|
|
tede_analyze
|
|
|
WHERE
|
|
|
- TypeValue =1
|
|
|
+ TypeValue ={topicConts}
|
|
|
AND SourceId = a.Id
|
|
|
AND AnalyzeType = 1) AS PraiseCount,
|
|
|
(SELECT
|
|
@@ -133,7 +135,7 @@ namespace GxPress.Repository.Implement
|
|
|
FROM
|
|
|
tede_analyze
|
|
|
WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = 1
|
|
|
+ UserId = {request.UserId} AND TypeValue = {topicConts}
|
|
|
AND SourceId = a.Id
|
|
|
AND AnalyzeType = 1
|
|
|
LIMIT 0 , 1) AS IsPraise,
|
|
@@ -149,7 +151,7 @@ namespace GxPress.Repository.Implement
|
|
|
FROM
|
|
|
tede_analyze
|
|
|
WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = 1
|
|
|
+ UserId = {request.UserId} AND TypeValue = {topicConts}
|
|
|
AND SourceId = a.Id
|
|
|
AND AnalyzeType = 4) AS RetransmissionCount,
|
|
|
(SELECT
|
|
@@ -157,7 +159,7 @@ namespace GxPress.Repository.Implement
|
|
|
FROM
|
|
|
tede_analyze
|
|
|
WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = 1
|
|
|
+ UserId = {request.UserId} AND TypeValue = {topicConts}
|
|
|
AND SourceId = a.Id
|
|
|
AND AnalyzeType = 4
|
|
|
LIMIT 0 , 1) AS IsRetransmission,
|
|
@@ -166,7 +168,7 @@ namespace GxPress.Repository.Implement
|
|
|
FROM
|
|
|
tede_analyze
|
|
|
WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = 1
|
|
|
+ UserId = {request.UserId} AND TypeValue = {topicConts}
|
|
|
AND SourceId = a.Id
|
|
|
AND AnalyzeType = 4
|
|
|
LIMIT 0 , 1) AS IsCollect,
|
|
@@ -175,7 +177,7 @@ namespace GxPress.Repository.Implement
|
|
|
FROM
|
|
|
tede_analyze
|
|
|
WHERE
|
|
|
- UserId = {request.UserId} AND TypeValue = 1
|
|
|
+ UserId = {request.UserId} AND TypeValue = {topicConts}
|
|
|
AND SourceId = a.Id
|
|
|
AND AnalyzeType = 4) AS CollectCount,b.Name,b.AvatarUrl,c.Name FROM";
|
|
|
var countSql = $"SELECT count(1) FROM tede_topic a inner join tede_user b on a.UserId=b.Id inner join tede_Department c on c.Id=b.DepartmentId where a.GroupId={request.GroupId}";
|
|
@@ -205,8 +207,151 @@ namespace GxPress.Repository.Implement
|
|
|
resultData.Items = topicListPageResults;
|
|
|
return resultData;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+ /// <summary>
|
|
|
+ ///最新 小组话题分页列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="request"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<PagedList<TopicListPageResult>> GetGroupTopicPageAsync(TopicDetailListRequest request)
|
|
|
+ {
|
|
|
+ var topicConst = AllTypeConst.Topic.GetHashCode();
|
|
|
+ var result = new PagedList<TopicListPageResult>();
|
|
|
+ var sqlStr = "";
|
|
|
+ if (request.GroupId == 0)
|
|
|
+ {
|
|
|
+ sqlStr += $@" AND a.GroupId IN (SELECT
|
|
|
+ GroupId
|
|
|
+ FROM
|
|
|
+ tede_group_user
|
|
|
+ WHERE
|
|
|
+ UserId ={request.UserId})";
|
|
|
+ }
|
|
|
+ if (request.GroupId > 0)
|
|
|
+ {
|
|
|
+ sqlStr += $@" AND a.GroupId IN (SELECT
|
|
|
+ GroupId
|
|
|
+ FROM
|
|
|
+ tede_group_user
|
|
|
+ WHERE
|
|
|
+ UserId ={request.UserId} AND GroupId = {request.GroupId} )";
|
|
|
+ }
|
|
|
+ if (!string.IsNullOrEmpty(request.Key))
|
|
|
+ {
|
|
|
+ sqlStr += $@"AND (a.Title LIKE '%{request.Key}%'
|
|
|
+ OR a.Content LIKE '%{request.Key}%')";
|
|
|
+ }
|
|
|
+ string sql = $@"SELECT
|
|
|
+ a.Id,
|
|
|
+ a.Title,
|
|
|
+ a.UserId,
|
|
|
+ a.ReadCount,
|
|
|
+ a.CreatedDate,
|
|
|
+ a.Content,
|
|
|
+ a.GroupId,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_analyze
|
|
|
+ WHERE
|
|
|
+ TypeValue ={topicConst} AND SourceId = a.Id
|
|
|
+ AND AnalyzeType = 1) AS PraiseCount,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_analyze
|
|
|
+ WHERE
|
|
|
+ UserId ={request.UserId} AND TypeValue = {topicConst}
|
|
|
+ AND SourceId = a.Id
|
|
|
+ AND AnalyzeType = 1
|
|
|
+ LIMIT 0 , 1) AS IsPraise,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_comment
|
|
|
+ WHERE
|
|
|
+ ArticleId = a.Id AND pid = 0
|
|
|
+ AND TypeValue = 1) AS CommentCount,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_analyze
|
|
|
+ WHERE
|
|
|
+ UserId ={request.UserId} AND TypeValue ={topicConst}
|
|
|
+ AND SourceId = a.Id
|
|
|
+ AND AnalyzeType = 4) AS RetransmissionCount,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_analyze
|
|
|
+ WHERE
|
|
|
+ UserId ={request.UserId} AND TypeValue ={topicConst}
|
|
|
+ AND SourceId = a.Id
|
|
|
+ AND AnalyzeType = 4
|
|
|
+ LIMIT 0 , 1) AS IsRetransmission,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_analyze
|
|
|
+ WHERE
|
|
|
+ UserId ={request.UserId} AND TypeValue = {topicConst}
|
|
|
+ AND SourceId = a.Id
|
|
|
+ AND AnalyzeType = 4
|
|
|
+ LIMIT 0 , 1) AS IsCollect,
|
|
|
+ (SELECT
|
|
|
+ COUNT(1)
|
|
|
+ FROM
|
|
|
+ tede_analyze
|
|
|
+ WHERE
|
|
|
+ UserId ={request.UserId} AND TypeValue = {topicConst}
|
|
|
+ AND SourceId = a.Id
|
|
|
+ AND AnalyzeType = 4) AS CollectCount,
|
|
|
+ b.Name,
|
|
|
+ c.Name,
|
|
|
+ c.AvatarUrl,
|
|
|
+ d.Id,
|
|
|
+ d.Name
|
|
|
+ FROM
|
|
|
+ tede_topic a
|
|
|
+ INNER JOIN
|
|
|
+ tede_group b ON a.GroupId = b.Id
|
|
|
+ INNER JOIN
|
|
|
+ tede_user c ON c.Id = a.UserId
|
|
|
+ INNER JOIN
|
|
|
+ tede_department d ON d.Id = c.DepartmentId
|
|
|
+ WHERE
|
|
|
+ a.GroupId > 0
|
|
|
+ {sqlStr}
|
|
|
+ ORDER BY a.CreatedDate DESC";
|
|
|
+ string countSql = $@"SELECT
|
|
|
+ count(1)
|
|
|
+ FROM
|
|
|
+ tede_topic a
|
|
|
+ INNER JOIN
|
|
|
+ tede_group b ON a.GroupId = b.Id
|
|
|
+ INNER JOIN
|
|
|
+ tede_user c ON c.Id = a.UserId
|
|
|
+ WHERE
|
|
|
+ a.GroupId > 0
|
|
|
+ {sqlStr}
|
|
|
+ ORDER BY a.CreatedDate DESC";
|
|
|
+ var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
|
|
|
+ var database = new Database(databaseType, _connectionString);
|
|
|
+ var connection = database.GetConnection();
|
|
|
+ result.Items =
|
|
|
+ await connection
|
|
|
+ .QueryAsync<TopicListPageResult, Entity.Group, User, Department, TopicListPageResult>(sql,
|
|
|
+ (topicListPageResult, group, user, department) =>
|
|
|
+ {
|
|
|
+ topicListPageResult.GroupName = group != null ? group.Name : "";
|
|
|
+ topicListPageResult.DepartmentName = department != null ? department.Name : "";
|
|
|
+ topicListPageResult.DepartmentId = department != null ? department.Id : 0;
|
|
|
+ topicListPageResult.UserName = user != null ? user.Name : "";
|
|
|
+ topicListPageResult.AvatarUrl = user != null ? StringUtils.AddDomainMin(user.AvatarUrl) : "";
|
|
|
+ return topicListPageResult;
|
|
|
+ }, new { page = (request.Page - 1) * request.PerPage, pageSize = request.PerPage }, splitOn: "Id,Name,Name,Id");
|
|
|
+ result.Total = await connection.ExecuteScalarAsync<int>(countSql);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 根据小组ID获取话题数量
|
|
@@ -455,7 +600,7 @@ namespace GxPress.Repository.Implement
|
|
|
}
|
|
|
public string AssembleSql(TopicPageSearchRequest request)
|
|
|
{
|
|
|
- var topicTypeValue=GxPress.EnumConst.AllTypeConst.Topic.GetHashCode();
|
|
|
+ var topicTypeValue = GxPress.EnumConst.AllTypeConst.Note.GetHashCode();
|
|
|
var sql = $@"SELECT
|
|
|
a.*,
|
|
|
(SELECT
|
|
@@ -522,7 +667,7 @@ namespace GxPress.Repository.Implement
|
|
|
INNER JOIN
|
|
|
tede_middle c ON c.MiddleId = a.Id
|
|
|
WHERE
|
|
|
- c.FolderType = 4 AND a.IsTopic = 1
|
|
|
+ c.FolderType = {topicTypeValue} AND a.IsTopic = 1
|
|
|
AND (a.FolderId IN (SELECT
|
|
|
MiddleId
|
|
|
FROM
|