Forráskód Böngészése

新增文章发布文章获取等方法优化

fangzhen 8 hónapja
szülő
commit
74e6629f53

+ 66 - 5
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityArticleController.java

@@ -7,11 +7,10 @@ import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.generator.domain.Community.*;
-import com.ruoyi.generator.mapper.community.CommunityArticleCommentMapper;
-import com.ruoyi.generator.mapper.community.CommunityClassMapper;
-import com.ruoyi.generator.mapper.community.CommunityCommentLikeMapper;
+import com.ruoyi.generator.mapper.community.*;
 import com.ruoyi.generator.service.ICommunityArticleService;
 import com.ruoyi.generator.vo.CommunityArticleVo;
+import com.ruoyi.generator.vo.CommunityCircleVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.logging.log4j.util.Strings;
@@ -19,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.text.ParseException;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
@@ -43,6 +43,11 @@ public class CommunityArticleController extends BaseController {
     @Autowired
     private CommunityCommentLikeMapper communityCommentLikeMapper;
 
+    @Autowired
+    private CommunityUserCircleMapper communityUserCircleMapper;
+    @Autowired
+    private CommunityCircleMapper communityCircleMapper;
+
 
     /**
      * 获取文章列表信息
@@ -205,10 +210,66 @@ public class CommunityArticleController extends BaseController {
     @GetMapping("/circle")
     //@Anonymous
     public AjaxResult circle(@RequestParam("classId") String classId) {
-        if (Strings.isBlank("classId")) {
+        if (Strings.isBlank(classId)) {
             return AjaxResult.error("板块信息有误!");
         }
-        List<CommunityCircle> communityCircles = communityArticleService.selectCommunityCircleList(classId);
+        List<CommunityCircleVo> communityCircles = communityArticleService.selectCommunityCircleList(classId);
+        return AjaxResult.success(communityCircles);
+    }
+
+    @ApiOperation("我的圈子")
+    @GetMapping("/myCircle")
+    //@Anonymous
+    public AjaxResult myCircle() {
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+        List<CommunityUserCircle> communityUserCircles = communityUserCircleMapper.selectList(new QueryWrapper<CommunityUserCircle>()
+                .eq("user_id", userId)
+                .eq("is_delete", 0));
+
+        List<Long> circleIds = new ArrayList<>();
+        for (CommunityUserCircle communityUserCircle : communityUserCircles) {
+            circleIds.add(communityUserCircle.getCircleId());
+        }
+        List<CommunityCircle> communityCircles = communityCircleMapper.selectBatchIds(circleIds);
         return AjaxResult.success(communityCircles);
     }
+
+
+    @ApiOperation("收藏/取关圈子")
+    @PostMapping("/circle")
+    //@Anonymous
+    public AjaxResult circle(@RequestBody CommunityUserCircle communityUserCircle) {
+        if (Objects.isNull(communityUserCircle.getCircleId())) {
+            return AjaxResult.error("关注圈子异常,请刷新页面重试!");
+        }
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+        CommunityUserCircle userCircle = communityUserCircleMapper
+                .selectOne(new QueryWrapper<CommunityUserCircle>()
+                        .eq("circle_id", communityUserCircle.getCircleId())
+                        .eq("user_id", userId)
+                        .eq("is_delete", 0));
+        String msg = "";
+        if (Objects.isNull(userCircle) || Objects.isNull(userCircle.getId())) {
+            //如果未找到数据,则进行关注
+            userCircle = new CommunityUserCircle();
+            userCircle.setCircleId(communityUserCircle.getCircleId());
+            userCircle.setUserId(userId);
+            userCircle.setCreateBy(userId);
+            userCircle.setUpdateBy(userId);
+            userCircle.setCreateTime(DateUtils.parseDate(DateUtils.getTime()));
+            userCircle.setUpdateTime(DateUtils.parseDate(DateUtils.getTime()));
+            communityUserCircleMapper.insert(userCircle);
+            msg = "已关注";
+        } else {
+            //更新删除标识
+            userCircle.setDelete(true);
+            userCircle.setCreateBy(userId);
+            userCircle.setUpdateBy(userId);
+            userCircle.setCreateTime(DateUtils.parseDate(DateUtils.getTime()));
+            userCircle.setUpdateTime(DateUtils.parseDate(DateUtils.getTime()));
+            communityUserCircleMapper.updateById(userCircle);
+            msg = "已取关";
+        }
+        return AjaxResult.success(msg);
+    }
 }

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

@@ -0,0 +1,67 @@
+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 io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用户关注圈子
+ *
+ * @TableName community_user_circle
+ */
+@Data
+@TableName("community_user_circle")
+public class CommunityUserCircle implements Serializable {
+
+    /**
+     * 唯一id
+     */
+    @NotNull(message = "[唯一id]不能为空")
+    @ApiModelProperty("唯一id")
+    @TableId("id")
+    private Long id;
+    /**
+     * 用户id
+     */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+     * 圈子id
+     */
+    @ApiModelProperty("圈子id")
+    private Long circleId;
+
+    /**
+     * 是否删除
+     */
+    @ApiModelProperty("是否删除")
+    private boolean isDelete;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty("创建人")
+    private Long createBy;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty("更新人")
+    private Long updateBy;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+}

+ 9 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityUserCircleMapper.java

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

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

@@ -5,10 +5,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.generator.domain.Community.*;
 import com.ruoyi.generator.mapper.community.*;
 import com.ruoyi.generator.vo.CommunityArticleCommentVo;
 import com.ruoyi.generator.vo.CommunityArticleVo;
+import com.ruoyi.generator.vo.CommunityCircleVo;
 import com.ruoyi.system.mapper.SysUserMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -65,6 +67,9 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
     @Autowired
     private CommunityCircleMapper communityCircleMapper;
 
+    @Autowired
+    private CommunityUserCircleMapper communityUserCircleMapper;
+
     /**
      * 查询文章列表
      *
@@ -286,12 +291,36 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
      * @return 圈子列表信息
      */
     @Override
-    public List<CommunityCircle> selectCommunityCircleList(String classId) {
-        List<CommunityClassCircle> classes = communityClassCircleMapper.selectList(new QueryWrapper<CommunityClassCircle>().eq("class_id", classId));
+    public List<CommunityCircleVo> selectCommunityCircleList(String classId) {
+        List<CommunityClassCircle> classes = communityClassCircleMapper
+                .selectList(new QueryWrapper<CommunityClassCircle>()
+                        .eq("class_id", classId));
         List<Long> circleIds = new ArrayList<>();
         for (CommunityClassCircle aClass : classes) {
             circleIds.add(aClass.getCircleId());
         }
-        return communityCircleMapper.selectBatchIds(circleIds);
+        List<CommunityCircle> communityCircles = communityCircleMapper.selectBatchIds(circleIds);
+        //复制到Vo对象中
+        List<CommunityCircleVo> communityCircleVos = new ArrayList<>();
+        CommunityCircleVo communityCircleVo = null;
+        for (CommunityCircle communityCircle : communityCircles) {
+            communityCircleVo = new CommunityCircleVo();
+            BeanUtils.copyProperties(communityCircle, communityCircleVo);
+
+            //获取当前用户是否有关注这些圈子
+            CommunityUserCircle communityUserCircles = communityUserCircleMapper
+                    .selectOne(new QueryWrapper<CommunityUserCircle>()
+                            .eq("circle_id", communityCircle.getId())
+                            .eq("user_id", SecurityUtils.getLoginUser().getUserId())
+                            .eq("is_delete", 0));
+            if (Objects.isNull(communityUserCircles) || Objects.isNull(communityUserCircles.getId())) {
+                //没找到关注数据,则设为false,反之则true
+                communityCircleVo.setLike(false);
+            } else {
+                communityCircleVo.setLike(true);
+            }
+            communityCircleVos.add(communityCircleVo);
+        }
+        return communityCircleVos;
     }
 }

+ 2 - 1
ruoyi-generator/src/main/java/com/ruoyi/generator/service/ICommunityArticleService.java

@@ -3,6 +3,7 @@ package com.ruoyi.generator.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.generator.domain.Community.*;
 import com.ruoyi.generator.vo.CommunityArticleVo;
+import com.ruoyi.generator.vo.CommunityCircleVo;
 
 import java.text.ParseException;
 import java.util.List;
@@ -88,5 +89,5 @@ public interface ICommunityArticleService extends IService<CommunityArticle> {
      * @param classId 板块id
      * @return 圈子列表信息
      */
-    List<CommunityCircle> selectCommunityCircleList(String classId);
+    List<CommunityCircleVo> selectCommunityCircleList(String classId);
 }

+ 70 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/vo/CommunityCircleVo.java

@@ -0,0 +1,70 @@
+package com.ruoyi.generator.vo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* 社区圈子
+* @TableName community_circle
+*/
+@Data
+@TableName("community_circle")
+public class CommunityCircleVo implements Serializable {
+
+    /**
+    * 唯一id
+    */
+    @NotNull(message="[唯一id]不能为空")
+    @ApiModelProperty("唯一id")
+    @TableId("id")
+    private Long id;
+    /**
+    * 圈子名称
+    */
+    @Size(max= 50,message="编码长度不能超过50")
+    @ApiModelProperty("圈子名称")
+    @Length(max= 50,message="编码长度不能超过50")
+    private String circleName;
+    /**
+    * 热度
+    */
+    @ApiModelProperty("热度")
+    private Integer hot;
+    /**
+     * 关注
+     */
+    @ApiModelProperty("关注")
+    private boolean isLike;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createBy;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+    * 更新人
+    */
+    @ApiModelProperty("更新人")
+    private Long updateBy;
+    /**
+    * 更新时间
+    */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("更新时间")
+    private Date updateTime;
+
+}

+ 0 - 1
ruoyi-generator/src/main/resources/mapper/community/ArticleMapper.xml

@@ -129,7 +129,6 @@
         left join community_article_images b on a.id = b.article_id
         left join sys_user c on a.user_id = c.user_id
         left join community_article_comment d on d.article_id = a.id
-        left join community_circle e on e.id = a.circle_id
         <where>
             <if test="communityArticle.id != null and communityArticle.id != ''">
                 AND a.id = #{communityArticle.id}