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

@@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class JsonUtils {
private static ObjectMapper OBJECT_MAPPER = new ObjectMapper();
@@ -95,4 +96,23 @@ public class JsonUtils {
}
});
}
/**
* 将 JSON 字符串解析为指定类型的 Set 对象
*
* @param jsonStr JSON 字符串
* @param clazz 目标对象类型
* @param <T> 目标对象类型
* @return Set 集合
* @throws Exception 抛出异常
*/
public static <T> Set<T> parseSet(String jsonStr, Class<T> clazz) throws Exception {
// 使用 TypeReference 指定 Set<T> 的泛型类型
return OBJECT_MAPPER.readValue(jsonStr, new TypeReference<>() {
@Override
public CollectionType getType() {
return OBJECT_MAPPER.getTypeFactory().constructCollectionType(Set.class, clazz);
}
});
}
}