From b9e5052cba4257005db1e1031a4fd038b79f9462 Mon Sep 17 00:00:00 2001 From: "xie.bx" Date: Wed, 2 Nov 2022 18:02:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BE=A4=E8=81=8A=E5=8A=9F=E8=83=BD=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ler.java => PrivateMessageController.java} | 16 ++++----- ...SingleMessage.java => PrivateMessage.java} | 12 +++---- ...eMapper.java => PrivateMessageMapper.java} | 4 +-- .../service/IPrivateMessageService.java | 21 +++++++++++ .../service/ISingleMessageService.java | 21 ----------- ...pl.java => PrivateMessageServiceImpl.java} | 36 +++++++++---------- .../task/PullAlreadyReadMessageTask.java | 14 ++++---- ...leMessageVO.java => PrivateMessageVO.java} | 4 +-- im-platform/src/main/resources/db/db.sql | 6 ++-- 9 files changed, 67 insertions(+), 67 deletions(-) rename im-platform/src/main/java/com/lx/implatform/controller/{SingleMessageController.java => PrivateMessageController.java} (69%) rename im-platform/src/main/java/com/lx/implatform/entity/{SingleMessage.java => PrivateMessage.java} (84%) rename im-platform/src/main/java/com/lx/implatform/mapper/{SingleMessageMapper.java => PrivateMessageMapper.java} (58%) create mode 100644 im-platform/src/main/java/com/lx/implatform/service/IPrivateMessageService.java delete mode 100644 im-platform/src/main/java/com/lx/implatform/service/ISingleMessageService.java rename im-platform/src/main/java/com/lx/implatform/service/impl/{SingleMessageServiceImpl.java => PrivateMessageServiceImpl.java} (68%) rename im-platform/src/main/java/com/lx/implatform/vo/{SingleMessageVO.java => PrivateMessageVO.java} (92%) diff --git a/im-platform/src/main/java/com/lx/implatform/controller/SingleMessageController.java b/im-platform/src/main/java/com/lx/implatform/controller/PrivateMessageController.java similarity index 69% rename from im-platform/src/main/java/com/lx/implatform/controller/SingleMessageController.java rename to im-platform/src/main/java/com/lx/implatform/controller/PrivateMessageController.java index aa36f26..1101f3b 100644 --- a/im-platform/src/main/java/com/lx/implatform/controller/SingleMessageController.java +++ b/im-platform/src/main/java/com/lx/implatform/controller/PrivateMessageController.java @@ -3,8 +3,8 @@ package com.lx.implatform.controller; import com.lx.common.result.Result; import com.lx.common.result.ResultUtils; -import com.lx.implatform.service.ISingleMessageService; -import com.lx.implatform.vo.SingleMessageVO; +import com.lx.implatform.service.IPrivateMessageService; +import com.lx.implatform.vo.PrivateMessageVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -17,23 +17,23 @@ import javax.validation.Valid; @Api(tags = "私聊消息") @RestController -@RequestMapping("/message/single") -public class SingleMessageController { +@RequestMapping("/message/private") +public class PrivateMessageController { @Autowired - private ISingleMessageService singleMessageService; + private IPrivateMessageService privateMessageService; @PostMapping("/send") @ApiOperation(value = "发送消息",notes="发送单人消息") - public Result register(@Valid @RequestBody SingleMessageVO vo){ - singleMessageService.sendMessage(vo); + public Result register(@Valid @RequestBody PrivateMessageVO vo){ + privateMessageService.sendMessage(vo); return ResultUtils.success(); } @PostMapping("/pullUnreadMessage") @ApiOperation(value = "拉取未读消息",notes="拉取未读消息") public Result pullUnreadMessage(){ - singleMessageService.pullUnreadMessage(); + privateMessageService.pullUnreadMessage(); return ResultUtils.success(); } } diff --git a/im-platform/src/main/java/com/lx/implatform/entity/SingleMessage.java b/im-platform/src/main/java/com/lx/implatform/entity/PrivateMessage.java similarity index 84% rename from im-platform/src/main/java/com/lx/implatform/entity/SingleMessage.java rename to im-platform/src/main/java/com/lx/implatform/entity/PrivateMessage.java index 7096400..af1188b 100644 --- a/im-platform/src/main/java/com/lx/implatform/entity/SingleMessage.java +++ b/im-platform/src/main/java/com/lx/implatform/entity/PrivateMessage.java @@ -21,8 +21,8 @@ import java.util.Date; */ @Data @EqualsAndHashCode(callSuper = false) -@TableName("im_single_message") -public class SingleMessage extends Model { +@TableName("im_private_message") +public class PrivateMessage extends Model { private static final long serialVersionUID=1L; @@ -35,14 +35,14 @@ public class SingleMessage extends Model { /** * 发送用户id */ - @TableField("send_user_id") - private Long sendUserId; + @TableField("send_id") + private Long sendId; /** * 接收用户id */ - @TableField("recv_user_id") - private Long recvUserId; + @TableField("recv_id") + private Long recvId; /** * 发送内容 diff --git a/im-platform/src/main/java/com/lx/implatform/mapper/SingleMessageMapper.java b/im-platform/src/main/java/com/lx/implatform/mapper/PrivateMessageMapper.java similarity index 58% rename from im-platform/src/main/java/com/lx/implatform/mapper/SingleMessageMapper.java rename to im-platform/src/main/java/com/lx/implatform/mapper/PrivateMessageMapper.java index 54181d2..1d1199a 100644 --- a/im-platform/src/main/java/com/lx/implatform/mapper/SingleMessageMapper.java +++ b/im-platform/src/main/java/com/lx/implatform/mapper/PrivateMessageMapper.java @@ -1,7 +1,7 @@ package com.lx.implatform.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.lx.implatform.entity.SingleMessage; +import com.lx.implatform.entity.PrivateMessage; /** *

@@ -11,6 +11,6 @@ import com.lx.implatform.entity.SingleMessage; * @author blue * @since 2022-10-01 */ -public interface SingleMessageMapper extends BaseMapper { +public interface PrivateMessageMapper extends BaseMapper { } diff --git a/im-platform/src/main/java/com/lx/implatform/service/IPrivateMessageService.java b/im-platform/src/main/java/com/lx/implatform/service/IPrivateMessageService.java new file mode 100644 index 0000000..242bce3 --- /dev/null +++ b/im-platform/src/main/java/com/lx/implatform/service/IPrivateMessageService.java @@ -0,0 +1,21 @@ +package com.lx.implatform.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.lx.implatform.entity.PrivateMessage; +import com.lx.implatform.vo.PrivateMessageVO; + +/** + *

+ * 服务类 + *

+ * + * @author blue + * @since 2022-10-01 + */ +public interface IPrivateMessageService extends IService { + + void sendMessage(PrivateMessageVO vo); + + void pullUnreadMessage(); + +} diff --git a/im-platform/src/main/java/com/lx/implatform/service/ISingleMessageService.java b/im-platform/src/main/java/com/lx/implatform/service/ISingleMessageService.java deleted file mode 100644 index 1e61190..0000000 --- a/im-platform/src/main/java/com/lx/implatform/service/ISingleMessageService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.lx.implatform.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.lx.implatform.entity.SingleMessage; -import com.lx.implatform.vo.SingleMessageVO; - -/** - *

- * 服务类 - *

- * - * @author blue - * @since 2022-10-01 - */ -public interface ISingleMessageService extends IService { - - void sendMessage(SingleMessageVO vo); - - void pullUnreadMessage(); - -} diff --git a/im-platform/src/main/java/com/lx/implatform/service/impl/SingleMessageServiceImpl.java b/im-platform/src/main/java/com/lx/implatform/service/impl/PrivateMessageServiceImpl.java similarity index 68% rename from im-platform/src/main/java/com/lx/implatform/service/impl/SingleMessageServiceImpl.java rename to im-platform/src/main/java/com/lx/implatform/service/impl/PrivateMessageServiceImpl.java index 3a29fae..3f646d8 100644 --- a/im-platform/src/main/java/com/lx/implatform/service/impl/SingleMessageServiceImpl.java +++ b/im-platform/src/main/java/com/lx/implatform/service/impl/PrivateMessageServiceImpl.java @@ -5,15 +5,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.lx.common.contant.RedisKey; import com.lx.common.enums.MessageStatusEnum; import com.lx.common.enums.ResultCode; -import com.lx.common.model.im.SingleMessageInfo; +import com.lx.common.model.im.PrivateMessageInfo; import com.lx.common.util.BeanUtils; -import com.lx.implatform.entity.SingleMessage; +import com.lx.implatform.entity.PrivateMessage; import com.lx.implatform.exception.GlobalException; -import com.lx.implatform.mapper.SingleMessageMapper; +import com.lx.implatform.mapper.PrivateMessageMapper; import com.lx.implatform.service.IFriendService; -import com.lx.implatform.service.ISingleMessageService; +import com.lx.implatform.service.IPrivateMessageService; import com.lx.implatform.session.SessionContext; -import com.lx.implatform.vo.SingleMessageVO; +import com.lx.implatform.vo.PrivateMessageVO; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; @@ -25,7 +25,7 @@ import java.util.stream.Collectors; @Service -public class SingleMessageServiceImpl extends ServiceImpl implements ISingleMessageService { +public class PrivateMessageServiceImpl extends ServiceImpl implements IPrivateMessageService { @Autowired private IFriendService friendService; @@ -33,25 +33,25 @@ public class SingleMessageServiceImpl extends ServiceImpl redisTemplate; @Override - public void sendMessage(SingleMessageVO vo) { + public void sendMessage(PrivateMessageVO vo) { Long userId = SessionContext.getSession().getId(); - Boolean isFriends = friendService.isFriend(userId,vo.getRecvUserId()); + Boolean isFriends = friendService.isFriend(userId,vo.getRecvId()); if(!isFriends){ throw new GlobalException(ResultCode.PROGRAM_ERROR,"您已不是对方好友,无法发送消息"); } // 保存消息 - SingleMessage msg = BeanUtils.copyProperties(vo,SingleMessage.class); - msg.setSendUserId(userId); + PrivateMessage msg = BeanUtils.copyProperties(vo, PrivateMessage.class); + msg.setSendId(userId); msg.setStatus(MessageStatusEnum.UNREAD.getCode()); msg.setSendTime(new Date()); this.save(msg); // 获取对方连接的channelId - String key = RedisKey.IM_USER_SERVER_ID+msg.getRecvUserId(); + String key = RedisKey.IM_USER_SERVER_ID+msg.getRecvId(); String serverId = (String)redisTemplate.opsForValue().get(key); // 如果对方在线,将数据存储至redis,等待拉取推送 if(!StringUtils.isEmpty(serverId)){ String sendKey = RedisKey.IM_UNREAD_MESSAGE + serverId; - SingleMessageInfo msgInfo = BeanUtils.copyProperties(msg,SingleMessageInfo.class); + PrivateMessageInfo msgInfo = BeanUtils.copyProperties(msg, PrivateMessageInfo.class); redisTemplate.opsForList().rightPush(sendKey,msgInfo); } } @@ -66,14 +66,14 @@ public class SingleMessageServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.lambda().eq(SingleMessage::getRecvUserId,userId) - .eq(SingleMessage::getStatus,MessageStatusEnum.UNREAD); - List messages = this.list(queryWrapper); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(PrivateMessage::getRecvId,userId) + .eq(PrivateMessage::getStatus,MessageStatusEnum.UNREAD); + List messages = this.list(queryWrapper); // 上传至redis,等待推送 if(!messages.isEmpty()){ - List infos = messages.stream().map(m->{ - SingleMessageInfo msgInfo = BeanUtils.copyProperties(m,SingleMessageInfo.class); + List infos = messages.stream().map(m->{ + PrivateMessageInfo msgInfo = BeanUtils.copyProperties(m, PrivateMessageInfo.class); return msgInfo; }).collect(Collectors.toList()); String sendKey = RedisKey.IM_UNREAD_MESSAGE + serverId; diff --git a/im-platform/src/main/java/com/lx/implatform/task/PullAlreadyReadMessageTask.java b/im-platform/src/main/java/com/lx/implatform/task/PullAlreadyReadMessageTask.java index 22eae64..fa1b805 100644 --- a/im-platform/src/main/java/com/lx/implatform/task/PullAlreadyReadMessageTask.java +++ b/im-platform/src/main/java/com/lx/implatform/task/PullAlreadyReadMessageTask.java @@ -3,8 +3,8 @@ package com.lx.implatform.task; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.lx.common.contant.RedisKey; import com.lx.common.enums.MessageStatusEnum; -import com.lx.implatform.entity.SingleMessage; -import com.lx.implatform.service.ISingleMessageService; +import com.lx.implatform.entity.PrivateMessage; +import com.lx.implatform.service.IPrivateMessageService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; @@ -27,7 +27,7 @@ public class PullAlreadyReadMessageTask { private RedisTemplate redisTemplate; @Autowired - private ISingleMessageService singleMessageService; + private IPrivateMessageService privateMessageService; @PostConstruct public void init(){ @@ -43,10 +43,10 @@ public class PullAlreadyReadMessageTask { String key = RedisKey.IM_ALREADY_READED_MESSAGE; Integer msgId = (Integer)redisTemplate.opsForList().leftPop(key,1, TimeUnit.SECONDS); if(msgId!=null){ - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.lambda().eq(SingleMessage::getId,msgId) - .set(SingleMessage::getStatus, MessageStatusEnum.ALREADY_READ.getCode()); - singleMessageService.update(updateWrapper); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.lambda().eq(PrivateMessage::getId,msgId) + .set(PrivateMessage::getStatus, MessageStatusEnum.ALREADY_READ.getCode()); + privateMessageService.update(updateWrapper); log.info("消息已读,id:{}",msgId); } }catch (Exception e){ diff --git a/im-platform/src/main/java/com/lx/implatform/vo/SingleMessageVO.java b/im-platform/src/main/java/com/lx/implatform/vo/PrivateMessageVO.java similarity index 92% rename from im-platform/src/main/java/com/lx/implatform/vo/SingleMessageVO.java rename to im-platform/src/main/java/com/lx/implatform/vo/PrivateMessageVO.java index 554d2d5..d781e53 100644 --- a/im-platform/src/main/java/com/lx/implatform/vo/SingleMessageVO.java +++ b/im-platform/src/main/java/com/lx/implatform/vo/PrivateMessageVO.java @@ -11,12 +11,12 @@ import javax.validation.constraints.NotNull; @Data @ApiModel("单发消息VO") -public class SingleMessageVO { +public class PrivateMessageVO { @NotNull(message="接收用户id不可为空") @ApiModelProperty(value = "接收用户id") - private Long recvUserId; + private Long recvId; @Length(max=1024,message = "内容长度不得大于1024") diff --git a/im-platform/src/main/resources/db/db.sql b/im-platform/src/main/resources/db/db.sql index 52b874c..5563217 100644 --- a/im-platform/src/main/resources/db/db.sql +++ b/im-platform/src/main/resources/db/db.sql @@ -25,10 +25,10 @@ create table `im_friend`( key `idx_friend_id` (`friend_id`) ) ENGINE=InnoDB CHARSET=utf8mb3 comment '好友'; -create table `im_single_message`( +create table `im_private_message`( `id` bigint not null auto_increment primary key comment 'id', - `send_user_id` bigint not null comment '发送用户id', - `recv_user_id` bigint not null comment '接收用户id', + `send_id` bigint not null comment '发送用户id', + `recv_id` bigint not null comment '接收用户id', `content` text comment '发送内容', `type` tinyint(1) NOT NULL comment '消息类型 0:文字 1:图片 2:文件', `status` tinyint(1) NOT NULL comment '状态 0:未读 1:已读 ',