From f66740df5f6cb2344e8f12b7dbc88d8a283e902d Mon Sep 17 00:00:00 2001
From: La123123 <617330105@qq.com>
Date: Tue, 7 Apr 2026 16:51:42 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BB=A3=E7=90=86=E8=A7=92?=
=?UTF-8?q?=E8=89=B2=E6=97=B6=E6=9B=B4=E6=96=B0=E4=BB=A3=E7=90=86=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
im-admin/.idea/encodings.xml | 2 -
.../controller/constant/ImConstant.java | 14 ++
.../controller/system/SysUserController.java | 20 ++-
.../dromara/system/domain/ImAgentAdmin.java | 55 +++++++
.../system/domain/bo/ImAgentAdminBo.java | 66 ++++++++
.../system/domain/vo/ImAgentAdminVo.java | 72 +++++++++
.../system/mapper/ImAgentAdminMapper.java | 15 ++
.../system/service/IImAgentAdminService.java | 76 +++++++++
.../system/service/ISysUserService.java | 5 +
.../service/impl/ImAgentAdminServiceImpl.java | 149 ++++++++++++++++++
.../service/impl/SysUserServiceImpl.java | 27 +++-
.../mapper/system/ImAgentAdminMapper.xml | 7 +
12 files changed, 501 insertions(+), 7 deletions(-)
create mode 100644 im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/constant/ImConstant.java
create mode 100644 im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ImAgentAdmin.java
create mode 100644 im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ImAgentAdminBo.java
create mode 100644 im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ImAgentAdminVo.java
create mode 100644 im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ImAgentAdminMapper.java
create mode 100644 im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IImAgentAdminService.java
create mode 100644 im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ImAgentAdminServiceImpl.java
create mode 100644 im-admin/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ImAgentAdminMapper.xml
diff --git a/im-admin/.idea/encodings.xml b/im-admin/.idea/encodings.xml
index 39f61b7..23c79e3 100644
--- a/im-admin/.idea/encodings.xml
+++ b/im-admin/.idea/encodings.xml
@@ -49,8 +49,6 @@
-
-
diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/constant/ImConstant.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/constant/ImConstant.java
new file mode 100644
index 0000000..c65847b
--- /dev/null
+++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/constant/ImConstant.java
@@ -0,0 +1,14 @@
+package org.dromara.system.controller.constant;
+
+/**
+ * @author: Blue
+ * @date: 2024-07-20
+ * @version: 1.0
+ */
+public class ImConstant {
+
+ /**
+ * IM数据源
+ */
+ public final static String DS_IM_PLATFORM = "platform";
+}
diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
index 36104d6..8bdbaa9 100644
--- a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
+++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
@@ -23,6 +23,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.common.web.core.BaseController;
+import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.bo.SysDeptBo;
import org.dromara.system.domain.bo.SysPostBo;
import org.dromara.system.domain.bo.SysRoleBo;
@@ -55,6 +56,8 @@ public class SysUserController extends BaseController {
private final ISysDeptService deptService;
private final ISysTenantService tenantService;
+ private final IImAgentAdminService imAgentService;
+
/**
* 获取用户列表
*/
@@ -170,7 +173,22 @@ public class SysUserController extends BaseController {
}
}
user.setPassword(BCrypt.hashpw(user.getPassword()));
- return toAjax(userService.insertUser(user));
+ int i = userService.insertUser(user);
+
+ if(i > 0){
+ SysUser newUser = userService.getUserByUserName(user.getUserName());
+ //获取该用户权限,判断是否拥有agentAdmin权限
+ List permissions = userService.getPermissionsByUserId(newUser.getUserId());
+
+ //判断该用户是否拥有agentAdmin权限
+ if(permissions.contains("agentAdmin")){
+ //插入代理端数据
+ int insertAgent = imAgentService.insertAgentData(newUser.getUserId(), newUser.getUserName());
+ return toAjax(insertAgent);
+ }
+ }
+
+ return toAjax(i);
}
/**
diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ImAgentAdmin.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ImAgentAdmin.java
new file mode 100644
index 0000000..10d93f9
--- /dev/null
+++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ImAgentAdmin.java
@@ -0,0 +1,55 @@
+package org.dromara.system.domain;
+
+import com.fhs.core.trans.vo.TransPojo;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 代理关联对象 im_agent
+ *
+ * @author Blue
+ * @date 2026-04-07
+ */
+@Data
+@TableName("im_agent")
+public class ImAgentAdmin implements TransPojo {
+ /**
+ * 主键ID
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 管理端ID
+ */
+ private Long sysId;
+
+ /**
+ * 代理用户名
+ */
+ private String agentName;
+
+ /**
+ * 唯一token
+ */
+ private String uniqueToken;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+ /**
+ * 创建时间
+ */
+ private Date createdTime;
+
+ /**
+ * 更新时间
+ */
+ private Date updatedTime;
+
+
+}
diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ImAgentAdminBo.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ImAgentAdminBo.java
new file mode 100644
index 0000000..a4e829b
--- /dev/null
+++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ImAgentAdminBo.java
@@ -0,0 +1,66 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.ImAgentAdmin;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+
+/**
+ * 代理关联业务对象 im_agent
+ *
+ * @author Blue
+ * @date 2026-04-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ImAgentAdminBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 管理端ID
+ */
+ @NotNull(message = "管理端ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long sysId;
+
+ /**
+ * 代理用户名
+ */
+ @NotBlank(message = "代理用户名不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String agentName;
+
+ /**
+ * 唯一token
+ */
+ @NotBlank(message = "唯一token不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String uniqueToken;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+ /**
+ * 创建时间
+ */
+ @NotNull(message = "创建时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date createdTime;
+
+ /**
+ * 更新时间
+ */
+ @NotNull(message = "更新时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date updatedTime;
+
+
+}
diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ImAgentAdminVo.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ImAgentAdminVo.java
new file mode 100644
index 0000000..d87b5c3
--- /dev/null
+++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ImAgentAdminVo.java
@@ -0,0 +1,72 @@
+package org.dromara.system.domain.vo;
+
+import java.util.Date;
+
+import org.dromara.system.domain.ImAgentAdmin;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+/**
+ * 代理关联视图对象 im_agent
+ *
+ * @author Blue
+ * @date 2026-04-07
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ImAgentAdmin.class)
+public class ImAgentAdminVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long id;
+
+ /**
+ * 管理端ID
+ */
+ @ExcelProperty(value = "管理端ID")
+ private Long sysId;
+
+ /**
+ * 代理用户名
+ */
+ @ExcelProperty(value = "代理用户名")
+ private String agentName;
+
+ /**
+ * 唯一token
+ */
+ @ExcelProperty(value = "唯一token")
+ private String uniqueToken;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+ /**
+ * 创建时间
+ */
+ @ExcelProperty(value = "创建时间")
+ private Date createdTime;
+
+ /**
+ * 更新时间
+ */
+ @ExcelProperty(value = "更新时间")
+ private Date updatedTime;
+
+
+}
diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ImAgentAdminMapper.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ImAgentAdminMapper.java
new file mode 100644
index 0000000..f7bca3f
--- /dev/null
+++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ImAgentAdminMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.ImAgentAdmin;
+import org.dromara.system.domain.vo.ImAgentAdminVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 代理关联Mapper接口
+ *
+ * @author Blue
+ * @date 2026-04-07
+ */
+public interface ImAgentAdminMapper extends BaseMapperPlus {
+
+}
diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IImAgentAdminService.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IImAgentAdminService.java
new file mode 100644
index 0000000..8e11d47
--- /dev/null
+++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IImAgentAdminService.java
@@ -0,0 +1,76 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.vo.ImAgentAdminVo;
+import org.dromara.system.domain.bo.ImAgentAdminBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 代理关联Service接口
+ *
+ * @author Blue
+ * @date 2026-04-07
+ */
+public interface IImAgentAdminService {
+
+ /**
+ * 查询代理关联
+ *
+ * @param id 主键
+ * @return 代理关联
+ */
+ ImAgentAdminVo queryById(Long id);
+
+ /**
+ * 分页查询代理关联列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 代理关联分页列表
+ */
+ TableDataInfo queryPageList(ImAgentAdminBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的代理关联列表
+ *
+ * @param bo 查询条件
+ * @return 代理关联列表
+ */
+ List queryList(ImAgentAdminBo bo);
+
+ /**
+ * 新增代理关联
+ *
+ * @param bo 代理关联
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(ImAgentAdminBo bo);
+
+ /**
+ * 修改代理关联
+ *
+ * @param bo 代理关联
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(ImAgentAdminBo bo);
+
+ /**
+ * 校验并批量删除代理关联信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+ /**
+ * 插入代理数据
+ *
+ * @param userId 用户id
+ * @return 插入数量
+ */
+ int insertAgentData(Long userId,String agentName);
+}
diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
index c006b26..e1deb77 100644
--- a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
+++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
@@ -2,6 +2,7 @@ package org.dromara.system.service;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysUserExportVo;
import org.dromara.system.domain.vo.SysUserVo;
@@ -219,4 +220,8 @@ public interface ISysUserService {
* @return 结果
*/
List selectUserListByDept(Long deptId);
+
+ SysUser getUserByUserName(String userName);
+
+ List getPermissionsByUserId(Long userId);
}
diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ImAgentAdminServiceImpl.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ImAgentAdminServiceImpl.java
new file mode 100644
index 0000000..1e38315
--- /dev/null
+++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ImAgentAdminServiceImpl.java
@@ -0,0 +1,149 @@
+package org.dromara.system.service.impl;
+
+import cn.hutool.core.util.RandomUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.system.controller.constant.ImConstant;
+import org.dromara.system.domain.ImAgentAdmin;
+import org.dromara.system.domain.bo.ImAgentAdminBo;
+import org.dromara.system.domain.vo.ImAgentAdminVo;
+import org.springframework.stereotype.Service;
+import org.dromara.system.mapper.ImAgentAdminMapper;
+import org.dromara.system.service.IImAgentAdminService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 代理关联Service业务层处理
+ *
+ * @author Blue
+ * @date 2026-04-07
+ */
+@RequiredArgsConstructor
+@Service
+@DS(ImConstant.DS_IM_PLATFORM)
+public class ImAgentAdminServiceImpl implements IImAgentAdminService {
+
+ private final ImAgentAdminMapper baseMapper;
+
+ /**
+ * 查询代理关联
+ *
+ * @param id 主键
+ * @return 代理关联
+ */
+ @Override
+ public ImAgentAdminVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询代理关联列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 代理关联分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ImAgentAdminBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的代理关联列表
+ *
+ * @param bo 查询条件
+ * @return 代理关联列表
+ */
+ @Override
+ public List queryList(ImAgentAdminBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(ImAgentAdminBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(bo.getSysId() != null, ImAgentAdmin::getSysId, bo.getSysId());
+ lqw.like(StringUtils.isNotBlank(bo.getAgentName()), ImAgentAdmin::getAgentName, bo.getAgentName());
+ lqw.eq(StringUtils.isNotBlank(bo.getUniqueToken()), ImAgentAdmin::getUniqueToken, bo.getUniqueToken());
+ lqw.eq(bo.getCreatedTime() != null, ImAgentAdmin::getCreatedTime, bo.getCreatedTime());
+ lqw.eq(bo.getUpdatedTime() != null, ImAgentAdmin::getUpdatedTime, bo.getUpdatedTime());
+ return lqw;
+ }
+
+ /**
+ * 新增代理关联
+ *
+ * @param bo 代理关联
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(ImAgentAdminBo bo) {
+ ImAgentAdmin add = MapstructUtils.convert(bo, ImAgentAdmin.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改代理关联
+ *
+ * @param bo 代理关联
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(ImAgentAdminBo bo) {
+ ImAgentAdmin update = MapstructUtils.convert(bo, ImAgentAdmin.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ImAgentAdmin entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除代理关联信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+
+ @Override
+ public int insertAgentData(Long userId,String agentName) {
+ ImAgentAdmin agent = new ImAgentAdmin();
+ agent.setSysId(userId);
+ agent.setAgentName(agentName);
+
+ //随机在1-9与26个字母中生成18位的随机数设置为token
+ agent.setUniqueToken(RandomUtil.randomString(18));
+
+ return baseMapper.insert(agent);
+ }
+}
diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
index 9643bcd..5af4546 100644
--- a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
+++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
@@ -39,10 +39,7 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
/**
* 用户 业务层处理
@@ -557,6 +554,28 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
return baseMapper.selectVoList(lqw);
}
+ @Override
+ public SysUser getUserByUserName(String userName) {
+ return baseMapper.selectOne(new LambdaQueryWrapper()
+ .eq(SysUser::getUserName, userName));
+ }
+
+ @Override
+ public List getPermissionsByUserId(Long userId) {
+ List permissions = new ArrayList<>();
+ List userRoles = userRoleMapper.selectList(new LambdaQueryWrapper()
+ .eq(SysUserRole::getUserId, userId));
+ if(!userRoles.isEmpty()){
+ for(SysUserRole userRole : userRoles){
+ SysRoleVo role = roleMapper.selectRoleById(userRole.getRoleId());
+ if(!ObjectUtil.isNull(role)){
+ permissions.add(role.getRoleKey());
+ }
+ }
+ }
+ return permissions;
+ }
+
/**
* 通过用户ID查询用户账户
*
diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ImAgentAdminMapper.xml b/im-admin/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ImAgentAdminMapper.xml
new file mode 100644
index 0000000..7bab0ad
--- /dev/null
+++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ImAgentAdminMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+