You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
digital-rmb-backend/README.md

55 lines
2.5 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 数字人民币教学仿真后端
开发规范与模块目录约定见 [开发规范](docs/DEVELOPMENT_GUIDE.md)。
## 运行环境
- JDK 8已按 Temurin 8 验证)
- Spring Boot 2.7.18、Spring Security 5.7、MyBatis-Plus 3.5.17、Knife4j 4.4.0
- MySQL 8
## 登录方式
- 兼容综合实训平台登录:`POST /api/user/login`。
- 账号密码登录参数:`username`、`passwordEncode`。
- Token 单点登录参数:`TOKEN`。接口解析智云 HS256 Token同步本地用户并直接返回本系统访问 Token。
- 原有主平台跳转登录:`GET /api/v1/auth/sso?token=...`,验证成功后携带本系统 Token 跳转前端回调地址。
- 本地账号密码:`POST /api/v1/auth/login` 请求体为
`{"studentId":"tzs001","password":"123qwe"}`,按 `sys_user.student_id`
查询并校验本系统保存的 BCrypt 密码哈希。旧字段 `username` 暂时作为兼容别名。
Token 单点登录中的平台 `userId` 保存为 `sys_user.zy_user_id`;本地
`sys_user.user_id` 始终使用 UUID 主键。本系统只接受管理员、教师和学生角色。
## 必需配置
生产环境通过环境变量配置:
| 变量 | 说明 |
| --- | --- |
| `DIGITAL_RMB_DB_URL` | 本系统 MySQL JDBC 地址 |
| `DIGITAL_RMB_DB_USERNAME` | 本系统数据库账号 |
| `DIGITAL_RMB_DB_PASSWORD` | 本系统数据库密码 |
| `DIGITAL_RMB_JWT_SECRET` | 至少 64 字符的应用 JWT 密钥 |
| `DIGITAL_RMB_PLATFORM_DB_URL` | 主平台 MySQL JDBC 地址 |
| `DIGITAL_RMB_PLATFORM_DB_USERNAME` | 主平台只读数据库账号 |
| `DIGITAL_RMB_PLATFORM_DB_PASSWORD` | 主平台只读数据库密码 |
| `DIGITAL_RMB_CAS_LOGIN_URL` | 学校 CAS 登录地址 |
| `DIGITAL_RMB_CAS_VALIDATE_URL` | CAS `serviceValidate` 地址 |
| `DIGITAL_RMB_CAS_CALLBACK_URL` | 本系统固定 CAS 回调地址 |
| `DIGITAL_RMB_FRONTEND_CALLBACK_URL` | 前端接收一次性 code 的固定回调地址 |
主平台数据库账号必须仅授予 `SELECT` 权限。不要将主平台 Token 写入日志、数据库或前端最终 URL。
## 本地运行
```powershell
mvn spring-boot:run -Dspring-boot.run.profiles=local -Dspring-boot.run.arguments=--server.port=8081
```
本地 Swagger<http://localhost:8081/doc.html>
测试环境会执行 `schema.sql`,创建或更新测试账号 `tzs001`。`dev` 配置的
`spring.sql.init.mode``never`,不会自动修改真实 MySQL开发库必须已有
`sys_user` 记录,并且 `password` 必须保存 BCrypt 哈希,不能保存密码明文。