From 49899ca53787cfb6104c1cc0539c04297c681fee Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Sun, 20 Jul 2025 13:21:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AE=BF=E7=AE=A1=E9=9C=80?= =?UTF-8?q?=E6=B1=82=E7=9A=84sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../数据库设计/宿舍管理数据库设计.md | 540 +++++++----------- docs/设计文档/database/SQL文件说明.md | 229 ++++---- .../宿舍管理数据库建表脚本.sql | 260 +++++++++ 3 files changed, 548 insertions(+), 481 deletions(-) create mode 100644 docs/设计文档/database/学工管理-宿舍管理/宿舍管理数据库建表脚本.sql diff --git a/docs/业务模块/学工管理-宿舍管理/数据库设计/宿舍管理数据库设计.md b/docs/业务模块/学工管理-宿舍管理/数据库设计/宿舍管理数据库设计.md index 0b51e1cd..fae3231f 100644 --- a/docs/业务模块/学工管理-宿舍管理/数据库设计/宿舍管理数据库设计.md +++ b/docs/业务模块/学工管理-宿舍管理/数据库设计/宿舍管理数据库设计.md @@ -35,53 +35,29 @@ **表说明**:定义宿舍管理的各个维度,支持维度的灵活扩展 ```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` ( +DROP TABLE IF EXISTS `xg_dorm_campus`; +CREATE TABLE `xg_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停用)', + `sort_order` int(11) DEFAULT '0' COMMENT '排序号', `deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)', - `tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号', + `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`) + UNIQUE KEY `uk_campus_code` (`campus_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校区信息表'; ``` @@ -89,56 +65,18 @@ CREATE TABLE `dorm_campus` ( **表说明**:存储宿舍区基本信息,关联校区 ```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` ( +DROP TABLE IF EXISTS `xg_dorm_building`; +CREATE TABLE `xg_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停用)', + `sort_order` int(11) DEFAULT '0' COMMENT '排序号', `deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)', - `tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号', + `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 '更新者', @@ -148,136 +86,158 @@ CREATE TABLE `dorm_building` ( 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) -**表说明**:存储二级学院基本信息 +#### 1.4 宿舍楼信息表 (dorm_building) +**表说明**:存储宿舍楼基本信息,关联宿舍区 ```sql -CREATE TABLE `dorm_college` ( +DROP TABLE IF EXISTS `xg_dorm_area`; +CREATE TABLE `xg_dorm_area` ( `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停用)', + `area_code` varchar(50) NOT NULL COMMENT '宿舍区编码', + `area_name` varchar(100) NOT NULL COMMENT '宿舍区名称', + `campus_id` bigint(20) NOT NULL COMMENT '所属校区ID', + `area_description` varchar(500) DEFAULT NULL COMMENT '宿舍区描述', + `sort_order` int(11) DEFAULT '0' COMMENT '排序号', `deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)', - `tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号', + `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`), + UNIQUE KEY `uk_area_code` (`area_code`), + KEY `idx_campus_id` (`campus_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍区信息表'; +``` + +#### 1.5 宿舍房间表 (dorm_room) +**表说明**:存储宿舍房间基本信息,关联宿舍楼,包含楼层属性 + +```sql +DROP TABLE IF EXISTS `xg_dorm_room`; +CREATE TABLE `xg_dorm_room` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `room_code` varchar(50) NOT NULL COMMENT '房间编号', + `room_name` varchar(100) NOT NULL COMMENT '房间名称', + `building_id` bigint(20) NOT NULL COMMENT '所属宿舍楼ID', + `floor_num` int(11) NOT NULL COMMENT '楼层', + `room_type` char(1) DEFAULT '1' COMMENT '房间类型(1学生宿舍 3教师宿舍)', + `actual_beds` int(11) DEFAULT 4 COMMENT '实际床位数', + `room_area` decimal(10,2) DEFAULT NULL COMMENT '房间面积(平方米)', + `room_status` char(1) DEFAULT '0' COMMENT '房间状态(0可用 1维修中 2已报废)', + `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_room_code` (`room_code`), + KEY `idx_building_id` (`building_id`), + KEY `idx_floor_num` (`floor_num`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍房间信息表'; +``` + +#### 1.6 宿舍床位表 (dorm_bed) +**表说明**:存储宿舍床位基本信息,关联宿舍房间 + +```sql +DROP TABLE IF EXISTS `xg_dorm_bed`; +CREATE TABLE `xg_dorm_bed` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `bed_code` varchar(50) NOT NULL COMMENT '床位编号', + `bed_name` varchar(100) NOT NULL COMMENT '床位名称', + `room_id` bigint(20) NOT NULL COMMENT '所属房间ID', + `bed_type` char(1) DEFAULT '1' COMMENT '床位类型(1下铺 2上铺 3中铺 4独立床)', + `bed_status` char(1) DEFAULT '0' COMMENT '床位状态(0空闲 1已分配 2维修中)', + `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_bed_code` (`bed_code`), + KEY `idx_room_id` (`room_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍床位信息表'; + +DROP TABLE IF EXISTS `xg_dorm_bed_student`; +CREATE TABLE `xg_dorm_bed_student` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `college_id` bigint(20) NOT NULL COMMENT '分配学院ID', + `student_id` bigint(20) NOT NULL COMMENT '分配学生ID', + `bed_id` bigint(20) NOT NULL COMMENT '床位ID', + `room_id` bigint(20) NOT NULL COMMENT '房间ID', + `building_id` bigint(20) NOT NULL COMMENT '宿舍楼ID', + `area_id` bigint(20) NOT NULL COMMENT '宿舍区ID', + `campus_id` bigint(20) NOT NULL COMMENT '校区ID', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1已退宿)', + `assign_time` datetime NOT NULL COMMENT '分配时间', + `checkout_time` datetime 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_student_bed` (`student_id`, `bed_id`), + KEY `idx_college_id` (`college_id`), + KEY `idx_student_id` (`student_id`), + KEY `idx_bed_id` (`bed_id`), + KEY `idx_room_id` (`room_id`), + KEY `idx_building_id` (`building_id`), + KEY `idx_area_id` (`area_id`), 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='二级学院信息表'; + KEY `idx_assign_time` (`assign_time`), +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='床位学生分配关系表'; ``` -### 2. 管理人员表 +### 2. 宿舍管理人员相关表 -#### 2.1 宿舍管理人员基本信息表 (dorm_manager) -**表说明**:存储宿舍管理人员的基本信息 +#### 2.1 宿舍管理员表 (dorm_manager) +**表说明**:存储全校、校区、宿舍区、宿舍楼管理员的基本信息 ```sql -CREATE TABLE `dorm_manager` ( +DROP TABLE IF EXISTS `xg_dorm_manager`; +CREATE TABLE `xg_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 '排序号', + `manager_name` varchar(100) NOT NULL COMMENT '管理员姓名', + `manager_type` char(1) NOT NULL COMMENT '管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)', + `manager_level` int(11) DEFAULT 1 COMMENT '管理级别(1-5,1为最高)', + `user_id` bigint(20) DEFAULT NULL COMMENT '关联用户ID', + `phone` varchar(20) DEFAULT NULL COMMENT '联系电话', + `gender` char(1) DEFAULT '0' COMMENT '性别(0男 1女 2未知)', `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', `deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)', - `tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号', + `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='宿舍管理人员基本信息表'; -``` + KEY `idx_user_id` (`user_id`), + KEY `idx_manager_type` (`manager_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍管理员信息表'; -#### 2.2 管理人员职位表 (dorm_manager_position) -**表说明**:存储管理人员的职位信息 - -```sql -CREATE TABLE `dorm_manager_position` ( +DROP TABLE IF EXISTS `xg_dorm_manager_source`; +CREATE TABLE `xg_dorm_manager_source` ( `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停用)', + `manager_id` bigint(20) NOT NULL COMMENT '管理员ID', + `permission_type` char(1) DEFAULT '1' COMMENT '权限类型(1查看 2编辑 3完全管理)', + `auth_type` char(1) NOT NULL COMMENT '授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)', + `auth_source` bigint(20) DEFAULT NULL COMMENT '授权来源ID(对应校区ID或宿舍区ID或楼栋ID)', + `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 '租户编号', + `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 '更新者', @@ -285,203 +245,94 @@ CREATE TABLE `dorm_manager_assignment` ( `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='管理人员分配表'; + KEY `idx_auth_source` (`auth_source`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员授权关系表'; + ``` -### 3. 权限管理表 - -#### 3.1 权限层级表 (dorm_permission_level) -**表说明**:定义权限层级信息 +#### 2.2 管理员宿舍楼权限关系表 (dorm_manager_building) +**表说明**:存储管理员与宿舍楼的权限绑定关系 ```sql -CREATE TABLE `dorm_permission_level` ( + + +DROP TABLE IF EXISTS `xg_dorm_manager_building`; +CREATE TABLE `xg_dorm_manager_building` ( `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 '排序号', + `manager_id` bigint(20) NOT NULL COMMENT '管理员ID', + `building_id` bigint(20) NOT NULL COMMENT '宿舍楼ID', + `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_building` (`manager_id`, `building_id`), + KEY `idx_manager_id` (`manager_id`), + KEY `idx_building_id` (`building_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员宿舍楼权限关系表'; +``` + +#### 2.3 二级学院宿舍管理员表 (dorm_college_manager) +**表说明**:存储二级学院宿舍管理员的基本信息 + +```sql +DROP TABLE IF EXISTS `xg_dorm_college_manager`; +CREATE TABLE `xg_dorm_college_manager` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `manager_name` varchar(100) NOT NULL COMMENT '管理员姓名', + `college_id` bigint(20) NOT NULL COMMENT '所属学院ID', + `user_id` bigint(20) DEFAULT NULL COMMENT '关联用户ID', + `phone` varchar(20) DEFAULT NULL COMMENT '联系电话', + `gender` char(1) DEFAULT '0' COMMENT '性别(0男 1女 2未知)', `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', `deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)', - `tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号', + `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='权限层级表'; + KEY `idx_college_id` (`college_id`), + KEY `idx_user_id` (`user_id`), +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='二级学院宿舍管理员信息表'; ``` -#### 3.2 管理人员权限表 (dorm_manager_permission) -**表说明**:存储管理人员的具体权限配置 +#### 2.4 二级学院床位绑定关系表 (dorm_college_bed) +**表说明**:存储二级学院与床位的绑定关系 ```sql -CREATE TABLE `dorm_manager_permission` ( +DROP TABLE IF EXISTS `xg_dorm_college_bed`; +CREATE TABLE `xg_dorm_college_bed` ( `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停用)', + `college_id` bigint(20) NOT NULL COMMENT '学院ID', + `bed_id` bigint(20) NOT NULL COMMENT '床位ID', + `building_id` bigint(20) NOT NULL COMMENT '宿舍楼ID', + `room_id` bigint(20) NOT NULL COMMENT '房间ID', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1已解除)', + `assign_time` datetime DEFAULT NULL COMMENT '分配时间', + `release_time` datetime DEFAULT NULL COMMENT '到期解除时间', `deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)', - `tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号', + `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='管理人员权限表'; + UNIQUE KEY `uk_college_bed` (`college_id`, `bed_id`), + KEY `idx_college_id` (`college_id`), + KEY `idx_bed_id` (`bed_id`), + KEY `idx_building_id` (`building_id`), + KEY `idx_room_id` (`room_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='权限使用记录表'; -``` ## 🔗 表关系设计 @@ -503,15 +354,6 @@ dorm_permission_level (权限层级) └── Level 5: 二级学院宿舍管理负责人 ``` -### 3. 管理人员关系图 -``` -dorm_manager (管理人员) -├── dorm_manager_position (职位信息) -├── dorm_manager_assignment (分配信息) -├── dorm_manager_permission (权限信息) -├── dorm_management_stats (统计信息) -└── dorm_permission_usage (使用记录) -``` ## 📊 索引设计 diff --git a/docs/设计文档/database/SQL文件说明.md b/docs/设计文档/database/SQL文件说明.md index 7f5793c1..a8c29867 100644 --- a/docs/设计文档/database/SQL文件说明.md +++ b/docs/设计文档/database/SQL文件说明.md @@ -2,29 +2,30 @@ ## 📁 文件结构概览 -基于业务域的数据库文件拆分,将原始的 `hzdyjs_xg.sql` 按业务模块进行分类,便于管理和维护。 +基于业务域的数据库文件拆分,采用目录+文件的组织方式,将原始的 `hzdyjs_xg.sql` 按业务模块进行分类,便于管理和维护。 ``` docs/设计文档/database/ ├── hzdyjs_xg.sql # 完整数据库文件(保留) -├── 01-workflow-module.sql # 工作流模块 -├── 02-code-generator-module.sql # 代码生成模块 -├── 03-logistics-module.sql # 后勤管理模块 -├── 04-job-scheduler-module.sql # 任务调度模块 -├── 05-system-management-module.sql # 系统管理模块 -├── 06-test-module.sql # 测试模块 -├── 08-student-management-actual-rollback.sql # 学工管理模块实际删除脚本 -├── README.md # 数据库设计说明 -├── mysql-database-standard.md # MySQL数据库建设规范 -├── database_msg.md # 数据库环境配置 -└── SQL文件说明.md # 本文件 +├── README.md # 数据库设计说明 +├── mysql-database-standard.md # MySQL数据库建设规范 +├── database_msg.md # 数据库环境配置 +├── SQL文件说明.md # 本文件 +├── 工作流/ # 工作流模块相关SQL +│ └── ... (工作流相关SQL文件) +├── 后勤管理/ # 后勤管理模块相关SQL +│ └── ... (后勤管理相关SQL文件) +├── 学工管理-学生信息管理/ # 学工管理-学生信息模块相关SQL +│ └── ... (学生信息相关SQL文件) +└── 学工管理-宿舍管理/ # 学工管理-宿舍管理模块相关SQL + └── ... (宿舍管理相关SQL文件) ``` --- ## 📊 业务域拆分详情 -### 01. 工作流模块 (01-workflow-module.sql) +### 工作流模块 (工作流/) **业务域**: 工作流引擎相关功能 **包含表**: 8 张表 @@ -40,20 +41,10 @@ docs/设计文档/database/ **主要功能**: 支持业务流程的定义、执行、跟踪和管理 -### 02. 代码生成模块 (02-code-generator-module.sql) - -**业务域**: 代码生成器相关功能 -**包含表**: 2 张表 - -- `gen_table` - 代码生成业务表 -- `gen_table_column` - 代码生成业务字段表 - -**主要功能**: 支持基于数据库表结构自动生成代码 - -### 03. 后勤管理模块 (03-logistics-module.sql) +### 后勤管理模块 (后勤管理/) **业务域**: 后勤服务管理相关功能 -**包含表**: 10 张表 +**包含表**: 10+ 张表 #### 报告厅预约管理子模块 @@ -73,93 +64,53 @@ docs/设计文档/database/ **主要功能**: 校园后勤服务管理,包括场地预约和满意度调查 -### 04. 任务调度模块 (04-job-scheduler-module.sql) +### 学工管理-学生信息管理模块 (学工管理-学生信息管理/) + +**业务域**: 学工管理-学生信息管理相关功能 +**包含表**: 相关学生信息表 + +**主要功能**: 学生信息管理,包括学生基本信息、班级信息等 + +### 学工管理-宿舍管理模块 (学工管理-宿舍管理/) + +**业务域**: 学工管理-宿舍管理相关功能 +**包含表**: 宿舍相关表 + +**主要功能**: 宿舍管理,包括宿舍分配、宿舍管理等功能 + +### 其他模块 (仍保留在根目录) + +#### 代码生成模块 (02-code-generator-module.sql) + +**业务域**: 代码生成器相关功能 +**包含表**: 2 张表 + +- `gen_table` - 代码生成业务表 +- `gen_table_column` - 代码生成业务字段表 + +**主要功能**: 支持基于数据库表结构自动生成代码 + +#### 任务调度模块 (04-job-scheduler-module.sql) **业务域**: SnailJob 任务调度相关功能 **包含表**: 12 张表 -- `sj_distributed_lock` - 分布式锁表 -- `sj_group_config` - 组配置表 -- `sj_namespace_config` - 命名空间配置表 -- `sj_notify_config` - 通知配置表 -- `sj_retry_dead_letter` - 死信队列表 -- `sj_retry_summary` - 任务重试汇总统计表 -- `sj_retry_task` - 任务信息表 -- `sj_retry_task_log` - 重试日志表 -- `sj_server_node` - 服务器节点表 -- `sj_system_user_permission` - 系统用户权限表 -- `sj_workflow_node` - 工作流节点表 -- `sj_workflow_task_batch` - 工作流任务批次表 - **主要功能**: 分布式任务调度、重试机制、工作流编排 -### 05. 系统管理模块 (05-system-management-module.sql) +#### 系统管理模块 (05-system-management-module.sql) **业务域**: 系统核心管理功能 **包含表**: 21 张表 -#### 用户与权限管理 - -- `sys_user` - 用户信息表 -- `sys_role` - 角色信息表 -- `sys_menu` - 菜单权限表 -- `sys_dept` - 部门表 -- `sys_post` - 岗位信息表 -- `sys_user_role` - 用户角色关联表 -- `sys_user_post` - 用户岗位关联表 -- `sys_role_menu` - 角色菜单关联表 -- `sys_role_dept` - 角色部门关联表 - -#### 系统配置与日志 - -- `sys_config` - 参数配置表 -- `sys_dict_type` - 字典类型表 -- `sys_dict_data` - 字典数据表 -- `sys_notice` - 通知公告表 -- `sys_oper_log` - 操作日志表 -- `sys_logininfor` - 系统访问记录表 - -#### 文件与租户管理 - -- `sys_oss` - OSS 对象存储表 -- `sys_oss_config` - 对象存储配置表 -- `sys_client` - 系统授权表 -- `sys_tenant` - 租户表 -- `sys_tenant_package` - 租户套餐表 -- `sys_social` - 社会化关系表 - **主要功能**: 系统用户管理、权限控制、配置管理、日志记录等核心功能 -### 06. 测试模块 (06-test-module.sql) +#### 测试模块 (06-test-module.sql) **业务域**: 测试和演示相关功能 **包含表**: 1 张表 -- `test_tree` - 测试树表 - **主要功能**: 系统功能测试和演示,包含树形结构数据 -### 08. 学生信息管理模块 (已删除) - -**业务域**: 学工管理-学生信息管理相关功能 -**状态**: 已于2025-01-09完全删除 - -#### 删除脚本 - -- `08-student-management-actual-rollback.sql` - 学工管理模块实际删除脚本(已执行) - -**删除内容**: -- 6张数据库表(学生信息、银行卡、班级信息、审核记录等) -- 16个菜单权限项 -- 7个字典类型 -- 27个字典数据项 - -**删除状态**: ✅ 已完成并验证通过 - -**删除原因**: 用户要求删除已创建的学工学生信息相关功能 - -**恢复说明**: 相关文档和脚本已在git历史记录中保存,如需恢复可从历史记录中获取 - --- ## 🔧 使用指南 @@ -173,51 +124,48 @@ SOURCE docs/设计文档/database/hzdyjs_xg.sql; ### 按模块部署 +现在可以按照目录组织更灵活地部署数据库: + ```sql --- 按需执行指定模块 -SOURCE docs/设计文档/database/01-workflow-module.sql; -SOURCE docs/设计文档/database/02-code-generator-module.sql; -SOURCE docs/设计文档/database/03-logistics-module.sql; -SOURCE docs/设计文档/database/04-job-scheduler-module.sql; +-- 核心系统模块 SOURCE docs/设计文档/database/05-system-management-module.sql; -SOURCE docs/设计文档/database/06-test-module.sql; --- 学工管理模块已删除 --- 删除脚本已执行完成: --- SOURCE docs/设计文档/database/08-student-management-actual-rollback.sql; + +-- 按业务目录部署 +-- 工作流模块 +SOURCE docs/设计文档/database/工作流/01-workflow-module.sql; + +-- 后勤管理模块 +SOURCE docs/设计文档/database/后勤管理/03-logistics-module.sql; +SOURCE docs/设计文档/database/后勤管理/hq_hall_info.sql; +SOURCE docs/设计文档/database/后勤管理/hq_satisfaction_survey.sql; +-- 更多后勤管理相关表... + +-- 学工管理-学生信息模块 +SOURCE docs/设计文档/database/学工管理-学生信息管理/xg_student_info.sql; +SOURCE docs/设计文档/database/学工管理-学生信息管理/xg_class_info.sql; +-- 更多学生信息相关表... + +-- 学工管理-宿舍管理模块 +SOURCE docs/设计文档/database/学工管理-宿舍管理/xg_dormitory_info.sql; +-- 更多宿舍管理相关表... ``` ### 开发环境部署建议 -1. **必须模块**: 01-工作流模块, 05-系统管理模块 -2. **核心业务模块**: 03-后勤管理模块 -3. **按需模块**: 其他模块根据具体业务需求选择性部署 +1. **必须模块**: 系统管理模块, 工作流模块 +2. **核心业务模块**: 后勤管理模块 +3. **按需模块**: 学工管理相关模块和其他模块根据具体业务需求选择性部署 4. **测试模块**: 仅在开发和测试环境中部署 --- -## 📈 统计信息 - -| 模块 | 表数量 | 主要功能 | 依赖关系 | -| ------------ | ------ | ------------ | ---------------- | -| 工作流模块 | 8 | 流程管理 | 依赖系统管理模块 | -| 代码生成模块 | 2 | 代码生成 | 无特殊依赖 | -| 后勤管理模块 | 10 | 后勤服务 | 依赖系统管理模块 | -| 任务调度模块 | 12 | 任务调度 | 独立模块 | -| 系统管理模块 | 21 | 核心系统 | 核心基础模块 | -| 测试模块 | 1 | 测试演示 | 依赖系统管理模块 | -| ~~学工管理模块~~ | ~~6~~ | ~~学工管理~~ | ~~已删除~~ | -| **总计** | **54** | **完整系统** | **完整依赖链** | - ---- - ## ⚠️ 注意事项 -### 1. 模块依赖关系 +### 1. 目录组织原则 -- **系统管理模块**是其他模块的基础依赖,必须优先部署 -- **工作流模块**和**后勤管理模块**依赖系统管理模块的用户和部门数据 -- **任务调度模块**相对独立,可单独部署 -- **学工管理模块**已删除,不再部署 +- **按业务域组织**: 文件按业务功能模块存放到对应目录 +- **一表一文件**: 每个表结构单独存放为独立SQL文件,便于维护 +- **统一命名**: 文件名应与表名保持一致,便于快速定位 ### 2. 数据一致性 @@ -244,20 +192,21 @@ SOURCE docs/设计文档/database/06-test-module.sql; ### 更新流程 -1. 修改 `hzdyjs_xg.sql` 主文件 -2. 同步更新对应的模块 SQL 文件 +1. 修改对应业务目录下的SQL文件 +2. 如有必要,同步更新 `hzdyjs_xg.sql` 主文件 3. 更新本说明文档的变更记录 -4. 在 `docs/变更管理/code-adjust-record.md` 中记录变更 +4. 在 `docs/变更管理/code-adjust-record-YYYY-MM-DD-{username}.md` 中记录变更 ### 文件命名规则 -- 使用两位数字前缀进行排序 +- 使用表名作为文件名,如 `xg_student_info.sql` +- 可选使用两位数字前缀进行排序 - 使用英文短横线分隔词语 -- 以 `-module.sql` 结尾表示模块文件 +- 以 `.sql` 结尾 ### 拆分原则 -- 按业务域进行逻辑分组 +- 按业务域进行目录分组 - 保持模块的相对独立性 - 考虑实际部署和维护需求 - 遵循数据库设计规范 @@ -266,6 +215,22 @@ SOURCE docs/设计文档/database/06-test-module.sql; ## 📋 更新记录 +### 2025-07-15 - 目录结构调整 + +**变更内容**: +- 将SQL文件按业务域进行目录拆分 +- 新增学工管理-学生信息管理目录 +- 新增工作流目录 +- 新增后勤管理目录 +- 新增学工管理-宿舍管理目录 +- 更新SQL文件说明文档,反映新的目录结构 + +**变更原因**: 优化数据库文件管理,按业务模块分类存储,提高可维护性 + +**影响范围**: 仅影响文件组织方式,不影响SQL内容和功能 + +**执行状态**: ✅ 已完成并验证通过 + ### 2025-01-09 - 学工管理模块完全删除 **变更内容**: diff --git a/docs/设计文档/database/学工管理-宿舍管理/宿舍管理数据库建表脚本.sql b/docs/设计文档/database/学工管理-宿舍管理/宿舍管理数据库建表脚本.sql new file mode 100644 index 00000000..6e970fc7 --- /dev/null +++ b/docs/设计文档/database/学工管理-宿舍管理/宿舍管理数据库建表脚本.sql @@ -0,0 +1,260 @@ +-- 宿舍管理数据库建表脚本 +-- 来源:docs/业务模块/学工管理-宿舍管理/数据库设计/宿舍管理数据库设计.md +-- 用途:统一存储宿舍管理模块所有相关表的建表SQL,便于维护和执行 +-- 维护人:数据库设计团队 +-- 日期:2025-01-14 + +-- 1. 校区信息表 +drop table if exists `xg_dorm_campus`; +create table `xg_dorm_campus` ( + `id` bigint(20) not null comment '主键ID', + `campus_code` varchar(50) not null comment '校区编码', + `campus_name` varchar(100) not null comment '校区名称', + `campus_description` varchar(500) default null comment '校区描述', + `sort_order` int(11) default '0' 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_campus_code` (`campus_code`) +) engine=innodb default charset=utf8mb4 comment='校区信息表'; + +-- 2. 宿舍区信息表 +drop table if exists `xg_dorm_area`; +create table `xg_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_description` varchar(500) default null comment '宿舍区描述', + `sort_order` int(11) default '0' 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_area_code` (`area_code`), + key `idx_campus_id` (`campus_id`) +) engine=innodb default charset=utf8mb4 comment='宿舍区信息表'; + +-- 3. 宿舍楼信息表 +drop table if exists `xg_dorm_building`; +create table `xg_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_type` char(1) default '1' comment '宿舍楼类型(1男生楼 2女生楼 3混合楼)', + `building_description` varchar(500) default null comment '宿舍楼描述', + `sort_order` int(11) default '0' 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_building_code` (`building_code`), + key `idx_area_id` (`area_id`), + key `idx_campus_id` (`campus_id`) +) engine=innodb default charset=utf8mb4 comment='宿舍楼信息表'; + +-- 4. 宿舍房间信息表 +drop table if exists `xg_dorm_room`; +create table `xg_dorm_room` ( + `id` bigint(20) not null comment '主键ID', + `room_code` varchar(50) not null comment '房间编号', + `room_name` varchar(100) not null comment '房间名称', + `building_id` bigint(20) not null comment '所属宿舍楼ID', + `floor_num` int(11) not null comment '楼层', + `room_type` char(1) default '1' comment '房间类型(1学生宿舍 3教师宿舍)', + `actual_beds` int(11) default 4 comment '实际床位数', + `room_area` decimal(10,2) default null comment '房间面积(平方米)', + `room_status` char(1) default '0' comment '房间状态(0可用 1维修中 2已报废)', + `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_room_code` (`room_code`), + key `idx_building_id` (`building_id`), + key `idx_floor_num` (`floor_num`) +) engine=innodb default charset=utf8mb4 comment='宿舍房间信息表'; + +-- 5. 宿舍床位信息表 +drop table if exists `xg_dorm_bed`; +create table `xg_dorm_bed` ( + `id` bigint(20) not null comment '主键ID', + `bed_code` varchar(50) not null comment '床位编号', + `bed_name` varchar(100) not null comment '床位名称', + `room_id` bigint(20) not null comment '所属房间ID', + `bed_type` char(1) default '1' comment '床位类型(1下铺 2上铺 3中铺 4独立床)', + `bed_status` char(1) default '0' comment '床位状态(0空闲 1已分配 2维修中)', + `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_bed_code` (`bed_code`), + key `idx_room_id` (`room_id`) +) engine=innodb default charset=utf8mb4 comment='宿舍床位信息表'; + +-- 6. 床位学生分配关系表 +drop table if exists `xg_dorm_bed_student`; +create table `xg_dorm_bed_student` ( + `id` bigint(20) not null comment '主键ID', + `college_id` bigint(20) not null comment '分配学院ID', + `student_id` bigint(20) not null comment '分配学生ID', + `bed_id` bigint(20) not null comment '床位ID', + `room_id` bigint(20) not null comment '房间ID', + `building_id` bigint(20) not null comment '宿舍楼ID', + `area_id` bigint(20) not null comment '宿舍区ID', + `campus_id` bigint(20) not null comment '校区ID', + `status` char(1) default '0' comment '状态(0正常 1已退宿)', + `assign_time` datetime not null comment '分配时间', + `checkout_time` datetime 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_student_bed` (`student_id`, `bed_id`), + key `idx_college_id` (`college_id`), + key `idx_student_id` (`student_id`), + key `idx_bed_id` (`bed_id`), + key `idx_room_id` (`room_id`), + key `idx_building_id` (`building_id`), + key `idx_area_id` (`area_id`), + key `idx_campus_id` (`campus_id`), + key `idx_assign_time` (`assign_time`) +) engine=innodb default charset=utf8mb4 comment='床位学生分配关系表'; + +-- 7. 宿舍管理员信息表 +drop table if exists `xg_dorm_manager`; +create table `xg_dorm_manager` ( + `id` bigint(20) not null comment '主键ID', + `manager_name` varchar(100) not null comment '管理员姓名', + `manager_type` char(1) not null comment '管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)', + `manager_level` int(11) default 1 comment '管理级别(1-5,1为最高)', + `user_id` bigint(20) default null comment '关联用户ID', + `phone` varchar(20) default null comment '联系电话', + `gender` char(1) default '0' comment '性别(0男 1女 2未知)', + `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_user_id` (`user_id`), + key `idx_manager_type` (`manager_type`) +) engine=innodb default charset=utf8mb4 comment='宿舍管理员信息表'; + +-- 8. 管理员授权关系表 +drop table if exists `xg_dorm_manager_source`; +create table `xg_dorm_manager_source` ( + `id` bigint(20) not null comment '主键ID', + `manager_id` bigint(20) not null comment '管理员ID', + `permission_type` char(1) default '1' comment '权限类型(1查看 2编辑 3完全管理)', + `auth_type` char(1) not null comment '授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)', + `auth_source` bigint(20) default null comment '授权来源ID(对应校区ID或宿舍区ID或楼栋ID)', + `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_auth_source` (`auth_source`) +) engine=innodb default charset=utf8mb4 comment='管理员授权关系表'; + +-- 9. 管理员宿舍楼权限关系表 +drop table if exists `xg_dorm_manager_building`; +create table `xg_dorm_manager_building` ( + `id` bigint(20) not null comment '主键ID', + `manager_id` bigint(20) not null comment '管理员ID', + `building_id` bigint(20) not null comment '宿舍楼ID', + `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_building` (`manager_id`, `building_id`), + key `idx_manager_id` (`manager_id`), + key `idx_building_id` (`building_id`) +) engine=innodb default charset=utf8mb4 comment='管理员宿舍楼权限关系表'; + +-- 10. 二级学院宿舍管理员信息表 +drop table if exists `xg_dorm_college_manager`; +create table `xg_dorm_college_manager` ( + `id` bigint(20) not null comment '主键ID', + `manager_name` varchar(100) not null comment '管理员姓名', + `college_id` bigint(20) not null comment '所属学院ID', + `user_id` bigint(20) default null comment '关联用户ID', + `phone` varchar(20) default null comment '联系电话', + `gender` char(1) default '0' comment '性别(0男 1女 2未知)', + `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_college_id` (`college_id`), + key `idx_user_id` (`user_id`) +) engine=innodb default charset=utf8mb4 comment='二级学院宿舍管理员信息表'; + +-- 11. 二级学院床位绑定关系表 +drop table if exists `xg_dorm_college_bed`; +create table `xg_dorm_college_bed` ( + `id` bigint(20) not null comment '主键ID', + `college_id` bigint(20) not null comment '学院ID', + `bed_id` bigint(20) not null comment '床位ID', + `building_id` bigint(20) not null comment '宿舍楼ID', + `room_id` bigint(20) not null comment '房间ID', + `status` char(1) default '0' comment '状态(0正常 1已解除)', + `assign_time` datetime default null comment '分配时间', + `release_time` datetime 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_college_bed` (`college_id`, `bed_id`), + key `idx_college_id` (`college_id`), + key `idx_bed_id` (`bed_id`), + key `idx_building_id` (`building_id`), + key `idx_room_id` (`room_id`) +) engine=innodb default charset=utf8mb4 comment='二级学院床位绑定关系表'; \ No newline at end of file