|
|
@@ -50,8 +50,6 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
private ImGroupMemberPlusService imGroupMemberPlusService;
|
|
|
@Resource
|
|
|
private ImGroupNoticeDao imGroupNoticeDao;
|
|
|
- @Resource
|
|
|
- private ImGroupMemberService imGroupMemberService;
|
|
|
|
|
|
/**
|
|
|
* IM 用户注册
|
|
|
@@ -143,7 +141,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public String groupCreate(ImGroupMemberWrapper.ImGroupMember userInfo, ImGroupWrapper.ImGroup imGroup) throws Exception {
|
|
|
+ public String groupCreate(ImGroupMemberWrapper.ImGroupMember userInfo, ImGroupWrapper.ImGroup imGroup){
|
|
|
|
|
|
String id = Optional.ofNullable(imGroup.getId()).orElse(String.valueOf(IdWorker.getId()));
|
|
|
// 生成群组ID
|
|
|
@@ -179,13 +177,38 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
if (Objects.nonNull(imGroup.getGroupType())) {
|
|
|
groupAvatar = imGroup.getGroupType().getAvatar();
|
|
|
}
|
|
|
+ Boolean createFlag = true;
|
|
|
// 创建IM群组
|
|
|
- imPluginContext.getPluginService().groupCreate(imGroup.getGroupId(), imGroup.getName(), groupAvatar, imUserId);
|
|
|
+ try {
|
|
|
+ imPluginContext.getPluginService().groupCreate(imGroup.getGroupId(), imGroup.getName(), groupAvatar, imUserId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("groupAdminCreate error", e);
|
|
|
+ createFlag = false;
|
|
|
+ //修改群状态
|
|
|
+ imGroupService.lambdaUpdate().eq(ImGroupPlus::getId, imGroup.getGroupId())
|
|
|
+ .set(ImGroupPlus::getCreateUserId, imUserId)
|
|
|
+ .set(ImGroupPlus::getCreateFlag, false).update();
|
|
|
+ //修改群成员状态
|
|
|
+ List<Long> userIds = groupMembers.stream().map(ImGroupMemberWrapper.ImGroupMember::getUserId).collect(Collectors.toList());
|
|
|
+ imGroupMemberPlusService.lambdaUpdate().in(ImGroupMemberPlus::getUserId, userIds)
|
|
|
+ .eq(ImGroupMemberPlus::getImGroupId, imGroup.getGroupId())
|
|
|
+ .set(ImGroupMemberPlus::getJoinGroup, false).update();
|
|
|
+ }
|
|
|
|
|
|
- if (userInfo != null) {
|
|
|
+ //只有创建成功,才走下面的流程
|
|
|
+ if (createFlag && userInfo != null) {
|
|
|
// 添加群成员到当前群组
|
|
|
List<GroupMemberWrapper.ImGroupMember> imGroupMembers = getImGroupMembers(groupMembers);
|
|
|
- imPluginContext.getPluginService().groupJoin(imGroup.getGroupId(), imGroup.getName(),imGroupMembers);
|
|
|
+ try {
|
|
|
+ imPluginContext.getPluginService().groupJoin(imGroup.getGroupId(), imGroup.getName(),imGroupMembers);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("groupJoin error", e);
|
|
|
+ //修改群成员状态
|
|
|
+ List<Long> userIds = groupMembers.stream().map(ImGroupMemberWrapper.ImGroupMember::getUserId).collect(Collectors.toList());
|
|
|
+ imGroupMemberPlusService.lambdaUpdate().in(ImGroupMemberPlus::getUserId, userIds)
|
|
|
+ .eq(ImGroupMemberPlus::getImGroupId, imGroup.getGroupId())
|
|
|
+ .set(ImGroupMemberPlus::getJoinGroup, false).update();
|
|
|
+ }
|
|
|
//设置管理员
|
|
|
groupMembers.stream().filter(o -> StringUtils.isNotEmpty(o.getGroupRoleType()) && !StringUtils.equals(o.getGroupRoleType(),"Member")).forEach(o -> {
|
|
|
try {
|
|
|
@@ -440,7 +463,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
* @throws Exception Exception
|
|
|
*/
|
|
|
@Override
|
|
|
- public void saveImGroupMemberList(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
|
|
|
+ public void saveImGroupMemberList(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
|
|
|
|
|
|
if (CollectionUtils.isEmpty(groupMembers)) {
|
|
|
// 群成员为空,直接忽略
|
|
|
@@ -466,7 +489,16 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
groupMembers = groupMembers.stream().filter(ImGroupMemberWrapper.ImGroupMember::getGroupJoin).collect(Collectors.toList());
|
|
|
// 添加群成员到当前群组
|
|
|
List<GroupMemberWrapper.ImGroupMember> imGroupMembers = getImGroupMembers(groupMembers);
|
|
|
- imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(), imGroupMembers);
|
|
|
+ try {
|
|
|
+ imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(), imGroupMembers);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("groupJoin error", e);
|
|
|
+ //修改群成员状态
|
|
|
+ List<Long> userIds = groupMembers.stream().map(ImGroupMemberWrapper.ImGroupMember::getUserId).collect(Collectors.toList());
|
|
|
+ imGroupMemberPlusService.lambdaUpdate().in(ImGroupMemberPlus::getUserId, userIds)
|
|
|
+ .eq(ImGroupMemberPlus::getImGroupId, imGroup.getId())
|
|
|
+ .set(ImGroupMemberPlus::getJoinGroup, false).update();
|
|
|
+ }
|
|
|
//设置管理员
|
|
|
groupMembers.stream().filter(o -> StringUtils.isNotEmpty(o.getGroupRoleType()) && !StringUtils.equals(o.getGroupRoleType(),"Member")).forEach(o -> {
|
|
|
try {
|
|
|
@@ -498,7 +530,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
* @throws Exception Exception
|
|
|
*/
|
|
|
@Override
|
|
|
- public void groupMemberJoin(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
|
|
|
+ public void groupMemberJoin(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
|
|
|
|
|
|
// 群组信息
|
|
|
ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, imGroupId).last("LIMIT 1").one();
|
|
|
@@ -512,7 +544,16 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
}
|
|
|
// 添加群成员到当前群组
|
|
|
List<GroupMemberWrapper.ImGroupMember> imGroupMembers = getImGroupMembers(groupMembers);
|
|
|
- imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(),imGroupMembers);
|
|
|
+ try {
|
|
|
+ imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(),imGroupMembers);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("groupJoin error", e);
|
|
|
+ //修改群成员状态
|
|
|
+ List<Long> userIds = groupMembers.stream().map(ImGroupMemberWrapper.ImGroupMember::getUserId).collect(Collectors.toList());
|
|
|
+ imGroupMemberPlusService.lambdaUpdate().in(ImGroupMemberPlus::getUserId, userIds)
|
|
|
+ .eq(ImGroupMemberPlus::getImGroupId, imGroup.getId())
|
|
|
+ .set(ImGroupMemberPlus::getJoinGroup, false).update();
|
|
|
+ }
|
|
|
//设置管理员
|
|
|
groupMembers.stream().filter(o -> StringUtils.isNotEmpty(o.getGroupRoleType()) && !StringUtils.equals(o.getGroupRoleType(),"Member")).forEach(o -> {
|
|
|
try {
|
|
|
@@ -627,4 +668,54 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void retryCreateGroup() {
|
|
|
+ // 查询未创建成功的群组
|
|
|
+ List<ImGroupPlus> imGroups = imGroupService.lambdaQuery()
|
|
|
+ .eq(ImGroupPlus::getCreateFlag, false)
|
|
|
+ .list();
|
|
|
+ List<String> groupIds = new ArrayList<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(imGroups)) {
|
|
|
+ for (ImGroupPlus imGroup : imGroups) {
|
|
|
+ try {
|
|
|
+ imPluginContext.getPluginService().groupCreate(imGroup.getId(), imGroup.getName(), imGroup.getCreateUserId());
|
|
|
+ imGroupService.lambdaUpdate().eq(ImGroupPlus::getId, imGroup.getId())
|
|
|
+ .set(ImGroupPlus::getCreateFlag, true).update();
|
|
|
+ } catch (Exception e) {
|
|
|
+ groupIds.add(imGroup.getId());
|
|
|
+ log.error("retryCreateGroup error", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 查询未加入成功的群组
|
|
|
+ List<ImGroupMemberPlus> imGroupMembers = imGroupMemberPlusService.lambdaQuery()
|
|
|
+ .eq(ImGroupMemberPlus::getJoinGroup, false)
|
|
|
+ .list();
|
|
|
+ if (CollectionUtils.isNotEmpty(imGroupMembers)) {
|
|
|
+ //排除掉已经创建失败的群组
|
|
|
+ List<ImGroupMemberPlus> collect = imGroupMembers.stream().filter(o -> !groupIds.contains(o.getImGroupId())).collect(Collectors.toList());
|
|
|
+ //按照群组ID分组
|
|
|
+ collect.stream().collect(Collectors.groupingBy(ImGroupMemberPlus::getImGroupId)).forEach((k,v) -> {
|
|
|
+ try {
|
|
|
+ List<GroupMemberWrapper.ImGroupMember> imGroupMembers1 = v.stream().map(o -> {
|
|
|
+ return GroupMemberWrapper.ImGroupMember.builder()
|
|
|
+ .userId(o.getUserId().longValue())
|
|
|
+ .groupId(o.getImGroupId())
|
|
|
+ .clientType(o.getRoleType())
|
|
|
+ .imUserId(getImUserId(o.getUserId().toString(), o.getRoleType()))
|
|
|
+ .build();
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ imPluginContext.getPluginService().groupJoin(k,k, imGroupMembers1);
|
|
|
+ //修改群成员状态
|
|
|
+ List<Long> userIds = imGroupMembers1.stream().map(GroupMemberWrapper.ImGroupMember::getUserId).collect(Collectors.toList());
|
|
|
+ imGroupMemberPlusService.lambdaUpdate().in(ImGroupMemberPlus::getUserId, userIds)
|
|
|
+ .eq(ImGroupMemberPlus::getImGroupId, k)
|
|
|
+ .set(ImGroupMemberPlus::getJoinGroup, true).update();
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("retryCreateGroup error", e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|