repository = $repository; $this->validator = $validator; } /** * 试卷列表 * @param Request $request * @return mixed * Author: Mead */ public function index(Request $request) { $lists = $this->repository->paginate($request->get('per_page', self::PAGE_NUM)); return Response::success($lists); } /** * 列表不分页 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function indexNoPage() { $lists = $this->repository->all(); return Response::success($lists); } /** * 添加 * @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)); try { $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE))); $data['admin_id'] = login_admin_id(); $data['shop_id'] = optional(login_admin())->shop_id; if (!$data['shop_id']) { $data['shop_id'] = Projects::query()->where('id', $data['project_id'])->value('shop_id'); } $model = $this->repository->create($data); return Response::success($model); } catch (\Exception $e) { return $this->errorStore($e); } } /** * 修改试题 * @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 { $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_UPDATE))); $model = $this->repository->update($data, $id); return Response::success($model); } 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 * Author: Mead */ public function selectOptions(Request $request) { $lists = $this->repository->select(['id', 'name'])->get(); return Response::success($lists); } /** * 详情 * @param $slug * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function show($id) { $model = $this->repository->find($id); if (!$model) { return $this->error('找不到资源'); } return Response::success($model); } /** * 区域树 * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function trees() { $areas = $this->repository->get()['list']; $n_areas = []; foreach ($areas as $key => $area) { if (!$area['parent_id']) { $area['children'] = []; $n_areas[$area['id']] = $area; } } foreach ($areas as $key => $area) { if ($area['parent_id']) { $n_areas[$area['parent_id']]['children'][] = $area; } } foreach ($n_areas as $key => $area) { if (count($area['children'])) { $n_areas[$key]['children'] = array_values($area['children']); } } return Response::success(array_values($n_areas)); } public function selectOptionTrees() { $areas = $this->repository->select(['id', 'name', 'parent_id'])->get()->toArray(); $n_areas = []; foreach ($areas as $key => $area) { if (!$area['parent_id']) { $area['children'] = []; $n_areas[$area['id']] = $area; } } foreach ($areas as $key => $area) { if ($area['parent_id']) { $n_areas[$area['parent_id']]['children'][] = $area; } } foreach ($n_areas as $key => $area) { if (count($area['children'])) { $n_areas[$key]['children'] = array_values($area['children']); } } return Response::success(array_values($n_areas)); } }