feat: 补充IM个人资料同步 + 群成员头像导入修复

1. 在8处头像/名称变更点补充imHelloApi.accountReg()调用,同步更新IM个人资料:
   - SysUserController.updateUserAvatar 用户换头像
   - SysUserController.appEdit 移动端编辑资料
   - SysUserController.edit 后台编辑用户
   - EmergencyProfessionUserServiceImpl.customEdit 应急人员编辑
   - EmergencyCenterAdminServiceImpl.updateAdmin 中心管理员编辑
   - HealthUserEmployeeExServiceImpl.updateUserInfo 员工编辑
   - ConDoctorApiController.update 专家端个人简介修改
   - AsyncExportService.importDoctor 批量导入医生
   所有syncImProfile方法内部try-catch兜底,失败不影响主流程。
2. AddGroupMemberDTO新增memberAvatar字段,TencentCloudImUtil.addGroupMember
   导入IM账号时传递FaceUrl,EmergencyApiServiceImpl.addGroupUser构建头像映射。
3. jeecg-system-biz/pom.xml新增health-im-api依赖。

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-08-04 20:03:20 +08:00
co-authored by Claude
parent 0ae963c4cf
commit 4a15ebe0d2
11 changed files with 198 additions and 5 deletions
@@ -554,13 +554,16 @@ public class TencentCloudImUtil {
try {
// 先导入账号及其名称,确保成员在IM系统中已注册
if (dto.getMemberList() != null && !dto.getMemberList().isEmpty()) {
// 构建腾讯IM新版 AccountList 格式(含昵称)
// 构建腾讯IM新版 AccountList 格式(含昵称和头像
List<JSONObject> accountList = dto.getMemberList().stream().map(member -> {
JSONObject account = new JSONObject();
account.put("UserID", member.getMemberAccount());
if (StringUtils.isNotEmpty(member.getMemberName())) {
account.put("Nick", member.getMemberName());
}
if (StringUtils.isNotEmpty(member.getMemberAvatar())) {
account.put("FaceUrl", member.getMemberAvatar());
}
return account;
}).collect(Collectors.toList());
importAccountsWithNames(accountList);
@@ -570,11 +573,13 @@ public class TencentCloudImUtil {
String httpsUrl = getHttpsUrl(TencentCloudImApiConstant.GroupManage.ADD_GROUP_MEMBER, random);
String jsonString = objectMapper.writeValueAsString(dto);
JSONObject jsonObject = JSONObject.parseObject(jsonString);
// 移除 memberName 字段,腾讯IM API 不接受此字段
// 移除内部字段,腾讯IM API 不接受
JSONArray memberList = jsonObject.getJSONArray("MemberList");
if (memberList != null) {
for (int i = 0; i < memberList.size(); i++) {
memberList.getJSONObject(i).remove("memberName");
JSONObject member = memberList.getJSONObject(i);
member.remove("memberName");
member.remove("memberAvatar");
}
}
log.info("腾讯云im添加群成员,请求参数:{}", jsonObject);