SettingsController.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace App\Http\Controllers\Api\Base;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Enums\ResponseCodeEnum;
  5. use App\Repositories\Models\Base\Resource;
  6. use App\Repositories\Models\Base\Setting;
  7. use Illuminate\Http\Request;
  8. use Jiannei\Response\Laravel\Support\Facades\Response;
  9. use Prettus\Validator\Contracts\ValidatorInterface;
  10. use App\Contracts\Repositories\Base\SettingRepository;
  11. use App\Repositories\Validators\Base\SettingValidator;
  12. /**
  13. * Class SettingsController.
  14. *
  15. * @package namespace App\Http\Controllers\Base;
  16. */
  17. class SettingsController extends Controller
  18. {
  19. /**
  20. * @var SettingRepository
  21. */
  22. protected $repository;
  23. /**
  24. * @var SettingValidator
  25. */
  26. protected $validator;
  27. /**
  28. * SettingsController constructor.
  29. *
  30. * @param SettingRepository $repository
  31. * @param SettingValidator $validator
  32. */
  33. public function __construct(SettingRepository $repository, SettingValidator $validator)
  34. {
  35. parent::__construct();
  36. $this->repository = $repository;
  37. $this->validator = $validator;
  38. }
  39. /**
  40. * 配置列表
  41. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  42. * Author: Mead
  43. */
  44. public function tree()
  45. {
  46. $departments = $this->repository->orderByDesc('sort')->get()->append('parent_name')->toArray();
  47. return Response::success(toTree($departments));
  48. }
  49. /**
  50. * 获取某个配置
  51. * @param Request $request
  52. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  53. * Author: Mead
  54. */
  55. public function setting(Request $request)
  56. {
  57. $this->validate($request, ['key' => 'required']);
  58. $key = $request->get('key');
  59. $setting = Setting::query()->where('key', strtoupper($key))->first();
  60. return Response::success($setting);
  61. }
  62. /**
  63. * 获取配置项
  64. * @param Request $request
  65. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  66. * Author: Mead
  67. */
  68. public function settings(Request $request)
  69. {
  70. $this->validate($request, ['keys' => 'required']);
  71. $keys = str2arr($request->get('keys'));
  72. $settings = Setting::query()->whereIn('key', $keys)->get();
  73. $data = [];
  74. foreach ($settings as $setting) {
  75. switch ($setting->type) {
  76. case 0:
  77. $data[$setting['key']] = $setting->body;
  78. break;
  79. case 1:
  80. $data[$setting['key']] = Resource::query()->where('id', $setting->body)->select(['url', 'path'])->first();
  81. break;
  82. }
  83. }
  84. return Response::success($data);
  85. }
  86. }