|
|
@ -20,8 +20,10 @@ import com.research.system.service.SessionService; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
import javax.annotation.Resource; |
|
|
|
|
|
import java.util.Comparator; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
import java.util.Objects; |
|
|
import java.util.Objects; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* @Author zzc |
|
|
* @Author zzc |
|
|
@ -72,7 +74,20 @@ public class SessionServiceImpl implements SessionService { |
|
|
if (dto.getPageNum() > 0) { |
|
|
if (dto.getPageNum() > 0) { |
|
|
PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); |
|
|
PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); |
|
|
} |
|
|
} |
|
|
messageLogResult.setLogList(new PageInfo<>(sessionDao.queryLogList(dto.getParam()))); |
|
|
List<SessionVo.MessageLogResult.LogList> logLists = sessionDao.queryLogList(dto.getParam()); |
|
|
|
|
|
if (CollUtil.isNotEmpty(logLists)) { |
|
|
|
|
|
List<SessionVo.MessageLogResult.LogList> collect = logLists.stream().sorted(Comparator.comparing(SessionVo.MessageLogResult.LogList::getSendTime)).collect(Collectors.toList()); |
|
|
|
|
|
for (SessionVo.MessageLogResult.LogList logList : collect) { |
|
|
|
|
|
ChatMessageReadStatusExample chatMessageReadStatusExample = new ChatMessageReadStatusExample(); |
|
|
|
|
|
chatMessageReadStatusExample.createCriteria().andSessionIdEqualTo(dto.getParam().getSessionId()) |
|
|
|
|
|
.andSessionMessageIdEqualTo(logList.getMessageId()) |
|
|
|
|
|
.andSessionMemberIdEqualTo(SecurityUtils.getUserId()); |
|
|
|
|
|
ChatMessageReadStatus chatMessageReadStatus = new ChatMessageReadStatus(); |
|
|
|
|
|
chatMessageReadStatus.setReadStatus(Byte.valueOf("1")); |
|
|
|
|
|
chatMessageReadStatusMapper.updateByExampleSelective(chatMessageReadStatus, chatMessageReadStatusExample); |
|
|
|
|
|
} |
|
|
|
|
|
messageLogResult.setLogList(new PageInfo<>(collect)); |
|
|
|
|
|
} |
|
|
messageLogResult.setMemberList(sessionDao.queryMemberList(dto.getParam())); |
|
|
messageLogResult.setMemberList(sessionDao.queryMemberList(dto.getParam())); |
|
|
return messageLogResult; |
|
|
return messageLogResult; |
|
|
} |
|
|
} |
|
|
@ -177,7 +192,56 @@ public class SessionServiceImpl implements SessionService { |
|
|
//根据登录人查询未读消息
|
|
|
//根据登录人查询未读消息
|
|
|
List<SessionVo.UnRead.UnReadItem> unReadItems = sessionDao.queryUnReadList(SecurityUtils.getUserId()); |
|
|
List<SessionVo.UnRead.UnReadItem> unReadItems = sessionDao.queryUnReadList(SecurityUtils.getUserId()); |
|
|
unRead.setUnreadList(unReadItems); |
|
|
unRead.setUnreadList(unReadItems); |
|
|
unRead.setTotal(CollUtil.isNotEmpty(unReadItems) ? unReadItems.stream().map(SessionVo.UnRead.UnReadItem::getNum).reduce(0, Integer::sum) : 0); |
|
|
if (CollUtil.isNotEmpty(unReadItems)) { |
|
|
|
|
|
List<Integer> collect = unReadItems.stream().map(SessionVo.UnRead.UnReadItem::getNum).collect(Collectors.toList()); |
|
|
|
|
|
if (CollUtil.isNotEmpty(collect)) { |
|
|
|
|
|
Integer total = 0; |
|
|
|
|
|
for (Integer integer : collect) { |
|
|
|
|
|
if (integer != null && integer > 0) { |
|
|
|
|
|
total += integer; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
unRead.setTotal(total); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
return unRead; |
|
|
return unRead; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Integer addSessionMember(SessionDto.AddSessionMember dto) { |
|
|
|
|
|
ChatSessions chatSessions = chatSessionsMapper.selectByPrimaryKey(dto.getSessionId()); |
|
|
|
|
|
if (chatSessions == null) { |
|
|
|
|
|
throw new RuntimeException("会话不存在"); |
|
|
|
|
|
} |
|
|
|
|
|
for (Long aLong : dto.getMemberList()) { |
|
|
|
|
|
SysUser sysUser = sysUserService.selectUserById(aLong); |
|
|
|
|
|
if (sysUser == null) { |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
ChatSessionMembers chatSessionMembers = new ChatSessionMembers(); |
|
|
|
|
|
chatSessionMembers.setId(IdUtil.getSnowflakeNextId()); |
|
|
|
|
|
chatSessionMembers.setSessionId(chatSessions.getId()); |
|
|
|
|
|
chatSessionMembers.setSessionMemberId(aLong); |
|
|
|
|
|
chatSessionMembers.setIsCreator(Objects.equals(aLong, SecurityUtils.getUserId()) ? (byte) 1 : (byte) 0); |
|
|
|
|
|
chatSessionMembers.setIsAdmin(Objects.equals(aLong, SecurityUtils.getUserId()) ? (byte) 1 : (byte) 0); |
|
|
|
|
|
chatSessionMembers.setSessionAlias(""); |
|
|
|
|
|
chatSessionMembers.setCreateBy(SecurityUtils.getUsername()); |
|
|
|
|
|
chatSessionMembers.setCreateTime(new java.util.Date()); |
|
|
|
|
|
chatSessionMembersMapper.insertSelective(chatSessionMembers); |
|
|
|
|
|
} |
|
|
|
|
|
return 1; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Integer delSessionMember(SessionDto.AddSessionMember dto) { |
|
|
|
|
|
ChatSessions chatSessions = chatSessionsMapper.selectByPrimaryKey(dto.getSessionId()); |
|
|
|
|
|
if (chatSessions == null) { |
|
|
|
|
|
throw new RuntimeException("会话不存在"); |
|
|
|
|
|
} |
|
|
|
|
|
ChatSessionMembersExample chatSessionMembersExample = new ChatSessionMembersExample(); |
|
|
|
|
|
chatSessionMembersExample.createCriteria().andSessionIdEqualTo(chatSessions.getId()).andSessionMemberIdIn(dto.getMemberList()).andSessionIdEqualTo(chatSessions.getId()); |
|
|
|
|
|
ChatSessionMembers chatSessionMembers = new ChatSessionMembers(); |
|
|
|
|
|
chatSessionMembers.setDelFlag((byte) 1); |
|
|
|
|
|
return chatSessionMembersMapper.updateByExampleSelective(chatSessionMembers, chatSessionMembersExample); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|