264 lines
7.3 KiB
Markdown
264 lines
7.3 KiB
Markdown
# 线索值班配置系统技术架构文档
|
||
|
||
## 1. 架构设计
|
||
|
||
```mermaid
|
||
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 | 响应消息 |
|
||
|
||
示例请求:
|
||
```json
|
||
{
|
||
"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. 服务器架构图
|
||
|
||
```mermaid
|
||
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 数据模型定义
|
||
|
||
```mermaid
|
||
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)
|
||
```sql
|
||
-- 创建值班配置表
|
||
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": |