SettingsController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace App\Http\Controllers\Admin\Base;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Enums\ResponseCodeEnum;
  5. use App\Repositories\Models\Base\Setting;
  6. use Illuminate\Http\Request;
  7. use Jiannei\Response\Laravel\Support\Facades\Response;
  8. use Prettus\Validator\Contracts\ValidatorInterface;
  9. use App\Contracts\Repositories\Base\SettingRepository;
  10. use App\Repositories\Validators\Base\SettingValidator;
  11. /**
  12. * Class SettingsController.
  13. *
  14. * @package namespace App\Http\Controllers\Base;
  15. */
  16. class SettingsController extends Controller
  17. {
  18. /**
  19. * @var SettingRepository
  20. */
  21. protected $repository;
  22. /**
  23. * @var SettingValidator
  24. */
  25. protected $validator;
  26. /**
  27. * SettingsController constructor.
  28. *
  29. * @param SettingRepository $repository
  30. * @param SettingValidator $validator
  31. */
  32. public function __construct(SettingRepository $repository, SettingValidator $validator)
  33. {
  34. parent::__construct();
  35. $this->repository = $repository;
  36. $this->validator = $validator;
  37. }
  38. /**
  39. * 创建
  40. * @param Request $request
  41. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource|void
  42. * @throws \Illuminate\Validation\ValidationException
  43. * Author: Mead
  44. */
  45. public function store(Request $request)
  46. {
  47. $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_CREATE));
  48. try {
  49. $model = $this->repository->create($request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE))));
  50. return Response::success($model);
  51. } catch (\Exception $e) {
  52. return $this->error($e);
  53. }
  54. }
  55. /**
  56. * 更新
  57. * @param Request $request
  58. * @param $id
  59. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  60. * @throws \Illuminate\Validation\ValidationException
  61. * Author: Mead
  62. */
  63. public function update(Request $request, $id)
  64. {
  65. $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_UPDATE));
  66. try {
  67. $model = $this->repository->update($request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_UPDATE))), $id);
  68. return Response::success($model);
  69. } catch (\Exception $e) {
  70. $this->error($e);
  71. }
  72. }
  73. /**
  74. * 删除
  75. * @param $id
  76. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  77. * Author: Mead
  78. */
  79. public function destroy($id)
  80. {
  81. $re = $this->repository->where('parent_id', '>', 0)->where('id', $id)->delete();
  82. if ($re) {
  83. return Response::success(null, T('successfully delete.'));
  84. }
  85. return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR);
  86. }
  87. /**
  88. * 配置列表
  89. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  90. * Author: Mead
  91. */
  92. public function tree()
  93. {
  94. $departments = $this->repository->orderByDesc('sort')->get()->append('parent_name')->toArray();
  95. return Response::success(toTree($departments));
  96. }
  97. /**
  98. * 获取某个配置
  99. * @param Request $request
  100. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  101. * Author: Mead
  102. */
  103. public function setting(Request $request)
  104. {
  105. $key = $request->get('key');
  106. $setting = Setting::query()->where('key', strtoupper($key))->first();
  107. return Response::success($setting);
  108. }
  109. }