【代码评审】IM:消息相关接口
This commit is contained in:
parent
d67362043e
commit
1f58fd2be4
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -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());
|
||||
|
||||
|
|
|
@ -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')")
|
||||
|
|
Loading…
Reference in New Issue