Commit e41cb659 by Future

根据会话id查询指定会话信息

parent a44a3640
...@@ -2,7 +2,7 @@ package io.geekidea.springbootplus.test; ...@@ -2,7 +2,7 @@ package io.geekidea.springbootplus.test;
import com.wecloud.im.entity.ImConversation; import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.mapper.ImConversationMapper; import com.wecloud.im.mapper.ImConversationMapper;
import com.wecloud.im.vo.MyConversationListVo; import com.wecloud.im.vo.ConversationVo;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -23,7 +23,7 @@ public class ImConversationTest { ...@@ -23,7 +23,7 @@ public class ImConversationTest {
@Test @Test
public void listConversation() { public void listConversation() {
List<MyConversationListVo> myImConversationList = imConversationMapper.getMyImConversationListAndMsgCount(1394579719625773056L); List<ConversationVo> myImConversationList = imConversationMapper.getMyImConversationListAndMsgCount(1394579719625773056L, null);
List<ImConversation> myImConversationList1 = imConversationMapper.getMyImConversationList(1394579719625773056L); List<ImConversation> myImConversationList1 = imConversationMapper.getMyImConversationList(1394579719625773056L);
......
package com.wecloud.im.controller; package com.wecloud.im.controller;
import com.wecloud.im.param.ImConversationQueryParam;
import com.wecloud.im.param.add.ImClientLeaveConversation; import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
import com.wecloud.im.param.add.ImConversationAttrUpdate; import com.wecloud.im.param.add.ImConversationAttrUpdate;
...@@ -8,7 +9,7 @@ import com.wecloud.im.param.add.ImConversationDisplayUpdate; ...@@ -8,7 +9,7 @@ import com.wecloud.im.param.add.ImConversationDisplayUpdate;
import com.wecloud.im.param.add.ImConversationNameUpdate; import com.wecloud.im.param.add.ImConversationNameUpdate;
import com.wecloud.im.service.ImConversationService; import com.wecloud.im.service.ImConversationService;
import com.wecloud.im.vo.ImConversationCreateVo; import com.wecloud.im.vo.ImConversationCreateVo;
import com.wecloud.im.vo.MyConversationListVo; import com.wecloud.im.vo.ConversationVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -101,12 +102,22 @@ public class ImConversationController extends BaseController { ...@@ -101,12 +102,22 @@ public class ImConversationController extends BaseController {
*/ */
@PostMapping("/getList") @PostMapping("/getList")
@ApiOperation(value = "查询加入的会话列表", notes = "查询用户加入的非隐藏状态的会话列表 与每个会话的未读条数 成员") @ApiOperation(value = "查询加入的会话列表", notes = "查询用户加入的非隐藏状态的会话列表 与每个会话的未读条数 成员")
public ApiResult<List<MyConversationListVo>> getMyImConversationListAndMsgCount() throws Exception { public ApiResult<List<ConversationVo>> getMyImConversationListAndMsgCount() throws Exception {
List<MyConversationListVo> conversationList = imConversationService.getMyImConversationListAndMsgCount(); List<ConversationVo> conversationList = imConversationService.getMyImConversationListAndMsgCount();
return ApiResult.ok(conversationList); return ApiResult.ok(conversationList);
} }
/** /**
* 根据会话id查询指定会话信息
*/
@PostMapping("/info")
@ApiOperation(value = "根据会话id查询指定会话信息", notes = "根据会话id查询指定会话信息 与每个会话的未读条数")
public ApiResult<ConversationVo> info(ImConversationQueryParam param) throws Exception {
ConversationVo conversationVo = imConversationService.infoImConversationAndMsgCount(param);
return ApiResult.ok(conversationVo);
}
/**
* 批量修改单向隐藏或显示会话 * 批量修改单向隐藏或显示会话
*/ */
@PostMapping("/displayUpdate") @PostMapping("/displayUpdate")
......
...@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.entity.ImConversation; import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.param.ImConversationPageParam; import com.wecloud.im.param.ImConversationPageParam;
import com.wecloud.im.param.ImConversationQueryVo; import com.wecloud.im.param.ImConversationQueryVo;
import com.wecloud.im.vo.MyConversationListVo; import com.wecloud.im.vo.ConversationVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -46,7 +46,7 @@ public interface ImConversationMapper extends BaseMapper<ImConversation> { ...@@ -46,7 +46,7 @@ public interface ImConversationMapper extends BaseMapper<ImConversation> {
* @param clientId * @param clientId
* @return * @return
*/ */
List<MyConversationListVo> getMyImConversationListAndMsgCount(@Param("clientId") Long clientId); List<ConversationVo> getMyImConversationListAndMsgCount(@Param("clientId") Long clientId, @Param("conversationId") Long conversationId);
/** /**
* 查询用户加入的所有会话 * 查询用户加入的所有会话
......
package com.wecloud.im.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Author wenzhida
* @Date 2022/2/14 16:52
* @Description 会话信息获取入参
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "会话信息获取入参")
public class ImConversationQueryParam implements Serializable {
private static final long serialVersionUID = 302200332780152186L;
@ApiModelProperty("会话id")
private Long id;
}
...@@ -3,6 +3,7 @@ package com.wecloud.im.service; ...@@ -3,6 +3,7 @@ package com.wecloud.im.service;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.wecloud.im.entity.ImConversation; import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.param.ImConversationPageParam; import com.wecloud.im.param.ImConversationPageParam;
import com.wecloud.im.param.ImConversationQueryParam;
import com.wecloud.im.param.ImConversationQueryVo; import com.wecloud.im.param.ImConversationQueryVo;
import com.wecloud.im.param.add.ImClientLeaveConversation; import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
...@@ -11,7 +12,7 @@ import com.wecloud.im.param.add.ImConversationCreate; ...@@ -11,7 +12,7 @@ import com.wecloud.im.param.add.ImConversationCreate;
import com.wecloud.im.param.add.ImConversationDisplayUpdate; import com.wecloud.im.param.add.ImConversationDisplayUpdate;
import com.wecloud.im.param.add.ImConversationNameUpdate; import com.wecloud.im.param.add.ImConversationNameUpdate;
import com.wecloud.im.vo.ImConversationCreateVo; import com.wecloud.im.vo.ImConversationCreateVo;
import com.wecloud.im.vo.MyConversationListVo; import com.wecloud.im.vo.ConversationVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService; import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
...@@ -127,7 +128,14 @@ public interface ImConversationService extends BaseService<ImConversation> { ...@@ -127,7 +128,14 @@ public interface ImConversationService extends BaseService<ImConversation> {
* @return * @return
* @throws Exception * @throws Exception
*/ */
List<MyConversationListVo> getMyImConversationListAndMsgCount() throws Exception; List<ConversationVo> getMyImConversationListAndMsgCount() throws Exception;
/**
* 根据会话id查询单个会话信息 与会话的未读条数
* @param param
* @return
*/
ConversationVo infoImConversationAndMsgCount(ImConversationQueryParam param) throws Exception;
/** /**
* 获取加入的所有会话 * 获取加入的所有会话
......
...@@ -14,6 +14,7 @@ import com.wecloud.im.entity.ImMessageOnlineSend; ...@@ -14,6 +14,7 @@ import com.wecloud.im.entity.ImMessageOnlineSend;
import com.wecloud.im.enums.ChatTypeEnum; import com.wecloud.im.enums.ChatTypeEnum;
import com.wecloud.im.mapper.ImConversationMapper; import com.wecloud.im.mapper.ImConversationMapper;
import com.wecloud.im.param.ImConversationPageParam; import com.wecloud.im.param.ImConversationPageParam;
import com.wecloud.im.param.ImConversationQueryParam;
import com.wecloud.im.param.ImConversationQueryVo; import com.wecloud.im.param.ImConversationQueryVo;
import com.wecloud.im.param.add.ImClientLeaveConversation; import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation; import com.wecloud.im.param.add.ImClientToConversation;
...@@ -27,7 +28,7 @@ import com.wecloud.im.service.ImConversationMembersService; ...@@ -27,7 +28,7 @@ import com.wecloud.im.service.ImConversationMembersService;
import com.wecloud.im.service.ImConversationService; import com.wecloud.im.service.ImConversationService;
import com.wecloud.im.service.ImMessageService; import com.wecloud.im.service.ImMessageService;
import com.wecloud.im.vo.ImConversationCreateVo; import com.wecloud.im.vo.ImConversationCreateVo;
import com.wecloud.im.vo.MyConversationListVo; import com.wecloud.im.vo.ConversationVo;
import com.wecloud.im.vo.OfflineMsgDto; import com.wecloud.im.vo.OfflineMsgDto;
import com.wecloud.im.ws.enums.MsgTypeEnum; import com.wecloud.im.ws.enums.MsgTypeEnum;
import com.wecloud.im.ws.enums.WsResponseCmdEnum; import com.wecloud.im.ws.enums.WsResponseCmdEnum;
...@@ -44,6 +45,7 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging; ...@@ -44,6 +45,7 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken; import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import io.geekidea.springbootplus.framework.shiro.util.JwtUtil; import io.geekidea.springbootplus.framework.shiro.util.JwtUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
...@@ -810,18 +812,18 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -810,18 +812,18 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
} }
@Override @Override
public List<MyConversationListVo> getMyImConversationListAndMsgCount() throws Exception { public List<ConversationVo> getMyImConversationListAndMsgCount() throws Exception {
ImClient client = imClientService.getCurentClient(); ImClient client = imClientService.getCurentClient();
// 查询用户加入的所有会话 与每个会话的未读条数 成员 // 查询用户加入的所有会话 与每个会话的未读条数 成员
List<MyConversationListVo> myImConversationListAndMsgCount = imConversationMapper.getMyImConversationListAndMsgCount(client.getId()); List<ConversationVo> myImConversationListAndMsgCount = imConversationMapper.getMyImConversationListAndMsgCount(client.getId(), null);
// 返回的 // 返回的
List<MyConversationListVo> myImConversationListAndMsgCountNew = new ArrayList<>(); List<ConversationVo> myImConversationListAndMsgCountNew = new ArrayList<>();
// 转换json格式 // 转换json格式
for (MyConversationListVo myconversationlistvo : myImConversationListAndMsgCount) { for (ConversationVo myconversationlistvo : myImConversationListAndMsgCount) {
HashMap attributess = JsonUtils.json2Map(myconversationlistvo.getAttribute()); HashMap attributess = JsonUtils.json2Map(myconversationlistvo.getAttribute());
myconversationlistvo.setAttributes(attributess); myconversationlistvo.setAttributes(attributess);
...@@ -836,6 +838,23 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -836,6 +838,23 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
} }
@Override
public ConversationVo infoImConversationAndMsgCount(ImConversationQueryParam param) throws Exception {
ImClient client = imClientService.getCurentClient();
// 查询用户加入的所有会话 与每个会话的未读条数 成员
List<ConversationVo> conversationList = imConversationMapper.getMyImConversationListAndMsgCount(client.getId(), param.getId());
if (CollectionUtils.isEmpty(conversationList)) {
return null;
}
ConversationVo conversationVo = conversationList.get(0);
HashMap attributess = JsonUtils.json2Map(conversationVo.getAttribute());
conversationVo.setAttributes(attributess);
// 查询会话的最后一条消息
OfflineMsgDto lastMsg = imMessageService.getLastMsgByConversationId(conversationVo.getId());
conversationVo.setLastMsg(lastMsg);
return conversationVo;
}
@Override @Override
public List<ImConversation> getMyImConversationList() throws Exception { public List<ImConversation> getMyImConversationList() throws Exception {
......
...@@ -21,7 +21,7 @@ import java.util.HashMap; ...@@ -21,7 +21,7 @@ import java.util.HashMap;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@ApiModel(value = "MyConversationListVo") @ApiModel(value = "MyConversationListVo")
public class MyConversationListVo implements Serializable { public class ConversationVo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty("会话id") @ApiModelProperty("会话id")
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from im_conversation from im_conversation
</select> </select>
<select id="getMyImConversationListAndMsgCount" resultType="com.wecloud.im.vo.MyConversationListVo"> <select id="getMyImConversationListAndMsgCount" resultType="com.wecloud.im.vo.ConversationVo">
SELECT imConversation.id, SELECT imConversation.id,
imConversation.create_time, imConversation.create_time,
imConversation.`name`, imConversation.`name`,
...@@ -46,6 +46,9 @@ ...@@ -46,6 +46,9 @@
INNER JOIN im_client AS im_client ON im_client.id = imConversation.creator INNER JOIN im_client AS im_client ON im_client.id = imConversation.creator
WHERE imConversationMembers.fk_client_id = #{clientId} WHERE imConversationMembers.fk_client_id = #{clientId}
AND imConversationMembers.display_status = 1 AND imConversationMembers.display_status = 1
<if test="conversationId != null">
AND imConversation.id = #{conversationId}
</if>
GROUP BY imConversation.id GROUP BY imConversation.id
</select> </select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment