diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/EmergencyApiService.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/EmergencyApiService.java index f2ce0b0..cc918ae 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/EmergencyApiService.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/EmergencyApiService.java @@ -45,5 +45,10 @@ public interface EmergencyApiService { boolean addGroupUser(AddOtherMemberDTO dto); + /** + * 拉入关爱联络员和急救人员到群聊(兜底补拉用,失败不抛异常) + */ + void addCareUsersToGroup(String userId, String groupId, String orderId); + boolean removeGroupUser(RemoveGroupMemberDTO dto); } 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 7038249..ad4cd76 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 @@ -1001,7 +1001,7 @@ public class EmergencyApiServiceImpl implements EmergencyApiService { * @param groupId IM群组ID * @param orderId 应急工单ID */ - private void addCareUsersToGroup(String userId, String groupId, String orderId) { + public void addCareUsersToGroup(String userId, String groupId, String orderId) { try { // 1. 获取发起人工号 List employeeInfos = sysBaseAPI.queryBaseEmployeeInfo(Collections.singleton(userId)); diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyOrderApiServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyOrderApiServiceImpl.java index 35b4794..463ddea 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyOrderApiServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/EmergencyOrderApiServiceImpl.java @@ -83,6 +83,8 @@ public class EmergencyOrderApiServiceImpl implements EmergencyOrderApiService { private ISysBaseAPI sysBaseAPI; @Autowired private EmergencyCloudManager emergencyCloudManager; + @Autowired + private com.renkang.emergency.api.service.EmergencyApiService emergencyApiService; @Override public IPage initUserOrderPage(Page page) { @@ -735,7 +737,15 @@ public class EmergencyOrderApiServiceImpl implements EmergencyOrderApiService { } String orderId = order.getId(); - // 2. 查order_operator表获取本地参与人员 + // 2. 兜底补拉关爱联络员+急救人员1+急救人员2(重新查询安眼系统) + // 发起应急时这些人员可能还未注册,此处兜底 + try { + emergencyApiService.addCareUsersToGroup(order.getInitiatorUserId(), sessionId, orderId); + } catch (Exception e) { + log.warn("兜底补拉关爱/急救人员异常, sessionId={}", sessionId, e); + } + + // 3. 查order_operator表获取本地参与人员 List orderOperators = orderOperatorMapper.selectList( new LambdaQueryWrapper() .eq(OrderOperator::getOrderId, orderId)); @@ -746,7 +756,7 @@ public class EmergencyOrderApiServiceImpl implements EmergencyOrderApiService { .collect(Collectors.toList()); } - // 3. 调腾讯IM获取实际群成员 + // 4. 调腾讯IM获取实际群成员 Set imMemberAccounts = new HashSet<>(); boolean imSuccess = false; try { @@ -762,18 +772,18 @@ public class EmergencyOrderApiServiceImpl implements EmergencyOrderApiService { log.error("获取腾讯IM群成员失败,sessionId: {},降级使用本地参与人员", sessionId, e); } - // 4. 自动补拉预设成员入群(仅IM可用时) + // 5. 自动补拉其他遗漏的预设成员(仅IM可用时) if (imSuccess) { autoInvitePresetMembers(sessionId, order, imMemberAccounts, localUserIds, loginUser); } - // 5. 如果IM调用失败,降级使用本地成员全集 + // 6. 如果IM调用失败,降级使用本地成员全集 final Set validAccounts = imSuccess ? imMemberAccounts : new HashSet<>(localUserIds); if (!imSuccess) { log.warn("腾讯IM调用失败,降级返回本地参与人员 {} 人, sessionId: {}", localUserIds.size(), sessionId); } - // 6. 发起人:匹配验证集 + // 7. 发起人:匹配验证集 if (validAccounts.contains(order.getInitiatorUserId())) { handleGroupMember(groupMemberVos, orderId, order.getInitiatorUserId(), @@ -783,7 +793,7 @@ public class EmergencyOrderApiServiceImpl implements EmergencyOrderApiService { 1, -1); } - // 7. 查order_operator表,匹配验证集 + // 8. 查order_operator表,匹配验证集 if (CollectionUtils.isNotEmpty(orderOperators)) { // 查询专业用户信息 Map profUserMap = new HashMap<>(); @@ -831,7 +841,7 @@ public class EmergencyOrderApiServiceImpl implements EmergencyOrderApiService { } } - // 8. 标记本人 + // 9. 标记本人 String currentUserId = loginUser.getId(); groupMemberVos.forEach(vo -> vo.setIsSelf(currentUserId.equals(vo.getUserId()) ? 1 : 0)); return groupMemberVos; @@ -852,7 +862,7 @@ public class EmergencyOrderApiServiceImpl implements EmergencyOrderApiService { /** * 自动补拉预设成员入群 - * 预设成员:被救助人 + order_operator 中所有参与人员(操作人员、专业人员、紧急联系人、健康联络员) + * 预设成员:被救助人 + order_operator 所有参与人员 * 群成员总数不超过9人 */ private void autoInvitePresetMembers(String sessionId, Order order, Set imMemberAccounts,