|
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import com.microsvc.toolkit.middleware.common.http.DateUtil;
|
|
|
import com.microsvc.toolkit.middleware.common.http.ImageUtil;
|
|
|
import com.microsvc.toolkit.middleware.im.ImPluginContext;
|
|
|
import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
|
|
@@ -73,6 +74,7 @@ import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -196,14 +198,14 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember groupMember = null;
|
|
|
if (userId != null) {
|
|
|
SysUser sysUser = teacherDao.getUser(userId);
|
|
|
- SysUserType sysUserType = EFriendRoleType.getByName(roleType).toSysUserType();
|
|
|
- groupMember = com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember
|
|
|
+ groupMember = 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(Optional.ofNullable(imGroup.getTenantId()).orElse(TenantContextHolder.getTenantId()))
|
|
|
.isAdmin(true)
|
|
|
.build();
|
|
|
}
|
|
@@ -254,17 +256,18 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
}
|
|
|
|
|
|
private void addImGroupMember(String groupId, List<ImGroupMember> groupMemberList) {
|
|
|
+ ImGroup imGroup = imGroupDao.get(groupId);
|
|
|
List<com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember> imGroupMembers = Lists.newArrayList();
|
|
|
for (ImGroupMember groupMember : groupMemberList) {
|
|
|
- SysUserType sysUserType = EFriendRoleType.getByName(groupMember.getRoleType()).toSysUserType();
|
|
|
- imGroupMembers.add(com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember.builder()
|
|
|
+ SysUser user = teacherDao.getUser(groupMember.getUserId());
|
|
|
+ imGroupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
|
|
|
.groupId(groupMember.getImGroupId())
|
|
|
.userId(groupMember.getUserId().longValue())
|
|
|
- .clientType(sysUserType.name())
|
|
|
-// .avatar(groupMember.getAvatar())
|
|
|
- .nickname(groupMember.getNickname())
|
|
|
+ .avatar(sysUserService.getImAvatar(user))
|
|
|
+ .nickname(sysUserService.getImName(user))
|
|
|
.isAdmin(groupMember.getIsAdmin())
|
|
|
- .imUserId(getImUserId(groupMember.getUserId().toString(), sysUserType.name()))
|
|
|
+ .tenantId(Optional.ofNullable(imGroup.getTenantId()).orElse(TenantContextHolder.getTenantId()))
|
|
|
+ .imUserId(getImUserId(groupMember.getUserId().toString(), ""))
|
|
|
.roleType(groupMember.getRoleType())
|
|
|
.build());
|
|
|
}
|
|
@@ -297,7 +300,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());
|
|
@@ -332,7 +336,9 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
if (Objects.nonNull(imGroupMemberDto.getUser()) && StringUtils.isNotBlank(imGroupMemberDto.getUser().getUserType())) {
|
|
|
|
|
|
List<String> userTypes = Lists.newArrayList(imGroupMemberDto.getUser().getUserType().split(","));
|
|
|
- if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
|
|
|
+ if (userTypes.size() > 1
|
|
|
+ || userTypes.contains(ClientEnum.TEACHER.getCode())
|
|
|
+ || userTypes.contains(ClientEnum.SYSTEM.getCode())) {
|
|
|
// 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
|
|
|
imGroupMemberDto.setGroupNickname(Optional.ofNullable(imGroupMemberDto.getUser().getRealName()).filter(StringUtils::isNotBlank).orElse(imGroupMemberDto.getUser().getUsername()));
|
|
|
}
|
|
@@ -384,7 +390,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("更新用户信息失败");
|
|
@@ -485,7 +491,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);
|
|
@@ -524,7 +531,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
|
|
|
|
|
|
// 注册主播用户信息到三方平台
|
|
|
- imGroupCoreService.register(userId.toString(),"", name, avatar);
|
|
|
+ imGroupCoreService.register(userId.toString(),"", name, sysUserService.getImAvatar(teacherDao.getUser(userId)));
|
|
|
|
|
|
boolean createFlag = false;
|
|
|
// 群组不存在,先创建群组
|
|
@@ -538,20 +545,22 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
imGroup.setIntroduce(imGroup.getName());
|
|
|
imGroup.setMemo(imGroup.getName());
|
|
|
imGroup.setMemberNum(0);
|
|
|
- imGroup.setImg(sysConfigService.findByParamName(SysConfigService.SCHOOL_IM_GROUP_IMG).getParanValue());
|
|
|
+ //imGroup.setImg(sysConfigService.findByParamName(SysConfigService.SCHOOL_IM_GROUP_IMG).getParanValue());
|
|
|
imGroup.setType(ImGroup.GroupTypeEnum.SCHOOL.getCode());
|
|
|
imGroup.setGroupType(ImGroup.GroupTypeEnum.SCHOOL);
|
|
|
imGroup.setCreateTime(new Date());
|
|
|
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));
|
|
|
// 更新群主流程
|
|
@@ -564,6 +573,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);
|
|
@@ -741,7 +751,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) {
|
|
@@ -860,17 +887,28 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
* 群迁移
|
|
|
*/
|
|
|
@Override
|
|
|
- public void groupTransfer(String startTime, String endTime) {
|
|
|
+ public void groupTransfer(String startTime, String endTime,Integer type) {
|
|
|
+
|
|
|
+ // 100个线程的无界线程池
|
|
|
+
|
|
|
+ // 100个线程的无界线程池
|
|
|
+ ThreadPoolExecutor executorService = new ThreadPoolExecutor(100, 100,
|
|
|
+ 0L, TimeUnit.MILLISECONDS,
|
|
|
+ new LinkedBlockingQueue<Runnable>());
|
|
|
int page = 1;
|
|
|
int size = 100;
|
|
|
QueryInfo queryInfo = new QueryInfo();
|
|
|
queryInfo.setPage(page);
|
|
|
queryInfo.setRows(size);
|
|
|
- queryInfo.setImportFlag(false);
|
|
|
+// queryInfo.setImportFlag(false);
|
|
|
PageInfo<ImGroup> imGroupPageInfo = this.queryPage(queryInfo);
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ int total = imGroupPageInfo.getTotal();
|
|
|
int importImGroupCount = 0;
|
|
|
- while (!imGroupPageInfo.getRows().isEmpty()) {
|
|
|
+ int num = (int) Math.ceil(total / 100);
|
|
|
+ for (int i = 0; i <=num ; i++) {
|
|
|
+ queryInfo.setPage(page);
|
|
|
+ imGroupPageInfo = this.queryPage(queryInfo);
|
|
|
List<ImGroup> rows = imGroupPageInfo.getRows();
|
|
|
try {
|
|
|
if (StringUtils.isNotEmpty(startTime)) {
|
|
@@ -890,34 +928,62 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
} catch (ParseException e) {
|
|
|
throw new BizException("时间区间参数错误,格式为:yyyy-MM-dd");
|
|
|
}
|
|
|
- groupTransfer(rows);
|
|
|
+
|
|
|
+ if (type == 1) {
|
|
|
+ rows.forEach(imGroup -> {
|
|
|
+
|
|
|
+ executorService.submit(() -> {
|
|
|
+ log.info("群销毁开始:{}", imGroup.getId());
|
|
|
+ // 先删除群组
|
|
|
+ try {
|
|
|
+ // 解散群
|
|
|
+ imPluginContext.getPluginService().groupDismiss(imGroup.getId(), new ArrayList<>());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(String.format("群迁移删除群聊失败:%s", e.getMessage()), e);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Thread.sleep(1000);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("线程等待异常", e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+
|
|
|
+ for (ImGroup row : rows) {
|
|
|
+ executorService.execute(() -> {
|
|
|
+ groupTransfer(Lists.newArrayList(row));
|
|
|
+ try {
|
|
|
+ Thread.sleep(1000);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("线程等待异常", e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ page ++;
|
|
|
importImGroupCount += rows.size();
|
|
|
log.info("------------------------------- import im group --------------------------------------------");
|
|
|
- log.info("import im group success count:{}/{}", importImGroupCount, imGroupPageInfo.getTotal());
|
|
|
+ log.info("import im group success count:{}/{}", importImGroupCount, total);
|
|
|
+ }
|
|
|
|
|
|
- page++;
|
|
|
- queryInfo.setPage(page);
|
|
|
- imGroupPageInfo = this.queryPage(queryInfo);
|
|
|
+ while (executorService.getQueue().size() > 0) {
|
|
|
+ try {
|
|
|
+ log.info("线程池中正在执行的任务数量:{},等待数量:{}", executorService.getActiveCount(),executorService.getQueue().size());
|
|
|
+ Thread.sleep(1000);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("线程等待异常", e);
|
|
|
+ }
|
|
|
}
|
|
|
log.info("-------------------- import im group finished and success! -------------------------------");
|
|
|
+ executorService.shutdown();
|
|
|
}
|
|
|
|
|
|
private void groupTransfer(List<ImGroup> records) {
|
|
|
|
|
|
for (ImGroup imGroup : records) {
|
|
|
|
|
|
- log.info("群销毁开始:{}", imGroup.getId());
|
|
|
- // 先删除群组
|
|
|
- try {
|
|
|
- // 解散群
|
|
|
- imPluginContext.getPluginService().groupDismiss(imGroup.getId(), new ArrayList<>());
|
|
|
- } catch (Exception e) {
|
|
|
- log.error(String.format("群迁移删除群聊失败:%s", e.getMessage()), e);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- for (ImGroup imGroup : records) {
|
|
|
-
|
|
|
log.info("群迁移开始:{}", imGroup.getId());
|
|
|
|
|
|
GroupMemberQueryInfo groupMemberQueryInfo = new GroupMemberQueryInfo();
|
|
@@ -937,29 +1003,44 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
}
|
|
|
importGroup.setType("Public");
|
|
|
importGroup.setGroupId(imGroup.getId());
|
|
|
- importGroup.setName(imGroup.getName());
|
|
|
+ importGroup.setName(StringUtils.isBlank(imGroup.getName())?imGroup.getId():imGroup.getName());
|
|
|
importGroup.setIntroduction(imGroup.getIntroduce());
|
|
|
importGroup.setNotification(imGroup.getMemo());
|
|
|
importGroup.setFaceUrl(imGroup.getImg());
|
|
|
if (StringUtils.isEmpty(imGroup.getImg())) {
|
|
|
- importGroup.setFaceUrl(imGroup.getGroupType().getAvatar());
|
|
|
+ importGroup.setFaceUrl(Optional.ofNullable(imGroup.getGroupType()).orElse(ImGroup.GroupTypeEnum.NORMAL).getAvatar());
|
|
|
}
|
|
|
importGroup.setApplyJoinOption("FreeAccess");
|
|
|
- importGroup.setCreateTime(imGroup.getCreateTime().getTime() / 1000);
|
|
|
- if (admin != null) {
|
|
|
- register(admin.getUserId().toString(), getClientType(admin.getRoleType()),"");
|
|
|
+ if (imGroup.getCreateTime() == null) {
|
|
|
+ imGroup.setCreateTime(DateTime.now().plusYears(-1).toDate());
|
|
|
}
|
|
|
+ importGroup.setCreateTime(imGroup.getCreateTime().getTime() / 1000);
|
|
|
+// if (admin != null) {
|
|
|
+// register(admin.getUserId().toString(), getClientType(admin.getRoleType()),"");
|
|
|
+// }
|
|
|
imPluginContext.getPluginService().importGroup(importGroup);
|
|
|
|
|
|
List<ImGroupMember> groupMembers = pageInfo.getRows().stream()
|
|
|
.filter(next -> !next.getIsAdmin()).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ groupMembers = groupMembers
|
|
|
+ .stream()
|
|
|
+ .filter(next -> next.getUserId() != null && next.getUserId() > 0)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
if (groupMembers.isEmpty()) {
|
|
|
imGroupDao.updateImportStatusSuccess(imGroup.getId());
|
|
|
continue;
|
|
|
}
|
|
|
- for (ImGroupMember member : groupMembers) {
|
|
|
- register(member.getUserId().toString(), getClientType(member.getRoleType()),"");
|
|
|
- }
|
|
|
+
|
|
|
+// for (ImGroupMember member : groupMembers) {
|
|
|
+// try {
|
|
|
+// register(member.getUserId().toString(), getClientType(member.getRoleType()),"");
|
|
|
+// }catch (Exception e){
|
|
|
+// log.error("用户注册失败",e);
|
|
|
+// }
|
|
|
+// }
|
|
|
MessageWrapper.ImportGroupMember importGroupMember = new MessageWrapper.ImportGroupMember();
|
|
|
importGroupMember.setGroupId(imGroup.getId());
|
|
|
Date date = new DateTime(imGroup.getCreateTime()).plusSeconds(3).toDate();
|
|
@@ -968,6 +1049,9 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
MessageWrapper.ImportGroupMemberData data = new MessageWrapper.ImportGroupMemberData();
|
|
|
data.setMemberAccount(getImUserId(next.getUserId().toString(),
|
|
|
getClientType(next.getRoleType())));
|
|
|
+ if (next.getCreateTime() == null){
|
|
|
+ next.setCreateTime(DateTime.now().plusMonths(-6).toDate());
|
|
|
+ }
|
|
|
if (next.getCreateTime().getTime() / 1000 <= importGroup.getCreateTime()) {
|
|
|
data.setJoinTime(date.getTime() / 1000);
|
|
|
} else {
|
|
@@ -977,18 +1061,22 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
return data;
|
|
|
}).collect(Collectors.toList());
|
|
|
importGroupMember.setMemberList(members);
|
|
|
- imPluginContext.getPluginService().importGroupMember(importGroupMember);
|
|
|
+ List<List<MessageWrapper.ImportGroupMemberData>> partition = Lists.partition(members, 88);
|
|
|
+ for (List<MessageWrapper.ImportGroupMemberData> importGroupMemberData : partition) {
|
|
|
+ importGroupMember.setMemberList(importGroupMemberData);
|
|
|
+ imPluginContext.getPluginService().importGroupMember(importGroupMember);
|
|
|
+ }
|
|
|
imGroupDao.updateImportStatusSuccess(imGroup.getId());
|
|
|
} catch (Exception e) {
|
|
|
log.error(String.format("群迁移失败,失败群组:%s", JSON.toJSONString(imGroup)));
|
|
|
- log.error(String.format("群迁移失败:%s", e.getMessage()));
|
|
|
+ log.error("群迁移失败:", e);
|
|
|
}
|
|
|
log.info("群迁移成功:{}", imGroup.getId());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void register(String userId, String clientType,String avatar) {
|
|
|
- SysUser user = sysUserService.queryUserById(Integer.valueOf(userId));
|
|
|
+ SysUser user = teacherDao.getUser(Integer.valueOf(userId));
|
|
|
if (user == null) {
|
|
|
return;
|
|
|
}
|
|
@@ -1000,12 +1088,16 @@ 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())) {
|
|
|
+ if (userTypes.size() > 1
|
|
|
+ || userTypes.contains(ClientEnum.TEACHER.getCode())
|
|
|
+ || userTypes.contains(ClientEnum.SYSTEM.getCode())) {
|
|
|
username = Optional.ofNullable(user.getRealName()).filter(StringUtils::isNotBlank).orElse(username);
|
|
|
}
|
|
|
// 自动激活学生IM帐号
|
|
|
+// imGroupCoreService.register(userId,clientType, username, sysUserService.getImAvatar(user));
|
|
|
imGroupCoreService.register(userId,clientType, username, avatar);
|
|
|
} catch (Exception e) {
|
|
|
+ log.error("register user error,userId:{}", userId);
|
|
|
log.error("register user error", e);
|
|
|
}
|
|
|
}
|
|
@@ -1031,17 +1123,39 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
@Override
|
|
|
public void importUser() {
|
|
|
int page = 1;
|
|
|
- int rows = 200;
|
|
|
+ int rows = 100;
|
|
|
|
|
|
int count = 0;
|
|
|
|
|
|
+ // 100个线程的无界线程池
|
|
|
+ ThreadPoolExecutor executorService = new ThreadPoolExecutor(100, 100,
|
|
|
+ 0L, TimeUnit.MILLISECONDS,
|
|
|
+ new LinkedBlockingQueue<Runnable>());
|
|
|
+
|
|
|
log.info("------------------------------- import user student ---------------------------");
|
|
|
+ // 学生花费时间计算
|
|
|
+ long start = System.currentTimeMillis();
|
|
|
List<String[]> student = getStudent(page, rows);
|
|
|
+ long end = System.currentTimeMillis();
|
|
|
+ log.info("查询学生花费时间:{}毫秒", end - start);
|
|
|
SysConfig studentAvatar = sysConfigService.findByParamName(SysConfigService.STUDENT_DEFAULT_AVATAR);
|
|
|
while (!student.isEmpty()) {
|
|
|
for (String[] next : student) {
|
|
|
- register(next[0], next[1],studentAvatar.getParanValue());
|
|
|
+ String avatar = next[2];
|
|
|
+ if (StringUtils.isEmpty(avatar)) {
|
|
|
+ avatar = studentAvatar.getParanValue();
|
|
|
+ }
|
|
|
+ String finalAvatar = avatar;
|
|
|
+ executorService.execute(() -> {
|
|
|
+ register(next[0], next[1], finalAvatar);
|
|
|
+ try {
|
|
|
+ Thread.sleep(1000);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("线程等待异常", e);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
+
|
|
|
count += student.size();
|
|
|
log.info("import im student success count:{}", count);
|
|
|
page++;
|
|
@@ -1053,11 +1167,28 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
count = 0;
|
|
|
page = 1;
|
|
|
SysConfig staffAvatar = sysConfigService.findByParamName(SysConfigService.USER_DEFAULT_AVATAR);
|
|
|
+ start = System.currentTimeMillis();
|
|
|
List<String[]> staff = getStaff(page, rows);
|
|
|
+ end = System.currentTimeMillis();
|
|
|
+ log.info("查询老师花费时间:{}毫秒", end - start);
|
|
|
while (!staff.isEmpty()) {
|
|
|
+
|
|
|
for (String[] next : staff) {
|
|
|
- register(next[0], next[1],staffAvatar.getParanValue());
|
|
|
+ String avatar = next[2];
|
|
|
+ if (StringUtils.isEmpty(avatar)) {
|
|
|
+ avatar = staffAvatar.getParanValue();
|
|
|
+ }
|
|
|
+ String finalAvatar = avatar;
|
|
|
+ executorService.execute(() -> {
|
|
|
+ register(next[0], next[1], finalAvatar);
|
|
|
+ try {
|
|
|
+ Thread.sleep(1000);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("线程等待异常", e);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
+
|
|
|
count += staff.size();
|
|
|
log.info("import im staff success count:{}", count);
|
|
|
page++;
|
|
@@ -1072,7 +1203,19 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
List<String[]> emps = getEmp(page, rows);
|
|
|
while (!emps.isEmpty()) {
|
|
|
for (String[] next : emps) {
|
|
|
- register(next[0], next[1],empAvatar.getParanValue());
|
|
|
+ String avatar = next[2];
|
|
|
+ if (StringUtils.isEmpty(avatar)) {
|
|
|
+ avatar = empAvatar.getParanValue();
|
|
|
+ }
|
|
|
+ String finalAvatar = avatar;
|
|
|
+ executorService.execute(() -> {
|
|
|
+ register(next[0], next[1], finalAvatar);
|
|
|
+ try {
|
|
|
+ Thread.sleep(1000);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("线程等待异常", e);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
count += emps.size();
|
|
|
log.info("import im emps success count:{}", count);
|
|
@@ -1087,7 +1230,19 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
List<String[]> teachers = getTeachers(page, rows);
|
|
|
while (!teachers.isEmpty()) {
|
|
|
for (String[] next : teachers) {
|
|
|
- register(next[0], next[1], teacherAvatar.getParanValue());
|
|
|
+ String avatar = next[2];
|
|
|
+ if (StringUtils.isEmpty(avatar)) {
|
|
|
+ avatar = teacherAvatar.getParanValue();
|
|
|
+ }
|
|
|
+ String finalAvatar = avatar;
|
|
|
+ executorService.execute(() -> {
|
|
|
+ register(next[0], next[1], finalAvatar);
|
|
|
+ try {
|
|
|
+ Thread.sleep(1000);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("线程等待异常", e);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
count += teachers.size();
|
|
|
log.info("import im teacher success count:{}", count);
|
|
@@ -1095,12 +1250,21 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
teachers = getTeachers(page, rows);
|
|
|
}
|
|
|
|
|
|
+ while (executorService.getQueue().size() > 0) {
|
|
|
+ try {
|
|
|
+ log.info("线程池中正在执行的任务数量:{},等待数量:{}", executorService.getActiveCount(),executorService.getQueue().size());
|
|
|
+ Thread.sleep(1000);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("线程等待异常", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ executorService.shutdown();
|
|
|
log.info("------------------------------- import user success ---------------------------");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int queryInfoCount() {
|
|
|
- long count = historyMessageService.selectCount(0,new DateTime().plusMonths(-2).toDate());
|
|
|
+ public int queryInfoCount(int targetType) {
|
|
|
+ long count = historyMessageService.selectCount(0,new DateTime().plusMonths(-2).toDate(),targetType);
|
|
|
return (int) count;
|
|
|
}
|
|
|
|
|
@@ -1110,9 +1274,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
queryInfo.setRows(rows);
|
|
|
PageInfo<Employee> employeePageInfo = employeeService.queryBaseInfoByPage(queryInfo);
|
|
|
return employeePageInfo.getRows().stream().map(next -> {
|
|
|
- String[] strList = new String[2];
|
|
|
+ String[] strList = new String[3];
|
|
|
strList[0] = next.getUserId().toString();
|
|
|
strList[1] = "SYSTEM";
|
|
|
+ strList[2] = next.getAvatar();
|
|
|
return strList;
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
@@ -1122,9 +1287,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
IPage<SchoolStaffWrapper.SchoolStaff> iPage = schoolStaffService.selectBaseInfoByPage(staffPage,
|
|
|
new SchoolStaffWrapper.SchoolStaffQuery());
|
|
|
return iPage.getRecords().stream().map(next -> {
|
|
|
- String[] strList = new String[2];
|
|
|
+ String[] strList = new String[3];
|
|
|
strList[0] = next.getUserId().toString();
|
|
|
strList[1] = "SCHOOL";
|
|
|
+ strList[2] = next.getAvatar();
|
|
|
return strList;
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
@@ -1135,9 +1301,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
queryInfo.setRows(rows);
|
|
|
PageInfo<Student> studentPageInfo = studentService.queryBaseInfoByPage(queryInfo);
|
|
|
return studentPageInfo.getRows().stream().map(next -> {
|
|
|
- String[] strList = new String[2];
|
|
|
+ String[] strList = new String[3];
|
|
|
strList[0] = next.getUserId().toString();
|
|
|
strList[1] = "STUDENT";
|
|
|
+ strList[2] = next.getAvatar();
|
|
|
return strList;
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
@@ -1148,9 +1315,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
queryInfo.setRows(rows);
|
|
|
PageInfo<Teacher> teacherPageInfo = teacherService.queryBaseInfoByPage(queryInfo);
|
|
|
return teacherPageInfo.getRows().stream().map(next -> {
|
|
|
- String[] strList = new String[2];
|
|
|
+ String[] strList = new String[3];
|
|
|
strList[0] = next.getId().toString();
|
|
|
strList[1] = "TEACHER";
|
|
|
+ strList[2] = next.getAvatar();
|
|
|
return strList;
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
@@ -1158,8 +1326,8 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public com.yonge.mongodb.PageInfo<HistoryMessage> getRongYunInfo( int page, int size) {
|
|
|
- com.yonge.mongodb.PageInfo<HistoryMessage> pageInfo = historyMessageService.selectPage(page, size, 0,new DateTime().plusMonths(-2).toDate());
|
|
|
+ public com.yonge.mongodb.PageInfo<HistoryMessage> getRongYunInfo(int page, int size, int targetType) {
|
|
|
+ com.yonge.mongodb.PageInfo<HistoryMessage> pageInfo = historyMessageService.selectPage(page, size, 0,new DateTime().plusMonths(-2).toDate(),targetType);
|
|
|
//List<HistoryMessage> imHistoryMessageslist = imGroupDao.selectAll(result,size);
|
|
|
return pageInfo;
|
|
|
}
|
|
@@ -1173,7 +1341,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
public void importInfo(List<HistoryMessage> info) throws Exception {
|
|
|
|
|
|
for (HistoryMessage i : info) {//判断消息类型
|
|
|
- log.info("消息导入 HistoryMessage:{}", JSON.toJSONString(i));
|
|
|
+// log.info("消息导入 HistoryMessage:{}", JSON.toJSONString(i));
|
|
|
try {
|
|
|
Integer type = i.getTargetType();
|
|
|
if (type == 1) {
|
|
@@ -1209,8 +1377,21 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
//设置接收人
|
|
|
privateImportMessage.setToAccount(targetIdUserId);
|
|
|
//设置随机数
|
|
|
- privateImportMessage.setMsgRandom(new Random().nextInt());
|
|
|
+ if (i.getMsgRandom() == null) {
|
|
|
+ int nextInt = Math.abs(new Random().nextInt());
|
|
|
+ privateImportMessage.setMsgRandom(nextInt);
|
|
|
+ i.setMsgRandom(nextInt);
|
|
|
+ } else {
|
|
|
+ privateImportMessage.setMsgRandom(i.getMsgRandom());
|
|
|
+ }
|
|
|
|
|
|
+ if (i.getMsgSeq() == null) {
|
|
|
+ int nextInt = Math.abs(new Random().nextInt());
|
|
|
+ i.setMsgSeq(nextInt);
|
|
|
+ privateImportMessage.setMsgSeq(nextInt);
|
|
|
+ } else {
|
|
|
+ privateImportMessage.setMsgSeq(i.getMsgSeq());
|
|
|
+ }
|
|
|
//设置发送时间
|
|
|
String time = i.getDateTime();
|
|
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
@@ -1218,7 +1399,13 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
Date date = df.parse(time);
|
|
|
long dateTime = date.getTime();
|
|
|
dateTime = dateTime / (1000);
|
|
|
- privateImportMessage.setMsgTimeStamp(dateTime);
|
|
|
+ if (i.getMsgTimeStamp() == null) {
|
|
|
+ privateImportMessage.setMsgTimeStamp(dateTime);
|
|
|
+ i.setMsgTimeStamp(dateTime);
|
|
|
+ } else {
|
|
|
+ privateImportMessage.setMsgTimeStamp(i.getMsgTimeStamp());
|
|
|
+
|
|
|
+ }
|
|
|
} catch (ParseException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
@@ -1258,14 +1445,16 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
privateImportMessage.setTencentMessageBody(list);
|
|
|
privateImportMessage.setCloudCustomData(jsonObject.getString("extra"));
|
|
|
|
|
|
- log.info("导入私聊消息:{}", JSON.toJSONString(privateImportMessage));
|
|
|
+// log.info("导入私聊消息:{}", JSON.toJSONString(privateImportMessage));
|
|
|
try {
|
|
|
imPluginContext.getPluginService().importPrivateMessage(privateImportMessage);
|
|
|
//为已导入数据更改标识
|
|
|
updateStatus(i,1);
|
|
|
+ historyMessageService.updateMsg(i.getMsgUID(),i.getMsgSeq(),i.getMsgRandom(),i.getMsgTimeStamp());
|
|
|
+ log.info("导入私聊消息成功");
|
|
|
} catch (Exception e) {
|
|
|
updateStatus(i,2);
|
|
|
- log.error("导入私聊IM消息失败 msg:{},entity:{}", list, i, e);
|
|
|
+ log.error("导入私聊IM消息失败 msg:{},entity:{}", JSON.toJSONString(privateImportMessage), i, e);
|
|
|
}
|
|
|
} else if (type == 3) {
|
|
|
//群组会话
|
|
@@ -1291,7 +1480,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
|
|
|
data1.setFromAccount(imUserId);
|
|
|
//设置随机数
|
|
|
- data1.setRandom(new Random().nextInt());
|
|
|
+ data1.setRandom(Math.abs(new Random().nextInt()));
|
|
|
//设置发送时间
|
|
|
|
|
|
String time = i.getDateTime();
|
|
@@ -1334,16 +1523,16 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
list.add(data1);
|
|
|
//导入消息列表
|
|
|
groupImportMessage.setMsgList(list);
|
|
|
- log.info("导入群聊消息:{}", JSON.toJSONString(groupImportMessage));
|
|
|
+// log.info("导入群聊消息:{}", JSON.toJSONString(groupImportMessage));
|
|
|
try {
|
|
|
imPluginContext.getPluginService().importGroupMessage(groupImportMessage);
|
|
|
//为已导入数据更改标识
|
|
|
updateStatus(i,1);
|
|
|
+ log.info("导入消息成功");
|
|
|
} catch (Exception e) {
|
|
|
updateStatus(i,2);
|
|
|
- log.error("导入群组IM消息失败 msg:{},entity:{}", list, i, e);
|
|
|
+ log.error("导入群组IM消息失败 msg:{},entity:{}", JSON.toJSONString(groupImportMessage), i, e);
|
|
|
}
|
|
|
- log.info("导入消息成功:{}", i);
|
|
|
}
|
|
|
}catch (Exception e) {
|
|
|
log.error("导入消息失败:", e);
|
|
@@ -1358,53 +1547,67 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
public void imToTencent(List<HistoryMessage> list) {
|
|
|
|
|
|
for (HistoryMessage historyMessage : list) {
|
|
|
- HistoryMessageTencent tencent = new HistoryMessageTencent();
|
|
|
- tencent.setId(historyMessage.getMsgUID());
|
|
|
- // 时间
|
|
|
- String dateTime = historyMessage.getDateTime();
|
|
|
- LocalDateTime ldt = LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
|
|
|
- // yyyyMMddHH
|
|
|
- String date = ldt.format(DateTimeFormatter.ofPattern("yyyyMMddHH"));
|
|
|
- tencent.setMsgTime(Long.parseLong(date));
|
|
|
-
|
|
|
- List<TencentRequest.MessageBody> bodyList = new ArrayList<>();
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(historyMessage.getContent());
|
|
|
- // 类型
|
|
|
- if (historyMessage.getTargetType() == 1) {
|
|
|
- tencent.setChatType("C2C");
|
|
|
- tencent.setToAccount(historyMessage.getTargetId());
|
|
|
- bodyList = getPrivateMessge(historyMessage,jsonObject);
|
|
|
- } else if (historyMessage.getTargetType() == 3) {
|
|
|
- tencent.setChatType("GROUP");
|
|
|
- tencent.setGroupId(historyMessage.getGroupId());
|
|
|
- bodyList = getGroupMessage(historyMessage,jsonObject);
|
|
|
- } else {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- if (CollectionUtils.isEmpty(bodyList)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- bodyList = bodyList.stream().filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
- if (CollectionUtils.isEmpty(bodyList)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 发送人
|
|
|
- tencent.setFromAccount(historyMessage.getFromUserId());
|
|
|
- //类型
|
|
|
- tencent.setAppService("MEC");
|
|
|
- tencent.setMsgFromPlatform(historyMessage.getSource());
|
|
|
- tencent.setMsgTimestamp(ldt.toInstant(ZoneId.systemDefault().getRules().getOffset(ldt)).toEpochMilli()/1000);
|
|
|
+ try {
|
|
|
+ HistoryMessageTencent tencent = new HistoryMessageTencent();
|
|
|
+ tencent.setId(historyMessage.getMsgUID());
|
|
|
+ // 时间
|
|
|
+ String dateTime = historyMessage.getDateTime();
|
|
|
+ LocalDateTime ldt = LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
|
|
|
+ // yyyyMMddHH
|
|
|
+ String date = ldt.format(DateTimeFormatter.ofPattern("yyyyMMddHH"));
|
|
|
+ tencent.setMsgTime(Long.parseLong(date));
|
|
|
+
|
|
|
+ List<TencentRequest.MessageBody> bodyList = new ArrayList<>();
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(historyMessage.getContent());
|
|
|
+ // 类型
|
|
|
+ if (historyMessage.getTargetType() == 1) {
|
|
|
+ tencent.setChatType("C2C");
|
|
|
+ tencent.setToAccount(historyMessage.getTargetId());
|
|
|
+ bodyList = getPrivateMessge(historyMessage,jsonObject);
|
|
|
+ } else if (historyMessage.getTargetType() == 3) {
|
|
|
+ tencent.setChatType("GROUP");
|
|
|
+ tencent.setGroupId(historyMessage.getGroupId());
|
|
|
+ bodyList = getGroupMessage(historyMessage,jsonObject);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ historyMessage.setSyncFlag(1);
|
|
|
+ historyMessageService.updateSyncFlag(historyMessage.getMsgUID(),1);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- // 消息转换
|
|
|
- tencent.setCloudCustomData(jsonObject.getString("extra"));
|
|
|
- tencent.setMsgBody(JSON.toJSONString(bodyList));
|
|
|
- tencent.setMsgBodyJson(JSON.parseObject(tencent.getMsgBody(), JSONArray.class));
|
|
|
+ if (CollectionUtils.isEmpty(bodyList)) {
|
|
|
|
|
|
- historyMessageTencentService.insert(tencent);
|
|
|
+ historyMessage.setSyncFlag(1);
|
|
|
+ historyMessageService.updateSyncFlag(historyMessage.getMsgUID(),1);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ bodyList = bodyList.stream().filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(bodyList)) {
|
|
|
+ historyMessage.setSyncFlag(1);
|
|
|
+ historyMessageService.updateSyncFlag(historyMessage.getMsgUID(),1);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 发送人
|
|
|
+ tencent.setFromAccount(historyMessage.getFromUserId());
|
|
|
+ //类型
|
|
|
+ tencent.setAppService("MEC");
|
|
|
+ tencent.setMsgFromPlatform(historyMessage.getSource());
|
|
|
+ tencent.setMsgTimestamp(ldt.toInstant(ZoneId.systemDefault().getRules().getOffset(ldt)).toEpochMilli()/1000);
|
|
|
+
|
|
|
+ // 消息转换
|
|
|
+ tencent.setCloudCustomData(jsonObject.getString("extra"));
|
|
|
+ tencent.setMsgBody(JSON.toJSONString(bodyList));
|
|
|
+ tencent.setMsgBodyJson(JSON.parseObject(tencent.getMsgBody(), JSONArray.class));
|
|
|
+
|
|
|
+ historyMessageTencentService.insert(tencent);
|
|
|
+
|
|
|
+ historyMessage.setSyncFlag(1);
|
|
|
+ historyMessageService.updateSyncFlag(historyMessage.getMsgUID(),1);
|
|
|
+ } catch (Exception e) {
|
|
|
+ historyMessage.setSyncFlag(2);
|
|
|
+ historyMessageService.updateSyncFlag(historyMessage.getMsgUID(),1);
|
|
|
+ }
|
|
|
|
|
|
- historyMessage.setSyncFlag(1);
|
|
|
- historyMessageService.updateSyncFlag(historyMessage.getMsgUID(),1);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -1419,7 +1622,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
String content = jsonObject.getString("content");
|
|
|
|
|
|
// http开头的链接 扩展字段没有值 放在扩展字段里
|
|
|
- if (content.startsWith("http")) {
|
|
|
+ if (StringUtils.isNotBlank(content) && content.startsWith("http")) {
|
|
|
String extra = jsonObject.getString("extra");
|
|
|
if (StringUtils.isEmpty(extra)) {
|
|
|
jsonObject.put("extra", content);
|
|
@@ -1497,7 +1700,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
String content = jsonObject.getString("content");
|
|
|
|
|
|
// http开头的链接 扩展字段没有值 放在扩展字段里
|
|
|
- if (content.startsWith("http")) {
|
|
|
+ if (StringUtils.isNotBlank(content) && content.startsWith("http")) {
|
|
|
String extra = jsonObject.getString("extra");
|
|
|
if (StringUtils.isEmpty(extra)) {
|
|
|
jsonObject.put("extra", content);
|
|
@@ -1570,6 +1773,18 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
if (CollectionUtils.isEmpty(rows)) {
|
|
|
return pageInfo;
|
|
|
}
|
|
|
+
|
|
|
+ for (HistoryMessageTencentWrapper.HistoryMessageTencent row : rows) {
|
|
|
+ // 时间戳 转换
|
|
|
+ Long msgTime = row.getMsgTimestamp();
|
|
|
+ if (msgTime != null) {
|
|
|
+ String dateTime = String.valueOf(msgTime);
|
|
|
+ if (dateTime.length() == 10) {
|
|
|
+ dateTime = dateTime + "000";
|
|
|
+ }
|
|
|
+ row.setMsgTime(Long.parseLong(DateUtil.format(new Date(Long.parseLong(dateTime)), "yyyyMMddHH")));
|
|
|
+ }
|
|
|
+ }
|
|
|
// 发送人信息
|
|
|
List<Integer> fromAccountList = rows.stream()
|
|
|
.map(HistoryMessageTencentWrapper.HistoryMessageTencent::getFromAccount)
|
|
@@ -1584,7 +1799,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
SysUser sysUser = userMap.get(Integer.parseInt(item.getFromAccount()));
|
|
|
if (sysUser != null) {
|
|
|
item.setFromAccountName(sysUserService.getImName(sysUser));
|
|
|
- item.setFromAccountAvatar(sysUserService.getImName(sysUser));
|
|
|
+ item.setFromAccountAvatar(sysUserService.getImAvatar(sysUser));
|
|
|
}
|
|
|
});
|
|
|
// 接收人
|
|
@@ -1601,7 +1816,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
SysUser sysUser = toUserMap.get(Integer.parseInt(item.getToAccount()));
|
|
|
if (sysUser != null) {
|
|
|
item.setToAccountName(sysUserService.getImName(sysUser));
|
|
|
- item.setToAccountAvatar(sysUserService.getImName(sysUser));
|
|
|
+ item.setToAccountAvatar(sysUserService.getImAvatar(sysUser));
|
|
|
}
|
|
|
});
|
|
|
// 群
|