From 8ff5bc0a666ab266ec8fd851e8dea0cdf158236d Mon Sep 17 00:00:00 2001
From: La123123 <617330105@qq.com>
Date: Thu, 9 Apr 2026 16:00:53 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=A2=E6=9C=8D=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=E5=A5=97=E9=A4=90=E4=B8=8A=E9=99=90=E6=A0=A1=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../component/allocatePackagesDialog.vue | 106 ++++++++++++++++++
im-admin-ui/src/views/im/customer/index.vue | 18 ++-
.../im/controller/ImUserController.java | 5 +-
.../dromara/im/service/IImAgentService.java | 9 ++
.../dromara/im/service/IImUserService.java | 6 +
.../im/service/impl/ImAgentServiceImpl.java | 7 ++
.../im/service/impl/ImUserServiceImpl.java | 28 +++++
7 files changed, 175 insertions(+), 4 deletions(-)
create mode 100644 im-admin-ui/src/views/im/chatPackage/component/allocatePackagesDialog.vue
diff --git a/im-admin-ui/src/views/im/chatPackage/component/allocatePackagesDialog.vue b/im-admin-ui/src/views/im/chatPackage/component/allocatePackagesDialog.vue
new file mode 100644
index 0000000..4cfd252
--- /dev/null
+++ b/im-admin-ui/src/views/im/chatPackage/component/allocatePackagesDialog.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/im-admin-ui/src/views/im/customer/index.vue b/im-admin-ui/src/views/im/customer/index.vue
index 17e42c6..386e166 100644
--- a/im-admin-ui/src/views/im/customer/index.vue
+++ b/im-admin-ui/src/views/im/customer/index.vue
@@ -156,13 +156,27 @@ const data = reactive>({
nickName: undefined,
params: {}
},
- rules: {}
+ rules: {
+ headImage: [{ required: true, message: '头像不能为空', trigger: 'change' }],
+ userName: [
+ { required: true, message: '账号不能为空', trigger: 'change' },
+ { min: 2, max: 20, message: '账号长度在2到20个字符之间', trigger: 'change' }
+ ],
+ password: [
+ { required: true, message: '密码不能为空', trigger: 'change' },
+ { min: 6, max: 20, message: '密码长度在6到20个字符之间', trigger: 'change' }
+ ],
+ sex: [{ required: true, message: '性别不能为空', trigger: 'change' }],
+ nickName: [
+ { required: true, message: '昵称不能为空', trigger: 'change' },
+ { min: 2, max: 20, message: '昵称长度在2到20个字符之间', trigger: 'change' }
+ ]
+ }
});
const { queryParams, form, rules } = toRefs(data);
const { im_bool } = toRefs(proxy?.useDict('im_bool'));
const { sys_user_sex } = toRefs(proxy?.useDict('sys_user_sex'));
-console.log(sys_user_sex);
/** 提交按钮 */
const submitForm = () => {
userFormRef.value?.validate(async (valid: boolean) => {
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 4b21271..220403f 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
@@ -151,8 +151,6 @@ public class ImUserController extends BaseController {
@SaCheckPermission("im:user:listCustomer")
@GetMapping("/listCustomer")
public TableDataInfo listCustomer(ImUserBo bo, PageQuery pageQuery) {
- System.out.println("ImUserBo" + bo);
- System.out.println("PageQuery" + pageQuery);
return userService.queryPageListCustomer(bo, pageQuery);
}
@@ -174,6 +172,9 @@ public class ImUserController extends BaseController {
}
//检查是否已达当前角色使用的套餐客服上限
+ if(userService.isCustomerLimited()) {
+ return R.fail("客服已达上限");
+ }
// 设置默认值
String username = user.getUserName();
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 0ced1b4..86453c2 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
@@ -1,5 +1,6 @@
package org.dromara.im.service;
+import org.dromara.im.domain.ImAgent;
import org.dromara.im.domain.vo.ImAgentVo;
import org.dromara.im.domain.bo.ImAgentBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -79,4 +80,12 @@ public interface IImAgentService {
* @return 代理ID和名称的Map列表
*/
List