[fix]优化评论逻辑

This commit is contained in:
wangqx 2025-10-11 11:23:05 +08:00
parent 093758afe9
commit 8cff58e360
2 changed files with 26 additions and 11 deletions

View File

@ -378,9 +378,19 @@ public class CommentServiceImpl extends ServiceImpl<CommentMapper, Comment> impl
}
bo.setCommentUserId(loginUser.getUserId());
Vlog vlog;
Comment father;
// 父评论为空时按根评论处理约定使用"0"作为无父评论标记
if (bo.getFatherCommentId() == null ) {
if (bo.getFatherCommentId() == null) {
bo.setFatherCommentId(0L);
vlog = vlogMapper.selectById(bo.getVlogId());
father = null;
} else {
father = commentMapper.selectById(bo.getFatherCommentId());
vlog = vlogMapper.selectById(father.getVlogId());
bo.setVlogId(vlog.getId());
bo.setVlogerId(Long.valueOf(vlog.getMemberId()));
}
// 1) 创建评论
@ -393,15 +403,13 @@ public class CommentServiceImpl extends ServiceImpl<CommentMapper, Comment> impl
// 3) 发送站内消息根评论 -> 通知视频作者回复评论 -> 通知被回复用户
Vlog vlog=vlogMapper.selectById(bo.getVlogId());
// 给评论或者作者发送通知
MqUtil.sendIMMessage(buildCommentMessage(bo,vlog));
MqUtil.sendIMMessage(buildCommentMessage(bo, vlog, father));
//检查是否有@
}
private MQMessage buildCommentMessage(CommentBO bo,Vlog vlog) {
private MQMessage buildCommentMessage(CommentBO bo, Vlog vlog, Comment father) {
Map<String, Object> params = new HashMap<>();
LoginUser loginUser = LoginHelper.getLoginUser();
@ -409,7 +417,7 @@ public class CommentServiceImpl extends ServiceImpl<CommentMapper, Comment> impl
mqMessage.setMessageType(MQMessageType.IM.name());
if (bo.getFatherCommentId() == 0L) {
// 评论视频通知视频作者
if ( !String.valueOf(loginUser.getUserId()).equals(bo.getVlogerId())) {
if (!String.valueOf(loginUser.getUserId()).equals(bo.getVlogerId())) {
params.put("userID", loginUser.getUserId());
params.put("nickName", loginUser.getNickname());
params.put("commentID", bo.getId());
@ -418,14 +426,13 @@ public class CommentServiceImpl extends ServiceImpl<CommentMapper, Comment> impl
params.put("vlogID", bo.getVlogId());
params.put("firstFrameImg", vlog.getFirstFrameImg());
mqMessage.setToUserId(Long.valueOf(vlog.getMemberId()));
}else{
} else {
return null;
}
mqMessage.setTag(MessageActionEnum.INTERACTION_COMMENT.name());
} else {
// 回复评论通知父评论作者
Comment father = baseMapper.selectById(bo.getFatherCommentId());
if (father != null && father.getCommentUserId() != null
&& !String.valueOf(loginUser.getUserId()).equals(father.getCommentUserId())) {
params.put("userID", loginUser.getUserId());
@ -437,7 +444,7 @@ public class CommentServiceImpl extends ServiceImpl<CommentMapper, Comment> impl
params.put("vlogID", bo.getVlogId());
params.put("firstFrameImg", vlog.getFirstFrameImg());
mqMessage.setToUserId(Long.valueOf(father.getCommentUserId()));
}else{
} else {
return null;
}
mqMessage.setTag(MessageActionEnum.INTERACTION_REPLY.name());
@ -451,6 +458,6 @@ public class CommentServiceImpl extends ServiceImpl<CommentMapper, Comment> impl
@Override
public Integer getCommentCount(String vlogId) {
return baseMapper.selectCount(new LambdaQueryWrapper<Comment>().eq(Comment::getVlogId, vlogId)
.eq(Comment::getStatus, CommentStatusEnum.NORMAL.getValue())).intValue();
.eq(Comment::getStatus, CommentStatusEnum.NORMAL.getValue())).intValue();
}
}

View File

@ -7,6 +7,7 @@ import com.wzj.soopin.im.domain.SysMessageTemplate;
import com.wzj.soopin.im.domain.bo.SysMessageTemplateBo;
import com.wzj.soopin.im.mapper.SysMessageTemplateMapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
@ -82,6 +83,13 @@ public class SysMessageTemplateServiceImpl extends ServiceImpl<SysMessageTemplat
public SysMessageTemplate getTemplateByAction(Integer action) {
LambdaQueryWrapper<SysMessageTemplate> lqw = new LambdaQueryWrapper<>();
lqw.eq(SysMessageTemplate::getAction, action).eq(SysMessageTemplate::getStatus, 0);
return templateMapper.selectOne(lqw);
List<SysMessageTemplate> templateList = templateMapper.selectList(lqw);
if (templateList.isEmpty()) {
return null;
}
if(templateList.size()>1){
throw new ServiceException("根据操作类型查询模板数量大于1");
}
return templateList.get(0);
}
}