RateHelper.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace common\helpers;
  3. use Yii;
  4. use yii\httpclient\Client;
  5. use yii\redis\Connection;
  6. class RateHelper
  7. {
  8. const RATE_URL = 'http://web.juhe.cn:8080/finance/exchange/rmbquot?key=05806e7b15ebbab91c1babceed3b468a';
  9. const RATE_CACHE_KEY = 'usdRate';
  10. /**
  11. * 获取入金 出金汇率
  12. * @param bool $refresh
  13. * @return mixed
  14. */
  15. public static function getRate($refresh = false)
  16. {
  17. $usdRate['sellRate'] = 6.84;
  18. $usdRate['buyRate'] = 6.64;
  19. /*
  20. $usdRate = Yii::$app->getCache()->get(self::RATE_CACHE_KEY);
  21. if ($usdRate == false || $refresh == true) {
  22. $client = new Client();
  23. $success = false;
  24. for ($i = 0; $i < 2; $i++) {
  25. $response = $client->get(self::RATE_URL, [], ['Referer' => 'web.juhe.cn'])->send();
  26. if ($response->getIsOk()) {
  27. $json = $response->getContent();
  28. $jsonArr = @json_decode($json, true);
  29. if ($jsonArr['error_code'] == 0 && !empty($jsonArr['result'][0])) {
  30. foreach ((array)$jsonArr['result'][0] as $dataKey => $dataRow) {
  31. if ($dataRow['name'] == '美元') {
  32. // $usdRate['buyRate'] = number_format(round($dataRow['fBuyPri'] / 100, 3), 3, '.', '');
  33. $usdRate['sellRate'] = number_format(round($dataRow['fSellPri'] / 100, 3), 3, '.', '');
  34. $usdRate['buyRate'] = number_format($usdRate['sellRate'] - 0.11, 3, '.', ''); // 出金汇率=入金汇率-0.11
  35. Yii::$app->getCache()->set(self::RATE_CACHE_KEY, $usdRate, 3600);
  36. $success = true;
  37. break;
  38. }
  39. }
  40. }
  41. }
  42. if ($success == true) {
  43. break;
  44. }
  45. usleep(50000); // sleep 50ms
  46. }
  47. }
  48. */
  49. return $usdRate;
  50. }
  51. /**
  52. * @return null|Connection
  53. */
  54. protected static function getRedis()
  55. {
  56. return Yii::$app->get('redis');
  57. }
  58. }