SettingController.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <?php
  2. namespace App\Http\Controllers\Admin\Base;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Models\Base\Setting;
  5. use App\Services\Base\SettingService;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Arr;
  8. /**
  9. * 配置管理
  10. */
  11. class SettingController extends Controller
  12. {
  13. /**
  14. * @var SettingService
  15. */
  16. private $settingService;
  17. /**
  18. * SettingController constructor.
  19. *
  20. * @param SettingService $settingService
  21. */
  22. public function __construct(SettingService $settingService)
  23. {
  24. parent::__construct();
  25. // $this->middleware('checkUserPermission', ['except' => 'configs']);
  26. $this->settingService = $settingService;
  27. }
  28. /**
  29. * 列表
  30. * @param Request $request
  31. *
  32. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  33. * @throws \Prettus\Repository\Exceptions\RepositoryException
  34. */
  35. public function index(Request $request)
  36. {
  37. $settings = $this->settingService->handleList($request);
  38. return $this->response->success($settings);
  39. }
  40. /**
  41. * 创建
  42. * @param Request $request
  43. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  44. * @throws \Prettus\Validator\Exceptions\ValidatorException
  45. */
  46. public function store(Request $request)
  47. {
  48. $data = $this->validateData($request, [
  49. 'name' => 'required|string',
  50. 'code' => [
  51. 'required',
  52. 'alpha_dash',
  53. function ($attribute, $value, $fail) use ($request) {
  54. if (Setting::checkCodeIsUnique($value, $request->get('id'))) {
  55. $fail('配置代码 已存在');
  56. }
  57. },
  58. ],
  59. 'value' => 'required',
  60. 'is_system' => 'required|in:0,1',
  61. 'remark' => 'nullable',
  62. ], [
  63. 'name' => '配置名称',
  64. 'code' => '配置代码',
  65. 'value' => '配置值',
  66. 'is_system' => '是否系统内置',
  67. 'remark' => '备注',
  68. ]);
  69. $setting = $this->settingService->handleStore($data);
  70. return $this->response->created($setting, '创建成功');
  71. }
  72. /**
  73. * 详情
  74. * @param int $id
  75. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  76. */
  77. public function show(Request $request)
  78. {
  79. $this->validate($request, ['id' => 'required|integer']);
  80. $setting = $this->settingService->handleProfile($request->get('id'));
  81. return $this->response->success($setting);
  82. }
  83. /**
  84. * 更新
  85. * @param Request $request
  86. *
  87. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  88. * @throws \Prettus\Validator\Exceptions\ValidatorException
  89. */
  90. public function update(Request $request)
  91. {
  92. $data = $this->validateData($request, [
  93. 'id' => 'required|integer',
  94. 'name' => 'required|string',
  95. 'code' => [
  96. 'required',
  97. 'alpha_dash',
  98. function ($attribute, $value, $fail) use ($request) {
  99. if (Setting::checkCodeIsUnique($value, $request->get('id'))) {
  100. $fail('配置代码 已存在');
  101. }
  102. },
  103. ],
  104. 'value' => 'required',
  105. 'is_system' => 'required|in:0,1',
  106. 'remark' => 'nullable',
  107. ], [
  108. 'name' => '配置名称',
  109. 'code' => '配置代码',
  110. 'value' => '配置值',
  111. 'is_system' => '是否系统内置',
  112. 'remark' => '备注',
  113. ]);
  114. $setting = $this->settingService->handleUpdate($data);
  115. return $this->response->success($setting, '更新成功');
  116. }
  117. /**
  118. * 删除
  119. * @param int $id
  120. */
  121. public function destroy(Request $request)
  122. {
  123. $this->validate($request, ['id' => 'required|integer']);
  124. $re = $this->settingService->handleDelete($request->get('id'));
  125. if ($re) {
  126. return $this->response->ok('删除成功');
  127. }
  128. return $this->response->fail('删除失败');
  129. }
  130. /**
  131. * 获取系统配置参数
  132. * @must
  133. * @param Request $request
  134. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  135. * @throws \Illuminate\Validation\ValidationException
  136. */
  137. public function configs(Request $request)
  138. {
  139. $this->validate($request, ['keys' => 'required|array']);
  140. $configs = $this->settingService->handleConfigs($request->get('keys'));
  141. return $this->response->success(compact('configs'));
  142. }
  143. /**
  144. * 保存配置
  145. * @must
  146. * @param Request $request
  147. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  148. * @throws \Illuminate\Validation\ValidationException
  149. */
  150. public function save(Request $request)
  151. {
  152. $fields = $this->validateData($request, [
  153. 'fields' => 'required|array',
  154. ], [
  155. 'fields' => '字段表',
  156. ])['fields'];
  157. $data = $this->checkData($fields, $request);
  158. $this->settingService->handleSave($data);
  159. return $this->response->ok('保存成功');
  160. }
  161. /**
  162. * 校检数据
  163. * @param $fields
  164. * @param Request $request
  165. * @return array|mixed
  166. * @throws \Illuminate\Validation\ValidationException
  167. */
  168. protected function checkData($fields, Request $request)
  169. {
  170. $da = $this->settingService->handleRules();
  171. $keys = array_keys($da);
  172. $rules = [];
  173. $names = [];
  174. foreach ($fields as $field) {
  175. if (in_array($field, $keys)) {
  176. $rules[$field] = 'required';
  177. $names[$field] = $da[$field];
  178. }
  179. }
  180. $data = $this->validateData($request, $rules, $names);
  181. return $data;
  182. }
  183. }