forked from wangziqi/gongxue-base
- 后端: NestJS 11 + TypeORM + JWT认证 + SQLite/MySQL - 前端: React 19 + Ant Design 6 + Vite 8 + ECharts - 功能模块: 数据面板、学生管理、宿舍管理、入住管理、费用录入、账单管理、教室管理、押金管理、操作日志、账号管理 - 支持Docker一键部署
112 lines
4.0 KiB
Markdown
112 lines
4.0 KiB
Markdown
# 恭学教育基地管理系统
|
||
|
||
教培公司集训基地宿舍水电费精准计费系统,采用「人天数加权分摊」算法,按每位学生的实际入住天数公平分摊宿舍公共费用。
|
||
|
||
## 功能模块
|
||
|
||
| 模块 | 功能说明 |
|
||
|------|---------|
|
||
| 数据面板 | 统计卡片、费用趋势图、宿舍排行、甘特图 |
|
||
| 宿舍总览 | 房态可视化网格,空置/在住/满员颜色区分 |
|
||
| 学生管理 | 增删改查、批量导入/删除 |
|
||
| 宿舍管理 | 增删改查,删除前检查在住人员 |
|
||
| 入住管理 | 入住登记、退宿、换房、一键导入名单 |
|
||
| 费用录入 | 宿舍公共费用(水/电/保洁等)+ 个人附加费 |
|
||
| 账单管理 | 自动生成、确认、标记已付、删除、批量操作 |
|
||
| 账单导出 | Excel(汇总+明细双Sheet)、单条PDF账单 |
|
||
| 教室管理 | 教室信息维护、教室租赁记录 |
|
||
| 押金管理 | 押金收取与退还 |
|
||
| 操作日志 | 所有涉及钱的操作自动审计留痕 |
|
||
| 账号管理 | 用户增删改查、角色区分、启用/禁用、重置密码 |
|
||
|
||
## 技术架构
|
||
|
||
```
|
||
前端 (React + Vite) 后端 (NestJS) 数据库
|
||
┌─────────────────┐ ┌──────────────────┐ ┌──────────┐
|
||
│ React 19 │ │ NestJS 11 │ │ SQLite │
|
||
│ Ant Design 6 │────▶│ TypeORM 0.3 │────▶│ (开发) │
|
||
│ ECharts │ │ JWT + Passport │ │ MySQL 8 │
|
||
│ Vite 8 │ │ ExcelJS + PDFKit │ │ (生产) │
|
||
└─────────────────┘ └──────────────────┘ └──────────┘
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 环境要求
|
||
|
||
- Node.js >= 18
|
||
- npm >= 9
|
||
|
||
### 后端启动
|
||
|
||
```bash
|
||
cd backend
|
||
cp .env.example .env # 复制并修改环境配置
|
||
npm install
|
||
npm run start:dev # 开发模式启动,默认端口 3000
|
||
```
|
||
|
||
### 前端启动
|
||
|
||
```bash
|
||
cd frontend
|
||
npm install
|
||
npm run dev # 开发模式启动,默认端口 5173
|
||
```
|
||
|
||
### Docker 部署
|
||
|
||
```bash
|
||
docker-compose up -d # 一键启动 MySQL + 后端 + 前端
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
├── backend/ # 后端 NestJS 服务
|
||
│ ├── src/
|
||
│ │ ├── auth/ # 认证模块 (JWT)
|
||
│ │ ├── bills/ # 账单模块
|
||
│ │ ├── classrooms/ # 教室管理
|
||
│ │ ├── dashboard/ # 数据面板
|
||
│ │ ├── deposits/ # 押金管理
|
||
│ │ ├── entities/ # 数据实体
|
||
│ │ ├── expenses/ # 费用录入
|
||
│ │ ├── occupancies/# 入住管理
|
||
│ │ ├── rooms/ # 宿舍管理
|
||
│ │ ├── students/ # 学生管理
|
||
│ │ └── tenants/ # 租户管理
|
||
│ └── .env.example # 环境配置模板
|
||
├── frontend/ # 前端 React 应用
|
||
│ └── src/
|
||
│ ├── api/ # API 请求封装
|
||
│ ├── layouts/ # 布局组件
|
||
│ └── pages/ # 页面组件
|
||
├── docker-compose.yml # Docker 编排配置
|
||
└── 技术文档.md # 详细技术文档
|
||
```
|
||
|
||
## 环境配置
|
||
|
||
复制 `backend/.env.example` 为 `backend/.env`,按需修改:
|
||
|
||
| 配置项 | 说明 | 默认值 |
|
||
|--------|------|--------|
|
||
| `DB_TYPE` | 数据库类型 | `mysql` |
|
||
| `DB_HOST` | 数据库地址 | `localhost` |
|
||
| `DB_PORT` | 数据库端口 | `3306` |
|
||
| `DB_USERNAME` | 数据库用户名 | `dorm_billing` |
|
||
| `DB_PASSWORD` | 数据库密码 | - |
|
||
| `DB_DATABASE` | 数据库名 | `dorm_billing` |
|
||
| `JWT_SECRET` | JWT 密钥(务必替换) | - |
|
||
| `JWT_EXPIRES_IN` | Token 有效期 | `24h` |
|
||
| `ADMIN_PASSWORD` | 初始管理员密码 | - |
|
||
| `PORT` | 后端服务端口 | `3000` |
|
||
|
||
## 开发规范
|
||
|
||
- 后端代码使用 Prettier + ESLint 格式化
|
||
- 提交前确保 `npm run lint` 无报错
|
||
- 敏感配置(密码、密钥等)仅存放在 `.env` 文件,不提交到版本库
|