|
@@ -56,6 +56,7 @@ import com.yonge.log.dal.model.HistoryMessage;
|
|
|
import com.yonge.log.dal.model.HistoryMessageTencent;
|
|
|
import com.yonge.log.service.HistoryMessageService;
|
|
|
import com.yonge.log.service.HistoryMessageTenantService;
|
|
|
+import com.yonge.log.wrapper.HistoryMessageTencentWrapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -76,16 +77,7 @@ import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Base64;
|
|
|
-import java.util.Calendar;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.Optional;
|
|
|
-import java.util.Random;
|
|
|
-import java.util.UUID;
|
|
|
+import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -210,10 +202,11 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
groupMember = com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember
|
|
|
.builder()
|
|
|
.userId(userId.longValue())
|
|
|
- .clientType(sysUserType.name())
|
|
|
- .avatar(sysUser.getAvatar())
|
|
|
- .nickname(sysUserType == SysUserType.STUDENT?sysUser.getUsername():sysUser.getRealName())
|
|
|
+ .clientType("")
|
|
|
+ .avatar(sysUserService.getImAvatar(sysUser))
|
|
|
+ .nickname(sysUserService.getImName(sysUser))
|
|
|
.roleType(roleType)
|
|
|
+ .tenantId(imGroup.getTenantId())
|
|
|
.isAdmin(true)
|
|
|
.build();
|
|
|
}
|
|
@@ -266,15 +259,16 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
private void addImGroupMember(String groupId, List<ImGroupMember> groupMemberList) {
|
|
|
List<com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember> imGroupMembers = Lists.newArrayList();
|
|
|
for (ImGroupMember groupMember : groupMemberList) {
|
|
|
- SysUserType sysUserType = EFriendRoleType.getByName(groupMember.getRoleType()).toSysUserType();
|
|
|
+ SysUser user = teacherDao.getUser(groupMember.getUserId());
|
|
|
imGroupMembers.add(com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember.builder()
|
|
|
.groupId(groupMember.getImGroupId())
|
|
|
.userId(groupMember.getUserId().longValue())
|
|
|
- .clientType(sysUserType.name())
|
|
|
-// .avatar(groupMember.getAvatar())
|
|
|
- .nickname(groupMember.getNickname())
|
|
|
+// .clientType(sysUserType.name())
|
|
|
+ .avatar(sysUserService.getImAvatar(user))
|
|
|
+ .nickname(sysUserService.getImName(user))
|
|
|
.isAdmin(groupMember.getIsAdmin())
|
|
|
- .imUserId(getImUserId(groupMember.getUserId().toString(), sysUserType.name()))
|
|
|
+ .tenantId(groupMember.getTenantId())
|
|
|
+ .imUserId(getImUserId(groupMember.getUserId().toString(), ""))
|
|
|
.roleType(groupMember.getRoleType())
|
|
|
.build());
|
|
|
}
|
|
@@ -310,7 +304,8 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
|
|
|
@Override
|
|
|
public List<ImGroup> queryByUserId(Integer userId, String search,String groupType) {
|
|
|
- List<ImGroup> imGroups = imGroupDao.queryByUserId(userId, search, groupType);
|
|
|
+ List<ImGroup> imGroups = imGroupDao.queryByUserId(userId, search, groupType).stream()
|
|
|
+ .filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
for (ImGroup item : imGroups) {
|
|
|
if (Objects.nonNull(item.getGroupType()) && StringUtils.isBlank(item.getImg())) {
|
|
|
item.setImg(item.getGroupType().getAvatar());
|
|
@@ -347,7 +342,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
List<String> userTypes = Lists.newArrayList(imGroupMemberDto.getUser().getUserType().split(","));
|
|
|
if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
|
|
|
// 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
|
|
|
- imGroupMemberDto.setGroupNickname(imGroupMemberDto.getUser().getRealName());
|
|
|
+ imGroupMemberDto.setGroupNickname(Optional.ofNullable(imGroupMemberDto.getUser().getRealName()).filter(StringUtils::isNotBlank).orElse(imGroupMemberDto.getUser().getUsername()));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -397,7 +392,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
|
|
|
// IM用户信息更新
|
|
|
try {
|
|
|
- imGroupCoreService.register(userId.toString(),"",nickName,sysUser.getAvatar());
|
|
|
+ imGroupCoreService.register(userId.toString(),"",nickName,sysUserService.getImAvatar(sysUser));
|
|
|
} catch (Exception e) {
|
|
|
log.error("更新用户信息失败",e);
|
|
|
throw new BizException("更新用户信息失败");
|
|
@@ -498,7 +493,8 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
}
|
|
|
List<String> imGroupIds = imGroupMembers.stream().map(ImGroupMember::getImGroupId).collect(Collectors.toList());
|
|
|
// 群组没人,删除群组
|
|
|
- List<ImGroup> imGroups = imGroupDao.queryByUserId(userId.intValue(),null, ImGroup.GroupTypeEnum.SCHOOL.getCode());
|
|
|
+ List<ImGroup> imGroups = imGroupDao.queryByUserId(userId.intValue(),null, ImGroup.GroupTypeEnum.SCHOOL.getCode()).stream()
|
|
|
+ .filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
imGroupMemberDao.deleteByUserId(userId);
|
|
@@ -537,7 +533,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
|
|
|
|
|
|
// 注册主播用户信息到三方平台
|
|
|
- imGroupCoreService.register(userId.toString(),"", name, avatar);
|
|
|
+ imGroupCoreService.register(userId.toString(),"", name, sysUserService.getImAvatar(sysUserService.queryUserById(userId)));
|
|
|
|
|
|
boolean createFlag = false;
|
|
|
// 群组不存在,先创建群组
|
|
@@ -558,13 +554,15 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
imGroup.setUpdateTime(new Date());
|
|
|
imGroup.setTenantId(cooperationOrgan.getTenantId());
|
|
|
|
|
|
- createImGroup(imGroup,userId,"");
|
|
|
+ createImGroup(imGroup,userId,schoolStaffType.getDescribe());
|
|
|
|
|
|
initSchoolGroup(imGroup.getSchoolId());
|
|
|
} else {
|
|
|
+ SysUser user = teacherDao.getUser(userId);
|
|
|
ImGroupMemberWrapper.ImGroupMember groupMember = ImGroupMemberWrapper.ImGroupMember.builder()
|
|
|
.userId(userId.longValue())
|
|
|
- .nickname(name)
|
|
|
+ .nickname(sysUserService.getImName(user))
|
|
|
+ .avatar(sysUserService.getImAvatar(user))
|
|
|
.build();
|
|
|
imGroupCoreService.groupMemberJoin(imGroup.getId(), Lists.newArrayList(groupMember));
|
|
|
// 更新群主流程
|
|
@@ -577,6 +575,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
imGroupMember.setUserId(userId);
|
|
|
imGroupMember.setIsAdmin(schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER));
|
|
|
imGroupMember.setRoleType(schoolStaffType.getDescribe());
|
|
|
+ imGroupMember.setNickname(name);
|
|
|
imGroupMember.setType(EFriendRoleType.getByName(schoolStaffType.getDescribe()).name());
|
|
|
imGroupMember.setTenantId(imGroup.getTenantId());
|
|
|
imGroupMemberDao.insert(imGroupMember);
|
|
@@ -754,7 +753,24 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
continue;
|
|
|
}
|
|
|
try {
|
|
|
- imGroupCoreService.groupJoin(userId,"",imGroup.getId());
|
|
|
+
|
|
|
+ SysUser user = teacherDao.getUser(userId.intValue());
|
|
|
+ ImGroupMemberWrapper.ImGroupMember groupMember = ImGroupMemberWrapper.ImGroupMember.builder()
|
|
|
+ .userId(userId)
|
|
|
+ .nickname(sysUserService.getImName(user))
|
|
|
+ .avatar(sysUserService.getImAvatar(user))
|
|
|
+ .build();
|
|
|
+ imGroupCoreService.groupMemberJoin(imGroup.getId(), Lists.newArrayList(groupMember));
|
|
|
+
|
|
|
+ ImGroupMember imGroupMember = new ImGroupMember();
|
|
|
+ imGroupMember.setImGroupId(imGroup.getId());
|
|
|
+ imGroupMember.setUserId(userId.intValue());
|
|
|
+ imGroupMember.setIsAdmin(false);
|
|
|
+ imGroupMember.setRoleType(roleType);
|
|
|
+ imGroupMember.setNickname(sysUserService.getImName(user));
|
|
|
+ imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
|
|
|
+ imGroupMember.setTenantId(imGroup.getTenantId());
|
|
|
+ imGroupMemberDao.insert(imGroupMember);
|
|
|
|
|
|
updateImGroupUserNumber(imGroup.getId());
|
|
|
} catch (Exception e) {
|
|
@@ -1014,10 +1030,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
// 老师默认使用真实姓名
|
|
|
List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
|
|
|
if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
|
|
|
- username = Optional.ofNullable(user.getRealName()).orElse(username);
|
|
|
+ username = Optional.ofNullable(user.getRealName()).filter(StringUtils::isNotBlank).orElse(username);
|
|
|
}
|
|
|
// 自动激活学生IM帐号
|
|
|
- imGroupCoreService.register(userId,clientType, username, avatar);
|
|
|
+ imGroupCoreService.register(userId,clientType, username, sysUserService.getImAvatar(user));
|
|
|
} catch (Exception e) {
|
|
|
log.error("register user error", e);
|
|
|
}
|
|
@@ -1575,6 +1591,80 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public com.yonge.mongodb.PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent> historyMessage(HistoryMessageTencentWrapper.HistoryMessageTencentQuery query) {
|
|
|
+ com.yonge.mongodb.PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent> pageInfo = historyMessageTencentService.historyMessage(query);
|
|
|
+
|
|
|
+ List<HistoryMessageTencentWrapper.HistoryMessageTencent> rows = pageInfo.getRows();
|
|
|
+ if (CollectionUtils.isEmpty(rows)) {
|
|
|
+ return pageInfo;
|
|
|
+ }
|
|
|
+ // 发送人信息
|
|
|
+ List<Integer> fromAccountList = rows.stream()
|
|
|
+ .map(HistoryMessageTencentWrapper.HistoryMessageTencent::getFromAccount)
|
|
|
+ .filter(StringUtils::isNotEmpty)
|
|
|
+ .map(Integer::parseInt)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Map<Integer, SysUser> userMap = studentService.getUserMapByIds(fromAccountList);
|
|
|
+ rows.forEach(item -> {
|
|
|
+ if (StringUtils.isEmpty(item.getFromAccount())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ SysUser sysUser = userMap.get(Integer.parseInt(item.getFromAccount()));
|
|
|
+ if (sysUser != null) {
|
|
|
+ item.setFromAccountName(sysUserService.getImName(sysUser));
|
|
|
+ item.setFromAccountAvatar(sysUserService.getImName(sysUser));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 接收人
|
|
|
+ List<Integer> toAccountList = rows.stream()
|
|
|
+ .map(HistoryMessageTencentWrapper.HistoryMessageTencent::getToAccount)
|
|
|
+ .filter(StringUtils::isNotEmpty)
|
|
|
+ .map(Integer::parseInt)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Map<Integer, SysUser> toUserMap = studentService.getUserMapByIds(toAccountList);
|
|
|
+ rows.forEach(item -> {
|
|
|
+ if (StringUtils.isEmpty(item.getToAccount())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ SysUser sysUser = toUserMap.get(Integer.parseInt(item.getToAccount()));
|
|
|
+ if (sysUser != null) {
|
|
|
+ item.setToAccountName(sysUserService.getImName(sysUser));
|
|
|
+ item.setToAccountAvatar(sysUserService.getImName(sysUser));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 群
|
|
|
+ List<String> groupIdList = rows.stream()
|
|
|
+ .map(HistoryMessageTencentWrapper.HistoryMessageTencent::getGroupId)
|
|
|
+ .filter(StringUtils::isNotEmpty)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Map<String, ImGroup> groupMap = this.getMapByIds(groupIdList);
|
|
|
+ rows.forEach(item -> {
|
|
|
+ if (StringUtils.isEmpty(item.getGroupId())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ ImGroup imGroup = groupMap.get(item.getGroupId());
|
|
|
+ if (imGroup != null) {
|
|
|
+ item.setGroupName(imGroup.getName());
|
|
|
+ item.setGroupAvatar(imGroup.getImg());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return pageInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, ImGroup> getMapByIds(List<String> groupIdList) {
|
|
|
+ if (CollectionUtils.isEmpty(groupIdList)) {
|
|
|
+ return new HashMap<>();
|
|
|
+ }
|
|
|
+ List<ImGroup> imGroups = imGroupDao.getByIds(groupIdList);
|
|
|
+ if (CollectionUtils.isEmpty(imGroups)) {
|
|
|
+ return new HashMap<>();
|
|
|
+ }
|
|
|
+ return imGroups.stream().collect(Collectors.toMap(ImGroup::getId, item -> item));
|
|
|
+ }
|
|
|
+
|
|
|
private TencentRequest.MessageBody getTimGifElem(String remoteUr,int size,int width,int height) {
|
|
|
if (StringUtils.isEmpty(remoteUr) && size == 0 && width == 0 && height == 0) {
|
|
|
return null;
|