瀏覽代碼

【代码评审】IM:消息相关接口

YunaiV 10 月之前
父節點
當前提交
1f58fd2be4

+ 0 - 7
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ImConversationController.java

@@ -1,18 +1,12 @@
 package cn.iocoder.yudao.module.im.controller.admin.conversation;
 
-import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.websocket.core.sender.WebSocketMessageSender;
 import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationCreateReqVO;
 import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationUpdateLastReadTimeReqVO;
 import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationRespVO;
 import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationUpdatePinnedReqVO;
-import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageListByNoReqVO;
-import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageListReqVO;
 import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
-import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
-import cn.iocoder.yudao.module.im.enums.message.ImMessageContentTypeEnum;
 import cn.iocoder.yudao.module.im.service.conversation.ImConversationService;
 import cn.iocoder.yudao.module.im.service.message.ImMessageService;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
@@ -25,7 +19,6 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
-import java.util.Objects;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;

+ 1 - 0
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageListReqVO.java

@@ -19,6 +19,7 @@ public class ImMessageListReqVO {
     @NotNull(message = "接收人编号不能为空")
     private Long receiverId;
 
+    // TODO @dylan:这个是不是不用传递呀。因为 http 连接,有当前的 userid 呀
     @Schema(description = "会话所属人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32494")
     @NotNull(message = "会话所属人编号不能为空")
     private Long userId;

+ 1 - 0
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageSendReqVO.java

@@ -24,6 +24,7 @@ public class ImMessageSendReqVO {
     @NotNull(message = "会话类型不能为空")
     private Integer conversationType;
 
+    // TODO @dylan:这个是不是不用传递呀。因为 http 连接,有当前的 userid 呀
     @Schema(description = "会话所属用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @NotNull(message = "会话所属用户id")
     private Long conversationUserId;

+ 2 - 4
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImpl.java

@@ -8,8 +8,6 @@ import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversatio
 import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
 import cn.iocoder.yudao.module.im.dal.mysql.conversation.ImConversationMapper;
 import cn.iocoder.yudao.module.im.enums.conversation.ImConversationTypeEnum;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
@@ -26,6 +24,7 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti
 @Service
 @Validated
 public class ImConversationServiceImpl implements ImConversationService {
+
     private final String IM_CONVERSATION_ADD = "im-conversation-add";
 
     @Resource
@@ -108,6 +107,7 @@ public class ImConversationServiceImpl implements ImConversationService {
             conversation = insertConversation(no, loginUserId, createReqVO.getTargetId(), createReqVO.getType());
         }
 
+        // TODO @dylan:这个是不是不用 push 呀。对于发送端,它自己肯定知道;对于接收端,貌似收到 message 的时候,再创建更合理一点。
         // 发送打开会话的通知,并推送会话实体
         // 给自己发送创建会话成功的通知
         webSocketMessageSender.sendObject(UserTypeEnum.ADMIN.getValue(), getLoginUserId(),
@@ -116,9 +116,7 @@ public class ImConversationServiceImpl implements ImConversationService {
         // 给接受者发送创建会话的通知
         webSocketMessageSender.sendObject(UserTypeEnum.ADMIN.getValue(), createReqVO.getTargetId(),
                 IM_CONVERSATION_ADD, conversation);
-
         return conversation;
     }
 
-
 }

+ 2 - 2
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImpl.java

@@ -23,7 +23,6 @@ import org.springframework.validation.annotation.Validated;
 import java.time.LocalDateTime;
 import java.util.Collections;
 import java.util.List;
-import java.util.Objects;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@@ -51,9 +50,10 @@ public class ImMessageServiceImpl implements ImMessageService {
 
     @Override
     public List<ImMessageDO> getMessageList(ImMessageListReqVO listReqVO) {
-
+        // TODO @dylan:userId 从 controller 传递,service 保持无状态
         // 1. 获得会话编号
         Long loginUserId = getLoginUserId();
+        // TODO @dylan:修复下 generateConversationNo 方法,fromUserId、receiverId 需要小的放前面,大的放后面。这样,可以保证一定只生成唯一的。
         String no1 = generateConversationNo(loginUserId, listReqVO.getReceiverId(), listReqVO.getConversationType());
         String no2 = generateConversationNo(listReqVO.getReceiverId(),loginUserId, listReqVO.getConversationType());
 

+ 2 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java

@@ -101,6 +101,7 @@ public class UserController {
                 pageResult.getTotal()));
     }
 
+    // TODO @dylan:可以服用 getSimpleUserList 呀。
     @GetMapping("/all")
     @Operation(summary = "获得所有用户列表")
     @PreAuthorize("@ss.hasPermission('system:user:list')")
@@ -115,6 +116,7 @@ public class UserController {
         return success(UserConvert.INSTANCE.convertList(result, deptMap));
     }
 
+    // TODO @dylan:融合到 getSimpleUserList 接口,允许传递 deptId 筛选
     @GetMapping("/listByDept")
     @Operation(summary = "获得部门用户列表")
     @PreAuthorize("@ss.hasPermission('system:user:list')")