middleware('checkUserPermission'); $this->adminService = $adminService; } /** * 列表 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function index(Request $request) { $admins = $this->adminService->handleList($request); return $this->response->success($admins); } /** * 创建 * @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, [ 'username' => [ 'required', 'alpha_dash', function ($attribute, $value, $fail) use ($request) { if (Admin::checkUsernameIsUnique($value, $request->get('id'))) { $fail('账号 已存在'); } }, ], 'name' => 'required', 'mobile' => 'required|mobile', 'email' => 'nullable|sometimes|email', 'sex' => 'required|in:0,1,2', 'password' => 'required|confirmed|password_level', 'department_id' => 'required|integer', 'role_ids' => 'required|array', 'user_tag' => 'nullable|string', 'status' => 'required|integer', 'extra_fields' => 'nullable|sometimes|array', ], [ 'username' => '用户名', 'name' => '姓名', 'user_no' => '工号', 'mobile' => '手机号', 'email' => '邮箱', 'sex' => '性别', 'password' => '密码', 'department_id' => '部门', 'role_ids' => '角色', 'is_view_user_info' => '是否可以查看用户隐私数据', 'user_tag' => '用户标签', 'status' => '状态', 'extra_fields' => '额外字段', ]); $data['type'] = AdminTypeEnum::ADMIN; $admin = $this->adminService->handleStore($data); return $this->response->created($admin, '创建成功'); } /** * 详情 * @param int $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function show(Request $request) { $this->validate($request, ['id' => 'required|integer']); $admin = $this->adminService->handleProfile($request->get('id')); return $this->response->success($admin); } /** * 修改 * @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, [ 'username' => [ 'required', 'alpha_dash', function ($attribute, $value, $fail) use ($request) { if (Admin::checkUsernameIsUnique($value, $request->get('id'))) { $fail('账号 已存在'); } }, ], 'name' => 'required', 'mobile' => 'required|mobile', 'email' => 'nullable|sometimes|email', 'sex' => 'required|in:0,1,2', 'department_id' => 'required|integer', 'role_ids' => 'required|array', // 'is_view_user_info' => 'required|integer', 'user_tag' => 'nullable|string', 'status' => 'required|integer', 'id' => 'required|integer', 'extra_fields' => 'nullable|sometimes|array', ], [ 'username' => '用户名', 'name' => '姓名', 'mobile' => '手机号', 'email' => '邮箱', 'sex' => '性别', 'department_id' => '部门', 'role_ids' => '角色', 'is_view_user_info' => '是否可以查看用户隐私数据', 'status' => '状态', 'user_tag' => '用户标签', 'extra_fields' => '额外字段', ]); // $data['type'] = AdminTypeEnum::ADMIN; // if (!in_array(AdminTypeEnum::ADMIN, $data['role_ids'])) { // $data['type'] = AdminTypeEnum::USER; // } $admin = $this->adminService->handleUpdate($data); return $this->response->success($admin, '更新成功'); } /** * 删除 * @param int $id */ public function destroy(Request $request) { $this->validate($request, ['id' => 'required|integer']); $re = $this->adminService->handleDelete($request->get('id')); if ($re) { return $this->response->ok('删除成功'); } return $this->response->fail('删除失败'); } /** * 批量删除 * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function batchDelete(Request $request) { $this->validate($request, ['ids' => 'required|array']); $re = $this->adminService->handleBatchDelete($request->get('ids')); if ($re) { return $this->response->ok('删除成功'); } return $this->response->fail('删除失败'); } /** * 重置密码 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function resetPassword(Request $request) { $this->validate($request, ['id' => 'required|integer', 'password' => 'required|min:6'], [], [ 'password' => '密码', ]); $this->adminService->handleResetPassword($request); return $this->response->ok('重置成功'); } /** * 管理员选项 * @must * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function selectOptions(Request $request) { $admins = $this->adminService->handleSelectOptions($request); return $this->response->success($admins); } /** * 批量修改状态 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function batchUpdateStatus(Request $request) { $data = $this->validateData($request, [ 'ids' => 'required|array', 'status' => 'required|integer', 'remark' => 'nullable' ], [ 'ids' => 'ids', 'status' => '状态', 'remark' => '备注' ]); Admin::query()->whereIn('id', $data['ids'])->update([ 'status' => $data['status'], 'remark' => $data['remark'], ]); return $this->response->ok('操作成功'); } }