中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java怎么實現評論和回復功能

發布時間:2022-06-20 11:43:45 來源:億速云 閱讀:266 作者:iii 欄目:開發技術

這篇文章主要介紹了java怎么實現評論和回復功能的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇java怎么實現評論和回復功能文章都會有所收獲,下面我們一起來看看吧。

效果展示

java怎么實現評論和回復功能

總共是兩層回復 (回復評論、回復評論下的回復)

數據庫設計

評論表(TFW_Comments)和回復內容表(TFW_UserResponse)以及評論回復關系表(TFW_MsgRelation)

java怎么實現評論和回復功能

java怎么實現評論和回復功能

數據庫設計思路:

注:各位讀者自動忽略評論表的服務機構ID字段,這個字段相當于這條評論是在哪個帖子(文章下面)

1、根據文章ID或者是帖子ID查詢評論表獲取評論(本文的服務機構ID)。第一層(評論)

2、根據評論ID并且回復類型等于1的去關系表獲取第二層的回復(commentsId)。第二層(評論下的回復)

3、根據評論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怎么實現評論和回復功能”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德钦县| 丹东市| 宜宾县| 聂拉木县| 玉门市| 柳州市| 桦川县| 莱州市| 南投县| 马公市| 如皋市| 剑阁县| 霍林郭勒市| 文安县| 林州市| 育儿| 五大连池市| 天水市| 化州市| 错那县| 互助| 延长县| 五台县| 葫芦岛市| 辽中县| 六安市| 巢湖市| 天津市| 门头沟区| 洛南县| 上蔡县| 绥芬河市| 清原| 绩溪县| 夏河县| 安徽省| 高尔夫| 洪湖市| 大宁县| 福建省| 会同县|