7.3 KiB
7.3 KiB
线索值班配置系统技术架构文档
1. 架构设计
graph TD
A[用户浏览器] --> B[Spring Boot Web层]
B --> C[Service业务层]
C --> D[MyBatis数据访问层]
D --> E[MySQL数据库]
B --> F[Thymeleaf模板引擎]
C --> G[定时任务调度]
C --> H[缓存层Redis]
subgraph "前端层"
B
F
end
subgraph "业务层"
C
G
H
end
subgraph "数据层"
D
E
end
2. 技术描述
- 前端:Thymeleaf@3.0 + Bootstrap@4.6 + jQuery@3.6 + LayUI@2.6
- 后端:Spring Boot@2.5.14 + MyBatis@3.5 + Apache Shiro@1.10.1
- 数据库:MySQL@8.0
- 缓存:Redis@6.2(可选,用于分配算法优化)
3. 路由定义
| 路由 | 用途 |
|---|---|
| /system/dutyConfig | 值班配置管理主页面 |
| /system/dutyConfig/list | 获取值班配置列表数据 |
| /system/dutyConfig/add | 新增值班配置页面 |
| /system/dutyConfig/edit/{id} | 编辑值班配置页面 |
| /system/dutyConfig/save | 保存值班配置 |
| /system/dutyConfig/update | 更新值班配置 |
| /system/dutyConfig/remove/{ids} | 删除值班配置 |
| /system/dutyConfig/changeStatus | 修改配置状态 |
| /system/dutyConfig/getAvailableUsers | 获取可用用户列表 |
| /system/dutyConfig/statistics | 分配统计页面 |
4. API定义
4.1 核心API
值班配置管理相关接口
GET /system/dutyConfig/list
请求参数:
| 参数名称 | 参数类型 | 是否必填 | 描述 |
|---|---|---|---|
| pageNum | int | false | 页码,默认1 |
| pageSize | int | false | 每页大小,默认10 |
| configName | string | false | 配置名称(模糊查询) |
| status | string | false | 状态:0-禁用,1-启用 |
响应数据:
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| code | int | 响应状态码 |
| msg | string | 响应消息 |
| rows | array | 配置列表数据 |
| total | int | 总记录数 |
POST /system/dutyConfig/save
请求参数:
| 参数名称 | 参数类型 | 是否必填 | 描述 |
|---|---|---|---|
| configName | string | true | 配置名称 |
| startTime | string | true | 开始时间(HH:mm格式) |
| endTime | string | true | 结束时间(HH:mm格式) |
| userIds | string | true | 值班用户ID列表,逗号分隔 |
| status | string | true | 状态:0-禁用,1-启用 |
| remark | string | false | 备注信息 |
响应数据:
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| code | int | 响应状态码 |
| msg | string | 响应消息 |
示例请求:
{
"configName": "工作日白班",
"startTime": "09:00",
"endTime": "18:00",
"userIds": "1,2,3,4",
"status": "1",
"remark": "工作日白班值班安排"
}
GET /system/dutyConfig/getAvailableUsers
响应数据:
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| code | int | 响应状态码 |
| data | array | 可用用户列表 |
用户对象结构:
| 参数名称 | 参数类型 | 描述 |
|---|---|---|
| userId | long | 用户ID |
| userName | string | 用户姓名 |
| loginName | string | 登录名 |
| status | string | 用户状态 |
5. 服务器架构图
graph TD
A[Controller层] --> B[Service层]
B --> C[Mapper层]
C --> D[(MySQL数据库)]
B --> E[分配算法服务]
B --> F[缓存服务]
E --> G[轮询分配器]
E --> H[时间匹配器]
subgraph "Web层"
A
end
subgraph "业务层"
B
E
F
end
subgraph "数据访问层"
C
end
subgraph "算法组件"
G
H
end
6. 数据模型
6.1 数据模型定义
erDiagram
DUTY_CONFIG ||--o{ DUTY_CONFIG_USER : contains
SYS_USER ||--o{ DUTY_CONFIG_USER : assigned
DUTY_CONFIG ||--o{ CLEW_ASSIGN_LOG : generates
SYS_USER ||--o{ CLEW_ASSIGN_LOG : receives
DUTY_CONFIG {
bigint id PK
string config_name
string start_time
string end_time
string status
string remark
datetime create_time
datetime update_time
string create_by
string update_by
}
DUTY_CONFIG_USER {
bigint id PK
bigint config_id FK
bigint user_id FK
int sort_order
datetime create_time
}
SYS_USER {
bigint user_id PK
string user_name
string login_name
string status
datetime create_time
}
CLEW_ASSIGN_LOG {
bigint id PK
bigint clew_id
bigint config_id FK
bigint assigned_user_id FK
datetime assign_time
string assign_type
}
6.2 数据定义语言
值班配置表(duty_config)
-- 创建值班配置表
CREATE TABLE duty_config (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
config_name VARCHAR(100) NOT NULL COMMENT '配置名称',
start_time VARCHAR(5) NOT NULL COMMENT '开始时间(HH:mm)',
end_time VARCHAR(5) NOT NULL COMMENT '结束时间(HH:mm)',
status CHAR(1) DEFAULT '1' COMMENT '状态(0-禁用,1-启用)',
remark VARCHAR(500) COMMENT '备注',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
create_by VARCHAR(64) COMMENT '创建者',
update_by VARCHAR(64) COMMENT '更新者',
del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0-正常,1-删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班配置表';
-- 创建值班配置用户关联表
CREATE TABLE duty_config_user (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
config_id BIGINT NOT NULL COMMENT '配置ID',
user_id BIGINT NOT NULL COMMENT '用户ID',
sort_order INT DEFAULT 0 COMMENT '排序顺序',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_config_id (config_id),
INDEX idx_user_id (user_id),
FOREIGN KEY (config_id) REFERENCES duty_config(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班配置用户关联表';
-- 创建线索分配日志表
CREATE TABLE clew_assign_log (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
clew_id BIGINT COMMENT '线索ID',
config_id BIGINT COMMENT '使用的配置ID',
assigned_user_id BIGINT NOT NULL COMMENT '分配的用户ID',
assign_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '分配时间',
assign_type VARCHAR(20) DEFAULT 'AUTO' COMMENT '分配类型(AUTO-自动,MANUAL-手动)',
remark VARCHAR(200) COMMENT '备注',
INDEX idx_clew_id (clew_id),
INDEX idx_assigned_user (assigned_user_id),
INDEX idx_assign_time (assign_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='线索分配日志表';
-- 创建索引
CREATE INDEX idx_duty_config_time ON duty_config(start_time, end_time, status);
CREATE INDEX idx_duty_config_status ON duty_config(status, del_flag);
-- 插入初始数据
INSERT INTO duty_config (config_name, start_time, end_time,{"file_path": "/Users/clunt/java/RuoYi/.trae/documents/线索值班配置系统技术架构文档.md", "content":