Files
tyapi-server/docs/充值功能说明.md
2025-07-28 01:46:39 +08:00

192 lines
4.4 KiB
Markdown
Raw Permalink 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.

# 充值功能说明
## 概述
本系统支持三种充值方式:
1. **支付宝充值** - 通过支付宝进行在线充值(待实现)
2. **对公转账** - 通过银行转账进行充值
3. **赠送充值** - 管理员为用户进行赠送充值
## 功能架构
### 实体层 (Entities)
- `RechargeRecord` - 充值记录实体
- `Wallet` - 钱包实体
- `WalletTransaction` - 钱包交易记录实体
### 领域服务层 (Domain Services)
- `WalletAggregateService` - 钱包聚合服务,处理充值业务逻辑
### 应用服务层 (Application Services)
- `FinanceApplicationService` - 财务应用服务,协调充值操作
### HTTP层 (HTTP Handlers)
- `FinanceHandler` - 财务HTTP处理器提供REST API接口
## API接口
### 1. 对公转账充值
**接口地址:** `POST /api/v1/finance/wallet/transfer-recharge`
**请求参数:**
```json
{
"amount": "100.00",
"transfer_order_id": "TR202412010001",
"bank_account": "6222021234567890123",
"bank_name": "中国工商银行",
"notes": "转账备注"
}
```
**响应示例:**
```json
{
"code": 200,
"message": "对公转账充值成功",
"data": {
"id": "uuid",
"user_id": "user_uuid",
"amount": "100.00",
"recharge_type": "transfer",
"status": "success",
"transfer_order_id": "TR202412010001",
"bank_account": "6222021234567890123",
"bank_name": "中国工商银行",
"notes": "转账备注",
"created_at": "2024-12-01T10:00:00Z",
"updated_at": "2024-12-01T10:00:00Z"
}
}
```
### 2. 赠送充值
**接口地址:** `POST /api/v1/finance/wallet/gift-recharge`
**请求参数:**
```json
{
"amount": "50.00",
"gift_reason": "新用户注册奖励",
"notes": "系统自动赠送"
}
```
**响应示例:**
```json
{
"code": 200,
"message": "赠送充值成功",
"data": {
"id": "uuid",
"user_id": "user_uuid",
"amount": "50.00",
"recharge_type": "gift",
"status": "success",
"gift_reason": "新用户注册奖励",
"operator_id": "system",
"notes": "系统自动赠送",
"created_at": "2024-12-01T10:00:00Z",
"updated_at": "2024-12-01T10:00:00Z"
}
}
```
### 3. 通用充值(保留接口)
**接口地址:** `POST /api/v1/finance/wallet/recharge`
**请求参数:**
```json
{
"amount": "200.00"
}
```
## 业务规则
### 对公转账充值
1. 转账订单号必须唯一,不能重复使用
2. 充值成功后立即更新钱包余额
3. 充值记录状态标记为成功
### 赠送充值
1. 赠送充值直接标记为成功状态
2. 立即更新钱包余额
3. 记录操作员ID当前为"system"
### 通用规则
1. 充值金额必须大于0
2. 用户必须存在钱包
3. 使用乐观锁防止并发问题
4. 所有操作都有详细的日志记录
## 数据库表结构
### recharge_records 表
```sql
CREATE TABLE recharge_records (
id VARCHAR(36) PRIMARY KEY,
user_id VARCHAR(36) NOT NULL,
amount DECIMAL(20,8) NOT NULL,
recharge_type VARCHAR(20) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'pending',
alipay_order_id VARCHAR(64),
transfer_order_id VARCHAR(64),
bank_account VARCHAR(100),
bank_name VARCHAR(100),
gift_reason VARCHAR(200),
notes TEXT,
operator_id VARCHAR(36),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted_at TIMESTAMP NULL,
INDEX idx_user_id (user_id),
INDEX idx_recharge_type (recharge_type),
INDEX idx_status (status),
INDEX idx_alipay_order_id (alipay_order_id),
INDEX idx_transfer_order_id (transfer_order_id)
);
```
## 错误处理
### 常见错误码
- `400` - 请求参数错误
- `401` - 用户未登录
- `409` - 转账订单号已存在
- `500` - 服务器内部错误
### 错误消息示例
```json
{
"code": 409,
"message": "转账订单号已存在",
"data": null
}
```
## 后续开发计划
1. **支付宝充值功能**
- 集成支付宝支付接口
- 实现支付回调处理
- 添加支付状态查询接口
2. **充值记录查询**
- 添加充值记录列表查询接口
- 支持按用户、类型、状态等条件筛选
3. **充值统计功能**
- 添加充值金额统计
- 支持按时间段统计充值情况
## 注意事项
1. 所有金额计算使用 `decimal.Decimal` 类型,确保精度
2. 使用乐观锁机制防止并发充值问题
3. 充值操作都有完整的日志记录
4. 对公转账充值需要人工审核确认
5. 赠送充值需要管理员权限