|
@@ -7,8 +7,8 @@ import com.google.common.collect.Lists;
|
|
|
import com.microsvc.toolkit.common.tools.ThreadPool;
|
|
|
import com.microsvc.toolkit.middleware.im.ImPluginContext;
|
|
|
import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
|
|
|
-import com.ym.mec.biz.dal.entity.ImGroup;
|
|
|
-import com.ym.mec.biz.dal.entity.ImGroupMember;
|
|
|
+import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
|
|
|
+import com.ym.mec.biz.dal.entity.ImGroupPlus;
|
|
|
import com.ym.mec.biz.dal.enums.EFriendRoleType;
|
|
|
import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
|
|
|
import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
|
|
@@ -42,7 +42,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
@Autowired
|
|
|
private ImGroupPlusService imGroupService;
|
|
|
@Autowired
|
|
|
- private ImGroupMemberPlusService imGroupMemberService;
|
|
|
+ private ImGroupMemberPlusService imGroupMemberPlusService;
|
|
|
|
|
|
/**
|
|
|
* IM 用户注册
|
|
@@ -142,7 +142,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
.type(Optional.ofNullable(imGroup.getType()).orElse("CLASS"))
|
|
|
.groupId(String.valueOf(id));
|
|
|
|
|
|
- ImGroup group = JSON.parseObject(imGroup.jsonString(), ImGroup.class);
|
|
|
+ ImGroupPlus group = JSON.parseObject(imGroup.jsonString(), ImGroupPlus.class);
|
|
|
group.setId(imGroup.getGroupId());
|
|
|
// 保存群组信息
|
|
|
imGroupService.saveOrUpdate(group);
|
|
@@ -154,14 +154,19 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
groupMembers = Lists.newArrayList(userInfo);
|
|
|
|
|
|
groupMembers.add(userInfo.imUserId(imUserId));
|
|
|
- imGroupMemberService.insertBatch(getImGroupMemberEntity(groupMembers));
|
|
|
+ imGroupMemberPlusService.insertBatch(getImGroupMemberEntity(groupMembers));
|
|
|
|
|
|
// 自动激活学生IM帐号
|
|
|
registerUser(groupMembers);
|
|
|
}
|
|
|
|
|
|
+ // 群默认头象
|
|
|
+ String groupAvatar = "";
|
|
|
+ if (Objects.nonNull(imGroup.getGroupType())) {
|
|
|
+ groupAvatar = imGroup.getGroupType().getAvatar();
|
|
|
+ }
|
|
|
// 创建IM群组
|
|
|
- imPluginContext.getPluginService().groupCreate(imGroup.getGroupId(), imGroup.getName(),imUserId);
|
|
|
+ imPluginContext.getPluginService().groupCreate(imGroup.getGroupId(), imGroup.getName(), groupAvatar, imUserId);
|
|
|
|
|
|
if (userInfo != null) {
|
|
|
// 添加群成员到当前群组
|
|
@@ -171,12 +176,12 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
return group.getId();
|
|
|
}
|
|
|
|
|
|
- private List<ImGroupMember> getImGroupMemberEntity(List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
|
|
|
+ private List<ImGroupMemberPlus> getImGroupMemberEntity(List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
|
|
|
if (CollectionUtils.isEmpty(groupMembers)) {
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
return groupMembers.stream().map(o -> {
|
|
|
- ImGroupMember imGroupMember = new ImGroupMember();
|
|
|
+ ImGroupMemberPlus imGroupMember = new ImGroupMemberPlus();
|
|
|
imGroupMember.setImGroupId(o.getGroupId());
|
|
|
imGroupMember.setUserId(o.getUserId().intValue());
|
|
|
imGroupMember.setNickname(o.getNickname());
|
|
@@ -248,25 +253,25 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
public void groupDismiss(String groupId) throws Exception {
|
|
|
|
|
|
// 判定登录用户是否为群主
|
|
|
- ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
|
|
|
+ ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
|
|
|
if (Objects.isNull(imGroup)) {
|
|
|
throw new BizException("群组不存在");
|
|
|
}
|
|
|
|
|
|
|
|
|
// 获取群成员
|
|
|
- List<ImGroupMemberWrapper.ImGroupMember> groupMembers = imGroupMemberService.lambdaQuery()
|
|
|
- .select(ImGroupMember::getUserId, ImGroupMember::getImGroupId, ImGroupMember::getRoleType)
|
|
|
- .eq(ImGroupMember::getImGroupId, groupId)
|
|
|
+ List<ImGroupMemberWrapper.ImGroupMember> groupMembers = imGroupMemberPlusService.lambdaQuery()
|
|
|
+ .select(ImGroupMemberPlus::getUserId, ImGroupMemberPlus::getImGroupId, ImGroupMemberPlus::getRoleType)
|
|
|
+ .eq(ImGroupMemberPlus::getImGroupId, groupId)
|
|
|
.list().stream()
|
|
|
.map(x -> ImGroupMemberWrapper.ImGroupMember.builder().userId(x.getUserId().longValue()).groupId(x.getImGroupId()).clientType(x.getRoleType()).build())
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
// 删除群组
|
|
|
- imGroupService.remove(Wrappers.<ImGroup>lambdaQuery().eq(ImGroup::getId, groupId));
|
|
|
+ imGroupService.remove(Wrappers.<ImGroupPlus>lambdaQuery().eq(ImGroupPlus::getId, groupId));
|
|
|
|
|
|
// 删除群组成员
|
|
|
- imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
|
|
|
+ imGroupMemberPlusService.remove(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId, groupId));
|
|
|
|
|
|
// 解散群
|
|
|
imPluginContext.getPluginService().groupDismiss(imGroup.getId(), getImGroupMembers(groupMembers));
|
|
@@ -284,18 +289,19 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
public void groupQuit(GroupMemberWrapper.ImGroupMember imGroupMember, String groupId) throws Exception {
|
|
|
|
|
|
// 判定登录用户是否为群主
|
|
|
- ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
|
|
|
+ ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
|
|
|
if (Objects.isNull(imGroup)) {
|
|
|
throw new BizException("群组不存在");
|
|
|
}
|
|
|
|
|
|
// 统计当前群成员用户数
|
|
|
- long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
|
|
|
+ long count = imGroupMemberPlusService.count(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId
|
|
|
+ , groupId));
|
|
|
|
|
|
// 删除当前用户群成员身份
|
|
|
- boolean remove = imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery()
|
|
|
- .eq(ImGroupMember::getImGroupId, groupId)
|
|
|
- .eq(ImGroupMember::getUserId, imGroupMember.getUserId())
|
|
|
+ boolean remove = imGroupMemberPlusService.remove(Wrappers.<ImGroupMemberPlus>lambdaQuery()
|
|
|
+ .eq(ImGroupMemberPlus::getImGroupId, groupId)
|
|
|
+ .eq(ImGroupMemberPlus::getUserId, imGroupMember.getUserId())
|
|
|
// .eq(ImGroupMember::getRoleType, imGroupMember.getRoleType())
|
|
|
);
|
|
|
if (!remove) {
|
|
@@ -305,8 +311,8 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
|
|
|
// 修改群组成员数
|
|
|
imGroupService.lambdaUpdate()
|
|
|
- .eq(ImGroup::getId, imGroup.getId())
|
|
|
- .set(ImGroup::getMemberNum, count - 1)
|
|
|
+ .eq(ImGroupPlus::getId, imGroup.getId())
|
|
|
+ .set(ImGroupPlus::getMemberNum, count - 1)
|
|
|
.update();
|
|
|
|
|
|
// 群主退出
|
|
@@ -330,7 +336,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
|
|
|
|
|
|
// 判定登录用户是否为群主
|
|
|
- ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
|
|
|
+ ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
|
|
|
if (Objects.isNull(imGroup)) {
|
|
|
throw new BizException("群组不存在");
|
|
|
}
|
|
@@ -344,9 +350,9 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
|
|
|
|
|
|
// 删除当前用户群成员身份
|
|
|
- boolean remove = imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery()
|
|
|
- .eq(ImGroupMember::getImGroupId, groupId)
|
|
|
- .in(ImGroupMember::getUserId, userIds)
|
|
|
+ boolean remove = imGroupMemberPlusService.remove(Wrappers.<ImGroupMemberPlus>lambdaQuery()
|
|
|
+ .eq(ImGroupMemberPlus::getImGroupId, groupId)
|
|
|
+ .in(ImGroupMemberPlus::getUserId, userIds)
|
|
|
);
|
|
|
if (!remove) {
|
|
|
// 用户主动退出群聊失败
|
|
@@ -354,12 +360,12 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
}
|
|
|
|
|
|
// 统计当前群成员用户数
|
|
|
- long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
|
|
|
+ long count = imGroupMemberPlusService.count(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId, groupId));
|
|
|
|
|
|
// 修改群组成员数
|
|
|
imGroupService.lambdaUpdate()
|
|
|
- .eq(ImGroup::getId, imGroup.getId())
|
|
|
- .set(ImGroup::getMemberNum, count)
|
|
|
+ .eq(ImGroupPlus::getId, imGroup.getId())
|
|
|
+ .set(ImGroupPlus::getMemberNum, count)
|
|
|
.update();
|
|
|
imPluginContext.getPluginService().groupQuit(imGroup.getId(), imGroupMembers);
|
|
|
|
|
@@ -376,7 +382,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
@Override
|
|
|
public void groupQuit(Long userId, String clientType, String imGroupId) throws Exception {
|
|
|
|
|
|
- ImGroup imGroup = imGroupService.getById(imGroupId);
|
|
|
+ ImGroupPlus imGroup = imGroupService.getById(imGroupId);
|
|
|
if (Objects.isNull(imGroup)) {
|
|
|
throw new BizException("群组不存在");
|
|
|
}
|
|
@@ -410,9 +416,9 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
item.id(IdWorker.getId()).imUserId(getImUserId(item.getUserId().toString(), item.getClientType())).setGroupId(imGroupId);
|
|
|
}
|
|
|
|
|
|
- imGroupMemberService.insertBatch(getImGroupMemberEntity(groupMembers));
|
|
|
+ imGroupMemberPlusService.insertBatch(getImGroupMemberEntity(groupMembers));
|
|
|
// 判断群ID是否有效
|
|
|
- ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, imGroupId).last("LIMIT 1").one();
|
|
|
+ ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, imGroupId).last("LIMIT 1").one();
|
|
|
if (Objects.isNull(imGroup)) {
|
|
|
throw new BizException("群组不存在");
|
|
|
}
|
|
@@ -443,7 +449,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
public void saveImGroupMemberList(Long imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
|
|
|
|
|
|
// 群组信息
|
|
|
- ImGroup imGroup = imGroupService.getById(imGroupId);
|
|
|
+ ImGroupPlus imGroup = imGroupService.getById(imGroupId);
|
|
|
if (Objects.isNull(imGroup)) {
|
|
|
throw new BizException("群组不存在");
|
|
|
}
|
|
@@ -463,7 +469,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
public void groupMemberJoin(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
|
|
|
|
|
|
// 群组信息
|
|
|
- ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, imGroupId).last("LIMIT 1").one();
|
|
|
+ ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, imGroupId).last("LIMIT 1").one();
|
|
|
if (Objects.isNull(imGroup)) {
|
|
|
throw new BizException("群组不存在");
|
|
|
}
|
|
@@ -487,15 +493,15 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
* @param groupId 群组ID
|
|
|
* @param imGroup ImGroup
|
|
|
*/
|
|
|
- private void updateGroupMemberNumber(String groupId, ImGroup imGroup) {
|
|
|
+ private void updateGroupMemberNumber(String groupId, ImGroupPlus imGroup) {
|
|
|
|
|
|
// 统计当前群成员用户数
|
|
|
- long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
|
|
|
+ long count = imGroupMemberPlusService.count(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId, groupId));
|
|
|
|
|
|
// 修改群组成员数
|
|
|
imGroupService.lambdaUpdate()
|
|
|
- .eq(ImGroup::getId, imGroup.getId())
|
|
|
- .set(ImGroup::getMemberNum, count)
|
|
|
+ .eq(ImGroupPlus::getId, imGroup.getId())
|
|
|
+ .set(ImGroupPlus::getMemberNum, count)
|
|
|
.update();
|
|
|
}
|
|
|
|
|
@@ -511,7 +517,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
|
|
|
public void groupJoin(Long userId, String clientType, String imGroupId) throws Exception {
|
|
|
|
|
|
// 群组信息
|
|
|
- ImGroup imGroup = imGroupService.getById(imGroupId);
|
|
|
+ ImGroupPlus imGroup = imGroupService.getById(imGroupId);
|
|
|
if (Objects.isNull(imGroup)) {
|
|
|
throw new BizException("群组不存在");
|
|
|
}
|