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