From 5251e113a68deb26944f56b797721794e9129a9b Mon Sep 17 00:00:00 2001 From: La123123 <617330105@qq.com> Date: Thu, 2 Apr 2026 09:16:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E4=B8=8E=E7=BE=A4=E7=BB=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../im/controller/ImUserController.java | 12 ++++++ .../im/domain/dto/BatchUpdateUserDto.java | 32 +++++++++++++++ .../dromara/im/service/IImUserService.java | 8 ++++ .../im/service/impl/ImUserServiceImpl.java | 39 +++++++++++++++++-- 4 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/dto/BatchUpdateUserDto.java diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserController.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserController.java index 571fca1..d0bde8f 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserController.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserController.java @@ -17,6 +17,7 @@ import org.dromara.common.web.core.BaseController; import org.dromara.im.domain.ImUser; import org.dromara.im.domain.bo.ImSensitiveWordBo; import org.dromara.im.domain.bo.ImUserBo; +import org.dromara.im.domain.dto.BatchUpdateUserDto; import org.dromara.im.domain.dto.ImUserBanDto; import org.dromara.im.domain.dto.ImUserUnbanDto; import org.dromara.im.domain.vo.ImUserVo; @@ -242,4 +243,15 @@ public class ImUserController extends BaseController { return R.ok(); } + + /** + * 批量修改用户信息(标签和群组) + */ + @SaCheckPermission("im:user:edit") + @Log(title = "用户", businessType = BusinessType.UPDATE) + @PostMapping("/updateBatchUser") + public R updateBatchUser(@RequestBody List list) { + userService.updateBatchUser(list); + return R.ok(); + } } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/dto/BatchUpdateUserDto.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/dto/BatchUpdateUserDto.java new file mode 100644 index 0000000..a558a56 --- /dev/null +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/dto/BatchUpdateUserDto.java @@ -0,0 +1,32 @@ +package org.dromara.im.domain.dto; + +import lombok.Data; + +import jakarta.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 批量修改用户信息 DTO + * + * @author Blue + * @date 2024-12-22 + */ +@Data +public class BatchUpdateUserDto { + + /** + * 用户 ID + */ + @NotEmpty(message = "用户 ID不能为空") + private Long id; + + /** + * 标签 ID 列表 (逗号分隔) + */ + private String labelIds; + + /** + * 群组 ID 列表 (逗号分隔) + */ + private String groupIds; +} diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserService.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserService.java index 565b35f..e26680a 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserService.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserService.java @@ -4,6 +4,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.im.domain.ImUser; import org.dromara.im.domain.bo.ImUserBo; +import org.dromara.im.domain.dto.BatchUpdateUserDto; import org.dromara.im.domain.dto.ImUserBanDto; import org.dromara.im.domain.dto.ImUserUnbanDto; import org.dromara.im.domain.vo.ImUserVo; @@ -136,4 +137,11 @@ public interface IImUserService { */ void updateCustomerById(ImUser bo); + /** + * 批量修改用户信息(标签和群组) + * + * @param list 批量修改参数 + */ + void updateBatchUser(List list); + } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java index 5fd8226..0998853 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java @@ -16,6 +16,7 @@ import org.dromara.im.constant.ImConstant; import org.dromara.im.constant.ImRedisKey; import org.dromara.im.domain.ImUser; import org.dromara.im.domain.bo.ImUserBo; +import org.dromara.im.domain.dto.BatchUpdateUserDto; import org.dromara.im.domain.dto.ImUserBanDto; import org.dromara.im.domain.dto.ImUserUnbanDto; import org.dromara.im.domain.vo.ImUserVo; @@ -24,10 +25,7 @@ import org.dromara.im.mq.ImRedisMQTemplate; import org.dromara.im.service.IImUserService; import org.springframework.stereotype.Service; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 用户Service业务层处理 @@ -242,4 +240,37 @@ public class ImUserServiceImpl implements IImUserService { public void updateCustomerById(ImUser bo) { baseMapper.updateById(bo); } + + @Override + public void updateBatchUser(List list) { + if(list == null || list.isEmpty()){ + return; + } + + for(BatchUpdateUserDto dto : list) { + if (dto.getId() == null || dto.getId() <= 0) { + return; + } + } + + List temp = new ArrayList<>(); + for(BatchUpdateUserDto dto : list) { + ImUser user = new ImUser(); + user.setId(dto.getId()); + + String labelIds = dto.getLabelIds(); + if(StrUtil.isNotEmpty(labelIds)){ + user.setLabelIds(labelIds); + } + + String groupIds = dto.getGroupIds(); + if(StrUtil.isNotEmpty(groupIds)){ + user.setGroupIds(groupIds); + } + + temp.add(user); + } + + baseMapper.updateBatchById(temp); + } }