feat(消息): 添加消息点赞功能
- 在MessageController中添加点赞接口 - 在MessageRepository中添加点赞数更新方法 - 在IMessageService和MessageService中实现点赞逻辑 - 初始化测试数据时设置点赞数默认值为0 - 完善相关文档注释
This commit is contained in:
@@ -10,70 +10,73 @@ import org.springframework.stereotype.Repository;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository // 表明这是一个数据访问层组件,用于持久层操作
|
||||
@Repository // 表明这是一个数据访问层组件,用于持久层操作
|
||||
public interface ArticleRepository extends JpaRepository<Article, Integer> {
|
||||
/**
|
||||
* 根据文章ID查询文章信息的方法
|
||||
* 使用JPQL(Java Persistence Query Language)进行查询
|
||||
*
|
||||
* @param id 文章的唯一标识符,作为查询条件
|
||||
* @return 返回一个Optional<Article>对象,可能包含文章信息,也可能为空(如果未找到对应ID的文章)
|
||||
*/
|
||||
/**
|
||||
* 根据文章ID查询文章信息的方法
|
||||
* 使用JPQL(Java Persistence Query Language)进行查询
|
||||
*
|
||||
* @param id 文章的唯一标识符,作为查询条件
|
||||
* @return 返回一个Optional<Article>对象,可能包含文章信息,也可能为空(如果未找到对应ID的文章)
|
||||
*/
|
||||
@Query("SELECT a FROM Article a WHERE a.articleid = :id")
|
||||
Optional<Article> findById(@Param("id") Integer id);
|
||||
|
||||
/**
|
||||
* 根据标题查询文章列表
|
||||
*
|
||||
* @param title 文章标题的一部分,用于模糊查询
|
||||
* @return 返回符合查询条件的文章列表
|
||||
*/
|
||||
@Query("SELECT a FROM Article a WHERE a.title LIKE %:title%")
|
||||
List<Article> findByTitle(@Param("title") String title);
|
||||
/**
|
||||
* 根据文章ID查询已发布的文章
|
||||
* 使用JPQL查询语句,只查询状态为1(已发布)且指定ID的文章
|
||||
*
|
||||
* @return 返回符合查询条件的文章列表
|
||||
*/
|
||||
|
||||
/**
|
||||
* 根据文章ID查询已发布的文章
|
||||
* 使用JPQL查询语句,只查询状态为1(已发布)且指定ID的文章
|
||||
*
|
||||
* @return 返回符合查询条件的文章列表
|
||||
*/
|
||||
@Query("SELECT a FROM Article a WHERE a.status = 1")
|
||||
List<Article> findPublishedByAuthor();
|
||||
|
||||
/**
|
||||
* 根据分类ID查询已发布的文章列表
|
||||
* 使用JPQL查询语句,筛选状态为已发布(status=1)且指定分类(typeid)的文章
|
||||
*
|
||||
* @param attributeid 分类ID,通过@Param注解映射到查询语句中的:attributeid参数
|
||||
* @return 返回符合条件Article对象的列表
|
||||
*/
|
||||
/**
|
||||
* 根据分类ID查询已发布的文章列表
|
||||
* 使用JPQL查询语句,筛选状态为已发布(status=1)且指定分类(typeid)的文章
|
||||
*
|
||||
* @param attributeid 分类ID,通过@Param注解映射到查询语句中的:attributeid参数
|
||||
* @return 返回符合条件Article对象的列表
|
||||
*/
|
||||
@Query("SELECT a FROM Article a WHERE a.status = 1 AND a.attributeid = :attributeid")
|
||||
List<Article> findPublishedByAttribute(@Param("attributeid") Integer attributeid);
|
||||
/**
|
||||
* 根据属性ID查询最新的文章列表
|
||||
* 使用JPQL查询语句,筛选状态为已发布(status=1)且指定属性(attributeid)的文章,按创建时间降序排序
|
||||
*
|
||||
* @param attributeid 属性ID,通过@Param注解映射到查询语句中的:attributeid参数
|
||||
* @return 返回符合条件Article对象的列表,按创建时间降序排列
|
||||
*/
|
||||
|
||||
/**
|
||||
* 根据属性ID查询最新的文章列表
|
||||
* 使用JPQL查询语句,筛选状态为已发布(status=1)且指定属性(attributeid)的文章,按创建时间降序排序
|
||||
*
|
||||
* @param attributeid 属性ID,通过@Param注解映射到查询语句中的:attributeid参数
|
||||
* @return 返回符合条件Article对象的列表,按创建时间降序排列
|
||||
*/
|
||||
@Query("SELECT a FROM Article a WHERE a.status = 1 AND a.attributeid = :attributeid ORDER BY a.createdAt DESC")
|
||||
List<Article> findLatestByAttribute(@Param("attributeid") Integer attributeid);
|
||||
|
||||
/**
|
||||
* 使用@Modifying注解标记这是一个修改操作,通常用于UPDATE或DELETE语句
|
||||
* 使用@Query注解定义自定义的JPQL查询语句
|
||||
* 该查询用于将指定文章的浏览量(viewCount)增加1
|
||||
*
|
||||
* @param articleid 文章的唯一标识符,通过@Param注解将方法参数与查询参数绑定
|
||||
*/
|
||||
/**
|
||||
* 使用@Modifying注解标记这是一个修改操作,通常用于UPDATE或DELETE语句
|
||||
* 使用@Query注解定义自定义的JPQL查询语句
|
||||
* 该查询用于将指定文章的浏览量(viewCount)增加1
|
||||
*
|
||||
* @param articleid 文章的唯一标识符,通过@Param注解将方法参数与查询参数绑定
|
||||
*/
|
||||
@Modifying
|
||||
@Query("UPDATE Article a SET a.viewCount = a.viewCount + 1 WHERE a.articleid = :articleid")
|
||||
void incrementViewCount(@Param("articleid") Integer articleid);
|
||||
|
||||
|
||||
/**
|
||||
* 根据浏览量降序查询状态为1的所有文章
|
||||
* 该查询使用JPQL语句,从Article实体中选取数据
|
||||
*
|
||||
* @return 返回一个Article对象的列表,按浏览量(viewCount)降序排列
|
||||
*/
|
||||
/**
|
||||
* 根据浏览量降序查询状态为1的所有文章
|
||||
* 该查询使用JPQL语句,从Article实体中选取数据
|
||||
*
|
||||
* @return 返回一个Article对象的列表,按浏览量(viewCount)降序排列
|
||||
*/
|
||||
@Query("SELECT a FROM Article a WHERE a.status = 1 ORDER BY a.viewCount DESC")
|
||||
List<Article> findMostViewed();
|
||||
}
|
||||
|
||||
@@ -3,7 +3,9 @@ package com.qf.myafterprojecy.repository;
|
||||
import com.qf.myafterprojecy.pojo.Message;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -11,22 +13,57 @@ import java.util.List;
|
||||
public interface MessageRepository extends JpaRepository<Message, Integer> {
|
||||
|
||||
// 根据文章ID查询消息
|
||||
/**
|
||||
* 根据文章ID查询消息
|
||||
* @param articleid 文章ID
|
||||
* @return 文章下的消息列表
|
||||
*/
|
||||
List<Message> findByArticleid(Integer articleid);
|
||||
|
||||
// 查询所有父消息(回复的根消息)
|
||||
/**
|
||||
* 查询所有父消息(回复的根消息)
|
||||
* @return 根回复消息列表
|
||||
*/
|
||||
List<Message> findByParentidIsNull();
|
||||
|
||||
// 根据父消息ID查询回复
|
||||
/**
|
||||
* 根据父消息ID查询回复
|
||||
* @param parentid 父消息ID
|
||||
* @return 回复消息列表
|
||||
*/
|
||||
List<Message> findByParentid(Integer parentid);
|
||||
|
||||
// 根据昵称模糊查询消息
|
||||
/**
|
||||
* 根据昵称模糊查询消息
|
||||
* @param nickname 昵称关键词
|
||||
* @return 包含关键词的消息列表
|
||||
*/
|
||||
List<Message> findByNicknameContaining(String nickname);
|
||||
|
||||
// 查询指定文章下的所有父消息(根回复)
|
||||
@Query("SELECT m FROM Message m WHERE m.articleid = ?1 AND m.parentid IS NULL ORDER BY m.createdAt DESC")
|
||||
List<Message> findRootMessagesByArticleId(Integer articleId);
|
||||
|
||||
/**
|
||||
* 查询指定文章下的所有父消息(根回复)
|
||||
* @param articleId 文章ID
|
||||
* @return 根回复消息列表
|
||||
*/
|
||||
@Query("SELECT m FROM Message m WHERE m.articleid = :articleId AND m.parentid IS NULL ORDER BY m.createdAt DESC")
|
||||
List<Message> findRootMessagesByArticleId(@Param("articleId") Integer articleId);
|
||||
/**
|
||||
* 点赞数增加
|
||||
* @param messageId 消息ID
|
||||
*/
|
||||
|
||||
@Modifying
|
||||
@Query("UPDATE Message m SET m.likes = COALESCE(m.likes, 0) + 1 WHERE m.messageid = :messageId")
|
||||
void incrementLikes(@Param("messageId") Integer messageId);
|
||||
// 统计指定文章的评论数量
|
||||
@Query("SELECT COUNT(m) FROM Message m WHERE m.articleid = ?1")
|
||||
Long countByArticleId(Integer articleId);
|
||||
/**
|
||||
* 统计指定文章的评论数量
|
||||
* @param articleId 文章ID
|
||||
* @return 评论数量
|
||||
*/
|
||||
@Query("SELECT COUNT(m) FROM Message m WHERE m.articleid = :articleId")
|
||||
Long countByArticleId(@Param("articleId") Integer articleId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user