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":
|