Merge remote-tracking branch 'origin/wzj-main' into wzj-main

This commit is contained in:
huk 2025-09-28 16:28:58 +08:00
commit 16b9f183f3

View File

@ -18,6 +18,9 @@ import org.dromara.common.redis.utils.RedisUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -177,14 +180,13 @@ public class IMCallbackServiceImpl implements IMCallbackService {
log.warn("IM取消关注回调参数不完整: {}", callbackData);
}
// 返回IM平台要求的应答
return IMCallbackVO.success();
return IMCallbackVO.success();
}
return IMCallbackVO.success();
}
// 资料修改回调处理逻辑
@Override
public IMCallbackVO handleProfileCallbackPortraitSet(Map<String, Object> callbackData) {
@ -218,6 +220,7 @@ public class IMCallbackServiceImpl implements IMCallbackService {
return IMCallbackVO.success();
}
// 只更新 nickname/gender 字段
private void updateMemberProfile(Member member, String tag, Object value) {
if (tag == null || value == null) {
@ -236,6 +239,18 @@ public class IMCallbackServiceImpl implements IMCallbackService {
member.setGender(0);
}
break;
case "Tag_Profile_IM_SelfSignature":
member.setMark(value.toString());
break;
case "Tag_Profile_IM_BirthDay":
// 1. 将字符串时间戳转换为长整数1756828800 是秒级时间戳
// 2. 转换为 InstantUTC 时间
Instant instant = Instant.ofEpochSecond((long) value);
// 3. 转换为 LocalDate需指定时区否则使用系统默认时区
// 例如使用上海时区Asia/Shanghai
LocalDate localDate = instant.atZone(ZoneId.of("Asia/Shanghai")).toLocalDate();
member.setBirthday(localDate);
default:
log.debug("未处理的用户资料字段: tag={}, value={}", tag, value);
break;