瀏覽代碼

新增合集功能

fangzhen 7 月之前
父節點
當前提交
dcf51f996f

+ 7 - 6
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java

@@ -1,9 +1,9 @@
 package com.ruoyi.common.core.domain;
 
+import com.ruoyi.common.constant.HttpStatus;
+
 import java.util.HashMap;
 import java.util.Objects;
-import com.ruoyi.common.constant.HttpStatus;
-import com.ruoyi.common.utils.StringUtils;
 
 /**
  * 操作消息提醒
@@ -53,10 +53,11 @@ public class AjaxResult extends HashMap<String, Object>
     {
         super.put(CODE_TAG, code);
         super.put(MSG_TAG, msg);
-        if (StringUtils.isNotNull(data))
-        {
-            super.put(DATA_TAG, data);
-        }
+//        if (StringUtils.isNotNull(data))
+//        {
+//            super.put(DATA_TAG, data);
+//        }
+        super.put(DATA_TAG, data);
     }
 
     /**

+ 82 - 1
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityArticleController.java

@@ -11,8 +11,10 @@ import com.ruoyi.common.utils.ServletUtils;
 import com.ruoyi.generator.domain.Community.*;
 import com.ruoyi.generator.mapper.community.*;
 import com.ruoyi.generator.service.ICommunityArticleService;
+import com.ruoyi.generator.service.ICommunityCollectionService;
 import com.ruoyi.generator.vo.CommunityArticleVo;
 import com.ruoyi.generator.vo.CommunityCircleVo;
+import com.ruoyi.generator.vo.CommunityCollectionArticleVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.logging.log4j.util.Strings;
@@ -53,9 +55,12 @@ public class CommunityArticleController extends BaseController {
 
     @Autowired
     private CommunityClassCircleMapper communityClassCircleMapper;
+
     @Autowired
     private CommunityUserInfoMapper communityUserInfoMapper;
 
+    @Autowired
+    private ICommunityCollectionService communityCollectionService;
 
     /**
      * 获取文章列表信息
@@ -277,7 +282,7 @@ public class CommunityArticleController extends BaseController {
         if (!circleIds.isEmpty()) {
             communityCircles = communityCircleMapper.selectBatchIds(circleIds);
         }
-        return AjaxResult.success(communityCircles);
+        return AjaxResult.success("获取成功!", communityCircles);
     }
 
 
@@ -392,4 +397,80 @@ public class CommunityArticleController extends BaseController {
         communityUserInfoMapper.updateById(communityUserInfo);
         return AjaxResult.success("背景图片上传成功!");
     }
+
+    /**
+     * 用户新增合集
+     *
+     * @param communityCollection 新增合集数据
+     * @return 是否成功
+     */
+    @ApiOperation("用户新增合集")
+    @PostMapping("/createCollection")
+    public AjaxResult createCollection(@RequestBody CommunityCollection communityCollection) {
+
+        if (Objects.isNull(communityCollection.getCollectionName())) {
+            return AjaxResult.error("合集名称不能为空");
+        }
+
+        if (Objects.isNull(communityCollection.getImages())) {
+            return AjaxResult.error("合集图片不能为空");
+        }
+
+        CommunityCollection collection = communityCollectionService
+                .getOne(new QueryWrapper<CommunityCollection>()
+                        .eq("collection_name", communityCollection.getCollectionName())
+                        .eq("user_id", SecurityUtils.getLoginUser().getUserId()));
+
+        if (!Objects.isNull(collection)) {
+            return AjaxResult.error("合集名称不能重复!");
+        }
+
+        communityCollection.setUserId(SecurityUtils.getLoginUser().getUserId());
+        communityCollection.setCreateBy(SecurityUtils.getLoginUser().getUserId());
+        communityCollection.setCreateTime(DateUtils.parseDate(DateUtils.getTime()));
+        communityCollectionService.save(communityCollection);
+
+        return AjaxResult.success(communityCollection);
+    }
+
+    /**
+     * 用户新增合集
+     *
+     * @param collectionArticle 用户新增合集
+     * @return 是否成功
+     */
+    @ApiOperation("合集内新增文章")
+    @PostMapping("/addArticleToCollection")
+    public AjaxResult addArticleToCollection(@RequestBody CommunityCollectionArticle collectionArticle) {
+        if (Objects.isNull(collectionArticle.getArticleId())) {
+            return AjaxResult.error("未选中文章或该文章不存在!");
+        }
+
+        if (Objects.isNull(collectionArticle.getCollectionId())) {
+            return AjaxResult.error("该合集不存在!");
+        }
+
+        collectionArticle.setCreateBy(SecurityUtils.getLoginUser().getUserId());
+        collectionArticle.setCreateTime(DateUtils.parseDate(DateUtils.getTime()));
+        communityCollectionService.addArticleToCollection(collectionArticle);
+
+        return AjaxResult.success("加入合集成功!");
+    }
+
+    /**
+     * 查询合集下文章信息
+     *
+     * @param collectionId 合集id
+     * @return 合集下文章信息
+     */
+    @ApiOperation("查询用户合集")
+    @GetMapping("/getCollection")
+    public AjaxResult getCollection(Long collectionId) {
+        if (Objects.isNull(collectionId)) {
+            return AjaxResult.error("合集不存在!");
+        }
+
+        List<CommunityCollectionArticleVo> collectionArticleVos = communityCollectionService.selectArticleInfoInCollection(collectionId);
+        return AjaxResult.success(collectionArticleVos);
+    }
 }

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

@@ -2,6 +2,7 @@ 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 org.hibernate.validator.constraints.Length;
@@ -66,10 +67,12 @@ public class CommunityCollection implements Serializable {
     * 创建时间
     */
     @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
     /**
     * 更新时间
     */
     @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 }

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

@@ -0,0 +1,60 @@
+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_collection_article
+*/
+@Data
+@TableName("community_collection_article")
+public class CommunityCollectionArticle implements Serializable {
+
+    /**
+    * 唯一id
+    */
+    @NotNull(message="[唯一id]不能为空")
+    @ApiModelProperty("唯一id")
+    @TableId("id")
+    private Long id;
+    /**
+    * 合集id
+    */
+    @ApiModelProperty("合集id")
+    private Long collectionId;
+    /**
+    * 文章id
+    */
+    @ApiModelProperty("文章id")
+    private Long articleId;
+    /**
+    * 创建人
+    */
+    @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/CommunityCollectionArticleMapper.java

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

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

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

+ 90 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityCollectionServiceImpl.java

@@ -0,0 +1,90 @@
+package com.ruoyi.generator.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.generator.domain.Community.*;
+import com.ruoyi.generator.mapper.community.*;
+import com.ruoyi.generator.vo.CommunityCollectionArticleVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollectionMapper, CommunityCollection> implements ICommunityCollectionService {
+
+    @Autowired
+    private CommunityCollectionArticleMapper collectionArticleMapper;
+
+    @Autowired
+    private CommunityArticleMapper communityArticleMapper;
+
+    @Autowired
+    private CommunityLikeMapper communityLikeMapper;
+
+    @Autowired
+    private CommunityArticleCommentMapper communityArticleCommentMapper;
+
+    @Autowired
+    private CommunityArticleImagesMapper communityArticleImagesMapper;
+
+    /**
+     * 添加文章到用户合集中
+     *
+     * @param collectionArticle 合集列表
+     */
+    @Override
+    public void addArticleToCollection(CommunityCollectionArticle collectionArticle) {
+        collectionArticleMapper.insert(collectionArticle);
+    }
+
+    /**
+     * 根据合集id,查询合集下所有文章信息
+     *
+     * @param collectionId 合集id
+     * @return 文章信息
+     */
+    @Override
+    public List<CommunityCollectionArticleVo> selectArticleInfoInCollection(Long collectionId) {
+        List<Object> articleIdsObj = collectionArticleMapper
+                .selectObjs(new QueryWrapper<CommunityCollectionArticle>()
+                        .select("article_id")
+                        .eq("collection_id", collectionId));
+        //转换object为long
+        List<Long> articleIds = articleIdsObj.stream()
+                .filter(item -> item instanceof Long)
+                .map(item -> (Long) item)
+                .collect(Collectors.toList());
+        List<CommunityArticle> communityArticles = communityArticleMapper.selectBatchIds(articleIds);
+
+        List<CommunityCollectionArticleVo> collectionArticleVos = new ArrayList<>();
+        CommunityCollectionArticleVo collectionArticleVo = null;
+        for (CommunityArticle communityArticle : communityArticles) {
+            collectionArticleVo = new CommunityCollectionArticleVo();
+            collectionArticleVo.setArticleId(communityArticle.getId());
+            collectionArticleVo.setCollectionId(collectionId);
+            collectionArticleVo.setTitle(communityArticle.getTitle());
+            collectionArticleVo.setArticleCreateTime(communityArticle.getCreateTime());
+
+
+            //设置用户点赞数
+            int likeCount = communityLikeMapper.selectCount(new QueryWrapper<CommunityLike>().eq("article_id", communityArticle.getId())).intValue();
+            collectionArticleVo.setLikeCount(likeCount);
+            //设置用户评论数
+            int commentCount = communityArticleCommentMapper.selectCount(new QueryWrapper<CommunityArticleComment>().eq("article_id", communityArticle.getId())).intValue();
+            collectionArticleVo.setCommentCount(commentCount);
+            //设置文章封面
+            List<CommunityArticleImages> articleImages = communityArticleImagesMapper.selectList(new QueryWrapper<CommunityArticleImages>()
+                    .select("image_url")
+                    .eq("article_id", communityArticle.getId()));
+            if (!articleImages.isEmpty()) {
+                collectionArticleVo.setImageUrl(articleImages.get(0).getImageUrl());
+            }
+
+            collectionArticleVos.add(collectionArticleVo);
+        }
+        return collectionArticleVos;
+    }
+}

+ 24 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/service/ICommunityCollectionService.java

@@ -0,0 +1,24 @@
+package com.ruoyi.generator.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.generator.domain.Community.CommunityCollection;
+import com.ruoyi.generator.domain.Community.CommunityCollectionArticle;
+import com.ruoyi.generator.vo.CommunityCollectionArticleVo;
+
+import java.util.List;
+
+public interface ICommunityCollectionService extends IService<CommunityCollection> {
+
+    /**
+     * 添加文章到用户合集中
+     * @param collectionArticle 合集列表
+     */
+    void addArticleToCollection(CommunityCollectionArticle collectionArticle);
+
+    /**
+     * 根据合集id,查询合集下所有文章信息
+     * @param collectionId 合集id
+     * @return 文章信息
+     */
+    List<CommunityCollectionArticleVo> selectArticleInfoInCollection(Long collectionId);
+}

+ 87 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/vo/CommunityCollectionArticleVo.java

@@ -0,0 +1,87 @@
+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 javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* 合集关联文章
+* @TableName community_collection_article
+*/
+@Data
+@TableName("community_collection_article")
+public class CommunityCollectionArticleVo implements Serializable {
+
+    /**
+    * 唯一id
+    */
+    @NotNull(message="[唯一id]不能为空")
+    @ApiModelProperty("唯一id")
+    @TableId("id")
+    private Long id;
+    /**
+    * 合集id
+    */
+    @ApiModelProperty("合集id")
+    private Long collectionId;
+    /**
+    * 文章id
+    */
+    @ApiModelProperty("文章id")
+    private Long articleId;
+    /**
+     * 文章标题
+     */
+    @ApiModelProperty("文章标题")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String title;
+    /**
+     * 文章点赞数
+     */
+    @ApiModelProperty("文章点赞数")
+    private int likeCount;
+    /**
+     * 文章评论数
+     */
+    @ApiModelProperty("文章评论数")
+    private int commentCount;
+    /**
+     * 文章封面
+     */
+    @ApiModelProperty("文章封面")
+    private String imageUrl;
+    /**
+     * 文章创建时间
+     */
+    @ApiModelProperty("文章创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date articleCreateTime;
+    /**
+    * 创建人
+    */
+    @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;
+}