DictController.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. namespace App\Http\Controllers\Admin\Base;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Models\Base\Dict;
  5. use App\Services\Base\DictDetailService;
  6. use App\Services\Base\DictService;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Arr;
  9. /**
  10. * 字典管理
  11. */
  12. class DictController extends Controller
  13. {
  14. /**
  15. * @var DictService
  16. */
  17. private $dictService;
  18. private $dictDetailService;
  19. /**
  20. * DictController constructor.
  21. *
  22. * @param DictService $dictService
  23. */
  24. public function __construct(DictService $dictService, DictDetailService $dictDetailService)
  25. {
  26. parent::__construct();
  27. // $this->middleware('checkUserPermission', ['except' => 'configs']);
  28. $this->dictService = $dictService;
  29. $this->dictDetailService = $dictDetailService;
  30. }
  31. /**
  32. * 列表
  33. * @param Request $request
  34. *
  35. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  36. * @throws \Prettus\Repository\Exceptions\RepositoryException
  37. */
  38. public function index(Request $request)
  39. {
  40. $dicts = $this->dictService->handleList($request);
  41. return $this->response->success($dicts);
  42. }
  43. /**
  44. * 创建
  45. * @param Request $request
  46. *
  47. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  48. * @throws \Prettus\Validator\Exceptions\ValidatorException
  49. */
  50. public function store(Request $request)
  51. {
  52. $data = $this->validateData($request, [
  53. 'name' => 'required',
  54. 'code' => [
  55. 'required',
  56. 'alpha_dash',
  57. function ($attribute, $value, $fail) use ($request) {
  58. if (Dict::checkCodeIsUnique($value, $request->get('id'))) {
  59. $fail('字典代码 已存在');
  60. }
  61. },
  62. ],
  63. ], [
  64. 'name' => '字典名称',
  65. 'code' => '字典代码',
  66. ]);
  67. $dict = $this->dictService->handleStore($data);
  68. return $this->response->created($dict, '创建成功');
  69. }
  70. /**
  71. * 详情
  72. * @param int $id
  73. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  74. */
  75. public function show(Request $request)
  76. {
  77. $this->validate($request, ['id' => 'required|integer']);
  78. $dict = $this->dictService->handleProfile($request->get('id'));
  79. return $this->response->success($dict);
  80. }
  81. /**
  82. * 修改
  83. * @param Request $request
  84. *
  85. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  86. * @throws \Prettus\Validator\Exceptions\ValidatorException
  87. */
  88. public function update(Request $request)
  89. {
  90. $data = $this->validateData($request, [
  91. 'id' => 'required|integer',
  92. 'name' => 'required',
  93. 'code' => [
  94. 'required',
  95. 'alpha_dash',
  96. function ($attribute, $value, $fail) use ($request) {
  97. if (Dict::checkCodeIsUnique($value, $request->get('id'))) {
  98. $fail('字典代码 已存在');
  99. }
  100. },
  101. ],
  102. ], [
  103. 'name' => '字典名称',
  104. 'code' => '字典编码',
  105. ]);
  106. $dict = $this->dictService->handleUpdate($data);
  107. return $this->response->success($dict, '更新成功');
  108. }
  109. /**
  110. * 删除
  111. *
  112. * @param int $id
  113. */
  114. public function destroy(Request $request)
  115. {
  116. $this->validate($request, ['id' => 'required|integer']);
  117. $re = $this->dictService->handleDelete($request->get('id'));
  118. if ($re) {
  119. return $this->response->ok('删除成功');
  120. }
  121. return $this->response->fail('删除失败');
  122. }
  123. /**
  124. * 获取系统配置参数
  125. * @must
  126. * @param Request $request
  127. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  128. * @throws \Illuminate\Validation\ValidationException
  129. */
  130. public function configs(Request $request)
  131. {
  132. $this->validate($request, ['keys' => 'required|array']);
  133. $dicts = $this->dictService->handleConfigs($request->get('keys'));
  134. return $this->response->success(compact('dicts'));
  135. }
  136. /**
  137. * 获取单个配置
  138. * @must
  139. * @param Request $request
  140. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  141. * @throws \Illuminate\Validation\ValidationException
  142. */
  143. public function config(Request $request)
  144. {
  145. $this->validate($request, ['key' => 'required']);
  146. $dict = $this->dictService->handleConfig($request->get('key'));
  147. $options = Arr::get($dict, 'detail');
  148. return $this->response->success($options);
  149. }
  150. }