diff --git a/health-consultation/health-consultation-biz/src/main/java/com/renkang/consultation/api/controller/ConDoctorApiController.java b/health-consultation/health-consultation-biz/src/main/java/com/renkang/consultation/api/controller/ConDoctorApiController.java index cb20ffb..2d7481a 100644 --- a/health-consultation/health-consultation-biz/src/main/java/com/renkang/consultation/api/controller/ConDoctorApiController.java +++ b/health-consultation/health-consultation-biz/src/main/java/com/renkang/consultation/api/controller/ConDoctorApiController.java @@ -15,24 +15,31 @@ import com.renkang.consultation.entity.ConDoctorExAndUser; import com.renkang.consultation.service.IConDoctorService; import com.renkang.consultation.util.TempUtil; import com.renkang.consultation.vo.ConDoctorVO; +import com.renkang.im.api.IMHelloApi; +import com.renkang.im.entity.ConSessionRequestDO; import io.swagger.v3.oas.annotations.Operation; +import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; +import org.jeecg.bean.request.ListUser; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.util.DictUtil; import org.jeecg.common.system.vo.DictModel; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.system.vo.LoginUserNew; import org.jeecg.util.RSAEncryptUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.Collections; import java.util.List; import java.util.Map; +@Slf4j @RestController @RequestMapping(RequestPrefix.conDoctor) public class ConDoctorApiController { @@ -46,6 +53,8 @@ public class ConDoctorApiController { @Autowired private DictUtil dictUtil; + @Autowired + private IMHelloApi imHelloApi; /** * 分页列表查询 @@ -133,12 +142,28 @@ public class ConDoctorApiController { } boolean flag = conDoctorService.updateById(conDoctor); if (flag){ + // 同步IM个人资料 + syncImProfile(conDoctor.getId()); return Result.ok("更新成功!"); } return Result.error("更新失败!"); } + private void syncImProfile(String userId) { + try { + List users = isysBaseApi.listUserByIds(new ListUser(Collections.singletonList(userId))); + if (CollectionUtils.isEmpty(users)) { + return; + } + ConSessionRequestDO req = new ConSessionRequestDO(); + req.setAccountList(Collections.singletonList(users.get(0))); + imHelloApi.accountReg(req); + } catch (Exception e) { + log.error("同步IM个人资料失败, userId: {}", userId, e); + } + } + @Operation(summary = "查询医生信息", description = "查询医生信息") @GetMapping("/selectDoctorInfo") diff --git a/health-consultation/health-consultation-biz/src/main/java/com/renkang/consultation/async/AsyncExportService.java b/health-consultation/health-consultation-biz/src/main/java/com/renkang/consultation/async/AsyncExportService.java index b7f15c1..1a354c6 100644 --- a/health-consultation/health-consultation-biz/src/main/java/com/renkang/consultation/async/AsyncExportService.java +++ b/health-consultation/health-consultation-biz/src/main/java/com/renkang/consultation/async/AsyncExportService.java @@ -19,6 +19,8 @@ import com.renkang.consultation.mapper.ConSessionMapper; import com.renkang.consultation.service.IConDoctorService; import com.renkang.consultation.service.IConSessionService; import com.renkang.consultation.vo.ConDoctorExportVO; +import com.renkang.im.api.IMHelloApi; +import com.renkang.im.entity.ConSessionRequestDO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -98,6 +100,8 @@ public class AsyncExportService { private ConHelperMapper conHelperMapper; @Autowired private AsyncTaskExecutor taskExecutor; + @Autowired + private IMHelloApi imHelloApi; @Transactional(rollbackFor = Exception.class) public void userToDoctorExportXls(ConSessionDTO dto, CommonExportsInfo info, String empFinish, String errCode, String sheetName, String fileName) { @@ -580,6 +584,8 @@ public class AsyncExportService { BeanUtils.copyProperties(excelVo, conDoctor); conDoctor.setId(userId); conDoctorService.saveDoctor(conDoctor); + // 同步注册IM账号 + importImAccount(userId); info.setHandleMsg(index++ + "/" + userList.size()); info.setExportStatus("0"); info.setId(commonExportsInfo.getId()); @@ -598,6 +604,20 @@ public class AsyncExportService { sysBaseAPI.updateExportsInfo(info); } + private void importImAccount(String userId) { + try { + List users = sysBaseAPI.listUserByIds(new ListUser(Collections.singletonList(userId))); + if (CollectionUtils.isEmpty(users)) { + return; + } + ConSessionRequestDO req = new ConSessionRequestDO(); + req.setAccountList(java.util.Collections.singletonList(users.get(0))); + imHelloApi.accountReg(req); + } catch (Exception e) { + log.error("导入IM账号失败, userId: {}", userId, e); + } + } + private class UserToDoctorExportHandler implements PoiExportHandler { @Override diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyApiServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyApiServiceImpl.java index 0034161..63d91df 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyApiServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyApiServiceImpl.java @@ -1384,11 +1384,17 @@ public class EmergencyApiServiceImpl implements EmergencyApiService { if (newMemberList.isEmpty()) { ExceptionAssertsUtil.fail("所选成员已在群聊中"); } - // 查询成员名称用于IM账号导入 + // 查询成员名称和头像用于IM账号导入 Map memberNameMap = new HashMap<>(); + Map memberAvatarMap = new HashMap<>(); List profUsers = emergencyProfessionUserMapper.selectList( new LambdaQueryWrapper().in(EmergencyProfessionUser::getUserId, newMemberList)); - profUsers.forEach(u -> memberNameMap.put(u.getUserId(), u.getRealname())); + profUsers.forEach(u -> { + memberNameMap.put(u.getUserId(), u.getRealname()); + if (StrUtil.isNotBlank(u.getAvatar())) { + memberAvatarMap.put(u.getUserId(), u.getAvatar()); + } + }); List remainingIds = newMemberList.stream() .filter(id -> !memberNameMap.containsKey(id)).collect(Collectors.toList()); if (!remainingIds.isEmpty()) { @@ -1396,6 +1402,9 @@ public class EmergencyApiServiceImpl implements EmergencyApiService { if (StrUtil.isNotBlank(u.getRealname())) { memberNameMap.put(id, u.getRealname()); } + if (StrUtil.isNotBlank(u.getAvatar())) { + memberAvatarMap.put(id, u.getAvatar()); + } }); } AddGroupMemberDTO addGroupMemberDTO = new AddGroupMemberDTO(); @@ -1404,6 +1413,7 @@ public class EmergencyApiServiceImpl implements EmergencyApiService { AddGroupMemberDTO.MemberListDTO memberListDTO = new AddGroupMemberDTO.MemberListDTO(); memberListDTO.setMemberAccount(userId); memberListDTO.setMemberName(memberNameMap.get(userId)); + memberListDTO.setMemberAvatar(memberAvatarMap.get(userId)); return memberListDTO; }).collect(Collectors.toList())); //添加群成员 diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencyCenterAdminServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencyCenterAdminServiceImpl.java index 2a5807c..00f5d2b 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencyCenterAdminServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencyCenterAdminServiceImpl.java @@ -14,8 +14,14 @@ import com.renkang.emergency.entity.EmergencyCenterAdmin; import com.renkang.emergency.manager.EmergencyCloudManager; import com.renkang.emergency.mapper.EmergencyCenterAdminMapper; import com.renkang.emergency.service.IEmergencyCenterAdminService; +import com.renkang.im.api.IMHelloApi; +import com.renkang.im.entity.ConSessionRequestDO; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.bean.request.ListUser; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.ExceptionAssertsUtil; +import org.jeecg.common.system.api.ISysBaseAPI; +import org.jeecg.common.system.vo.LoginUserNew; import org.jeecg.common.system.vo.SysUserModel; import org.jeecg.common.util.CheckPasswordUtil; import org.jeecg.common.util.PasswordUtil; @@ -37,6 +43,7 @@ import java.util.List; * @Author YangYuanChen * @Data 20242024/8/21下午2:06 */ +@Slf4j @Service public class EmergencyCenterAdminServiceImpl extends ServiceImpl implements IEmergencyCenterAdminService { @@ -44,6 +51,10 @@ public class EmergencyCenterAdminServiceImpl extends ServiceImpl customPage(String centerId, String type, String realName, Integer pageNo, Integer pageSize) { @@ -101,6 +112,21 @@ public class EmergencyCenterAdminServiceImpl extends ServiceImpl users = sysBaseAPI.listUserByIds(new ListUser(Collections.singletonList(userId))); + if (CollUtil.isNotEmpty(users)) { + ConSessionRequestDO req = new ConSessionRequestDO(); + req.setAccountList(Collections.singletonList(users.get(0))); + imHelloApi.accountReg(req); + } + } catch (Exception e) { + log.error("同步IM个人资料失败, userId: {}", userId, e); + } } @Override diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencyProfessionUserServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencyProfessionUserServiceImpl.java index 9ae4804..7608323 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencyProfessionUserServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencyProfessionUserServiceImpl.java @@ -17,8 +17,14 @@ import com.renkang.emergency.manager.PermissionManager; import com.renkang.emergency.mapper.EmergencyProfessionUserMapper; import com.renkang.emergency.mapper.EmergencySchedulesNewItemMapper; import com.renkang.emergency.service.EmergencyProfessionUserService; +import com.renkang.im.api.IMHelloApi; +import com.renkang.im.entity.ConSessionRequestDO; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.bean.request.ListUser; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.ExceptionAssertsUtil; +import org.jeecg.common.system.api.ISysBaseAPI; +import org.jeecg.common.system.vo.LoginUserNew; import org.jeecg.common.system.vo.SysUserModel; import org.jeecg.common.util.PasswordUtil; import org.jeecg.redis.RedisStreamKeyEnum; @@ -27,6 +33,7 @@ import org.jeecg.util.RSAEncryptUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -37,6 +44,7 @@ import java.util.stream.Collectors; * @author stan * @since 2024-09-12 09:38:13 */ +@Slf4j @Service public class EmergencyProfessionUserServiceImpl extends ServiceImpl implements EmergencyProfessionUserService { @@ -48,6 +56,10 @@ public class EmergencyProfessionUserServiceImpl extends ServiceImpl customPage(String name, String centerId, int type, int pageNo, int pageSize) { @@ -145,6 +157,21 @@ public class EmergencyProfessionUserServiceImpl extends ServiceImpl users = sysBaseAPI.listUserByIds(new ListUser(Collections.singletonList(userId))); + if (CollUtil.isNotEmpty(users)) { + ConSessionRequestDO req = new ConSessionRequestDO(); + req.setAccountList(Collections.singletonList(users.get(0))); + imHelloApi.accountReg(req); + } + } catch (Exception e) { + log.error("同步IM个人资料失败, userId: {}", userId, e); + } } @Override diff --git a/health-im/health-im-api/src/main/java/com/renkang/im/dto/AddGroupMemberDTO.java b/health-im/health-im-api/src/main/java/com/renkang/im/dto/AddGroupMemberDTO.java index 7bb39d2..d0b9810 100644 --- a/health-im/health-im-api/src/main/java/com/renkang/im/dto/AddGroupMemberDTO.java +++ b/health-im/health-im-api/src/main/java/com/renkang/im/dto/AddGroupMemberDTO.java @@ -55,5 +55,10 @@ public class AddGroupMemberDTO { * 群成员名称(可选,仅用于IM账号导入,不发送到腾讯IM) */ private String memberName; + + /** + * 群成员头像URL(可选,仅用于IM账号导入,不发送到腾讯IM) + */ + private String memberAvatar; } } diff --git a/health-im/health-im-biz/src/main/java/com/renkang/im/util/TencentCloudImUtil.java b/health-im/health-im-biz/src/main/java/com/renkang/im/util/TencentCloudImUtil.java index fe46454..15c293e 100644 --- a/health-im/health-im-biz/src/main/java/com/renkang/im/util/TencentCloudImUtil.java +++ b/health-im/health-im-biz/src/main/java/com/renkang/im/util/TencentCloudImUtil.java @@ -554,13 +554,16 @@ public class TencentCloudImUtil { try { // 先导入账号及其名称,确保成员在IM系统中已注册 if (dto.getMemberList() != null && !dto.getMemberList().isEmpty()) { - // 构建腾讯IM新版 AccountList 格式(含昵称) + // 构建腾讯IM新版 AccountList 格式(含昵称和头像) List 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); diff --git a/jeecg-system/jeecg-system-biz/pom.xml b/jeecg-system/jeecg-system-biz/pom.xml index 7e81c39..ca6f49e 100644 --- a/jeecg-system/jeecg-system-biz/pom.xml +++ b/jeecg-system/jeecg-system-biz/pom.xml @@ -84,6 +84,10 @@ com.renkang xj-anyan-api + + com.renkang + health-im-api + diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index eda9586..4f45e4b 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -1,6 +1,7 @@ package org.jeecg.modules.system.controller; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HtmlUtil; import com.alibaba.fastjson.JSON; @@ -11,12 +12,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.renkang.im.api.IMHelloApi; +import com.renkang.im.entity.ConSessionRequestDO; import io.swagger.v3.oas.annotations.Parameter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresRoles; +import org.jeecg.bean.request.ListUser; import org.jeecg.bean.request.PeoplePsyAssessPlanVO; import org.jeecg.bean.request.PeopleStatisticVO; import org.jeecg.common.api.vo.Result; @@ -25,6 +29,7 @@ import org.jeecg.common.aspect.annotation.PermissionData; import org.jeecg.common.config.TenantContext; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.SymbolConstant; +import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.bean.request.ResetPassword; import org.jeecg.common.system.bean.request.SimpleUser; import org.jeecg.common.system.bean.response.BaseUser; @@ -32,6 +37,7 @@ import org.jeecg.common.system.bean.response.GroupUser; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.system.vo.LoginUserNew; import org.jeecg.common.system.vo.SysUserModel; import org.jeecg.common.util.*; import org.jeecg.config.mybatis.MybatisPlusSaasConfig; @@ -130,6 +136,10 @@ public class SysUserController { private ISysUserPostService sysUserPostService; @Autowired private UserCacheManager userCacheManager; + @Autowired + private IMHelloApi imHelloApi; + @Autowired + private ISysBaseAPI sysBaseAPI; @GetMapping("userRoles") public Result userRoles(@RequestParam String userId) { if (StrUtil.isBlank(userId)) { @@ -524,6 +534,8 @@ public class SysUserController { //获取租户ids String relTenantIds = jsonObject.getString("relTenantIds"); sysUserService.editUser(user, roles, departs, relTenantIds); + // 同步IM个人资料 + syncImProfile(user.getId()); result.success("修改成功!"); } } catch (Exception e) { @@ -1711,6 +1723,8 @@ public class SysUserController { } sysUser.setUpdateTime(new Date()); sysUserService.updateById(sysUser); + // 同步IM个人资料 + syncImProfile(sysUser.getId()); } } catch (Exception e) { log.error(e.getMessage(), e); @@ -2335,4 +2349,17 @@ public class SysUserController { Page page = new Page<>(pageNo, pageSize); return Result.ok(sysUserService.scopeUserList(query,page)); } + + private void syncImProfile(String userId) { + try { + List users = sysBaseAPI.listUserByIds(new ListUser(Collections.singletonList(userId))); + if (CollUtil.isNotEmpty(users)) { + ConSessionRequestDO req = new ConSessionRequestDO(); + req.setAccountList(Collections.singletonList(users.get(0))); + imHelloApi.accountReg(req); + } + } catch (Exception e) { + log.error("同步IM个人资料失败, userId: {}", userId, e); + } + } } diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/HealthUserEmployeeExServiceImpl.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/HealthUserEmployeeExServiceImpl.java index 7aa1da9..7948cf2 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/HealthUserEmployeeExServiceImpl.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/HealthUserEmployeeExServiceImpl.java @@ -16,6 +16,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.renkang.consultation.api.ConSessionHelloApi; import com.renkang.consultation.vo.FamilyNum; +import com.renkang.im.api.IMHelloApi; +import com.renkang.im.entity.ConSessionRequestDO; import com.renkang.watch.api.WatchApi; import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.utils.Lists; @@ -24,6 +26,7 @@ import org.jeecg.bean.entity.UserDataRecordBWH; import org.jeecg.bean.entity.UserDataRecordBmi; import org.jeecg.bean.enums.UserDataSourceEnum; import org.jeecg.bean.request.HealthMealsWeightQueryVO; +import org.jeecg.bean.request.ListUser; import org.jeecg.bean.request.QueryWeightSignUserParam; import org.jeecg.bean.response.*; import org.jeecg.common.api.vo.Result; @@ -34,6 +37,7 @@ import org.jeecg.common.export.PoiExportHandler; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.util.DictUtil; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.system.vo.LoginUserNew; import org.jeecg.common.system.vo.SysUserModel; import org.jeecg.common.util.*; import org.jeecg.config.mybatis.AnalyzeTableManager; @@ -122,6 +126,8 @@ public class HealthUserEmployeeExServiceImpl extends ServiceImpl users = sysBaseAPI.listUserByIds(new ListUser(Collections.singletonList(userId))); + if (CollUtil.isNotEmpty(users)) { + ConSessionRequestDO req = new ConSessionRequestDO(); + req.setAccountList(Collections.singletonList(users.get(0))); + imHelloApi.accountReg(req); + } + } catch (Exception e) { + log.error("同步IM个人资料失败, userId: {}", userId, e); + } + } + public boolean updateByIdAndUser(UserEmployee userEmployee) { // 添加账号 电话 身份证号校验 /* List checkExistUser = sysBaseAPI.checkExistUser(userEmployee.getId(), userEmployee.getUsername(), userEmployee.getPhone(), userEmployee.getIdCard()); diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index df5f731..3748401 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java @@ -19,6 +19,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.renkang.im.api.IMHelloApi; +import com.renkang.im.entity.ConSessionRequestDO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -35,6 +37,7 @@ import org.jeecg.bean.entity.UserDataRecordBmi; import org.jeecg.bean.enums.UserDataSourceEnum; import org.jeecg.bean.request.PeoplePsyAssessPlanVO; import org.jeecg.bean.request.PeopleStatisticVO; +import org.jeecg.bean.request.ListUser; import org.jeecg.bean.response.BaseEmployeeInfo; import org.jeecg.common.api.vo.Result; import org.jeecg.common.bean.request.StatAllReq; @@ -50,6 +53,7 @@ import org.jeecg.common.desensitization.annotation.SensitiveEncode; import org.jeecg.common.exception.ExceptionAssertsUtil; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.export.PoiExportHandler; +import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.bean.request.ResetPassword; import org.jeecg.common.system.bean.request.SimpleUser; import org.jeecg.common.system.bean.request.SysUserInfoDO; @@ -197,6 +201,10 @@ public class SysUserServiceImpl extends ServiceImpl impl private UserDataRecordBWHMapper bwhMapper; @Autowired private UserDataRecordBmiMapper bmiMapper; + @Autowired + private IMHelloApi imHelloApi; + @Autowired + private ISysBaseAPI sysBaseAPI; private final GroupUserExportHandler groupUserExportHandler = new GroupUserExportHandler(); @@ -1811,6 +1819,21 @@ public class SysUserServiceImpl extends ServiceImpl impl userModel.setId(loginUser.getId()); userModel.setAvatar(avatar); redisStreamUtil.add(RedisStreamKeyEnum.UPDATE_USER_INFO, RedisConstant.REDIS_STREAM_KEY_FIELD, userModel); + // 同步IM个人资料 + syncImProfile(loginUser.getId()); + } + + private void syncImProfile(String userId) { + try { + List users = sysBaseAPI.listUserByIds(new ListUser(Collections.singletonList(userId))); + if (CollUtil.isNotEmpty(users)) { + ConSessionRequestDO req = new ConSessionRequestDO(); + req.setAccountList(Collections.singletonList(users.get(0))); + imHelloApi.accountReg(req); + } + } catch (Exception e) { + log.error("同步IM个人资料失败, userId: {}", userId, e); + } } @Override