Browse Source

新增合集功能

fangzhen 7 tháng trước cách đây
mục cha
commit
3a7107238e

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

@@ -19,6 +19,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.logging.log4j.util.Strings;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import java.text.ParseException;
@@ -80,6 +81,7 @@ public class CommunityArticleController extends BaseController {
      */
     @ApiOperation("发布文章")
     @PostMapping("/article")
+    @Transactional
     //@Anonymous
     public AjaxResult article(@RequestBody CommunityArticle communityArticle) {
         communityArticleService.insertCommunityArticle(communityArticle);
@@ -110,6 +112,7 @@ public class CommunityArticleController extends BaseController {
 
     @ApiOperation("文章评价")
     @PostMapping("/comment")
+    @Transactional
     public AjaxResult comment(@RequestBody CommunityArticleComment communityArticleComment) throws ParseException {
         if (null == communityArticleComment.getArticleId()) {
             return AjaxResult.error("文章不存在或异常!");
@@ -127,6 +130,7 @@ public class CommunityArticleController extends BaseController {
 
     @ApiOperation("文章评价")
     @DeleteMapping("/comment")
+    @Transactional
     public AjaxResult deleteComment(@RequestBody CommunityArticleComment communityArticleComment) {
 //        if (null == communityArticleComment.getArticleId()) {
 //            return AjaxResult.error("文章不存在或异常!");
@@ -151,6 +155,7 @@ public class CommunityArticleController extends BaseController {
      */
     @ApiOperation("文章点赞")
     @PostMapping("/like")
+    @Transactional
     //@Anonymous
     public AjaxResult like(@RequestBody CommunityLike communityLike) {
         if (Objects.isNull(communityLike.getArticleId()) || Objects.isNull(communityLike.getUserId())) {
@@ -186,6 +191,7 @@ public class CommunityArticleController extends BaseController {
      */
     @ApiOperation("文章收藏")
     @PostMapping("/collect")
+    @Transactional
     //@Anonymous
     public AjaxResult collect(@RequestBody CommunityArticleCollect communityArticleCollect) {
         if (Objects.isNull(communityArticleCollect.getArticleId()) || Objects.isNull(communityArticleCollect.getUserId())) {
@@ -217,6 +223,7 @@ public class CommunityArticleController extends BaseController {
      */
     @ApiOperation("评论点赞")
     @PostMapping("/commentLike")
+    @Transactional
     //@Anonymous
     public AjaxResult commentLike(@RequestBody CommunityCommentLike commentLike) {
         if (Objects.isNull(commentLike.getCommentId())) {
@@ -288,6 +295,7 @@ public class CommunityArticleController extends BaseController {
 
     @ApiOperation("收藏/取关圈子")
     @PostMapping("/circle")
+    @Transactional
     //@Anonymous
     public AjaxResult circle(@RequestBody CommunityUserCircle communityUserCircle) {
         if (Objects.isNull(communityUserCircle.getCircleId())) {
@@ -333,6 +341,7 @@ public class CommunityArticleController extends BaseController {
 
     @ApiOperation("关注/取关用户")
     @PostMapping("/likeUser")
+    @Transactional
     public AjaxResult userLike(@RequestParam("likeUserId") Long likeUserId) {
         if (Objects.isNull(likeUserId)) {
             return AjaxResult.error("参数失效!");
@@ -368,6 +377,12 @@ public class CommunityArticleController extends BaseController {
         return AjaxResult.success(communityArticleService.selectUserFansList(SecurityUtils.getLoginUser().getUserId()));
     }
 
+    @ApiOperation("互相关注列表")
+    @GetMapping("/mutualAttention")
+    public AjaxResult mutualAttention() {
+        return AjaxResult.success(communityArticleService.selectMutualAttention(SecurityUtils.getLoginUser().getUserId()));
+    }
+
     @ApiOperation("发送用户验证码")
     @GetMapping("/sendSms")
     //todo
@@ -383,6 +398,7 @@ public class CommunityArticleController extends BaseController {
      */
     @ApiOperation("更新用户背景图片")
     @PostMapping("/uploadBackImage")
+    @Transactional
     public AjaxResult uploadBackImage(@RequestParam("backImage") String backImage) {
         if (backImage == null) {
             return AjaxResult.error("背景图不能为空");
@@ -398,6 +414,27 @@ public class CommunityArticleController extends BaseController {
         return AjaxResult.success("背景图片上传成功!");
     }
 
+    /**
+     * 用户合集
+     *
+     * @return 是否成功
+     */
+    @ApiOperation("用户合集")
+    @GetMapping("/userCollection")
+    public AjaxResult createCollection(Long userId) {
+        if (Objects.isNull(userId)) {
+            return AjaxResult.error("参数异常!");
+        }
+
+        List<CommunityCollection> collections = communityCollectionService.list(new QueryWrapper<CommunityCollection>()
+                .eq("user_id", userId)
+                .ne("is_delete", true)
+                .or()
+                .isNull("is_delete"));
+        return AjaxResult.success(collections);
+    }
+
+
     /**
      * 用户新增合集
      *
@@ -406,6 +443,7 @@ public class CommunityArticleController extends BaseController {
      */
     @ApiOperation("用户新增合集")
     @PostMapping("/createCollection")
+    @Transactional
     public AjaxResult createCollection(@RequestBody CommunityCollection communityCollection) {
 
         if (Objects.isNull(communityCollection.getCollectionName())) {
@@ -419,7 +457,10 @@ public class CommunityArticleController extends BaseController {
         CommunityCollection collection = communityCollectionService
                 .getOne(new QueryWrapper<CommunityCollection>()
                         .eq("collection_name", communityCollection.getCollectionName())
-                        .eq("user_id", SecurityUtils.getLoginUser().getUserId()));
+                        .eq("user_id", SecurityUtils.getLoginUser().getUserId())
+                        .ne("is_delete", true)
+                        .or()
+                        .isNull("is_delete"));
 
         if (!Objects.isNull(collection)) {
             return AjaxResult.error("合集名称不能重复!");
@@ -428,26 +469,46 @@ public class CommunityArticleController extends BaseController {
         communityCollection.setUserId(SecurityUtils.getLoginUser().getUserId());
         communityCollection.setCreateBy(SecurityUtils.getLoginUser().getUserId());
         communityCollection.setCreateTime(DateUtils.parseDate(DateUtils.getTime()));
+        communityCollection.setDelete(false);
         communityCollectionService.save(communityCollection);
 
         return AjaxResult.success(communityCollection);
     }
 
     /**
-     * 用户新增合集
+     * 用户删除合集
      *
-     * @param collectionArticle 用户新增合集
+     * @param collectionId 合集id
+     * @return 是否成功
+     */
+    @ApiOperation("用户删除合集")
+    @DeleteMapping("/deleteCollection")
+    @Transactional
+    public AjaxResult deleteCollection(Long collectionId) {
+        if (Objects.isNull(collectionId)) {
+            return AjaxResult.error("参数异常!");
+        }
+
+        communityCollectionService.deleteCollectionById(collectionId);
+        return AjaxResult.success("删除成功!");
+    }
+
+    /**
+     * 合集内新增文章
+     *
+     * @param collectionArticle 合集内新增文章
      * @return 是否成功
      */
     @ApiOperation("合集内新增文章")
     @PostMapping("/addArticleToCollection")
+    @Transactional
     public AjaxResult addArticleToCollection(@RequestBody CommunityCollectionArticle collectionArticle) {
         if (Objects.isNull(collectionArticle.getArticleId())) {
-            return AjaxResult.error("未选中文章或该文章不存在!");
+            return AjaxResult.error("文章参数异常!");
         }
 
         if (Objects.isNull(collectionArticle.getCollectionId())) {
-            return AjaxResult.error("该合集不存在!");
+            return AjaxResult.error("合集参数异常!");
         }
 
         collectionArticle.setCreateBy(SecurityUtils.getLoginUser().getUserId());
@@ -457,6 +518,25 @@ public class CommunityArticleController extends BaseController {
         return AjaxResult.success("加入合集成功!");
     }
 
+    /**
+     * 合集内删除文章
+     *
+     * @param collectionId 合集id
+     * @param articleId    文章id
+     * @return 是否成功
+     */
+    @ApiOperation("合集内删除文章")
+    @DeleteMapping("/deleteArticleInCollection")
+    @Transactional
+    public AjaxResult addArticleToCollection(Long collectionId, Long articleId) {
+        if (Objects.isNull(collectionId) || Objects.isNull(articleId)) {
+            return AjaxResult.error("参数异常!");
+        }
+
+        communityCollectionService.deleteArticleToCollection(collectionId, articleId);
+        return AjaxResult.success("文章删除成功!");
+    }
+
     /**
      * 查询合集下文章信息
      *

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

@@ -53,6 +53,12 @@ public class CommunityCollection implements Serializable {
     @ApiModelProperty("封面图片地址")
     @Length(max= 255,message="编码长度不能超过255")
     private String images;
+
+    /**
+     * 是否删除
+     */
+    @ApiModelProperty("是否删除")
+    private boolean isDelete;
     /**
     * 创建人
     */

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

@@ -35,6 +35,11 @@ public class CommunityCollectionArticle implements Serializable {
     */
     @ApiModelProperty("文章id")
     private Long articleId;
+    /**
+     * 是否删除
+     */
+    @ApiModelProperty("是否删除")
+    private boolean isDelete;
     /**
     * 创建人
     */

+ 33 - 5
ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityArticleServiceImpl.java

@@ -21,10 +21,7 @@ import org.springframework.stereotype.Service;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * 业务 服务层实现
@@ -349,7 +346,7 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
         }
 
         List<CommunityCircleVo> communityCircleVos = null;
-        if(!circleIds.isEmpty()){
+        if (!circleIds.isEmpty()) {
             List<CommunityCircle> communityCircles = communityCircleMapper.selectBatchIds(circleIds);
             //复制到Vo对象中
             communityCircleVos = new ArrayList<>();
@@ -491,6 +488,37 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
         return communityUserLikeVos;
     }
 
+    /**
+     * 获取互相关注列表
+     *
+     * @param userId 登录用户id
+     * @return 获取互相关注列表
+     */
+    @Override
+    public List<CommunityUserLikeVo> selectMutualAttention(Long userId) {
+        //先查询自己关注的人
+        List<CommunityUserLikeVo> communityUserLikeVos = selectCommunityUserLikeList(userId);
+        //再查询被关注的人是否关注自己
+        List<Long> likeUserIds = new ArrayList<>();
+        for (CommunityUserLikeVo communityUserLikeVo : communityUserLikeVos) {
+            likeUserIds.add(communityUserLikeVo.getLikeUserId());
+        }
+
+        if (!likeUserIds.isEmpty()) {
+            List<CommunityUserLike> communityUserLikes = communityUserLikeMapper.selectList(new QueryWrapper<CommunityUserLike>().in("user_id", likeUserIds).eq("like_user_id", userId));
+            CommunityUserLikeVo communityUserLikeVo = null;
+            communityUserLikeVos = new ArrayList<>();
+            for (CommunityUserLike communityUserLike : communityUserLikes) {
+                communityUserLikeVo = new CommunityUserLikeVo();
+                BeanUtils.copyProperties(communityUserLike, communityUserLikeVo);
+                SysUser sysUser = sysUserMapper.selectUserById(communityUserLike.getUserId());
+                communityUserLikeVo.setUsername(sysUser.getUserName());
+                communityUserLikeVos.add(communityUserLikeVo);
+            }
+        }
+        return communityUserLikeVos;
+    }
+
     /**
      * 判断是否是视频文件
      *

+ 62 - 2
ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityCollectionServiceImpl.java

@@ -1,7 +1,10 @@
 package com.ruoyi.generator.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.generator.domain.Community.*;
 import com.ruoyi.generator.mapper.community.*;
 import com.ruoyi.generator.vo.CommunityCollectionArticleVo;
@@ -29,6 +32,10 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
 
     @Autowired
     private CommunityArticleImagesMapper communityArticleImagesMapper;
+    @Autowired
+    private CommunityCollectionMapper communityCollectionMapper;
+    @Autowired
+    private CommunityCollectionArticleMapper communityCollectionArticleMapper;
 
     /**
      * 添加文章到用户合集中
@@ -40,6 +47,27 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
         collectionArticleMapper.insert(collectionArticle);
     }
 
+    /**
+     * 删除合集中的某个文章
+     *
+     * @param collectionId 合集id
+     * @param articleId    文章id
+     */
+    @Override
+    public void deleteArticleToCollection(Long collectionId, Long articleId) {
+        //删除合集中的文章
+        CommunityCollectionArticle collectionArticle = new CommunityCollectionArticle();
+        collectionArticle.setDelete(true);
+        collectionArticle.setUpdateTime(DateUtils.parseDate(DateUtils.getTime()));
+        collectionArticle.setUpdateBy(SecurityUtils.getUserId());
+        communityCollectionArticleMapper.update(collectionArticle, new UpdateWrapper<CommunityCollectionArticle>()
+                .eq("collection_id", collectionId)
+                .eq("article_id", articleId)
+                .ne("is_delete", true)
+                .or()
+                .isNull("is_delete"));
+    }
+
     /**
      * 根据合集id,查询合集下所有文章信息
      *
@@ -51,7 +79,10 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
         List<Object> articleIdsObj = collectionArticleMapper
                 .selectObjs(new QueryWrapper<CommunityCollectionArticle>()
                         .select("article_id")
-                        .eq("collection_id", collectionId));
+                        .eq("collection_id", collectionId)
+                        .ne("is_delete", true)
+                        .or()
+                        .isNull("is_delete"));
         //转换object为long
         List<Long> articleIds = articleIdsObj.stream()
                 .filter(item -> item instanceof Long)
@@ -68,7 +99,6 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
             collectionArticleVo.setTitle(communityArticle.getTitle());
             collectionArticleVo.setArticleCreateTime(communityArticle.getCreateTime());
 
-
             //设置用户点赞数
             int likeCount = communityLikeMapper.selectCount(new QueryWrapper<CommunityLike>().eq("article_id", communityArticle.getId())).intValue();
             collectionArticleVo.setLikeCount(likeCount);
@@ -87,4 +117,34 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
         }
         return collectionArticleVos;
     }
+
+    /**
+     * 删除合集
+     *
+     * @param collectionId 合集id
+     */
+    @Override
+    public void deleteCollectionById(Long collectionId) {
+        //1.更新合集状态
+        CommunityCollection collection = communityCollectionMapper.selectOne(new QueryWrapper<CommunityCollection>()
+                .eq("id", collectionId)
+                .ne("is_delete", true)
+                .or()
+                .isNull("is_delete"));
+        collection.setDelete(true);
+        collection.setUpdateBy(SecurityUtils.getLoginUser().getUserId());
+        collection.setUpdateTime(DateUtils.parseDate(DateUtils.getTime()));
+        communityCollectionMapper.updateById(collection);
+        //2.更新合集关联的文章状态
+        List<Long> ids = communityCollectionArticleMapper.selectObjs(new QueryWrapper<CommunityCollectionArticle>()
+                .eq("collection_id", collectionId)
+                .ne("is_delete", true)
+                .or()
+                .isNull("is_delete")).stream().map(item -> (Long) item).collect(Collectors.toList());
+        CommunityCollectionArticle collectionArticle = new CommunityCollectionArticle();
+        collectionArticle.setDelete(true);
+        collectionArticle.setUpdateBy(SecurityUtils.getLoginUser().getUserId());
+        collectionArticle.setUpdateTime(DateUtils.parseDate(DateUtils.getTime()));
+        communityCollectionArticleMapper.update(collectionArticle, new UpdateWrapper<CommunityCollectionArticle>().in("id", ids));
+    }
 }

+ 8 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/service/ICommunityArticleService.java

@@ -132,4 +132,12 @@ public interface ICommunityArticleService extends IService<CommunityArticle> {
      * @return 当前用户粉丝列表
      */
     List<CommunityUserLikeVo> selectUserFansList(Long userId);
+
+    /**
+     * 获取互相关注列表
+     *
+     * @param userId 登录用户id
+     * @return 获取互相关注列表
+     */
+    List<CommunityUserLikeVo> selectMutualAttention(Long userId);
 }

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

@@ -15,10 +15,23 @@ public interface ICommunityCollectionService extends IService<CommunityCollectio
      */
     void addArticleToCollection(CommunityCollectionArticle collectionArticle);
 
+    /**
+     * 删除合集中的某个文章
+     * @param collectionId 合集id
+     * @param articleId 文章id
+     */
+    void deleteArticleToCollection(Long collectionId, Long articleId);
+
     /**
      * 根据合集id,查询合集下所有文章信息
      * @param collectionId 合集id
      * @return 文章信息
      */
     List<CommunityCollectionArticleVo> selectArticleInfoInCollection(Long collectionId);
+
+    /**
+     * 删除合集
+     * @param collectionId 合集id
+     */
+    void deleteCollectionById(Long collectionId);
 }