Commit 8bd38a6d by giaogiao

修改包结构;

消息修改为已读状态;
已接收同时修改为已读状态;
添加读取时间; 0未接收; 1已接收;接收时间 ; 0未读; 1已读;0未接收; 1已接收;
优化事务处理;
parent e997ccd7
package io.geekidea.springbootplus.test;
import cn.hutool.core.lang.Snowflake;
import com.wecloud.im.app_ws.utils.RSAGenerator;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImConversationMembersService;
import com.wecloud.im.ws.utils.RSAGenerator;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
......
......@@ -3,7 +3,7 @@ package io.geekidea.springbootplus.test;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.wecloud.im.app_ws.model.request.ReceiveModel;
import com.wecloud.im.ws.model.request.ReceiveModel;
public class JsonTest {
......
......@@ -3,11 +3,11 @@ package io.geekidea.springbootplus.test;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.crypto.digest.MD5;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.im.app_ws.utils.RedisUtils;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientService;
import com.wecloud.im.ws.utils.RedisUtils;
import io.geekidea.springbootplus.framework.shiro.util.JwtUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
......
......@@ -4,7 +4,7 @@ import cn.hutool.crypto.digest.MD5;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.wecloud.im.app_ws.model.request.ReceiveModel;
import com.wecloud.im.ws.model.request.ReceiveModel;
import java.util.Date;
......
package com.wecloud.im.app_ws.model.request;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description 拉取所有房间离线消息
* @Author hewei hwei1233@163.com
* @Date 2020-01-03
*/
@Data
public class RequestOfflineMsgModel implements Serializable {
/**
* 优先权,需要优先拉取的房间id
* 如为空,可不传
*/
private List<Long> priority;
/**
* 身份公钥
*/
private String identityKey;
}
package com.wecloud.im.controller;
import com.wecloud.im.app_ws.utils.RSAGenerator;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.param.ImApplicationPageParam;
import com.wecloud.im.param.ImApplicationQueryVo;
import com.wecloud.im.param.add.ImApplicationAdd;
import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.ws.utils.RSAGenerator;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
......
package com.wecloud.im.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.im.app_ws.service.MangerChannelService;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.param.add.ImClientDeviceInfoAdd;
import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientService;
import com.wecloud.im.vo.ImOnlineStatusVo;
import com.wecloud.im.ws.service.MangerChannelService;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.validator.groups.Add;
......
package com.wecloud.im.controller;
import com.wecloud.im.param.ImMsgReceivedUpdate;
import com.wecloud.im.param.ImMsgReadStatusUpdate;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.service.ImInboxService;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
......@@ -28,15 +29,22 @@ public class ImInboxController extends BaseController {
@Autowired
private ImInboxService imInboxService;
/**
* 消息修改为已接收状态
*/
@PostMapping("/msgReceivedUpdate")
@ApiOperation(value = "消息修改为已接收状态")
public ApiResult<Boolean> updateImMsgReceived(@RequestBody ImMsgReceivedUpdate imMsgReceivedUpdate) throws Exception {
imInboxService.updateImMsgReceived(imMsgReceivedUpdate);
return ApiResult.ok();
public ApiResult<Boolean> updateImMsgReceived(@RequestBody ImMsgReceivedStatusUpdate imMsgReceivedUpdate) throws Exception {
return imInboxService.updateImMsgReceived(imMsgReceivedUpdate);
}
/**
* 消息修改为已读状态
*/
@PostMapping("/msgReadUpdate")
@ApiOperation(value = "消息修改为已读状态")
public ApiResult<Boolean> updateInMsgReadUpdate(@RequestBody ImMsgReadStatusUpdate imMsgReadStatusUpdate) throws Exception {
return imInboxService.updateImMsgRead(imMsgReadStatusUpdate);
}
//
......
......@@ -38,8 +38,11 @@ public class ImInbox extends BaseEntity {
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("读取时间")
private Date readTime;
@ApiModelProperty("接收时间")
private Date receiverDate;
private Date receiverTime;
@NotNull(message = "应用appid不能为空")
@ApiModelProperty("应用appid")
......@@ -54,8 +57,12 @@ public class ImInbox extends BaseEntity {
private Long fkMsgId;
@ApiModelProperty("0未读; 1已读")
private Integer readMsg;
private Integer readMsgStatus;
@ApiModelProperty("0未接收; 1已接收")
private Integer receiverMsgStatus;
@NotNull(message = "会话id不能为空")
@ApiModelProperty("会话id")
private Long fkConversationId;
......
......@@ -40,4 +40,6 @@ public interface ImInboxMapper extends BaseMapper<ImInbox> {
Long updateImMsgReceivedByIds(@Param("clientId") Long clientId, @Param("msgIds") List<Long> msgIds);
Long updateImMsgReadByIds(@Param("clientId") Long clientId, @Param("msgIds") List<Long> msgIds);
}
package com.wecloud.im.netty.core;
import com.wecloud.im.app_ws.model.WsConstants;
import com.wecloud.im.ws.model.WsConstants;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
......
package com.wecloud.im.netty.core;
import cn.hutool.core.thread.ThreadFactoryBuilder;
import com.wecloud.im.app_ws.model.WsConstants;
import com.wecloud.im.app_ws.receive.ReadWsData;
import com.wecloud.im.app_ws.service.MangerChannelService;
import com.wecloud.im.ws.model.WsConstants;
import com.wecloud.im.ws.receive.ReadWsData;
import com.wecloud.im.ws.service.MangerChannelService;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
......
......@@ -4,10 +4,10 @@ package com.wecloud.im.netty.handler;
import com.alibaba.fastjson.JSONObject;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.wecloud.im.app_ws.model.WsConstants;
import com.wecloud.im.app_ws.service.MangerChannelService;
import com.wecloud.im.app_ws.utils.FullHttpRequestUtils;
import com.wecloud.im.netty.core.WsReadHandler;
import com.wecloud.im.ws.model.WsConstants;
import com.wecloud.im.ws.service.MangerChannelService;
import com.wecloud.im.ws.utils.FullHttpRequestUtils;
import io.geekidea.springbootplus.config.constant.CommonConstant;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
......
......@@ -31,8 +31,11 @@ public class ImInboxQueryVo implements Serializable {
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("读取时间")
private Date readTime;
@ApiModelProperty("接收时间")
private Date receiverDate;
private Date receiverTime;
@ApiModelProperty("应用appid")
private Long fkAppid;
......@@ -44,8 +47,12 @@ public class ImInboxQueryVo implements Serializable {
private Long fkMsgId;
@ApiModelProperty("0未读; 1已读")
private Boolean read;
private Integer readMsgStatus;
@ApiModelProperty("0未接收; 1已接收")
private Integer receiverMsgStatus;
@ApiModelProperty("会话id")
private Long fkConversationId;
}
\ No newline at end of file
......@@ -18,8 +18,8 @@ import java.util.List;
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImMsgReceivedUpdate")
public class ImMsgReceivedUpdate extends BaseEntity {
@ApiModel(value = "ImMsgReadStatusUpdate")
public class ImMsgReadStatusUpdate extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("消息id数组,可以传入单个或多个, 如接收离线消息列表时可以批量修改 则传入多个")
......
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.List;
/**
* ImMsgReadUpdate
*
* @author wei
* @since 2021-05-07
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImMsgReceivedStatusUpdate")
public class ImMsgReceivedStatusUpdate extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("消息id数组,可以传入单个或多个, 如接收离线消息列表时可以批量修改 则传入多个")
private List<Long> msgIds;
@ApiModelProperty("是否同时修改为已读状态")
private Boolean readStatus;
}
......@@ -3,7 +3,8 @@ package com.wecloud.im.service;
import com.wecloud.im.entity.ImInbox;
import com.wecloud.im.param.ImInboxPageParam;
import com.wecloud.im.param.ImInboxQueryVo;
import com.wecloud.im.param.ImMsgReceivedUpdate;
import com.wecloud.im.param.ImMsgReadStatusUpdate;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
......@@ -68,6 +69,8 @@ public interface ImInboxService extends BaseService<ImInbox> {
* @param imMsgReceivedUpdate
* @return
*/
ApiResult<Boolean> updateImMsgReceived(ImMsgReceivedUpdate imMsgReceivedUpdate);
ApiResult<Boolean> updateImMsgReceived(ImMsgReceivedStatusUpdate imMsgReceivedUpdate);
ApiResult<Boolean> updateImMsgRead(ImMsgReadStatusUpdate imMsgReadStatusUpdate);
}
......@@ -2,8 +2,6 @@ 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.param.add.ImMsgUpdate;
import com.wecloud.im.vo.ImMessageOfflineListVo;
import com.wecloud.im.vo.OfflineMsgDto;
......@@ -47,41 +45,41 @@ public interface ImMessageService extends BaseService<ImMessage> {
*/
boolean saveImMessage(ImMessage imMessage) throws Exception;
/**
* 修改
*
* @param imMessage
* @return
* @throws Exception
*/
boolean updateImMessage(ImMessage imMessage) throws Exception;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean deleteImMessage(Long id) throws Exception;
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
ImMessageQueryVo getImMessageById(Long id) throws Exception;
/**
* 获取分页对象
*
* @param imMessagePageParam
* @return
* @throws Exception
*/
Paging<ImMessageQueryVo> getImMessagePageList(ImMessagePageParam imMessagePageParam) throws Exception;
// /**
// * 修改
// *
// * @param imMessage
// * @return
// * @throws Exception
// */
// boolean updateImMessage(ImMessage imMessage) throws Exception;
//
// /**
// * 删除
// *
// * @param id
// * @return
// * @throws Exception
// */
// boolean deleteImMessage(Long id) throws Exception;
//
// /**
// * 根据ID获取查询对象
// *
// * @param id
// * @return
// * @throws Exception
// */
// ImMessageQueryVo getImMessageById(Long id) throws Exception;
//
// /**
// * 获取分页对象
// *
// * @param imMessagePageParam
// * @return
// * @throws Exception
// */
// Paging<ImMessageQueryVo> getImMessagePageList(ImMessagePageParam imMessagePageParam) throws Exception;
/**
* 查询某个会话历史消息分页列表
......
......@@ -19,6 +19,7 @@ import io.geekidea.springbootplus.framework.shiro.util.JwtUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.Duration;
......@@ -54,6 +55,7 @@ public class ImClientLoginServiceImpl implements ImClientLoginService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ApiResult<TokenVo> verifySign(ImTokenVerify imTokenVerify) {
// 根据appKey从数据库查询密钥
......
......@@ -45,6 +45,7 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean addDeviceInfo(ImClientDeviceInfoAdd imClientDevice) {
ImClient client = getClient();
......
......@@ -72,6 +72,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
}
@Override
@Transactional(rollbackFor = Exception.class)
public ApiResult<ImConversationCreateVo> createImConversation(ImConversationCreate imConversationCreate) {
ImClient client = imClientService.getClient();
......
......@@ -8,7 +8,8 @@ import com.wecloud.im.entity.ImInbox;
import com.wecloud.im.mapper.ImInboxMapper;
import com.wecloud.im.param.ImInboxPageParam;
import com.wecloud.im.param.ImInboxQueryVo;
import com.wecloud.im.param.ImMsgReceivedUpdate;
import com.wecloud.im.param.ImMsgReadStatusUpdate;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.service.ImClientService;
import com.wecloud.im.service.ImInboxService;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
......@@ -66,12 +67,29 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
}
@Override
public ApiResult<Boolean> updateImMsgReceived(ImMsgReceivedUpdate imMsgReceivedUpdate) {
@Transactional(rollbackFor = Exception.class)
public ApiResult<Boolean> updateImMsgReceived(ImMsgReceivedStatusUpdate imMsgReceivedUpdate) {
ImClient client = imClientService.getClient();
Long aLong = imInboxMapper.updateImMsgReceivedByIds(client.getId(), imMsgReceivedUpdate.getMsgIds());
// 是否同时修改为已读状态
if (imMsgReceivedUpdate.getReadStatus()) {
imInboxMapper.updateImMsgReadByIds(client.getId(), imMsgReceivedUpdate.getMsgIds());
}
return ApiResult.ok();
}
@Override
public ApiResult<Boolean> updateImMsgRead(ImMsgReadStatusUpdate imMsgReadStatusUpdate) {
ImClient client = imClientService.getClient();
Long aLong = imInboxMapper.updateImMsgReadByIds(client.getId(), imMsgReadStatusUpdate.getMsgIds());
return ApiResult.ok();
}
}
......@@ -10,8 +10,6 @@ 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.param.add.ImMsgUpdate;
import com.wecloud.im.service.ImClientService;
import com.wecloud.im.service.ImConversationService;
......@@ -51,6 +49,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
private ImConversationService imConversationService;
@Override
@Transactional(rollbackFor = Exception.class)
public ApiResult<Boolean> updateMsgWithdrawById(Long msgId) {
ImClient client = imClientService.getClient();
......@@ -79,6 +78,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
}
@Override
@Transactional(rollbackFor = Exception.class)
public ApiResult<Boolean> updateMsgById(ImMsgUpdate imMsgUpdate) {
ImClient client = imClientService.getClient();
......@@ -116,30 +116,30 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
public boolean saveImMessage(ImMessage imMessage) throws Exception {
return super.save(imMessage);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateImMessage(ImMessage imMessage) throws Exception {
return super.updateById(imMessage);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean deleteImMessage(Long id) throws Exception {
return super.removeById(id);
}
@Override
public ImMessageQueryVo getImMessageById(Long id) throws Exception {
return imMessageMapper.getImMessageById(id);
}
@Override
public Paging<ImMessageQueryVo> getImMessagePageList(ImMessagePageParam imMessagePageParam) throws Exception {
Page<ImMessageQueryVo> page = new PageInfo<>(imMessagePageParam, OrderItem.desc(getLambdaColumn(ImMessage::getCreateTime)));
IPage<ImMessageQueryVo> iPage = imMessageMapper.getImMessagePageList(page, imMessagePageParam);
return new Paging<ImMessageQueryVo>(iPage);
}
//
// @Transactional(rollbackFor = Exception.class)
// @Override
// public boolean updateImMessage(ImMessage imMessage) throws Exception {
// return super.updateById(imMessage);
// }
//
// @Transactional(rollbackFor = Exception.class)
// @Override
// public boolean deleteImMessage(Long id) throws Exception {
// return super.removeById(id);
// }
//
// @Override
// public ImMessageQueryVo getImMessageById(Long id) throws Exception {
// return imMessageMapper.getImMessageById(id);
// }
//
// @Override
// public Paging<ImMessageQueryVo> getImMessagePageList(ImMessagePageParam imMessagePageParam) throws Exception {
// Page<ImMessageQueryVo> page = new PageInfo<>(imMessagePageParam, OrderItem.desc(getLambdaColumn(ImMessage::getCreateTime)));
// IPage<ImMessageQueryVo> iPage = imMessageMapper.getImMessagePageList(page, imMessagePageParam);
// return new Paging<ImMessageQueryVo>(iPage);
// }
@Override
public Paging<OfflineMsgDto> getHistoryMsgConversationId(ImHistoryMessagePageParam imHistoryMessagePageParam) throws Exception {
......
package com.wecloud.im.app_ws.annotation;
package com.wecloud.im.ws.annotation;
import com.wecloud.im.app_ws.enums.WsRequestCmdEnum;
import com.wecloud.im.ws.enums.WsRequestCmdEnum;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
......
package com.wecloud.im.app_ws.cache;
package com.wecloud.im.ws.cache;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......
package com.wecloud.im.app_ws.enums;
package com.wecloud.im.ws.enums;
/**
* @Description ws请求类型
......
package com.wecloud.im.app_ws.enums;
package com.wecloud.im.ws.enums;
/**
* @Description ws响应类型
......
package com.wecloud.im.app_ws.model;
package com.wecloud.im.ws.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......
package com.wecloud.im.app_ws.model;
package com.wecloud.im.ws.model;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.wecloud.im.app_ws.model;
package com.wecloud.im.ws.model;
import lombok.AllArgsConstructor;
import lombok.Getter;
......
package com.wecloud.im.app_ws.model;
package com.wecloud.im.ws.model;
import lombok.extern.slf4j.Slf4j;
......
package com.wecloud.im.app_ws.model.request;
package com.wecloud.im.ws.model.request;
import lombok.AllArgsConstructor;
import lombok.Data;
......
package com.wecloud.im.app_ws.receive;
package com.wecloud.im.ws.receive;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.wecloud.im.app_ws.enums.WsRequestCmdEnum;
import com.wecloud.im.app_ws.model.request.ReceiveModel;
import com.wecloud.im.app_ws.service.MangerChannelService;
import com.wecloud.im.app_ws.service.WriteDataService;
import com.wecloud.im.app_ws.strategy.AbstractReceiveStrategy;
import com.wecloud.im.app_ws.strategy.ReceiveStrategyContext;
import com.wecloud.im.ws.enums.WsRequestCmdEnum;
import com.wecloud.im.ws.model.request.ReceiveModel;
import com.wecloud.im.ws.service.MangerChannelService;
import com.wecloud.im.ws.service.WriteDataService;
import com.wecloud.im.ws.strategy.AbstractReceiveStrategy;
import com.wecloud.im.ws.strategy.ReceiveStrategyContext;
import io.netty.channel.ChannelHandlerContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......
package com.wecloud.im.app_ws.sender;
package com.wecloud.im.ws.sender;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient;
......
package com.wecloud.im.app_ws.sender;
package com.wecloud.im.ws.sender;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
......
package com.wecloud.im.app_ws.service;
package com.wecloud.im.ws.service;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.socket.nio.NioSocketChannel;
......
package com.wecloud.im.app_ws.service;
package com.wecloud.im.ws.service;
import com.wecloud.im.app_ws.model.ResponseModel;
import com.wecloud.im.app_ws.model.request.ReceiveModel;
import com.wecloud.im.ws.model.ResponseModel;
import com.wecloud.im.ws.model.request.ReceiveModel;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
/**
......
package com.wecloud.im.app_ws.service.impl;
package com.wecloud.im.ws.service.impl;
import com.wecloud.im.app_ws.cache.UserCache;
import com.wecloud.im.app_ws.service.MangerChannelService;
import com.wecloud.im.ws.cache.UserCache;
import com.wecloud.im.ws.service.MangerChannelService;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
......
package com.wecloud.im.app_ws.service.impl;
package com.wecloud.im.ws.service.impl;
import cn.hutool.core.thread.ThreadFactoryBuilder;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.wecloud.im.app_ws.model.ResponseModel;
import com.wecloud.im.app_ws.model.WsConstants;
import com.wecloud.im.app_ws.model.request.ReceiveModel;
import com.wecloud.im.app_ws.service.MangerChannelService;
import com.wecloud.im.app_ws.service.WriteDataService;
import com.wecloud.im.ws.model.ResponseModel;
import com.wecloud.im.ws.model.WsConstants;
import com.wecloud.im.ws.model.request.ReceiveModel;
import com.wecloud.im.ws.service.MangerChannelService;
import com.wecloud.im.ws.service.WriteDataService;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.wecloud.im.app_ws.strategy;
package com.wecloud.im.ws.strategy;
import com.wecloud.im.app_ws.model.request.ReceiveModel;
import com.wecloud.im.ws.model.request.ReceiveModel;
import io.netty.channel.ChannelHandlerContext;
/**
......
package com.wecloud.im.app_ws.strategy;
package com.wecloud.im.ws.strategy;
import com.wecloud.im.app_ws.enums.WsRequestCmdEnum;
import com.wecloud.im.app_ws.utils.SpringBeanUtils;
import com.wecloud.im.ws.enums.WsRequestCmdEnum;
import com.wecloud.im.ws.utils.SpringBeanUtils;
import org.springframework.util.CollectionUtils;
import java.util.Map;
......
package com.wecloud.im.app_ws.strategy;
package com.wecloud.im.ws.strategy;
import com.google.common.collect.Maps;
import com.wecloud.im.app_ws.annotation.ReceiveTypeAnnotation;
import com.wecloud.im.app_ws.enums.WsRequestCmdEnum;
import com.wecloud.im.app_ws.utils.ClassScanner;
import com.wecloud.im.ws.annotation.ReceiveTypeAnnotation;
import com.wecloud.im.ws.enums.WsRequestCmdEnum;
import com.wecloud.im.ws.utils.ClassScanner;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
......@@ -25,7 +25,7 @@ import java.util.Set;
public class ReceiveStrategyProcessor implements BeanFactoryPostProcessor {
// 扫码注解的包路径
private static final String STRATEGY_PACK = "com.wecloud.im.tillo.app_ws.strategy.concrete";
private static final String STRATEGY_PACK = "com.wecloud.im.ws.strategy.concrete";
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
......
package com.wecloud.im.app_ws.strategy.concrete;
package com.wecloud.im.ws.strategy.concrete;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.wecloud.im.app_ws.annotation.ReceiveTypeAnnotation;
import com.wecloud.im.app_ws.enums.WsRequestCmdEnum;
import com.wecloud.im.app_ws.model.ResponseModel;
import com.wecloud.im.app_ws.model.request.ReceiveModel;
import com.wecloud.im.app_ws.sender.PushTask;
import com.wecloud.im.app_ws.service.MangerChannelService;
import com.wecloud.im.app_ws.service.WriteDataService;
import com.wecloud.im.app_ws.strategy.AbstractReceiveStrategy;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImConversationMembers;
......@@ -23,6 +15,14 @@ import com.wecloud.im.service.ImClientService;
import com.wecloud.im.service.ImConversationMembersService;
import com.wecloud.im.service.ImInboxService;
import com.wecloud.im.service.ImMessageService;
import com.wecloud.im.ws.annotation.ReceiveTypeAnnotation;
import com.wecloud.im.ws.enums.WsRequestCmdEnum;
import com.wecloud.im.ws.model.ResponseModel;
import com.wecloud.im.ws.model.request.ReceiveModel;
import com.wecloud.im.ws.sender.PushTask;
import com.wecloud.im.ws.service.MangerChannelService;
import com.wecloud.im.ws.service.WriteDataService;
import com.wecloud.im.ws.strategy.AbstractReceiveStrategy;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.shiro.util.SnowflakeUtil;
......@@ -188,7 +188,8 @@ public class ImConcreteReceiveStrategy extends AbstractReceiveStrategy {
imInbox.setFkAppid(imApplication.getId());
imInbox.setReceiver(conversationMembers.getFkClientId());
imInbox.setFkMsgId(messageId);
imInbox.setReadMsg(0);
imInbox.setReadMsgStatus(0);
imInbox.setReceiverMsgStatus(0);
imInbox.setFkConversationId(toConversationId);
imInboxService.save(imInbox);
......
package com.wecloud.im.app_ws.utils;
package com.wecloud.im.ws.utils;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.BeanDefinitionStoreException;
......
package com.wecloud.im.app_ws.utils;
package com.wecloud.im.ws.utils;
import javax.crypto.Cipher;
import java.security.Key;
......
package com.wecloud.im.app_ws.utils;
package com.wecloud.im.ws.utils;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelFutureListener;
......
package com.wecloud.im.app_ws.utils;
package com.wecloud.im.ws.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisCallback;
......
package com.wecloud.im.app_ws.utils;
package com.wecloud.im.ws.utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
......
......@@ -5,13 +5,13 @@
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id
, create_time, update_time, receiver_date, fk_appid, receiver, fk_msg_id, read_msg, fk_conversation_id
, create_time, update_time, read_time, receiver_time, fk_appid, receiver, fk_msg_id, read_msg_status, receiver_msg_status, fk_conversation_id
</sql>
<update id="updateImMsgReceivedByIds">
UPDATE im_inbox
SET `im_inbox`.`update_time` = NOW(),
`im_inbox`.`read_msg` = 1,
`im_inbox`.`receiver_date` = NOW()
`im_inbox`.`receiver_msg_status` = 1,
`im_inbox`.`receiver_time` = NOW()
WHERE
im_inbox.receiver = #{clientId}
AND im_inbox.fk_msg_id IN
......@@ -20,6 +20,18 @@
</foreach>
</update>
<update id="updateImMsgReadByIds">
UPDATE im_inbox
SET `im_inbox`.`update_time` = NOW(),
`im_inbox`.`read_msg_status` = 1,
`im_inbox`.`receiver_time` = NOW()
WHERE
im_inbox.receiver = #{clientId}
AND im_inbox.fk_msg_id IN
<foreach collection="msgIds" item="deptId" index="i" open="(" close=")" separator=",">
#{deptId}
</foreach>
</update>
<select id="getImInboxById" resultType="com.wecloud.im.param.ImInboxQueryVo">
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