javaweb评论回复功能,java留言和评论功能怎么实现

  javaweb评论回复功能,java留言和评论功能怎么实现

  00-1010效果展示的数据库设计:数据库的设计思路:实现源码获取帖下评论,评论下回复,二次回复汇总。最近实现了评论、回复、点赞和@的功能。在这里分享一下我的设计思路(先分享评论和回复功能)。希望读者给一些不同的建议,以便后期改进。

  

目录

 

  总共有两层回复(回复评论,评论下回复)

  00-1010评论表(TFW _评论)、回复内容表(TFW _用户响应)和评论-回复关系表(TFW_MsgRelation)

  00-1010注:读者自动忽略评论表单的服务ID字段,相当于这个评论在哪个帖子里(文章下面)

  1.根据文章ID或帖子ID查看评论表得到评论(本文的服务机构ID)。第一层(评论)

  2.根据注释Id和回复类型等于1的去关系表获得二级回复(commentsId)。第2级(在评论下回复)

  3.根据评论ID,回复类型等于2,回复ID到关系表,得到三级回复。三级(评论下回复中回复)注:回复ID为其上级

  

效果展示

@ Override public MapString,Object find comments(JSON Object JSON Object){ data . clear();string userId=JSON object . getstring( userId );string role=this . role(JSON object);if(role . equals(-1 ){//无权限data.put(error ,-1 );Data.put(msg ,当前用户没有权限);返回数据;} ListMapString,Object info=comments Dao . find comment(JSON Object . getstring( fWJLID ),null);//查询点赞数int count tag=0;MsgRelationTag MsgRelationTag=new MsgRelationTag();for(Map item : info){ item . put( input show ,false);int comments id=(int)item . get( comments id );//查询点赞数count tag=msgrelationdao . findcounttagbyagid(评论id,1);item.put(countTag ,count tag);//设置喜欢状态msgrelationtag.settagid(评论id);msgrelationtag . settagtype(1);msgrelationtag . settaguserid(integer . parse int(userId));MsgRelationTag msgTag=msgrelationdao . find msgTag(MsgRelationTag);if (msgTag!=null) { item.put(tagStatus ,msgtag . get status());}else { item.put(tagStatus , );}//如果有@id if (item.get(atId )!=null){ String content=item . get( content )。toString();string buffer TMR atId=find username(item . get( atId )。toString());item.put(content ,content @ TMR atid);}

 

   //二级回复数据 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

查询结果:

 

  

 

  

 

  

获取评论下的回复

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

查询结果

 

  

 

  

 

  

获取二级回复

 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评论回复功能内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: