转账手续费配置.md 7.8 KB

URS转账手续费配置

概述

URS转账手续费配置模块提供基于用户房屋等级和达人等级的差异化转账手续费管理。通过灵活的配置规则,实现转入和转出操作的精细化费率控制,既能鼓励用户充值,又能合理控制资金流出。

功能特性

1. 双向转账支持

  • 转入(Transfer In):用户向农场系统充值/存入资金
  • 转出(Transfer Out):用户从农场系统提取/转出资金

2. 多维度费率配置

  • 房屋等级:支持0-12级房屋等级的差异化费率
  • 达人等级:支持0-5级达人等级的差异化费率
  • 转账类型:转入和转出分别配置,满足不同业务需求

3. 智能匹配算法

  • 优先级排序:按配置优先级自动匹配最优费率
  • 精确匹配:优先匹配具体等级配置
  • 通用兜底:等级0配置作为通用规则兜底

4. 性能优化

  • 缓存机制:费率计算结果缓存1小时
  • 索引优化:数据库索引优化查询性能
  • 事件驱动:自动监听等级变化,清理相关缓存

数据库设计

表结构:urs_promotion_transfer_fee_configs

字段名 类型 默认值 说明
id bigint - 主键ID
house_level int 0 房屋等级(0表示所有等级)
talent_level int 0 达人等级(0表示所有等级)
transfer_type enum('in','out') 'out' 转账类型
fee_rate decimal(8,4) 0.0500 手续费率(0-1之间)
description varchar(255) - 配置描述
priority int 0 优先级(数值越大优先级越高)
status tinyint 1 状态:1启用,0禁用
created_at timestamp CURRENT_TIMESTAMP 创建时间
updated_at timestamp CURRENT_TIMESTAMP 更新时间

索引设计

-- 主键索引
PRIMARY KEY (id)

-- 单字段索引
KEY idx_house_level (house_level)
KEY idx_talent_level (talent_level)
KEY idx_priority (priority)
KEY idx_status (status)

-- 复合索引
KEY idx_house_talent_status (house_level, talent_level, status)
KEY idx_type_house_talent_status (transfer_type, house_level, talent_level, status)

配置规则

1. 优先级规则

配置按以下优先级顺序匹配:

  1. 具体等级配置:同时指定房屋等级和达人等级
  2. 单一等级配置:只指定房屋等级或达人等级
  3. 通用配置:房屋等级0且达人等级0

2. 匹配算法

1. 查询所有启用状态的配置
2. 筛选匹配转账类型的配置
3. 筛选匹配房屋等级的配置(精确匹配或等级0)
4. 筛选匹配达人等级的配置(精确匹配或等级0)
5. 按优先级降序排序
6. 返回第一个匹配的配置

3. 费率设计建议

转出费率(Transfer Out)

  • 默认费率:5%(房屋0级,达人0级)
  • 房屋等级优惠
    • 房屋7级:4%
    • 房屋10级:3%
  • 达人等级优惠
    • 初级达人:4%
    • 中级达人:3%
    • 高级达人:2.5%
    • 资深达人:2%
    • 顶级达人:2%

转入费率(Transfer In)

  • 默认费率:0%(免费充值)
  • 特殊情况
    • 新手房屋1级:1%(可设置为禁用状态)
    • 其他等级:0%(免费)

服务层接口

UrsTransferFeeService

1. 获取用户最优费率

/**
 * 根据用户ID获取最优手续费率
 * @param int $userId 农场用户ID
 * @param string $transferType 转账类型:'in'转入,'out'转出
 * @return float 手续费率
 */
public static function getBestFeeRateForUser(int $userId, string $transferType = 'out'): float

2. 计算等级费率

/**
 * 根据房屋等级和达人等级计算最优手续费率
 * @param int $houseLevel 房屋等级
 * @param int $talentLevel 达人等级
 * @param string $transferType 转账类型
 * @return float 手续费率
 */
public static function calculateBestFeeRate(int $houseLevel, int $talentLevel, string $transferType = 'out'): float

使用示例

1. 获取用户转出费率

use App\Module\UrsPromotion\Services\UrsTransferFeeService;

// 获取用户转出费率
$userId = 10001;
$transferOutRate = UrsTransferFeeService::getBestFeeRateForUser($userId, 'out');
echo "用户转出费率: " . ($transferOutRate * 100) . "%";

// 获取用户转入费率
$transferInRate = UrsTransferFeeService::getBestFeeRateForUser($userId, 'in');
echo "用户转入费率: " . ($transferInRate * 100) . "%";

2. 直接计算等级费率

// 房屋7级,达人3级用户的转出费率
$feeRate = UrsTransferFeeService::calculateBestFeeRate(7, 3, 'out');
echo "费率: " . ($feeRate * 100) . "%";

3. 在转账业务中使用

// 转账业务逻辑中
$amount = 1000; // 转账金额
$feeRate = UrsTransferFeeService::getBestFeeRateForUser($userId, 'out');
$feeAmount = $amount * $feeRate;
$actualAmount = $amount - $feeAmount;

echo "转账金额: {$amount}";
echo "手续费: {$feeAmount}";
echo "实际到账: {$actualAmount}";

后台管理

1. 配置管理

  • 列表页面:显示所有费率配置,支持按转账类型、等级筛选
  • 新增配置:创建新的费率配置规则
  • 编辑配置:修改现有配置的费率和优先级
  • 状态管理:启用/禁用特定配置

2. 筛选功能

  • 转账类型筛选:转入/转出
  • 房屋等级筛选:0-12级
  • 达人等级筛选:0-5级
  • 状态筛选:启用/禁用

3. 批量操作

  • 批量启用/禁用:快速调整配置状态
  • 批量删除:清理无效配置
  • 导入/导出:配置数据的批量管理

事件监听

1. 自动费率应用

系统通过事件监听器自动应用最优费率:

// 监听用户等级变化事件
class UrsTransferFeeListener
{
    public function handle($event)
    {
        // 清除用户费率缓存
        // 重新计算最优费率
        // 记录费率变化日志
    }
}

2. 缓存管理

  • 等级变化:自动清理相关用户的费率缓存
  • 配置更新:清理所有用户的费率缓存
  • 定期刷新:缓存过期自动重新计算

性能优化

1. 缓存策略

  • 用户费率缓存:按用户ID和转账类型缓存1小时
  • 配置查询缓存:缓存启用状态的配置列表
  • 计算结果缓存:缓存常用等级组合的计算结果

2. 数据库优化

  • 复合索引:优化多条件查询性能
  • 查询优化:减少不必要的数据库查询
  • 批量操作:支持批量用户的费率计算

3. 监控指标

  • 查询性能:监控费率查询的响应时间
  • 缓存命中率:监控缓存的有效性
  • 配置使用率:分析各配置的使用频率

注意事项

1. 配置管理

  • 优先级设置:确保优先级设置合理,避免配置冲突
  • 费率范围:手续费率应在0-1之间,避免异常值
  • 状态管理:及时禁用过期或错误的配置

2. 业务逻辑

  • 默认兜底:确保始终有默认配置可用
  • 异常处理:处理配置缺失或计算异常的情况
  • 日志记录:记录费率计算和应用的关键信息

3. 数据一致性

  • 事务保护:涉及多表操作时使用数据库事务
  • 缓存同步:确保缓存与数据库数据的一致性
  • 并发控制:处理高并发场景下的数据一致性

扩展计划

1. 功能扩展

  • 时间段费率:支持不同时间段的差异化费率
  • VIP等级:增加VIP等级的费率优惠
  • 活动费率:支持临时活动的特殊费率

2. 性能提升

  • 分布式缓存:使用Redis等分布式缓存
  • 异步计算:大批量费率计算的异步处理
  • 预计算:预计算常用组合的费率结果

3. 管理优化

  • 可视化配置:图形化的费率配置界面
  • 智能推荐:基于数据分析的费率配置建议
  • A/B测试:支持费率配置的A/B测试功能