调整docs中文件目录结构

This commit is contained in:
zlwu committed 2025-07-19 10:18:27 +08:00
1 parent 9562e32697
commit ccffeb3eff
74 files changed
+1246 -27

No files matched your search

@@ -0,0 +1,150 @@
# 学工管理-宿舍管理模块
## 📁 模块概述
本模块主要包含学工管理系统中宿舍管理相关的数据库设计和业务实现,重点关注宿舍管理人员的分配与设置功能,支持多维度管理和多级向下授权。
## 📋 模块结构
```
学工管理-宿舍管理/
├── README.md # 模块说明文档
├── 数据库设计/
│ ├── 宿舍管理数据库设计.md # 数据库设计文档
│ ├── 宿舍管理数据库初始化.sql # 数据库初始化脚本
│ └── 宿舍管理数据字典.sql # 数据字典脚本
└── 技术设计/
└── 宿舍管理技术架构设计.md # 技术架构设计文档
```
## 🗄️ 数据库设计
### 核心数据表
#### 1. 宿舍管理维度表
- **dorm_management_dimension** - 宿舍管理维度定义表
- **dorm_campus** - 校区信息表
- **dorm_area** - 宿舍区信息表
- **dorm_building** - 宿舍楼信息表
- **dorm_college** - 二级学院信息表
#### 2. 管理人员表
- **dorm_manager** - 宿舍管理人员基本信息表
- **dorm_manager_position** - 管理人员职位表
- **dorm_manager_assignment** - 管理人员分配表
#### 3. 权限管理表
- **dorm_permission_level** - 权限层级表
- **dorm_manager_permission** - 管理人员权限表
- **dorm_permission_log** - 权限变更日志表
#### 4. 管理效果评估表
- **dorm_management_stats** - 管理数据统计表
- **dorm_permission_usage** - 权限使用记录表
## 🎯 核心功能
### 1. 多维度管理人员分配
- 支持全校、校区、宿舍区、宿舍楼、二级学院5个维度的管理人员配置
- 支持多维度组合配置
- 支持管理范围的动态调整
### 2. 多级向下授权功能
- 建立5级权限管理体系
- 支持权限的逐级向下传递
- 支持权限继承和覆盖机制
### 3. 权限配置管理
- 功能权限和数据权限的精细化配置
- 权限审批流程管理
- 权限使用情况监控
### 4. 管理效果评估
- 管理数据统计和分析
- 权限使用效果评估
- 管理效率优化建议
## 🔧 技术特点
### 1. 数据库设计特点
- **分层权限设计**:支持5级权限层级的数据权限控制
- **多维度关联**:支持按不同维度进行数据关联和查询
- **审计日志**:完整的权限变更和操作日志记录
- **数据安全**:敏感信息加密存储
### 2. 性能优化
- **索引优化**:针对多维度查询的复合索引设计
- **分区策略**:大数据量的分区存储策略
- **缓存机制**:权限验证的缓存优化
### 3. 扩展性设计
- **维度扩展**:支持新增管理维度的扩展
- **权限扩展**:支持新增权限类型的扩展
- **功能扩展**:支持新增管理功能的扩展
## 📊 数据关系
### 1. 维度关系
```
校区 (campus)
├── 宿舍区 (area)
│ └── 宿舍楼 (building)
└── 二级学院 (college)
```
### 2. 权限层级关系
```
学生处宿舍管理负责人 (Level 1)
├── 校区宿舍管理负责人 (Level 2)
│ ├── 宿舍区主管 (Level 3)
│ │ └── 宿舍楼管理员 (Level 4)
│ └── 二级学院宿舍管理负责人 (Level 5)
```
### 3. 管理人员分配关系
```
管理人员 (manager)
├── 职位信息 (position)
├── 分配信息 (assignment)
├── 权限信息 (permission)
└── 使用记录 (usage)
```
## 🔗 相关文档
### 需求文档
- [宿舍管理人员分配需求分析](../../需求文档/学工管理宿舍管理需求/宿舍管理人员分配需求分析.md)
### 项目规范
- [后端开发规范](../../.cursor/cursorrules-backend.md)
- [数据库设计规范](../../设计文档/database/mysql-database-standard.md)
### 相关模块
- [学生信息管理](../../业务模块/学工管理-学生信息管理/)
- [物业报修管理](../../业务模块/property-maintenance/)
## 📝 开发说明
### 1. 开发顺序
1. **数据库设计**:完成数据库表结构设计
2. **基础功能**:实现多维度管理人员分配
3. **权限功能**:实现多级向下授权功能
4. **评估功能**:实现管理效果评估功能
### 2. 测试重点
- 多维度数据权限控制测试
- 权限继承和覆盖机制测试
- 大量数据并发访问测试
- 权限变更审计日志测试
### 3. 部署要求
- MySQL 8.0+ 数据库环境
- 支持事务和锁机制
- 支持存储过程和触发器
- 支持数据备份和恢复
---
**📞 联系方式**:如有问题或建议,请联系开发团队
**📅 最后更新**:2025-01-14
**🔄 模块状态**:设计阶段
@@ -0,0 +1,574 @@
# 宿舍管理数据库设计文档
## 📋 文档信息
| 项目 | 信息 |
|------|------|
| **项目名称** | 校园管理系统 - 宿舍管理模块 |
| **数据库版本** | MySQL 8.0+ |
| **文档版本** | V1.0.0 |
| **创建时间** | 2025-01-14 |
| **创建人员** | 数据库设计团队 |
| **审核状态** | 待审核 |
## 🎯 设计目标
### 核心目标
- 支持多维度宿舍管理人员分配(全校、校区、宿舍区、宿舍楼、二级学院)
- 实现多级向下授权功能(5级权限体系)
- 支持权限的动态配置和调整
- 提供完整的管理效果评估功能
- 确保数据安全和审计追踪
### 设计原则
- **分层设计**:按权限层级进行数据分层
- **维度扩展**:支持管理维度的灵活扩展
- **权限控制**:严格的数据权限控制机制
- **审计追踪**:完整的操作日志和变更记录
- **性能优化**:针对多维度查询的性能优化
## 🗄️ 数据库表设计
### 1. 宿舍管理维度表
#### 1.1 宿舍管理维度定义表 (dorm_management_dimension)
**表说明**:定义宿舍管理的各个维度,支持维度的灵活扩展
```sql
CREATE TABLE `dorm_management_dimension` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`dimension_code` varchar(50) NOT NULL COMMENT '维度编码',
`dimension_name` varchar(100) NOT NULL COMMENT '维度名称',
`dimension_level` int(11) NOT NULL COMMENT '维度层级(1-5)',
`parent_dimension_id` bigint(20) DEFAULT NULL COMMENT '父维度ID',
`description` varchar(500) DEFAULT NULL COMMENT '维度描述',
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_dimension_code` (`dimension_code`),
KEY `idx_parent_dimension` (`parent_dimension_id`),
KEY `idx_dimension_level` (`dimension_level`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍管理维度定义表';
```
#### 1.2 校区信息表 (dorm_campus)
**表说明**:存储校区基本信息
```sql
CREATE TABLE `dorm_campus` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`campus_code` varchar(50) NOT NULL COMMENT '校区编码',
`campus_name` varchar(100) NOT NULL COMMENT '校区名称',
`campus_address` varchar(200) DEFAULT NULL COMMENT '校区地址',
`campus_phone` varchar(20) DEFAULT NULL COMMENT '校区联系电话',
`campus_manager` varchar(50) DEFAULT NULL COMMENT '校区负责人',
`campus_description` varchar(500) DEFAULT NULL COMMENT '校区描述',
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_campus_code` (`campus_code`),
KEY `idx_campus_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校区信息表';
```
#### 1.3 宿舍区信息表 (dorm_area)
**表说明**:存储宿舍区基本信息,关联校区
```sql
CREATE TABLE `dorm_area` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`area_code` varchar(50) NOT NULL COMMENT '宿舍区编码',
`area_name` varchar(100) NOT NULL COMMENT '宿舍区名称',
`campus_id` bigint(20) NOT NULL COMMENT '所属校区ID',
`area_address` varchar(200) DEFAULT NULL COMMENT '宿舍区地址',
`area_phone` varchar(20) DEFAULT NULL COMMENT '宿舍区联系电话',
`area_manager` varchar(50) DEFAULT NULL COMMENT '宿舍区负责人',
`building_count` int(11) DEFAULT 0 COMMENT '宿舍楼数量',
`student_count` int(11) DEFAULT 0 COMMENT '学生数量',
`area_description` varchar(500) DEFAULT NULL COMMENT '宿舍区描述',
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_area_code` (`area_code`),
KEY `idx_campus_id` (`campus_id`),
KEY `idx_area_status` (`status`),
CONSTRAINT `fk_area_campus` FOREIGN KEY (`campus_id`) REFERENCES `dorm_campus` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍区信息表';
```
#### 1.4 宿舍楼信息表 (dorm_building)
**表说明**:存储宿舍楼基本信息,关联宿舍区
```sql
CREATE TABLE `dorm_building` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`building_code` varchar(50) NOT NULL COMMENT '宿舍楼编码',
`building_name` varchar(100) NOT NULL COMMENT '宿舍楼名称',
`area_id` bigint(20) NOT NULL COMMENT '所属宿舍区ID',
`campus_id` bigint(20) NOT NULL COMMENT '所属校区ID',
`building_address` varchar(200) DEFAULT NULL COMMENT '宿舍楼地址',
`building_phone` varchar(20) DEFAULT NULL COMMENT '宿舍楼联系电话',
`building_manager` varchar(50) DEFAULT NULL COMMENT '宿舍楼负责人',
`floor_count` int(11) DEFAULT 0 COMMENT '楼层数',
`room_count` int(11) DEFAULT 0 COMMENT '房间数',
`student_count` int(11) DEFAULT 0 COMMENT '学生数量',
`building_type` char(1) DEFAULT '1' COMMENT '宿舍楼类型(1男生楼 2女生楼 3混合楼)',
`building_description` varchar(500) DEFAULT NULL COMMENT '宿舍楼描述',
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_building_code` (`building_code`),
KEY `idx_area_id` (`area_id`),
KEY `idx_campus_id` (`campus_id`),
KEY `idx_building_status` (`status`),
CONSTRAINT `fk_building_area` FOREIGN KEY (`area_id`) REFERENCES `dorm_area` (`id`),
CONSTRAINT `fk_building_campus` FOREIGN KEY (`campus_id`) REFERENCES `dorm_campus` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍楼信息表';
```
#### 1.5 二级学院信息表 (dorm_college)
**表说明**:存储二级学院基本信息
```sql
CREATE TABLE `dorm_college` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`college_code` varchar(50) NOT NULL COMMENT '学院编码',
`college_name` varchar(100) NOT NULL COMMENT '学院名称',
`campus_id` bigint(20) DEFAULT NULL COMMENT '所属校区ID',
`college_address` varchar(200) DEFAULT NULL COMMENT '学院地址',
`college_phone` varchar(20) DEFAULT NULL COMMENT '学院联系电话',
`college_manager` varchar(50) DEFAULT NULL COMMENT '学院负责人',
`student_count` int(11) DEFAULT 0 COMMENT '学生数量',
`college_description` varchar(500) DEFAULT NULL COMMENT '学院描述',
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_college_code` (`college_code`),
KEY `idx_campus_id` (`campus_id`),
KEY `idx_college_status` (`status`),
CONSTRAINT `fk_college_campus` FOREIGN KEY (`campus_id`) REFERENCES `dorm_campus` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='二级学院信息表';
```
### 2. 管理人员表
#### 2.1 宿舍管理人员基本信息表 (dorm_manager)
**表说明**:存储宿舍管理人员的基本信息
```sql
CREATE TABLE `dorm_manager` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`manager_code` varchar(50) NOT NULL COMMENT '管理人员编码',
`manager_name` varchar(50) NOT NULL COMMENT '管理人员姓名',
`gender` char(1) DEFAULT NULL COMMENT '性别(0男 1女 2未知)',
`birth_date` date DEFAULT NULL COMMENT '出生日期',
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
`phone` varchar(11) DEFAULT NULL COMMENT '手机号码',
`email` varchar(100) DEFAULT NULL COMMENT '邮箱地址',
`office_phone` varchar(20) DEFAULT NULL COMMENT '办公电话',
`department` varchar(100) DEFAULT NULL COMMENT '所属部门',
`position` varchar(100) DEFAULT NULL COMMENT '职位',
`hire_date` date DEFAULT NULL COMMENT '入职时间',
`work_status` char(1) DEFAULT '0' COMMENT '工作状态(0在职 1离职 2休假)',
`education` varchar(50) DEFAULT NULL COMMENT '学历',
`major` varchar(100) DEFAULT NULL COMMENT '专业',
`certificates` varchar(500) DEFAULT NULL COMMENT '相关证书',
`manager_description` varchar(500) DEFAULT NULL COMMENT '个人描述',
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_manager_code` (`manager_code`),
UNIQUE KEY `uk_id_card` (`id_card`),
KEY `idx_manager_name` (`manager_name`),
KEY `idx_phone` (`phone`),
KEY `idx_manager_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍管理人员基本信息表';
```
#### 2.2 管理人员职位表 (dorm_manager_position)
**表说明**:存储管理人员的职位信息
```sql
CREATE TABLE `dorm_manager_position` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`position_code` varchar(50) NOT NULL COMMENT '职位编码',
`position_name` varchar(100) NOT NULL COMMENT '职位名称',
`position_level` int(11) NOT NULL COMMENT '职位层级(1-5)',
`parent_position_id` bigint(20) DEFAULT NULL COMMENT '上级职位ID',
`position_description` varchar(500) DEFAULT NULL COMMENT '职位描述',
`permission_level` int(11) DEFAULT NULL COMMENT '权限层级',
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_position_code` (`position_code`),
KEY `idx_position_level` (`position_level`),
KEY `idx_parent_position` (`parent_position_id`),
KEY `idx_position_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理人员职位表';
```
#### 2.3 管理人员分配表 (dorm_manager_assignment)
**表说明**:存储管理人员的分配信息,支持多维度分配
```sql
CREATE TABLE `dorm_manager_assignment` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`manager_id` bigint(20) NOT NULL COMMENT '管理人员ID',
`position_id` bigint(20) NOT NULL COMMENT '职位ID',
`dimension_type` varchar(50) NOT NULL COMMENT '维度类型(campus/area/building/college)',
`dimension_id` bigint(20) NOT NULL COMMENT '维度ID',
`assignment_type` char(1) DEFAULT '1' COMMENT '分配类型(1主要 2辅助 3临时)',
`start_date` date NOT NULL COMMENT '分配开始日期',
`end_date` date DEFAULT NULL COMMENT '分配结束日期',
`assignment_reason` varchar(500) DEFAULT NULL COMMENT '分配原因',
`approval_status` char(1) DEFAULT '0' COMMENT '审批状态(0待审批 1已通过 2已拒绝)',
`approval_by` bigint(20) DEFAULT NULL COMMENT '审批人',
`approval_time` datetime DEFAULT NULL COMMENT '审批时间',
`approval_remark` varchar(500) DEFAULT NULL COMMENT '审批备注',
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_manager_id` (`manager_id`),
KEY `idx_position_id` (`position_id`),
KEY `idx_dimension_type` (`dimension_type`),
KEY `idx_dimension_id` (`dimension_id`),
KEY `idx_assignment_status` (`status`),
KEY `idx_approval_status` (`approval_status`),
CONSTRAINT `fk_assignment_manager` FOREIGN KEY (`manager_id`) REFERENCES `dorm_manager` (`id`),
CONSTRAINT `fk_assignment_position` FOREIGN KEY (`position_id`) REFERENCES `dorm_manager_position` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理人员分配表';
```
### 3. 权限管理表
#### 3.1 权限层级表 (dorm_permission_level)
**表说明**:定义权限层级信息
```sql
CREATE TABLE `dorm_permission_level` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`level_code` varchar(50) NOT NULL COMMENT '权限层级编码',
`level_name` varchar(100) NOT NULL COMMENT '权限层级名称',
`level_value` int(11) NOT NULL COMMENT '权限层级值(1-5)',
`parent_level_id` bigint(20) DEFAULT NULL COMMENT '上级权限层级ID',
`level_description` varchar(500) DEFAULT NULL COMMENT '权限层级描述',
`data_scope` varchar(200) DEFAULT NULL COMMENT '数据权限范围',
`function_permissions` varchar(500) DEFAULT NULL COMMENT '功能权限列表',
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_level_code` (`level_code`),
UNIQUE KEY `uk_level_value` (`level_value`),
KEY `idx_parent_level` (`parent_level_id`),
KEY `idx_level_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限层级表';
```
#### 3.2 管理人员权限表 (dorm_manager_permission)
**表说明**:存储管理人员的具体权限配置
```sql
CREATE TABLE `dorm_manager_permission` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`manager_id` bigint(20) NOT NULL COMMENT '管理人员ID',
`permission_level_id` bigint(20) NOT NULL COMMENT '权限层级ID',
`dimension_type` varchar(50) NOT NULL COMMENT '维度类型',
`dimension_id` bigint(20) NOT NULL COMMENT '维度ID',
`data_permissions` varchar(500) DEFAULT NULL COMMENT '数据权限配置',
`function_permissions` varchar(500) DEFAULT NULL COMMENT '功能权限配置',
`permission_type` char(1) DEFAULT '1' COMMENT '权限类型(1继承 2授权 3临时)',
`grant_by` bigint(20) DEFAULT NULL COMMENT '授权人',
`grant_time` datetime DEFAULT NULL COMMENT '授权时间',
`expire_time` datetime DEFAULT NULL COMMENT '权限过期时间',
`permission_status` char(1) DEFAULT '0' COMMENT '权限状态(0有效 1过期 2停用)',
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_manager_id` (`manager_id`),
KEY `idx_permission_level` (`permission_level_id`),
KEY `idx_dimension_type` (`dimension_type`),
KEY `idx_dimension_id` (`dimension_id`),
KEY `idx_permission_status` (`permission_status`),
KEY `idx_grant_by` (`grant_by`),
CONSTRAINT `fk_permission_manager` FOREIGN KEY (`manager_id`) REFERENCES `dorm_manager` (`id`),
CONSTRAINT `fk_permission_level` FOREIGN KEY (`permission_level_id`) REFERENCES `dorm_permission_level` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理人员权限表';
```
#### 3.3 权限变更日志表 (dorm_permission_log)
**表说明**:记录权限变更的详细日志
```sql
CREATE TABLE `dorm_permission_log` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`manager_id` bigint(20) NOT NULL COMMENT '管理人员ID',
`operation_type` varchar(50) NOT NULL COMMENT '操作类型(grant/revoke/modify)',
`permission_level_id` bigint(20) DEFAULT NULL COMMENT '权限层级ID',
`dimension_type` varchar(50) DEFAULT NULL COMMENT '维度类型',
`dimension_id` bigint(20) DEFAULT NULL COMMENT '维度ID',
`old_permissions` text DEFAULT NULL COMMENT '变更前权限配置',
`new_permissions` text DEFAULT NULL COMMENT '变更后权限配置',
`operation_reason` varchar(500) DEFAULT NULL COMMENT '操作原因',
`operator_id` bigint(20) NOT NULL COMMENT '操作人ID',
`operator_name` varchar(50) NOT NULL COMMENT '操作人姓名',
`operation_time` datetime NOT NULL COMMENT '操作时间',
`ip_address` varchar(50) DEFAULT NULL COMMENT '操作IP地址',
`user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
`operation_result` char(1) DEFAULT '1' COMMENT '操作结果(0失败 1成功)',
`error_message` varchar(500) DEFAULT NULL COMMENT '错误信息',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_manager_id` (`manager_id`),
KEY `idx_operation_type` (`operation_type`),
KEY `idx_operator_id` (`operator_id`),
KEY `idx_operation_time` (`operation_time`),
KEY `idx_operation_result` (`operation_result`),
CONSTRAINT `fk_log_manager` FOREIGN KEY (`manager_id`) REFERENCES `dorm_manager` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限变更日志表';
```
### 4. 管理效果评估表
#### 4.1 管理数据统计表 (dorm_management_stats)
**表说明**:存储管理效果的统计数据
```sql
CREATE TABLE `dorm_management_stats` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`manager_id` bigint(20) NOT NULL COMMENT '管理人员ID',
`dimension_type` varchar(50) NOT NULL COMMENT '维度类型',
`dimension_id` bigint(20) NOT NULL COMMENT '维度ID',
`stats_date` date NOT NULL COMMENT '统计日期',
`stats_type` varchar(50) NOT NULL COMMENT '统计类型(daily/weekly/monthly)',
`building_count` int(11) DEFAULT 0 COMMENT '管理宿舍楼数量',
`student_count` int(11) DEFAULT 0 COMMENT '管理学生数量',
`task_completed` int(11) DEFAULT 0 COMMENT '完成任务数量',
`task_total` int(11) DEFAULT 0 COMMENT '总任务数量',
`problem_resolved` int(11) DEFAULT 0 COMMENT '解决问题数量',
`problem_total` int(11) DEFAULT 0 COMMENT '总问题数量',
`satisfaction_score` decimal(3,2) DEFAULT 0.00 COMMENT '满意度评分',
`efficiency_score` decimal(3,2) DEFAULT 0.00 COMMENT '效率评分',
`quality_score` decimal(3,2) DEFAULT 0.00 COMMENT '质量评分',
`overall_score` decimal(3,2) DEFAULT 0.00 COMMENT '综合评分',
`stats_data` json DEFAULT NULL COMMENT '详细统计数据',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_stats_unique` (`manager_id`, `dimension_type`, `dimension_id`, `stats_date`, `stats_type`),
KEY `idx_manager_id` (`manager_id`),
KEY `idx_dimension_type` (`dimension_type`),
KEY `idx_dimension_id` (`dimension_id`),
KEY `idx_stats_date` (`stats_date`),
KEY `idx_stats_type` (`stats_type`),
CONSTRAINT `fk_stats_manager` FOREIGN KEY (`manager_id`) REFERENCES `dorm_manager` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理数据统计表';
```
#### 4.2 权限使用记录表 (dorm_permission_usage)
**表说明**:记录权限使用的详细情况
```sql
CREATE TABLE `dorm_permission_usage` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`manager_id` bigint(20) NOT NULL COMMENT '管理人员ID',
`permission_level_id` bigint(20) NOT NULL COMMENT '权限层级ID',
`dimension_type` varchar(50) NOT NULL COMMENT '维度类型',
`dimension_id` bigint(20) NOT NULL COMMENT '维度ID',
`function_name` varchar(100) NOT NULL COMMENT '功能名称',
`operation_type` varchar(50) NOT NULL COMMENT '操作类型(view/edit/delete/approve)',
`operation_time` datetime NOT NULL COMMENT '操作时间',
`operation_result` char(1) DEFAULT '1' COMMENT '操作结果(0失败 1成功)',
`response_time` int(11) DEFAULT NULL COMMENT '响应时间(毫秒)',
`ip_address` varchar(50) DEFAULT NULL COMMENT '操作IP地址',
`user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
`session_id` varchar(100) DEFAULT NULL COMMENT '会话ID',
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_manager_id` (`manager_id`),
KEY `idx_permission_level` (`permission_level_id`),
KEY `idx_dimension_type` (`dimension_type`),
KEY `idx_dimension_id` (`dimension_id`),
KEY `idx_function_name` (`function_name`),
KEY `idx_operation_time` (`operation_time`),
KEY `idx_operation_result` (`operation_result`),
CONSTRAINT `fk_usage_manager` FOREIGN KEY (`manager_id`) REFERENCES `dorm_manager` (`id`),
CONSTRAINT `fk_usage_permission_level` FOREIGN KEY (`permission_level_id`) REFERENCES `dorm_permission_level` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限使用记录表';
```
## 🔗 表关系设计
### 1. 维度关系图
```
dorm_campus (校区)
├── dorm_area (宿舍区)
│ └── dorm_building (宿舍楼)
└── dorm_college (二级学院)
```
### 2. 权限层级关系图
```
dorm_permission_level (权限层级)
├── Level 1: 学生处宿舍管理负责人
├── Level 2: 校区宿舍管理负责人
├── Level 3: 宿舍区主管
├── Level 4: 宿舍楼管理员
└── Level 5: 二级学院宿舍管理负责人
```
### 3. 管理人员关系图
```
dorm_manager (管理人员)
├── dorm_manager_position (职位信息)
├── dorm_manager_assignment (分配信息)
├── dorm_manager_permission (权限信息)
├── dorm_management_stats (统计信息)
└── dorm_permission_usage (使用记录)
```
## 📊 索引设计
### 1. 主键索引
- 所有表都使用 `bigint(20)` 类型的自增主键
- 主键命名统一为 `id`
### 2. 唯一索引
- 编码字段:`manager_code`, `campus_code`, `area_code`, `building_code`, `college_code`
- 身份证号:`id_card`
- 权限层级值:`level_value`
### 3. 复合索引
- 管理人员分配:`(manager_id, dimension_type, dimension_id)`
- 权限配置:`(manager_id, permission_level_id, dimension_type)`
- 统计数据:`(manager_id, dimension_type, dimension_id, stats_date)`
### 4. 普通索引
- 状态字段:`status`, `approval_status`, `permission_status`
- 时间字段:`create_time`, `update_time`, `operation_time`
- 关联字段:`campus_id`, `area_id`, `position_id`
## 🔒 数据安全设计
### 1. 敏感信息加密
- 身份证号:使用AES加密存储
- 手机号码:部分脱敏显示
- 邮箱地址:部分脱敏显示
### 2. 权限控制
- 数据权限:基于维度的数据访问控制
- 功能权限:基于角色的功能访问控制
- 操作权限:基于权限层级的操作控制
### 3. 审计日志
- 权限变更:完整的权限变更记录
- 操作日志:详细的操作行为记录
- 数据变更:重要数据的变更追踪
## 📈 性能优化设计
### 1. 分区策略
- 按时间分区:`dorm_permission_usage` 表按月份分区
- 按维度分区:`dorm_management_stats` 表按维度分区
### 2. 缓存策略
- 权限缓存:管理人员权限信息缓存
- 维度缓存:维度信息缓存
- 统计缓存:统计数据缓存
### 3. 查询优化
- 索引优化:针对多维度查询的复合索引
- SQL优化:避免全表扫描的查询语句
- 分页优化:大数据量的分页查询优化
## 📝 变更记录
| 版本 | 日期 | 变更内容 | 变更人 |
|------|------|----------|--------|
| V1.0.0 | 2025-01-14 | 初始版本创建 | 数据库设计团队 |