文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

java怎么实现评论和回复功能

2023-07-02 11:23

关注

这篇文章主要介绍了java怎么实现评论和回复功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java怎么实现评论和回复功能文章都会有所收获,下面我们一起来看看吧。

效果展示

java怎么实现评论和回复功能

总共是两层回复 (回复评论、回复评论下的回复)

数据库设计

评论表(TFW_Comments)和回复内容表(TFW_UserResponse)以及评论回复关系表(TFW_MsgRelation)

java怎么实现评论和回复功能

java怎么实现评论和回复功能

数据库设计思路:

注:各位读者自动忽略评论表的服务机构ID字段,这个字段相当于这条评论是在哪个帖子(文章下面)

根据文章ID或者是帖子ID查询评论表获取评论(本文的服务机构ID)。第一层(评论)

根据评论ID并且回复类型等于1的去关系表获取第二层的回复(commentsId)。第二层(评论下的回复)

根据评论ID、回复类型等于2、回复ID去关系表获取第三层回复。第三层(评论下回复中的回复)注:回复ID是它的上级

实现类源码

@Override    public Map<String, Object> findComments(JSONObject jsonObject) {        data.clear();        String userId = jsonObject.getString("userId");         String role = this.role(jsonObject);        if (role.equals("-1")){            //没有权限            data.put("error","-1");            data.put("msg","当前用户没有权限");            return data;        }         List<Map<String, Object>> info = commentsDao.findComment(jsonObject.getString("fWJLID"),null);        //查询点赞次数        int countTag = 0;        MsgRelationTag msgRelationTag = new MsgRelationTag();         for (Map item : info){            item.put("inputShow",false);            int commentsId = (int) item.get("commentsId");            //查询点赞次数             countTag = msgRelationDao.findCountTagByTagId(commentsId,1);            item.put("countTag",countTag);            //设置点赞状态            msgRelationTag.setTagId(commentsId);            msgRelationTag.setTagType(1);            msgRelationTag.setTagUserId(Integer.parseInt(userId));            MsgRelationTag msgTag = msgRelationDao.findMsgTag(msgRelationTag);            if (msgTag != null) {                item.put("tagStatus",msgTag.getStatus());            }else {                item.put("tagStatus","");            }            //如果有@id            if (item.get("atId") != null){                String content = item.get("content").toString();                StringBuffer tmrAtId = findUserName(item.get("atId").toString());                item.put("content",content+'@'+tmrAtId);            }            //二级回复数据            List<Map<String, Object>> twoReply = new ArrayList<>();            //所有数据            List<Map<String, Object>> userResponse = userResponseDao.findUserResponse(commentsId, null, "","",null);            for (Map userResponseInfo :userResponse){                int userResponseIds = Integer.parseInt(userResponseInfo.get("userResponseId").toString());                //查询点赞次数                countTag = msgRelationDao.findCountTagByTagId(userResponseIds,2);                //设置点赞状态                msgRelationTag.setTagId(userResponseIds);                msgRelationTag.setTagType(2);                msgTag = msgRelationDao.findMsgTag(msgRelationTag);                if (msgTag != null) {userResponseInfo.put("tagStatus",msgTag.getStatus());}else {userResponseInfo.put("tagStatus","");}                userResponseInfo.put("countTag",countTag);                userResponseInfo.put("inputShow",false);                Integer responseType = (Integer) userResponseInfo.get("responseType");                for (Map stairReplyInfo : userResponse){                    Integer  userResponseId = (Integer) stairReplyInfo.get("userResponseId");                    int msgRelationId = Integer.parseInt(stairReplyInfo.get("msgRelationId").toString());                    //接受者id*/                    twoReply = userResponseDao.findUserResponse(msgRelationId, userResponseId,"1","",null); //二级回复数据                    for (Map twoReplyItem : twoReply){                        int twoReplyId = Integer.parseInt(twoReplyItem.get("userResponseId").toString());                        twoReplyItem.put("inputShow",false);                        //查询点赞次数                        countTag = msgRelationDao.findCountTagByTagId(twoReplyId,2);                        twoReplyItem.put("countTag",countTag);                        //设置点赞状态                        msgRelationTag.setTagId(twoReplyId);                        msgTag = msgRelationDao.findMsgTag(msgRelationTag);                        if (msgTag != null) {twoReplyItem.put("tagStatus",msgTag.getStatus());}else {twoReplyItem.put("tagStatus","");}                        String userRepContent = twoReplyItem.get("userRepContent").toString();                        if (twoReplyItem.get("tmrAtId") != null){                            StringBuffer tmrAtId = findUserName(twoReplyItem.get("tmrAtId").toString());                            twoReplyItem.put("userRepContent",userRepContent+'@'+tmrAtId);                        }                     }                    stairReplyInfo.put("twoReply",twoReply);                }            }            item.put("stairReply",userResponse);        }        data.put("data",info);        data.put("error",0);        data.put("msg","查询成功");        return data;    }

其它的代码可以忽略。主要语句有:

获取帖子下的评论

 List<Map<String, Object>> info = commentsDao.findComment(jsonObject.getString("fWJLID"),null);

上图根据FWJLID获取评论。(此处可以当成帖子的ID,获取帖子下的评论)一级展示

对应SQL语句(OPT是我的用户表)

select tc.content ,tc.commentsId,convert(varchar(19),tc.startTime,120) as startTime,tc.recipientId ,tc.operatorId,zo.NAME as operatorName,tc.atId,zo.HeadImgUrl as operatorHeadImgUrl         from TFW_Comments tc         left join zd_opt zo on zo.AID = tc.operatorId where tc.FWJLID = 5101

查询结果:

java怎么实现评论和回复功能

 获取评论下的回复

List<Map<String, Object>> userResponse = userResponseDao.findUserResponse(commentsId, null, "","",null);

上图根据commentsid获取评论下的回复。(根据评论ID获取回复)二级展示

对应sql语句

select  tur.userResponseId,tur.operatorId,tur.recipientId,convert(varchar(19),tur.startTime,120) as startTime,tur.userRepContent,tmr.atId as tmrAtId,  tmr.msgRelationId ,tmr.responseType,tmr.replyId,        zo.NAME as operatorName,        zo1.NAME as recipientName,        zo.HeadImgUrl as operatorHeadImgUrl,        zo1.HeadImgUrl as recipientHeadImgUrl        from TFW_MsgRelation tmr        left join TFW_UserResponse tur on tur.userResponseId = tmr.userResponseId        left join zd_opt zo on zo.AID = tur.operatorId        left join zd_opt zo1 on zo1.AID = tur.recipientId where tmr.commentsId = 47

查询结果

java怎么实现评论和回复功能

 获取二级回复

 twoReply = userResponseDao.findUserResponse(msgRelationId, userResponseId,"1","",null); //二级回复数据

上图是根据评论ID(msgRelationId)和回复ID(userResponseId)去获取二级回复。回复ID也就是父类。就是回复那一条回复的ID。 第三层展示

对应sql

select  tur.userResponseId,tur.operatorId,tur.recipientId,convert(varchar(19),tur.startTime,120) as startTime,tur.userRepContent,tmr.atId as tmrAtId,  tmr.msgRelationId ,tmr.responseType,tmr.replyId,        zo.NAME as operatorName,        zo1.NAME as recipientName,        zo.HeadImgUrl as operatorHeadImgUrl,        zo1.HeadImgUrl as recipientHeadImgUrl        from TFW_MsgRelation tmr        left join TFW_UserResponse tur on tur.userResponseId = tmr.userResponseId        left join zd_opt zo on zo.AID = tur.operatorId        left join zd_opt zo1 on zo1.AID = tur.recipientId where tmr.commentsId = 136 and tmr.replyId = 155

查询结果

java怎么实现评论和回复功能

返回页面展示和返回体展示

java怎么实现评论和回复功能

java怎么实现评论和回复功能

关于“java怎么实现评论和回复功能”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“java怎么实现评论和回复功能”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯