ConfigController.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Constants\HttpStatus;
  4. use App\Http\Controllers\Controller;
  5. use App\Models\Config;
  6. use Illuminate\Support\Facades\DB;
  7. use Illuminate\Validation\ValidationException;
  8. use Exception;
  9. class ConfigController extends Controller
  10. {
  11. function update()
  12. {
  13. DB::beginTransaction();
  14. try {
  15. $fields = Config::pluck('field')->toArray();
  16. $fields = implode(',', $fields);
  17. $validate = ['field' => ['required', 'string', "in:{$fields}"]];
  18. request()->validate($validate);
  19. $field = request()->input('field');
  20. $config = Config::where('field', $field)->first();
  21. $validate = array_merge($validate, $config->getRule());
  22. $params = request()->validate($validate);
  23. $config->val = $params['val'];
  24. $config->save();
  25. DB::commit();
  26. } catch (ValidationException $e) {
  27. DB::rollBack();
  28. return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first());
  29. } catch (Exception $e) {
  30. DB::rollBack();
  31. return $this->error(HttpStatus::CUSTOM_ERROR, $e->getMessage());
  32. }
  33. return $this->success();
  34. }
  35. function index()
  36. {
  37. try {
  38. request()->validate([
  39. 'page' => ['nullable', 'integer', 'min:1'],
  40. 'limit' => ['nullable', 'integer', 'min:1'],
  41. 'field' => ['nullable', 'string'],
  42. ]);
  43. $page = request()->input('page', 1);
  44. $limit = request()->input('limit', 15);
  45. $field = request()->input('field', '');
  46. $query = Config::query();
  47. $query = $query->where('group_id', Config::GROUP_BASIC);
  48. if (!empty($field)) $query = $query->where($field, $field);
  49. $data['total'] = $query->count();
  50. $data['data'] = $query->forPage($page, $limit)->get();
  51. } catch (ValidationException $e) {
  52. return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first());
  53. } catch (Exception $e) {
  54. return $this->error(HttpStatus::CUSTOM_ERROR, $e->getMessage());
  55. }
  56. return $this->success($data);
  57. }
  58. }