middleware('checkUserPermission', ['except' => 'configs']); $this->settingService = $settingService; } /** * 列表 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function index(Request $request) { $settings = $this->settingService->handleList($request); return $this->response->success($settings); } /** * 创建 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function store(Request $request) { $data = $this->validateData($request, [ 'name' => 'required|string', 'code' => [ 'required', 'alpha_dash', function ($attribute, $value, $fail) use ($request) { if (Setting::checkCodeIsUnique($value, $request->get('id'))) { $fail('配置代码 已存在'); } }, ], 'tag' => 'required', 'type' => 'required|in:1,2,3,4', 'value' => 'required', 'limit' => 'nullable', 'tips' => 'nullable', 'is_system' => 'required|in:0,1', 'remark' => 'nullable', ], [ 'name' => '配置名称', 'code' => '配置代码', 'value' => '配置值', 'is_system' => '是否系统内置', 'remark' => '备注', 'tag' => '标签模块', 'type' => '参数类型', 'limit' => '参数限制条件', ]); $setting = $this->settingService->handleStore($data); return $this->response->created($setting, '创建成功'); } /** * 详情 * @param int $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function show(Request $request) { $this->validate($request, ['id' => 'required|integer']); $setting = $this->settingService->handleProfile($request->get('id')); return $this->response->success($setting); } /** * 更新 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function update(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'name' => 'required|string', // 'code' => [ // 'required', // 'alpha_dash', // function ($attribute, $value, $fail) use ($request) { // if (Setting::checkCodeIsUnique($value, $request->get('id'))) { // $fail('配置代码 已存在'); // } // }, // ], 'tag' => 'required', // 'type' => 'required|in:1,2,3,4', 'value' => 'required', 'limit' => 'nullable', 'tips' => 'nullable', // 'is_system' => 'required|in:0,1', 'remark' => 'nullable', ], [ 'name' => '配置名称', 'code' => '配置代码', 'value' => '配置值', 'is_system' => '是否系统内置', 'remark' => '备注', 'tag' => '标签模块', 'type' => '参数类型', 'limit' => '参数限制条件', ]); $setting = $this->settingService->handleUpdate($data); return $this->response->success($setting, '更新成功'); } /** * 删除 * @param int $id */ public function destroy(Request $request) { $this->validate($request, ['id' => 'required|integer']); $re = $this->settingService->handleDelete($request->get('id')); if ($re) { return $this->response->ok('删除成功'); } return $this->response->fail('删除失败'); } /** * 获取系统配置参数 * @must * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function configs(Request $request) { $this->validate($request, ['keys' => 'required|array']); $configs = $this->settingService->handleConfigs($request->get('keys')); return $this->response->success(compact('configs')); } /** * 保存配置 * @must * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function save(Request $request) { $fields = $this->validateData($request, [ 'fields' => 'required|array', ], [ 'fields' => '字段表', ])['fields']; $data = $this->checkData($fields, $request); $this->settingService->handleSave($data); return $this->response->ok('保存成功'); } /** * 校检数据 * @param $fields * @param Request $request * @return array|mixed * @throws \Illuminate\Validation\ValidationException */ protected function checkData($fields, Request $request) { $da = $this->settingService->handleRules(); $keys = array_keys($da); $rules = []; $names = []; foreach ($fields as $field) { if (in_array($field, $keys)) { $rules[$field] = 'required'; $names[$field] = $da[$field]; } } $data = $this->validateData($request, $rules, $names); return $data; } /** * 配置模块列表 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function tags(Request $request) { $settings = $this->settingService->handleTagsList($request); return $this->response->success($settings); } }