'ID', 'PERIOD_NUM' => '期数', 'FROM_CURRENCY_ID' => '源', 'TO_CURRENCY_ID' => '目标', 'RATE' => '汇率', 'ACTIVE' => '状态:1正常 0异常', 'CREATED_AT' => '创建时间', 'UPDATED_AT' => '更新时间', 'CREATED_BY' => '创建人', 'UPDATED_BY' => '更新人', ]; } /** * 从缓存获取信息 * @return array|mixed|\yii\db\ActiveRecord[] */ public static function getFromCache() { $data = Yii::$app->cache->get(Cache::CURRENCIES_CONVERSIONS_KEY); if (!$data) { // 获取信息 $data = static::find()->where('ACTIVE=1')->orderBy('ID ASC')->indexBy('ID')->asArray()->all(); Yii::$app->cache->set(Cache::CURRENCIES_CONVERSIONS_KEY, $data); } return $data; } /** * @return array|\yii\db\ActiveRecord[] */ public static function getAllData() { return static::find()->where('ACTIVE=1')->indexBy('ID')->orderBy('ID ASC')->asArray()->all(); } /** * 更新缓存 * @return array|\yii\db\ActiveRecord[] */ public static function updateToCache() { // 获取配置 $data = static::find()->where('ACTIVE=1')->orderBy('ID ASC')->asArray()->indexBy('ID')->all(); Yii::$app->cache->set(Cache::CURRENCIES_CONVERSIONS_KEY, $data); return $data; } /** * 查询汇率. * @param int $fromCurrencyId * @param int $toCurrencyId * @return mixed. */ public static function getOne(int $fromCurrencyId, int $toCurrencyId): ?array { return self::findOneAsArray('FROM_CURRENCY_ID=:FROM_CURRENCY_ID AND TO_CURRENCY_ID=:TO_CURRENCY_ID AND ACTIVE=1', [ ':FROM_CURRENCY_ID' => $fromCurrencyId, ':TO_CURRENCY_ID' => $toCurrencyId, ]); } /** * 查询汇率. * @param int $fromCurrencyId * @param int $toCurrencyId * @return mixed. */ public static function getRate(int $fromCurrencyId, int $toCurrencyId): ?array { $data = self::findOneAsArray('FROM_CURRENCY_ID=:FROM_CURRENCY_ID AND TO_CURRENCY_ID=:TO_CURRENCY_ID AND ACTIVE=1', [ ':FROM_CURRENCY_ID' => $fromCurrencyId, ':TO_CURRENCY_ID' => $toCurrencyId, ]); return $data['RATE'] ?? 0.0; } /** * 查询汇率. * @param int $toCurrencyId * @return mixed. */ public static function getToUSDRate(int $toCurrencyId): ?array { $data = self::findOneAsArray('FROM_CURRENCY_ID=:FROM_CURRENCY_ID AND TO_CURRENCY_ID=:TO_CURRENCY_ID AND ACTIVE=1', [ ':FROM_CURRENCY_ID' => 149, // 美元汇率 ':TO_CURRENCY_ID' => $toCurrencyId, ]); return $data['RATE'] ?? 0.0; } public static function updateOne(int $fromCurrencyId, int $toCurrencyId): bool { return self::updateAll(['ACTIVE' => \StatusEnum::INACTIVE], 'FROM_CURRENCY_ID=:FROM_CURRENCY_ID AND TO_CURRENCY_ID=:TO_CURRENCY_ID AND ACTIVE=1', [ ':FROM_CURRENCY_ID' => $fromCurrencyId, ':TO_CURRENCY_ID' => $toCurrencyId, ]); } }