From b100953526ce3356752ad64cd1bfc98fcd7e2a1a Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Thu, 13 Oct 2022 17:54:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3-=E5=B7=AE=E7=A6=81=E7=94=A8=E5=90=AF?= =?UTF-8?q?=E7=94=A8=E3=80=81=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/AdminUserController.php | 85 +++++++++++++++++++ app/Http/Requestes/AdminUserRequest.php | 54 ++++++++++++ .../Requestes/AgriculturalBaseRequest.php | 8 +- app/Http/Resources/AdminUserResource.php | 29 +++++++ app/ModelFilters/AdminUserFilter.php | 11 +++ app/Models/AdminUser.php | 9 +- app/Models/AdminUserBase.php | 11 +++ ...3_174725_create_admin_user_bases_table.php | 33 +++++++ routes/api.php | 6 +- 9 files changed, 239 insertions(+), 7 deletions(-) create mode 100644 app/Http/Controllers/AdminUserController.php create mode 100644 app/Http/Requestes/AdminUserRequest.php create mode 100644 app/Http/Resources/AdminUserResource.php create mode 100644 app/ModelFilters/AdminUserFilter.php create mode 100644 app/Models/AdminUserBase.php create mode 100644 database/migrations/2022_10_13_174725_create_admin_user_bases_table.php diff --git a/app/Http/Controllers/AdminUserController.php b/app/Http/Controllers/AdminUserController.php new file mode 100644 index 0000000..beeee37 --- /dev/null +++ b/app/Http/Controllers/AdminUserController.php @@ -0,0 +1,85 @@ +all())->where('id', '>', 1); + $list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50)) ; + return $this->json(AdminUserResource::collection($list)); + } + + public function store(AdminUserRequest $request) + { + $baseIds = $request->input('base_ids', []); + try{ + DB::beginTransaction(); + //添加基地信息 + $user = AdminUser::create($request->input()); + //添加基地农作物 + $user->bases()->sync($baseIds); + DB::commit(); + }catch(\Throwable $th){ + DB::rollBack(); + report($th); + return $this->error('添加失败,请稍后再试'); + } + return $this->success('添加成功'); + } + + public function show(AdminUser $adminUser){ + return $this->json(AdminUserResource::make($adminUser)); + } + + public function update(AdminUser $adminUser, AdminUserRequest $request) + { + $baseIds = $request->input('base_ids', []); + try{ + DB::beginTransaction(); + //添加基地信息 + $adminUser->update($request->input()); + //添加基地农作物 + $adminUser->crops()->sync($baseIds); + DB::commit(); + }catch(\Throwable $th){ + DB::rollBack(); + report($th); + return $this->error('修改失败,请稍后再试'); + } + return $this->success('修改成功!'); + } + + public function destroy(AdminUser $adminUser){ + try{ + DB::beginTransaction(); + $adminUser->crops()->sync([]); + $adminUser->delete(); + DB::commit(); + }catch(\Throwable $th){ + DB::rollBack(); + report($th); + return $this->error('删除失败,请稍后再试'); + } + return $this->success('删除成功!'); + } + + /** + * 启用/禁用 + * + * @param AdminUser $adminUser + * @return void + */ + public function endable(AdminUser $adminUser){ + + } + +} diff --git a/app/Http/Requestes/AdminUserRequest.php b/app/Http/Requestes/AdminUserRequest.php new file mode 100644 index 0000000..8dc1c88 --- /dev/null +++ b/app/Http/Requestes/AdminUserRequest.php @@ -0,0 +1,54 @@ + 'required|alpha_num|max:100', + 'password' => 'required|string|min:6|max:32', + 'name' => 'required|string|max:100', + 'avatar' => 'nullable|string', + 'department' => 'nullable|string', + 'phone' => 'nullable|string', + 'status' => 'required|integer|min:0', + 'base_ids' => 'nullable|array', + ]; + } + + public function messages() + { + $messages = [ + 'username.required' => '请填写登录用户名', + 'username.alpha_num' => '用户名只能由字母和数字组成', + 'username.max' => '用户名最长100位', + 'password.required' => '请填写登录密码', + 'password.string'=> '请正确填写密码', + 'password.min' => '密码长度不能低于6位', + 'password.max' => '密码长度不能超过32位', + 'name.required' => '请填写名称', + 'name.string' =>'请正确填写名称', + 'name.max' => '名称长度不能超过100位', + 'status' => '请选择用户状态', + ]; + + return $messages; + } + + protected function failedValidation(Validator $validator) + { + $error = $validator->errors()->all(); + throw new HttpResponseException(response()->json(['data' => [], 'code' => 400, 'message' => $error[0]])); + } +} diff --git a/app/Http/Requestes/AgriculturalBaseRequest.php b/app/Http/Requestes/AgriculturalBaseRequest.php index 9404ecb..6502613 100644 --- a/app/Http/Requestes/AgriculturalBaseRequest.php +++ b/app/Http/Requestes/AgriculturalBaseRequest.php @@ -17,14 +17,14 @@ class AgriculturalBaseRequest extends FormRequest { return [ 'name' => 'required|string|max:100', - 'description' => 'string', + 'description' => 'nullable|string', 'person' => 'required|string|max:100', 'crops_ids'=> 'required|array|min:1', 'areas' => 'required|regex:/^\d+(\.\d{1,2})?$/', 'workforce' => 'required|integer|min:0', - 'address' => 'string', - 'address_lat' => 'regex:/^\d+(\.\d{1,10})?$/', - 'address_lng' => 'regex:/^\d+(\.\d{1,10})?$/', + 'address' => 'nullable|string', + 'address_lat' => 'nullable|regex:/^\d+(\.\d{1,10})?$/', + 'address_lng' => 'nullable|regex:/^\d+(\.\d{1,10})?$/', ]; } diff --git a/app/Http/Resources/AdminUserResource.php b/app/Http/Resources/AdminUserResource.php new file mode 100644 index 0000000..6341f33 --- /dev/null +++ b/app/Http/Resources/AdminUserResource.php @@ -0,0 +1,29 @@ + $this->id, + 'name' => $this->name, + 'avatar'=> $this->avatar, + 'department' => $this->department, + 'phone' => $this->phone, + 'status' => $this->status, + 'is_enable'=> $this->is_enable, + 'bases' => AgriculturalBaseResource::collection($this->whenload('bases')), + ]; + } +} diff --git a/app/ModelFilters/AdminUserFilter.php b/app/ModelFilters/AdminUserFilter.php new file mode 100644 index 0000000..0881751 --- /dev/null +++ b/app/ModelFilters/AdminUserFilter.php @@ -0,0 +1,11 @@ +belongsToMany(AgriculturalBase::class, 'admin_user_bases', 'user_id', 'base_id'); + } } diff --git a/app/Models/AdminUserBase.php b/app/Models/AdminUserBase.php new file mode 100644 index 0000000..3115bfc --- /dev/null +++ b/app/Models/AdminUserBase.php @@ -0,0 +1,11 @@ +id(); + $table->unsignedBigInteger('user_id'); + $table->unsignedBigInteger('base_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('admin_user_bases'); + } +}; diff --git a/routes/api.php b/routes/api.php index 9876385..a2143f4 100644 --- a/routes/api.php +++ b/routes/api.php @@ -23,9 +23,13 @@ Route::group(['middleware' => 'auth:sanctum'], function () { //全市基础数据 Route::get('citydata-statistics', [CityDataController::class, 'statistics']); - + //基地数据 Route::apiResource('agricultural-basic', AgriculturalBaseController::class); + + /** 系统管理 **/ + Route::apiResource('admin-users', AdminUserController::class); + Route::prefix('users')->group(function () { Route::put('reset-password', [UserController::class, 'resetPwd']); Route::delete('logout', [UserController::class, 'logout']);