新闻管理系统评论模块,主页分类页面和标签页面设计
一.评论模块
1.实体类设计
在po包中创建Comment实体类
package com.guang.demo.po;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Data
@NoArgsConstructor
@Entity
@Table(name = "t_comment")
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nickname;
private String email;
private String content;
private String avatar;
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
@ManyToOne
private News news;
@OneToMany(mappedBy = "parentComment")
private List<Comment> replyComments = new ArrayList<>();
@ManyToOne
private Comment parentComment;
private boolean adminComment;
}
2.dao层
创建CommentRepository继承JPA
package com.guang.demo.dao;
import com.guang.demo.po.Comment;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface CommentRepository extends JpaRepository<Comment,Long> {
List<Comment> findByNewsIdAndParentCommentNull(Long newId, Sort sort);
}
3.service层
在service层中创建CommentService,定义功能实现方法:
package com.guang.demo.service;
import com.guang.demo.po.Comment;
import java.util.List;
public interface CommentService {
//根据新闻id查询该新闻下的多有评论
List<Comment> listCommentByNewId(Long newId);
//发布保存评论
Comment saveComment(Comment comment);
}
创建CommentServiceImpl,实现CommentService中的方法
package com.guang.demo.service;
import com.guang.demo.dao.CommentRepository;
import com.guang.demo.po.Comment;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class CommentServiceImpl implements CommentService {
@Autowired
private CommentRepository commentRepository;
@Override
public List<Comment> listCommentByNewId(Long newId) {
Sort sort = Sort.by("createTime");
List<Comment> comments = commentRepository.findByNewsIdAndParentCommentNull(newId, sort);
return eachComment(comments);
}
private List<Comment> eachComment(List<Comment> comments) {
List<Comment> commentsView = new ArrayList<