From 3696b666f42fccceee74d53c07bfb874f63dc461 Mon Sep 17 00:00:00 2001
From: 安浩浩 <1036606149@qq.com>
Date: Wed, 13 Mar 2024 21:43:05 +0800
Subject: [PATCH] 修改:im 模块简单实现
---
pom.xml | 2 --
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ConversationController.java | 93 ---------------------------------------------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ImConversationController.java | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationPageReqVO.java | 43 -------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationRespVO.java | 47 -----------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationSaveReqVO.java | 40 ----------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationPageReqVO.java | 43 +++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationRespVO.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationSaveReqVO.java | 40 ++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/inbox/InboxController.java | 8 ++++----
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/ImMessageController.java | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/MessageController.java | 99 ---------------------------------------------------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessagePageReqVO.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageRespVO.java | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageSaveReqVO.java | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessagePageReqVO.java | 58 ----------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageRespVO.java | 67 -------------------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageSaveReqVO.java | 61 -------------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ConversationDO.java | 56 --------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ImConversationDO.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/ImInboxDO.java | 42 ++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/InboxDO.java | 42 ------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/ImMessageDO.java | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/MessageDO.java | 76 ----------------------------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/conversation/ConversationMapper.java | 26 +++++++++++++-------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/inbox/InboxMapper.java | 18 +++++++++---------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/ImMessageMapper.java | 35 +++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/MessageMapper.java | 35 -----------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationService.java | 54 ------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImpl.java | 70 ----------------------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationService.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImpl.java | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/inbox/InboxService.java | 6 +++---
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/inbox/InboxServiceImpl.java | 10 +++++-----
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageService.java | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImpl.java | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageService.java | 60 ------------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImpl.java | 75 ---------------------------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/websocket/ImWebSocketMessageListener.java | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/websocket/message/ImReceiveMessage.java | 12 ++++++------
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/websocket/message/ImSendMessage.java | 14 +++++++++-----
yudao-module-im/yudao-module-im-biz/src/main/resources/mapper/message/ImMessageMapper.xml | 12 ++++++++++++
yudao-module-im/yudao-module-im-biz/src/main/resources/mapper/message/MessageMapper.xml | 12 ------------
yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImplTest.java | 154 ----------------------------------------------------------------------------------------------------------------------------------------------------------
yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImplTest.java | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/inbox/InboxServiceImplTest.java | 21 +++++++--------------
yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImplTest.java | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImplTest.java | 174 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/dto/AdminUserRespDTO.java | 5 +++++
yudao-server/src/main/resources/application-local.yaml | 16 ++++++++--------
yudao-server/src/main/resources/application.yaml | 2 +-
51 files changed, 1428 insertions(+), 1391 deletions(-)
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ConversationController.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ImConversationController.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationPageReqVO.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationRespVO.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationSaveReqVO.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationPageReqVO.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationRespVO.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationSaveReqVO.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/ImMessageController.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/MessageController.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessagePageReqVO.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageRespVO.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageSaveReqVO.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessagePageReqVO.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageRespVO.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageSaveReqVO.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ConversationDO.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ImConversationDO.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/ImInboxDO.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/InboxDO.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/ImMessageDO.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/MessageDO.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/ImMessageMapper.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/MessageMapper.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationService.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImpl.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationService.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImpl.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageService.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImpl.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageService.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImpl.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/main/resources/mapper/message/ImMessageMapper.xml
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/main/resources/mapper/message/MessageMapper.xml
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImplTest.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImplTest.java
create mode 100755 yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImplTest.java
delete mode 100755 yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImplTest.java
diff --git a/pom.xml b/pom.xml
index bb462a7..f50a519 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,8 +15,6 @@
yudao-module-system
yudao-module-infra
- yudao-module-im
- yudao-module-im/yudao-module-im-api
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ConversationController.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ConversationController.java
deleted file mode 100755
index 266c026..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ConversationController.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package cn.iocoder.yudao.module.im.controller.admin.conversation;
-
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
-import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationPageReqVO;
-import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationRespVO;
-import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationSaveReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ConversationDO;
-import cn.iocoder.yudao.module.im.service.conversation.ConversationService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
-
-@Tag(name = "管理后台 - 会话")
-@RestController
-@RequestMapping("/im/conversation")
-@Validated
-public class ConversationController {
-
- @Resource
- private ConversationService conversationService;
-
- @PostMapping("/create")
- @Operation(summary = "创建会话")
- @PreAuthorize("@ss.hasPermission('im:conversation:create')")
- public CommonResult createConversation(@Valid @RequestBody ConversationSaveReqVO createReqVO) {
- return success(conversationService.createConversation(createReqVO));
- }
-
- @PutMapping("/update")
- @Operation(summary = "更新会话")
- @PreAuthorize("@ss.hasPermission('im:conversation:update')")
- public CommonResult updateConversation(@Valid @RequestBody ConversationSaveReqVO updateReqVO) {
- conversationService.updateConversation(updateReqVO);
- return success(true);
- }
-
- @DeleteMapping("/delete")
- @Operation(summary = "删除会话")
- @Parameter(name = "id", description = "编号", required = true)
- @PreAuthorize("@ss.hasPermission('im:conversation:delete')")
- public CommonResult deleteConversation(@RequestParam("id") Long id) {
- conversationService.deleteConversation(id);
- return success(true);
- }
-
- @GetMapping("/get")
- @Operation(summary = "获得会话")
- @Parameter(name = "id", description = "编号", required = true, example = "1024")
- @PreAuthorize("@ss.hasPermission('im:conversation:query')")
- public CommonResult getConversation(@RequestParam("id") Long id) {
- ConversationDO conversation = conversationService.getConversation(id);
- return success(BeanUtils.toBean(conversation, ConversationRespVO.class));
- }
-
- @GetMapping("/page")
- @Operation(summary = "获得会话分页")
- @PreAuthorize("@ss.hasPermission('im:conversation:query')")
- public CommonResult> getConversationPage(@Valid ConversationPageReqVO pageReqVO) {
- PageResult pageResult = conversationService.getConversationPage(pageReqVO);
- return success(BeanUtils.toBean(pageResult, ConversationRespVO.class));
- }
-
- @GetMapping("/export-excel")
- @Operation(summary = "导出会话 Excel")
- @PreAuthorize("@ss.hasPermission('im:conversation:export')")
- @OperateLog(type = EXPORT)
- public void exportConversationExcel(@Valid ConversationPageReqVO pageReqVO,
- HttpServletResponse response) throws IOException {
- pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
- List list = conversationService.getConversationPage(pageReqVO).getList();
- // 导出 Excel
- ExcelUtils.write(response, "会话.xls", "数据", ConversationRespVO.class,
- BeanUtils.toBean(list, ConversationRespVO.class));
- }
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ImConversationController.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ImConversationController.java
new file mode 100755
index 0000000..c704cbc
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ImConversationController.java
@@ -0,0 +1,93 @@
+package cn.iocoder.yudao.module.im.controller.admin.conversation;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
+import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationPageReqVO;
+import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationRespVO;
+import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationSaveReqVO;
+import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
+import cn.iocoder.yudao.module.im.service.conversation.ImConversationService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
+
+@Tag(name = "管理后台 - 会话")
+@RestController
+@RequestMapping("/im/conversation")
+@Validated
+public class ImConversationController {
+
+ @Resource
+ private ImConversationService imConversationService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建会话")
+ @PreAuthorize("@ss.hasPermission('im:conversation:create')")
+ public CommonResult createConversation(@Valid @RequestBody ImConversationSaveReqVO createReqVO) {
+ return success(imConversationService.createConversation(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新会话")
+ @PreAuthorize("@ss.hasPermission('im:conversation:update')")
+ public CommonResult updateConversation(@Valid @RequestBody ImConversationSaveReqVO updateReqVO) {
+ imConversationService.updateConversation(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除会话")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('im:conversation:delete')")
+ public CommonResult deleteConversation(@RequestParam("id") Long id) {
+ imConversationService.deleteConversation(id);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得会话")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('im:conversation:query')")
+ public CommonResult getConversation(@RequestParam("id") Long id) {
+ ImConversationDO conversation = imConversationService.getConversation(id);
+ return success(BeanUtils.toBean(conversation, ImConversationRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得会话分页")
+ @PreAuthorize("@ss.hasPermission('im:conversation:query')")
+ public CommonResult> getConversationPage(@Valid ImConversationPageReqVO pageReqVO) {
+ PageResult pageResult = imConversationService.getConversationPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ImConversationRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出会话 Excel")
+ @PreAuthorize("@ss.hasPermission('im:conversation:export')")
+ @OperateLog(type = EXPORT)
+ public void exportConversationExcel(@Valid ImConversationPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = imConversationService.getConversationPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "会话.xls", "数据", ImConversationRespVO.class,
+ BeanUtils.toBean(list, ImConversationRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationPageReqVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationPageReqVO.java
deleted file mode 100755
index 3325a64..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationPageReqVO.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package cn.iocoder.yudao.module.im.controller.admin.conversation.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 会话分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ConversationPageReqVO extends PageParam {
-
- @Schema(description = "所属用户", example = "11545")
- private Long userId;
-
- @Schema(description = "类型:1 单聊;2 群聊;4 通知会话(预留)", example = "1")
- private Boolean conversationType;
-
- @Schema(description = "单聊时,用户编号;群聊时,群编号", example = "21454")
- private String targetId;
-
- @Schema(description = "会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId")
- private String no;
-
- @Schema(description = "是否置顶 0否 1是")
- private Boolean pinned;
-
- @Schema(description = "最后已读时间")
- @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
- private LocalDateTime[] lastReadTime;
-
- @Schema(description = "创建时间")
- @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
- private LocalDateTime[] createTime;
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationRespVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationRespVO.java
deleted file mode 100755
index 6ffbb7c..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationRespVO.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package cn.iocoder.yudao.module.im.controller.admin.conversation.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 会话 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ConversationRespVO {
-
- @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13905")
- @ExcelProperty("编号")
- private Long id;
-
- @Schema(description = "所属用户", requiredMode = Schema.RequiredMode.REQUIRED, example = "11545")
- @ExcelProperty("所属用户")
- private Long userId;
-
- @Schema(description = "类型:1 单聊;2 群聊;4 通知会话(预留)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
- @ExcelProperty("类型:1 单聊;2 群聊;4 通知会话(预留)")
- private Boolean conversationType;
-
- @Schema(description = "单聊时,用户编号;群聊时,群编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21454")
- @ExcelProperty("单聊时,用户编号;群聊时,群编号")
- private String targetId;
-
- @Schema(description = "会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId", requiredMode = Schema.RequiredMode.REQUIRED)
- @ExcelProperty("会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId")
- private String no;
-
- @Schema(description = "是否置顶 0否 1是", requiredMode = Schema.RequiredMode.REQUIRED)
- @ExcelProperty("是否置顶 0否 1是")
- private Boolean pinned;
-
- @Schema(description = "最后已读时间")
- @ExcelProperty("最后已读时间")
- private LocalDateTime lastReadTime;
-
- @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
- @ExcelProperty("创建时间")
- private LocalDateTime createTime;
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationSaveReqVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationSaveReqVO.java
deleted file mode 100755
index 932fd5b..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationSaveReqVO.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package cn.iocoder.yudao.module.im.controller.admin.conversation.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 会话新增/修改 Request VO")
-@Data
-public class ConversationSaveReqVO {
-
- @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13905")
- private Long id;
-
- @Schema(description = "所属用户", requiredMode = Schema.RequiredMode.REQUIRED, example = "11545")
- @NotNull(message = "所属用户不能为空")
- private Long userId;
-
- @Schema(description = "类型:1 单聊;2 群聊;4 通知会话(预留)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
- @NotNull(message = "类型:1 单聊;2 群聊;4 通知会话(预留)不能为空")
- private Boolean conversationType;
-
- @Schema(description = "单聊时,用户编号;群聊时,群编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21454")
- @NotEmpty(message = "单聊时,用户编号;群聊时,群编号不能为空")
- private String targetId;
-
- @Schema(description = "会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId", requiredMode = Schema.RequiredMode.REQUIRED)
- @NotEmpty(message = "会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId不能为空")
- private String no;
-
- @Schema(description = "是否置顶 0否 1是", requiredMode = Schema.RequiredMode.REQUIRED)
- @NotNull(message = "是否置顶 0否 1是不能为空")
- private Boolean pinned;
-
- @Schema(description = "最后已读时间")
- private LocalDateTime lastReadTime;
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationPageReqVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationPageReqVO.java
new file mode 100755
index 0000000..152be29
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationPageReqVO.java
@@ -0,0 +1,43 @@
+package cn.iocoder.yudao.module.im.controller.admin.conversation.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 会话分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ImConversationPageReqVO extends PageParam {
+
+ @Schema(description = "所属用户", example = "11545")
+ private Long userId;
+
+ @Schema(description = "类型:1 单聊;2 群聊;4 通知会话(预留)", example = "1")
+ private Integer conversationType;
+
+ @Schema(description = "单聊时,用户编号;群聊时,群编号", example = "21454")
+ private String targetId;
+
+ @Schema(description = "会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId")
+ private String no;
+
+ @Schema(description = "是否置顶 0否 1是")
+ private Boolean pinned;
+
+ @Schema(description = "最后已读时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] lastReadTime;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationRespVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationRespVO.java
new file mode 100755
index 0000000..682ce2e
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationRespVO.java
@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.im.controller.admin.conversation.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 会话 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ImConversationRespVO {
+
+ @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13905")
+ @ExcelProperty("编号")
+ private Long id;
+
+ @Schema(description = "所属用户", requiredMode = Schema.RequiredMode.REQUIRED, example = "11545")
+ @ExcelProperty("所属用户")
+ private Long userId;
+
+ @Schema(description = "类型:1 单聊;2 群聊;4 通知会话(预留)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ @ExcelProperty("类型:1 单聊;2 群聊;4 通知会话(预留)")
+ private Integer conversationType;
+
+ @Schema(description = "单聊时,用户编号;群聊时,群编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21454")
+ @ExcelProperty("单聊时,用户编号;群聊时,群编号")
+ private String targetId;
+
+ @Schema(description = "会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId")
+ private String no;
+
+ @Schema(description = "是否置顶 0否 1是", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("是否置顶 0否 1是")
+ private Boolean pinned;
+
+ @Schema(description = "最后已读时间")
+ @ExcelProperty("最后已读时间")
+ private LocalDateTime lastReadTime;
+
+ @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationSaveReqVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationSaveReqVO.java
new file mode 100755
index 0000000..4282846
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationSaveReqVO.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.im.controller.admin.conversation.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 会话新增/修改 Request VO")
+@Data
+public class ImConversationSaveReqVO {
+
+ @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13905")
+ private Long id;
+
+ @Schema(description = "所属用户", requiredMode = Schema.RequiredMode.REQUIRED, example = "11545")
+ @NotNull(message = "所属用户不能为空")
+ private Long userId;
+
+ @Schema(description = "类型:1 单聊;2 群聊;4 通知会话(预留)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ @NotNull(message = "类型:1 单聊;2 群聊;4 通知会话(预留)不能为空")
+ private Integer conversationType;
+
+ @Schema(description = "单聊时,用户编号;群聊时,群编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21454")
+ @NotEmpty(message = "单聊时,用户编号;群聊时,群编号不能为空")
+ private String targetId;
+
+ @Schema(description = "会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId不能为空")
+ private String no;
+
+ @Schema(description = "是否置顶 0否 1是", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "是否置顶 0否 1是不能为空")
+ private Boolean pinned;
+
+ @Schema(description = "最后已读时间")
+ private LocalDateTime lastReadTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/inbox/InboxController.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/inbox/InboxController.java
index 03e6083..63a62f1 100755
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/inbox/InboxController.java
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/inbox/InboxController.java
@@ -9,7 +9,7 @@ import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxPageReqVO;
import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxRespVO;
import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxSaveReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.inbox.InboxDO;
+import cn.iocoder.yudao.module.im.dal.dataobject.inbox.ImInboxDO;
import cn.iocoder.yudao.module.im.service.inbox.InboxService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -65,7 +65,7 @@ public class InboxController {
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('im:inbox:query')")
public CommonResult getInbox(@RequestParam("id") Long id) {
- InboxDO inbox = inboxService.getInbox(id);
+ ImInboxDO inbox = inboxService.getInbox(id);
return success(BeanUtils.toBean(inbox, InboxRespVO.class));
}
@@ -73,7 +73,7 @@ public class InboxController {
@Operation(summary = "获得收件箱分页")
@PreAuthorize("@ss.hasPermission('im:inbox:query')")
public CommonResult> getInboxPage(@Valid InboxPageReqVO pageReqVO) {
- PageResult pageResult = inboxService.getInboxPage(pageReqVO);
+ PageResult pageResult = inboxService.getInboxPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, InboxRespVO.class));
}
@@ -84,7 +84,7 @@ public class InboxController {
public void exportInboxExcel(@Valid InboxPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
- List list = inboxService.getInboxPage(pageReqVO).getList();
+ List list = inboxService.getInboxPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "收件箱.xls", "数据", InboxRespVO.class,
BeanUtils.toBean(list, InboxRespVO.class));
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/ImMessageController.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/ImMessageController.java
new file mode 100755
index 0000000..f0ca03d
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/ImMessageController.java
@@ -0,0 +1,99 @@
+package cn.iocoder.yudao.module.im.controller.admin.message;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
+import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessagePageReqVO;
+import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageRespVO;
+import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageSaveReqVO;
+import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
+import cn.iocoder.yudao.module.im.service.message.ImMessageService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
+
+@Tag(name = "管理后台 - 消息")
+@RestController
+@RequestMapping("/im/message")
+@Validated
+public class ImMessageController {
+
+ @Resource
+ private ImMessageService imMessageService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建消息")
+ @PreAuthorize("@ss.hasPermission('im:message:create')")
+ public CommonResult createMessage(@Valid @RequestBody ImMessageSaveReqVO createReqVO) {
+ return success(imMessageService.createMessage(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新消息")
+ @PreAuthorize("@ss.hasPermission('im:message:update')")
+ public CommonResult updateMessage(@Valid @RequestBody ImMessageSaveReqVO updateReqVO) {
+ imMessageService.updateMessage(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除消息")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('im:message:delete')")
+ public CommonResult deleteMessage(@RequestParam("id") Long id) {
+ imMessageService.deleteMessage(id);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得消息")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('im:message:query')")
+ public CommonResult getMessage(@RequestParam("id") Long id) {
+ ImMessageDO message = imMessageService.getMessage(id);
+ return success(BeanUtils.toBean(message, ImMessageRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得消息分页")
+ @PreAuthorize("@ss.hasPermission('im:message:query')")
+ public CommonResult> getMessagePage(@Valid ImMessagePageReqVO pageReqVO) {
+ PageResult pageResult = imMessageService.getMessagePage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ImMessageRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出消息 Excel")
+ @PreAuthorize("@ss.hasPermission('im:message:export')")
+ @OperateLog(type = EXPORT)
+ public void exportMessageExcel(@Valid ImMessagePageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = imMessageService.getMessagePage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "消息.xls", "数据", ImMessageRespVO.class,
+ BeanUtils.toBean(list, ImMessageRespVO.class));
+ }
+
+ @PostMapping("/send")
+ @Operation(summary = "发送私聊消息")
+ public CommonResult sendMessage(@Valid @RequestBody ImMessageSaveReqVO imMessageSaveReqVO) {
+ return success(imMessageService.sendPrivateMessage(imMessageSaveReqVO));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/MessageController.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/MessageController.java
deleted file mode 100755
index 788488a..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/MessageController.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package cn.iocoder.yudao.module.im.controller.admin.message;
-
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
-import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessagePageReqVO;
-import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessageRespVO;
-import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessageSaveReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.message.MessageDO;
-import cn.iocoder.yudao.module.im.service.message.MessageService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
-
-@Tag(name = "管理后台 - 消息")
-@RestController
-@RequestMapping("/im/message")
-@Validated
-public class MessageController {
-
- @Resource
- private MessageService messageService;
-
- @PostMapping("/create")
- @Operation(summary = "创建消息")
- @PreAuthorize("@ss.hasPermission('im:message:create')")
- public CommonResult createMessage(@Valid @RequestBody MessageSaveReqVO createReqVO) {
- return success(messageService.createMessage(createReqVO));
- }
-
- @PutMapping("/update")
- @Operation(summary = "更新消息")
- @PreAuthorize("@ss.hasPermission('im:message:update')")
- public CommonResult updateMessage(@Valid @RequestBody MessageSaveReqVO updateReqVO) {
- messageService.updateMessage(updateReqVO);
- return success(true);
- }
-
- @DeleteMapping("/delete")
- @Operation(summary = "删除消息")
- @Parameter(name = "id", description = "编号", required = true)
- @PreAuthorize("@ss.hasPermission('im:message:delete')")
- public CommonResult deleteMessage(@RequestParam("id") Long id) {
- messageService.deleteMessage(id);
- return success(true);
- }
-
- @GetMapping("/get")
- @Operation(summary = "获得消息")
- @Parameter(name = "id", description = "编号", required = true, example = "1024")
- @PreAuthorize("@ss.hasPermission('im:message:query')")
- public CommonResult getMessage(@RequestParam("id") Long id) {
- MessageDO message = messageService.getMessage(id);
- return success(BeanUtils.toBean(message, MessageRespVO.class));
- }
-
- @GetMapping("/page")
- @Operation(summary = "获得消息分页")
- @PreAuthorize("@ss.hasPermission('im:message:query')")
- public CommonResult> getMessagePage(@Valid MessagePageReqVO pageReqVO) {
- PageResult pageResult = messageService.getMessagePage(pageReqVO);
- return success(BeanUtils.toBean(pageResult, MessageRespVO.class));
- }
-
- @GetMapping("/export-excel")
- @Operation(summary = "导出消息 Excel")
- @PreAuthorize("@ss.hasPermission('im:message:export')")
- @OperateLog(type = EXPORT)
- public void exportMessageExcel(@Valid MessagePageReqVO pageReqVO,
- HttpServletResponse response) throws IOException {
- pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
- List list = messageService.getMessagePage(pageReqVO).getList();
- // 导出 Excel
- ExcelUtils.write(response, "消息.xls", "数据", MessageRespVO.class,
- BeanUtils.toBean(list, MessageRespVO.class));
- }
-
- @PostMapping("/send")
- @Operation(summary = "发送私聊消息")
- public CommonResult sendMessage(@Valid @RequestBody MessageSaveReqVO messageSaveReqVO) {
- return success(messageService.sendPrivateMessage(messageSaveReqVO));
- }
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessagePageReqVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessagePageReqVO.java
new file mode 100755
index 0000000..78649d1
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessagePageReqVO.java
@@ -0,0 +1,58 @@
+package cn.iocoder.yudao.module.im.controller.admin.message.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 消息分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ImMessagePageReqVO extends PageParam {
+
+ @Schema(description = "客户端消息编号 uuid,用于排重", example = "3331")
+ private String clientMessageId;
+
+ @Schema(description = "发送人编号", example = "23239")
+ private Long senderId;
+
+ @Schema(description = "接收人编号", example = "32494")
+ private Long receiverId;
+
+ @Schema(description = "发送人昵称", example = "李四")
+ private String senderNickname;
+
+ @Schema(description = "发送人头像")
+ private String senderAvatar;
+
+ @Schema(description = "会话类型", example = "2")
+ private Integer conversationType;
+
+ @Schema(description = "会话标志")
+ private String conversationNo;
+
+ @Schema(description = "消息类型", example = "1")
+ private Integer contentType;
+
+ @Schema(description = "消息内容")
+ private String content;
+
+ @Schema(description = "发送时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] sendTime;
+
+ @Schema(description = "消息来源 100-用户发送;200-系统发送(一般是通知);")
+ private Integer sendFrom;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageRespVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageRespVO.java
new file mode 100755
index 0000000..e732c94
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageRespVO.java
@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.im.controller.admin.message.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 消息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ImMessageRespVO {
+
+ @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30713")
+ @ExcelProperty("编号")
+ private Long id;
+
+ @Schema(description = "客户端消息编号 uuid,用于排重", requiredMode = Schema.RequiredMode.REQUIRED, example = "3331")
+ @ExcelProperty("客户端消息编号 uuid,用于排重")
+ private String clientMessageId;
+
+ @Schema(description = "发送人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23239")
+ @ExcelProperty("发送人编号")
+ private Long senderId;
+
+ @Schema(description = "接收人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32494")
+ @ExcelProperty("接收人编号")
+ private Long receiverId;
+
+ @Schema(description = "发送人昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+ @ExcelProperty("发送人昵称")
+ private String senderNickname;
+
+ @Schema(description = "发送人头像", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("发送人头像")
+ private String senderAvatar;
+
+ @Schema(description = "会话类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+ @ExcelProperty("会话类型")
+ private Integer conversationType;
+
+ @Schema(description = "会话标志", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("会话标志")
+ private String conversationNo;
+
+ @Schema(description = "消息类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ @ExcelProperty("消息类型")
+ private Integer contentType;
+
+ @Schema(description = "消息内容", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("消息内容")
+ private String content;
+
+ @Schema(description = "发送时间", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("发送时间")
+ private LocalDateTime sendTime;
+
+ @Schema(description = "消息来源 100-用户发送;200-系统发送(一般是通知);", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("消息来源 100-用户发送;200-系统发送(一般是通知);")
+ private Integer sendFrom;
+
+ @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageSaveReqVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageSaveReqVO.java
new file mode 100755
index 0000000..cea5573
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageSaveReqVO.java
@@ -0,0 +1,60 @@
+package cn.iocoder.yudao.module.im.controller.admin.message.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 消息新增/修改 Request VO")
+@Data
+public class ImMessageSaveReqVO {
+
+ @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30713")
+ private Long id;
+
+ @Schema(description = "客户端消息编号 uuid,用于排重", requiredMode = Schema.RequiredMode.REQUIRED, example = "3331")
+ @NotEmpty(message = "客户端消息编号 uuid,用于排重不能为空")
+ private String clientMessageId;
+
+ @Schema(description = "发送人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23239")
+ @NotNull(message = "发送人编号不能为空")
+ private Long senderId;
+
+ @Schema(description = "接收人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32494")
+ @NotNull(message = "接收人编号不能为空")
+ private Long receiverId;
+
+ @Schema(description = "发送人昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+ @NotEmpty(message = "发送人昵称不能为空")
+ private String senderNickname;
+
+ @Schema(description = "发送人头像", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "发送人头像不能为空")
+ private String senderAvatar;
+
+ @Schema(description = "会话类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+ @NotNull(message = "会话类型不能为空")
+ private Integer conversationType;
+
+ @Schema(description = "会话标志", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "会话标志不能为空")
+ private String conversationNo;
+
+ @Schema(description = "消息类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ @NotNull(message = "消息类型不能为空")
+ private Integer contentType;
+
+ @Schema(description = "消息内容", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotEmpty(message = "消息内容不能为空")
+ private String content;
+
+ @Schema(description = "发送时间", requiredMode = Schema.RequiredMode.REQUIRED)
+ private LocalDateTime sendTime;
+
+ @Schema(description = "消息来源 100-用户发送;200-系统发送(一般是通知);", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "消息来源 100-用户发送;200-系统发送(一般是通知);不能为空")
+ private Integer sendFrom;
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessagePageReqVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessagePageReqVO.java
deleted file mode 100755
index 96ffd87..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessagePageReqVO.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package cn.iocoder.yudao.module.im.controller.admin.message.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 消息分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class MessagePageReqVO extends PageParam {
-
- @Schema(description = "客户端消息编号 uuid,用于排重", example = "3331")
- private String clientMessageId;
-
- @Schema(description = "发送人编号", example = "23239")
- private Long senderId;
-
- @Schema(description = "接收人编号", example = "32494")
- private Long receiverId;
-
- @Schema(description = "发送人昵称", example = "李四")
- private String senderNickname;
-
- @Schema(description = "发送人头像")
- private String senderAvatar;
-
- @Schema(description = "会话类型", example = "2")
- private Boolean conversationType;
-
- @Schema(description = "会话标志")
- private String conversationNo;
-
- @Schema(description = "消息类型", example = "1")
- private Boolean contentType;
-
- @Schema(description = "消息内容")
- private String content;
-
- @Schema(description = "发送时间")
- @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
- private LocalDateTime[] sendTime;
-
- @Schema(description = "消息来源 100-用户发送;200-系统发送(一般是通知);")
- private Boolean sendFrom;
-
- @Schema(description = "创建时间")
- @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
- private LocalDateTime[] createTime;
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageRespVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageRespVO.java
deleted file mode 100755
index 2949ade..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageRespVO.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package cn.iocoder.yudao.module.im.controller.admin.message.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 消息 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class MessageRespVO {
-
- @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30713")
- @ExcelProperty("编号")
- private Long id;
-
- @Schema(description = "客户端消息编号 uuid,用于排重", requiredMode = Schema.RequiredMode.REQUIRED, example = "3331")
- @ExcelProperty("客户端消息编号 uuid,用于排重")
- private String clientMessageId;
-
- @Schema(description = "发送人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23239")
- @ExcelProperty("发送人编号")
- private Long senderId;
-
- @Schema(description = "接收人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32494")
- @ExcelProperty("接收人编号")
- private Long receiverId;
-
- @Schema(description = "发送人昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
- @ExcelProperty("发送人昵称")
- private String senderNickname;
-
- @Schema(description = "发送人头像", requiredMode = Schema.RequiredMode.REQUIRED)
- @ExcelProperty("发送人头像")
- private String senderAvatar;
-
- @Schema(description = "会话类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
- @ExcelProperty("会话类型")
- private Boolean conversationType;
-
- @Schema(description = "会话标志", requiredMode = Schema.RequiredMode.REQUIRED)
- @ExcelProperty("会话标志")
- private String conversationNo;
-
- @Schema(description = "消息类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
- @ExcelProperty("消息类型")
- private Boolean contentType;
-
- @Schema(description = "消息内容", requiredMode = Schema.RequiredMode.REQUIRED)
- @ExcelProperty("消息内容")
- private String content;
-
- @Schema(description = "发送时间", requiredMode = Schema.RequiredMode.REQUIRED)
- @ExcelProperty("发送时间")
- private LocalDateTime sendTime;
-
- @Schema(description = "消息来源 100-用户发送;200-系统发送(一般是通知);", requiredMode = Schema.RequiredMode.REQUIRED)
- @ExcelProperty("消息来源 100-用户发送;200-系统发送(一般是通知);")
- private Boolean sendFrom;
-
- @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
- @ExcelProperty("创建时间")
- private LocalDateTime createTime;
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageSaveReqVO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageSaveReqVO.java
deleted file mode 100755
index 55ccd14..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageSaveReqVO.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package cn.iocoder.yudao.module.im.controller.admin.message.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 消息新增/修改 Request VO")
-@Data
-public class MessageSaveReqVO {
-
- @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30713")
- private Long id;
-
- @Schema(description = "客户端消息编号 uuid,用于排重", requiredMode = Schema.RequiredMode.REQUIRED, example = "3331")
- @NotEmpty(message = "客户端消息编号 uuid,用于排重不能为空")
- private String clientMessageId;
-
- @Schema(description = "发送人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23239")
- @NotNull(message = "发送人编号不能为空")
- private Long senderId;
-
- @Schema(description = "接收人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32494")
- @NotNull(message = "接收人编号不能为空")
- private Long receiverId;
-
- @Schema(description = "发送人昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
- @NotEmpty(message = "发送人昵称不能为空")
- private String senderNickname;
-
- @Schema(description = "发送人头像", requiredMode = Schema.RequiredMode.REQUIRED)
- @NotEmpty(message = "发送人头像不能为空")
- private String senderAvatar;
-
- @Schema(description = "会话类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
- @NotNull(message = "会话类型不能为空")
- private Boolean conversationType;
-
- @Schema(description = "会话标志", requiredMode = Schema.RequiredMode.REQUIRED)
- @NotEmpty(message = "会话标志不能为空")
- private String conversationNo;
-
- @Schema(description = "消息类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
- @NotNull(message = "消息类型不能为空")
- private Boolean contentType;
-
- @Schema(description = "消息内容", requiredMode = Schema.RequiredMode.REQUIRED)
- @NotEmpty(message = "消息内容不能为空")
- private String content;
-
- @Schema(description = "发送时间", requiredMode = Schema.RequiredMode.REQUIRED)
- @NotNull(message = "发送时间不能为空")
- private LocalDateTime sendTime;
-
- @Schema(description = "消息来源 100-用户发送;200-系统发送(一般是通知);", requiredMode = Schema.RequiredMode.REQUIRED)
- @NotNull(message = "消息来源 100-用户发送;200-系统发送(一般是通知);不能为空")
- private Boolean sendFrom;
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ConversationDO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ConversationDO.java
deleted file mode 100755
index 12a0832..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ConversationDO.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package cn.iocoder.yudao.module.im.dal.dataobject.conversation;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.time.LocalDateTime;
-
-/**
- * 会话 DO
- *
- * @author 芋道源码
- */
-@TableName("im_conversation")
-@KeySequence("im_conversation_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ConversationDO extends BaseDO {
-
- /**
- * 编号
- */
- @TableId
- private Long id;
- /**
- * 所属用户
- */
- private Long userId;
- /**
- * 类型:1 单聊;2 群聊;4 通知会话(预留)
- */
- private Boolean conversationType;
- /**
- * 单聊时,用户编号;群聊时,群编号
- */
- private String targetId;
- /**
- * 会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId
- */
- private String no;
- /**
- * 是否置顶 0否 1是
- */
- private Boolean pinned;
- /**
- * 最后已读时间
- */
- private LocalDateTime lastReadTime;
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ImConversationDO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ImConversationDO.java
new file mode 100755
index 0000000..822b78f
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ImConversationDO.java
@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.im.dal.dataobject.conversation;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * 会话 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("im_conversation")
+@KeySequence("im_conversation_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ImConversationDO extends BaseDO {
+
+ /**
+ * 编号
+ */
+ @TableId
+ private Long id;
+ /**
+ * 所属用户
+ */
+ private Long userId;
+ /**
+ * 类型:1 单聊;2 群聊;4 通知会话(预留)
+ */
+ private Integer conversationType;
+ /**
+ * 单聊时,用户编号;群聊时,群编号
+ */
+ private String targetId;
+ /**
+ * 会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId
+ */
+ private String no;
+ /**
+ * 是否置顶 0否 1是
+ */
+ private Boolean pinned;
+ /**
+ * 最后已读时间
+ */
+ private LocalDateTime lastReadTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/ImInboxDO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/ImInboxDO.java
new file mode 100755
index 0000000..20dd94c
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/ImInboxDO.java
@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.module.im.dal.dataobject.inbox;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 收件箱 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("im_inbox")
+@KeySequence("im_inbox_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ImInboxDO extends BaseDO {
+
+ /**
+ * 编号
+ */
+ @TableId
+ private Long id;
+ /**
+ * 用户编号
+ */
+ private Long userId;
+ /**
+ * 消息编号
+ */
+ private Long messageId;
+ /**
+ * 序号,按照 user 递增
+ */
+ private Long sequence;
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/InboxDO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/InboxDO.java
deleted file mode 100755
index fd60ea1..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/InboxDO.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package cn.iocoder.yudao.module.im.dal.dataobject.inbox;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * 收件箱 DO
- *
- * @author 芋道源码
- */
-@TableName("im_inbox")
-@KeySequence("im_inbox_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class InboxDO extends BaseDO {
-
- /**
- * 编号
- */
- @TableId
- private Long id;
- /**
- * 用户编号
- */
- private Long userId;
- /**
- * 消息编号
- */
- private Long messageId;
- /**
- * 序号,按照 user 递增
- */
- private Long sequence;
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/ImMessageDO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/ImMessageDO.java
new file mode 100755
index 0000000..14e88c1
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/ImMessageDO.java
@@ -0,0 +1,76 @@
+package cn.iocoder.yudao.module.im.dal.dataobject.message;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * 消息 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("im_message")
+@KeySequence("im_message_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ImMessageDO extends BaseDO {
+
+ /**
+ * 编号
+ */
+ @TableId
+ private Long id;
+ /**
+ * 客户端消息编号 uuid,用于排重
+ */
+ private String clientMessageId;
+ /**
+ * 发送人编号
+ */
+ private Long senderId;
+ /**
+ * 接收人编号
+ */
+ private Long receiverId;
+ /**
+ * 发送人昵称
+ */
+ private String senderNickname;
+ /**
+ * 发送人头像
+ */
+ private String senderAvatar;
+ /**
+ * 会话类型
+ */
+ private Integer conversationType;
+ /**
+ * 会话标志
+ */
+ private String conversationNo;
+ /**
+ * 消息类型
+ */
+ private Integer contentType;
+ /**
+ * 消息内容
+ */
+ private String content;
+ /**
+ * 发送时间
+ */
+ private LocalDateTime sendTime;
+ /**
+ * 消息来源 100-用户发送;200-系统发送(一般是通知);
+ */
+ private Integer sendFrom;
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/MessageDO.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/MessageDO.java
deleted file mode 100755
index 98a289c..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/MessageDO.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package cn.iocoder.yudao.module.im.dal.dataobject.message;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.time.LocalDateTime;
-
-/**
- * 消息 DO
- *
- * @author 芋道源码
- */
-@TableName("im_message")
-@KeySequence("im_message_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class MessageDO extends BaseDO {
-
- /**
- * 编号
- */
- @TableId
- private Long id;
- /**
- * 客户端消息编号 uuid,用于排重
- */
- private String clientMessageId;
- /**
- * 发送人编号
- */
- private Long senderId;
- /**
- * 接收人编号
- */
- private Long receiverId;
- /**
- * 发送人昵称
- */
- private String senderNickname;
- /**
- * 发送人头像
- */
- private String senderAvatar;
- /**
- * 会话类型
- */
- private Boolean conversationType;
- /**
- * 会话标志
- */
- private String conversationNo;
- /**
- * 消息类型
- */
- private Boolean contentType;
- /**
- * 消息内容
- */
- private String content;
- /**
- * 发送时间
- */
- private LocalDateTime sendTime;
- /**
- * 消息来源 100-用户发送;200-系统发送(一般是通知);
- */
- private Boolean sendFrom;
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/conversation/ConversationMapper.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/conversation/ConversationMapper.java
index e371d99..a93257f 100755
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/conversation/ConversationMapper.java
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/conversation/ConversationMapper.java
@@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.im.dal.mysql.conversation;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationPageReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ConversationDO;
+import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationPageReqVO;
+import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
import org.apache.ibatis.annotations.Mapper;
/**
@@ -13,18 +13,18 @@ import org.apache.ibatis.annotations.Mapper;
* @author 芋道源码
*/
@Mapper
-public interface ConversationMapper extends BaseMapperX {
+public interface ConversationMapper extends BaseMapperX {
- default PageResult selectPage(ConversationPageReqVO reqVO) {
- return selectPage(reqVO, new LambdaQueryWrapperX()
- .eqIfPresent(ConversationDO::getUserId, reqVO.getUserId())
- .eqIfPresent(ConversationDO::getConversationType, reqVO.getConversationType())
- .eqIfPresent(ConversationDO::getTargetId, reqVO.getTargetId())
- .eqIfPresent(ConversationDO::getNo, reqVO.getNo())
- .eqIfPresent(ConversationDO::getPinned, reqVO.getPinned())
- .betweenIfPresent(ConversationDO::getLastReadTime, reqVO.getLastReadTime())
- .betweenIfPresent(ConversationDO::getCreateTime, reqVO.getCreateTime())
- .orderByDesc(ConversationDO::getId));
+ default PageResult selectPage(ImConversationPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(ImConversationDO::getUserId, reqVO.getUserId())
+ .eqIfPresent(ImConversationDO::getConversationType, reqVO.getConversationType())
+ .eqIfPresent(ImConversationDO::getTargetId, reqVO.getTargetId())
+ .eqIfPresent(ImConversationDO::getNo, reqVO.getNo())
+ .eqIfPresent(ImConversationDO::getPinned, reqVO.getPinned())
+ .betweenIfPresent(ImConversationDO::getLastReadTime, reqVO.getLastReadTime())
+ .betweenIfPresent(ImConversationDO::getCreateTime, reqVO.getCreateTime())
+ .orderByDesc(ImConversationDO::getId));
}
}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/inbox/InboxMapper.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/inbox/InboxMapper.java
index 1b0822b..fe861c5 100755
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/inbox/InboxMapper.java
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/inbox/InboxMapper.java
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxPageReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.inbox.InboxDO;
+import cn.iocoder.yudao.module.im.dal.dataobject.inbox.ImInboxDO;
import org.apache.ibatis.annotations.Mapper;
/**
@@ -13,15 +13,15 @@ import org.apache.ibatis.annotations.Mapper;
* @author 芋道源码
*/
@Mapper
-public interface InboxMapper extends BaseMapperX {
+public interface InboxMapper extends BaseMapperX {
- default PageResult selectPage(InboxPageReqVO reqVO) {
- return selectPage(reqVO, new LambdaQueryWrapperX()
- .eqIfPresent(InboxDO::getUserId, reqVO.getUserId())
- .eqIfPresent(InboxDO::getMessageId, reqVO.getMessageId())
- .eqIfPresent(InboxDO::getSequence, reqVO.getSequence())
- .betweenIfPresent(InboxDO::getCreateTime, reqVO.getCreateTime())
- .orderByDesc(InboxDO::getId));
+ default PageResult selectPage(InboxPageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(ImInboxDO::getUserId, reqVO.getUserId())
+ .eqIfPresent(ImInboxDO::getMessageId, reqVO.getMessageId())
+ .eqIfPresent(ImInboxDO::getSequence, reqVO.getSequence())
+ .betweenIfPresent(ImInboxDO::getCreateTime, reqVO.getCreateTime())
+ .orderByDesc(ImInboxDO::getId));
}
}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/ImMessageMapper.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/ImMessageMapper.java
new file mode 100755
index 0000000..6fee364
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/ImMessageMapper.java
@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.im.dal.mysql.message;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessagePageReqVO;
+import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 消息 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface ImMessageMapper extends BaseMapperX {
+
+ default PageResult selectPage(ImMessagePageReqVO reqVO) {
+ return selectPage(reqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(ImMessageDO::getClientMessageId, reqVO.getClientMessageId())
+ .eqIfPresent(ImMessageDO::getSenderId, reqVO.getSenderId())
+ .eqIfPresent(ImMessageDO::getReceiverId, reqVO.getReceiverId())
+ .likeIfPresent(ImMessageDO::getSenderNickname, reqVO.getSenderNickname())
+ .eqIfPresent(ImMessageDO::getSenderAvatar, reqVO.getSenderAvatar())
+ .eqIfPresent(ImMessageDO::getConversationType, reqVO.getConversationType())
+ .eqIfPresent(ImMessageDO::getConversationNo, reqVO.getConversationNo())
+ .eqIfPresent(ImMessageDO::getContentType, reqVO.getContentType())
+ .eqIfPresent(ImMessageDO::getContent, reqVO.getContent())
+ .betweenIfPresent(ImMessageDO::getSendTime, reqVO.getSendTime())
+ .eqIfPresent(ImMessageDO::getSendFrom, reqVO.getSendFrom())
+ .betweenIfPresent(ImMessageDO::getCreateTime, reqVO.getCreateTime())
+ .orderByDesc(ImMessageDO::getId));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/MessageMapper.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/MessageMapper.java
deleted file mode 100755
index ac54b46..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/MessageMapper.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package cn.iocoder.yudao.module.im.dal.mysql.message;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessagePageReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.message.MessageDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 消息 Mapper
- *
- * @author 芋道源码
- */
-@Mapper
-public interface MessageMapper extends BaseMapperX {
-
- default PageResult selectPage(MessagePageReqVO reqVO) {
- return selectPage(reqVO, new LambdaQueryWrapperX()
- .eqIfPresent(MessageDO::getClientMessageId, reqVO.getClientMessageId())
- .eqIfPresent(MessageDO::getSenderId, reqVO.getSenderId())
- .eqIfPresent(MessageDO::getReceiverId, reqVO.getReceiverId())
- .likeIfPresent(MessageDO::getSenderNickname, reqVO.getSenderNickname())
- .eqIfPresent(MessageDO::getSenderAvatar, reqVO.getSenderAvatar())
- .eqIfPresent(MessageDO::getConversationType, reqVO.getConversationType())
- .eqIfPresent(MessageDO::getConversationNo, reqVO.getConversationNo())
- .eqIfPresent(MessageDO::getContentType, reqVO.getContentType())
- .eqIfPresent(MessageDO::getContent, reqVO.getContent())
- .betweenIfPresent(MessageDO::getSendTime, reqVO.getSendTime())
- .eqIfPresent(MessageDO::getSendFrom, reqVO.getSendFrom())
- .betweenIfPresent(MessageDO::getCreateTime, reqVO.getCreateTime())
- .orderByDesc(MessageDO::getId));
- }
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationService.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationService.java
deleted file mode 100755
index 61175b1..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationService.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package cn.iocoder.yudao.module.im.service.conversation;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationPageReqVO;
-import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationSaveReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ConversationDO;
-import jakarta.validation.Valid;
-
-/**
- * 会话 Service 接口
- *
- * @author 芋道源码
- */
-public interface ConversationService {
-
- /**
- * 创建会话
- *
- * @param createReqVO 创建信息
- * @return 编号
- */
- Long createConversation(@Valid ConversationSaveReqVO createReqVO);
-
- /**
- * 更新会话
- *
- * @param updateReqVO 更新信息
- */
- void updateConversation(@Valid ConversationSaveReqVO updateReqVO);
-
- /**
- * 删除会话
- *
- * @param id 编号
- */
- void deleteConversation(Long id);
-
- /**
- * 获得会话
- *
- * @param id 编号
- * @return 会话
- */
- ConversationDO getConversation(Long id);
-
- /**
- * 获得会话分页
- *
- * @param pageReqVO 分页查询
- * @return 会话分页
- */
- PageResult getConversationPage(ConversationPageReqVO pageReqVO);
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImpl.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImpl.java
deleted file mode 100755
index 9ede7d5..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImpl.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package cn.iocoder.yudao.module.im.service.conversation;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationPageReqVO;
-import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationSaveReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ConversationDO;
-import cn.iocoder.yudao.module.im.dal.mysql.conversation.ConversationMapper;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.CONVERSATION_NOT_EXISTS;
-
-/**
- * 会话 Service 实现类
- *
- * @author 芋道源码
- */
-@Service
-@Validated
-public class ConversationServiceImpl implements ConversationService {
-
- @Resource
- private ConversationMapper conversationMapper;
-
- @Override
- public Long createConversation(ConversationSaveReqVO createReqVO) {
- // 插入
- ConversationDO conversation = BeanUtils.toBean(createReqVO, ConversationDO.class);
- conversationMapper.insert(conversation);
- // 返回
- return conversation.getId();
- }
-
- @Override
- public void updateConversation(ConversationSaveReqVO updateReqVO) {
- // 校验存在
- validateConversationExists(updateReqVO.getId());
- // 更新
- ConversationDO updateObj = BeanUtils.toBean(updateReqVO, ConversationDO.class);
- conversationMapper.updateById(updateObj);
- }
-
- @Override
- public void deleteConversation(Long id) {
- // 校验存在
- validateConversationExists(id);
- // 删除
- conversationMapper.deleteById(id);
- }
-
- private void validateConversationExists(Long id) {
- if (conversationMapper.selectById(id) == null) {
- throw exception(CONVERSATION_NOT_EXISTS);
- }
- }
-
- @Override
- public ConversationDO getConversation(Long id) {
- return conversationMapper.selectById(id);
- }
-
- @Override
- public PageResult getConversationPage(ConversationPageReqVO pageReqVO) {
- return conversationMapper.selectPage(pageReqVO);
- }
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationService.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationService.java
new file mode 100755
index 0000000..0980a92
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationService.java
@@ -0,0 +1,54 @@
+package cn.iocoder.yudao.module.im.service.conversation;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationPageReqVO;
+import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationSaveReqVO;
+import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
+import jakarta.validation.Valid;
+
+/**
+ * 会话 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface ImConversationService {
+
+ /**
+ * 创建会话
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createConversation(@Valid ImConversationSaveReqVO createReqVO);
+
+ /**
+ * 更新会话
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateConversation(@Valid ImConversationSaveReqVO updateReqVO);
+
+ /**
+ * 删除会话
+ *
+ * @param id 编号
+ */
+ void deleteConversation(Long id);
+
+ /**
+ * 获得会话
+ *
+ * @param id 编号
+ * @return 会话
+ */
+ ImConversationDO getConversation(Long id);
+
+ /**
+ * 获得会话分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 会话分页
+ */
+ PageResult getConversationPage(ImConversationPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImpl.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImpl.java
new file mode 100755
index 0000000..8ff1514
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImpl.java
@@ -0,0 +1,70 @@
+package cn.iocoder.yudao.module.im.service.conversation;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationPageReqVO;
+import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationSaveReqVO;
+import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
+import cn.iocoder.yudao.module.im.dal.mysql.conversation.ConversationMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.CONVERSATION_NOT_EXISTS;
+
+/**
+ * 会话 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class ImConversationServiceImpl implements ImConversationService {
+
+ @Resource
+ private ConversationMapper conversationMapper;
+
+ @Override
+ public Long createConversation(ImConversationSaveReqVO createReqVO) {
+ // 插入
+ ImConversationDO conversation = BeanUtils.toBean(createReqVO, ImConversationDO.class);
+ conversationMapper.insert(conversation);
+ // 返回
+ return conversation.getId();
+ }
+
+ @Override
+ public void updateConversation(ImConversationSaveReqVO updateReqVO) {
+ // 校验存在
+ validateConversationExists(updateReqVO.getId());
+ // 更新
+ ImConversationDO updateObj = BeanUtils.toBean(updateReqVO, ImConversationDO.class);
+ conversationMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteConversation(Long id) {
+ // 校验存在
+ validateConversationExists(id);
+ // 删除
+ conversationMapper.deleteById(id);
+ }
+
+ private void validateConversationExists(Long id) {
+ if (conversationMapper.selectById(id) == null) {
+ throw exception(CONVERSATION_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public ImConversationDO getConversation(Long id) {
+ return conversationMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getConversationPage(ImConversationPageReqVO pageReqVO) {
+ return conversationMapper.selectPage(pageReqVO);
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/inbox/InboxService.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/inbox/InboxService.java
index c61af65..ba28404 100755
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/inbox/InboxService.java
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/inbox/InboxService.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.im.service.inbox;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxPageReqVO;
import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxSaveReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.inbox.InboxDO;
+import cn.iocoder.yudao.module.im.dal.dataobject.inbox.ImInboxDO;
import jakarta.validation.Valid;
/**
@@ -41,7 +41,7 @@ public interface InboxService {
* @param id 编号
* @return 收件箱
*/
- InboxDO getInbox(Long id);
+ ImInboxDO getInbox(Long id);
/**
* 获得收件箱分页
@@ -49,6 +49,6 @@ public interface InboxService {
* @param pageReqVO 分页查询
* @return 收件箱分页
*/
- PageResult getInboxPage(InboxPageReqVO pageReqVO);
+ PageResult getInboxPage(InboxPageReqVO pageReqVO);
}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/inbox/InboxServiceImpl.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/inbox/InboxServiceImpl.java
index 35d1191..350cde3 100755
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/inbox/InboxServiceImpl.java
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/inbox/InboxServiceImpl.java
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxPageReqVO;
import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxSaveReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.inbox.InboxDO;
+import cn.iocoder.yudao.module.im.dal.dataobject.inbox.ImInboxDO;
import cn.iocoder.yudao.module.im.dal.mysql.inbox.InboxMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
@@ -28,7 +28,7 @@ public class InboxServiceImpl implements InboxService {
@Override
public Long createInbox(InboxSaveReqVO createReqVO) {
// 插入
- InboxDO inbox = BeanUtils.toBean(createReqVO, InboxDO.class);
+ ImInboxDO inbox = BeanUtils.toBean(createReqVO, ImInboxDO.class);
inboxMapper.insert(inbox);
// 返回
return inbox.getId();
@@ -39,7 +39,7 @@ public class InboxServiceImpl implements InboxService {
// 校验存在
validateInboxExists(updateReqVO.getId());
// 更新
- InboxDO updateObj = BeanUtils.toBean(updateReqVO, InboxDO.class);
+ ImInboxDO updateObj = BeanUtils.toBean(updateReqVO, ImInboxDO.class);
inboxMapper.updateById(updateObj);
}
@@ -58,12 +58,12 @@ public class InboxServiceImpl implements InboxService {
}
@Override
- public InboxDO getInbox(Long id) {
+ public ImInboxDO getInbox(Long id) {
return inboxMapper.selectById(id);
}
@Override
- public PageResult getInboxPage(InboxPageReqVO pageReqVO) {
+ public PageResult getInboxPage(InboxPageReqVO pageReqVO) {
return inboxMapper.selectPage(pageReqVO);
}
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageService.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageService.java
new file mode 100755
index 0000000..37af3a1
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageService.java
@@ -0,0 +1,60 @@
+package cn.iocoder.yudao.module.im.service.message;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessagePageReqVO;
+import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageSaveReqVO;
+import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
+import jakarta.validation.Valid;
+
+/**
+ * 消息 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface ImMessageService {
+
+ /**
+ * 创建消息
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createMessage(@Valid ImMessageSaveReqVO createReqVO);
+
+ /**
+ * 更新消息
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateMessage(@Valid ImMessageSaveReqVO updateReqVO);
+
+ /**
+ * 删除消息
+ *
+ * @param id 编号
+ */
+ void deleteMessage(Long id);
+
+ /**
+ * 获得消息
+ *
+ * @param id 编号
+ * @return 消息
+ */
+ ImMessageDO getMessage(Long id);
+
+ /**
+ * 获得消息分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 消息分页
+ */
+ PageResult getMessagePage(ImMessagePageReqVO pageReqVO);
+
+ /**
+ * 发送私聊消息
+ * @param imMessageSaveReqVO 消息信息
+ * @return 消息编号
+ */
+ Long sendPrivateMessage(ImMessageSaveReqVO imMessageSaveReqVO);
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImpl.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImpl.java
new file mode 100755
index 0000000..81ab538
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImpl.java
@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.im.service.message;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessagePageReqVO;
+import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageSaveReqVO;
+import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
+import cn.iocoder.yudao.module.im.dal.mysql.message.ImMessageMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.MESSAGE_NOT_EXISTS;
+
+/**
+ * 消息 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class ImMessageServiceImpl implements ImMessageService {
+
+ @Resource
+ private ImMessageMapper imMessageMapper;
+
+ @Override
+ public Long createMessage(ImMessageSaveReqVO createReqVO) {
+ // 插入
+ ImMessageDO message = BeanUtils.toBean(createReqVO, ImMessageDO.class);
+ imMessageMapper.insert(message);
+ // 返回
+ return message.getId();
+ }
+
+ @Override
+ public void updateMessage(ImMessageSaveReqVO updateReqVO) {
+ // 校验存在
+ validateMessageExists(updateReqVO.getId());
+ // 更新
+ ImMessageDO updateObj = BeanUtils.toBean(updateReqVO, ImMessageDO.class);
+ imMessageMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteMessage(Long id) {
+ // 校验存在
+ validateMessageExists(id);
+ // 删除
+ imMessageMapper.deleteById(id);
+ }
+
+ private void validateMessageExists(Long id) {
+ if (imMessageMapper.selectById(id) == null) {
+ throw exception(MESSAGE_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public ImMessageDO getMessage(Long id) {
+ return imMessageMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getMessagePage(ImMessagePageReqVO pageReqVO) {
+ return imMessageMapper.selectPage(pageReqVO);
+ }
+
+ @Override
+ public Long sendPrivateMessage(ImMessageSaveReqVO imMessageSaveReqVO) {
+ return 0L;
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageService.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageService.java
deleted file mode 100755
index 5981dbd..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageService.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package cn.iocoder.yudao.module.im.service.message;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessagePageReqVO;
-import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessageSaveReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.message.MessageDO;
-import jakarta.validation.Valid;
-
-/**
- * 消息 Service 接口
- *
- * @author 芋道源码
- */
-public interface MessageService {
-
- /**
- * 创建消息
- *
- * @param createReqVO 创建信息
- * @return 编号
- */
- Long createMessage(@Valid MessageSaveReqVO createReqVO);
-
- /**
- * 更新消息
- *
- * @param updateReqVO 更新信息
- */
- void updateMessage(@Valid MessageSaveReqVO updateReqVO);
-
- /**
- * 删除消息
- *
- * @param id 编号
- */
- void deleteMessage(Long id);
-
- /**
- * 获得消息
- *
- * @param id 编号
- * @return 消息
- */
- MessageDO getMessage(Long id);
-
- /**
- * 获得消息分页
- *
- * @param pageReqVO 分页查询
- * @return 消息分页
- */
- PageResult getMessagePage(MessagePageReqVO pageReqVO);
-
- /**
- * 发送私聊消息
- * @param messageSaveReqVO 消息信息
- * @return 消息编号
- */
- Long sendPrivateMessage(MessageSaveReqVO messageSaveReqVO);
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImpl.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImpl.java
deleted file mode 100755
index 350d6c4..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImpl.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package cn.iocoder.yudao.module.im.service.message;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessagePageReqVO;
-import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessageSaveReqVO;
-import cn.iocoder.yudao.module.im.dal.dataobject.message.MessageDO;
-import cn.iocoder.yudao.module.im.dal.mysql.message.MessageMapper;
-import jakarta.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.MESSAGE_NOT_EXISTS;
-
-/**
- * 消息 Service 实现类
- *
- * @author 芋道源码
- */
-@Service
-@Validated
-public class MessageServiceImpl implements MessageService {
-
- @Resource
- private MessageMapper messageMapper;
-
- @Override
- public Long createMessage(MessageSaveReqVO createReqVO) {
- // 插入
- MessageDO message = BeanUtils.toBean(createReqVO, MessageDO.class);
- messageMapper.insert(message);
- // 返回
- return message.getId();
- }
-
- @Override
- public void updateMessage(MessageSaveReqVO updateReqVO) {
- // 校验存在
- validateMessageExists(updateReqVO.getId());
- // 更新
- MessageDO updateObj = BeanUtils.toBean(updateReqVO, MessageDO.class);
- messageMapper.updateById(updateObj);
- }
-
- @Override
- public void deleteMessage(Long id) {
- // 校验存在
- validateMessageExists(id);
- // 删除
- messageMapper.deleteById(id);
- }
-
- private void validateMessageExists(Long id) {
- if (messageMapper.selectById(id) == null) {
- throw exception(MESSAGE_NOT_EXISTS);
- }
- }
-
- @Override
- public MessageDO getMessage(Long id) {
- return messageMapper.selectById(id);
- }
-
- @Override
- public PageResult getMessagePage(MessagePageReqVO pageReqVO) {
- return messageMapper.selectPage(pageReqVO);
- }
-
- @Override
- public Long sendPrivateMessage(MessageSaveReqVO messageSaveReqVO) {
- return 0L;
- }
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/websocket/ImWebSocketMessageListener.java b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/websocket/ImWebSocketMessageListener.java
index 0dd9bb1..b035884 100644
--- a/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/websocket/ImWebSocketMessageListener.java
+++ b/yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/websocket/ImWebSocketMessageListener.java
@@ -4,9 +4,15 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.websocket.core.listener.WebSocketMessageListener;
import cn.iocoder.yudao.framework.websocket.core.sender.WebSocketMessageSender;
import cn.iocoder.yudao.framework.websocket.core.util.WebSocketFrameworkUtils;
+import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationSaveReqVO;
+import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageSaveReqVO;
import cn.iocoder.yudao.module.im.enums.conversation.ImConversationTypeEnum;
+import cn.iocoder.yudao.module.im.service.conversation.ImConversationService;
+import cn.iocoder.yudao.module.im.service.message.ImMessageService;
import cn.iocoder.yudao.module.im.websocket.message.ImReceiveMessage;
import cn.iocoder.yudao.module.im.websocket.message.ImSendMessage;
+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.Component;
import org.springframework.web.socket.WebSocketSession;
@@ -21,19 +27,65 @@ public class ImWebSocketMessageListener implements WebSocketMessageListener
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/main/resources/mapper/message/MessageMapper.xml b/yudao-module-im/yudao-module-im-biz/src/main/resources/mapper/message/MessageMapper.xml
deleted file mode 100755
index 46521ed..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/main/resources/mapper/message/MessageMapper.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImplTest.java b/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImplTest.java
deleted file mode 100755
index a108224..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImplTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package cn.iocoder.yudao.module.im.service.conversation;
-
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.mock.mockito.MockBean;
-
-import jakarta.annotation.Resource;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-
-import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.*;
-import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ConversationDO;
-import cn.iocoder.yudao.module.im.dal.mysql.conversation.ConversationMapper;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import jakarta.annotation.Resource;
-import org.springframework.context.annotation.Import;
-import java.util.*;
-import java.time.LocalDateTime;
-
-import static cn.hutool.core.util.RandomUtil.*;
-import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
-import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
-import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-/**
- * {@link ConversationServiceImpl} 的单元测试类
- *
- * @author 芋道源码
- */
-@Import(ConversationServiceImpl.class)
-public class ConversationServiceImplTest extends BaseDbUnitTest {
-
- @Resource
- private ConversationServiceImpl conversationService;
-
- @Resource
- private ConversationMapper conversationMapper;
-
- @Test
- public void testCreateConversation_success() {
- // 准备参数
- ConversationSaveReqVO createReqVO = randomPojo(ConversationSaveReqVO.class).setId(null);
-
- // 调用
- Long conversationId = conversationService.createConversation(createReqVO);
- // 断言
- assertNotNull(conversationId);
- // 校验记录的属性是否正确
- ConversationDO conversation = conversationMapper.selectById(conversationId);
- assertPojoEquals(createReqVO, conversation, "id");
- }
-
- @Test
- public void testUpdateConversation_success() {
- // mock 数据
- ConversationDO dbConversation = randomPojo(ConversationDO.class);
- conversationMapper.insert(dbConversation);// @Sql: 先插入出一条存在的数据
- // 准备参数
- ConversationSaveReqVO updateReqVO = randomPojo(ConversationSaveReqVO.class, o -> {
- o.setId(dbConversation.getId()); // 设置更新的 ID
- });
-
- // 调用
- conversationService.updateConversation(updateReqVO);
- // 校验是否更新正确
- ConversationDO conversation = conversationMapper.selectById(updateReqVO.getId()); // 获取最新的
- assertPojoEquals(updateReqVO, conversation);
- }
-
- @Test
- public void testUpdateConversation_notExists() {
- // 准备参数
- ConversationSaveReqVO updateReqVO = randomPojo(ConversationSaveReqVO.class);
-
- // 调用, 并断言异常
- assertServiceException(() -> conversationService.updateConversation(updateReqVO), CONVERSATION_NOT_EXISTS);
- }
-
- @Test
- public void testDeleteConversation_success() {
- // mock 数据
- ConversationDO dbConversation = randomPojo(ConversationDO.class);
- conversationMapper.insert(dbConversation);// @Sql: 先插入出一条存在的数据
- // 准备参数
- Long id = dbConversation.getId();
-
- // 调用
- conversationService.deleteConversation(id);
- // 校验数据不存在了
- assertNull(conversationMapper.selectById(id));
- }
-
- @Test
- public void testDeleteConversation_notExists() {
- // 准备参数
- Long id = randomLongId();
-
- // 调用, 并断言异常
- assertServiceException(() -> conversationService.deleteConversation(id), CONVERSATION_NOT_EXISTS);
- }
-
- @Test
- @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
- public void testGetConversationPage() {
- // mock 数据
- ConversationDO dbConversation = randomPojo(ConversationDO.class, o -> { // 等会查询到
- o.setUserId(null);
- o.setConversationType(null);
- o.setTargetId(null);
- o.setNo(null);
- o.setPinned(null);
- o.setLastReadTime(null);
- o.setCreateTime(null);
- });
- conversationMapper.insert(dbConversation);
- // 测试 userId 不匹配
- conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setUserId(null)));
- // 测试 conversationType 不匹配
- conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setConversationType(null)));
- // 测试 targetId 不匹配
- conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setTargetId(null)));
- // 测试 no 不匹配
- conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setNo(null)));
- // 测试 pinned 不匹配
- conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setPinned(null)));
- // 测试 lastReadTime 不匹配
- conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setLastReadTime(null)));
- // 测试 createTime 不匹配
- conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setCreateTime(null)));
- // 准备参数
- ConversationPageReqVO reqVO = new ConversationPageReqVO();
- reqVO.setUserId(null);
- reqVO.setConversationType(null);
- reqVO.setTargetId(null);
- reqVO.setNo(null);
- reqVO.setPinned(null);
- reqVO.setLastReadTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
- reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-
- // 调用
- PageResult pageResult = conversationService.getConversationPage(reqVO);
- // 断言
- assertEquals(1, pageResult.getTotal());
- assertEquals(1, pageResult.getList().size());
- assertPojoEquals(dbConversation, pageResult.getList().get(0));
- }
-
-}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImplTest.java b/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImplTest.java
new file mode 100755
index 0000000..9b5de48
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImplTest.java
@@ -0,0 +1,147 @@
+package cn.iocoder.yudao.module.im.service.conversation;
+
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import jakarta.annotation.Resource;
+
+import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
+
+import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.*;
+import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
+import cn.iocoder.yudao.module.im.dal.mysql.conversation.ConversationMapper;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+import org.springframework.context.annotation.Import;
+
+import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
+import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
+import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
+import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
+import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * {@link ImConversationServiceImpl} 的单元测试类
+ *
+ * @author 芋道源码
+ */
+@Import(ImConversationServiceImpl.class)
+public class ImConversationServiceImplTest extends BaseDbUnitTest {
+
+ @Resource
+ private ImConversationServiceImpl conversationService;
+
+ @Resource
+ private ConversationMapper conversationMapper;
+
+ @Test
+ public void testCreateConversation_success() {
+ // 准备参数
+ ImConversationSaveReqVO createReqVO = randomPojo(ImConversationSaveReqVO.class).setId(null);
+
+ // 调用
+ Long conversationId = conversationService.createConversation(createReqVO);
+ // 断言
+ assertNotNull(conversationId);
+ // 校验记录的属性是否正确
+ ImConversationDO conversation = conversationMapper.selectById(conversationId);
+ assertPojoEquals(createReqVO, conversation, "id");
+ }
+
+ @Test
+ public void testUpdateConversation_success() {
+ // mock 数据
+ ImConversationDO dbConversation = randomPojo(ImConversationDO.class);
+ conversationMapper.insert(dbConversation);// @Sql: 先插入出一条存在的数据
+ // 准备参数
+ ImConversationSaveReqVO updateReqVO = randomPojo(ImConversationSaveReqVO.class, o -> {
+ o.setId(dbConversation.getId()); // 设置更新的 ID
+ });
+
+ // 调用
+ conversationService.updateConversation(updateReqVO);
+ // 校验是否更新正确
+ ImConversationDO conversation = conversationMapper.selectById(updateReqVO.getId()); // 获取最新的
+ assertPojoEquals(updateReqVO, conversation);
+ }
+
+ @Test
+ public void testUpdateConversation_notExists() {
+ // 准备参数
+ ImConversationSaveReqVO updateReqVO = randomPojo(ImConversationSaveReqVO.class);
+
+ // 调用, 并断言异常
+ assertServiceException(() -> conversationService.updateConversation(updateReqVO), CONVERSATION_NOT_EXISTS);
+ }
+
+ @Test
+ public void testDeleteConversation_success() {
+ // mock 数据
+ ImConversationDO dbConversation = randomPojo(ImConversationDO.class);
+ conversationMapper.insert(dbConversation);// @Sql: 先插入出一条存在的数据
+ // 准备参数
+ Long id = dbConversation.getId();
+
+ // 调用
+ conversationService.deleteConversation(id);
+ // 校验数据不存在了
+ assertNull(conversationMapper.selectById(id));
+ }
+
+ @Test
+ public void testDeleteConversation_notExists() {
+ // 准备参数
+ Long id = randomLongId();
+
+ // 调用, 并断言异常
+ assertServiceException(() -> conversationService.deleteConversation(id), CONVERSATION_NOT_EXISTS);
+ }
+
+ @Test
+ @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
+ public void testGetConversationPage() {
+ // mock 数据
+ ImConversationDO dbConversation = randomPojo(ImConversationDO.class, o -> { // 等会查询到
+ o.setUserId(null);
+ o.setConversationType(null);
+ o.setTargetId(null);
+ o.setNo(null);
+ o.setPinned(null);
+ o.setLastReadTime(null);
+ o.setCreateTime(null);
+ });
+ conversationMapper.insert(dbConversation);
+ // 测试 userId 不匹配
+ conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setUserId(null)));
+ // 测试 conversationType 不匹配
+ conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setConversationType(null)));
+ // 测试 targetId 不匹配
+ conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setTargetId(null)));
+ // 测试 no 不匹配
+ conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setNo(null)));
+ // 测试 pinned 不匹配
+ conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setPinned(null)));
+ // 测试 lastReadTime 不匹配
+ conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setLastReadTime(null)));
+ // 测试 createTime 不匹配
+ conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setCreateTime(null)));
+ // 准备参数
+ ImConversationPageReqVO reqVO = new ImConversationPageReqVO();
+ reqVO.setUserId(null);
+ reqVO.setConversationType(null);
+ reqVO.setTargetId(null);
+ reqVO.setNo(null);
+ reqVO.setPinned(null);
+ reqVO.setLastReadTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+ reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+
+ // 调用
+ PageResult pageResult = conversationService.getConversationPage(reqVO);
+ // 断言
+ assertEquals(1, pageResult.getTotal());
+ assertEquals(1, pageResult.getList().size());
+ assertPojoEquals(dbConversation, pageResult.getList().get(0));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/inbox/InboxServiceImplTest.java b/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/inbox/InboxServiceImplTest.java
index 5df121c..229448b 100755
--- a/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/inbox/InboxServiceImplTest.java
+++ b/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/inbox/InboxServiceImplTest.java
@@ -2,31 +2,24 @@ package cn.iocoder.yudao.module.im.service.inbox;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.mock.mockito.MockBean;
import jakarta.annotation.Resource;
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.*;
-import cn.iocoder.yudao.module.im.dal.dataobject.inbox.InboxDO;
+import cn.iocoder.yudao.module.im.dal.dataobject.inbox.ImInboxDO;
import cn.iocoder.yudao.module.im.dal.mysql.inbox.InboxMapper;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import jakarta.annotation.Resource;
import org.springframework.context.annotation.Import;
-import java.util.*;
-import java.time.LocalDateTime;
-import static cn.hutool.core.util.RandomUtil.*;
import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.*;
/**
* {@link InboxServiceImpl} 的单元测试类
@@ -52,14 +45,14 @@ public class InboxServiceImplTest extends BaseDbUnitTest {
// 断言
assertNotNull(inboxId);
// 校验记录的属性是否正确
- InboxDO inbox = inboxMapper.selectById(inboxId);
+ ImInboxDO inbox = inboxMapper.selectById(inboxId);
assertPojoEquals(createReqVO, inbox, "id");
}
@Test
public void testUpdateInbox_success() {
// mock 数据
- InboxDO dbInbox = randomPojo(InboxDO.class);
+ ImInboxDO dbInbox = randomPojo(ImInboxDO.class);
inboxMapper.insert(dbInbox);// @Sql: 先插入出一条存在的数据
// 准备参数
InboxSaveReqVO updateReqVO = randomPojo(InboxSaveReqVO.class, o -> {
@@ -69,7 +62,7 @@ public class InboxServiceImplTest extends BaseDbUnitTest {
// 调用
inboxService.updateInbox(updateReqVO);
// 校验是否更新正确
- InboxDO inbox = inboxMapper.selectById(updateReqVO.getId()); // 获取最新的
+ ImInboxDO inbox = inboxMapper.selectById(updateReqVO.getId()); // 获取最新的
assertPojoEquals(updateReqVO, inbox);
}
@@ -85,7 +78,7 @@ public class InboxServiceImplTest extends BaseDbUnitTest {
@Test
public void testDeleteInbox_success() {
// mock 数据
- InboxDO dbInbox = randomPojo(InboxDO.class);
+ ImInboxDO dbInbox = randomPojo(ImInboxDO.class);
inboxMapper.insert(dbInbox);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbInbox.getId();
@@ -109,7 +102,7 @@ public class InboxServiceImplTest extends BaseDbUnitTest {
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetInboxPage() {
// mock 数据
- InboxDO dbInbox = randomPojo(InboxDO.class, o -> { // 等会查询到
+ ImInboxDO dbInbox = randomPojo(ImInboxDO.class, o -> { // 等会查询到
o.setUserId(null);
o.setMessageId(null);
o.setSequence(null);
@@ -132,7 +125,7 @@ public class InboxServiceImplTest extends BaseDbUnitTest {
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
- PageResult pageResult = inboxService.getInboxPage(reqVO);
+ PageResult pageResult = inboxService.getInboxPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
diff --git a/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImplTest.java b/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImplTest.java
new file mode 100755
index 0000000..cfd13e5
--- /dev/null
+++ b/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImplTest.java
@@ -0,0 +1,167 @@
+package cn.iocoder.yudao.module.im.service.message;
+
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import jakarta.annotation.Resource;
+
+import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
+
+import cn.iocoder.yudao.module.im.controller.admin.message.vo.*;
+import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
+import cn.iocoder.yudao.module.im.dal.mysql.message.ImMessageMapper;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+import org.springframework.context.annotation.Import;
+
+import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
+import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
+import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
+import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
+import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * {@link ImMessageServiceImpl} 的单元测试类
+ *
+ * @author 芋道源码
+ */
+@Import(ImMessageServiceImpl.class)
+public class ImMessageServiceImplTest extends BaseDbUnitTest {
+
+ @Resource
+ private ImMessageServiceImpl messageService;
+
+ @Resource
+ private ImMessageMapper imMessageMapper;
+
+ @Test
+ public void testCreateMessage_success() {
+ // 准备参数
+ ImMessageSaveReqVO createReqVO = randomPojo(ImMessageSaveReqVO.class).setId(null);
+
+ // 调用
+ Long messageId = messageService.createMessage(createReqVO);
+ // 断言
+ assertNotNull(messageId);
+ // 校验记录的属性是否正确
+ ImMessageDO message = imMessageMapper.selectById(messageId);
+ assertPojoEquals(createReqVO, message, "id");
+ }
+
+ @Test
+ public void testUpdateMessage_success() {
+ // mock 数据
+ ImMessageDO dbMessage = randomPojo(ImMessageDO.class);
+ imMessageMapper.insert(dbMessage);// @Sql: 先插入出一条存在的数据
+ // 准备参数
+ ImMessageSaveReqVO updateReqVO = randomPojo(ImMessageSaveReqVO.class, o -> {
+ o.setId(dbMessage.getId()); // 设置更新的 ID
+ });
+
+ // 调用
+ messageService.updateMessage(updateReqVO);
+ // 校验是否更新正确
+ ImMessageDO message = imMessageMapper.selectById(updateReqVO.getId()); // 获取最新的
+ assertPojoEquals(updateReqVO, message);
+ }
+
+ @Test
+ public void testUpdateMessage_notExists() {
+ // 准备参数
+ ImMessageSaveReqVO updateReqVO = randomPojo(ImMessageSaveReqVO.class);
+
+ // 调用, 并断言异常
+ assertServiceException(() -> messageService.updateMessage(updateReqVO), MESSAGE_NOT_EXISTS);
+ }
+
+ @Test
+ public void testDeleteMessage_success() {
+ // mock 数据
+ ImMessageDO dbMessage = randomPojo(ImMessageDO.class);
+ imMessageMapper.insert(dbMessage);// @Sql: 先插入出一条存在的数据
+ // 准备参数
+ Long id = dbMessage.getId();
+
+ // 调用
+ messageService.deleteMessage(id);
+ // 校验数据不存在了
+ assertNull(imMessageMapper.selectById(id));
+ }
+
+ @Test
+ public void testDeleteMessage_notExists() {
+ // 准备参数
+ Long id = randomLongId();
+
+ // 调用, 并断言异常
+ assertServiceException(() -> messageService.deleteMessage(id), MESSAGE_NOT_EXISTS);
+ }
+
+ @Test
+ @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
+ public void testGetMessagePage() {
+ // mock 数据
+ ImMessageDO dbMessage = randomPojo(ImMessageDO.class, o -> { // 等会查询到
+ o.setClientMessageId(null);
+ o.setSenderId(null);
+ o.setReceiverId(null);
+ o.setSenderNickname(null);
+ o.setSenderAvatar(null);
+ o.setConversationType(null);
+ o.setConversationNo(null);
+ o.setContentType(null);
+ o.setContent(null);
+ o.setSendTime(null);
+ o.setSendFrom(null);
+ o.setCreateTime(null);
+ });
+ imMessageMapper.insert(dbMessage);
+ // 测试 clientMessageId 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setClientMessageId(null)));
+ // 测试 senderId 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderId(null)));
+ // 测试 receiverId 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setReceiverId(null)));
+ // 测试 senderNickname 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderNickname(null)));
+ // 测试 senderAvatar 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderAvatar(null)));
+ // 测试 conversationType 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setConversationType(null)));
+ // 测试 conversationNo 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setConversationNo(null)));
+ // 测试 contentType 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setContentType(null)));
+ // 测试 content 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setContent(null)));
+ // 测试 sendTime 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSendTime(null)));
+ // 测试 sendFrom 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSendFrom(null)));
+ // 测试 createTime 不匹配
+ imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setCreateTime(null)));
+ // 准备参数
+ ImMessagePageReqVO reqVO = new ImMessagePageReqVO();
+ reqVO.setClientMessageId(null);
+ reqVO.setSenderId(null);
+ reqVO.setReceiverId(null);
+ reqVO.setSenderNickname(null);
+ reqVO.setSenderAvatar(null);
+ reqVO.setConversationType(null);
+ reqVO.setConversationNo(null);
+ reqVO.setContentType(null);
+ reqVO.setContent(null);
+ reqVO.setSendTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+ reqVO.setSendFrom(null);
+ reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+
+ // 调用
+ PageResult pageResult = messageService.getMessagePage(reqVO);
+ // 断言
+ assertEquals(1, pageResult.getTotal());
+ assertEquals(1, pageResult.getList().size());
+ assertPojoEquals(dbMessage, pageResult.getList().get(0));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImplTest.java b/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImplTest.java
deleted file mode 100755
index 22713bd..0000000
--- a/yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImplTest.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package cn.iocoder.yudao.module.im.service.message;
-
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.mock.mockito.MockBean;
-
-import jakarta.annotation.Resource;
-
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-
-import cn.iocoder.yudao.module.im.controller.admin.message.vo.*;
-import cn.iocoder.yudao.module.im.dal.dataobject.message.MessageDO;
-import cn.iocoder.yudao.module.im.dal.mysql.message.MessageMapper;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import jakarta.annotation.Resource;
-import org.springframework.context.annotation.Import;
-import java.util.*;
-import java.time.LocalDateTime;
-
-import static cn.hutool.core.util.RandomUtil.*;
-import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
-import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
-import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-/**
- * {@link MessageServiceImpl} 的单元测试类
- *
- * @author 芋道源码
- */
-@Import(MessageServiceImpl.class)
-public class MessageServiceImplTest extends BaseDbUnitTest {
-
- @Resource
- private MessageServiceImpl messageService;
-
- @Resource
- private MessageMapper messageMapper;
-
- @Test
- public void testCreateMessage_success() {
- // 准备参数
- MessageSaveReqVO createReqVO = randomPojo(MessageSaveReqVO.class).setId(null);
-
- // 调用
- Long messageId = messageService.createMessage(createReqVO);
- // 断言
- assertNotNull(messageId);
- // 校验记录的属性是否正确
- MessageDO message = messageMapper.selectById(messageId);
- assertPojoEquals(createReqVO, message, "id");
- }
-
- @Test
- public void testUpdateMessage_success() {
- // mock 数据
- MessageDO dbMessage = randomPojo(MessageDO.class);
- messageMapper.insert(dbMessage);// @Sql: 先插入出一条存在的数据
- // 准备参数
- MessageSaveReqVO updateReqVO = randomPojo(MessageSaveReqVO.class, o -> {
- o.setId(dbMessage.getId()); // 设置更新的 ID
- });
-
- // 调用
- messageService.updateMessage(updateReqVO);
- // 校验是否更新正确
- MessageDO message = messageMapper.selectById(updateReqVO.getId()); // 获取最新的
- assertPojoEquals(updateReqVO, message);
- }
-
- @Test
- public void testUpdateMessage_notExists() {
- // 准备参数
- MessageSaveReqVO updateReqVO = randomPojo(MessageSaveReqVO.class);
-
- // 调用, 并断言异常
- assertServiceException(() -> messageService.updateMessage(updateReqVO), MESSAGE_NOT_EXISTS);
- }
-
- @Test
- public void testDeleteMessage_success() {
- // mock 数据
- MessageDO dbMessage = randomPojo(MessageDO.class);
- messageMapper.insert(dbMessage);// @Sql: 先插入出一条存在的数据
- // 准备参数
- Long id = dbMessage.getId();
-
- // 调用
- messageService.deleteMessage(id);
- // 校验数据不存在了
- assertNull(messageMapper.selectById(id));
- }
-
- @Test
- public void testDeleteMessage_notExists() {
- // 准备参数
- Long id = randomLongId();
-
- // 调用, 并断言异常
- assertServiceException(() -> messageService.deleteMessage(id), MESSAGE_NOT_EXISTS);
- }
-
- @Test
- @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
- public void testGetMessagePage() {
- // mock 数据
- MessageDO dbMessage = randomPojo(MessageDO.class, o -> { // 等会查询到
- o.setClientMessageId(null);
- o.setSenderId(null);
- o.setReceiverId(null);
- o.setSenderNickname(null);
- o.setSenderAvatar(null);
- o.setConversationType(null);
- o.setConversationNo(null);
- o.setContentType(null);
- o.setContent(null);
- o.setSendTime(null);
- o.setSendFrom(null);
- o.setCreateTime(null);
- });
- messageMapper.insert(dbMessage);
- // 测试 clientMessageId 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setClientMessageId(null)));
- // 测试 senderId 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderId(null)));
- // 测试 receiverId 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setReceiverId(null)));
- // 测试 senderNickname 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderNickname(null)));
- // 测试 senderAvatar 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderAvatar(null)));
- // 测试 conversationType 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setConversationType(null)));
- // 测试 conversationNo 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setConversationNo(null)));
- // 测试 contentType 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setContentType(null)));
- // 测试 content 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setContent(null)));
- // 测试 sendTime 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSendTime(null)));
- // 测试 sendFrom 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSendFrom(null)));
- // 测试 createTime 不匹配
- messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setCreateTime(null)));
- // 准备参数
- MessagePageReqVO reqVO = new MessagePageReqVO();
- reqVO.setClientMessageId(null);
- reqVO.setSenderId(null);
- reqVO.setReceiverId(null);
- reqVO.setSenderNickname(null);
- reqVO.setSenderAvatar(null);
- reqVO.setConversationType(null);
- reqVO.setConversationNo(null);
- reqVO.setContentType(null);
- reqVO.setContent(null);
- reqVO.setSendTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
- reqVO.setSendFrom(null);
- reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-
- // 调用
- PageResult pageResult = messageService.getMessagePage(reqVO);
- // 断言
- assertEquals(1, pageResult.getTotal());
- assertEquals(1, pageResult.getList().size());
- assertPojoEquals(dbMessage, pageResult.getList().get(0));
- }
-
-}
\ No newline at end of file
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/dto/AdminUserRespDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/dto/AdminUserRespDTO.java
index ac13c3a..7eab4fa 100644
--- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/dto/AdminUserRespDTO.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/dto/AdminUserRespDTO.java
@@ -41,4 +41,9 @@ public class AdminUserRespDTO {
*/
private String mobile;
+ /**
+ * 用户头像
+ */
+ private String avatar;
+
}
diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml
index e293460..76f8b3b 100644
--- a/yudao-server/src/main/resources/application-local.yaml
+++ b/yudao-server/src/main/resources/application-local.yaml
@@ -47,14 +47,14 @@ spring:
datasource:
master:
name: ruoyi-vue-pro
- url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
+ url: jdbc:mysql://chaojiniu.top:23306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
# url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.master.name} # PostgreSQL 连接的示例
# url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
# url: jdbc:dm://10.211.55.4:5236?schema=RUOYI_VUE_PRO # DM 连接的示例
- username: root
- password: 123456
+ username: ruoyi-vue-pro
+ password: ruoyi-@h2ju02hebp
# username: sa
# password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
# username: SYSDBA # DM 连接的示例
@@ -62,23 +62,23 @@ spring:
slave: # 模拟从库,可根据自己需要修改
name: ruoyi-vue-pro
lazy: true # 开启懒加载,保证启动速度
- url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
+ url: jdbc:mysql://chaojiniu.top:23306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
# url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
# url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例
- username: root
- password: 123456
+ username: ruoyi-vue-pro
+ password: ruoyi-@h2ju02hebp
# username: sa
# password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
data:
redis:
- host: 127.0.0.1 # 地址
+ host: chaojiniu.top # 地址
port: 6379 # 端口
database: 0 # 数据库索引
-# password: dev # 密码,建议生产环境开启
+ password: fsknKD7UvQYZsyf2hXXn # 密码,建议生产环境开启
--- #################### 定时任务相关配置 ####################
diff --git a/yudao-server/src/main/resources/application.yaml b/yudao-server/src/main/resources/application.yaml
index fd61e0c..ed3f827 100644
--- a/yudao-server/src/main/resources/application.yaml
+++ b/yudao-server/src/main/resources/application.yaml
@@ -185,7 +185,7 @@ yudao:
- cn.iocoder.yudao.module.mp.enums.ErrorCodeConstants
- cn.iocoder.yudao.module.im.enums.ErrorCodeConstants
tenant: # 多租户相关配置项
- enable: true
+ enable: false
ignore-urls:
- /admin-api/system/tenant/get-id-by-name # 基于名字获取租户,不许带租户编号
- /admin-api/system/tenant/get-by-website # 基于域名获取租户,不许带租户编号
--
libgit2 0.21.4