Răsfoiți Sursa

新增标签查询
新增标签用户新增
新增标签查询(附带拉黑标记)
优化获取文章根据标签是否被拉黑,拉黑的标签,文章自己剔除

fangzhen 7 luni în urmă
părinte
comite
96029944da
23 a modificat fișierele cu 338 adăugiri și 37 ștergeri
  1. 103 13
      ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityTagController.java
  2. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticle.java
  3. 7 6
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleCircle.java
  4. 7 8
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleCollect.java
  5. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleComment.java
  6. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleImages.java
  7. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleTag.java
  8. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityClassCircle.java
  9. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityCollectionArticle.java
  10. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityCommentLike.java
  11. 7 7
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityLike.java
  12. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityReport.java
  13. 70 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityTagBlock.java
  14. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityUserCircle.java
  15. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityUserInfo.java
  16. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityUserLike.java
  17. 10 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityTagBlockMapper.java
  18. 22 3
      ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityArticleServiceImpl.java
  19. 41 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityTagServiceImpl.java
  20. 6 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/service/ICommunityTagService.java
  21. 3 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/vo/CommunityArticleCommentVo.java
  22. 7 0
      ruoyi-generator/src/main/java/com/ruoyi/generator/vo/CommunityTagVo.java
  23. 22 0
      ruoyi-generator/src/main/resources/mapper/community/CommunityUserInfoMapper.xml

+ 103 - 13
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityTagController.java

@@ -4,17 +4,25 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.generator.domain.Community.CommunityTag;
+import com.ruoyi.generator.domain.Community.CommunityTagBlock;
+import com.ruoyi.generator.mapper.community.CommunityTagBlockMapper;
 import com.ruoyi.generator.service.ICommunityTagService;
+import com.ruoyi.generator.vo.CommunityTagVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 文章标签
@@ -29,6 +37,9 @@ public class CommunityTagController extends BaseController {
     @Autowired
     private ICommunityTagService communityTagService;
 
+    @Autowired
+    private CommunityTagBlockMapper communityTagBlockMapper;
+
     /**
      * 获取标签信息
      */
@@ -36,19 +47,98 @@ public class CommunityTagController extends BaseController {
     @GetMapping()
     @Transactional
     //@Anonymous
-    public AjaxResult tags(String tagName) {
-        Page<CommunityTag> page = new Page<>(1, 10);
-//        List<CommunityTag> communityTags = communityTagService.page(page, new QueryWrapper<CommunityTag>()
-//                .ne("is_delete", 1).or().isNull("is_delete")
-//                .like("tag_name", tagName)
-//                .orderByDesc("tag_hot")).getRecords();
+    public AjaxResult tags(String tagName, int currentPage, int limit) {
+        Page<CommunityTag> page = new Page<>(currentPage, limit);
         List<CommunityTag> communityTags = communityTagService.page(page, new QueryWrapper<CommunityTag>().and((wrapper) -> {
-            wrapper.ne("is_delete", 1)
-                    .or()
-                    .isNull("is_delete");
-        })
+                    wrapper.ne("is_delete", 1)
+                            .or()
+                            .isNull("is_delete");
+                })
                 .like("tag_name", tagName)
                 .orderByDesc("tag_hot")).getRecords();
         return AjaxResult.success(communityTags);
     }
+
+
+    /**
+     * 获取标签信息(当前用户是否已拉黑)
+     */
+    @ApiOperation("获取标签信息(附带拉黑信息)")
+    @GetMapping("/tagsTakeBlock")
+    @Transactional
+    //@Anonymous
+    public AjaxResult tagsTakeBlock(String tagName) {
+        Page<CommunityTag> page = new Page<>(1, 10);
+        List<CommunityTag> communityTags = communityTagService.page(page, new QueryWrapper<CommunityTag>().and((wrapper) -> {
+                    wrapper.ne("is_delete", 1)
+                            .or()
+                            .isNull("is_delete");
+                })
+                .like("tag_name", tagName)
+                .orderByDesc("tag_hot")).getRecords();
+
+        List<CommunityTagVo> communityTagVos = new ArrayList<>();
+        CommunityTagVo communityTagVo = null;
+        for (CommunityTag communityTag : communityTags) {
+            communityTagVo = new CommunityTagVo();
+            BeanUtils.copyProperties(communityTag, communityTagVo);
+            communityTagVos.add(communityTagVo);
+        }
+
+        //查询是否被当前用户拉黑
+        List<Long> tagIds = communityTagVos.stream().map(CommunityTagVo::getId).collect(Collectors.toList());
+        Long userId = SecurityUtils.getUserId();
+        List<CommunityTagBlock> communityTagBlocks = communityTagBlockMapper.selectList(new QueryWrapper<CommunityTagBlock>().eq("user_id", userId).in("tag_id", tagIds));
+
+        //设置是否已拉黑
+        for (CommunityTagVo tagVo : communityTagVos) {
+            Long id = tagVo.getId();
+            for (CommunityTagBlock communityTagBlock : communityTagBlocks) {
+                if (communityTagBlock.getTagId().equals(id)) {
+                    tagVo.setBlock(communityTagBlock.isBlock());
+                    break;
+                }
+            }
+        }
+
+        return AjaxResult.success(communityTagVos);
+    }
+
+    /**
+     * 新增标签
+     */
+    @ApiOperation("新增标签")
+    @PostMapping("/addTag")
+    @Transactional
+    //@Anonymous
+    public AjaxResult addTag(String tagName) {
+        if (StringUtils.isEmpty(tagName)) {
+            return AjaxResult.error("参数异常!");
+        }
+        CommunityTag communityTag = new CommunityTag();
+        Long userId = SecurityUtils.getUserId();
+        communityTag.setTagName(tagName);
+        communityTag.setTagHot(0L);
+        communityTag.setDelete(false);
+        communityTag.setCreateBy(userId);
+        communityTag.setCreateTime(DateUtils.parseDate(DateUtils.getTime()));
+        communityTagService.save(communityTag);
+        return AjaxResult.success("添加标签成功!");
+    }
+
+    /**
+     * 拉黑标签
+     */
+    @ApiOperation("拉黑标签")
+    @PostMapping("/blockTag")
+    @Transactional
+    //@Anonymous
+    public AjaxResult blockTag(@RequestBody CommunityTagBlock tagBlock) {
+        if (Objects.isNull(tagBlock.getTagId()) || Objects.isNull(tagBlock.getUserId())) {
+            return AjaxResult.error("参数异常!");
+        }
+
+        CommunityTagBlock communityTagBlock = communityTagService.blockTag(tagBlock);
+        return AjaxResult.success(communityTagBlock);
+    }
 }

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticle.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -81,6 +83,7 @@ public class CommunityArticle implements Serializable {
      */
     @ApiModelProperty("文章标签")
     @TableField(exist = false)
+    @JsonSerialize(using = ToStringSerializer.class)
     private List<String> tags;
 
     /**

+ 7 - 6
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleCircle.java

@@ -1,17 +1,17 @@
 package com.ruoyi.generator.domain.Community;
 
-import javax.validation.constraints.NotNull;
-
-import java.io.Serializable;
-
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
 /**
 * 文章关联圈子
 * @TableName community_article_circle
@@ -26,6 +26,7 @@ public class CommunityArticleCircle implements Serializable {
     @NotNull(message="[唯一id]不能为空")
     @ApiModelProperty("唯一id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 文章id

+ 7 - 8
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleCollect.java

@@ -1,21 +1,19 @@
 package com.ruoyi.generator.domain.Community;
 
-import javax.validation.constraints.NotNull;
-
-import java.io.Serializable;
-
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.common.core.domain.BaseEntity;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
 /**
 * 用户文章收藏表
 * @TableName community_article_collect
@@ -32,6 +30,7 @@ public class CommunityArticleCollect implements Serializable {
     @NotNull(message="[收藏id]不能为空")
     @ApiModelProperty("收藏id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 文章id

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleComment.java

@@ -3,6 +3,8 @@ package com.ruoyi.generator.domain.Community;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -28,6 +30,7 @@ public class CommunityArticleComment implements Serializable {
     @NotNull(message="[评论id]不能为空")
     @ApiModelProperty("评论id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 文章id

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleImages.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -27,6 +29,7 @@ public class CommunityArticleImages implements Serializable {
      */
     @ApiModelProperty("图片id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 
     /**

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityArticleTag.java

@@ -3,6 +3,8 @@ package com.ruoyi.generator.domain.Community;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -24,6 +26,7 @@ public class CommunityArticleTag implements Serializable {
     @TableId("id")
     @NotNull(message="[唯一id]不能为空")
     @ApiModelProperty("唯一id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 文章id

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityClassCircle.java

@@ -3,6 +3,8 @@ package com.ruoyi.generator.domain.Community;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -24,6 +26,7 @@ public class CommunityClassCircle implements Serializable {
     @NotNull(message="[唯一id]不能为空")
     @ApiModelProperty("唯一id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 圈子id

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityCollectionArticle.java

@@ -3,6 +3,8 @@ package com.ruoyi.generator.domain.Community;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -24,6 +26,7 @@ public class CommunityCollectionArticle implements Serializable {
     @NotNull(message="[唯一id]不能为空")
     @ApiModelProperty("唯一id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 合集id

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityCommentLike.java

@@ -1,6 +1,8 @@
 package com.ruoyi.generator.domain.Community;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -24,6 +26,7 @@ public class CommunityCommentLike implements Serializable {
     */
     @NotNull(message="[唯一id]不能为空")
     @ApiModelProperty("唯一id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 评价id

+ 7 - 7
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityLike.java

@@ -1,20 +1,19 @@
 package com.ruoyi.generator.domain.Community;
 
-import javax.validation.constraints.NotNull;
-
-import java.io.Serializable;
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.common.core.domain.BaseEntity;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
 /**
 * 用户点赞文章记录
 * @TableName community_like
@@ -31,6 +30,7 @@ public class CommunityLike implements Serializable {
     @NotNull(message="[唯一id]不能为空")
     @ApiModelProperty("唯一id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 文章id

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityReport.java

@@ -2,6 +2,8 @@ package com.ruoyi.generator.domain.Community;
 
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.hibernate.validator.constraints.Length;
@@ -25,6 +27,7 @@ public class CommunityReport implements Serializable {
     @NotNull(message="[唯一id]不能为空")
     @ApiModelProperty("唯一id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 举报字典编码

+ 70 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityTagBlock.java

@@ -0,0 +1,70 @@
+package com.ruoyi.generator.domain.Community;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 拉黑标签记录表
+ *
+ * @TableName community_tag_block
+ */
+@TableName("community_tag_block")
+@Data
+public class CommunityTagBlock implements Serializable {
+
+    /**
+     * 唯一id
+     */
+    @NotNull(message = "[唯一id]不能为空")
+    @ApiModelProperty("唯一id")
+    @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+    /**
+     * 用户id
+     */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+     * 标签id
+     */
+    @ApiModelProperty("标签id")
+    private Long tagId;
+    /**
+     * 是否已拉黑
+     */
+    @ApiModelProperty("是否已拉黑")
+    private boolean isBlock;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty("创建人")
+    private Long createBy;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    @ApiModelProperty("更新人")
+    private Long updateBy;
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+    private Date updateTime;
+}

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityUserCircle.java

@@ -3,6 +3,8 @@ package com.ruoyi.generator.domain.Community;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -25,6 +27,7 @@ public class CommunityUserCircle implements Serializable {
     @NotNull(message = "[唯一id]不能为空")
     @ApiModelProperty("唯一id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
      * 用户id

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityUserInfo.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -23,6 +25,7 @@ public class CommunityUserInfo {
     @NotNull(message = "[唯一id]不能为空")
     @ApiModelProperty("唯一id")
     @TableId(type = IdType.AUTO, value = "id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
      * 用户id

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityUserLike.java

@@ -3,6 +3,8 @@ package com.ruoyi.generator.domain.Community;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -24,6 +26,7 @@ public class CommunityUserLike implements Serializable {
     @NotNull(message="[唯一id]不能为空")
     @ApiModelProperty("唯一id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 关注人id

+ 10 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityTagBlockMapper.java

@@ -0,0 +1,10 @@
+package com.ruoyi.generator.mapper.community;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.generator.domain.Community.CommunityTagBlock;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CommunityTagBlockMapper extends BaseMapper<CommunityTagBlock> {
+
+}

+ 22 - 3
ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityArticleServiceImpl.java

@@ -22,6 +22,7 @@ import java.net.HttpURLConnection;
 import java.net.URL;
 import java.text.ParseException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 业务 服务层实现
@@ -86,6 +87,9 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
     @Autowired
     private ICommunityCollectionArticleService collectionArticleService;
 
+    @Autowired
+    private CommunityTagBlockMapper communityTagBlockMapper;
+
     /**
      * 查询文章列表
      *
@@ -131,7 +135,8 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
         //根据分类查找文章
         int offset = (pageNum - 1) * pageSize;
         communityArticleVos = communityArticleMapper.selectCommunityArticleList(communityArticle, circleIds, offset, pageSize, searchType);
-        for (CommunityArticleVo articleVo : communityArticleVos) {
+        List<CommunityArticleVo> communityArticleVos_copy = new ArrayList<>(communityArticleVos);
+        for (CommunityArticleVo articleVo : communityArticleVos_copy) {
             List<Map<String, Object>> imageList = articleVo.getImageList();
             articleVo.setCircleIds(circleIds);
             List<CommunityArticleImages> videoList = new ArrayList<>();
@@ -183,9 +188,23 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
 
             //获取文章标签
             List<CommunityArticleTag> articleTags = communityArticleTagMapper.selectList(new QueryWrapper<CommunityArticleTag>().eq("article_id", articleVo.getId()));
+            List<Long> tagList = articleTags.stream().map(CommunityArticleTag::getTagId).collect(Collectors.toList());
             List<Long> tagIds = new ArrayList<>();
-            for (CommunityArticleTag articleTag : articleTags) {
-                tagIds.add(articleTag.getTagId());
+            //判断当前标签是否被当前登录用户拉黑
+            List<CommunityTagBlock> communityTagBlocks = communityTagBlockMapper.selectList(new QueryWrapper<CommunityTagBlock>()
+                    .in("tag_id", tagList)
+                    .eq("user_id", userId));
+
+            for (CommunityTagBlock tagBlock : communityTagBlocks) {
+                if (tagBlock.isBlock()) {
+                    communityArticleVos.remove(articleVo);
+                    break;
+                }
+                tagIds.add(tagBlock.getTagId());
+            }
+
+            if (communityTagBlocks.isEmpty()) {
+                tagIds.addAll(tagList);
             }
 
             if (!tagIds.isEmpty()) {

+ 41 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityTagServiceImpl.java

@@ -1,10 +1,51 @@
 package com.ruoyi.generator.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.generator.domain.Community.CommunityTag;
+import com.ruoyi.generator.domain.Community.CommunityTagBlock;
+import com.ruoyi.generator.mapper.community.CommunityTagBlockMapper;
 import com.ruoyi.generator.mapper.community.CommunityTagMapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
 public class CommunityTagServiceImpl extends ServiceImpl<CommunityTagMapper, CommunityTag> implements ICommunityTagService {
+
+    @Autowired
+    private CommunityTagBlockMapper communityTagBlockMapper;
+
+    /**
+     * 拉黑标签
+     *
+     * @param communityTagBlock 拉黑标签记录
+     */
+    @Override
+    public CommunityTagBlock blockTag(CommunityTagBlock communityTagBlock) {
+        CommunityTagBlock tagBlock = communityTagBlockMapper.selectOne(new QueryWrapper<CommunityTagBlock>()
+                .eq("user_id", communityTagBlock.getUserId())
+                .eq("tag_id", communityTagBlock.getTagId()));
+
+        if (tagBlock != null) {
+            //是否拉黑
+            if (communityTagBlock.isBlock() == tagBlock.isBlock()) {
+                return tagBlock;
+            }
+            tagBlock.setBlock(communityTagBlock.isBlock());
+            tagBlock.setUpdateBy(communityTagBlock.getUserId());
+            tagBlock.setUpdateTime(DateUtils.parseDate(DateUtils.getTime()));
+            communityTagBlockMapper.updateById(tagBlock);
+            return tagBlock;
+        }
+
+        //新增记录
+        tagBlock = new CommunityTagBlock();
+        BeanUtils.copyProperties(communityTagBlock, tagBlock);
+        tagBlock.setCreateBy(communityTagBlock.getUserId());
+        tagBlock.setCreateTime(DateUtils.parseDate(DateUtils.getTime()));
+        communityTagBlockMapper.insert(tagBlock);
+        return tagBlock;
+    }
 }

+ 6 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/service/ICommunityTagService.java

@@ -2,6 +2,12 @@ package com.ruoyi.generator.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.generator.domain.Community.CommunityTag;
+import com.ruoyi.generator.domain.Community.CommunityTagBlock;
 
 public interface ICommunityTagService extends IService<CommunityTag> {
+    /**
+     * 拉黑标签
+     * @param communityTagBlock 拉黑标签记录
+     */
+    CommunityTagBlock blockTag(CommunityTagBlock communityTagBlock);
 }

+ 3 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/vo/CommunityArticleCommentVo.java

@@ -2,6 +2,8 @@ package com.ruoyi.generator.vo;
 
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.ruoyi.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -29,6 +31,7 @@ public class CommunityArticleCommentVo extends BaseEntity implements Serializabl
     @NotNull(message="[评论id]不能为空")
     @ApiModelProperty("评论id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 文章id

+ 7 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/vo/CommunityTagVo.java

@@ -3,6 +3,8 @@ package com.ruoyi.generator.vo;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.hibernate.validator.constraints.Length;
@@ -27,6 +29,7 @@ public class CommunityTagVo implements Serializable {
     @NotNull(message="[标签id]不能为空")
     @ApiModelProperty("标签id")
     @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     /**
     * 标签名称
@@ -39,6 +42,10 @@ public class CommunityTagVo implements Serializable {
 
     @ApiModelProperty("热度")
     private Long tagHot;
+
+    @ApiModelProperty("是否已拉黑")
+    private boolean isBlock;
+
     /**
     * 创建人
     */

+ 22 - 0
ruoyi-generator/src/main/resources/mapper/community/CommunityUserInfoMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.generator.mapper.community.CommunityUserInfoMapper">
+    <select id="selectUserBySearchValue" resultType="com.ruoyi.generator.vo.CommunityUserInfoVo">
+        select
+        b.id as id,
+        a.nick_name as nickName,
+        a.avatar as avatar,
+        (select count(1) as fansCount from community_user_like c where c.like_user_id = a.user_id) as fansCount,
+        (select count(1) as articleCount from community_article d where d.user_id = a.user_id) as articleCount
+        from sys_user a
+        left join community_user_info b on a.user_id = b.user_id
+        <if test="searchValue != null and searchValue != ''">
+            <where>
+                a.nick_name like concat('%', #{searchValue}, '%')
+                or b.user_id like concat('%', #{searchValue}, '%')
+            </where>
+        </if>
+    </select>
+</mapper>