Files
backend-node/README.md

125 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 授权管理系统 - 后端服务
浙江贝凡企业授权管理系统的后端服务,基于 Node.js + TypeScript + Express + SQLite。
## 技术栈
- **Node.js**: 运行时环境
- **TypeScript**: 类型安全
- **Express**: Web 框架
- **SQLite**: 数据库
- **JWT**: 身份认证
- **bcryptjs**: 密码加密
## 项目结构
```
backend/
├── routes/ # API 路由
│ ├── auth.ts # 认证路由
│ ├── serials.ts # 序列号路由
│ └── companies.ts # 企业路由
├── middleware/ # 中间件
│ └── auth.ts # 认证中间件
├── scripts/ # 脚本
│ └── init-db.ts # 数据库初始化
├── utils/ # 工具函数
│ └── database.ts # 数据库连接
├── types/ # 类型定义
│ └── index.d.ts # TypeScript 类型
├── data/ # 数据文件
│ └── database.sqlite
├── server.ts # 服务器入口
├── tsconfig.json # TypeScript 配置
├── .env # 环境变量
└── package.json # 项目配置
```
## 安装
```bash
pnpm install
```
## 开发
启动开发服务器(支持热重载):
```bash
pnpm dev
```
服务器将在 http://localhost:3000 运行
## 构建
构建 TypeScript 为 JavaScript
```bash
pnpm build
```
## 生产
启动生产服务器:
```bash
pnpm start
```
## 数据库初始化
初始化数据库和默认管理员账户:
```bash
pnpm init-db
```
## 环境变量
创建 `.env` 文件:
```env
PORT=3000
JWT_SECRET=your-secret-key-here
```
## 默认账户
初始化后默认创建的管理员账户:
- 用户名: admin
- 密码: Beifan@2026
## API 接口
### 认证接口
- `POST /api/auth/login` - 用户登录
- `GET /api/auth/profile` - 获取用户信息
- `POST /api/auth/change-password` - 修改密码
- `PUT /api/auth/profile` - 更新用户资料
### 序列号接口
- `POST /api/serials/generate` - 生成序列号
- `POST /api/serials/generate-with-prefix` - 使用自定义前缀生成序列号
- `POST /api/serials/:serialNumber/qrcode` - 生成二维码
- `GET /api/serials/:serialNumber/query` - 查询序列号
- `GET /api/serials/` - 获取序列号列表
- `PATCH /api/serials/:serialNumber` - 更新序列号
- `POST /api/serials/:serialNumber/revoke` - 吊销序列号
### 企业接口
- `GET /api/companies/` - 获取企业列表
- `GET /api/companies/:companyName` - 获取企业详情
- `PATCH /api/companies/:companyName` - 更新企业信息
- `DELETE /api/companies/:companyName` - 删除企业
- `DELETE /api/companies/:companyName/serials/:serialNumber` - 删除企业下的序列号
- `POST /api/companies/:companyName/revoke` - 吊销企业
- `GET /api/companies/stats/overview` - 获取统计数据
## License
MIT