[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()); bo.setCommentUserId(loginUser.getUserId());
Vlog vlog;
Comment father;
// 父评论为空时按根评论处理约定使用"0"作为无父评论标记 // 父评论为空时按根评论处理约定使用"0"作为无父评论标记
if (bo.getFatherCommentId() == null ) { if (bo.getFatherCommentId() == null) {
bo.setFatherCommentId(0L); 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) 创建评论 // 1) 创建评论
@ -393,15 +403,13 @@ public class CommentServiceImpl extends ServiceImpl<CommentMapper, Comment> impl
// 3) 发送站内消息根评论 -> 通知视频作者回复评论 -> 通知被回复用户 // 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<>(); Map<String, Object> params = new HashMap<>();
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
@ -409,7 +417,7 @@ public class CommentServiceImpl extends ServiceImpl<CommentMapper, Comment> impl
mqMessage.setMessageType(MQMessageType.IM.name()); mqMessage.setMessageType(MQMessageType.IM.name());
if (bo.getFatherCommentId() == 0L) { 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("userID", loginUser.getUserId());
params.put("nickName", loginUser.getNickname()); params.put("nickName", loginUser.getNickname());
params.put("commentID", bo.getId()); params.put("commentID", bo.getId());
@ -418,14 +426,13 @@ public class CommentServiceImpl extends ServiceImpl<CommentMapper, Comment> impl
params.put("vlogID", bo.getVlogId()); params.put("vlogID", bo.getVlogId());
params.put("firstFrameImg", vlog.getFirstFrameImg()); params.put("firstFrameImg", vlog.getFirstFrameImg());
mqMessage.setToUserId(Long.valueOf(vlog.getMemberId())); mqMessage.setToUserId(Long.valueOf(vlog.getMemberId()));
}else{ } else {
return null; return null;
} }
mqMessage.setTag(MessageActionEnum.INTERACTION_COMMENT.name()); mqMessage.setTag(MessageActionEnum.INTERACTION_COMMENT.name());
} else { } else {
// 回复评论通知父评论作者 // 回复评论通知父评论作者
Comment father = baseMapper.selectById(bo.getFatherCommentId());
if (father != null && father.getCommentUserId() != null if (father != null && father.getCommentUserId() != null
&& !String.valueOf(loginUser.getUserId()).equals(father.getCommentUserId())) { && !String.valueOf(loginUser.getUserId()).equals(father.getCommentUserId())) {
params.put("userID", loginUser.getUserId()); params.put("userID", loginUser.getUserId());
@ -437,7 +444,7 @@ public class CommentServiceImpl extends ServiceImpl<CommentMapper, Comment> impl
params.put("vlogID", bo.getVlogId()); params.put("vlogID", bo.getVlogId());
params.put("firstFrameImg", vlog.getFirstFrameImg()); params.put("firstFrameImg", vlog.getFirstFrameImg());
mqMessage.setToUserId(Long.valueOf(father.getCommentUserId())); mqMessage.setToUserId(Long.valueOf(father.getCommentUserId()));
}else{ } else {
return null; return null;
} }
mqMessage.setTag(MessageActionEnum.INTERACTION_REPLY.name()); mqMessage.setTag(MessageActionEnum.INTERACTION_REPLY.name());

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.domain.bo.SysMessageTemplateBo;
import com.wzj.soopin.im.mapper.SysMessageTemplateMapper; import com.wzj.soopin.im.mapper.SysMessageTemplateMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -82,6 +83,13 @@ public class SysMessageTemplateServiceImpl extends ServiceImpl<SysMessageTemplat
public SysMessageTemplate getTemplateByAction(Integer action) { public SysMessageTemplate getTemplateByAction(Integer action) {
LambdaQueryWrapper<SysMessageTemplate> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysMessageTemplate> lqw = new LambdaQueryWrapper<>();
lqw.eq(SysMessageTemplate::getAction, action).eq(SysMessageTemplate::getStatus, 0); 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);
} }
} }