|
|
# 数字人民币教学仿真后端
|
|
|
|
|
|
开发规范与模块目录约定见 [开发规范](docs/DEVELOPMENT_GUIDE.md)。
|
|
|
|
|
|
## 运行环境
|
|
|
|
|
|
- JDK 8(已按 Temurin 8 验证)
|
|
|
- Spring Boot 2.7.18、Spring Security 5.7、MyBatis-Plus 3.5.17、Springdoc 1.8.0
|
|
|
- MySQL 8
|
|
|
|
|
|
## 登录方式
|
|
|
|
|
|
- 主平台单点登录:主平台跳转至 `GET /api/v1/auth/sso?token=...`。后端以主平台教师或学生档案的 `add_time` 动态 HMAC 密钥验证 Token,生成一次性 `code` 并跳转至前端回调地址。
|
|
|
- 独立访问:浏览器访问 `GET /api/v1/auth/cas/login`,跳转学校 CAS;回调校验成功后生成同样的一次性 `code`。
|
|
|
- 本地账号密码:`POST /api/v1/auth/login` 仅校验本系统保存的 BCrypt 密码哈希。`schema.sql` 内置学生账号 `tzs001`;SSO/CAS 仅同步身份与角色,不读取主平台密码。
|
|
|
- 会话兑换:`POST /api/v1/auth/session/exchange`,请求体为 `{"code":"..."}`,返回本系统访问 JWT 和刷新令牌。
|
|
|
|
|
|
本系统只接受教师和学生两类身份。平台账号与角色只能通过内部投影写入;没有用户、角色或用户角色的管理接口。
|
|
|
|
|
|
## 必需配置
|
|
|
|
|
|
生产环境通过环境变量配置:
|
|
|
|
|
|
| 变量 | 说明 |
|
|
|
| --- | --- |
|
|
|
| `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/swagger-ui/index.html>
|
|
|
|
|
|
## 数字货币发行实验模块
|
|
|
|
|
|
学生携带有效 JWT 可操作商业银行端和中央银行端;接口不区分教师、学生角色。
|
|
|
|
|
|
- 商业银行端:`/api/v1/commercial-banks/issuance`,包含库存查询、发行申请创建与更新、待签名原文、SM3 摘要、SM2 签名、报文封装和发送。
|
|
|
- 中央银行端:`/api/v1/central-banks/issuance/requests/{id}`,只读返回请求接收状态、接收时间和请求报文。
|
|
|
- 启动测试库配置:`mvn spring-boot:run -Dspring-boot.run.profiles=dev`。
|
|
|
- Swagger 接口说明按“数字货币发行模块 - 商业银行端”和“数字货币发行模块 - 中央银行端”分组,使用中文 UTF-8 文本。
|
|
|
|
|
|
应用启动时会执行幂等的 `schema.sql`,创建缺失表并创建或更新 `tzs001`(平台用户 ID `487`、`STUDENT`)。脚本只保存 BCrypt 哈希,不含密码明文。开发环境可使用 `dev` 配置连接测试库:`mvn spring-boot:run -Dspring-boot.run.profiles=dev`。新 SSO/CAS 用户会获得随机 BCrypt 密码;如需为其开通本地密码登录,必须通过后续受控的本地账号初始化流程完成。
|