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