From 6bfaa848f29334f703599c7638aa37decac33c29 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 19 May 2026 17:48:36 +0800 Subject: [PATCH] ✨ feat(im): 继续优化频道的各种代码(v2) --- yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialPageReqVO.java | 2 +- yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialRespVO.java | 2 +- yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialSaveReqVO.java | 2 +- yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/channel/ImChannelMaterialDO.java | 9 +++++---- yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/channel/ImChannelMaterialContentTypeEnum.java | 37 ------------------------------------- yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/channel/ImChannelMaterialTypeEnum.java | 37 +++++++++++++++++++++++++++++++++++++ yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/channel/ImChannelServiceImpl.java | 2 ++ yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/websocket/dto/message/MaterialMessage.java | 2 +- 8 files changed, 48 insertions(+), 45 deletions(-) delete mode 100644 yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/channel/ImChannelMaterialContentTypeEnum.java create mode 100644 yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/channel/ImChannelMaterialTypeEnum.java diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialPageReqVO.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialPageReqVO.java index 49cc930..1bb834b 100644 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialPageReqVO.java +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialPageReqVO.java @@ -19,7 +19,7 @@ public class ImChannelMaterialPageReqVO extends PageParam { private Long channelId; @Schema(description = "内容类型", example = "1") - private Integer type; // 参见 ImChannelMaterialContentTypeEnum 枚举类 + private Integer type; // 参见 ImChannelMaterialTypeEnum 枚举类 @Schema(description = "标题", example = "活动") private String title; diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialRespVO.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialRespVO.java index 033fac1..55aebed 100644 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialRespVO.java +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialRespVO.java @@ -19,7 +19,7 @@ public class ImChannelMaterialRespVO { private String channelName; @Schema(description = "内容类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Integer type; // 参见 ImChannelMaterialContentTypeEnum 枚举类 + private Integer type; // 参见 ImChannelMaterialTypeEnum 枚举类 @Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED) private String title; diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialSaveReqVO.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialSaveReqVO.java index 3f621a7..e30f35b 100644 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialSaveReqVO.java +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/manager/channel/vo/material/ImChannelMaterialSaveReqVO.java @@ -19,7 +19,7 @@ public class ImChannelMaterialSaveReqVO { @Schema(description = "内容类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "内容类型不能为空") - private Integer type; // 参见 ImChannelMaterialContentTypeEnum 枚举类 + private Integer type; // 参见 ImChannelMaterialTypeEnum 枚举类 @Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "双十一活动来啦") @NotBlank(message = "标题不能为空") diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/channel/ImChannelMaterialDO.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/channel/ImChannelMaterialDO.java index cb85869..0d49721 100644 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/channel/ImChannelMaterialDO.java +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/dal/dataobject/channel/ImChannelMaterialDO.java @@ -1,7 +1,8 @@ package cn.iocoder.yudao.module.im.dal.dataobject.channel; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.im.enums.channel.ImChannelMaterialContentTypeEnum; +import cn.iocoder.yudao.module.im.dal.dataobject.message.ImChannelMessageDO; +import cn.iocoder.yudao.module.im.enums.channel.ImChannelMaterialTypeEnum; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -41,7 +42,7 @@ public class ImChannelMaterialDO extends BaseDO { /** * 素材内容类型 *

- * 枚举 {@link ImChannelMaterialContentTypeEnum} + * 枚举 {@link ImChannelMaterialTypeEnum} */ private Integer type; /** @@ -57,11 +58,11 @@ public class ImChannelMaterialDO extends BaseDO { */ private String summary; /** - * 富文本 HTML;在 {@link ImChannelMaterialContentTypeEnum#CONTENT} 使用 + * 富文本 HTML;在 {@link ImChannelMaterialTypeEnum#CONTENT} 使用 */ private String content; /** - * 跳转链接;在 {@link ImChannelMaterialContentTypeEnum#LINK} 使用 + * 跳转链接;在 {@link ImChannelMaterialTypeEnum#LINK} 使用 */ private String url; diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/channel/ImChannelMaterialContentTypeEnum.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/channel/ImChannelMaterialContentTypeEnum.java deleted file mode 100644 index 90a2776..0000000 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/channel/ImChannelMaterialContentTypeEnum.java +++ /dev/null @@ -1,37 +0,0 @@ -package cn.iocoder.yudao.module.im.enums.channel; - -import cn.iocoder.yudao.framework.common.core.ArrayValuable; -import lombok.AllArgsConstructor; -import lombok.Getter; - -import java.util.Arrays; - -/** - * IM 频道素材内容类型枚举 - * - * @author 芋道源码 - */ -@Getter -@AllArgsConstructor -public enum ImChannelMaterialContentTypeEnum implements ArrayValuable { - - /** - * 站内富文本;点击素材在客户端内置详情页拉 content 渲染 - */ - CONTENT(1, "站内富文本"), - /** - * 外链;点击素材跳 url 打开浏览器 - */ - LINK(2, "外链"); - - public static final Integer[] ARRAYS = Arrays.stream(values()).map(ImChannelMaterialContentTypeEnum::getType).toArray(Integer[]::new); - - private final Integer type; - private final String name; - - @Override - public Integer[] array() { - return ARRAYS; - } - -} diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/channel/ImChannelMaterialTypeEnum.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/channel/ImChannelMaterialTypeEnum.java new file mode 100644 index 0000000..55982c7 --- /dev/null +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/channel/ImChannelMaterialTypeEnum.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.im.enums.channel; + +import cn.iocoder.yudao.framework.common.core.ArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * IM 频道素材内容类型枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum ImChannelMaterialTypeEnum implements ArrayValuable { + + /** + * 站内富文本;点击素材在客户端内置详情页拉 content 渲染 + */ + CONTENT(1, "站内富文本"), + /** + * 外链;点击素材跳 url 打开浏览器 + */ + LINK(2, "外链"); + + public static final Integer[] ARRAYS = Arrays.stream(values()).map(ImChannelMaterialTypeEnum::getType).toArray(Integer[]::new); + + private final Integer type; + private final String name; + + @Override + public Integer[] array() { + return ARRAYS; + } + +} diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/channel/ImChannelServiceImpl.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/channel/ImChannelServiceImpl.java index cdae8da..6df27e1 100644 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/channel/ImChannelServiceImpl.java +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/channel/ImChannelServiceImpl.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.im.controller.admin.manager.channel.vo.channel.Im import cn.iocoder.yudao.module.im.dal.dataobject.channel.ImChannelDO; import cn.iocoder.yudao.module.im.dal.mysql.channel.ImChannelMapper; import jakarta.annotation.Resource; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -31,6 +32,7 @@ public class ImChannelServiceImpl implements ImChannelService { @Resource private ImChannelMapper channelMapper; @Resource + @Lazy // 延迟加载,解决循环依赖 private ImChannelMaterialService channelMaterialService; // ==================== 用户端 ==================== diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/websocket/dto/message/MaterialMessage.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/websocket/dto/message/MaterialMessage.java index 10f8d4d..42af051 100644 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/websocket/dto/message/MaterialMessage.java +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/websocket/dto/message/MaterialMessage.java @@ -17,7 +17,7 @@ public class MaterialMessage { /** * 素材内容类型 *

- * 枚举 {@link cn.iocoder.yudao.module.im.enums.channel.ImChannelMaterialContentTypeEnum} + * 枚举 {@link cn.iocoder.yudao.module.im.enums.channel.ImChannelMaterialTypeEnum} * 客户端按本字段判定点击行为:CONTENT 走站内详情页拉富文本;LINK 跳 url */ private Integer type; -- libgit2 0.21.4