RuoYi/.trae/documents/线索值班配置系统技术架构文档.md

264 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 线索值班配置系统技术架构文档
## 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":