JsonController.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. namespace App\Module\AppGame\HttpControllers;
  3. use App\Http\Controllers\Controller;
  4. use App\Module\Game\DCache\ChestJsonConfig;
  5. use App\Module\Game\DCache\DismantleJsonConfig;
  6. use App\Module\Game\DCache\FarmHouseJsonConfig;
  7. use App\Module\Game\DCache\FarmLandJsonConfig;
  8. use App\Module\Game\DCache\FarmSeedJsonConfig;
  9. use App\Module\Game\DCache\FarmShrineJsonConfig;
  10. use App\Module\Game\DCache\FundCurrencyJsonConfig;
  11. use App\Module\Game\DCache\ItemJsonConfig;
  12. use App\Module\Game\DCache\PetConfigJsonConfig;
  13. use App\Module\Game\DCache\PetLevelJsonConfig;
  14. use App\Module\Game\DCache\PetSkillJsonConfig;
  15. use App\Module\Game\DCache\RecipeJsonConfig;
  16. use App\Module\Game\DCache\ShopItemsJsonConfig;
  17. use Illuminate\Support\Facades\Log;
  18. use UCore\App;
  19. use UCore\Exception\HandleNotException;
  20. use Uraus\Kku\Common\RESPONSE_CODE;
  21. /**
  22. *
  23. * 访问json配置表,输出配置表Json格式
  24. * @package App\Module\AppGame\HttpControllers
  25. *
  26. *
  27. */
  28. class JsonController extends Controller
  29. {
  30. /**
  31. * 配置表读取
  32. * @param string $key 配置表键名
  33. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\Http\Response|object
  34. * @throws HandleNotException
  35. */
  36. public function config($key)
  37. {
  38. $f= request()->query('f',0);
  39. // 配置表映射关系
  40. $map = [
  41. 'items' => ItemJsonConfig::class,
  42. 'chest' => ChestJsonConfig::class,
  43. 'pet_config' => PetConfigJsonConfig::class,
  44. 'pet_levels' => PetLevelJsonConfig::class,
  45. 'pet_skills' => PetSkillJsonConfig::class,
  46. 'farm_house' => FarmHouseJsonConfig::class,
  47. 'farm_land' => FarmLandJsonConfig::class,
  48. 'farm_shrine' => FarmShrineJsonConfig::class,
  49. 'currencies' => FundCurrencyJsonConfig::class,
  50. 'recipe' => RecipeJsonConfig::class,
  51. 'dismantle' => DismantleJsonConfig::class,
  52. 'farm_seed' => FarmSeedJsonConfig::class,
  53. 'shop_items' => ShopItemsJsonConfig::class,
  54. ];
  55. // 检查请求的配置表是否存在
  56. if (!isset($map[$key])) {
  57. return response()->json([
  58. 'code' => RESPONSE_CODE::REQUEST_ERROR,
  59. 'message' => '配置表不存在',
  60. 'data' => null
  61. ], 400)->withHeaders([
  62. 'Access-Control-Allow-Origin' => '*',
  63. 'Access-Control-Allow-Methods' => 'GET, POST, OPTIONS',
  64. 'Access-Control-Allow-Headers' => 'Content-Type, Authorization'
  65. ]);
  66. }
  67. try {
  68. // 获取配置表数据
  69. $configClass = $map[$key];
  70. if($f && App::is_local()){
  71. $data = $configClass::getData([],true);
  72. }else{
  73. // ShopItemsJsonConfig::getData()
  74. $data = $configClass::getData();
  75. }
  76. // 如果数据为空,返回错误
  77. if (empty($data)) {
  78. return response()->json([
  79. 'code' => RESPONSE_CODE::SERVER_ERROR,
  80. 'message' => '配置表数据为空',
  81. 'data' => null
  82. ], 500)->withHeaders([
  83. 'Access-Control-Allow-Origin' => '*',
  84. 'Access-Control-Allow-Methods' => 'GET, POST, OPTIONS',
  85. 'Access-Control-Allow-Headers' => 'Content-Type, Authorization'
  86. ]);
  87. }
  88. // 返回配置表数据
  89. if (is_array($data) || is_object($data)) {
  90. return response()->json($data)->withHeaders([
  91. 'Access-Control-Allow-Origin' => '*',
  92. 'Access-Control-Allow-Methods' => 'GET, POST, OPTIONS',
  93. 'Access-Control-Allow-Headers' => 'Content-Type, Authorization'
  94. ]);
  95. }
  96. return response($data)->withHeaders([
  97. 'Access-Control-Allow-Origin' => '*',
  98. 'Access-Control-Allow-Methods' => 'GET, POST, OPTIONS',
  99. 'Access-Control-Allow-Headers' => 'Content-Type, Authorization'
  100. ]);
  101. } catch (\Exception $e) {
  102. // 记录错误日志
  103. Log::error('获取配置表数据失败', [
  104. 'key' => $key,
  105. 'error' => $e->getMessage(),
  106. 'trace' => $e->getTraceAsString()
  107. ]);
  108. // 返回错误响应
  109. return response()->json([
  110. 'code' => RESPONSE_CODE::SERVER_ERROR,
  111. 'message' => '获取配置表数据失败',
  112. 'data' => null
  113. ], 500)->withHeaders([
  114. 'Access-Control-Allow-Origin' => '*',
  115. 'Access-Control-Allow-Methods' => 'GET, POST, OPTIONS',
  116. 'Access-Control-Allow-Headers' => 'Content-Type, Authorization'
  117. ]);
  118. }
  119. }
  120. }