评论功能实现,包含回复评论。有思路有代码。

这里拿博客举例子

评论功能问题的描述:

可以评论博客,

评论与评论之间可以进行回复,是一个嵌套过程。

例如:

A回复了博客,B回复了A,C回复了B,以此类推。

D回复了博客,C回复了D,A回复了C,以此类推。

需要一个List装所有评论,而不是单个对象来装!

因为博客的评论是多条,每一条都可能包含子评论。

实现思路:

因为是一个套娃的过程,所以需要使用到递归。

1.找出该博客下的所有评论

2.创建用来装一级评论的list

3.遍历所有评论并找出一级评论装入List()。(parentCommentId为0说明是一级评论)

4.遍历装有一级评论的list。初始化一级评论当中的属性。例如:(子级评论的list,level),初始化子级评论list是为了存放子级评论,level是标识符。

5.继续第四步操作,一级评论调用查出子级评论方法,需要传入(一级评论对象,所有评论list)

6.遍历传进来的list。并找出一级评论对象的子评论(传进来的评论对象id 等于 所有评论对象中的parentCommentId)

7.初始化子级评论属性。(list,等级标识符)。

8.递归调用本方法。

代码实现:

实体类

@Date
@ApiModel(value="Comment对象", description="博客评论")
public class Comment implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.ID_WORKER_STR)
    private String id;

    @ApiModelProperty(value = "用户头像")
    private String avatar;

    @ApiModelProperty(value = "评论内容")
    private String content;

    @ApiModelProperty(value = "用户邮箱")
    private String email;

    @ApiModelProperty(value = "用户昵称")
    private String nickname;

    @ApiModelProperty(value = "被评论博客id")
    private Long blogId;

    @ApiModelProperty(value = "父评论id")
    private String parentCommentId;

    private Boolean adminComment;

    @ApiModelProperty(value = "用户id")
    @TableField("uId")
    private String uId;

    @ApiModelProperty(value = "等级,不用传入参数")
    @TableField(exist = false)
    private Integer level;

    @ApiModelProperty(value = "子级评论,不用传入参数")
    @TableField(exist = false)
    private List<Comment> commentList;

    @ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除")
    @TableLogic
    private Boolean isDeleted;

    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private Date gmtCreate;

    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;

业务逻辑代码

// 查看博客评论(递归)
    @Override
    public List<Comment> showBlogComment(String blogId) {
        // 查看博客下的所有评论并按照时间降序
        List<Comment> commentList = baseMapper.selectList(new QueryWrapper<Comment>().eq("blog_id", blogId).orderByDesc("gmt_create"));
        return builderComment(commentList);
    }


    private List<Comment> builderComment(List<Comment> commentList) {
        //封装放回数据的list
        List<Comment> dataList = new ArrayList<>();
        // 查找所有一级评论
        List<Comment> parentComments = new ArrayList<>();
        for (Comment comment : commentList) {
            // 说明是顶级评论
            if (comment.getParentCommentId().equals("0")) {
                // 初始化属性
                comment.setCommentList(new ArrayList<>());
                comment.setLevel(1);
                // 装入一级评论的list
                parentComments.add(comment);
            }
        }
        // 遍历所有一级评论
        for (Comment parentComment:parentComments) {
            // 传入一级评论和所有评论
            parentComment.getCommentList().add(builderChildComment(parentComment,commentList));
        }
        return parentComments;
    }

    private Comment builderChildComment(Comment parentComment, List<Comment> commentList) {
        // 初始化子级评论
        parentComment.setCommentList(new ArrayList<Comment>());
        // 遍历所有评论找出一级评论下的子级评论
        for (Comment comment : commentList) {
            if (parentComment.getId().equals(comment.getParentCommentId())) {
                // 初始化属性
                Integer level = parentComment.getLevel();
                comment.setLevel(level+1);
                if (parentComment.getCommentList() == null) {
                    parentComment.setCommentList(new ArrayList<Comment>());
                }
                // 递归调用该方法
                parentComment.getCommentList().add(builderChildComment(comment,commentList));
            }
        }

        return parentComment;
    }
  • 2
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
JSP基于SSM爱宠宠物交易平台可升级SpringBoot 前台框架: Bootstrap(一个HTML5响应式框架) 开发环境:myEclipse/Eclipse/Idea + mysql数据库 后台框架: SSM(SpringMVC + Spring + Mybatis) 要求本系统包括3种角色:买家,卖家和管理员:买家可以利用本系统购买心仪的爱宠进行饲养;卖家可以上架要出售的宠物供买家选购,买卖双方可以进行即时在线交流,沟通无障碍;管理员可以后台维护各项信息,对买卖家及宠物信息进行管理 根据模块化的设计思路,主要的后台模块有如下: (1)登陆注册模块:未注册用户进行登陆注册,才能发布宠物信息 (2)用户管理模块:该模块管理员可查看已注册用户信息,删除无效的已注册用户信息。 (3)管理员管理模块:该模块包括管理员信息的增加、删除、修改、查询。 (4)宠物信息管理模块:用户填写宠物出售或求购信息,发布宠物出售信息或发布宠物求购信息,查看、修改宠物发布信息。管理员根据宠物的交易状态,删除已交易成功的宠物。 (5)留言功能模块:注册用户、未注册用户、管理员查看留言;注册用户和管理员发表留言;管理员删除留言。 (6)个人信息管理模块:注册用户和管理员对自己的个人信息进行管理,包括密码修改 (7)公告管理模块:管理员对公告信息进行增、删、改操作。 (8)分享模块:分享主要是通过添加链接到剪贴板的方式,让用户可以方便的将链接发给好友。 (9)意见反馈模块:意见反馈模块主要是通过用户意见反馈,将收集意见在后台及时的做出改进。 实体ER属性如下: 用户: 用户名,登录密码,姓名,性别,出生日期,用户照片,联系电话,邮箱,家庭地址,注册时 宠物类别: 类别编号,类别名称 求购: 求购id,宠物主图,宠物名称,宠物类别,出版社,作者,求购价格,新旧程度,求购说明,发布用户,用户发布时 宠物出售: 出售id,宠物主图,宠物名称,宠物类别,出版社,作者,出售价格,新旧程度,出售说明,发布用户,用户发布时 宠物订单: 订单id,宠物信息,意向用户,意向出价,用户备注,下单时 留言: 留言id,留言标题,留言内容,留言人,留言时,管理回复,回复 新闻公告: 公告id,标题,公告内容,发布时 -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
"weixin010微信阅读小程序+ssm(源码+部署说明+演示视频+源码介绍+lw).rar" 这个资源包似乎是一个关于微信阅读小程序的完整项目文件,使用了SSM(Spring, SpringMVC, MyBatis)框架进行开发。下面我将重点介绍使用的技术以及可能包含功能: 使用技术: 微信小程序框架:提供了用户界面的基础架构,用于开发可在微信上运行的应用程序。 Spring:一个开源的Java平台,它简化了企业级应用的开发过程。 SpringMVC:作为Spring的一部分,它是一个模型-视图-控制器(MVC)框架,用于构建Web应用程序。 MyBatis:一个持久层框架,它简化了数据库操作,使得与数据库的交互更加直观和灵活。 Maven:一个项目管理工具,用于管理项目的构建、依赖关系和文档。 MySQL:一个流行的开源数据库管理系统,用于存储和管理应用程序数据。 服务器:可能使用了Tomcat或其他Servlet容器来部署和运行Web应用。 功能用户登录认证:提供用户注册和登录功能,可能包括微信授权登录。 文章阅读:允许用户浏览和阅读文章列表,可能包括文章分类、搜索等功能。 文章管理:对于管理员或作者,可能有添加、编辑、删除文章的功能评论系统:用户可以对文章发表评论,可能包括评论审核功能。 个人中心:用户可以查看自己的阅读历史、收藏的文章等个人信息。 数据统计:后台可能包含文章阅读量、用户活跃度等数据统计功能。 消息通知:用户可能可以接收到新文章发布、评论回复等实时通知。 演示视频和部署说明可能会帮助用户理解如何运行这个小程序,而源码介绍可能会详细说明代码结构和设计思路。"lw"可能指的是某种形式的文档或者作者的签名缩写。 请注意,由于我无法直接访问这个压缩包的内容,以上信息是基于资源名称和一般SSM框架微信阅读小程序的常见特性进行的推测。实际内容可能会有所不同。
基于PHP实现的网上留言管理系统是一个功能全面、结构清晰、可二次开发的Web应用程序。它采用PHP作为开发语言,结合MySQL数据库,实现用户注册、登录、留言提交、评论以及管理员对留言的审核、删除等操作。该系统的前端界面简洁明了,易于使用;后端逻辑处理严谨,数据安全可靠。 主要功能特点: 1. 用户注册与登录:用户可以通过注册账号或使用第三方账号(如QQ、微博)快速登录系统。 2. 留言提交与显示:用户可以在留言板中提交自己的意见和建议,其他用户也可以查看和回复这些留言。 3. 评论功能用户可以对留言进行评论,分享自己的观点和看法。 4. 管理员审核:管理员可以对用户提交的留言进行审核,确保留言内容的合法性和健康性。 5. 留言删除:管理员可以对恶意留言或过期留言进行删除,保持留言板的整洁。 6. 数据备份与恢复:系统提供了数据备份和恢复功能,确保用户数据的安全性和完整性。 源代码及论文结构: 1. 源代码包含完整的PHP代码和MySQL数据库脚本,方便开发者进行二次开发和定制。 2. 论文:详细介绍了系统的设计思路、技术实现功能测试等方面内容,为开发者提供参考和指导。 适用场景: 该系统适用于各种需要在线留言功能的网站和应用场景,如企业官网、个人博客、社交平台等。通过二次开发和定制,可以根据实际需求扩展更多功能,满足不同的业务需求。
基于Spring Boot的厨艺交流平台的设计与实现代码是一个包含了前端和后端的完整项目,旨在为用户提供一个在线分享、学习和交流烹饪技巧的平台。该项目采用了主流的前后端分离架构,后端使用Spring Boot框架,前端则使用了Vue.js或React等现代JavaScript框架。后端部分,Spring Boot作为当前最流行的Java企业级开发框架,其自动配置、约定优于配置的理念极大地简化了项目的配置和开发过程。项目中可能会包含如下几个模块:用户模块:负责用户的注册、登录、个人信息管理等功能。菜谱模块:允许用户发布自己的菜谱,包括食材列表、制作步骤、照片上传等。评论模块:用户可以对菜谱进行评论和点赞,进行互动交流。搜索模块:提供菜谱搜索功能,便于用户找到感兴趣的内容。消息通知模块:用于用户的消息通知,如评论回复提醒等。前端部分,通过Vue.js或React等框架构建单页面应用(SPA),提供良好的用户体验和交互效果。前端主要职责是展现数据和处理用户交互,与后端API进行通信。总之,整个项目通过RESTful API设计原则,前后端通过JSON格式的数据进行交互,保证了系统的高内聚、低耦合特性。数据库方面可能采用MySQL、PostgreSQL或其他关系型数据库来存储用户数据和菜谱信息,同时可能会结合Redis来实现缓存,提高系统性能。需要注意的是,这个资源介绍是基于典型的厨艺交流平台的功能描述,并不针对某一个具体的项目。实际的项目代码可能会根据需求有所不同,但基本的设计思路实现技术大致相似。
### 回答1: 用springboot vue写一个关于评论回复功能代码,可以参考以下代码:// 引入vue和springboot import Vue from 'vue' import SpringBoot from 'springboot'// 创建一个Vue实例 let vm = new Vue({ el: '#app', data: { // 存储评论列表 commentList: [] }, methods: { // 获取评论列表 getCommentList() { // 使用springboot发起get请求,获取评论列表 SpringBoot.get('/comment/list', { page: 1, pageSize: 10 }).then(res => { if (res.data.code === '200') { this.commentList = res.data.data } }) }, // 发表评论 sendComment(comment) { // 使用springboot发起post请求,提交评论 SpringBoot.post('/comment/send', { content: comment }).then(res => { if (res.data.code === '200') { alert('评论发表成功') this.getCommentList() } }) }, // 回复评论 replyComment(replyTo, content) { // 使用springboot发起post请求,提交回复 SpringBoot.post('/comment/reply', { content: content, replyTo: replyTo }).then(res => { if (res.data.code === '200') { alert('回复成功') this.getCommentList() } }) } } }) ### 回答2: Spring Boot和Vue.js是一对非常强大的开发组合,可以帮助我们快速构建具有前后端分离特点的网站或应用。下面是一个用Spring Boot和Vue.js实现评论回复功能代码示例: 1. 后端部分(使用Spring Boot) 首先,我们需要建立一个Comment实体类,包含评论内容、回复内容等字段。可以使用JPA注解将实体类与数据库表进行关联。 然后,创建一个CommentController控制器类,处理前端发来的评论回复相关的请求。可以使用@RestController注解来指定该类处理HTTP请求,并通过@RequestMapping注解来指定请求的URL和方法。 在Controller中,可以使用注解@RequestParam来获取前端传递的参数值,例如获取评论内容或回复内容等。通过调用相应的Service完成对数据库的增删改查操作。同时,可以使用ResponseEntity对象来定义返回的结果,可以包含状态码、数据等。 2. 前端部分(使用Vue.js) 在Vue.js中,可以通过Vue CLI来创建一个新的项目。 在Vue项目中,可以创建一个Comment组件,用于展示评论列表和评论回复的表单。可以使用Vue Router来实现页面之的跳转。 在Comment组件中,可以使用axios库来发送HTTP请求到后端,以获取评论列表或提交评论回复等操作。 另外,在Vue项目中,可以使用组件之的通信机制,将评论回复的数据传递给父组件,从而实现动态更新评论列表的功能。 最后,可以在主组件中使用<router-view>来渲染Comment组件,以展示评论回复的界面。 以上是用Spring Boot和Vue.js实现评论回复功能的大致思路代码示例,具体代码可以根据实际需求进行进一步的优化和完善。 ### 回答3: 以下是一个用Spring Boot和Vue.js编写评论回复功能的示例代码: 在后端,我们使用Spring Boot创建一个RESTful API,用于处理评论回复的逻辑。首先,我们创建一个Comment实体类,表示评论的数据模型,具有id、内容和回复列表等属性。然后,我们创建一个CommentController类,使用@RestController注解,用于处理与评论相关的HTTP请求,包括获取评论列表、添加评论回复评论等接口。 在前端,我们使用Vue.js创建一个评论回复的界面。首先,我们创建一个Comment组件,用于显示评论及其所有回复。然后,我们创建一个Reply组件,用于添加新的回复。在Comment组件中,我们使用v-for指令遍历评论列表,并调用Reply组件来显示回复。在Reply组件中,我们使用v-model指令绑定输入框的值,并使用axios库发送POST请求到后端API来添加回复。 最后,我们在App组件中使用Comment组件来展示评论回复的界面,并通过HTTP请求获取评论数据。我们可以在App组件中使用v-on指令监听评论回复的提交事件,并调用axios库发送POST请求到后端API来添加评论回复

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值