CurrencyController.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace backendApi\modules\v1\controllers;
  3. use common\helpers\Form;
  4. use common\models\Currency;
  5. use common\models\CurrencyConversions;
  6. use common\models\forms\CurrenciesConversionsForm;
  7. use yii\db\Exception;
  8. use yii\web\HttpException;
  9. class CurrencyController extends BaseController
  10. {
  11. public $modelClass = Currency::class;
  12. public $currencyConversionsModelClass = CurrencyConversions::class;
  13. public function actionCurrencies()
  14. {
  15. $data = $this->modelClass::getFromCache();
  16. return static::notice(['data' => $data]);
  17. }
  18. public function actionCurrenciesConversions()
  19. {
  20. // 货币列表
  21. $currencies = $this->modelClass::getFromCache();
  22. // 货币汇率配置
  23. $currencyConversion = $this->currencyConversionsModelClass::getFromCache();
  24. $currencyConversion = array_column($currencyConversion, NULL, 'TO_CURRENCY_ID');
  25. foreach ($currencies as &$currency) {
  26. $currency['PRODUCT_RATE'] = $currencyConversion[$currency['ID']]['PRODUCT_RATE'] ?? 0;
  27. $currency['BONUSES_RATE'] = $currencyConversion[$currency['ID']]['BONUSES_RATE'] ?? 0;
  28. }
  29. return static::notice(['data' => $currencies]);
  30. }
  31. /**
  32. * @throws Exception
  33. * @throws HttpException
  34. */
  35. public function actionSetCurrenciesConversions()
  36. {
  37. if (\Yii::$app->request->isPost) {
  38. $formModel = new CurrenciesConversionsForm();
  39. $formModel->scenario = 'setCurrenciesConversions';
  40. if ($formModel->load(\Yii::$app->request->post(), '') && $formModel->setCurrenciesConversions()) {
  41. // 更新缓存
  42. $this->currencyConversionsModelClass::updateToCache();
  43. return static::notice(\Yii::t('ctx', 'successfully'));
  44. } else {
  45. return static::notice(Form::formatErrorsForApi($formModel->getErrors()), 400);
  46. }
  47. }
  48. return static::notice(\Yii::t('ctx', 'illegalRequest'));
  49. }
  50. }