Commit 3696b666f42fccceee74d53c07bfb874f63dc461

Authored by 安浩浩
1 parent bb0b7056

修改:im 模块简单实现

Showing 33 changed files with 329 additions and 292 deletions
... ... @@ -15,8 +15,6 @@
15 15 <!-- 各种 module 拓展 -->
16 16 <module>yudao-module-system</module>
17 17 <module>yudao-module-infra</module>
18   - <module>yudao-module-im</module>
19   - <module>yudao-module-im/yudao-module-im-api</module>
20 18 <!-- <module>yudao-module-member</module>-->
21 19 <!-- <module>yudao-module-bpm</module>-->
22 20 <!-- <module>yudao-module-report</module>-->
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ConversationController.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/ImConversationController.java
... ... @@ -6,11 +6,11 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
8 8 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
9   -import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationPageReqVO;
10   -import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationRespVO;
11   -import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationSaveReqVO;
12   -import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ConversationDO;
13   -import cn.iocoder.yudao.module.im.service.conversation.ConversationService;
  9 +import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationPageReqVO;
  10 +import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationRespVO;
  11 +import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationSaveReqVO;
  12 +import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
  13 +import cn.iocoder.yudao.module.im.service.conversation.ImConversationService;
14 14 import io.swagger.v3.oas.annotations.Operation;
15 15 import io.swagger.v3.oas.annotations.Parameter;
16 16 import io.swagger.v3.oas.annotations.tags.Tag;
... ... @@ -31,23 +31,23 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E
31 31 @RestController
32 32 @RequestMapping("/im/conversation")
33 33 @Validated
34   -public class ConversationController {
  34 +public class ImConversationController {
35 35  
36 36 @Resource
37   - private ConversationService conversationService;
  37 + private ImConversationService imConversationService;
38 38  
39 39 @PostMapping("/create")
40 40 @Operation(summary = "创建会话")
41 41 @PreAuthorize("@ss.hasPermission('im:conversation:create')")
42   - public CommonResult<Long> createConversation(@Valid @RequestBody ConversationSaveReqVO createReqVO) {
43   - return success(conversationService.createConversation(createReqVO));
  42 + public CommonResult<Long> createConversation(@Valid @RequestBody ImConversationSaveReqVO createReqVO) {
  43 + return success(imConversationService.createConversation(createReqVO));
44 44 }
45 45  
46 46 @PutMapping("/update")
47 47 @Operation(summary = "更新会话")
48 48 @PreAuthorize("@ss.hasPermission('im:conversation:update')")
49   - public CommonResult<Boolean> updateConversation(@Valid @RequestBody ConversationSaveReqVO updateReqVO) {
50   - conversationService.updateConversation(updateReqVO);
  49 + public CommonResult<Boolean> updateConversation(@Valid @RequestBody ImConversationSaveReqVO updateReqVO) {
  50 + imConversationService.updateConversation(updateReqVO);
51 51 return success(true);
52 52 }
53 53  
... ... @@ -56,7 +56,7 @@ public class ConversationController {
56 56 @Parameter(name = "id", description = "编号", required = true)
57 57 @PreAuthorize("@ss.hasPermission('im:conversation:delete')")
58 58 public CommonResult<Boolean> deleteConversation(@RequestParam("id") Long id) {
59   - conversationService.deleteConversation(id);
  59 + imConversationService.deleteConversation(id);
60 60 return success(true);
61 61 }
62 62  
... ... @@ -64,30 +64,30 @@ public class ConversationController {
64 64 @Operation(summary = "获得会话")
65 65 @Parameter(name = "id", description = "编号", required = true, example = "1024")
66 66 @PreAuthorize("@ss.hasPermission('im:conversation:query')")
67   - public CommonResult<ConversationRespVO> getConversation(@RequestParam("id") Long id) {
68   - ConversationDO conversation = conversationService.getConversation(id);
69   - return success(BeanUtils.toBean(conversation, ConversationRespVO.class));
  67 + public CommonResult<ImConversationRespVO> getConversation(@RequestParam("id") Long id) {
  68 + ImConversationDO conversation = imConversationService.getConversation(id);
  69 + return success(BeanUtils.toBean(conversation, ImConversationRespVO.class));
70 70 }
71 71  
72 72 @GetMapping("/page")
73 73 @Operation(summary = "获得会话分页")
74 74 @PreAuthorize("@ss.hasPermission('im:conversation:query')")
75   - public CommonResult<PageResult<ConversationRespVO>> getConversationPage(@Valid ConversationPageReqVO pageReqVO) {
76   - PageResult<ConversationDO> pageResult = conversationService.getConversationPage(pageReqVO);
77   - return success(BeanUtils.toBean(pageResult, ConversationRespVO.class));
  75 + public CommonResult<PageResult<ImConversationRespVO>> getConversationPage(@Valid ImConversationPageReqVO pageReqVO) {
  76 + PageResult<ImConversationDO> pageResult = imConversationService.getConversationPage(pageReqVO);
  77 + return success(BeanUtils.toBean(pageResult, ImConversationRespVO.class));
78 78 }
79 79  
80 80 @GetMapping("/export-excel")
81 81 @Operation(summary = "导出会话 Excel")
82 82 @PreAuthorize("@ss.hasPermission('im:conversation:export')")
83 83 @OperateLog(type = EXPORT)
84   - public void exportConversationExcel(@Valid ConversationPageReqVO pageReqVO,
  84 + public void exportConversationExcel(@Valid ImConversationPageReqVO pageReqVO,
85 85 HttpServletResponse response) throws IOException {
86 86 pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
87   - List<ConversationDO> list = conversationService.getConversationPage(pageReqVO).getList();
  87 + List<ImConversationDO> list = imConversationService.getConversationPage(pageReqVO).getList();
88 88 // 导出 Excel
89   - ExcelUtils.write(response, "会话.xls", "数据", ConversationRespVO.class,
90   - BeanUtils.toBean(list, ConversationRespVO.class));
  89 + ExcelUtils.write(response, "会话.xls", "数据", ImConversationRespVO.class,
  90 + BeanUtils.toBean(list, ImConversationRespVO.class));
91 91 }
92 92  
93 93 }
94 94 \ No newline at end of file
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationPageReqVO.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationPageReqVO.java
... ... @@ -15,13 +15,13 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
15 15 @Data
16 16 @EqualsAndHashCode(callSuper = true)
17 17 @ToString(callSuper = true)
18   -public class ConversationPageReqVO extends PageParam {
  18 +public class ImConversationPageReqVO extends PageParam {
19 19  
20 20 @Schema(description = "所属用户", example = "11545")
21 21 private Long userId;
22 22  
23 23 @Schema(description = "类型:1 单聊;2 群聊;4 通知会话(预留)", example = "1")
24   - private Boolean conversationType;
  24 + private Integer conversationType;
25 25  
26 26 @Schema(description = "单聊时,用户编号;群聊时,群编号", example = "21454")
27 27 private String targetId;
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationRespVO.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationRespVO.java
... ... @@ -10,7 +10,7 @@ import java.time.LocalDateTime;
10 10 @Schema(description = "管理后台 - 会话 Response VO")
11 11 @Data
12 12 @ExcelIgnoreUnannotated
13   -public class ConversationRespVO {
  13 +public class ImConversationRespVO {
14 14  
15 15 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13905")
16 16 @ExcelProperty("编号")
... ... @@ -22,7 +22,7 @@ public class ConversationRespVO {
22 22  
23 23 @Schema(description = "类型:1 单聊;2 群聊;4 通知会话(预留)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
24 24 @ExcelProperty("类型:1 单聊;2 群聊;4 通知会话(预留)")
25   - private Boolean conversationType;
  25 + private Integer conversationType;
26 26  
27 27 @Schema(description = "单聊时,用户编号;群聊时,群编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21454")
28 28 @ExcelProperty("单聊时,用户编号;群聊时,群编号")
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ConversationSaveReqVO.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/conversation/vo/ImConversationSaveReqVO.java
... ... @@ -9,7 +9,7 @@ import java.time.LocalDateTime;
9 9  
10 10 @Schema(description = "管理后台 - 会话新增/修改 Request VO")
11 11 @Data
12   -public class ConversationSaveReqVO {
  12 +public class ImConversationSaveReqVO {
13 13  
14 14 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13905")
15 15 private Long id;
... ... @@ -20,7 +20,7 @@ public class ConversationSaveReqVO {
20 20  
21 21 @Schema(description = "类型:1 单聊;2 群聊;4 通知会话(预留)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
22 22 @NotNull(message = "类型:1 单聊;2 群聊;4 通知会话(预留)不能为空")
23   - private Boolean conversationType;
  23 + private Integer conversationType;
24 24  
25 25 @Schema(description = "单聊时,用户编号;群聊时,群编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21454")
26 26 @NotEmpty(message = "单聊时,用户编号;群聊时,群编号不能为空")
... ...
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;
9 9 import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxPageReqVO;
10 10 import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxRespVO;
11 11 import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxSaveReqVO;
12   -import cn.iocoder.yudao.module.im.dal.dataobject.inbox.InboxDO;
  12 +import cn.iocoder.yudao.module.im.dal.dataobject.inbox.ImInboxDO;
13 13 import cn.iocoder.yudao.module.im.service.inbox.InboxService;
14 14 import io.swagger.v3.oas.annotations.Operation;
15 15 import io.swagger.v3.oas.annotations.Parameter;
... ... @@ -65,7 +65,7 @@ public class InboxController {
65 65 @Parameter(name = "id", description = "编号", required = true, example = "1024")
66 66 @PreAuthorize("@ss.hasPermission('im:inbox:query')")
67 67 public CommonResult<InboxRespVO> getInbox(@RequestParam("id") Long id) {
68   - InboxDO inbox = inboxService.getInbox(id);
  68 + ImInboxDO inbox = inboxService.getInbox(id);
69 69 return success(BeanUtils.toBean(inbox, InboxRespVO.class));
70 70 }
71 71  
... ... @@ -73,7 +73,7 @@ public class InboxController {
73 73 @Operation(summary = "获得收件箱分页")
74 74 @PreAuthorize("@ss.hasPermission('im:inbox:query')")
75 75 public CommonResult<PageResult<InboxRespVO>> getInboxPage(@Valid InboxPageReqVO pageReqVO) {
76   - PageResult<InboxDO> pageResult = inboxService.getInboxPage(pageReqVO);
  76 + PageResult<ImInboxDO> pageResult = inboxService.getInboxPage(pageReqVO);
77 77 return success(BeanUtils.toBean(pageResult, InboxRespVO.class));
78 78 }
79 79  
... ... @@ -84,7 +84,7 @@ public class InboxController {
84 84 public void exportInboxExcel(@Valid InboxPageReqVO pageReqVO,
85 85 HttpServletResponse response) throws IOException {
86 86 pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
87   - List<InboxDO> list = inboxService.getInboxPage(pageReqVO).getList();
  87 + List<ImInboxDO> list = inboxService.getInboxPage(pageReqVO).getList();
88 88 // 导出 Excel
89 89 ExcelUtils.write(response, "收件箱.xls", "数据", InboxRespVO.class,
90 90 BeanUtils.toBean(list, InboxRespVO.class));
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/MessageController.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/ImMessageController.java
... ... @@ -6,11 +6,11 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
8 8 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
9   -import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessagePageReqVO;
10   -import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessageRespVO;
11   -import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessageSaveReqVO;
12   -import cn.iocoder.yudao.module.im.dal.dataobject.message.MessageDO;
13   -import cn.iocoder.yudao.module.im.service.message.MessageService;
  9 +import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessagePageReqVO;
  10 +import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageRespVO;
  11 +import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageSaveReqVO;
  12 +import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
  13 +import cn.iocoder.yudao.module.im.service.message.ImMessageService;
14 14 import io.swagger.v3.oas.annotations.Operation;
15 15 import io.swagger.v3.oas.annotations.Parameter;
16 16 import io.swagger.v3.oas.annotations.tags.Tag;
... ... @@ -31,23 +31,23 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E
31 31 @RestController
32 32 @RequestMapping("/im/message")
33 33 @Validated
34   -public class MessageController {
  34 +public class ImMessageController {
35 35  
36 36 @Resource
37   - private MessageService messageService;
  37 + private ImMessageService imMessageService;
38 38  
39 39 @PostMapping("/create")
40 40 @Operation(summary = "创建消息")
41 41 @PreAuthorize("@ss.hasPermission('im:message:create')")
42   - public CommonResult<Long> createMessage(@Valid @RequestBody MessageSaveReqVO createReqVO) {
43   - return success(messageService.createMessage(createReqVO));
  42 + public CommonResult<Long> createMessage(@Valid @RequestBody ImMessageSaveReqVO createReqVO) {
  43 + return success(imMessageService.createMessage(createReqVO));
44 44 }
45 45  
46 46 @PutMapping("/update")
47 47 @Operation(summary = "更新消息")
48 48 @PreAuthorize("@ss.hasPermission('im:message:update')")
49   - public CommonResult<Boolean> updateMessage(@Valid @RequestBody MessageSaveReqVO updateReqVO) {
50   - messageService.updateMessage(updateReqVO);
  49 + public CommonResult<Boolean> updateMessage(@Valid @RequestBody ImMessageSaveReqVO updateReqVO) {
  50 + imMessageService.updateMessage(updateReqVO);
51 51 return success(true);
52 52 }
53 53  
... ... @@ -56,7 +56,7 @@ public class MessageController {
56 56 @Parameter(name = "id", description = "编号", required = true)
57 57 @PreAuthorize("@ss.hasPermission('im:message:delete')")
58 58 public CommonResult<Boolean> deleteMessage(@RequestParam("id") Long id) {
59   - messageService.deleteMessage(id);
  59 + imMessageService.deleteMessage(id);
60 60 return success(true);
61 61 }
62 62  
... ... @@ -64,36 +64,36 @@ public class MessageController {
64 64 @Operation(summary = "获得消息")
65 65 @Parameter(name = "id", description = "编号", required = true, example = "1024")
66 66 @PreAuthorize("@ss.hasPermission('im:message:query')")
67   - public CommonResult<MessageRespVO> getMessage(@RequestParam("id") Long id) {
68   - MessageDO message = messageService.getMessage(id);
69   - return success(BeanUtils.toBean(message, MessageRespVO.class));
  67 + public CommonResult<ImMessageRespVO> getMessage(@RequestParam("id") Long id) {
  68 + ImMessageDO message = imMessageService.getMessage(id);
  69 + return success(BeanUtils.toBean(message, ImMessageRespVO.class));
70 70 }
71 71  
72 72 @GetMapping("/page")
73 73 @Operation(summary = "获得消息分页")
74 74 @PreAuthorize("@ss.hasPermission('im:message:query')")
75   - public CommonResult<PageResult<MessageRespVO>> getMessagePage(@Valid MessagePageReqVO pageReqVO) {
76   - PageResult<MessageDO> pageResult = messageService.getMessagePage(pageReqVO);
77   - return success(BeanUtils.toBean(pageResult, MessageRespVO.class));
  75 + public CommonResult<PageResult<ImMessageRespVO>> getMessagePage(@Valid ImMessagePageReqVO pageReqVO) {
  76 + PageResult<ImMessageDO> pageResult = imMessageService.getMessagePage(pageReqVO);
  77 + return success(BeanUtils.toBean(pageResult, ImMessageRespVO.class));
78 78 }
79 79  
80 80 @GetMapping("/export-excel")
81 81 @Operation(summary = "导出消息 Excel")
82 82 @PreAuthorize("@ss.hasPermission('im:message:export')")
83 83 @OperateLog(type = EXPORT)
84   - public void exportMessageExcel(@Valid MessagePageReqVO pageReqVO,
  84 + public void exportMessageExcel(@Valid ImMessagePageReqVO pageReqVO,
85 85 HttpServletResponse response) throws IOException {
86 86 pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
87   - List<MessageDO> list = messageService.getMessagePage(pageReqVO).getList();
  87 + List<ImMessageDO> list = imMessageService.getMessagePage(pageReqVO).getList();
88 88 // 导出 Excel
89   - ExcelUtils.write(response, "消息.xls", "数据", MessageRespVO.class,
90   - BeanUtils.toBean(list, MessageRespVO.class));
  89 + ExcelUtils.write(response, "消息.xls", "数据", ImMessageRespVO.class,
  90 + BeanUtils.toBean(list, ImMessageRespVO.class));
91 91 }
92 92  
93 93 @PostMapping("/send")
94 94 @Operation(summary = "发送私聊消息")
95   - public CommonResult<Long> sendMessage(@Valid @RequestBody MessageSaveReqVO messageSaveReqVO) {
96   - return success(messageService.sendPrivateMessage(messageSaveReqVO));
  95 + public CommonResult<Long> sendMessage(@Valid @RequestBody ImMessageSaveReqVO imMessageSaveReqVO) {
  96 + return success(imMessageService.sendPrivateMessage(imMessageSaveReqVO));
97 97 }
98 98  
99 99 }
100 100 \ No newline at end of file
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessagePageReqVO.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessagePageReqVO.java
... ... @@ -15,7 +15,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
15 15 @Data
16 16 @EqualsAndHashCode(callSuper = true)
17 17 @ToString(callSuper = true)
18   -public class MessagePageReqVO extends PageParam {
  18 +public class ImMessagePageReqVO extends PageParam {
19 19  
20 20 @Schema(description = "客户端消息编号 uuid,用于排重", example = "3331")
21 21 private String clientMessageId;
... ... @@ -33,13 +33,13 @@ public class MessagePageReqVO extends PageParam {
33 33 private String senderAvatar;
34 34  
35 35 @Schema(description = "会话类型", example = "2")
36   - private Boolean conversationType;
  36 + private Integer conversationType;
37 37  
38 38 @Schema(description = "会话标志")
39 39 private String conversationNo;
40 40  
41 41 @Schema(description = "消息类型", example = "1")
42   - private Boolean contentType;
  42 + private Integer contentType;
43 43  
44 44 @Schema(description = "消息内容")
45 45 private String content;
... ... @@ -49,7 +49,7 @@ public class MessagePageReqVO extends PageParam {
49 49 private LocalDateTime[] sendTime;
50 50  
51 51 @Schema(description = "消息来源 100-用户发送;200-系统发送(一般是通知);")
52   - private Boolean sendFrom;
  52 + private Integer sendFrom;
53 53  
54 54 @Schema(description = "创建时间")
55 55 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageRespVO.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageRespVO.java
... ... @@ -10,7 +10,7 @@ import java.time.LocalDateTime;
10 10 @Schema(description = "管理后台 - 消息 Response VO")
11 11 @Data
12 12 @ExcelIgnoreUnannotated
13   -public class MessageRespVO {
  13 +public class ImMessageRespVO {
14 14  
15 15 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30713")
16 16 @ExcelProperty("编号")
... ... @@ -38,7 +38,7 @@ public class MessageRespVO {
38 38  
39 39 @Schema(description = "会话类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
40 40 @ExcelProperty("会话类型")
41   - private Boolean conversationType;
  41 + private Integer conversationType;
42 42  
43 43 @Schema(description = "会话标志", requiredMode = Schema.RequiredMode.REQUIRED)
44 44 @ExcelProperty("会话标志")
... ... @@ -46,7 +46,7 @@ public class MessageRespVO {
46 46  
47 47 @Schema(description = "消息类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
48 48 @ExcelProperty("消息类型")
49   - private Boolean contentType;
  49 + private Integer contentType;
50 50  
51 51 @Schema(description = "消息内容", requiredMode = Schema.RequiredMode.REQUIRED)
52 52 @ExcelProperty("消息内容")
... ... @@ -58,7 +58,7 @@ public class MessageRespVO {
58 58  
59 59 @Schema(description = "消息来源 100-用户发送;200-系统发送(一般是通知);", requiredMode = Schema.RequiredMode.REQUIRED)
60 60 @ExcelProperty("消息来源 100-用户发送;200-系统发送(一般是通知);")
61   - private Boolean sendFrom;
  61 + private Integer sendFrom;
62 62  
63 63 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
64 64 @ExcelProperty("创建时间")
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/MessageSaveReqVO.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/message/vo/ImMessageSaveReqVO.java
... ... @@ -9,7 +9,7 @@ import java.time.LocalDateTime;
9 9  
10 10 @Schema(description = "管理后台 - 消息新增/修改 Request VO")
11 11 @Data
12   -public class MessageSaveReqVO {
  12 +public class ImMessageSaveReqVO {
13 13  
14 14 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30713")
15 15 private Long id;
... ... @@ -36,7 +36,7 @@ public class MessageSaveReqVO {
36 36  
37 37 @Schema(description = "会话类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
38 38 @NotNull(message = "会话类型不能为空")
39   - private Boolean conversationType;
  39 + private Integer conversationType;
40 40  
41 41 @Schema(description = "会话标志", requiredMode = Schema.RequiredMode.REQUIRED)
42 42 @NotEmpty(message = "会话标志不能为空")
... ... @@ -44,18 +44,17 @@ public class MessageSaveReqVO {
44 44  
45 45 @Schema(description = "消息类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
46 46 @NotNull(message = "消息类型不能为空")
47   - private Boolean contentType;
  47 + private Integer contentType;
48 48  
49 49 @Schema(description = "消息内容", requiredMode = Schema.RequiredMode.REQUIRED)
50 50 @NotEmpty(message = "消息内容不能为空")
51 51 private String content;
52 52  
53 53 @Schema(description = "发送时间", requiredMode = Schema.RequiredMode.REQUIRED)
54   - @NotNull(message = "发送时间不能为空")
55 54 private LocalDateTime sendTime;
56 55  
57 56 @Schema(description = "消息来源 100-用户发送;200-系统发送(一般是通知);", requiredMode = Schema.RequiredMode.REQUIRED)
58 57 @NotNull(message = "消息来源 100-用户发送;200-系统发送(一般是通知);不能为空")
59   - private Boolean sendFrom;
  58 + private Integer sendFrom;
60 59  
61 60 }
62 61 \ No newline at end of file
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ConversationDO.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/conversation/ImConversationDO.java
... ... @@ -21,7 +21,7 @@ import java.time.LocalDateTime;
21 21 @Builder
22 22 @NoArgsConstructor
23 23 @AllArgsConstructor
24   -public class ConversationDO extends BaseDO {
  24 +public class ImConversationDO extends BaseDO {
25 25  
26 26 /**
27 27 * 编号
... ... @@ -35,7 +35,7 @@ public class ConversationDO extends BaseDO {
35 35 /**
36 36 * 类型:1 单聊;2 群聊;4 通知会话(预留)
37 37 */
38   - private Boolean conversationType;
  38 + private Integer conversationType;
39 39 /**
40 40 * 单聊时,用户编号;群聊时,群编号
41 41 */
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/InboxDO.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/inbox/ImInboxDO.java
... ... @@ -19,7 +19,7 @@ import lombok.*;
19 19 @Builder
20 20 @NoArgsConstructor
21 21 @AllArgsConstructor
22   -public class InboxDO extends BaseDO {
  22 +public class ImInboxDO extends BaseDO {
23 23  
24 24 /**
25 25 * 编号
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/MessageDO.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/message/ImMessageDO.java
... ... @@ -21,7 +21,7 @@ import java.time.LocalDateTime;
21 21 @Builder
22 22 @NoArgsConstructor
23 23 @AllArgsConstructor
24   -public class MessageDO extends BaseDO {
  24 +public class ImMessageDO extends BaseDO {
25 25  
26 26 /**
27 27 * 编号
... ... @@ -51,7 +51,7 @@ public class MessageDO extends BaseDO {
51 51 /**
52 52 * 会话类型
53 53 */
54   - private Boolean conversationType;
  54 + private Integer conversationType;
55 55 /**
56 56 * 会话标志
57 57 */
... ... @@ -59,7 +59,7 @@ public class MessageDO extends BaseDO {
59 59 /**
60 60 * 消息类型
61 61 */
62   - private Boolean contentType;
  62 + private Integer contentType;
63 63 /**
64 64 * 消息内容
65 65 */
... ... @@ -71,6 +71,6 @@ public class MessageDO extends BaseDO {
71 71 /**
72 72 * 消息来源 100-用户发送;200-系统发送(一般是通知);
73 73 */
74   - private Boolean sendFrom;
  74 + private Integer sendFrom;
75 75  
76 76 }
77 77 \ No newline at end of file
... ...
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;
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6   -import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationPageReqVO;
7   -import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ConversationDO;
  6 +import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationPageReqVO;
  7 +import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
10 10 /**
... ... @@ -13,18 +13,18 @@ import org.apache.ibatis.annotations.Mapper;
13 13 * @author 芋道源码
14 14 */
15 15 @Mapper
16   -public interface ConversationMapper extends BaseMapperX<ConversationDO> {
  16 +public interface ConversationMapper extends BaseMapperX<ImConversationDO> {
17 17  
18   - default PageResult<ConversationDO> selectPage(ConversationPageReqVO reqVO) {
19   - return selectPage(reqVO, new LambdaQueryWrapperX<ConversationDO>()
20   - .eqIfPresent(ConversationDO::getUserId, reqVO.getUserId())
21   - .eqIfPresent(ConversationDO::getConversationType, reqVO.getConversationType())
22   - .eqIfPresent(ConversationDO::getTargetId, reqVO.getTargetId())
23   - .eqIfPresent(ConversationDO::getNo, reqVO.getNo())
24   - .eqIfPresent(ConversationDO::getPinned, reqVO.getPinned())
25   - .betweenIfPresent(ConversationDO::getLastReadTime, reqVO.getLastReadTime())
26   - .betweenIfPresent(ConversationDO::getCreateTime, reqVO.getCreateTime())
27   - .orderByDesc(ConversationDO::getId));
  18 + default PageResult<ImConversationDO> selectPage(ImConversationPageReqVO reqVO) {
  19 + return selectPage(reqVO, new LambdaQueryWrapperX<ImConversationDO>()
  20 + .eqIfPresent(ImConversationDO::getUserId, reqVO.getUserId())
  21 + .eqIfPresent(ImConversationDO::getConversationType, reqVO.getConversationType())
  22 + .eqIfPresent(ImConversationDO::getTargetId, reqVO.getTargetId())
  23 + .eqIfPresent(ImConversationDO::getNo, reqVO.getNo())
  24 + .eqIfPresent(ImConversationDO::getPinned, reqVO.getPinned())
  25 + .betweenIfPresent(ImConversationDO::getLastReadTime, reqVO.getLastReadTime())
  26 + .betweenIfPresent(ImConversationDO::getCreateTime, reqVO.getCreateTime())
  27 + .orderByDesc(ImConversationDO::getId));
28 28 }
29 29  
30 30 }
31 31 \ No newline at end of file
... ...
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;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 6 import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxPageReqVO;
7   -import cn.iocoder.yudao.module.im.dal.dataobject.inbox.InboxDO;
  7 +import cn.iocoder.yudao.module.im.dal.dataobject.inbox.ImInboxDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
10 10 /**
... ... @@ -13,15 +13,15 @@ import org.apache.ibatis.annotations.Mapper;
13 13 * @author 芋道源码
14 14 */
15 15 @Mapper
16   -public interface InboxMapper extends BaseMapperX<InboxDO> {
  16 +public interface InboxMapper extends BaseMapperX<ImInboxDO> {
17 17  
18   - default PageResult<InboxDO> selectPage(InboxPageReqVO reqVO) {
19   - return selectPage(reqVO, new LambdaQueryWrapperX<InboxDO>()
20   - .eqIfPresent(InboxDO::getUserId, reqVO.getUserId())
21   - .eqIfPresent(InboxDO::getMessageId, reqVO.getMessageId())
22   - .eqIfPresent(InboxDO::getSequence, reqVO.getSequence())
23   - .betweenIfPresent(InboxDO::getCreateTime, reqVO.getCreateTime())
24   - .orderByDesc(InboxDO::getId));
  18 + default PageResult<ImInboxDO> selectPage(InboxPageReqVO reqVO) {
  19 + return selectPage(reqVO, new LambdaQueryWrapperX<ImInboxDO>()
  20 + .eqIfPresent(ImInboxDO::getUserId, reqVO.getUserId())
  21 + .eqIfPresent(ImInboxDO::getMessageId, reqVO.getMessageId())
  22 + .eqIfPresent(ImInboxDO::getSequence, reqVO.getSequence())
  23 + .betweenIfPresent(ImInboxDO::getCreateTime, reqVO.getCreateTime())
  24 + .orderByDesc(ImInboxDO::getId));
25 25 }
26 26  
27 27 }
28 28 \ No newline at end of file
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/ImMessageMapper.java 0 → 100755
  1 +package cn.iocoder.yudao.module.im.dal.mysql.message;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  5 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessagePageReqVO;
  7 +import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
  8 +import org.apache.ibatis.annotations.Mapper;
  9 +
  10 +/**
  11 + * 消息 Mapper
  12 + *
  13 + * @author 芋道源码
  14 + */
  15 +@Mapper
  16 +public interface ImMessageMapper extends BaseMapperX<ImMessageDO> {
  17 +
  18 + default PageResult<ImMessageDO> selectPage(ImMessagePageReqVO reqVO) {
  19 + return selectPage(reqVO, new LambdaQueryWrapperX<ImMessageDO>()
  20 + .eqIfPresent(ImMessageDO::getClientMessageId, reqVO.getClientMessageId())
  21 + .eqIfPresent(ImMessageDO::getSenderId, reqVO.getSenderId())
  22 + .eqIfPresent(ImMessageDO::getReceiverId, reqVO.getReceiverId())
  23 + .likeIfPresent(ImMessageDO::getSenderNickname, reqVO.getSenderNickname())
  24 + .eqIfPresent(ImMessageDO::getSenderAvatar, reqVO.getSenderAvatar())
  25 + .eqIfPresent(ImMessageDO::getConversationType, reqVO.getConversationType())
  26 + .eqIfPresent(ImMessageDO::getConversationNo, reqVO.getConversationNo())
  27 + .eqIfPresent(ImMessageDO::getContentType, reqVO.getContentType())
  28 + .eqIfPresent(ImMessageDO::getContent, reqVO.getContent())
  29 + .betweenIfPresent(ImMessageDO::getSendTime, reqVO.getSendTime())
  30 + .eqIfPresent(ImMessageDO::getSendFrom, reqVO.getSendFrom())
  31 + .betweenIfPresent(ImMessageDO::getCreateTime, reqVO.getCreateTime())
  32 + .orderByDesc(ImMessageDO::getId));
  33 + }
  34 +
  35 +}
0 36 \ No newline at end of file
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/message/MessageMapper.java deleted
1   -package cn.iocoder.yudao.module.im.dal.mysql.message;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5   -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6   -import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessagePageReqVO;
7   -import cn.iocoder.yudao.module.im.dal.dataobject.message.MessageDO;
8   -import org.apache.ibatis.annotations.Mapper;
9   -
10   -/**
11   - * 消息 Mapper
12   - *
13   - * @author 芋道源码
14   - */
15   -@Mapper
16   -public interface MessageMapper extends BaseMapperX<MessageDO> {
17   -
18   - default PageResult<MessageDO> selectPage(MessagePageReqVO reqVO) {
19   - return selectPage(reqVO, new LambdaQueryWrapperX<MessageDO>()
20   - .eqIfPresent(MessageDO::getClientMessageId, reqVO.getClientMessageId())
21   - .eqIfPresent(MessageDO::getSenderId, reqVO.getSenderId())
22   - .eqIfPresent(MessageDO::getReceiverId, reqVO.getReceiverId())
23   - .likeIfPresent(MessageDO::getSenderNickname, reqVO.getSenderNickname())
24   - .eqIfPresent(MessageDO::getSenderAvatar, reqVO.getSenderAvatar())
25   - .eqIfPresent(MessageDO::getConversationType, reqVO.getConversationType())
26   - .eqIfPresent(MessageDO::getConversationNo, reqVO.getConversationNo())
27   - .eqIfPresent(MessageDO::getContentType, reqVO.getContentType())
28   - .eqIfPresent(MessageDO::getContent, reqVO.getContent())
29   - .betweenIfPresent(MessageDO::getSendTime, reqVO.getSendTime())
30   - .eqIfPresent(MessageDO::getSendFrom, reqVO.getSendFrom())
31   - .betweenIfPresent(MessageDO::getCreateTime, reqVO.getCreateTime())
32   - .orderByDesc(MessageDO::getId));
33   - }
34   -
35   -}
36 0 \ No newline at end of file
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationService.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationService.java
1 1 package cn.iocoder.yudao.module.im.service.conversation;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationPageReqVO;
5   -import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationSaveReqVO;
6   -import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ConversationDO;
  4 +import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationPageReqVO;
  5 +import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationSaveReqVO;
  6 +import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
7 7 import jakarta.validation.Valid;
8 8  
9 9 /**
... ... @@ -11,7 +11,7 @@ import jakarta.validation.Valid;
11 11 *
12 12 * @author 芋道源码
13 13 */
14   -public interface ConversationService {
  14 +public interface ImConversationService {
15 15  
16 16 /**
17 17 * 创建会话
... ... @@ -19,14 +19,14 @@ public interface ConversationService {
19 19 * @param createReqVO 创建信息
20 20 * @return 编号
21 21 */
22   - Long createConversation(@Valid ConversationSaveReqVO createReqVO);
  22 + Long createConversation(@Valid ImConversationSaveReqVO createReqVO);
23 23  
24 24 /**
25 25 * 更新会话
26 26 *
27 27 * @param updateReqVO 更新信息
28 28 */
29   - void updateConversation(@Valid ConversationSaveReqVO updateReqVO);
  29 + void updateConversation(@Valid ImConversationSaveReqVO updateReqVO);
30 30  
31 31 /**
32 32 * 删除会话
... ... @@ -41,7 +41,7 @@ public interface ConversationService {
41 41 * @param id 编号
42 42 * @return 会话
43 43 */
44   - ConversationDO getConversation(Long id);
  44 + ImConversationDO getConversation(Long id);
45 45  
46 46 /**
47 47 * 获得会话分页
... ... @@ -49,6 +49,6 @@ public interface ConversationService {
49 49 * @param pageReqVO 分页查询
50 50 * @return 会话分页
51 51 */
52   - PageResult<ConversationDO> getConversationPage(ConversationPageReqVO pageReqVO);
  52 + PageResult<ImConversationDO> getConversationPage(ImConversationPageReqVO pageReqVO);
53 53  
54 54 }
55 55 \ No newline at end of file
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImpl.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImpl.java
... ... @@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.im.service.conversation;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5   -import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationPageReqVO;
6   -import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ConversationSaveReqVO;
7   -import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ConversationDO;
  5 +import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationPageReqVO;
  6 +import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationSaveReqVO;
  7 +import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
8 8 import cn.iocoder.yudao.module.im.dal.mysql.conversation.ConversationMapper;
9 9 import jakarta.annotation.Resource;
10 10 import org.springframework.stereotype.Service;
... ... @@ -20,26 +20,26 @@ import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.CONVERSATION_N
20 20 */
21 21 @Service
22 22 @Validated
23   -public class ConversationServiceImpl implements ConversationService {
  23 +public class ImConversationServiceImpl implements ImConversationService {
24 24  
25 25 @Resource
26 26 private ConversationMapper conversationMapper;
27 27  
28 28 @Override
29   - public Long createConversation(ConversationSaveReqVO createReqVO) {
  29 + public Long createConversation(ImConversationSaveReqVO createReqVO) {
30 30 // 插入
31   - ConversationDO conversation = BeanUtils.toBean(createReqVO, ConversationDO.class);
  31 + ImConversationDO conversation = BeanUtils.toBean(createReqVO, ImConversationDO.class);
32 32 conversationMapper.insert(conversation);
33 33 // 返回
34 34 return conversation.getId();
35 35 }
36 36  
37 37 @Override
38   - public void updateConversation(ConversationSaveReqVO updateReqVO) {
  38 + public void updateConversation(ImConversationSaveReqVO updateReqVO) {
39 39 // 校验存在
40 40 validateConversationExists(updateReqVO.getId());
41 41 // 更新
42   - ConversationDO updateObj = BeanUtils.toBean(updateReqVO, ConversationDO.class);
  42 + ImConversationDO updateObj = BeanUtils.toBean(updateReqVO, ImConversationDO.class);
43 43 conversationMapper.updateById(updateObj);
44 44 }
45 45  
... ... @@ -58,12 +58,12 @@ public class ConversationServiceImpl implements ConversationService {
58 58 }
59 59  
60 60 @Override
61   - public ConversationDO getConversation(Long id) {
  61 + public ImConversationDO getConversation(Long id) {
62 62 return conversationMapper.selectById(id);
63 63 }
64 64  
65 65 @Override
66   - public PageResult<ConversationDO> getConversationPage(ConversationPageReqVO pageReqVO) {
  66 + public PageResult<ImConversationDO> getConversationPage(ImConversationPageReqVO pageReqVO) {
67 67 return conversationMapper.selectPage(pageReqVO);
68 68 }
69 69  
... ...
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;
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxPageReqVO;
5 5 import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxSaveReqVO;
6   -import cn.iocoder.yudao.module.im.dal.dataobject.inbox.InboxDO;
  6 +import cn.iocoder.yudao.module.im.dal.dataobject.inbox.ImInboxDO;
7 7 import jakarta.validation.Valid;
8 8  
9 9 /**
... ... @@ -41,7 +41,7 @@ public interface InboxService {
41 41 * @param id 编号
42 42 * @return 收件箱
43 43 */
44   - InboxDO getInbox(Long id);
  44 + ImInboxDO getInbox(Long id);
45 45  
46 46 /**
47 47 * 获得收件箱分页
... ... @@ -49,6 +49,6 @@ public interface InboxService {
49 49 * @param pageReqVO 分页查询
50 50 * @return 收件箱分页
51 51 */
52   - PageResult<InboxDO> getInboxPage(InboxPageReqVO pageReqVO);
  52 + PageResult<ImInboxDO> getInboxPage(InboxPageReqVO pageReqVO);
53 53  
54 54 }
55 55 \ No newline at end of file
... ...
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;
4 4 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 5 import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxPageReqVO;
6 6 import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.InboxSaveReqVO;
7   -import cn.iocoder.yudao.module.im.dal.dataobject.inbox.InboxDO;
  7 +import cn.iocoder.yudao.module.im.dal.dataobject.inbox.ImInboxDO;
8 8 import cn.iocoder.yudao.module.im.dal.mysql.inbox.InboxMapper;
9 9 import jakarta.annotation.Resource;
10 10 import org.springframework.stereotype.Service;
... ... @@ -28,7 +28,7 @@ public class InboxServiceImpl implements InboxService {
28 28 @Override
29 29 public Long createInbox(InboxSaveReqVO createReqVO) {
30 30 // 插入
31   - InboxDO inbox = BeanUtils.toBean(createReqVO, InboxDO.class);
  31 + ImInboxDO inbox = BeanUtils.toBean(createReqVO, ImInboxDO.class);
32 32 inboxMapper.insert(inbox);
33 33 // 返回
34 34 return inbox.getId();
... ... @@ -39,7 +39,7 @@ public class InboxServiceImpl implements InboxService {
39 39 // 校验存在
40 40 validateInboxExists(updateReqVO.getId());
41 41 // 更新
42   - InboxDO updateObj = BeanUtils.toBean(updateReqVO, InboxDO.class);
  42 + ImInboxDO updateObj = BeanUtils.toBean(updateReqVO, ImInboxDO.class);
43 43 inboxMapper.updateById(updateObj);
44 44 }
45 45  
... ... @@ -58,12 +58,12 @@ public class InboxServiceImpl implements InboxService {
58 58 }
59 59  
60 60 @Override
61   - public InboxDO getInbox(Long id) {
  61 + public ImInboxDO getInbox(Long id) {
62 62 return inboxMapper.selectById(id);
63 63 }
64 64  
65 65 @Override
66   - public PageResult<InboxDO> getInboxPage(InboxPageReqVO pageReqVO) {
  66 + public PageResult<ImInboxDO> getInboxPage(InboxPageReqVO pageReqVO) {
67 67 return inboxMapper.selectPage(pageReqVO);
68 68 }
69 69  
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageService.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageService.java
1 1 package cn.iocoder.yudao.module.im.service.message;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessagePageReqVO;
5   -import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessageSaveReqVO;
6   -import cn.iocoder.yudao.module.im.dal.dataobject.message.MessageDO;
  4 +import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessagePageReqVO;
  5 +import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageSaveReqVO;
  6 +import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
7 7 import jakarta.validation.Valid;
8 8  
9 9 /**
... ... @@ -11,7 +11,7 @@ import jakarta.validation.Valid;
11 11 *
12 12 * @author 芋道源码
13 13 */
14   -public interface MessageService {
  14 +public interface ImMessageService {
15 15  
16 16 /**
17 17 * 创建消息
... ... @@ -19,14 +19,14 @@ public interface MessageService {
19 19 * @param createReqVO 创建信息
20 20 * @return 编号
21 21 */
22   - Long createMessage(@Valid MessageSaveReqVO createReqVO);
  22 + Long createMessage(@Valid ImMessageSaveReqVO createReqVO);
23 23  
24 24 /**
25 25 * 更新消息
26 26 *
27 27 * @param updateReqVO 更新信息
28 28 */
29   - void updateMessage(@Valid MessageSaveReqVO updateReqVO);
  29 + void updateMessage(@Valid ImMessageSaveReqVO updateReqVO);
30 30  
31 31 /**
32 32 * 删除消息
... ... @@ -41,7 +41,7 @@ public interface MessageService {
41 41 * @param id 编号
42 42 * @return 消息
43 43 */
44   - MessageDO getMessage(Long id);
  44 + ImMessageDO getMessage(Long id);
45 45  
46 46 /**
47 47 * 获得消息分页
... ... @@ -49,12 +49,12 @@ public interface MessageService {
49 49 * @param pageReqVO 分页查询
50 50 * @return 消息分页
51 51 */
52   - PageResult<MessageDO> getMessagePage(MessagePageReqVO pageReqVO);
  52 + PageResult<ImMessageDO> getMessagePage(ImMessagePageReqVO pageReqVO);
53 53  
54 54 /**
55 55 * 发送私聊消息
56   - * @param messageSaveReqVO 消息信息
  56 + * @param imMessageSaveReqVO 消息信息
57 57 * @return 消息编号
58 58 */
59   - Long sendPrivateMessage(MessageSaveReqVO messageSaveReqVO);
  59 + Long sendPrivateMessage(ImMessageSaveReqVO imMessageSaveReqVO);
60 60 }
61 61 \ No newline at end of file
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImpl.java renamed to yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImpl.java
... ... @@ -2,10 +2,10 @@ package cn.iocoder.yudao.module.im.service.message;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5   -import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessagePageReqVO;
6   -import cn.iocoder.yudao.module.im.controller.admin.message.vo.MessageSaveReqVO;
7   -import cn.iocoder.yudao.module.im.dal.dataobject.message.MessageDO;
8   -import cn.iocoder.yudao.module.im.dal.mysql.message.MessageMapper;
  5 +import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessagePageReqVO;
  6 +import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageSaveReqVO;
  7 +import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
  8 +import cn.iocoder.yudao.module.im.dal.mysql.message.ImMessageMapper;
9 9 import jakarta.annotation.Resource;
10 10 import org.springframework.stereotype.Service;
11 11 import org.springframework.validation.annotation.Validated;
... ... @@ -20,27 +20,27 @@ import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.MESSAGE_NOT_EX
20 20 */
21 21 @Service
22 22 @Validated
23   -public class MessageServiceImpl implements MessageService {
  23 +public class ImMessageServiceImpl implements ImMessageService {
24 24  
25 25 @Resource
26   - private MessageMapper messageMapper;
  26 + private ImMessageMapper imMessageMapper;
27 27  
28 28 @Override
29   - public Long createMessage(MessageSaveReqVO createReqVO) {
  29 + public Long createMessage(ImMessageSaveReqVO createReqVO) {
30 30 // 插入
31   - MessageDO message = BeanUtils.toBean(createReqVO, MessageDO.class);
32   - messageMapper.insert(message);
  31 + ImMessageDO message = BeanUtils.toBean(createReqVO, ImMessageDO.class);
  32 + imMessageMapper.insert(message);
33 33 // 返回
34 34 return message.getId();
35 35 }
36 36  
37 37 @Override
38   - public void updateMessage(MessageSaveReqVO updateReqVO) {
  38 + public void updateMessage(ImMessageSaveReqVO updateReqVO) {
39 39 // 校验存在
40 40 validateMessageExists(updateReqVO.getId());
41 41 // 更新
42   - MessageDO updateObj = BeanUtils.toBean(updateReqVO, MessageDO.class);
43   - messageMapper.updateById(updateObj);
  42 + ImMessageDO updateObj = BeanUtils.toBean(updateReqVO, ImMessageDO.class);
  43 + imMessageMapper.updateById(updateObj);
44 44 }
45 45  
46 46 @Override
... ... @@ -48,27 +48,27 @@ public class MessageServiceImpl implements MessageService {
48 48 // 校验存在
49 49 validateMessageExists(id);
50 50 // 删除
51   - messageMapper.deleteById(id);
  51 + imMessageMapper.deleteById(id);
52 52 }
53 53  
54 54 private void validateMessageExists(Long id) {
55   - if (messageMapper.selectById(id) == null) {
  55 + if (imMessageMapper.selectById(id) == null) {
56 56 throw exception(MESSAGE_NOT_EXISTS);
57 57 }
58 58 }
59 59  
60 60 @Override
61   - public MessageDO getMessage(Long id) {
62   - return messageMapper.selectById(id);
  61 + public ImMessageDO getMessage(Long id) {
  62 + return imMessageMapper.selectById(id);
63 63 }
64 64  
65 65 @Override
66   - public PageResult<MessageDO> getMessagePage(MessagePageReqVO pageReqVO) {
67   - return messageMapper.selectPage(pageReqVO);
  66 + public PageResult<ImMessageDO> getMessagePage(ImMessagePageReqVO pageReqVO) {
  67 + return imMessageMapper.selectPage(pageReqVO);
68 68 }
69 69  
70 70 @Override
71   - public Long sendPrivateMessage(MessageSaveReqVO messageSaveReqVO) {
  71 + public Long sendPrivateMessage(ImMessageSaveReqVO imMessageSaveReqVO) {
72 72 return 0L;
73 73 }
74 74  
... ...
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;
4 4 import cn.iocoder.yudao.framework.websocket.core.listener.WebSocketMessageListener;
5 5 import cn.iocoder.yudao.framework.websocket.core.sender.WebSocketMessageSender;
6 6 import cn.iocoder.yudao.framework.websocket.core.util.WebSocketFrameworkUtils;
  7 +import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationSaveReqVO;
  8 +import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageSaveReqVO;
7 9 import cn.iocoder.yudao.module.im.enums.conversation.ImConversationTypeEnum;
  10 +import cn.iocoder.yudao.module.im.service.conversation.ImConversationService;
  11 +import cn.iocoder.yudao.module.im.service.message.ImMessageService;
8 12 import cn.iocoder.yudao.module.im.websocket.message.ImReceiveMessage;
9 13 import cn.iocoder.yudao.module.im.websocket.message.ImSendMessage;
  14 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  15 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
10 16 import jakarta.annotation.Resource;
11 17 import org.springframework.stereotype.Component;
12 18 import org.springframework.web.socket.WebSocketSession;
... ... @@ -21,19 +27,65 @@ public class ImWebSocketMessageListener implements WebSocketMessageListener&lt;ImSe
21 27  
22 28 @Resource
23 29 private WebSocketMessageSender webSocketMessageSender;
  30 + @Resource
  31 + private ImMessageService imMessageService;
  32 + @Resource
  33 + private AdminUserApi adminUserApi;
  34 + @Resource
  35 + private ImConversationService imConversationService;
24 36  
25 37 @Override
26 38 public void onMessage(WebSocketSession session, ImSendMessage message) {
27 39 Long fromUserId = WebSocketFrameworkUtils.getLoginUserId(session);
  40 + //1、插入消息表
  41 + ImMessageSaveReqVO imMessageSaveReqVO = new ImMessageSaveReqVO();
  42 + imMessageSaveReqVO.setClientMessageId(message.getClientMessageId());
  43 + imMessageSaveReqVO.setSenderId(fromUserId);
  44 + imMessageSaveReqVO.setReceiverId(message.getReceiverId());
  45 + //查询发送人昵称和发送人头像
  46 + AdminUserRespDTO user = adminUserApi.getUser(fromUserId);
  47 + imMessageSaveReqVO.setSenderNickname(user.getNickname());
  48 + imMessageSaveReqVO.setSenderAvatar(user.getAvatar());
  49 + imMessageSaveReqVO.setConversationType(message.getConversationType());
  50 + imMessageSaveReqVO.setContentType(message.getContentType());
  51 + imMessageSaveReqVO.setConversationNo("1");
  52 + imMessageSaveReqVO.setContent(message.getContent());
  53 + //消息来源 100-用户发送;200-系统发送(一般是通知);不能为空
  54 + imMessageSaveReqVO.setSendFrom(100);
  55 + imMessageService.createMessage(imMessageSaveReqVO);
  56 +
  57 +
28 58 // 私聊
29 59 if (message.getConversationType().equals(ImConversationTypeEnum.PRIVATE.getType())) {
  60 + //2、插入收件箱表(私聊:两条,群聊:每个群有一条)
  61 + ImConversationSaveReqVO imConversationSaveReqVO = new ImConversationSaveReqVO();
  62 + imConversationSaveReqVO.setUserId(fromUserId);
  63 + imConversationSaveReqVO.setConversationType(message.getConversationType());
  64 + //单聊时,用户编号;群聊时,群编号
  65 + imConversationSaveReqVO.setTargetId(message.getReceiverId()+"");
  66 + //会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId
  67 + imConversationSaveReqVO.setNo("s_" + fromUserId + "_" + message.getReceiverId());
  68 + imConversationSaveReqVO.setPinned(false);
  69 + imConversationService.createConversation(imConversationSaveReqVO);
  70 +
  71 + ImConversationSaveReqVO imConversationSaveReqVO1 = new ImConversationSaveReqVO();
  72 + imConversationSaveReqVO1.setUserId(message.getReceiverId());
  73 + imConversationSaveReqVO1.setConversationType(message.getConversationType());
  74 + //单聊时,用户编号;群聊时,群编号
  75 + imConversationSaveReqVO1.setTargetId(fromUserId+"");
  76 + //会话标志 单聊:s_{userId}_{targetId},需要排序 userId 和 targetId 群聊:g_groupId
  77 + imConversationSaveReqVO1.setNo("s_" + message.getReceiverId() + "_" + fromUserId);
  78 + imConversationSaveReqVO1.setPinned(false);
  79 + imConversationService.createConversation(imConversationSaveReqVO1);
  80 +
  81 +
  82 + //3、推送消息
30 83 ImReceiveMessage toMessage = new ImReceiveMessage();
31   - toMessage.setToId(fromUserId);
  84 + toMessage.setFromId(fromUserId);
32 85 toMessage.setConversationType(ImConversationTypeEnum.PRIVATE.getType());
33   - //消息类型
34   - toMessage.setType(message.getType());
35   - toMessage.setBody(message.getBody());
36   - webSocketMessageSender.sendObject(UserTypeEnum.ADMIN.getValue(), message.getToId(), // 给指定用户
  86 + toMessage.setContentType(message.getContentType());
  87 + toMessage.setContent(message.getContent());
  88 + webSocketMessageSender.sendObject(UserTypeEnum.ADMIN.getValue(), message.getReceiverId(), // 给指定用户
37 89 "im-message-receive", toMessage);
38 90 }
39 91 }
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/websocket/message/ImReceiveMessage.java
... ... @@ -4,20 +4,20 @@ import cn.iocoder.yudao.module.im.dal.dataobject.message.body.ImMessageBody;
4 4 import io.swagger.v3.oas.annotations.media.Schema;
5 5 import lombok.Data;
6 6  
7   -@Schema(description = "管理后台 - 消息发送 send")
  7 +@Schema(description = "管理后台 - 消息发送 receive")
8 8 @Data
9 9 public class ImReceiveMessage {
10 10  
11 11 @Schema(description = "会话类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
12 12 private Integer conversationType; // 对应 ImConversationTypeEnum 枚举
13 13  
14   - @Schema(description = "聊天对象,用户编号或群编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
15   - private Long toId; // 根据 conversationType 区分
  14 + @Schema(description = "发送人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  15 + private Long fromId; // 根据 conversationType 区分
16 16  
17   - @Schema(description = "消息类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
18   - private Integer type; // 参见 ImMessageTypeEnum 枚举
  17 + @Schema(description = "内容类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  18 + private Integer contentType; // 参见 ImMessageTypeEnum 枚举
19 19  
20 20 @Schema(description = "消息内容", requiredMode = Schema.RequiredMode.REQUIRED)
21   - private ImMessageBody body;
  21 + private String content;
22 22  
23 23 }
24 24 \ No newline at end of file
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/websocket/message/ImSendMessage.java
... ... @@ -2,22 +2,26 @@ package cn.iocoder.yudao.module.im.websocket.message;
2 2  
3 3 import cn.iocoder.yudao.module.im.dal.dataobject.message.body.ImMessageBody;
4 4 import io.swagger.v3.oas.annotations.media.Schema;
  5 +import jakarta.validation.constraints.NotEmpty;
5 6 import lombok.Data;
6 7  
7 8 @Schema(description = "管理后台 - 消息发送 send")
8 9 @Data
9 10 public class ImSendMessage {
10 11  
  12 + @Schema(description = "客户端消息编号 uuid,用于排重", requiredMode = Schema.RequiredMode.REQUIRED, example = "3331")
  13 + private String clientMessageId;
  14 +
11 15 @Schema(description = "会话类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
12 16 private Integer conversationType; // 对应 ImConversationTypeEnum 枚举
13 17  
14   - @Schema(description = "聊天对象,用户编号或群编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
15   - private Long toId; // 根据 conversationType 区分
  18 + @Schema(description = "接收人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  19 + private Long receiverId; // 根据 conversationType 区分
16 20  
17   - @Schema(description = "消息类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
18   - private Integer type; // 参见 ImMessageTypeEnum 枚举
  21 + @Schema(description = "内容类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  22 + private Integer contentType; // 参见 ImMessageTypeEnum 枚举
19 23  
20 24 @Schema(description = "消息内容", requiredMode = Schema.RequiredMode.REQUIRED)
21   - private ImMessageBody body;
  25 + private String content;
22 26  
23 27 }
24 28 \ No newline at end of file
... ...
yudao-module-im/yudao-module-im-biz/src/main/resources/mapper/message/MessageMapper.xml renamed to yudao-module-im/yudao-module-im-biz/src/main/resources/mapper/message/ImMessageMapper.xml
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3   -<mapper namespace="cn.iocoder.yudao.module.im.dal.mysql.message.MessageMapper">
  3 +<mapper namespace="cn.iocoder.yudao.module.im.dal.mysql.message.ImMessageMapper">
4 4  
5 5 <!--
6 6 一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
... ...
yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ConversationServiceImplTest.java renamed to yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/conversation/ImConversationServiceImplTest.java
... ... @@ -2,42 +2,35 @@ package cn.iocoder.yudao.module.im.service.conversation;
2 2  
3 3 import org.junit.jupiter.api.Disabled;
4 4 import org.junit.jupiter.api.Test;
5   -import org.springframework.boot.test.mock.mockito.MockBean;
6 5  
7 6 import jakarta.annotation.Resource;
8 7  
9 8 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
10 9  
11 10 import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.*;
12   -import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ConversationDO;
  11 +import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
13 12 import cn.iocoder.yudao.module.im.dal.mysql.conversation.ConversationMapper;
14 13 import cn.iocoder.yudao.framework.common.pojo.PageResult;
15 14  
16   -import jakarta.annotation.Resource;
17 15 import org.springframework.context.annotation.Import;
18   -import java.util.*;
19   -import java.time.LocalDateTime;
20 16  
21   -import static cn.hutool.core.util.RandomUtil.*;
22 17 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
23 18 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
24 19 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
25 20 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
26 21 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
27   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
28 22 import static org.junit.jupiter.api.Assertions.*;
29   -import static org.mockito.Mockito.*;
30 23  
31 24 /**
32   - * {@link ConversationServiceImpl} 的单元测试类
  25 + * {@link ImConversationServiceImpl} 的单元测试类
33 26 *
34 27 * @author 芋道源码
35 28 */
36   -@Import(ConversationServiceImpl.class)
37   -public class ConversationServiceImplTest extends BaseDbUnitTest {
  29 +@Import(ImConversationServiceImpl.class)
  30 +public class ImConversationServiceImplTest extends BaseDbUnitTest {
38 31  
39 32 @Resource
40   - private ConversationServiceImpl conversationService;
  33 + private ImConversationServiceImpl conversationService;
41 34  
42 35 @Resource
43 36 private ConversationMapper conversationMapper;
... ... @@ -45,38 +38,38 @@ public class ConversationServiceImplTest extends BaseDbUnitTest {
45 38 @Test
46 39 public void testCreateConversation_success() {
47 40 // 准备参数
48   - ConversationSaveReqVO createReqVO = randomPojo(ConversationSaveReqVO.class).setId(null);
  41 + ImConversationSaveReqVO createReqVO = randomPojo(ImConversationSaveReqVO.class).setId(null);
49 42  
50 43 // 调用
51 44 Long conversationId = conversationService.createConversation(createReqVO);
52 45 // 断言
53 46 assertNotNull(conversationId);
54 47 // 校验记录的属性是否正确
55   - ConversationDO conversation = conversationMapper.selectById(conversationId);
  48 + ImConversationDO conversation = conversationMapper.selectById(conversationId);
56 49 assertPojoEquals(createReqVO, conversation, "id");
57 50 }
58 51  
59 52 @Test
60 53 public void testUpdateConversation_success() {
61 54 // mock 数据
62   - ConversationDO dbConversation = randomPojo(ConversationDO.class);
  55 + ImConversationDO dbConversation = randomPojo(ImConversationDO.class);
63 56 conversationMapper.insert(dbConversation);// @Sql: 先插入出一条存在的数据
64 57 // 准备参数
65   - ConversationSaveReqVO updateReqVO = randomPojo(ConversationSaveReqVO.class, o -> {
  58 + ImConversationSaveReqVO updateReqVO = randomPojo(ImConversationSaveReqVO.class, o -> {
66 59 o.setId(dbConversation.getId()); // 设置更新的 ID
67 60 });
68 61  
69 62 // 调用
70 63 conversationService.updateConversation(updateReqVO);
71 64 // 校验是否更新正确
72   - ConversationDO conversation = conversationMapper.selectById(updateReqVO.getId()); // 获取最新的
  65 + ImConversationDO conversation = conversationMapper.selectById(updateReqVO.getId()); // 获取最新的
73 66 assertPojoEquals(updateReqVO, conversation);
74 67 }
75 68  
76 69 @Test
77 70 public void testUpdateConversation_notExists() {
78 71 // 准备参数
79   - ConversationSaveReqVO updateReqVO = randomPojo(ConversationSaveReqVO.class);
  72 + ImConversationSaveReqVO updateReqVO = randomPojo(ImConversationSaveReqVO.class);
80 73  
81 74 // 调用, 并断言异常
82 75 assertServiceException(() -> conversationService.updateConversation(updateReqVO), CONVERSATION_NOT_EXISTS);
... ... @@ -85,7 +78,7 @@ public class ConversationServiceImplTest extends BaseDbUnitTest {
85 78 @Test
86 79 public void testDeleteConversation_success() {
87 80 // mock 数据
88   - ConversationDO dbConversation = randomPojo(ConversationDO.class);
  81 + ImConversationDO dbConversation = randomPojo(ImConversationDO.class);
89 82 conversationMapper.insert(dbConversation);// @Sql: 先插入出一条存在的数据
90 83 // 准备参数
91 84 Long id = dbConversation.getId();
... ... @@ -109,7 +102,7 @@ public class ConversationServiceImplTest extends BaseDbUnitTest {
109 102 @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
110 103 public void testGetConversationPage() {
111 104 // mock 数据
112   - ConversationDO dbConversation = randomPojo(ConversationDO.class, o -> { // 等会查询到
  105 + ImConversationDO dbConversation = randomPojo(ImConversationDO.class, o -> { // 等会查询到
113 106 o.setUserId(null);
114 107 o.setConversationType(null);
115 108 o.setTargetId(null);
... ... @@ -134,7 +127,7 @@ public class ConversationServiceImplTest extends BaseDbUnitTest {
134 127 // 测试 createTime 不匹配
135 128 conversationMapper.insert(cloneIgnoreId(dbConversation, o -> o.setCreateTime(null)));
136 129 // 准备参数
137   - ConversationPageReqVO reqVO = new ConversationPageReqVO();
  130 + ImConversationPageReqVO reqVO = new ImConversationPageReqVO();
138 131 reqVO.setUserId(null);
139 132 reqVO.setConversationType(null);
140 133 reqVO.setTargetId(null);
... ... @@ -144,7 +137,7 @@ public class ConversationServiceImplTest extends BaseDbUnitTest {
144 137 reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
145 138  
146 139 // 调用
147   - PageResult<ConversationDO> pageResult = conversationService.getConversationPage(reqVO);
  140 + PageResult<ImConversationDO> pageResult = conversationService.getConversationPage(reqVO);
148 141 // 断言
149 142 assertEquals(1, pageResult.getTotal());
150 143 assertEquals(1, pageResult.getList().size());
... ...
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;
2 2  
3 3 import org.junit.jupiter.api.Disabled;
4 4 import org.junit.jupiter.api.Test;
5   -import org.springframework.boot.test.mock.mockito.MockBean;
6 5  
7 6 import jakarta.annotation.Resource;
8 7  
9 8 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
10 9  
11 10 import cn.iocoder.yudao.module.im.controller.admin.inbox.vo.*;
12   -import cn.iocoder.yudao.module.im.dal.dataobject.inbox.InboxDO;
  11 +import cn.iocoder.yudao.module.im.dal.dataobject.inbox.ImInboxDO;
13 12 import cn.iocoder.yudao.module.im.dal.mysql.inbox.InboxMapper;
14 13 import cn.iocoder.yudao.framework.common.pojo.PageResult;
15 14  
16   -import jakarta.annotation.Resource;
17 15 import org.springframework.context.annotation.Import;
18   -import java.util.*;
19   -import java.time.LocalDateTime;
20 16  
21   -import static cn.hutool.core.util.RandomUtil.*;
22 17 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
23 18 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
24 19 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
25 20 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
26 21 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
27   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
28 22 import static org.junit.jupiter.api.Assertions.*;
29   -import static org.mockito.Mockito.*;
30 23  
31 24 /**
32 25 * {@link InboxServiceImpl} 的单元测试类
... ... @@ -52,14 +45,14 @@ public class InboxServiceImplTest extends BaseDbUnitTest {
52 45 // 断言
53 46 assertNotNull(inboxId);
54 47 // 校验记录的属性是否正确
55   - InboxDO inbox = inboxMapper.selectById(inboxId);
  48 + ImInboxDO inbox = inboxMapper.selectById(inboxId);
56 49 assertPojoEquals(createReqVO, inbox, "id");
57 50 }
58 51  
59 52 @Test
60 53 public void testUpdateInbox_success() {
61 54 // mock 数据
62   - InboxDO dbInbox = randomPojo(InboxDO.class);
  55 + ImInboxDO dbInbox = randomPojo(ImInboxDO.class);
63 56 inboxMapper.insert(dbInbox);// @Sql: 先插入出一条存在的数据
64 57 // 准备参数
65 58 InboxSaveReqVO updateReqVO = randomPojo(InboxSaveReqVO.class, o -> {
... ... @@ -69,7 +62,7 @@ public class InboxServiceImplTest extends BaseDbUnitTest {
69 62 // 调用
70 63 inboxService.updateInbox(updateReqVO);
71 64 // 校验是否更新正确
72   - InboxDO inbox = inboxMapper.selectById(updateReqVO.getId()); // 获取最新的
  65 + ImInboxDO inbox = inboxMapper.selectById(updateReqVO.getId()); // 获取最新的
73 66 assertPojoEquals(updateReqVO, inbox);
74 67 }
75 68  
... ... @@ -85,7 +78,7 @@ public class InboxServiceImplTest extends BaseDbUnitTest {
85 78 @Test
86 79 public void testDeleteInbox_success() {
87 80 // mock 数据
88   - InboxDO dbInbox = randomPojo(InboxDO.class);
  81 + ImInboxDO dbInbox = randomPojo(ImInboxDO.class);
89 82 inboxMapper.insert(dbInbox);// @Sql: 先插入出一条存在的数据
90 83 // 准备参数
91 84 Long id = dbInbox.getId();
... ... @@ -109,7 +102,7 @@ public class InboxServiceImplTest extends BaseDbUnitTest {
109 102 @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
110 103 public void testGetInboxPage() {
111 104 // mock 数据
112   - InboxDO dbInbox = randomPojo(InboxDO.class, o -> { // 等会查询到
  105 + ImInboxDO dbInbox = randomPojo(ImInboxDO.class, o -> { // 等会查询到
113 106 o.setUserId(null);
114 107 o.setMessageId(null);
115 108 o.setSequence(null);
... ... @@ -132,7 +125,7 @@ public class InboxServiceImplTest extends BaseDbUnitTest {
132 125 reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
133 126  
134 127 // 调用
135   - PageResult<InboxDO> pageResult = inboxService.getInboxPage(reqVO);
  128 + PageResult<ImInboxDO> pageResult = inboxService.getInboxPage(reqVO);
136 129 // 断言
137 130 assertEquals(1, pageResult.getTotal());
138 131 assertEquals(1, pageResult.getList().size());
... ...
yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/MessageServiceImplTest.java renamed to yudao-module-im/yudao-module-im-biz/src/test/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImplTest.java
... ... @@ -2,81 +2,74 @@ package cn.iocoder.yudao.module.im.service.message;
2 2  
3 3 import org.junit.jupiter.api.Disabled;
4 4 import org.junit.jupiter.api.Test;
5   -import org.springframework.boot.test.mock.mockito.MockBean;
6 5  
7 6 import jakarta.annotation.Resource;
8 7  
9 8 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
10 9  
11 10 import cn.iocoder.yudao.module.im.controller.admin.message.vo.*;
12   -import cn.iocoder.yudao.module.im.dal.dataobject.message.MessageDO;
13   -import cn.iocoder.yudao.module.im.dal.mysql.message.MessageMapper;
  11 +import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
  12 +import cn.iocoder.yudao.module.im.dal.mysql.message.ImMessageMapper;
14 13 import cn.iocoder.yudao.framework.common.pojo.PageResult;
15 14  
16   -import jakarta.annotation.Resource;
17 15 import org.springframework.context.annotation.Import;
18   -import java.util.*;
19   -import java.time.LocalDateTime;
20 16  
21   -import static cn.hutool.core.util.RandomUtil.*;
22 17 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
23 18 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
24 19 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
25 20 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
26 21 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
27   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
28 22 import static org.junit.jupiter.api.Assertions.*;
29   -import static org.mockito.Mockito.*;
30 23  
31 24 /**
32   - * {@link MessageServiceImpl} 的单元测试类
  25 + * {@link ImMessageServiceImpl} 的单元测试类
33 26 *
34 27 * @author 芋道源码
35 28 */
36   -@Import(MessageServiceImpl.class)
37   -public class MessageServiceImplTest extends BaseDbUnitTest {
  29 +@Import(ImMessageServiceImpl.class)
  30 +public class ImMessageServiceImplTest extends BaseDbUnitTest {
38 31  
39 32 @Resource
40   - private MessageServiceImpl messageService;
  33 + private ImMessageServiceImpl messageService;
41 34  
42 35 @Resource
43   - private MessageMapper messageMapper;
  36 + private ImMessageMapper imMessageMapper;
44 37  
45 38 @Test
46 39 public void testCreateMessage_success() {
47 40 // 准备参数
48   - MessageSaveReqVO createReqVO = randomPojo(MessageSaveReqVO.class).setId(null);
  41 + ImMessageSaveReqVO createReqVO = randomPojo(ImMessageSaveReqVO.class).setId(null);
49 42  
50 43 // 调用
51 44 Long messageId = messageService.createMessage(createReqVO);
52 45 // 断言
53 46 assertNotNull(messageId);
54 47 // 校验记录的属性是否正确
55   - MessageDO message = messageMapper.selectById(messageId);
  48 + ImMessageDO message = imMessageMapper.selectById(messageId);
56 49 assertPojoEquals(createReqVO, message, "id");
57 50 }
58 51  
59 52 @Test
60 53 public void testUpdateMessage_success() {
61 54 // mock 数据
62   - MessageDO dbMessage = randomPojo(MessageDO.class);
63   - messageMapper.insert(dbMessage);// @Sql: 先插入出一条存在的数据
  55 + ImMessageDO dbMessage = randomPojo(ImMessageDO.class);
  56 + imMessageMapper.insert(dbMessage);// @Sql: 先插入出一条存在的数据
64 57 // 准备参数
65   - MessageSaveReqVO updateReqVO = randomPojo(MessageSaveReqVO.class, o -> {
  58 + ImMessageSaveReqVO updateReqVO = randomPojo(ImMessageSaveReqVO.class, o -> {
66 59 o.setId(dbMessage.getId()); // 设置更新的 ID
67 60 });
68 61  
69 62 // 调用
70 63 messageService.updateMessage(updateReqVO);
71 64 // 校验是否更新正确
72   - MessageDO message = messageMapper.selectById(updateReqVO.getId()); // 获取最新的
  65 + ImMessageDO message = imMessageMapper.selectById(updateReqVO.getId()); // 获取最新的
73 66 assertPojoEquals(updateReqVO, message);
74 67 }
75 68  
76 69 @Test
77 70 public void testUpdateMessage_notExists() {
78 71 // 准备参数
79   - MessageSaveReqVO updateReqVO = randomPojo(MessageSaveReqVO.class);
  72 + ImMessageSaveReqVO updateReqVO = randomPojo(ImMessageSaveReqVO.class);
80 73  
81 74 // 调用, 并断言异常
82 75 assertServiceException(() -> messageService.updateMessage(updateReqVO), MESSAGE_NOT_EXISTS);
... ... @@ -85,15 +78,15 @@ public class MessageServiceImplTest extends BaseDbUnitTest {
85 78 @Test
86 79 public void testDeleteMessage_success() {
87 80 // mock 数据
88   - MessageDO dbMessage = randomPojo(MessageDO.class);
89   - messageMapper.insert(dbMessage);// @Sql: 先插入出一条存在的数据
  81 + ImMessageDO dbMessage = randomPojo(ImMessageDO.class);
  82 + imMessageMapper.insert(dbMessage);// @Sql: 先插入出一条存在的数据
90 83 // 准备参数
91 84 Long id = dbMessage.getId();
92 85  
93 86 // 调用
94 87 messageService.deleteMessage(id);
95 88 // 校验数据不存在了
96   - assertNull(messageMapper.selectById(id));
  89 + assertNull(imMessageMapper.selectById(id));
97 90 }
98 91  
99 92 @Test
... ... @@ -109,7 +102,7 @@ public class MessageServiceImplTest extends BaseDbUnitTest {
109 102 @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
110 103 public void testGetMessagePage() {
111 104 // mock 数据
112   - MessageDO dbMessage = randomPojo(MessageDO.class, o -> { // 等会查询到
  105 + ImMessageDO dbMessage = randomPojo(ImMessageDO.class, o -> { // 等会查询到
113 106 o.setClientMessageId(null);
114 107 o.setSenderId(null);
115 108 o.setReceiverId(null);
... ... @@ -123,33 +116,33 @@ public class MessageServiceImplTest extends BaseDbUnitTest {
123 116 o.setSendFrom(null);
124 117 o.setCreateTime(null);
125 118 });
126   - messageMapper.insert(dbMessage);
  119 + imMessageMapper.insert(dbMessage);
127 120 // 测试 clientMessageId 不匹配
128   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setClientMessageId(null)));
  121 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setClientMessageId(null)));
129 122 // 测试 senderId 不匹配
130   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderId(null)));
  123 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderId(null)));
131 124 // 测试 receiverId 不匹配
132   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setReceiverId(null)));
  125 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setReceiverId(null)));
133 126 // 测试 senderNickname 不匹配
134   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderNickname(null)));
  127 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderNickname(null)));
135 128 // 测试 senderAvatar 不匹配
136   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderAvatar(null)));
  129 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSenderAvatar(null)));
137 130 // 测试 conversationType 不匹配
138   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setConversationType(null)));
  131 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setConversationType(null)));
139 132 // 测试 conversationNo 不匹配
140   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setConversationNo(null)));
  133 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setConversationNo(null)));
141 134 // 测试 contentType 不匹配
142   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setContentType(null)));
  135 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setContentType(null)));
143 136 // 测试 content 不匹配
144   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setContent(null)));
  137 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setContent(null)));
145 138 // 测试 sendTime 不匹配
146   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSendTime(null)));
  139 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSendTime(null)));
147 140 // 测试 sendFrom 不匹配
148   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSendFrom(null)));
  141 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setSendFrom(null)));
149 142 // 测试 createTime 不匹配
150   - messageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setCreateTime(null)));
  143 + imMessageMapper.insert(cloneIgnoreId(dbMessage, o -> o.setCreateTime(null)));
151 144 // 准备参数
152   - MessagePageReqVO reqVO = new MessagePageReqVO();
  145 + ImMessagePageReqVO reqVO = new ImMessagePageReqVO();
153 146 reqVO.setClientMessageId(null);
154 147 reqVO.setSenderId(null);
155 148 reqVO.setReceiverId(null);
... ... @@ -164,7 +157,7 @@ public class MessageServiceImplTest extends BaseDbUnitTest {
164 157 reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
165 158  
166 159 // 调用
167   - PageResult<MessageDO> pageResult = messageService.getMessagePage(reqVO);
  160 + PageResult<ImMessageDO> pageResult = messageService.getMessagePage(reqVO);
168 161 // 断言
169 162 assertEquals(1, pageResult.getTotal());
170 163 assertEquals(1, pageResult.getList().size());
... ...
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 {
41 41 */
42 42 private String mobile;
43 43  
  44 + /**
  45 + * 用户头像
  46 + */
  47 + private String avatar;
  48 +
44 49 }
... ...
yudao-server/src/main/resources/application-local.yaml
... ... @@ -47,14 +47,14 @@ spring:
47 47 datasource:
48 48 master:
49 49 name: ruoyi-vue-pro
50   - 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 连接的示例
  50 + 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 连接的示例
51 51 # 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 连接的示例
52 52 # url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.master.name} # PostgreSQL 连接的示例
53 53 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
54 54 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
55 55 # url: jdbc:dm://10.211.55.4:5236?schema=RUOYI_VUE_PRO # DM 连接的示例
56   - username: root
57   - password: 123456
  56 + username: ruoyi-vue-pro
  57 + password: ruoyi-@h2ju02hebp
58 58 # username: sa
59 59 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
60 60 # username: SYSDBA # DM 连接的示例
... ... @@ -62,23 +62,23 @@ spring:
62 62 slave: # 模拟从库,可根据自己需要修改
63 63 name: ruoyi-vue-pro
64 64 lazy: true # 开启懒加载,保证启动速度
65   - 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 连接的示例
  65 + 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 连接的示例
66 66 # 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 连接的示例
67 67 # url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
68 68 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
69 69 # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例
70   - username: root
71   - password: 123456
  70 + username: ruoyi-vue-pro
  71 + password: ruoyi-@h2ju02hebp
72 72 # username: sa
73 73 # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
74 74  
75 75 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
76 76 data:
77 77 redis:
78   - host: 127.0.0.1 # 地址
  78 + host: chaojiniu.top # 地址
79 79 port: 6379 # 端口
80 80 database: 0 # 数据库索引
81   -# password: dev # 密码,建议生产环境开启
  81 + password: fsknKD7UvQYZsyf2hXXn # 密码,建议生产环境开启
82 82  
83 83 --- #################### 定时任务相关配置 ####################
84 84  
... ...
yudao-server/src/main/resources/application.yaml
... ... @@ -185,7 +185,7 @@ yudao:
185 185 - cn.iocoder.yudao.module.mp.enums.ErrorCodeConstants
186 186 - cn.iocoder.yudao.module.im.enums.ErrorCodeConstants
187 187 tenant: # 多租户相关配置项
188   - enable: true
  188 + enable: false
189 189 ignore-urls:
190 190 - /admin-api/system/tenant/get-id-by-name # 基于名字获取租户,不许带租户编号
191 191 - /admin-api/system/tenant/get-by-website # 基于域名获取租户,不许带租户编号
... ...