Browse Source

修改聊天问题

master
ccsens_zhengzhichuan 1 week ago
parent
commit
6d6f1f11f2
  1. 12
      research-admin/src/main/java/com/research/web/controller/client/session/SessionController.java
  2. 7
      research-system/src/main/java/com/research/system/domain/dto/SessionDto.java
  3. 2
      research-system/src/main/java/com/research/system/domain/vo/SessionVo.java
  4. 4
      research-system/src/main/java/com/research/system/service/SessionService.java
  5. 68
      research-system/src/main/java/com/research/system/service/impl/SessionServiceImpl.java
  6. 10
      research-system/src/main/resources/mapper/dao/SessionDao.xml

12
research-admin/src/main/java/com/research/web/controller/client/session/SessionController.java

@ -80,4 +80,16 @@ public class SessionController {
public JsonResponse<SessionVo.UnRead> queryUnRead(){
return JsonResponse.ok(sessionService.queryUnRead());
}
@ApiOperation(value = "群组会话添加人员")
@RequestMapping(value = "/addSessionMember", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Integer> addSessionMember(@ApiParam @Validated @RequestBody SessionDto.AddSessionMember dto){
return JsonResponse.ok(sessionService.addSessionMember(dto));
}
@ApiOperation(value = "群组会话删除人员")
@RequestMapping(value = "/delSessionMember", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Integer> delSessionMember(@ApiParam @Validated @RequestBody SessionDto.AddSessionMember dto){
return JsonResponse.ok(sessionService.delSessionMember(dto));
}
}

7
research-system/src/main/java/com/research/system/domain/dto/SessionDto.java

@ -63,4 +63,11 @@ public class SessionDto {
private List<Long> idList;
}
@Data
public static class AddSessionMember{
@ApiModelProperty("会话id")
private Long sessionId;
@ApiModelProperty("会话成员")
private List<Long> memberList;
}
}

2
research-system/src/main/java/com/research/system/domain/vo/SessionVo.java

@ -104,7 +104,7 @@ public class SessionVo {
@ApiModelProperty("会话ID")
private Long sessionId;
@ApiModelProperty("该会话ID未读数量")
private Integer num;
private Integer num = 0;
}
}

4
research-system/src/main/java/com/research/system/service/SessionService.java

@ -27,4 +27,8 @@ public interface SessionService {
Integer delLog(SessionDto.Delete dto);
SessionVo.UnRead queryUnRead();
Integer addSessionMember(SessionDto.AddSessionMember dto);
Integer delSessionMember(SessionDto.AddSessionMember dto);
}

68
research-system/src/main/java/com/research/system/service/impl/SessionServiceImpl.java

@ -20,8 +20,10 @@ import com.research.system.service.SessionService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @Author zzc
@ -72,7 +74,20 @@ public class SessionServiceImpl implements SessionService {
if (dto.getPageNum() > 0) {
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()));
return messageLogResult;
}
@ -177,7 +192,56 @@ public class SessionServiceImpl implements SessionService {
//根据登录人查询未读消息
List<SessionVo.UnRead.UnReadItem> unReadItems = sessionDao.queryUnReadList(SecurityUtils.getUserId());
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;
}
@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);
}
}

10
research-system/src/main/resources/mapper/dao/SessionDao.xml

@ -17,11 +17,12 @@ select * from
m.create_time as lastMessageTime,
m.sender_id as senderId,
s.create_time as createTime,
null
null as orgName
FROM
chat_sessions s
LEFT JOIN chat_session_messages m on s.id = m.session_id
where s.created_by = #{userId}
LEFT JOIN chat_session_members csm on s.id = csm.session_id
where csm.session_member_id = #{userId}
<if test="nickname != null and nickname != ''">
and s.session_name like concat('%',#{nickname},'%')
</if>
@ -44,6 +45,7 @@ select * from
LEFT JOIN chat_session_members sm on sm.session_member_id = l.user_id and sm.is_creator = 1
LEFT JOIN chat_sessions cs on sm.session_id = cs.id and session_type = 0
<where>
l.user_id != #{userId}
<if test="nickname != null and nickname != ''">
and l.nick_name like concat('%',#{nickname},'%')
</if>
@ -100,8 +102,8 @@ select * from
<select id="queryUnReadList" resultType="com.research.system.domain.vo.SessionVo$UnRead$UnReadItem">
SELECT
cs.id,
count(csm.id)
cs.id as sessionId,
count(csm.id) as num
FROM
chat_sessions cs
LEFT JOIN chat_session_messages csm on cs.id = csm.session_id

Loading…
Cancel
Save