repository = $repository; $this->validator = $validator; } /** * 列表 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function index(Request $request) { $departments = $this->repository->paginate(request('per_page', self::PAGE_NUM)); return Response::success($departments); } /** * 添加 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource|void * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function store(Request $request) { $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_CREATE)); $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE))); try { $data['sign'] = Str::random(6); $data['shop_id'] = optional(login_admin())->shop_id; $department = $this->repository->create($data); return Response::success($department); } catch (\Exception $e) { return $this->errorStore($e); } } /** * 详情 * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function show($id) { $department = $this->repository->find($id); return Response::success($department); } /** * 更新 * @param Request $request * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function update(Request $request, $id) { $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_UPDATE)); try { $department = $this->repository->update($request->all(), $id); return Response::success($department); } catch (\Exception $e) { $this->errorStore($e); } } /** * 删除 * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function destroy($id) { try { $this->repository->delete($id); return Response::success(null, T('successfully delete.')); } catch (\Exception $exception) { return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } } /** * 批量删除 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function delete(Request $request) { try { $this->validate($request, [ 'ids' => 'required|array', ]); $ids = $request->get('ids'); $this->repository->whereIn('id', $ids)->delete(); return Response::success(null, T('successfully delete.')); } catch (\Exception $exception) { return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } } /** * 选项 * Author: Mead */ public function selectOptions() { $lists = $this->repository->skipPresenter()->all(['id', 'name']); return Response::success($lists); } /** * 获取项目 * Author: Mead */ public function project(Request $request) { $sign = $request->get('sign'); $type = $request->get('type', [0]); $area_id = $request->get('area_id', 0); $project = Projects::query()->where('sign', $sign)->status()->first(); if (!$project) { return $this->error('找不到资源'); } $model = Area::query()->whereIn('type', $type); if ($area_id) { $model->where('parent_id', $area_id); } $areas = $model->where('project_id', $project->id)->get(); return Response::success(compact('project', 'areas')); } /** * 项目树 * @param Request $request * Author: Mead */ public function projectTree(Request $request) { $sign = $request->get('sign'); $project = Projects::query()->where('sign', $sign)->status()->first(); if (!$project) { return $this->error('找不到资源'); } $areas = Area::query()->where('type', AreaTypeEnum::AREA)->where('project_id', $project->id)->get()->toArray(); foreach ($areas as $key => $area) { $areas[$key]['children'] = Area::query()->where('type', AreaTypeEnum::VILLAGE)->where('parent_id', $area['id'])->get()->toArray(); } return Response::success(compact('project', 'areas')); } }