From a849a843e27e8eaf745a76bfe8de02104d342e57 Mon Sep 17 00:00:00 2001 From: La123123 <617330105@qq.com> Date: Tue, 7 Apr 2026 17:59:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0token=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E4=B8=8E=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/im/domain/ImGroup.java | 5 ++ .../org/dromara/im/domain/ImGroupMember.java | 5 ++ .../org/dromara/im/domain/ImGroupMessage.java | 5 ++ .../dromara/im/domain/ImPrivateMessage.java | 5 ++ .../dromara/im/domain/ImSensitiveWord.java | 5 ++ .../java/org/dromara/im/domain/ImUser.java | 5 ++ .../org/dromara/im/domain/ImUserGroup.java | 5 ++ .../org/dromara/im/domain/ImUserLabel.java | 5 ++ .../dromara/im/service/IImAgentService.java | 9 ++++ .../im/service/impl/ImAgentServiceImpl.java | 15 ++++++ .../ruoyi-im/src/main/resources/updateSql.sql | 49 ++++++++++++++++++- 11 files changed, 112 insertions(+), 1 deletion(-) diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroup.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroup.java index af3da96..4488c26 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroup.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroup.java @@ -70,5 +70,10 @@ public class ImGroup implements TransPojo { */ private String reason; + /** + * 唯一token + */ + private String uniqueToken; + } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroupMember.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroupMember.java index fd9cced..3a89d3f 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroupMember.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroupMember.java @@ -68,5 +68,10 @@ public class ImGroupMember implements TransPojo { */ private String userNickName; + /** + * 唯一token + */ + private String uniqueToken; + } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroupMessage.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroupMessage.java index 8e38565..38370ad 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroupMessage.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImGroupMessage.java @@ -77,5 +77,10 @@ public class ImGroupMessage { */ private String recvIds; + /** + * 唯一token + */ + private String uniqueToken; + } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImPrivateMessage.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImPrivateMessage.java index be2df1c..085432d 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImPrivateMessage.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImPrivateMessage.java @@ -53,5 +53,10 @@ public class ImPrivateMessage { */ private Date sendTime; + /** + * 唯一token + */ + private String uniqueToken; + } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImSensitiveWord.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImSensitiveWord.java index 1f279cd..937d6b0 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImSensitiveWord.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImSensitiveWord.java @@ -47,4 +47,9 @@ public class ImSensitiveWord { @TableField(fill = FieldFill.INSERT) private Date createTime; + /** + * 唯一token + */ + private String uniqueToken; + } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUser.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUser.java index 3738518..8eeafd7 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUser.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUser.java @@ -100,6 +100,11 @@ public class ImUser implements TransPojo { private String groupIds; + /** + * 唯一token + */ + private String uniqueToken; + } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserGroup.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserGroup.java index cc8e568..b8173db 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserGroup.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserGroup.java @@ -39,5 +39,10 @@ public class ImUserGroup implements TransPojo { */ private String remark; + /** + * 唯一token + */ + private String uniqueToken; + } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserLabel.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserLabel.java index bb54535..f8ad6de 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserLabel.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserLabel.java @@ -35,5 +35,10 @@ public class ImUserLabel implements TransPojo { */ private String remark; + /** + * 唯一token + */ + private String uniqueToken; + } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java index 38ae952..27ccc08 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java @@ -65,4 +65,13 @@ public interface IImAgentService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + /** + * 获取代理用户的唯一token + * + * @param userId 用户id + * @return 唯一token + */ + String getTokenByUserId(Long userId); } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java index 10635b3..0f4620d 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.im.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.dynamic.datasource.annotation.DS; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -133,4 +134,18 @@ public class ImAgentServiceImpl implements IImAgentService { } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public String getTokenByUserId(Long userId) { + ImAgent agent = baseMapper.selectOne(new LambdaQueryWrapper().eq(ImAgent::getSysId, userId)); + + if(ObjectUtil.isNotNull(agent)){ + String token = agent.getUniqueToken(); + if(ObjectUtil.isNotEmpty(token)){ + return token; + } + } + + return ""; + } } diff --git a/im-admin/ruoyi-im/src/main/resources/updateSql.sql b/im-admin/ruoyi-im/src/main/resources/updateSql.sql index f4467b6..b611475 100644 --- a/im-admin/ruoyi-im/src/main/resources/updateSql.sql +++ b/im-admin/ruoyi-im/src/main/resources/updateSql.sql @@ -1,3 +1,5 @@ +-- 2026.4.7 + CREATE TABLE im_agent ( id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', sys_id BIGINT NOT NULL COMMENT '管理端ID', @@ -13,4 +15,49 @@ CREATE TABLE im_agent ( KEY idx_sys_id (sys_id), KEY idx_created_time (created_time), KEY idx_updated_time (updated_time) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理表'; \ No newline at end of file +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理表'; + +ALTER TABLE im_friend + ADD COLUMN unique_token VARCHAR(100) COMMENT '唯一标识token' AFTER id, +ADD INDEX idx_unique_token (unique_token), +ADD INDEX idx_token_id (unique_token, id); + +ALTER TABLE im_group + ADD COLUMN unique_token VARCHAR(100) COMMENT '唯一标识token' AFTER id, +ADD UNIQUE INDEX uk_unique_token (unique_token), +ADD INDEX idx_token_id (unique_token, id); + +ALTER TABLE im_group_member + ADD COLUMN unique_token VARCHAR(100) COMMENT '唯一标识token' AFTER id, +ADD INDEX idx_unique_token (unique_token), +ADD INDEX idx_token_id (unique_token, id); + +ALTER TABLE im_group_message + ADD COLUMN unique_token VARCHAR(100) COMMENT '唯一标识token' AFTER id, +ADD UNIQUE INDEX uk_unique_token (unique_token), +ADD INDEX idx_token_id (unique_token, id); + +ALTER TABLE im_private_message + ADD COLUMN unique_token VARCHAR(100) COMMENT '唯一标识token' AFTER id, +ADD UNIQUE INDEX uk_unique_token (unique_token), +ADD INDEX idx_token_id (unique_token, id); + +ALTER TABLE im_sensitive_word + ADD COLUMN unique_token VARCHAR(100) COMMENT '唯一标识token' AFTER id, +ADD INDEX idx_unique_token (unique_token), +ADD INDEX idx_token_id (unique_token, id); + +ALTER TABLE im_user + ADD COLUMN unique_token VARCHAR(100) COMMENT '唯一标识token' AFTER id, +ADD UNIQUE INDEX uk_unique_token (unique_token), +ADD INDEX idx_token_id (unique_token, id); + +ALTER TABLE im_user_group + ADD COLUMN unique_token VARCHAR(100) COMMENT '唯一标识token' AFTER id, +ADD INDEX idx_unique_token (unique_token), +ADD INDEX idx_token_id (unique_token, id); + +ALTER TABLE im_user_label + ADD COLUMN unique_token VARCHAR(100) COMMENT '唯一标识token' AFTER id, +ADD INDEX idx_unique_token (unique_token), +ADD INDEX idx_token_id (unique_token, id); \ No newline at end of file