feat(count): 实现粉丝与关注计数服务

- 新增粉丝数与关注数的 MQ 消费逻辑
- 实现 Redis 计数更新与数据库落库操作
- 添加流量削峰限流机制提升系统稳定性
- 完善计数 DTO 与枚举类型定义
- 扩展 JsonUtils 工具类支持 Map 转换
- 更新 MQ 常量与 Redis Key 管理策略
-优化 MyBatis Mapper 支持计数插入或更新操作,Mybatis-plus操作起来属于硬编码,所以使用MyBatis的XML形式
This commit is contained in:
2025-10-16 19:21:28 +08:00
parent c6ac7193c1
commit d59acad051
12 changed files with 422 additions and 7 deletions

View File

@@ -1,5 +1,6 @@
package com.hanserwei.framework.common.utils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
@@ -7,6 +8,8 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils;
import java.util.Map;
public class JsonUtils {
private static ObjectMapper OBJECT_MAPPER = new ObjectMapper();
@@ -51,4 +54,24 @@ public class JsonUtils {
return OBJECT_MAPPER.readValue(jsonStr, clazz);
}
/**
* 将 JSON 字符串转换为 Map
*
* @param jsonStr JSON 字符串
* @param keyClass 键的类型
* @param valueClass 值的类型
* @param <K> 键的类型
* @param <V> 值的类型
* @return Map
* @throws Exception 抛出异常
*/
public static <K, V> Map<K, V> parseMap(String jsonStr, Class<K> keyClass, Class<V> valueClass) throws Exception {
// 创建 TypeReference指定泛型类型
TypeReference<Map<K, V>> typeRef = new TypeReference<Map<K, V>>() {
};
// 将 JSON 字符串转换为 Map
return OBJECT_MAPPER.readValue(jsonStr, OBJECT_MAPPER.getTypeFactory().constructMapType(Map.class, keyClass, valueClass));
}
}