针对多商家在线客服系统的客服用户表设计,我分析了您提供的原始设计并提出以下优化建议:
bcrypt
算法(增加salt
字段)
tenant_id
替代uuid
)
avator
→avatar
)
datetime
类型
CREATE TABLE `customer_service` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tenant_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '所属商家ID',
`pid` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '父级ID(用于子账号)',
`username` varchar(125) NOT NULL DEFAULT '' COMMENT '登录用户名',
`password` varchar(255) NOT NULL DEFAULT '' COMMENT '加密密码',
`salt` varchar(50) NOT NULL DEFAULT '' COMMENT '密码盐值',
`nickname` varchar(50) NOT NULL DEFAULT '' COMMENT '显示名称',
`avatar` varchar(500) NOT NULL DEFAULT '' COMMENT '头像URL',
`email` varchar(125) NOT NULL DEFAULT '' COMMENT '绑定邮箱',
`mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '绑定手机',
`role_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '角色(1普通客服2主管3管理员)',
`skill_groups` varchar(255) NOT NULL DEFAULT '' COMMENT '技能组(逗号分隔)',
`tags` varchar(255) NOT NULL DEFAULT '' COMMENT '标签(逗号分隔)',
`max_accept` int(10) unsigned NOT NULL DEFAULT 10 COMMENT '最大接待量',
`current_accept` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '当前接待量',
`online_status` tinyint(4) NOT NULL DEFAULT 2 COMMENT '在线状态(1在线2忙碌3小休4离线)',
`status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '状态(0禁用1正常)',
`login_fail_count` tinyint(4) NOT NULL DEFAULT 0 COMMENT '连续登录失败次数',
`lock_time` datetime DEFAULT NULL COMMENT '锁定时间',
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
`last_login_ip` varchar(50) NOT NULL DEFAULT '' COMMENT '最后登录IP',
`expire_time` datetime DEFAULT NULL COMMENT '账号过期时间',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_username_tenant` (`username`, `tenant_id`) COMMENT '商家下用户名唯一',
KEY `idx_tenant` (`tenant_id`) COMMENT '商家索引',
KEY `idx_mobile` (`mobile`) COMMENT '手机索引',
KEY `idx_email` (`email`) COMMENT '邮箱索引',
KEY `idx_pid` (`pid`) COMMENT '父账号索引',
KEY `idx_status` (`status`) COMMENT '状态索引',
KEY `idx_online` (`online_status`) COMMENT '在线状态索引',
KEY `idx_accept` (`current_accept`) COMMENT '接待量索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='多商家客服用户表';
tenant_id
明确区分不同商家客服
username
+tenant_id
)
salt
+加密存储,可兼容多种加密算法
skill_groups
和tags
实现客服技能标记
max_accept
和current_accept
控制接待负载
online_status
为4种状态
status
控制账号可用性
此设计在保持原有核心功能的基础上,增强了安全性、多商家支持能力和客服管理灵活性,更适合现代多商家在线客服系统的需求。