Skip to content

Latest commit

 

History

History
337 lines (243 loc) · 9.66 KB

File metadata and controls

337 lines (243 loc) · 9.66 KB

MeetFlow 会议室预约系统 - 运行说明文档

目录


环境要求

后端环境

  • JDK: 17 或更高版本
  • Maven: 3.6+
  • MySQL: 5.7+ 或 8.0+
  • Spring Boot: 4.0.0

前端环境

  • Node.js: ^20.19.0 或 >=22.12.0
  • npm: 随 Node.js 安装

数据库配置

1. 创建数据库

首先在 MySQL 中创建数据库:

CREATE DATABASE IF NOT EXISTS meetflow 
DEFAULT CHARACTER SET utf8mb4 
DEFAULT COLLATE utf8mb4_unicode_ci;

2. 建表语句

执行以下 SQL 语句创建数据表:

-- 用户表
CREATE TABLE IF NOT EXISTS `user` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
    `username` VARCHAR(50) NOT NULL COMMENT '用户名',
    `password` VARCHAR(255) NOT NULL COMMENT '密码(加密后)',
    `name` VARCHAR(50) NOT NULL COMMENT '真实姓名',
    `role` INT NOT NULL DEFAULT 0 COMMENT '角色:0-普通用户,1-管理员,2-超级管理员',
    `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
    `email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_username` (`username`),
    KEY `idx_role` (`role`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';

-- 会议室表
CREATE TABLE IF NOT EXISTS `meeting_room` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '会议室ID',
    `name` VARCHAR(100) NOT NULL COMMENT '会议室名称',
    `room_number` VARCHAR(50) NOT NULL COMMENT '房号',
    `capacity` INT NOT NULL COMMENT '容纳人数',
    `area` DECIMAL(10,2) DEFAULT NULL COMMENT '面积(平方米)',
    `purpose` VARCHAR(500) DEFAULT NULL COMMENT '用途描述',
    `photo_url` VARCHAR(500) DEFAULT NULL COMMENT '照片URL(阿里云OSS)',
    `status` INT NOT NULL DEFAULT 1 COMMENT '状态:0-不可预约,1-可预约',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    KEY `idx_status` (`status`),
    KEY `idx_room_number` (`room_number`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议室表';

-- 预约记录表
CREATE TABLE IF NOT EXISTS `reservation` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '预约ID',
    `user_id` BIGINT NOT NULL COMMENT '预约用户ID',
    `meeting_room_id` BIGINT NOT NULL COMMENT '会议室ID',
    `meeting_title` VARCHAR(200) NOT NULL COMMENT '会议主题',
    `reservation_date` DATE NOT NULL COMMENT '预约日期',
    `start_time` INT NOT NULL COMMENT '开始时间(小时,0-23)',
    `end_time` INT NOT NULL COMMENT '结束时间(小时,0-23)',
    `attendee_count` INT NOT NULL COMMENT '参会人数',
    `status` INT NOT NULL DEFAULT 0 COMMENT '状态:0-待审批,1-已通过,2-已驳回,3-已取消,4-已完成',
    `reject_reason` VARCHAR(500) DEFAULT NULL COMMENT '驳回理由',
    `approve_time` DATETIME DEFAULT NULL COMMENT '审批时间',
    `approver_id` BIGINT DEFAULT NULL COMMENT '审批人ID',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_meeting_room_id` (`meeting_room_id`),
    KEY `idx_reservation_date` (`reservation_date`),
    KEY `idx_status` (`status`),
    CONSTRAINT `fk_reservation_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE,
    CONSTRAINT `fk_reservation_meeting_room` FOREIGN KEY (`meeting_room_id`) REFERENCES `meeting_room` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预约记录表';

3. 配置数据库连接

编辑 backend/meetflow/src/main/resources/application.yml 文件,根据实际情况修改数据库连接信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/meetflow?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root        # 修改为你的MySQL用户名
    password: 123456      # 修改为你的MySQL密码

4. 初始化超级管理员(可选)

如果需要创建超级管理员账号,可以先注册一个用户,然后执行以下 SQL:

-- 将指定用户设置为超级管理员(role=2)
UPDATE user SET role = 2 WHERE username = 'your_username';

或者使用项目中的 backend/meetflow/update_root_user.sql 文件:

-- 将root用户的role设置为2(超级管理员)
UPDATE user SET role = 2 WHERE username = 'root';

后端启动

1. 进入后端目录

cd backend/meetflow

2. 安装依赖(首次运行)

使用 Maven 下载项目依赖:

mvn clean install

或者使用 IDE(如 IntelliJ IDEA、Eclipse)自动导入 Maven 项目。

3. 配置环境变量(可选)

如果使用阿里云 OSS 存储会议室照片,需要配置以下环境变量:

  • OSS_ENDPOINT: OSS 端点地址(默认:https://oss-cn-beijing.aliyuncs.com)
  • OSS_ACCESS_KEY_ID: OSS AccessKey ID
  • OSS_ACCESS_KEY_SECRET: OSS AccessKey Secret
  • OSS_BUCKET_NAME: OSS 存储桶名称(默认:meetflow-room-photos)
  • OSS_URL_PREFIX: OSS 访问地址前缀

注意:如果不配置 OSS,文件上传功能可能无法正常使用。

4. 启动 Spring Boot 应用

方式一:使用 Maven 命令启动

mvn spring-boot:run

方式二:使用 IDE 启动

  1. 打开 backend/meetflow/src/main/java/com/lls/MeetflowApplication.java
  2. 运行 main 方法

方式三:打包后运行

# 打包
mvn clean package

# 运行 jar 包
java -jar target/meetflow-0.0.1-SNAPSHOT.jar

5. 验证启动

启动成功后,访问以下地址验证:

  • API 基础地址:http://localhost:8080/api
  • 健康检查:访问 http://localhost:8080/api 查看接口响应

前端启动

1. 进入前端目录

cd frontend/meetflow

2. 安装依赖(首次运行)

npm install

如果安装速度较慢,可以使用国内镜像:

# 使用淘宝镜像
npm install --registry=https://registry.npmmirror.com

3. 配置 API 地址(如需要)

检查 frontend/meetflow/src/utils/request.js 文件,确认 API 基础地址是否正确:

// 默认应该是 http://localhost:8080/api
baseURL: 'http://localhost:8080/api'

4. 启动开发服务器

npm run dev

启动成功后,控制台会显示访问地址,通常是:http://localhost:5173

5. 构建生产版本(可选)

如果需要构建生产版本:

npm run build

构建完成后,静态文件会生成在 frontend/meetflow/dist 目录下。

6. 预览生产版本(可选)

npm run preview

常见问题

1. 数据库连接失败

问题:启动后端时提示数据库连接失败

解决方案

  • 检查 MySQL 服务是否启动
  • 确认 application.yml 中的数据库连接信息是否正确
  • 确认数据库 meetflow 是否已创建
  • 检查 MySQL 用户权限

2. 端口被占用

问题:8080 端口已被占用

解决方案

  • 修改 application.yml 中的 server.port 配置
  • 或者关闭占用 8080 端口的其他程序

3. Maven 依赖下载失败

问题mvn install 时依赖下载失败

解决方案

  • 检查网络连接
  • 配置 Maven 国内镜像(如阿里云镜像)
  • 清理 Maven 本地仓库后重新下载

4. Node.js 版本不匹配

问题:前端启动时提示 Node.js 版本不符合要求

解决方案

  • 安装符合要求的 Node.js 版本(^20.19.0 或 >=22.12.0)
  • 使用 nvm(Node Version Manager)管理多个 Node.js 版本

5. 前端无法连接后端

问题:前端页面可以打开,但无法调用后端 API

解决方案

  • 确认后端服务已启动(访问 http://localhost:8080/api 测试)
  • 检查前端 request.js 中的 API 地址配置
  • 检查浏览器控制台的错误信息
  • 确认后端 CORS 配置正确

6. OSS 文件上传失败

问题:上传会议室照片时失败

解决方案

  • 检查 OSS 环境变量是否配置
  • 确认 OSS AccessKey 和 Secret 是否正确
  • 确认 OSS Bucket 是否存在且有写入权限
  • 如果不使用 OSS,可以暂时跳过照片上传功能

项目结构说明

meetflow/
├── backend/              # 后端项目
│   └── meetflow/        # Spring Boot 项目
│       ├── src/
│       │   ├── main/
│       │   │   ├── java/        # Java 源代码
│       │   │   └── resources/   # 配置文件
│       │   └── test/            # 测试代码
│       ├── pom.xml              # Maven 配置文件
│       └── application.yml      # Spring Boot 配置文件
├── frontend/            # 前端项目
│   └── meetflow/       # Vue 3 项目
│       ├── src/        # 源代码
│       ├── package.json # npm 配置文件
│       └── vite.config.js # Vite 配置文件
└── 运行说明.md         # 本文件

联系与支持

如有问题,请查看项目文档或联系开发团队。