repository = $repository; $this->validator = $validator; } /** * 列表 * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function index() { $lists = $this->repository->paginate(request('per_page', self::PAGE_NUM)); 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)); $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE))); $data['username'] = $data['mobile']; if (User::query()->where('username', $data['username'])->exists()) { return Response::fail('账户已存在'); } try { if (!isset($data['password']) || !$data['password']) { $data['password'] = $data['username']; } $data['password'] = Hash::make($data['password']); $model = User::query()->create($data); // if ($role_id = $data['role_id']) { //// $role = Role::query()->where('id', $role_id)->pluck('name'); // $model->syncRoles($role_id); // } return Response::success($model); } catch (\Exception $e) { return $this->error($e); } } /** * 更新个人信息 * @param $id * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function update($id, Request $request) { $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_UPDATE)); $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_UPDATE))); $data['username'] = $data['mobile']; if (User::query()->where('id', '<>', $id)->where('username', $data['username'])->exists()) { return Response::fail('账户已存在'); } try { $model = User::query()->where('id', $id)->first(); if (isset($data['password']) && $data['password']) { $data['password'] = Hash::make($data['password']); } else { unset($data['password']); } $model->fill($data); $model->save(); // if ($role_id = $data['role_id']) { //// $model->syncRoles($role_id); //// } return Response::success($model); } catch (\Exception $e) { $this->error($e); } } /** * 详情 * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function show($id) { // $id = $request->get('id'); $courseCategory = $this->repository->find($id); return Response::success($courseCategory); } /** * 删除 * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function destroy($id) { try { $re = $this->repository->delete($id); if ($re) { return Response::success(null, T('successfully delete.')); } return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } 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); } } /** * 批量导入 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function import(Request $request) { $this->validate($request, [ 'id' => 'required|integer', // 'role_id' => 'required|integer' ]); $resource = Resource::query()->where('id', $request->get('id'))->first(); if (!$resource) { return $this->errorFail(); } $role = $request->get('role_id', 0); $this->dispatch(new ImportUserJob($resource['disk'], $resource['path'], $role)); return Response::success(null, '正在导入,请稍后'); } /** * 导出 * Author: Mead */ public function export(Request $request) { $this->validate($request, [ 'ids' => 'required|array', 'fields' => 'sometimes|array', ]); $ids = $request->get('ids'); $name = time(); return (new UserExport($request->get('fields', [0, 1, 2, 3, 4, 5])))->forIds($ids)->download($name . '.xlsx', null, [ 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => '*', 'Access-Control-Allow-Headers' => 'Content-Type, Authorization, X-Requested-With', 'Access-Control-Expose-Headers' => 'Content-Disposition', 'Content-type' => 'application/octet-stream', 'Content-Disposition' => 'attachment; filename=' . $name . '.xlsx', ]); } /** * 选项 * Author: Mead */ public function selectOptions() { $lists = $this->repository->skipPresenter()->all(['id', 'name', 'mobile']); return Response::success($lists); } /** * 权限列表 * Author: Mead */ public function organizations(Request $request) { $user_id = $request->get('user_id'); $lists = UserOrganization::query()->status()->select(['id', 'user_id', 'role', 'updated_at', 'organization_id'])->where('user_id', $user_id)->with(['organization'])->get(); return Response::success($lists); } /** * 用户授权组织 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function editOrganization(Request $request) { $this->validate($request, [ 'user_id' => 'required|integer', 'organization_id' => 'required|integer', 'role' => 'required|integer', ]); $user_id = $request->get('user_id'); $organization_id = $request->get('organization_id'); $role = $request->get('role'); $re = UserOrganization::query()->updateOrCreate(['organization_id' => $organization_id, 'user_id' => $user_id], ['role' => $role, 'status' => ModelStatusEnum::OK]); if ($re) { return Response::success(null); } return Response::fail('修改失败'); } /** * 删除权限 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function delOrganization(Request $request) { $id = $request->get('id'); $re = UserOrganization::query()->where('id', $id)->delete(); if ($re) { return Response::success(null); } return Response::fail('删除失败'); } }