123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\JsonResponse;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Redis;
- class EnumController extends Controller
- {
-
- public function getEnumData(Request $request): JsonResponse
- {
- $enumName = $request->input('enum');
- if (empty($enumName)) {
- return response()->json([
- 'items' => [],
- 'message' => '枚举名称不能为空',
- 'code' => 400
- ]);
- }
- try {
-
- $enumClass = "App\\Enums\\{$enumName}";
-
- if (!class_exists($enumClass)) {
- return response()->json([
- 'items' => [],
- 'message' => "枚举类 {$enumName} 不存在",
- 'code' => 404
- ]);
- }
-
- $cacheKey = "enum:{$enumName}";
- $enumData = Redis::get($cacheKey);
- if (!$enumData) {
-
- $rawData = $enumClass::all();
- $items = [];
- foreach ($rawData as $value => $label) {
- $items[] = [
- 'label' => $label,
- 'value' => $value
- ];
- }
-
- Redis::setex($cacheKey, 86400, json_encode($items));
- } else {
- $items = json_decode($enumData, true);
- }
- return response()->json([
- 'items' => $items,
- 'message' => '',
- 'code' => 0
- ]);
- } catch (\Throwable $e) {
- return response()->json([
- 'items' => [],
- 'message' => $e->getMessage(),
- 'code' => 500
- ]);
- }
- }
- }
|