| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <?php
- namespace App\Module\Mex\Logic;
- use App\Module\Fund\Enums\FUND_CURRENCY_TYPE;
- use App\Module\Fund\Enums\FUND_TYPE;
- /**
- * Fund 模块适配
- * 多币种适配
- *
- * 为Mex模块提供币种与账户类型的映射关系
- * 默认使用钻石币种进行交易
- */
- class FundLogic
- {
- /**
- * 可用账户标识
- */
- const CAN = 1;
- /**
- * 冻结账户标识
- */
- const FREEZE = 2;
- /**
- * 默认币种:钻石
- */
- const DEFAULT_CURRENCY = FUND_CURRENCY_TYPE::ZUANSHI;
- /**
- * 币种与账户类型映射关系
- *
- * @var array
- */
- private static array $currencyMapping = [
-
-
- // 钻石币种映射(默认币种)
- 2 => [ // FUND_CURRENCY_TYPE::ZUANSHI
- self::CAN => FUND_TYPE::FUND2, // 钻石可用账户
- self::FREEZE => FUND_TYPE::FUND3, // 钻石冻结账户
- ]
- ];
- /**
- * 获取币种适配
- *
- * @param FUND_CURRENCY_TYPE $currencyType 币种类型
- * @return array 账户类型映射数组
- */
- public static function get(FUND_CURRENCY_TYPE $currencyType): array
- {
- return self::$currencyMapping[$currencyType->value] ?? [];
- }
- /**
- * 使用币种数字获取账户映射
- *
- * @param int $currencyTypeValue 币种类型值
- * @return array 账户类型映射数组
- */
- public static function get4n(int $currencyTypeValue): array
- {
- $currencyType = FUND_CURRENCY_TYPE::tryFrom($currencyTypeValue);
- if (!$currencyType) {
- return [];
- }
- return self::get($currencyType);
- }
- /**
- * 获取默认币种
- *
- * @return FUND_CURRENCY_TYPE 默认币种(钻石)
- */
- public static function getDefaultCurrency(): FUND_CURRENCY_TYPE
- {
- return self::DEFAULT_CURRENCY;
- }
- /**
- * 获取默认币种的账户映射
- *
- * @return array 默认币种的账户类型映射数组
- */
- public static function getDefaultMapping(): array
- {
- return self::get(self::DEFAULT_CURRENCY);
- }
- /**
- * 获取指定币种的可用账户类型
- *
- * @param FUND_CURRENCY_TYPE $currencyType 币种类型
- * @return FUND_TYPE|null 可用账户类型
- */
- public static function getAvailableAccountType(FUND_CURRENCY_TYPE $currencyType): ?FUND_TYPE
- {
- $mapping = self::get($currencyType);
- return $mapping[self::CAN] ?? null;
- }
- /**
- * 获取指定币种的冻结账户类型
- *
- * @param FUND_CURRENCY_TYPE $currencyType 币种类型
- * @return FUND_TYPE|null 冻结账户类型
- */
- public static function getFrozenAccountType(FUND_CURRENCY_TYPE $currencyType): ?FUND_TYPE
- {
- $mapping = self::get($currencyType);
- return $mapping[self::FREEZE] ?? null;
- }
- /**
- * 检查币种是否支持
- *
- * @param FUND_CURRENCY_TYPE $currencyType 币种类型
- * @return bool 是否支持
- */
- public static function isCurrencySupported(FUND_CURRENCY_TYPE $currencyType): bool
- {
- return isset(self::$currencyMapping[$currencyType->value]);
- }
- /**
- * 获取所有支持的币种列表
- *
- * @return array 支持的币种ID列表
- */
- public static function getSupportedCurrencies(): array
- {
- return array_keys(self::$currencyMapping);
- }
- }
|