|
@@ -1,10 +1,10 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.microsvc.toolkit.middleware.common.http.ImageUtil;
|
|
|
import com.microsvc.toolkit.middleware.im.ImPluginContext;
|
|
@@ -22,21 +22,14 @@ import com.ym.mec.biz.dal.dao.TeacherDao;
|
|
|
import com.ym.mec.biz.dal.dto.ImGroupDto;
|
|
|
import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
|
|
|
import com.ym.mec.biz.dal.dto.NameDto;
|
|
|
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
|
|
|
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
|
|
|
-import com.ym.mec.biz.dal.entity.Employee;
|
|
|
-import com.ym.mec.biz.dal.entity.ImGroup;
|
|
|
-import com.ym.mec.biz.dal.entity.ImGroupMember;
|
|
|
-import com.ym.mec.biz.dal.entity.MusicGroup;
|
|
|
-import com.ym.mec.biz.dal.entity.SchoolStaff;
|
|
|
-import com.ym.mec.biz.dal.entity.Student;
|
|
|
-import com.ym.mec.biz.dal.entity.Teacher;
|
|
|
+import com.ym.mec.biz.dal.entity.*;
|
|
|
import com.ym.mec.biz.dal.enums.EFriendRoleType;
|
|
|
import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
|
|
|
import com.ym.mec.biz.dal.enums.im.ClientEnum;
|
|
|
import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
|
|
|
import com.ym.mec.biz.dal.mapper.SchoolStaffMapper;
|
|
|
import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
|
|
|
import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
|
|
|
import com.ym.mec.biz.dal.wrapper.ImHistoryMessageWrapper;
|
|
|
import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
|
|
@@ -63,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;
|
|
@@ -83,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;
|
|
|
|
|
@@ -221,6 +206,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
.avatar(sysUser.getAvatar())
|
|
|
.nickname(sysUserType == SysUserType.STUDENT?sysUser.getUsername():sysUser.getRealName())
|
|
|
.roleType(roleType)
|
|
|
+ .tenantId(imGroup.getTenantId())
|
|
|
.isAdmin(true)
|
|
|
.build();
|
|
|
}
|
|
@@ -281,6 +267,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
// .avatar(groupMember.getAvatar())
|
|
|
.nickname(groupMember.getNickname())
|
|
|
.isAdmin(groupMember.getIsAdmin())
|
|
|
+ .tenantId(groupMember.getTenantId())
|
|
|
.imUserId(getImUserId(groupMember.getUserId().toString(), sysUserType.name()))
|
|
|
.roleType(groupMember.getRoleType())
|
|
|
.build());
|
|
@@ -317,7 +304,14 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
|
|
|
@Override
|
|
|
public List<ImGroup> queryByUserId(Integer userId, String search,String groupType) {
|
|
|
- return 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());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return imGroups;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -348,11 +342,14 @@ 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()));
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
+ // 群成员头像
|
|
|
+ if (Objects.nonNull(imGroupMemberDto.getUser())) {
|
|
|
+ imGroupMemberDto.setAvatar(imGroupMemberDto.getUser().getAvatar());
|
|
|
+ }
|
|
|
}
|
|
|
return imGroupMemberDtos;
|
|
|
}
|
|
@@ -395,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("更新用户信息失败");
|
|
@@ -496,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,8 +535,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
// 注册主播用户信息到三方平台
|
|
|
imGroupCoreService.register(userId.toString(),"", name, avatar);
|
|
|
|
|
|
+ boolean createFlag = false;
|
|
|
// 群组不存在,先创建群组
|
|
|
if (Objects.isNull(imGroup)) {
|
|
|
+ createFlag = true;
|
|
|
CooperationOrgan cooperationOrgan = cooperationOrganService.get(schoolId.intValue());
|
|
|
imGroup = new ImGroup();
|
|
|
imGroup.setSchoolId(schoolId);
|
|
@@ -554,25 +554,33 @@ 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 {
|
|
|
+ ImGroupMemberWrapper.ImGroupMember groupMember = ImGroupMemberWrapper.ImGroupMember.builder()
|
|
|
+ .userId(userId.longValue())
|
|
|
+ .nickname(name)
|
|
|
+ .build();
|
|
|
+ imGroupCoreService.groupMemberJoin(imGroup.getId(), Lists.newArrayList(groupMember));
|
|
|
+ // 更新群主流程
|
|
|
+ if (schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER)) {
|
|
|
+ groupChangeOwner(userId, imGroup.getId());
|
|
|
+ }
|
|
|
|
|
|
+ ImGroupMember imGroupMember = new ImGroupMember();
|
|
|
+ imGroupMember.setImGroupId(imGroup.getId());
|
|
|
+ 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);
|
|
|
|
|
|
- if (schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER)) {
|
|
|
- groupChangeOwner(userId, imGroup.getId());
|
|
|
}
|
|
|
- ImGroupMember imGroupMember = new ImGroupMember();
|
|
|
- imGroupMember.setImGroupId(imGroup.getId());
|
|
|
- imGroupMember.setUserId(userId);
|
|
|
- imGroupMember.setIsAdmin(schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER));
|
|
|
- imGroupMember.setRoleType(schoolStaffType.getDescribe());
|
|
|
- imGroupMember.setType(EFriendRoleType.getByName(schoolStaffType.getDescribe()).name());
|
|
|
- imGroupMember.setTenantId(imGroup.getTenantId());
|
|
|
- imGroupMemberDao.insert(imGroupMember);
|
|
|
-
|
|
|
updateImGroupUserNumber(imGroup.getId());
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private void initSchoolGroup(Long schoolId) {
|
|
@@ -761,7 +769,16 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
*/
|
|
|
@Override
|
|
|
public List<ImGroup> queryByUserId(ImGroupWrapper.ImQuery query) {
|
|
|
- return imGroupDao.getByUserId(query);
|
|
|
+ List<ImGroup> imGroups = imGroupDao.getByUserId(query).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());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return imGroups;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -935,12 +952,12 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
importGroup.setNotification(imGroup.getMemo());
|
|
|
importGroup.setFaceUrl(imGroup.getImg());
|
|
|
if (StringUtils.isEmpty(imGroup.getImg())) {
|
|
|
- importGroup.setFaceUrl("https://gyt.ks3-cn-beijing.ksyuncs.com/icon_group_avatar1.png");
|
|
|
+ importGroup.setFaceUrl(imGroup.getGroupType().getAvatar());
|
|
|
}
|
|
|
importGroup.setApplyJoinOption("FreeAccess");
|
|
|
importGroup.setCreateTime(imGroup.getCreateTime().getTime() / 1000);
|
|
|
if (admin != null) {
|
|
|
- register(admin.getUserId().toString(), getClientType(admin.getRoleType()));
|
|
|
+ register(admin.getUserId().toString(), getClientType(admin.getRoleType()),"");
|
|
|
}
|
|
|
imPluginContext.getPluginService().importGroup(importGroup);
|
|
|
|
|
@@ -951,7 +968,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
continue;
|
|
|
}
|
|
|
for (ImGroupMember member : groupMembers) {
|
|
|
- register(member.getUserId().toString(), getClientType(member.getRoleType()));
|
|
|
+ register(member.getUserId().toString(), getClientType(member.getRoleType()),"");
|
|
|
}
|
|
|
MessageWrapper.ImportGroupMember importGroupMember = new MessageWrapper.ImportGroupMember();
|
|
|
importGroupMember.setGroupId(imGroup.getId());
|
|
@@ -980,11 +997,13 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void register(String userId, String clientType) {
|
|
|
+ private void register(String userId, String clientType,String avatar) {
|
|
|
SysUser user = sysUserService.queryUserById(Integer.valueOf(userId));
|
|
|
- String avatar = user.getAvatar();
|
|
|
+ if (user == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (StringUtils.isEmpty(avatar)) {
|
|
|
- avatar = "https://daya.ks3-cn-beijing.ksyun.com/202203/T1WgJaE.png";
|
|
|
+ avatar = user.getAvatar();
|
|
|
}
|
|
|
try {
|
|
|
String username = user.getUsername();
|
|
@@ -992,10 +1011,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);
|
|
|
}
|
|
@@ -1028,9 +1047,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
|
|
|
log.info("------------------------------- import user student ---------------------------");
|
|
|
List<String[]> student = getStudent(page, rows);
|
|
|
+ SysConfig studentAvatar = sysConfigService.findByParamName(SysConfigService.STUDENT_DEFAULT_AVATAR);
|
|
|
while (!student.isEmpty()) {
|
|
|
for (String[] next : student) {
|
|
|
- register(next[0], next[1]);
|
|
|
+ register(next[0], next[1],studentAvatar.getParanValue());
|
|
|
}
|
|
|
count += student.size();
|
|
|
log.info("import im student success count:{}", count);
|
|
@@ -1039,12 +1059,14 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
}
|
|
|
|
|
|
log.info("------------------------------- import user staff ---------------------------");
|
|
|
+ // USER_DEFAULT_AVATAR
|
|
|
count = 0;
|
|
|
page = 1;
|
|
|
+ SysConfig staffAvatar = sysConfigService.findByParamName(SysConfigService.USER_DEFAULT_AVATAR);
|
|
|
List<String[]> staff = getStaff(page, rows);
|
|
|
while (!staff.isEmpty()) {
|
|
|
for (String[] next : staff) {
|
|
|
- register(next[0], next[1]);
|
|
|
+ register(next[0], next[1],staffAvatar.getParanValue());
|
|
|
}
|
|
|
count += staff.size();
|
|
|
log.info("import im staff success count:{}", count);
|
|
@@ -1053,12 +1075,14 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
}
|
|
|
|
|
|
log.info("------------------------------- import user emps ---------------------------");
|
|
|
+ // TEACHER_DEFAULT_AVATAR
|
|
|
count = 0;
|
|
|
page = 1;
|
|
|
+ SysConfig empAvatar = sysConfigService.findByParamName(SysConfigService.TEACHER_DEFAULT_AVATAR);
|
|
|
List<String[]> emps = getEmp(page, rows);
|
|
|
while (!emps.isEmpty()) {
|
|
|
for (String[] next : emps) {
|
|
|
- register(next[0], next[1]);
|
|
|
+ register(next[0], next[1],empAvatar.getParanValue());
|
|
|
}
|
|
|
count += emps.size();
|
|
|
log.info("import im emps success count:{}", count);
|
|
@@ -1069,10 +1093,11 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
log.info("------------------------------- import user teacher ---------------------------");
|
|
|
count = 0;
|
|
|
page = 1;
|
|
|
+ SysConfig teacherAvatar = sysConfigService.findByParamName(SysConfigService.TEACHER_DEFAULT_AVATAR);
|
|
|
List<String[]> teachers = getTeachers(page, rows);
|
|
|
while (!teachers.isEmpty()) {
|
|
|
for (String[] next : teachers) {
|
|
|
- register(next[0], next[1]);
|
|
|
+ register(next[0], next[1], teacherAvatar.getParanValue());
|
|
|
}
|
|
|
count += teachers.size();
|
|
|
log.info("import im teacher success count:{}", count);
|
|
@@ -1093,22 +1118,22 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
QueryInfo queryInfo = new QueryInfo();
|
|
|
queryInfo.setPage(page);
|
|
|
queryInfo.setRows(rows);
|
|
|
- PageInfo<Employee> employeePageInfo = employeeService.queryPage(queryInfo);
|
|
|
+ PageInfo<Employee> employeePageInfo = employeeService.queryBaseInfoByPage(queryInfo);
|
|
|
return employeePageInfo.getRows().stream().map(next -> {
|
|
|
String[] strList = new String[2];
|
|
|
- strList[0] = next.getId().toString();
|
|
|
- strList[1] = "EMPLOYEE";
|
|
|
+ strList[0] = next.getUserId().toString();
|
|
|
+ strList[1] = "SYSTEM";
|
|
|
return strList;
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
private List<String[]> getStaff(int page, int rows) {
|
|
|
- Page<SchoolStaffWrapper.SchoolStaff> staffPage = PageUtil.getPage(page, rows);
|
|
|
- IPage<SchoolStaffWrapper.SchoolStaff> iPage = schoolStaffService.selectPage(staffPage,
|
|
|
+ IPage<SchoolStaffWrapper.SchoolStaff> staffPage = PageUtil.getPage(page, rows);
|
|
|
+ IPage<SchoolStaffWrapper.SchoolStaff> iPage = schoolStaffService.selectBaseInfoByPage(staffPage,
|
|
|
new SchoolStaffWrapper.SchoolStaffQuery());
|
|
|
return iPage.getRecords().stream().map(next -> {
|
|
|
String[] strList = new String[2];
|
|
|
- strList[0] = next.getId().toString();
|
|
|
+ strList[0] = next.getUserId().toString();
|
|
|
strList[1] = "SCHOOL";
|
|
|
return strList;
|
|
|
}).collect(Collectors.toList());
|
|
@@ -1118,10 +1143,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
QueryInfo queryInfo = new QueryInfo();
|
|
|
queryInfo.setPage(page);
|
|
|
queryInfo.setRows(rows);
|
|
|
- PageInfo<Student> studentPageInfo = studentService.queryPage(queryInfo);
|
|
|
+ PageInfo<Student> studentPageInfo = studentService.queryBaseInfoByPage(queryInfo);
|
|
|
return studentPageInfo.getRows().stream().map(next -> {
|
|
|
String[] strList = new String[2];
|
|
|
- strList[0] = next.getId().toString();
|
|
|
+ strList[0] = next.getUserId().toString();
|
|
|
strList[1] = "STUDENT";
|
|
|
return strList;
|
|
|
}).collect(Collectors.toList());
|
|
@@ -1131,7 +1156,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
QueryInfo queryInfo = new QueryInfo();
|
|
|
queryInfo.setPage(page);
|
|
|
queryInfo.setRows(rows);
|
|
|
- PageInfo<Teacher> teacherPageInfo = teacherService.queryPage(queryInfo);
|
|
|
+ PageInfo<Teacher> teacherPageInfo = teacherService.queryBaseInfoByPage(queryInfo);
|
|
|
return teacherPageInfo.getRows().stream().map(next -> {
|
|
|
String[] strList = new String[2];
|
|
|
strList[0] = next.getId().toString();
|
|
@@ -1366,6 +1391,11 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
} else {
|
|
|
continue;
|
|
|
}
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(bodyList)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ bodyList = bodyList.stream().filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
if (CollectionUtils.isEmpty(bodyList)) {
|
|
|
continue;
|
|
|
}
|
|
@@ -1379,6 +1409,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
// 消息转换
|
|
|
tencent.setCloudCustomData(jsonObject.getString("extra"));
|
|
|
tencent.setMsgBody(JSON.toJSONString(bodyList));
|
|
|
+ tencent.setMsgBodyJson(JSON.parseObject(tencent.getMsgBody(), JSONArray.class));
|
|
|
|
|
|
historyMessageTencentService.insert(tencent);
|
|
|
|
|
@@ -1394,7 +1425,17 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
List<TencentRequest.MessageBody> bodyList = new ArrayList<>();
|
|
|
if (i.getClassname().equals("RC:TxtMsg")) {
|
|
|
//文本
|
|
|
- TencentRequest.MessageBody body1 = getTimTextElem(jsonObject.getString("content"));
|
|
|
+ //文本
|
|
|
+ String content = jsonObject.getString("content");
|
|
|
+
|
|
|
+ // http开头的链接 扩展字段没有值 放在扩展字段里
|
|
|
+ if (content.startsWith("http")) {
|
|
|
+ String extra = jsonObject.getString("extra");
|
|
|
+ if (StringUtils.isEmpty(extra)) {
|
|
|
+ jsonObject.put("extra", content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ TencentRequest.MessageBody body1 = getTimTextElem(content);
|
|
|
bodyList.add(body1);
|
|
|
} else if (i.getClassname().equals("RC:ImgMsg")) {
|
|
|
//图片
|
|
@@ -1463,7 +1504,17 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
|
List<TencentRequest.MessageBody> list = new ArrayList<>();
|
|
|
if (i.getClassname().equals("RC:TxtMsg")) {
|
|
|
//文本
|
|
|
- TencentRequest.MessageBody body1 = getTimTextElem(jsonObject.getString("content"));
|
|
|
+ String content = jsonObject.getString("content");
|
|
|
+
|
|
|
+ // http开头的链接 扩展字段没有值 放在扩展字段里
|
|
|
+ if (content.startsWith("http")) {
|
|
|
+ String extra = jsonObject.getString("extra");
|
|
|
+ if (StringUtils.isEmpty(extra)) {
|
|
|
+ jsonObject.put("extra", content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ TencentRequest.MessageBody body1 = getTimTextElem(content);
|
|
|
list.add(body1);
|
|
|
} else if (i.getClassname().equals("RC:ImgMsg")) {
|
|
|
//图片
|
|
@@ -1521,6 +1572,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;
|