Commit 4129505b by giaogiao

查询某个会话历史消息分页列表;

parent 615f7b7a
......@@ -6,8 +6,6 @@ import com.wecloud.im.service.ImConversationService;
import com.wecloud.im.vo.MyConversationListVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -38,8 +36,7 @@ public class ImConversationController extends BaseController {
* 创建会话
*/
@PostMapping("/create")
@OperationLog(name = "创建会话", type = OperationLogType.ADD)
@ApiOperation(value = "创建会话")
@ApiOperation(value = "创建会话", notes = "两个用户如果已经创建过会话,不能重复创建会话")
public ApiResult<ImConversation> createImConversation(@RequestBody ImConversationCreate imConversationCreate) throws Exception {
ApiResult<ImConversation> imConversation = imConversationService.createImConversation(imConversationCreate);
return imConversation;
......
package com.wecloud.im.controller;
import com.wecloud.im.param.ImHistoryMessagePageParam;
import com.wecloud.im.service.ImMessageService;
import com.wecloud.im.vo.ImMessageOfflineListVo;
import com.wecloud.im.vo.OfflineMsgDto;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -41,6 +48,17 @@ public class ImMessageController extends BaseController {
}
/**
* 查询某个会话历史消息分页列表
*/
@PostMapping("/getHistoryMsg")
@OperationLog(name = "查询某个会话历史消息分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "查询某个会话历史消息分页列表")
public ApiResult<Paging<OfflineMsgDto>> getHistoryMsg(@Validated @RequestBody ImHistoryMessagePageParam imHistoryMessagePageParam) throws Exception {
Paging<OfflineMsgDto> paging = imMessageService.getHistoryMsgConversationId(imHistoryMessagePageParam);
return ApiResult.ok(paging);
}
//
// /**
// * 添加消息存储表
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.entity.ImMessage;
import com.wecloud.im.param.ImHistoryMessagePageParam;
import com.wecloud.im.param.ImMessagePageParam;
import com.wecloud.im.param.ImMessageQueryVo;
import com.wecloud.im.vo.OfflineMsgDto;
......@@ -39,6 +40,14 @@ public interface ImMessageMapper extends BaseMapper<ImMessage> {
*/
IPage<ImMessageQueryVo> getImMessagePageList(@Param("page") Page page, @Param("param") ImMessagePageParam imMessagePageParam);
/**
* 查询某个会话历史消息分页列表
*
* @param page
* @param imHistoryMessagePageParam
* @return
*/
IPage<OfflineMsgDto> getHistoryMsgConversationId(@Param("page") Page page, @Param("param") ImHistoryMessagePageParam imHistoryMessagePageParam);
/**
* 根据客户端id与会话id 查询离线消息
......
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <pre>
* 消息存储表 分页参数对象
* </pre>
*
* @author wei
* @date 2021-04-29
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImHistoryMessagePageParam")
public class ImHistoryMessagePageParam extends BasePageOrderParam {
private static final long serialVersionUID = 1L;
@ApiModelProperty("会话id")
private Long conversationId;
}
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
/**
* <pre>
......@@ -20,4 +20,4 @@ import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
@ApiModel(value = "消息存储表分页参数")
public class ImMessagePageParam extends BasePageOrderParam{
private static final long serialVersionUID=1L;
}
}
package com.wecloud.im.service;
import com.wecloud.im.entity.ImMessage;
import com.wecloud.im.param.ImHistoryMessagePageParam;
import com.wecloud.im.param.ImMessagePageParam;
import com.wecloud.im.param.ImMessageQueryVo;
import com.wecloud.im.vo.ImMessageOfflineListVo;
......@@ -63,6 +64,15 @@ public interface ImMessageService extends BaseService<ImMessage> {
*/
Paging<ImMessageQueryVo> getImMessagePageList(ImMessagePageParam imMessagePageParam) throws Exception;
/**
* 查询某个会话历史消息分页列表
*
* @param imHistoryMessagePageParam
* @return
* @throws Exception
*/
Paging<OfflineMsgDto> getHistoryMsgConversationId(ImHistoryMessagePageParam imHistoryMessagePageParam) throws Exception;
/**
* 查询用户所有离线消息
......
......@@ -9,7 +9,6 @@ import com.wecloud.im.param.ImTokenVerify;
import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientLoginService;
import com.wecloud.im.service.ImClientService;
import com.wecloud.im.tillo.app_ws.utils.RedisUtils;
import com.wecloud.im.vo.TokenVo;
import io.geekidea.springbootplus.config.properties.JwtProperties;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
......@@ -19,18 +18,17 @@ import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import io.geekidea.springbootplus.framework.shiro.util.JwtUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class ImClientLoginServiceImpl implements ImClientLoginService {
@Autowired
private RedisUtils redisUtils;
// @Autowired
// private RedisUtils redisUtils;
@Autowired
private StringRedisTemplate redisTemplate;
// @Autowired
// private StringRedisTemplate redisTemplate;
@Autowired
private ImApplicationService imApplicationService;
......@@ -62,7 +60,7 @@ public class ImClientLoginServiceImpl implements ImClientLoginService {
);
if (imApplication == null) {
log.debug("imApplication == null");
log.error("imApplication == null,getAppKey:" + imTokenVerify.getAppKey());
return ApiResult.result(ApiCode.FAIL, null);
}
......
......@@ -68,6 +68,9 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
// 判断是否已经存在会话
// 会话id
Long imConversationId = SnowflakeUtil.getId();
// 根据appKey查询appid
......
......@@ -7,6 +7,7 @@ import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.entity.ImMessage;
import com.wecloud.im.mapper.ImMessageMapper;
import com.wecloud.im.param.ImHistoryMessagePageParam;
import com.wecloud.im.param.ImMessagePageParam;
import com.wecloud.im.param.ImMessageQueryVo;
import com.wecloud.im.service.ImClientService;
......@@ -74,6 +75,16 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
return new Paging<ImMessageQueryVo>(iPage);
}
@Override
public Paging<OfflineMsgDto> getHistoryMsgConversationId(ImHistoryMessagePageParam imHistoryMessagePageParam) throws Exception {
Page<ImMessage> page = new PageInfo<>(imHistoryMessagePageParam, OrderItem.desc(getLambdaColumn(ImMessage::getCreateTime)));
IPage<OfflineMsgDto> iPage = imMessageMapper.getHistoryMsgConversationId(page, imHistoryMessagePageParam);
return new Paging<>(iPage);
}
/**
* 查询用户所有离线消息
*
......
......@@ -71,7 +71,7 @@ public class WsHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {
// Long userIdByChannel = appUserChannelsService.getUserIdByChannel(ctx);
//
// log.debug("appWS收到" + userIdByChannel + ":" + data + ",channelId:" + ctx.channel().id().asLongText());
log.debug("WS收到" + data);
log.debug("WS收到:" + data);
readWsData.convertModel(data, ctx);
}
......
......@@ -15,7 +15,8 @@ import java.util.HashMap;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ReceiveModel implements Serializable {
public class
ReceiveModel implements Serializable {
/**
* 枚举类UriPathEnum 请求uri的编码
......
......@@ -32,7 +32,7 @@ public class ReadWsData {
@Resource
private WriteDataService writeDataService;
private static final String PING = "p";
private static final String PING = "ping";
/**
* 在此开始进入业务流程子线程,将不占netty的io线程
......@@ -41,15 +41,16 @@ public class ReadWsData {
* @throws Exception
*/
public void convertModel(String data, ChannelHandlerContext ctx) {
String appKey = ctx.channel().attr(MangerChannelService.APP_KEY).get();
String clientId = ctx.channel().attr(MangerChannelService.CLIENT_ID).get();
// if (PING.equals(data)) {
// log.debug("收到心跳:" + userId);
// return;
// }
if (PING.equals(data)) {
log.debug("收到心跳:" + clientId);
return;
}
String language = ctx.channel().attr(MangerChannelService.LANGUAGE).get();
String appKey = ctx.channel().attr(MangerChannelService.APP_KEY).get();
String clientId = ctx.channel().attr(MangerChannelService.CLIENT_ID).get();
// ReceiveModel requestModel = JSON.parseObject(data, ReceiveModel.class);
......
......@@ -22,13 +22,44 @@
</select>
<select id="getOfflineListByClientAndConversation" resultType="com.wecloud.im.vo.OfflineMsgDto">
SELECT im_message.*
SELECT im_message.id AS id,
im_message.create_time,
im_message.withdraw_time,
im_message.update_date,
`im_client`.client_id AS sender,
im_message.content,
im_message.withdraw,
im_message.`event`,
im_message.system,
im_message.`at`,
im_message.send_status,
im_message.fk_conversation_id
FROM im_inbox
INNER JOIN im_message im_message ON im_message.id = im_inbox.fk_msg_id
INNER JOIN `im_client` ON `im_client`.id = `im_message`.sender
WHERE im_inbox.fk_conversation_id = #{conversationId}
AND im_inbox.receiver = #{clientId}
AND im_inbox.read_msg = 0
AND im_inbox.read_msg = 0
</select>
<select id="getHistoryMsgConversationId" resultType="com.wecloud.im.vo.OfflineMsgDto">
SELECT im_message.id AS id,
im_message.create_time,
im_message.withdraw_time,
im_message.update_date,
`im_client`.client_id AS sender,
im_message.content,
im_message.withdraw,
im_message.`event`,
im_message.system,
im_message.`at`,
im_message.send_status,
im_message.fk_conversation_id
FROM `im_message`
INNER JOIN `im_client` ON `im_client`.id = `im_message`.sender
WHERE fk_conversation_id = #{param.conversationId}
ORDER BY `im_message`.`create_time` DESC
</select>
</mapper>
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