李昊 4 years ago
parent
commit
22da3a1308

+ 15 - 1
gx_api/GxPress/Api/GxPress.Api/WebControllers/WebNoteController.cs

@@ -1,6 +1,7 @@
 using System.Threading.Tasks;
 using GxPress.Auth;
 using GxPress.Common.Page;
+using GxPress.Repository.Interface.Note;
 using GxPress.Request.App.Note;
 using GxPress.Request.Web;
 using GxPress.Result.App.Note;
@@ -22,13 +23,15 @@ namespace GxPress.Api.WebControllers
     {
         private readonly ILogger<WebNoteController> _logger;
         private readonly INoteService _noteService;
+        private readonly INoteRepository noteRepository;
         private readonly ILoginContext _loginContext;
 
-        public WebNoteController(ILogger<WebNoteController> logger, INoteService noteService, ILoginContext loginContext)
+        public WebNoteController(ILogger<WebNoteController> logger, INoteService noteService, ILoginContext loginContext, INoteRepository noteRepository)
         {
             _logger = logger;
             _noteService = noteService;
             _loginContext = loginContext;
+            this.noteRepository = noteRepository;
         }
         /// <summary>
         /// 添加笔记
@@ -111,5 +114,16 @@ namespace GxPress.Api.WebControllers
             request.UserId = _loginContext.AccountId;
             return await _noteService.GetAllByUserId(request);
         }
+        /// <summary>
+        /// web页面查询话题
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("topic")]
+        public async Task<PagedList<NoteTopicResult>> GetTopicNoteAsync(NoteSearchPageListRequest request)
+        {
+            request.UserId = _loginContext.AccountId;
+            return await noteRepository.GetTopicNoteAsync(request);
+        }
     }
 }

+ 1 - 0
gx_api/GxPress/Api/GxPress.Api/WebControllers/WebTopicController.cs

@@ -247,5 +247,6 @@ namespace GxPress.Api.WebControllers
             request.UserId = _loginContext.AccountId;
             return await _topicService.UpdateAsync(request);
         }
+        
     }
 }

+ 1 - 0
gx_api/GxPress/Api/GxPress.Api/wwwroot/未命名.txt

@@ -0,0 +1 @@
+Error Code: 1054. Unknown column 'a.CatelogId' in 'field list'

+ 79 - 0
gx_api/GxPress/Model/GxPress.Result/App/Note/NoteResult.cs

@@ -0,0 +1,79 @@
+namespace GxPress.Result.App.Note
+{
+    /// <summary>
+    /// 话题笔记显示web版本
+    /// </summary>
+    public class NoteTopicResult
+    {
+        /// <summary>
+        /// 笔记id
+        /// </summary>
+        /// <value></value>
+        public int Id { get; set; }
+        /// <summary>
+        /// 标题
+        /// </summary>
+        /// <value></value>
+        public string Title { get; set; }
+        /// <summary>
+        /// 内容
+        /// </summary>
+        /// <value></value>
+        public string Content { get; set; }
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        /// <value></value>
+        public string CreatedDate { get; set; }
+        /// <summary>
+        /// 用户姓名
+        /// </summary>
+        /// <value></value>
+        public string UserName { get; set; }
+        /// <summary>
+        /// 头像
+        /// </summary>
+        /// <value></value>
+        public string AvatarUrl { get; set; }
+        /// <summary>
+        /// 文件夹ID
+        /// </summary>
+        /// <value></value>
+        public int FolderId { get; set; }
+        /// <summary>
+        /// 文件夹名称
+        /// </summary>
+        /// <value></value>
+        public string FolderName { get; set; }
+        /// <summary>
+        /// 点赞数量
+        /// </summary>
+        /// <value></value>
+        public string PraiseCount { get; set; }
+        /// <summary>
+        /// 是否点赞
+        /// </summary>
+        /// <value></value>
+        public bool IsPraise { get; set; }
+        /// <summary>
+        /// 评论数量
+        /// </summary>
+        /// <value></value>
+        public string CommentCount { get; set; }
+        /// <summary>
+        /// 转发数量
+        /// </summary>
+        /// <value></value>
+        public string RetransmissionCount { get; set; }
+        /// <summary>
+        /// 是否转发
+        /// </summary>
+        /// <value></value>
+        public bool IsRetransmission { get; set; }
+        /// <summary>
+        /// 是否收藏
+        /// </summary>
+        /// <value></value>
+        public bool IsCollect { get; set; }
+    }
+}

+ 148 - 1
gx_api/GxPress/Repository/GxPress.Repository.Implement/Note/NoteRepository.cs

@@ -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;
+        }
     }
 
 }

+ 6 - 0
gx_api/GxPress/Repository/GxPress.Repository.Interface/Note/INoteRepository.cs

@@ -51,5 +51,11 @@ namespace GxPress.Repository.Interface.Note
         /// <param name="request"></param>
         /// <returns></returns>
         Task<PagedList<NoteUserExtractResult>> GetAllByUserId(NoteUserRequest request);
+        /// <summary>
+        /// web页面查询话题
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        Task<PagedList<NoteTopicResult>> GetTopicNoteAsync(NoteSearchPageListRequest request);
     }
 }