Es gibt insgesamt zwei Ebenen von Antworten (Antwort auf Kommentare, Antwort auf Antworten unter Kommentaren)
Kommentartabelle (TFW_Comments) und Antwortinhaltstabelle (TFW_UserResponse) sowie Kommentar-Antwort-Beziehungstabelle (TFW_MsgRelation)
Hinweis: Leser ignorieren automatisch das Feld „Service Organization ID“ der Kommentartabelle. Dieses Feld entspricht dem Beitrag, in dem sich dieser Kommentar befindet (unter dem Artikel)
1. Gemäß der Artikel-ID oder Es ist die Beitrags-ID, die die Kommentartabelle abfragt, um Kommentare zu erhalten (die Serviceorganisations-ID dieses Artikels). Die erste Ebene (Kommentare)
Um die Antwort der zweiten Ebene (commentsId) zu erhalten, müssen Sie eine Abfrage in der Beziehungstabelle basierend auf der Kommentar-ID durchführen und der Antworttyp ist gleich 1. Die zweite Ebene (Antwort unter dem Kommentar)
erhält die Antwortinformationen der dritten Ebene in der Beziehungstabelle basierend auf der Kommentar-ID, dem Antworttyp 2 und der Antwort-ID. Die dritte Ebene (Antwort in der Antwort unter dem Kommentar) Hinweis: Die Antwort-ID ist der übergeordnete
@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; }
Andere Codes können ignoriert werden. Die Hauptsätze sind:
List<Map<String, Object>> info = commentsDao.findComment(jsonObject.getString("fWJLID"),null);
Das obige Bild erhält die Kommentare basierend auf FWJLID. (Dies kann als ID des Beitrags verwendet werden, um die Kommentare unter dem Beitrag abzurufen.) Die Anzeige der ersten Ebene
entspricht der SQL-Anweisung (OPT ist meine Benutzertabelle)
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
Abfrageergebnisse:
List<Map<String, Object>> userResponse = userResponseDao.findUserResponse(commentsId, null, "","",null);
Das obige Bild erhält die Antworten unter Kommentare basierend auf der Kommentar-ID. (Erhalten Sie die Antwort basierend auf der Kommentar-ID.) Die Anzeige der zweiten Ebene
entspricht der SQL-Anweisung
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
Abfrageergebnisse
twoReply = userResponseDao.findUserResponse(msgRelationId, userResponseId,"1","",null); //二级回复数据
Das Bild oben dient dazu, die Antwort der zweiten Ebene zu erhalten auf der Kommentar-ID (msgRelationId) und der Antwort-ID (userResponseId) auf Antwortebene. Die Antwort-ID ist auch die übergeordnete Klasse. Es ist die ID der Antwort. Die Anzeige der dritten Ebene
entspricht 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
Abfrageergebnissen
Rückkehrseitenanzeige und Rückkehrkörperanzeige
Das obige ist der detaillierte Inhalt vonSo implementieren Sie Kommentar- und Antwortfunktionen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!