Ver código fonte

修复合集bug
新增合集统计文章数量和阅读量

fangzhen 7 meses atrás
pai
commit
61be766752

+ 10 - 6
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityArticleController.java

@@ -15,6 +15,7 @@ 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 com.ruoyi.generator.vo.CommunityCollectionVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.logging.log4j.util.Strings;
@@ -426,12 +427,15 @@ public class CommunityArticleController extends BaseController {
             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);
+//        List<CommunityCollection> collections = communityCollectionService.list(new QueryWrapper<CommunityCollection>()
+//                .eq("user_id", userId)
+//                .ne("is_delete", true)
+//                .or()
+//                .isNull("is_delete"));
+
+        List<CommunityCollectionVo> communityCollectionVos = communityCollectionService.selectUserCollection(userId);
+
+        return AjaxResult.success(communityCollectionVos);
     }
 
 

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

@@ -88,6 +88,12 @@ public class CommunityArticle implements Serializable {
     @ApiModelProperty("是否允许评价")
     private boolean isComment;
 
+    /**
+     * 浏览量
+     */
+    @ApiModelProperty("浏览量")
+    private long pageViews;
+
     /**
      * 创建者
      */

+ 9 - 1
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityCollectionMapper.java

@@ -2,9 +2,17 @@ package com.ruoyi.generator.mapper.community;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.generator.domain.Community.CommunityCollection;
+import com.ruoyi.generator.vo.CommunityCollectionVo;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 @Mapper
 public interface CommunityCollectionMapper extends BaseMapper<CommunityCollection> {
-    
+    /**
+     * 用户合集
+     * @param userId 用户id
+     * @return 用户合集信息
+     */
+    List<CommunityCollectionVo> selectUserCollection(Long userId);
 }

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

@@ -87,6 +87,14 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
     public List<CommunityArticleVo> selectCommunityArticleList(CommunityArticle communityArticle, int pageNum, int pageSize) {
         //找出板块下的分类
         Long classId = communityArticle.getClassId();
+        Long id = communityArticle.getId();
+        if (Objects.nonNull(id)) {
+            //获取指定文章详细内容,文章浏览量+1
+            CommunityArticle article = communityArticleMapper.selectById(id);
+            article.setPageViews(article.getPageViews() + 1);
+            communityArticleMapper.updateById(article);
+        }
+
         Long userId = SecurityUtils.getUserId();
         List<Long> circleIds = null;
         if (!Objects.isNull(classId)) {

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

@@ -8,11 +8,14 @@ import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.generator.domain.Community.*;
 import com.ruoyi.generator.mapper.community.*;
 import com.ruoyi.generator.vo.CommunityCollectionArticleVo;
+import com.ruoyi.generator.vo.CommunityCollectionVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 @Service
@@ -32,8 +35,10 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
 
     @Autowired
     private CommunityArticleImagesMapper communityArticleImagesMapper;
+
     @Autowired
     private CommunityCollectionMapper communityCollectionMapper;
+
     @Autowired
     private CommunityCollectionArticleMapper communityCollectionArticleMapper;
 
@@ -83,6 +88,11 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
                         .ne("is_delete", true)
                         .or()
                         .isNull("is_delete"));
+
+        if (articleIdsObj.isEmpty()) {
+            return null;
+        }
+
         //转换object为long
         List<Long> articleIds = articleIdsObj.stream()
                 .filter(item -> item instanceof Long)
@@ -147,4 +157,11 @@ public class CommunityCollectionServiceImpl extends ServiceImpl<CommunityCollect
         collectionArticle.setUpdateTime(DateUtils.parseDate(DateUtils.getTime()));
         communityCollectionArticleMapper.update(collectionArticle, new UpdateWrapper<CommunityCollectionArticle>().in("id", ids));
     }
+
+    @Override
+    public List<CommunityCollectionVo> selectUserCollection(Long userId) {
+        return communityCollectionMapper.selectUserCollection(userId);
+    }
+
+
 }

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

@@ -4,6 +4,7 @@ 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 com.ruoyi.generator.vo.CommunityCollectionVo;
 
 import java.util.List;
 
@@ -34,4 +35,11 @@ public interface ICommunityCollectionService extends IService<CommunityCollectio
      * @param collectionId 合集id
      */
     void deleteCollectionById(Long collectionId);
+
+    /**
+     * 用户合集
+     * @param userId 用户id
+     * @return 用户合集信息
+     */
+    List<CommunityCollectionVo> selectUserCollection(Long userId);
 }

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

@@ -89,6 +89,9 @@ public class CommunityArticleVo extends BaseEntity implements Serializable {
     @ApiModelProperty("头像地址")
     private String avatar;
 
+    @ApiModelProperty("浏览量")
+    private String pageViews;
+
 //    @ApiModelProperty("用户信息")
 //    private List<SysUser> sysUsers;
 

+ 96 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/vo/CommunityCollectionVo.java

@@ -0,0 +1,96 @@
+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_collection
+*/
+@Data
+@TableName("community_collection")
+public class CommunityCollectionVo implements Serializable {
+
+    /**
+    * 唯一id
+    */
+    @NotNull(message="[唯一id]不能为空")
+    @ApiModelProperty("唯一id")
+    @TableId("id")
+    private Long id;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+    * 合集名称
+    */
+    @Size(max= 100,message="编码长度不能超过100")
+    @ApiModelProperty("合集名称")
+    @Length(max= 100,message="编码长度不能超过100")
+    private String collectionName;
+    /**
+    * 合集简介
+    */
+    @Size(max= -1,message="编码长度不能超过-1")
+    @ApiModelProperty("合集简介")
+    @Length(max= -1,message="编码长度不能超过-1")
+    private String collectionProfile;
+    /**
+    * 封面图片地址
+    */
+    @Size(max= 255,message="编码长度不能超过255")
+    @ApiModelProperty("封面图片地址")
+    @Length(max= 255,message="编码长度不能超过255")
+    private String images;
+
+    /**
+     * 浏览量
+     */
+    @ApiModelProperty("浏览量")
+    private Long pageViews;
+
+    /**
+     * 文章数量
+     */
+    @ApiModelProperty("文章数量")
+    private Long articleCount;
+
+    /**
+     * 是否删除
+     */
+    @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;
+}

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

@@ -19,6 +19,7 @@
         <result property="nickName" column="nick_name"/>
         <result property="email" column="email"/>
         <result property="avatar" column="avatar"/>
+        <result property="pageViews" column="pageViews"/>
         <result column="images" property="imageList" javaType="java.util.List" typeHandler="com.ruoyi.common.utils.bean.JSONTypeHandler"/>
         <result column="comments" property="comments" typeHandler="com.ruoyi.common.utils.bean.JSONTypeHandler"/>
     </resultMap>
@@ -103,6 +104,7 @@
         a.title as article_title,
         a.is_comment as article_is_comment,
         a.content as article_content,
+        a.page_views as pageViews,
         a.circle_id as article_circle_id,
         a.create_by as article_create_by,
         a.create_time as article_create_time,

+ 42 - 0
ruoyi-generator/src/main/resources/mapper/community/CommunityCollectionMapper.xml

@@ -0,0 +1,42 @@
+<?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.CommunityCollectionMapper">
+    <select id="selectUserCollection" resultType="com.ruoyi.generator.vo.CommunityCollectionVo">
+        SELECT a.id,
+               a.user_id,
+               a.collection_name,
+               a.collection_profile,
+               a.images,
+               a.is_delete,
+               COUNT(b.article_id) AS articleCount, -- 计算文章数量
+               SUM(c.page_views)   AS pageViews,    -- 计算页面浏览总数
+               a.create_by,
+               a.update_by,
+               a.create_time,
+               a.update_time
+        FROM community_collection a
+                 LEFT JOIN
+             community_collection_article b
+             ON
+                 a.id = b.collection_id
+                 LEFT JOIN
+             community_article c
+             ON
+                 b.article_id = c.id
+        WHERE a.user_id = #{userId}
+          AND (a.is_delete != '1' OR a.is_delete IS NULL)
+        GROUP BY a.id,
+                 a.user_id,
+                 a.collection_name,
+                 a.collection_profile,
+                 a.images,
+                 a.is_delete,
+                 a.create_by,
+                 a.update_by,
+                 a.create_time,
+                 a.update_time;
+
+    </select>
+</mapper>