李昊 4 年之前
父節點
當前提交
38263f051c

+ 10 - 0
gx_api/GxPress/Api/GxPress.Api/AppControllers/NoteController.cs

@@ -112,5 +112,15 @@ namespace GxPress.Api.AppControllers
             request.UserId = _loginContext.AccountId;
             return await _noteService.GetNoteNotFolderPageResult(request);
         }
+        /// <summary>
+        /// 笔记设置置顶
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpPut("{id}")]
+        public async Task<bool> SetIsTopAsync(int id)
+        {
+            return await noteRepository.SetIsTopAsync(id);
+        }
     }
 }

+ 7 - 1
gx_api/GxPress/Model/GxPress.Entity/Note/Note.cs

@@ -63,7 +63,7 @@ namespace GxPress.Entity.Note
         /// </summary>
         /// <value></value>
         [DataColumn]
-        public int MediaType{ get; set; }
+        public int MediaType { get; set; }
         /// <summary>
         /// 目录ID
         /// </summary>
@@ -76,5 +76,11 @@ namespace GxPress.Entity.Note
         /// <value></value>
         [DataColumn]
         public string ChapterId { get; set; }
+        /// <summary>
+        /// 是否置顶
+        /// </summary>
+        /// <value></value>
+        [DataColumn]
+        public bool IsTop { get; set; }
     }
 }

+ 57 - 18
gx_api/GxPress/Repository/GxPress.Repository.Implement/Note/NoteRepository.cs

@@ -61,6 +61,17 @@ namespace GxPress.Repository.Implement.Note
             return await _repository.UpdateAsync(query) > 0;
         }
         /// <summary>
+        /// 设置置顶
+        /// </summary>
+        /// <param name="noteId"></param>
+        /// <returns></returns>
+        public async Task<bool> SetIsTopAsync(int noteId)
+        {
+            var note = await _repository.GetAsync(noteId);
+            note.IsTopic = !note.IsTopic;
+            return await _repository.UpdateAsync(note);
+        }
+        /// <summary>
         /// 获取笔记分页
         /// </summary>
         /// <param name="request"></param>
@@ -594,8 +605,28 @@ namespace GxPress.Repository.Implement.Note
                                 a.CreatedDate,
                                 a.MediaId,
                                 a.ReadCount,
-                               (select FolderName from  tede_middle where id= (select ParentId from tede_middle where MiddleId=a.Id AND FolderType = {noteConstValue})) as FolderName,
-                                (select Id from  tede_middle where id= (select ParentId from tede_middle where MiddleId=a.Id AND FolderType = {noteConstValue})) as FolderId,
+                                (SELECT 
+                                        FolderName
+                                    FROM
+                                        tede_middle
+                                    WHERE
+                                        id = (SELECT 
+                                                ParentId
+                                            FROM
+                                                tede_middle
+                                            WHERE
+                                                MiddleId = a.Id AND FolderType = {noteConstValue})) AS FolderName,
+                                (SELECT 
+                                        Id
+                                    FROM
+                                        tede_middle
+                                    WHERE
+                                        id = (SELECT 
+                                                ParentId
+                                            FROM
+                                                tede_middle
+                                            WHERE
+                                                MiddleId = a.Id AND FolderType = {noteConstValue})) AS FolderId,
                                 (SELECT 
                                         COUNT(1)
                                     FROM
@@ -625,9 +656,9 @@ namespace GxPress.Repository.Implement.Note
                                     FROM
                                         tede_analyze
                                     WHERE
-                                       UserId = {request.UserId} AND TypeValue = {noteConstValue}
+                                        UserId = {request.UserId} AND TypeValue ={noteConstValue}
                                             AND SourceId = a.Id
-                                            AND AnalyzeType = 4) AS RetransmissionCount,
+                                            AND AnalyzeType = {noteConstValue}) AS RetransmissionCount,
                                 (SELECT 
                                         COUNT(1)
                                     FROM
@@ -642,7 +673,7 @@ namespace GxPress.Repository.Implement.Note
                                     FROM
                                         tede_analyze
                                     WHERE
-                                        UserId = {request.UserId} AND TypeValue = {noteConstValue}
+                                         UserId = {request.UserId} AND TypeValue = {noteConstValue}
                                             AND SourceId = a.Id
                                             AND AnalyzeType = 3
                                     LIMIT 0 , 1) AS IsCollect,
@@ -653,31 +684,39 @@ namespace GxPress.Repository.Implement.Note
                                     WHERE
                                         UserId = {request.UserId} AND TypeValue = {noteConstValue}
                                             AND SourceId = a.Id
-                                            AND AnalyzeType = 3) AS IsCollect
-                                            ,b.Name,b.AvatarUrl
+                                            AND AnalyzeType = 3) AS IsCollect,
+                                b.Name,
+                                b.AvatarUrl,c.Id
                             FROM
-                                tede_note a inner join tede_user b on a.UserId=b.Id
-                            WHERE a.IsDelete=0 and 
-                                a.UserId = {request.UserId} {sqlValue}
-                            ORDER BY a.CreatedDate DESC  limit {(request.Page - 1) * request.PerPage},{request.PerPage}";
+                                tede_note a
+                                    INNER JOIN
+                                tede_user b ON a.UserId = b.Id inner join tede_middle c on c.MiddleId=a.Id
+                            WHERE
+                                a.IsDelete = 0 AND a.UserId = {request.UserId}  and c.FolderType={noteConstValue} {sqlValue}
+                            ORDER BY a.IsTop desc ,a.CreatedDate DESC
+                            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<NoteNotFolderPageResult>();
             result.Items =
                   await connection
-                      .QueryAsync<NoteNotFolderPageResult, User, NoteNotFolderPageResult>(sql,
-                        (result, user) =>
+                      .QueryAsync<NoteNotFolderPageResult, User, Entity.Middle.Middle, NoteNotFolderPageResult>(sql,
+                        (result, user, middle) =>
                         {
+                            result.MiddleId = result.Id;
+                            result.Id = middle.Id;
                             result.Name = user == null ? "" : user.Name;
                             result.AvatarUrl = user == null ? "" : StringUtils.AddDomainMin(user.AvatarUrl);
                             return result;
-                        }, splitOn: "Id,Name");
-            sql = $@"SELECT count(1)
+                        }, splitOn: "Id,Id,Name,Id");
+            sql = $@"SELECT  count(1)
                             FROM
-                                tede_note a inner join tede_user b on a.UserId=b.Id
-                            WHERE a.IsDelete=0 and 
-                                a.UserId = {request.UserId} {sqlValue}";
+                                tede_note a
+                                    INNER JOIN
+                                tede_user b ON a.UserId = b.Id inner join tede_middle c on c.MiddleId=a.Id
+                            WHERE
+                                a.IsDelete = 0 AND a.UserId = {request.UserId}  and c.FolderType={noteConstValue} {sqlValue}";
             result.Total = await connection.ExecuteScalarAsync<int>(sql);
             return result;
         }

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

@@ -63,5 +63,11 @@ namespace GxPress.Repository.Interface.Note
         /// <param name="request"></param>
         /// <returns></returns>
         Task<PagedList<NoteNotFolderPageResult>> GetNoteNotFolderPageResult(NoteSearchPageListRequest request);
+        /// <summary>
+        /// 设置置顶
+        /// </summary>
+        /// <param name="noteId"></param>
+        /// <returns></returns>
+        Task<bool> SetIsTopAsync(int noteId);
     }
 }