Heim  >  Artikel  >  Java  >  So implementieren Sie Kommentar- und Antwortfunktionen in Java

So implementieren Sie Kommentar- und Antwortfunktionen in Java

WBOY
WBOYnach vorne
2023-05-25 14:46:223269Durchsuche

Effektanzeige

So implementieren Sie Kommentar- und Antwortfunktionen in Java

Es gibt insgesamt zwei Ebenen von Antworten (Antwort auf Kommentare, Antwort auf Antworten unter Kommentaren)

Datenbankdesign

Kommentartabelle (TFW_Comments) und Antwortinhaltstabelle (TFW_UserResponse) sowie Kommentar-Antwort-Beziehungstabelle (TFW_MsgRelation)

So implementieren Sie Kommentar- und Antwortfunktionen in Java

So implementieren Sie Kommentar- und Antwortfunktionen in Java

Ideen für das Datenbankdesign:

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

Quellcode der Implementierungsklasse

@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+&#39;@&#39;+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+&#39;@&#39;+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:

Holen Sie sich die Kommentare unter dem Beitrag

 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:

So implementieren Sie Kommentar- und Antwortfunktionen in Java

Erhalten Sie die Antwort unter dem Kommentar

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

So implementieren Sie Kommentar- und Antwortfunktionen in Java

Erhalten Sie die Antwort der zweiten Ebene

 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

So implementieren Sie Kommentar- und Antwortfunktionen in Java

Rückkehrseitenanzeige und Rückkehrkörperanzeige

So implementieren Sie Kommentar- und Antwortfunktionen in Java

So implementieren Sie Kommentar- und Antwortfunktionen in Java

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen