Files
1818web-hoduan/docs/user-balance-log-description-enhancement.md

113 lines
3.7 KiB
Markdown
Raw Normal View History

# 用户余额记录描述增强说明
## 概述
本次修改增强了 `user_balance_log` 表中 `description` 字段的详细程度,让用户更清楚地了解余额变动的具体原因和来源。
## 修改内容
### 1. 工作流收益描述增强
**修改文件**: `src/main/java/com/dora/service/impl/ContentRevenueStageServiceImpl.java`
**原描述格式**:
```
工作流用户使用奖励 - 工作流:%s, 奖励:%s元
```
**新描述格式**:
```
【工作流收益】%s 获得新用户使用奖励 - 每个用户首次使用获得%.2f元收益
```
**改进说明**:
- 添加了明确的收益类型标识 `【工作流收益】`
- 包含具体的工作流名称
- 解释了触发条件(新用户首次使用)
- 使用更精确的数字格式显示
### 2. 视频收益描述增强
**修改文件**: `src/main/java/com/dora/service/impl/ContentRevenueStageServiceImpl.java`
**原描述格式**:
```
视频收益阶段达成 - %s, 观看数:%d, 奖励:%s元
```
**新描述格式**:
```
【视频收益】%s 达到%s阶段奖励 - 观看次数达到%d次获得%.2f元收益
```
**改进说明**:
- 添加了明确的收益类型标识 `【视频收益】`
- 包含具体的视频标题(从数据库查询获取)
- 详细说明了达成的阶段和具体观看次数
- 明确标示奖励金额
### 3. 推广收益描述增强
**修改文件**: `src/main/java/com/dora/service/impl/PromotionCommissionServiceImpl.java`
**原描述格式**:
```
推广分成收益 - 订单:%d, 金额:%s
```
**新描述格式**:
```
【推广收益】粉丝 %s 购买会员获得Lv%d推广分成 - 订单金额%.2f元,分成%.2f元(%.1f%%)
```
**改进说明**:
- 添加了明确的收益类型标识 `【推广收益】`
- 包含具体的粉丝用户名
- 显示推广等级信息
- 详细显示订单金额、分成金额和分成比例
## 技术实现细节
### 1. 新增依赖注入
`ContentRevenueStageServiceImpl` 中添加了 `VideoMapper` 依赖,用于查询视频详细信息:
```java
private final VideoMapper videoMapper;
```
### 2. 动态获取内容名称
- **视频收益**: 通过 `videoMapper.selectById(videoId)` 获取视频标题
- **工作流收益**: 直接使用已有的 `workflow.getName()`
- **推广收益**: 通过 `userMapper.selectById(commission.getFanId())` 获取粉丝用户名
### 3. 数字格式统一
所有金额显示统一使用 `%.2f` 格式,确保显示两位小数
## 用户体验改进
### 原来的描述示例
```
推广分成收益 - 订单:12345, 金额:11.70
视频收益阶段达成 - 视频等级1, 观看数:1000, 奖励:50.00元
工作流用户使用奖励 - 工作流:AI图像生成, 奖励:1.00元
```
### 改进后的描述示例
```
【推广收益】粉丝 用户张三 购买会员获得Lv1推广分成 - 订单金额39.00元分成11.70元(30.0%)
【视频收益】AI基础教程 达到视频等级1阶段奖励 - 观看次数达到1000次获得50.00元收益
【工作流收益】AI图像生成 获得新用户使用奖励 - 每个用户首次使用获得1.00元收益
```
## 兼容性说明
- ✅ 不破坏现有数据结构
- ✅ 不影响现有业务逻辑
- ✅ 向后兼容,老数据正常显示
- ✅ 新数据使用增强的描述格式
## 测试建议
1. 创建新的工作流使用记录,验证描述格式
2. 触发视频观看阶段奖励,验证视频名称显示
3. 产生推广分成,验证粉丝信息和分成比例显示
4. 查看用户余额明细接口 `/user/balance/income-detail`,确认描述显示正确
## 注意事项
- 如果关联的视频或用户信息不存在,会显示默认值(如"未知视频"、"未知用户"
- 所有数据库查询都有异常处理,不会影响主业务流程
- 新的描述格式更长,需确保 `description` 字段长度255字符足够使用