feat(comment): 新增评论热度计算与更新功能

- 在评论数据对象中新增 childCommentTotal 和 heat 字段
- 扩展 CommentDOMapper 支持批量更新评论热度值
- 新增 CommentHeatBO 类用于封装评论热度信息
- 实现基于点赞数和回复数的热度值计算工具类 HeatCalculator
- 添加 RocketMQ 消费者异步处理评论热度更新消息
- 引入 buffer-trigger依赖实现消息聚合发送
- 扩展 JsonUtils 工具类支持 Set 类型反序列化
- 新增 MQ 常量 TOPIC_COMMENT_HEAT_UPDATE用于热度更新主题
- 修改 SQL 脚本增加 heat 字段并设置默认值- 更新测试接口请求参数内容以适配新逻辑
This commit is contained in:
2025-11-07 21:19:42 +08:00
parent 9ec330216f
commit c454e1832c
13 changed files with 272 additions and 5 deletions

View File

@@ -19,18 +19,35 @@
<result column="is_top" jdbcType="TINYINT" property="isTop" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="child_comment_total" jdbcType="BIGINT" property="childCommentTotal"/>
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, note_id, user_id, content_uuid, is_content_empty, image_url, `level`, reply_total,
like_total, parent_id, reply_comment_id, reply_user_id, is_top, create_time, update_time
<!--@mbg.generated-->
id,
note_id,
user_id,
content_uuid,
is_content_empty,
image_url,
`level`,
reply_total,
like_total,
parent_id,
reply_comment_id,
reply_user_id,
is_top,
create_time,
update_time,
child_comment_total
</sql>
<select id="selectByCommentIds" resultMap="BaseResultMap" parameterType="list">
select id,
level,
parent_id,
user_id
user_id,
child_comment_total,
like_total
from t_comment
where id in
<foreach collection="commentIds" open="(" separator="," close=")" item="commentId">
@@ -52,4 +69,17 @@
, #{comment.updateTime})
</foreach>
</insert>
<update id="batchUpdateHeatByCommentIds" parameterType="map">
UPDATE t_comment
SET heat = CASE id
<foreach collection="commentHeatBOS" item="bo" separator="">
WHEN #{bo.id} THEN #{bo.heat}
</foreach>
ELSE heat END
WHERE id IN
<foreach collection="commentIds" item="commentId" open="(" close=")" separator=",">
#{commentId}
</foreach>
</update>
</mapper>