浏览代码

增加置顶排序

fangqing 3 周之前
父节点
当前提交
cf9753c907

+ 2 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityArticleController.java

@@ -1580,7 +1580,9 @@ public class CommunityArticleController extends BaseController {
                 updateWrapper.eq("user_id", userId)
                         .eq("is_top", 1)
                         .notIn("id", communityArticles.stream().map(CommunityArticle::getId).collect(Collectors.toList()))
+                        .set("top_time",null)
                         .set("is_top", false); // 将 is_top 设置为 false
+
                 communityArticleMapper.update(null, updateWrapper);
             }
 

+ 11 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/vo/CommunityArticleVo.java

@@ -1,6 +1,7 @@
 package com.ruoyi.generator.vo;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.ruoyi.common.core.domain.BaseEntity;
@@ -18,6 +19,7 @@ import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 import java.io.Serializable;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -86,6 +88,15 @@ public class CommunityArticleVo extends BaseEntity implements Serializable {
     @ApiModelProperty("是否已收藏")
     private boolean isCollect;
 
+    @ApiModelProperty("是否置顶")
+    private boolean isTop;
+
+    /**
+     * 置顶时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date topTime;
+
     @ApiModelProperty("用户名")
     private String userName;
 

+ 8 - 4
ruoyi-generator/src/main/resources/mapper/community/ArticleMapper.xml

@@ -146,7 +146,9 @@
         c.user_name as user_name,
         c.nick_name as nick_name,
         c.email as email,
-        c.avatar as avatar
+        c.avatar as avatar,
+        a.is_top,
+        a.top_time
 
         from
         community_article a
@@ -199,12 +201,14 @@
             and a.user_id not in (select distinct peer_id from community_user_block where user_id = #{loginId} and is_block = 1 )
         </where>
         group by a.id,a.create_time
+        <if test="searchType == 0">
+            ORDER BY a.top_time DESC
+        </if>
         <if test="searchType == 1">
-            order by a.create_time desc
+            ORDER BY a.top_time DESC, a.create_time DESC
         </if>
-
         <if test="searchType == 2">
-            order by a.page_views desc
+            ORDER BY a.top_time DESC, a.page_views DESC
         </if>
         <if test="searchType == 3">
             order by RAND()