Selaa lähdekoodia

订阅和取消订阅新增自己创建的合集不可加入功能,查询合集下文章信息新增表头

fangqing 5 kuukautta sitten
vanhempi
sitoutus
b8cbf55e03

+ 8 - 3
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityArticleController.java

@@ -913,17 +913,18 @@ public class CommunityArticleController extends BaseController {
      */
     @ApiOperation("查询用户合集")
     @GetMapping("/getCollection")
-    public AjaxResult getCollection(Long collectionId) {
+    public AjaxResult getCollection(Long collectionId,Long  searchType) {
         if (Objects.isNull(collectionId)) {
             return AjaxResult.error("合集不存在!");
         }
         List<CommunityCollectionArticleVo> collectionArticleVos = null;
+        JSONArray jsonArray;
         try {
-            collectionArticleVos = communityCollectionService.selectArticleInfoInCollection(collectionId);
+           jsonArray = communityCollectionService.selectArticleInfoInCollection(collectionId,searchType);
         } catch (Exception e) {
             throw new ProjectException();
         }
-        return AjaxResult.success(collectionArticleVos);
+        return AjaxResult.success(jsonArray);
     }
 
     /**
@@ -963,6 +964,10 @@ public class CommunityArticleController extends BaseController {
         CommunityCollectionUser communityCollectionUser = null;
         try {
             communityCollectionUser = communityCollectionUserService.subscribeCollection(collectionUser);
+
+            if (communityCollectionUser == null){
+                return AjaxResult.success("不能关注自己创建的合集/传参有误");
+            }
         } catch (Exception e) {
             throw new ProjectException();
         }

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

@@ -84,4 +84,10 @@ public class CommunityCollection implements Serializable {
     @ApiModelProperty("更新时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
+
+    /**
+     * 热度
+     */
+    @ApiModelProperty("热度")
+    private Long heat;
 }

+ 84 - 3
ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityCollectionServiceImpl.java

@@ -1,5 +1,7 @@
 package com.ruoyi.generator.service;
 
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -12,7 +14,9 @@ import com.ruoyi.generator.vo.CommunityCollectionVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -39,6 +43,8 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
 
     @Autowired
     private CommunityCollectionArticleMapper communityCollectionArticleMapper;
+    @Autowired
+    private CommunityCollectionUserMapper communityCollectionUserMapper;
 
     /**
      * 添加文章到用户合集中
@@ -79,7 +85,62 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
      * @return 文章信息
      */
     @Override
-    public List<CommunityCollectionArticleVo> selectArticleInfoInCollection(Long collectionId) {
+    public JSONArray selectArticleInfoInCollection(Long collectionId,Long  searchType) {
+
+        JSONArray jsonArray = new JSONArray();
+        //查询合集表
+        CommunityCollection communityCollection = communityCollectionMapper.selectOne(new QueryWrapper<CommunityCollection>()
+                .eq("id", collectionId)
+                .and((wrapper) -> {
+                    wrapper.ne("is_delete", true)
+                            .or()
+                            .isNull("is_delete");
+                }));
+
+        if (communityCollection == null){
+            return null;
+        }
+        //没调用这一个接口 热度 + 1
+        UpdateWrapper<CommunityCollection> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("id", collectionId)
+                .and(w -> w.ne("is_delete", true).or().isNull("is_delete"));
+        updateWrapper.setSql("heat = IFNULL(heat, 0) + 1");
+        communityCollectionMapper.update(null, updateWrapper);
+
+        //一级层级
+        JSONObject collectionObject = new JSONObject();
+        collectionObject.put("CollectionName",communityCollection.getCollectionName());
+        Date updateTime = communityCollection.getUpdateTime();
+        if (updateTime == null){
+            updateTime = communityCollection.getCreateTime();
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String formattedUpdateTime = sdf.format(updateTime);
+        collectionObject.put("CreateBy",communityCollection.getCreateBy());
+        collectionObject.put("updateTime",formattedUpdateTime);
+        collectionObject.put("followNumber", communityCollectionUserMapper.selectList(new QueryWrapper<CommunityCollectionUser>().eq("collection_id",collectionId).and((wrapper) -> {
+            wrapper.ne("is_delete", true)
+                    .or()
+                    .isNull("is_delete");
+        })).size());
+        collectionObject.put("heat",communityCollection.getHeat());
+
+        //查询当前用户是否订阅
+        CommunityCollectionUser communityCollectionUser = communityCollectionUserMapper.selectOne(new QueryWrapper<CommunityCollectionUser>()
+                .eq("collection_id", collectionId)
+                .eq("user_id", SecurityUtils.getUserId())
+                .and((wrapper) -> {
+                    wrapper.ne("is_delete", true)
+                            .or()
+                            .isNull("is_delete");
+                }));
+        boolean follow = false;
+        if (communityCollectionUser != null){
+            follow = true;
+        }
+        collectionObject.put("follow",follow);
+
+        //查询合集关联文章表
         List<Object> articleIdsObj = collectionArticleMapper
                 .selectObjs(new QueryWrapper<CommunityCollectionArticle>()
                         .select("article_id")
@@ -93,13 +154,30 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
         if (articleIdsObj.isEmpty()) {
             return null;
         }
+        collectionObject.put("articleNumber", articleIdsObj.size());
+
 
         //转换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<CommunityArticle> communityArticles;
+
+        if (searchType == 1) {
+            // 查询最新的文章
+            communityArticles = communityArticleMapper.selectList(
+                    new QueryWrapper<CommunityArticle>().in("id", articleIds).orderByDesc("create_time"));
+        } else{
+            // 查询最早的文章
+            communityArticles = communityArticleMapper.selectList(
+                    new QueryWrapper<CommunityArticle>().in("id", articleIds).orderByAsc("create_time"));
+        }
+
+
+
 
         List<CommunityCollectionArticleVo> collectionArticleVos = new ArrayList<>();
         CommunityCollectionArticleVo collectionArticleVo = null;
@@ -126,7 +204,10 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
 
             collectionArticleVos.add(collectionArticleVo);
         }
-        return collectionArticleVos;
+        collectionObject.put("Article",collectionArticleVos);
+        jsonArray.add(collectionObject);
+
+        return jsonArray;
     }
 
     /**

+ 20 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityCollectionUserImpl.java

@@ -3,6 +3,7 @@ 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.CommunityCollection;
 import com.ruoyi.generator.domain.Community.CommunityCollectionUser;
 import com.ruoyi.generator.domain.Community.CommunityTagBlock;
 import com.ruoyi.generator.mapper.community.CommunityCollectionMapper;
@@ -18,8 +19,27 @@ public class CommunityCollectionUserImpl extends ServiceImpl<CommunityCollection
     @Autowired
     private CommunityCollectionUserMapper communityCollectionUserMapper;
 
+    @Autowired
+    private CommunityCollectionMapper communityCollectionMapper;
+
     @Override
     public CommunityCollectionUser subscribeCollection(CommunityCollectionUser communityCollectionUser) {
+
+        //不能关注自己创建的合集
+        CommunityCollection communityCollection = communityCollectionMapper.selectOne(new QueryWrapper<CommunityCollection>()
+                .eq("id", communityCollectionUser.getCollectionId())
+                .eq("create_by", communityCollectionUser.getUserId())
+                .and((wrapper) -> {
+                    wrapper.ne("is_delete", true)
+                            .or()
+                            .isNull("is_delete");
+                }));
+
+        if (communityCollection != null){
+            return  null;
+        }
+
+
         CommunityCollectionUser collectionUser = communityCollectionUserMapper.selectOne(new QueryWrapper<CommunityCollectionUser>()
                 .eq("user_id", communityCollectionUser.getUserId())
                 .eq("collection_id", communityCollectionUser.getCollectionId()));

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

@@ -1,5 +1,6 @@
 package com.ruoyi.generator.service;
 
+import com.alibaba.fastjson2.JSONArray;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.generator.domain.Community.CommunityCollection;
 import com.ruoyi.generator.domain.Community.CommunityCollectionArticle;
@@ -28,7 +29,7 @@ public interface ICommunityCollectionService extends IService<CommunityCollectio
      * @param collectionId 合集id
      * @return 文章信息
      */
-    List<CommunityCollectionArticleVo> selectArticleInfoInCollection(Long collectionId);
+    JSONArray selectArticleInfoInCollection(Long collectionId,Long searchType);
 
     /**
      * 删除合集