提交宿舍楼树形结构的代码
This commit is contained in:
1 parent
12b4b58647
commit
92f2598017
21 files changed
+1156
-515
No files matched your search
@@ -1,62 +1,83 @@
|
||||
# 宿舍楼房间管理功能开发记录
|
||||
# 宿舍楼树形结构API开发变更记录
|
||||
|
||||
**日期:** 2025-07-03 14:30:25
|
||||
**开发人员:** Cursor
|
||||
**功能模块:** 学生宿舍管理系统 - 宿舍楼房间管理
|
||||
**日期**: 2025-07-03
|
||||
**作者**: cursor
|
||||
**模块**: 学生宿舍管理
|
||||
|
||||
## 变更内容
|
||||
|
||||
### 1. 功能概述
|
||||
### 1. 新增实体类
|
||||
|
||||
开发了宿舍楼房间管理界面,实现了以下功能:
|
||||
- 左侧树形结构展示校区-宿舍区-宿舍楼的层级关系
|
||||
- 右侧按楼层展示房间信息,采用卡片式布局
|
||||
- 支持房间的添加、编辑、删除操作
|
||||
- 支持床位的添加、编辑、删除操作
|
||||
- 支持按房间号和状态进行筛选
|
||||
- 创建 `DormBuildingTreeVo.java`: 实现宿舍楼树形结构VO类,包含id、label、type、disabled、buildingFloors、children等字段
|
||||
- 创建 `DormBuildingInfoVo.java`: 实现宿舍楼信息VO类,用于数据库查询结果映射
|
||||
- 创建 `DormBuildingTreeBo.java`: 实现查询参数业务对象类,包含campusId、areaId、buildingName、status等字段
|
||||
|
||||
### 2. 文件变更
|
||||
### 2. 新增Mapper接口和XML
|
||||
|
||||
#### 新增文件
|
||||
- `web/src/views/xsssfjgl/index.vue` - 宿舍楼房间管理主界面
|
||||
- `web/src/views/xsssfjgl/components/RoomDialog.vue` - 房间编辑对话框组件
|
||||
- `web/src/views/xsssfjgl/components/BedDialog.vue` - 床位编辑对话框组件
|
||||
- `web/src/api/xsssfjgl/index.ts` - API接口实现
|
||||
- `web/src/api/xsssfjgl/types.ts` - API类型定义
|
||||
- 创建 `XgDormBuildingTreeMapper.java`: 包含获取校区、宿舍区、宿舍楼和检查用户权限等方法
|
||||
- 创建 `XgDormBuildingTreeMapper.xml`: 实现各种SQL查询,包括权限过滤逻辑
|
||||
|
||||
### 3. 技术实现
|
||||
### 3. 新增服务接口和实现
|
||||
|
||||
#### 3.1 树形结构设计
|
||||
- 采用Element Plus的Tree组件实现
|
||||
- 配置了disabled属性,使校区和宿舍区节点不可选
|
||||
- 只有宿舍楼节点可以被选中,并触发右侧数据加载
|
||||
- 创建 `IXgDormBuildingTreeService.java`: 定义获取宿舍楼树形结构的服务接口
|
||||
- 创建 `XgDormBuildingTreeServiceImpl.java`: 实现服务接口,包含按权限过滤和构建三级树形结构的逻辑
|
||||
|
||||
#### 3.2 房间展示
|
||||
- 按楼层分组展示房间信息
|
||||
- 使用Grid布局实现自适应卡片排列
|
||||
- 每张卡片包含房间号、类型、床位使用情况和操作按钮
|
||||
### 4. 新增控制器
|
||||
|
||||
#### 3.3 床位管理
|
||||
- 点击"床位管理"按钮弹出对话框
|
||||
- 表格展示该房间的所有床位信息
|
||||
- 支持床位的增删改操作
|
||||
- 创建 `XgDormBuildingTreeController.java`: 提供获取宿舍楼树形结构的REST接口
|
||||
|
||||
#### 3.4 数据处理
|
||||
- 前期使用模拟数据进行界面开发
|
||||
- 预留了真实API接口,便于后期接入后端服务
|
||||
- 完整实现了增删改查的前端逻辑
|
||||
### 5. 新增API文档
|
||||
|
||||
## 后续工作
|
||||
- 创建 `宿舍房间管理API.md`: 记录API接口的使用方法和参数说明
|
||||
|
||||
1. 对接后端API,替换模拟数据
|
||||
2. 根据实际业务需求调整界面细节
|
||||
3. 增加权限控制逻辑
|
||||
4. 完善数据校验和错误处理
|
||||
5. 添加单元测试
|
||||
### 6. 代码优化与修复 (2025-07-03 16:25:30)
|
||||
|
||||
## 注意事项
|
||||
- 修改 `XgDormBuildingTreeServiceImpl.java`: 优化宿舍楼查询逻辑,支持用户拥有多种角色权限的情况
|
||||
- 解决问题: 之前代码只会按优先级执行一种角色的查询,现在改为合并多种权限查询的结果
|
||||
- 实现思路:
|
||||
- 保留全校管理员最高权限判断(可查看所有宿舍楼)
|
||||
- 对于其他权限类型,分别查询并合并结果
|
||||
- 使用HashSet确保宿舍楼不重复
|
||||
- 修正了字段访问方法,使用getId()而不是getBuildingId()
|
||||
|
||||
- 目前使用模拟数据,未与后端对接
|
||||
- 表单校验规则已基本实现,但可能需要根据业务规则调整
|
||||
- v-model:show-search 等指令存在linter错误,后续需要修复
|
||||
- 组件导入和类型引用存在linter错误,需要调整项目配置
|
||||
### 7. API返回字段修复 (2025-07-23 10:30:15)
|
||||
|
||||
- 修改 `XgDormBuildingMapper.xml`: 修复宿舍楼信息列表接口floors字段返回为null的问题
|
||||
- 解决问题: 宿舍楼信息查询接口未返回floors字段,导致前端显示为null
|
||||
- 修复详情:
|
||||
- 在selectPageWithAreaAndCampusName方法的SELECT查询语句中添加了b.floors字段
|
||||
- 确保与数据库表设计和实体类定义保持一致
|
||||
- 完整路径: `/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/sslxx/XgDormBuildingMapper.xml`
|
||||
|
||||
## 实现功能
|
||||
|
||||
1. **三级树形结构**:
|
||||
- 第一级:校区(不可点击)
|
||||
- 第二级:宿舍区(不可点击)
|
||||
- 第三级:宿舍楼(可点击)
|
||||
|
||||
2. **多级数据权限**:
|
||||
- 全校管理员(manager_type=1):可查看所有宿舍楼
|
||||
- 校区管理员(manager_type=2):只能查看管理校区的宿舍楼
|
||||
- 宿舍区管理员(manager_type=3):只能查看管理宿舍区的宿舍楼
|
||||
- 宿舍楼管理员(manager_type=4):只能查看管理宿舍楼
|
||||
- **新增:支持一个用户同时拥有多种管理员角色,数据权限取并集**
|
||||
|
||||
3. **权限数据关联**:
|
||||
- 通过 xg_dorm_manager 表获取用户权限类型
|
||||
- 通过 xg_dorm_manager_source 表获取具体权限范围
|
||||
|
||||
## API接口说明
|
||||
|
||||
- **接口URL**: `/xgss/dormBuildingTree/list`
|
||||
- **请求方式**: GET
|
||||
- **权限要求**: `xgss:dormBuildingTree:list`
|
||||
- **可选参数**: campusId, areaId, buildingName, status
|
||||
- **返回格式**: 嵌套的树形结构JSON
|
||||
|
||||
## 下一步计划
|
||||
|
||||
1. 前端页面改造:将模拟数据替换为真实API调用
|
||||
2. 单元测试:编写测试用例验证API的功能和权限控制
|
||||
3. 集成测试:验证API在真实环境中的表现
|
||||
4. 完善文档:补充其他宿舍管理相关API的文档
|
||||
@@ -9,7 +9,14 @@
|
||||
## 学工管理模块
|
||||
- [班干部管理API](班干部管理API.md)
|
||||
- [宿舍管理员授权API](宿舍管理员授权API.md)
|
||||
- [宿舍楼树形结构API](宿舍楼树形结构API.md) - 校区-宿舍区-宿舍楼三级树形结构数据
|
||||
- [宿舍楼树形结构API](宿舍楼树形结构API.md) - 校区-宿舍区-宿舍楼三级树形结构数据 (旧版API,路径: `/sslxx/dormBuilding/buildingTree`)
|
||||
|
||||
## 宿舍管理相关API
|
||||
|
||||
| API文档名称 | 说明 | 路径 |
|
||||
| ---------- | ---- | ---- |
|
||||
| [宿舍房间管理API](./宿舍房间管理API.md) | 提供宿舍楼树形结构API | `/xgss/dormBuildingTree/list` |
|
||||
| [宿舍房间管理API](./宿舍房间管理API.md) | 提供宿舍楼列表查询API | `/sslxx/dormBuilding/list` |
|
||||
|
||||
## 后勤管理
|
||||
|
||||
@@ -41,6 +48,8 @@
|
||||
|
||||
## 更新记录
|
||||
|
||||
- 2025-07-23:修复宿舍楼列表接口floors字段为null的问题,更新宿舍房间管理API文档
|
||||
- 2025-07-03:更新宿舍房间管理API,增强多角色权限支持
|
||||
- 2025-07-20:新增宿舍楼树形结构API文档
|
||||
- 2025-07-20:新增宿舍管理员授权API文档
|
||||
- 2025-07-15:新增场地预约管理API文档
|
||||
|
||||
+193
-419
@@ -1,79 +1,42 @@
|
||||
# 宿舍房间管理API文档
|
||||
|
||||
**版本:** 1.0.0
|
||||
**作者:** Cursor
|
||||
**更新日期:** 2025-07-03
|
||||
|
||||
## 目录
|
||||
|
||||
- [1. 概述](#1-概述)
|
||||
- [2. 接口基础信息](#2-接口基础信息)
|
||||
- [3. 宿舍楼树形结构接口](#3-宿舍楼树形结构接口)
|
||||
- [4. 房间管理接口](#4-房间管理接口)
|
||||
- [5. 床位管理接口](#5-床位管理接口)
|
||||
- [6. 数据字典](#6-数据字典)
|
||||
- [7. 错误码说明](#7-错误码说明)
|
||||
- [8. 移动端实现](#8-移动端实现)
|
||||
- [1. 宿舍楼树形结构](#1-宿舍楼树形结构)
|
||||
- [1.1 获取宿舍楼树形结构](#11-获取宿舍楼树形结构)
|
||||
- [2. 宿舍楼信息管理](#2-宿舍楼信息管理)
|
||||
- [2.1 获取宿舍楼列表](#21-获取宿舍楼列表)
|
||||
|
||||
## 1. 概述
|
||||
## 1. 宿舍楼树形结构
|
||||
|
||||
本文档描述了宿舍楼房间管理模块的接口规范,包括宿舍楼树形结构查询、房间增删改查和床位管理等功能。
|
||||
### 1.1 获取宿舍楼树形结构
|
||||
|
||||
### 1.1 应用场景
|
||||
#### 接口说明
|
||||
|
||||
- 学工处管理宿舍楼房间信息
|
||||
- 学生宿舍分配
|
||||
- 宿舍房间和床位状态维护
|
||||
该接口用于获取宿舍楼的树形结构数据,按照校区-宿舍区-宿舍楼三级结构组织。校区和宿舍区节点不可点击,只有宿舍楼节点可以点击。
|
||||
|
||||
### 1.2 功能列表
|
||||
#### 请求方式
|
||||
|
||||
- 宿舍楼树形结构查询
|
||||
- 房间列表查询(支持分页和条件筛选)
|
||||
- 房间新增、修改、删除
|
||||
- 床位列表查询
|
||||
- 床位新增、修改、删除
|
||||
|
||||
## 2. 接口基础信息
|
||||
|
||||
### 2.1 接口规范
|
||||
|
||||
- 接口采用RESTful风格
|
||||
- 请求和响应数据格式均为JSON
|
||||
- 所有接口均需要携带Token进行认证
|
||||
- 接口基础路径: `/xsssfjgl`
|
||||
|
||||
### 2.2 统一响应格式
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200, // 响应状态码,200表示成功
|
||||
"msg": "操作成功", // 响应消息
|
||||
"data": {} // 响应数据,根据接口定义不同而不同
|
||||
}
|
||||
```
|
||||
GET /xgss/dormBuildingTree/list
|
||||
```
|
||||
|
||||
### 2.3 分页查询响应格式
|
||||
#### 权限要求
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "查询成功",
|
||||
"rows": [], // 数据列表
|
||||
"total": 0 // 总记录数
|
||||
}
|
||||
```
|
||||
xgss:dormBuildingTree:list
|
||||
```
|
||||
|
||||
## 3. 宿舍楼树形结构接口
|
||||
#### 请求参数
|
||||
|
||||
### 3.1 获取宿舍树形结构
|
||||
| 参数名 | 类型 | 必须 | 描述 |
|
||||
| ------------- | ------- | ---- | -------------------- |
|
||||
| campusId | Long | 否 | 校区ID,用于筛选 |
|
||||
| areaId | Long | 否 | 宿舍区ID,用于筛选 |
|
||||
| buildingName | String | 否 | 宿舍楼名称,模糊查询 |
|
||||
| status | String | 否 | 宿舍楼状态 |
|
||||
|
||||
**接口说明:** 获取校区-宿舍区-宿舍楼的树形结构数据
|
||||
|
||||
- **请求方式:** GET
|
||||
- **请求路径:** `/xsssfjgl/tree`
|
||||
- **请求参数:** 无
|
||||
|
||||
**响应示例:**
|
||||
#### 返回结果
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -82,21 +45,44 @@
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"label": "东校区",
|
||||
"label": "主校区",
|
||||
"type": "campus",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 11,
|
||||
"id": 101,
|
||||
"label": "东区宿舍",
|
||||
"type": "area",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 111,
|
||||
"label": "东区1号楼",
|
||||
"id": 1001,
|
||||
"label": "1号楼",
|
||||
"type": "building",
|
||||
"disabled": false,
|
||||
"buildingFloors": 6
|
||||
},
|
||||
{
|
||||
"id": 1002,
|
||||
"label": "2号楼",
|
||||
"type": "building",
|
||||
"disabled": false,
|
||||
"buildingFloors": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 102,
|
||||
"label": "西区宿舍",
|
||||
"type": "area",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 1003,
|
||||
"label": "3号楼",
|
||||
"type": "building",
|
||||
"disabled": false,
|
||||
"buildingFloors": 7
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -106,384 +92,172 @@
|
||||
}
|
||||
```
|
||||
|
||||
**字段说明:**
|
||||
#### 返回参数说明
|
||||
|
||||
| 字段名 | 类型 | 说明 |
|
||||
| ---- | ---- | ---- |
|
||||
| id | string/number | 节点ID |
|
||||
| label | string | 节点名称 |
|
||||
| type | string | 节点类型:campus(校区)、area(宿舍区)、building(宿舍楼) |
|
||||
| disabled | boolean | 是否禁用选择 |
|
||||
| children | array | 子节点 |
|
||||
| buildingFloors | number | 宿舍楼层数,仅type为building时有效 |
|
||||
| 参数名 | 类型 | 描述 |
|
||||
| -------------- | ------- | ------------------------------------------------ |
|
||||
| id | Long | 节点ID |
|
||||
| label | String | 节点名称 |
|
||||
| type | String | 节点类型(campus:校区,area:宿舍区,building:宿舍楼) |
|
||||
| disabled | Boolean | 是否禁用点击(校区和宿舍区为true,宿舍楼为false) |
|
||||
| buildingFloors | Integer | 宿舍楼层数(只有宿舍楼节点有此字段) |
|
||||
| children | Array | 子节点列表 |
|
||||
|
||||
## 4. 房间管理接口
|
||||
#### 数据权限说明
|
||||
|
||||
### 4.1 获取房间列表
|
||||
接口会根据当前登录用户的权限进行数据过滤:
|
||||
|
||||
**接口说明:** 分页查询房间信息
|
||||
1. 全校管理员(manager_type=1):可以查看所有校区、宿舍区和宿舍楼数据
|
||||
2. 校区管理员(manager_type=2):只能查看其管理的校区下的宿舍区和宿舍楼数据
|
||||
3. 宿舍区管理员(manager_type=3):只能查看其管理的宿舍区下的宿舍楼数据
|
||||
4. 宿舍楼管理员(manager_type=4):只能查看其管理的宿舍楼数据
|
||||
5. **多角色支持**:如果用户同时拥有多种管理员角色(如既是校区管理员又是宿舍楼管理员),将会合并所有权限范围内的数据。例如,一个用户同时是A校区管理员和B宿舍楼管理员,则可以看到A校区下的所有宿舍楼以及B宿舍楼。
|
||||
|
||||
- **请求方式:** GET
|
||||
- **请求路径:** `/xsssfjgl/room/list`
|
||||
- **请求参数:**
|
||||
权限判断逻辑:
|
||||
- 通过 xg_dorm_manager 表的 user_id 与当前登录用户匹配,获取用户管理员类型
|
||||
- 根据 manager_type 确定权限级别
|
||||
- 通过 xg_dorm_manager_source 表的 auth_source 确定具体权限范围
|
||||
- **多角色权限合并**:合并不同角色对应的宿舍楼数据,确保不重复
|
||||
|
||||
| 参数名 | 必填 | 类型 | 说明 |
|
||||
| ---- | ---- | ---- | ---- |
|
||||
| pageNum | 是 | number | 页码,从1开始 |
|
||||
| pageSize | 是 | number | 每页记录数 |
|
||||
| buildingId | 是 | string/number | 宿舍楼ID |
|
||||
| roomName | 否 | string | 房间名称,支持模糊查询 |
|
||||
| floorNumber | 否 | number | 楼层号 |
|
||||
| status | 否 | string | 房间状态:0-正常,1-维修中,2-停用 |
|
||||
#### 错误码
|
||||
|
||||
**响应示例:**
|
||||
| 错误码 | 描述 |
|
||||
| ------ | -------------------- |
|
||||
| 401 | 未授权,需要登录 |
|
||||
| 403 | 无权限访问该接口 |
|
||||
| 500 | 服务器内部错误 |
|
||||
|
||||
#### 使用示例
|
||||
|
||||
```javascript
|
||||
// 前端代码示例(使用axios)
|
||||
import axios from 'axios';
|
||||
|
||||
// 获取宿舍楼树形结构
|
||||
async function getDormBuildingTree() {
|
||||
try {
|
||||
const response = await axios.get('/xgss/dormBuildingTree/list');
|
||||
if (response.data.code === 200) {
|
||||
return response.data.data;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取宿舍楼树失败:', error);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
```
|
||||
|
||||
## 2. 宿舍楼信息管理
|
||||
|
||||
### 2.1 获取宿舍楼列表
|
||||
|
||||
#### 接口说明
|
||||
|
||||
该接口用于获取宿舍楼信息的分页列表,包含宿舍楼基本信息以及关联的校区和宿舍区信息。
|
||||
|
||||
#### 请求方式
|
||||
|
||||
```
|
||||
GET /sslxx/dormBuilding/list
|
||||
```
|
||||
|
||||
#### 权限要求
|
||||
|
||||
```
|
||||
sslxx:dormBuilding:list
|
||||
```
|
||||
|
||||
#### 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必须 | 描述 |
|
||||
| --------------- | ------- | ---- | ---------------------- |
|
||||
| pageNum | Integer | 是 | 当前页码,从1开始 |
|
||||
| pageSize | Integer | 是 | 每页记录数 |
|
||||
| buildingCode | String | 否 | 宿舍楼编码,模糊查询 |
|
||||
| buildingName | String | 否 | 宿舍楼名称,模糊查询 |
|
||||
| areaId | Long | 否 | 宿舍区ID,精确查询 |
|
||||
| campusId | Long | 否 | 校区ID,精确查询 |
|
||||
| buildingType | String | 否 | 宿舍楼类型(1男生楼 2女生楼 3混合楼) |
|
||||
|
||||
#### 返回结果
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "查询成功",
|
||||
"total": 1,
|
||||
"rows": [
|
||||
{
|
||||
"roomId": "111101",
|
||||
"roomName": "101",
|
||||
"floorNumber": 1,
|
||||
"buildingId": 111,
|
||||
"capacity": 4,
|
||||
"used": 2,
|
||||
"roomType": "标准间",
|
||||
"status": "0",
|
||||
"remark": "",
|
||||
"createBy": "admin",
|
||||
"createTime": "2023-01-01 00:00:00",
|
||||
"updateBy": "admin",
|
||||
"updateTime": "2023-01-01 00:00:00"
|
||||
"id": "1947459199879495681",
|
||||
"buildingCode": "xixi-ssq01-ssl01",
|
||||
"buildingName": "西溪校区-宿舍区01-宿舍楼01",
|
||||
"areaId": "1946829650430935041",
|
||||
"areaName": "西溪校区-宿舍区01",
|
||||
"campusId": "1946815553291304962",
|
||||
"campusName": "西溪校区",
|
||||
"buildingType": "1",
|
||||
"buildingDescription": "12312",
|
||||
"sortOrder": 1,
|
||||
"floors": 6,
|
||||
"createBy": 1,
|
||||
"createTime": "2025-07-22 08:50:30",
|
||||
"updateBy": 1,
|
||||
"updateTime": "2025-07-22 08:51:06"
|
||||
}
|
||||
],
|
||||
"total": 60
|
||||
"code": 200,
|
||||
"msg": "查询成功"
|
||||
}
|
||||
```
|
||||
|
||||
### 4.2 获取房间详情
|
||||
#### 返回参数说明
|
||||
|
||||
**接口说明:** 根据房间ID获取详细信息
|
||||
| 参数名 | 类型 | 描述 |
|
||||
| ------------------ | ------- | ---------------------------------------- |
|
||||
| id | Long | 宿舍楼主键ID |
|
||||
| buildingCode | String | 宿舍楼编码 |
|
||||
| buildingName | String | 宿舍楼名称 |
|
||||
| areaId | Long | 所属宿舍区ID |
|
||||
| areaName | String | 所属宿舍区名称 |
|
||||
| campusId | Long | 所属校区ID |
|
||||
| campusName | String | 所属校区名称 |
|
||||
| buildingType | String | 宿舍楼类型(1男生楼 2女生楼 3混合楼) |
|
||||
| buildingDescription | String | 宿舍楼描述 |
|
||||
| sortOrder | Integer | 排序号 |
|
||||
| floors | Integer | 总楼层数 |
|
||||
| createBy | Long | 创建者ID |
|
||||
| createTime | Date | 创建时间 |
|
||||
| updateBy | Long | 更新者ID |
|
||||
| updateTime | Date | 更新时间 |
|
||||
|
||||
- **请求方式:** GET
|
||||
- **请求路径:** `/xsssfjgl/room/{roomId}`
|
||||
- **请求参数:**
|
||||
#### 错误码
|
||||
|
||||
| 参数名 | 必填 | 类型 | 说明 |
|
||||
| ---- | ---- | ---- | ---- |
|
||||
| roomId | 是 | string/number | 房间ID |
|
||||
| 错误码 | 描述 |
|
||||
| ------ | -------------------- |
|
||||
| 401 | 未授权,需要登录 |
|
||||
| 403 | 无权限访问该接口 |
|
||||
| 500 | 服务器内部错误 |
|
||||
|
||||
**响应示例:**
|
||||
#### 使用示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": {
|
||||
"roomId": "111101",
|
||||
"roomName": "101",
|
||||
"floorNumber": 1,
|
||||
"buildingId": 111,
|
||||
"capacity": 4,
|
||||
"used": 2,
|
||||
"roomType": "标准间",
|
||||
"status": "0",
|
||||
"remark": "",
|
||||
"createBy": "admin",
|
||||
"createTime": "2023-01-01 00:00:00",
|
||||
"updateBy": "admin",
|
||||
"updateTime": "2023-01-01 00:00:00"
|
||||
```javascript
|
||||
// 前端代码示例(使用axios)
|
||||
import axios from 'axios';
|
||||
|
||||
// 获取宿舍楼列表
|
||||
async function getDormBuildingList(params) {
|
||||
try {
|
||||
const response = await axios.get('/sslxx/dormBuilding/list', {
|
||||
params: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
...params
|
||||
}
|
||||
});
|
||||
if (response.data.code === 200) {
|
||||
return response.data;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取宿舍楼列表失败:', error);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4.3 新增房间
|
||||
|
||||
**接口说明:** 新增宿舍房间
|
||||
|
||||
- **请求方式:** POST
|
||||
- **请求路径:** `/xsssfjgl/room`
|
||||
- **请求参数:**
|
||||
|
||||
```json
|
||||
{
|
||||
"roomName": "101",
|
||||
"floorNumber": 1,
|
||||
"buildingId": 111,
|
||||
"capacity": 4,
|
||||
"roomType": "标准间",
|
||||
"status": "0",
|
||||
"remark": "新增房间"
|
||||
}
|
||||
```
|
||||
|
||||
**响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功"
|
||||
}
|
||||
```
|
||||
|
||||
### 4.4 修改房间
|
||||
|
||||
**接口说明:** 修改宿舍房间信息
|
||||
|
||||
- **请求方式:** PUT
|
||||
- **请求路径:** `/xsssfjgl/room`
|
||||
- **请求参数:**
|
||||
|
||||
```json
|
||||
{
|
||||
"roomId": "111101",
|
||||
"roomName": "101",
|
||||
"floorNumber": 1,
|
||||
"buildingId": 111,
|
||||
"capacity": 4,
|
||||
"roomType": "标准间",
|
||||
"status": "0",
|
||||
"remark": "修改房间信息"
|
||||
}
|
||||
```
|
||||
|
||||
**响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功"
|
||||
}
|
||||
```
|
||||
|
||||
### 4.5 删除房间
|
||||
|
||||
**接口说明:** 删除宿舍房间
|
||||
|
||||
- **请求方式:** DELETE
|
||||
- **请求路径:** `/xsssfjgl/room/{roomIds}`
|
||||
- **请求参数:**
|
||||
|
||||
| 参数名 | 必填 | 类型 | 说明 |
|
||||
| ---- | ---- | ---- | ---- |
|
||||
| roomIds | 是 | string | 房间ID,多个ID用逗号分隔 |
|
||||
|
||||
**响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功"
|
||||
}
|
||||
```
|
||||
|
||||
## 5. 床位管理接口
|
||||
|
||||
### 5.1 获取床位列表
|
||||
|
||||
**接口说明:** 查询指定房间的床位列表
|
||||
|
||||
- **请求方式:** GET
|
||||
- **请求路径:** `/xsssfjgl/bed/list`
|
||||
- **请求参数:**
|
||||
|
||||
| 参数名 | 必填 | 类型 | 说明 |
|
||||
| ---- | ---- | ---- | ---- |
|
||||
| roomId | 是 | string/number | 房间ID |
|
||||
|
||||
**响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"bedId": "111101-1",
|
||||
"bedName": "1号床",
|
||||
"roomId": "111101",
|
||||
"status": "0",
|
||||
"studentId": null,
|
||||
"studentName": null,
|
||||
"remark": "",
|
||||
"createBy": "admin",
|
||||
"createTime": "2023-01-01 00:00:00",
|
||||
"updateBy": "admin",
|
||||
"updateTime": "2023-01-01 00:00:00"
|
||||
},
|
||||
{
|
||||
"bedId": "111101-2",
|
||||
"bedName": "2号床",
|
||||
"roomId": "111101",
|
||||
"status": "1",
|
||||
"studentId": 10001,
|
||||
"studentName": "张三",
|
||||
"remark": "",
|
||||
"createBy": "admin",
|
||||
"createTime": "2023-01-01 00:00:00",
|
||||
"updateBy": "admin",
|
||||
"updateTime": "2023-01-01 00:00:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 5.2 新增床位
|
||||
|
||||
**接口说明:** 新增床位
|
||||
|
||||
- **请求方式:** POST
|
||||
- **请求路径:** `/xsssfjgl/bed`
|
||||
- **请求参数:**
|
||||
|
||||
```json
|
||||
{
|
||||
"bedName": "3号床",
|
||||
"roomId": "111101",
|
||||
"status": "0",
|
||||
"remark": "新增床位"
|
||||
}
|
||||
```
|
||||
|
||||
**响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功"
|
||||
}
|
||||
```
|
||||
|
||||
### 5.3 修改床位
|
||||
|
||||
**接口说明:** 修改床位信息
|
||||
|
||||
- **请求方式:** PUT
|
||||
- **请求路径:** `/xsssfjgl/bed`
|
||||
- **请求参数:**
|
||||
|
||||
```json
|
||||
{
|
||||
"bedId": "111101-3",
|
||||
"bedName": "3号床",
|
||||
"roomId": "111101",
|
||||
"status": "1",
|
||||
"remark": "修改床位信息"
|
||||
}
|
||||
```
|
||||
|
||||
**响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功"
|
||||
}
|
||||
```
|
||||
|
||||
### 5.4 删除床位
|
||||
|
||||
**接口说明:** 删除床位
|
||||
|
||||
- **请求方式:** DELETE
|
||||
- **请求路径:** `/xsssfjgl/bed/{bedIds}`
|
||||
- **请求参数:**
|
||||
|
||||
| 参数名 | 必填 | 类型 | 说明 |
|
||||
| ---- | ---- | ---- | ---- |
|
||||
| bedIds | 是 | string | 床位ID,多个ID用逗号分隔 |
|
||||
|
||||
**响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功"
|
||||
}
|
||||
```
|
||||
|
||||
## 6. 数据字典
|
||||
|
||||
### 6.1 房间状态
|
||||
|
||||
| 状态码 | 说明 |
|
||||
| ---- | ---- |
|
||||
| 0 | 正常 |
|
||||
| 1 | 维修中 |
|
||||
| 2 | 停用 |
|
||||
|
||||
### 6.2 床位状态
|
||||
|
||||
| 状态码 | 说明 |
|
||||
| ---- | ---- |
|
||||
| 0 | 空闲 |
|
||||
| 1 | 已分配 |
|
||||
| 2 | 维修中 |
|
||||
|
||||
### 6.3 房间类型
|
||||
|
||||
| 类型 | 说明 |
|
||||
| ---- | ---- |
|
||||
| 标准间 | 标准宿舍,通常4-6人 |
|
||||
| 单人间 | 单人宿舍 |
|
||||
| 套间 | 带独立卫浴的宿舍 |
|
||||
|
||||
## 7. 错误码说明
|
||||
|
||||
| 错误码 | 说明 |
|
||||
| ---- | ---- |
|
||||
| 200 | 操作成功 |
|
||||
| 400 | 请求参数错误 |
|
||||
| 401 | 未授权 |
|
||||
| 403 | 禁止访问 |
|
||||
| 404 | 资源不存在 |
|
||||
| 500 | 系统内部错误 |
|
||||
| 1001 | 房间名称已存在 |
|
||||
| 1002 | 房间包含已分配的床位,无法删除 |
|
||||
| 1003 | 床位已分配给学生,无法删除 |
|
||||
|
||||
## 8. 移动端实现
|
||||
|
||||
### 8.1 移动端适配说明
|
||||
|
||||
移动端将实现以下功能:
|
||||
- 宿舍楼列表查看(无树形结构,改用列表+筛选)
|
||||
- 房间信息查看
|
||||
- 床位信息查看
|
||||
|
||||
暂不支持在移动端进行房间和床位的增删改操作,仅支持查询功能。
|
||||
|
||||
### 8.2 特殊API
|
||||
|
||||
移动端将使用与PC端相同的API,但增加以下特殊接口:
|
||||
|
||||
**获取宿舍楼列表:**
|
||||
|
||||
- **请求方式:** GET
|
||||
- **请求路径:** `/xsssfjgl/mobile/buildings`
|
||||
- **请求参数:**
|
||||
|
||||
| 参数名 | 必填 | 类型 | 说明 |
|
||||
| ---- | ---- | ---- | ---- |
|
||||
| campusId | 否 | string/number | 校区ID |
|
||||
| areaId | 否 | string/number | 宿舍区ID |
|
||||
|
||||
**响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"buildingId": 111,
|
||||
"buildingName": "东区1号楼",
|
||||
"campusName": "东校区",
|
||||
"areaName": "东区宿舍",
|
||||
"floors": 6
|
||||
}
|
||||
]
|
||||
return { total: 0, rows: [] };
|
||||
}
|
||||
```
|
||||
@@ -54,6 +54,7 @@ create table `xg_dorm_building` (
|
||||
`building_name` varchar(100) not null comment '宿舍楼名称',
|
||||
`area_id` bigint(20) not null comment '所属宿舍区ID',
|
||||
`campus_id` bigint(20) not null comment '所属校区ID',
|
||||
`floors` int(11) not null default '6' 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 '排序号',
|
||||
|
||||
Reference in new issue
Block a user