IndexController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace App\Http\Controllers\Api\v1;
  3. use App\Http\Controllers\Api\webApp;
  4. use App\Services\Api\ArticleService;
  5. use App\Services\Api\MemberService;
  6. use App\Services\Api\PledgeOrderService;
  7. use App\Services\Api\PriceLogService;
  8. use App\Services\Common\AdService;
  9. use App\Services\ConfigService;
  10. use App\Services\RedisService;
  11. /**
  12. * 首页
  13. * @package App\Http\Controllers\Api\v1
  14. */
  15. class IndexController extends webApp
  16. {
  17. /**
  18. * 首页数据
  19. * @return array
  20. */
  21. public function data()
  22. {
  23. $cacheKey = "caches:index:data";
  24. $data = RedisService::get($cacheKey);
  25. if(empty($data)) {
  26. $sbtLimit = ConfigService::make()->getConfigByCode('sbt_exchange_limit', 100);
  27. $sbtPrice = PriceLogService::make()->getSbtPrice();
  28. $sbtLimit = round($sbtLimit/$sbtPrice, 2);
  29. $sbtLimit = $sbtLimit>0? $sbtLimit : 0;
  30. $data = [
  31. 'profile' => MemberService::make()->getProfile($this->userId),
  32. 'banners' => AdService::make()->getListByType(1,'zh',6),
  33. 'siteInfo' => [
  34. 'site_name' => ConfigService::make()->getConfigByCode('site_name', 'SBT'),
  35. 'site_title' => ConfigService::make()->getConfigByCode('site_name', 'SBT'),
  36. 'logo' => get_image_url(ConfigService::make()->getConfigByCode('site_logo', '/images/logo.png')),
  37. 'exchange_sbt_fee' => ConfigService::make()->getConfigByCode('exchange_sbt_fee', 0),
  38. 'sbt_exchange_limit'=> $sbtLimit,
  39. 'version'=> ConfigService::make()->getConfigByCode('app_version', 'v1.2.10'),
  40. ],
  41. ];
  42. RedisService::set($cacheKey, $data, rand(30, 60));
  43. }
  44. return showJson(1010,true, $data);
  45. }
  46. /**
  47. * 配置信息
  48. * @return array
  49. */
  50. public function config()
  51. {
  52. try {
  53. $params = request()->all();
  54. $system = isset($params['system'])? $params['system'] : [];
  55. $appSources = isset($system['app_sources']) && $system['app_sources']? $system['app_sources'] : 'android';
  56. $cacheKey = "caches:config:app_{$appSources}";
  57. $config = RedisService::get($cacheKey);
  58. if ($config) {
  59. return showJson(1010, true, $config);
  60. }
  61. $siteInfo = ConfigService::make()->getConfigByGroup(1);
  62. $config = [
  63. 'app_name' => isset($siteInfo['app_name']['value'])? $siteInfo['app_name']['value'] : '',
  64. 'app_logo' => isset($siteInfo['app_logo']['value']) && $siteInfo['app_logo']['value']? get_image_url($siteInfo['app_logo']['value']) : '',
  65. 'app_version' => isset($siteInfo['app_version']['value'])? $siteInfo['app_version']['value'] : '',
  66. 'app_sources' => $appSources,
  67. 'app_urls'=>[
  68. 'android'=> isset($siteInfo['android_app_url']['value'])? $siteInfo['android_app_url']['value'] : '',
  69. 'ios'=> isset($siteInfo['ios_app_url']['value'])? $siteInfo['ios_app_url']['value'] : '',
  70. ]
  71. ];
  72. RedisService::set($cacheKey, $config, 120);
  73. return showJson(1010, true, $config);
  74. } catch (\Exception $exception) {
  75. RedisService::set("caches:request:error_config", ['trace' => $exception->getTrace()], 7200);
  76. return showJson(1018, false, ['error' => env('APP_DEBUG') ? $exception->getMessage() : '']);
  77. }
  78. }
  79. /**
  80. * SBD价格数据
  81. * @return array
  82. */
  83. public function priceData(){
  84. $dateType = request()->post('type', 1);
  85. $refresh = request()->post('refresh', 0);
  86. return showJson(1010,true, PriceLogService::make()->getCounts($dateType, $refresh));
  87. }
  88. }