diff --git a/my-project-backend/src/main/java/com/example/entity/vo/response/CommentVO.java b/my-project-backend/src/main/java/com/example/entity/vo/response/CommentVO.java index 33f8891..54d264a 100644 --- a/my-project-backend/src/main/java/com/example/entity/vo/response/CommentVO.java +++ b/my-project-backend/src/main/java/com/example/entity/vo/response/CommentVO.java @@ -14,7 +14,7 @@ public class CommentVO { @Data public static class User { - Integer uid; + Integer id; String username; String avatar; boolean gender; diff --git a/my-project-backend/src/main/java/com/example/service/impl/TopicServiceImpl.java b/my-project-backend/src/main/java/com/example/service/impl/TopicServiceImpl.java index 5e31bb7..5f86ac3 100644 --- a/my-project-backend/src/main/java/com/example/service/impl/TopicServiceImpl.java +++ b/my-project-backend/src/main/java/com/example/service/impl/TopicServiceImpl.java @@ -180,11 +180,16 @@ public class TopicServiceImpl extends ServiceImpl implements CommentVO vo = new CommentVO(); BeanUtils.copyProperties(dto, vo); if(dto.getQuote() > 0) { - JSONObject object = JSONObject.parseObject(commentMapper.selectOne(Wrappers.query() - .eq("id", dto.getQuote())).getContent()); - StringBuilder text = new StringBuilder(); - this.shortContent(object.getJSONArray("ops"), text, ignore -> {}); - vo.setQuote(text.toString()); + TopicComment comment = commentMapper.selectOne(Wrappers.query() + .eq("id", dto.getQuote())); + if(comment != null) { + JSONObject object = JSONObject.parseObject(comment.getContent()); + StringBuilder text = new StringBuilder(); + this.shortContent(object.getJSONArray("ops"), text, ignore -> {}); + vo.setQuote(text.toString()); + } else { + vo.setQuote("此评论已删除"); + } } CommentVO.User user = new CommentVO.User(); this.fillUserDetailsByPrivacy(user, dto.getUid()); diff --git a/my-project-frontend/src/components/TopicCommentEditor.vue b/my-project-frontend/src/components/TopicCommentEditor.vue index ccbe8dd..5508dfe 100644 --- a/my-project-frontend/src/components/TopicCommentEditor.vue +++ b/my-project-frontend/src/components/TopicCommentEditor.vue @@ -6,7 +6,7 @@ import {ref} from "vue"; import {ElMessage} from "element-plus"; const props = defineProps({ - quote: Number, + quote: Object, show: Boolean, tid: String }) @@ -22,18 +22,28 @@ function submitComment() { post('/api/forum/add-comment', { tid: props.tid, content: JSON.stringify(content.value), - quote: props.quote + quote: props.quote == null ? -1 : props.quote.id }, () => { ElMessage.success('评论成功') emit('comment') }) } + +function deltaToSimpleText(delta) { + let str = '' + for (let op of JSON.parse(delta).ops) { + str += op.insert + } + if(str.length > 35) str = str.substring(0, 35) + "..." + return str +}