getBestFeeRateForUser($userId, $transferType); } catch (\Exception $e) { Log::error('URS转账手续费率获取失败', [ 'user_id' => $userId, 'transfer_type' => $transferType, 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); // 返回默认费率(转入通常免费,转出5%) return $transferType === 'in' ? 0.0 : 0.05; } } /** * 根据房屋等级和达人等级计算最优手续费率 * * @param int $houseLevel 房屋等级 * @param int $talentLevel 达人等级 * @param string $transferType 转账类型:'in'转入,'out'转出 * @return float 手续费率 */ public static function calculateBestFeeRate(int $houseLevel, int $talentLevel, string $transferType = 'out'): float { try { $logic = new UrsTransferFeeLogic(); return $logic->calculateBestFeeRate($houseLevel, $talentLevel, $transferType); } catch (\Exception $e) { Log::error('URS转账手续费率计算失败', [ 'house_level' => $houseLevel, 'talent_level' => $talentLevel, 'transfer_type' => $transferType, 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); // 返回默认费率(转入通常免费,转出5%) return $transferType === 'in' ? 0.0 : 0.05; } } /** * 获取所有手续费配置 * * @return array */ public static function getAllConfigs(): array { try { $logic = new UrsTransferFeeLogic(); return $logic->getAllConfigs(); } catch (\Exception $e) { Log::error('获取URS转出手续费配置失败', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); return []; } } /** * 清除用户手续费率缓存 * * @param int $userId 农场用户ID * @return void */ public static function clearUserFeeRateCache(int $userId): void { try { $logic = new UrsTransferFeeLogic(); $logic->clearUserFeeRateCache($userId); Log::info('URS转出手续费率缓存已清除', [ 'user_id' => $userId ]); } catch (\Exception $e) { Log::error('清除URS转出手续费率缓存失败', [ 'user_id' => $userId, 'error' => $e->getMessage() ]); } } /** * 清除所有手续费率缓存 * * @return void */ public static function clearAllFeeRateCache(): void { try { $logic = new UrsTransferFeeLogic(); $logic->clearAllFeeRateCache(); Log::info('所有URS转出手续费率缓存已清除'); } catch (\Exception $e) { Log::error('清除所有URS转出手续费率缓存失败', [ 'error' => $e->getMessage() ]); } } /** * 获取用户的手续费优惠信息 * * @param int $userId 农场用户ID * @return array 包含手续费率、优惠信息等 */ public static function getUserFeeInfo(int $userId): array { try { $logic = new UrsTransferFeeLogic(); // 获取用户的最优手续费率 $feeRate = $logic->getBestFeeRateForUser($userId); // 获取默认费率用于比较 $defaultRate = 0.05; // 5% // 计算优惠幅度 $discountAmount = $defaultRate - $feeRate; $discountPercentage = $defaultRate > 0 ? ($discountAmount / $defaultRate) * 100 : 0; return [ 'fee_rate' => $feeRate, 'fee_rate_percentage' => number_format($feeRate * 100, 2) . '%', 'default_rate' => $defaultRate, 'default_rate_percentage' => number_format($defaultRate * 100, 2) . '%', 'discount_amount' => $discountAmount, 'discount_percentage' => number_format($discountPercentage, 2) . '%', 'has_discount' => $feeRate < $defaultRate, ]; } catch (\Exception $e) { Log::error('获取用户手续费优惠信息失败', [ 'user_id' => $userId, 'error' => $e->getMessage() ]); // 返回默认信息 return [ 'fee_rate' => 0.05, 'fee_rate_percentage' => '5.00%', 'default_rate' => 0.05, 'default_rate_percentage' => '5.00%', 'discount_amount' => 0, 'discount_percentage' => '0.00%', 'has_discount' => false, ]; } } }