使用指南
快速了解如何注册和使用 VBank
快速开始
环境要求
-
.NET 10.0 SDK - 后端开发框架
-
PostgreSQL 15+ - 数据库服务器
-
Node.js 18+ - 前端资源构建
-
Visual Studio 2022 或 VS Code (可选) - 开发工具
安装步骤
步骤 1: 克隆仓库
git clone https://github.com/your-repo/vbank.git
cd vbank
步骤 2: 配置数据库连接
编辑 VBank.WebHost/appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=vbank;Username=postgres;Password=your_password"
},
"Jwt": {
"SecretKey": "your-super-secret-key-change-this-in-production",
"Issuer": "VBank",
"Audience": "VBankUsers",
"ExpiryMinutes": 60
}
}
步骤 3: 运行数据库迁移
cd VBank.WebHost
dotnet ef database update
步骤 4: 构建前端资源
npm install
npm run build
首次使用
-
1
注册银行用户
使用
/api/auth/register注册一个角色为 "Bank" 的用户 -
2
创建银行
登录后使用
/api/banks创建一个银行实例 -
3
注册存款人用户
注册角色为 "Depositor" 的用户
-
4
绑定银行与存款人
存款人提交绑定申请,银行审批通过
-
5
开始交易
存款人可以进行存款、取款操作
API 文档
认证接口
/api/auth/register
用户注册
查看详情
请求体:
{
"username": "string",
"password": "string",
"role": "Bank" | "Depositor"
}
响应:
{
"success": true,
"userId": "uuid",
"message": "注册成功"
}
/api/auth/login
用户登录
查看详情
请求体:
{
"username": "string",
"password": "string"
}
响应:
{
"token": "jwt-token-string",
"expiresAt": "2026-02-16T12:00:00Z",
"role": "Bank" | "Depositor"
}
/api/auth/wechat/login
微信OAuth登录
银行接口 (需要 Bank 角色)
/api/banks
创建银行
查看详情
请求头:
Authorization: Bearer {jwt-token}
请求体:
{
"name": "工商银行",
"description": "中国工商银行模拟分行"
}
/api/banks/{bankId}/bind
审批存款人绑定请求
/api/banks/{bankId}/interest-rate
设置账户类型利率
查看详情
请求体:
{
"accountType": "Demand",
"annualRate": 0.10 // 10% 年利率
}
/api/banks/{bankId}/bindings
查看所有绑定的存款人
存款人接口 (需要 Depositor 角色)
/api/depositors/me/banks
查看已绑定的银行列表
/api/depositors/me/accounts
查看所有账户及余额
/api/depositors/me/accounts/{accountId}/deposit
存款操作
查看详情
请求体:
{
"amount": 1000.00
}
响应:
{
"success": true,
"newBalance": 5000.00,
"transactionId": "uuid",
"timestamp": "2026-02-16T10:30:00Z"
}
/api/depositors/me/accounts/{accountId}/withdraw
取款操作
查看详情
请求体:
{
"amount": 500.00
}
/api/depositors/me/transactions
查看交易历史
架构概览
系统架构
┌─────────────────┐ ┌─────────────────┐
│ Web Client │ │ H5 Client │
│ (Razor Pages) │ │ (React) │
└────────┬────────┘ └────────┬────────┘
│ │
└────────────┬───────────────┘
│
┌───────▼────────┐
│ ASP.NET Core │
│ Controllers │
└───────┬────────┘
│
┌────────────┼────────────┐
│ │ │
┌────▼─────┐ ┌───▼────┐ ┌────▼────┐
│ Auth │ │ Bank │ │Depositor│
│ Service │ │Service │ │ Service │
└────┬─────┘ └───┬────┘ └────┬────┘
│ │ │
└───────────┼────────────┘
│
┌────────▼─────────┐
│ Entity Framework │
│ Core │
└────────┬─────────┘
│
┌────────▼─────────┐
│ PostgreSQL │
│ Database │
└──────────────────┘
数据库架构
主要实体:
- User: 用户基础信息(用户名、密码、角色)
- Bank: 银行实体(名称、描述、创建时间)
- DepositorProfile: 存款人档案
- DemandAccount: 活期账户(余额、账户号)
- BankDepositorBinding: 银行-存款人绑定关系
- AccountTransaction: 交易记录
- InterestRate: 利率配置
- InterestSettlementLog: 利息结算日志
- WeChatOpenIdBinding: 微信账号绑定
认证流程
用户登录
↓
验证用户名密码
↓
生成 JWT Token (包含 UserId, Role, 过期时间)
↓
返回 Token 给客户端
↓
客户端在后续请求中携带 Token
↓
服务端验证 Token 有效性
↓
提取用户信息和角色
↓
授权访问特定资源
交易处理流程
存款/取款请求
↓
验证用户身份与账户权限
↓
检查金额有效性 (取款检查余额)
↓
开启数据库事务
↓
更新账户余额
↓
创建交易记录
↓
提交事务
↓
返回新余额和交易ID
故障排除
数据库连接失败
问题: 无法连接到 PostgreSQL 数据库
解决方案:
- 检查 PostgreSQL 服务是否正在运行
- 验证 appsettings.json 中的连接字符串
- 确认数据库用户名和密码正确
- 检查防火墙设置
JWT Token 验证失败
问题: 401 Unauthorized 错误
解决方案:
- 确认 Token 未过期
- 检查 Authorization Header 格式:
Bearer {token} - 验证 appsettings.json 中的 JWT 配置
- 重新登录获取新 Token
取款失败 - 余额不足
问题: 取款操作被拒绝
解决方案:
- 检查账户当前余额
- 确认取款金额不超过可用余额
- 查看是否有未结算的交易
前端资源未加载
问题: CSS/JS 文件 404
解决方案:
- 运行
npm run build - 确认 wwwroot 目录包含编译后的文件
- 检查 _Layout.cshtml 中的资源引用路径
常见问题 (FAQ)
利息是如何计算的?
利息按照年利率设置,但每日结算时会转换为日利率。计算公式:
日利率 = 年利率 ÷ 365
每日利息 = 账户余额 × 日利率
一个用户可以同时拥有银行和存款人角色吗?
目前系统设计为一个用户只能拥有一个角色。如需体验两种角色,请注册两个不同的账户。
如何重置密码?
当前版本暂不支持密码重置功能。如需重置,请联系系统管理员直接在数据库中修改。 未来版本将添加密码重置功能。
存款人如何解除与银行的绑定?
银行管理员可以将绑定状态设置为 Inactive 来停用绑定关系。存款人将无法继续对该银行的账户进行操作。
系统支持哪些货币?
当前版本默认使用人民币(CNY)作为唯一货币单位。系统架构支持扩展多货币,可在未来版本中添加。
微信登录需要什么配置?
需要在微信开放平台注册应用,获取 AppId 和 AppSecret,并在 appsettings.json 中配置。 详细步骤请参考微信开放平台文档。