From ce9d16eeda4e7bced3529c5ad1833cf440226a19 Mon Sep 17 00:00:00 2001 From: "LAPTOP-7SGDREK0\\shiweijun" <411582373@qq.com> Date: Tue, 7 Jan 2025 18:04:43 +0800 Subject: [PATCH] feat:chef --- app/Controller/Admin/ChefController.php | 75 ++++++++++++ app/Model/Chef.php | 60 +++++++++ app/Request/Admin/ChefRequest.php | 52 ++++++++ app/Service/Admin/System/ChefService.php | 136 +++++++++++++++++++++ app/Service/Admin/User/EmployeeService.php | 10 ++ 5 files changed, 333 insertions(+) create mode 100644 app/Controller/Admin/ChefController.php create mode 100644 app/Model/Chef.php create mode 100644 app/Request/Admin/ChefRequest.php create mode 100644 app/Service/Admin/System/ChefService.php diff --git a/app/Controller/Admin/ChefController.php b/app/Controller/Admin/ChefController.php new file mode 100644 index 0000000..cd8645e --- /dev/null +++ b/app/Controller/Admin/ChefController.php @@ -0,0 +1,75 @@ +chefList(); + } + + /** + * 厨师详细列表 + * @param ChefRequest $request + * @return array + */ + #[RequestMapping(path: "chef_detail_list", methods: "GET")] + #[Scene(scene: "chef_detail_list")] + public function chefDetailList(ChefRequest $request) + { + return (new ChefService())->chefDetailList(); + } + + #[RequestMapping(path: "chef_info", methods: "GET")] + #[Scene(scene: "chef_info")] + public function chefInfo(chefRequest $request) + { + return (new chefService)->chefInfo(); + } + + /** + * 设置厨师数据 + * @param ChefRequest $request + * @return array + */ + #[RequestMapping(path: "setting_chef", methods: "POST")] + #[Scene(scene: "setting_chef")] + public function settingChef(ChefRequest $request) + { + return (new ChefService)->settingChef(); + } + + /** + * 删除厨师数据 + * @param ChefRequest $request + * @return array + */ + #[RequestMapping(path: "delete", methods: "GET")] + #[Scene(scene: "delete")] + public function delete(chefRequest $request) + { + return (new chefService)->delete(); + } +} diff --git a/app/Model/Chef.php b/app/Model/Chef.php new file mode 100644 index 0000000..4241329 --- /dev/null +++ b/app/Model/Chef.php @@ -0,0 +1,60 @@ + 'integer', 'avatar_id' => 'integer', 'user_id' => 'integer', 'is_del' => 'integer']; + + const string CREATED_AT = 'create_time'; + + const string UPDATED_AT = 'update_time'; + + /** + * @param int $id + * @return Builder|\Hyperf\Database\Model\Model|null + */ + public function getInfoById(int $id): \Hyperf\Database\Model\Model|Builder|null + { + return $this->where('id', $id)->first(); + } + + /** + * @param int $userId + * @return Builder|\Hyperf\Database\Model\Model|null + */ + public function getInfoByUserId(int $userId): \Hyperf\Database\Model\Model|Builder|null + { + return $this->where('user_id', $userId)->first(); + } + +} diff --git a/app/Request/Admin/ChefRequest.php b/app/Request/Admin/ChefRequest.php new file mode 100644 index 0000000..1ebae8c --- /dev/null +++ b/app/Request/Admin/ChefRequest.php @@ -0,0 +1,52 @@ + 'required|integer', + 'query_chef_name' =>'sometimes|string', + 'query_chef_id' =>'sometimes|integer|exists:admin_user,id', + + ]; + } + + protected array $scenes = [ + 'chef_list' => [ + 'limit', + 'query_chef_name', + 'query_chef_id' + ], + 'chef_detail_list' => [ + 'query_chef_name', + ], + 'chefInfo' =>['id'], + 'setting_chef' => [ + 'name', + 'avatar_id', + 'user_id', + 'profile', + 'specialties' + ], + 'delete' => ['id'], + + ]; +} diff --git a/app/Service/Admin/System/ChefService.php b/app/Service/Admin/System/ChefService.php new file mode 100644 index 0000000..1b835e3 --- /dev/null +++ b/app/Service/Admin/System/ChefService.php @@ -0,0 +1,136 @@ +request->input('limit', 10); + $name = $this->request->input('query_chef_name'); + + $list = $this + ->adminUserModel + ->where('is_del',UserCode::IS_NO_DEL) + ->where('status',UserCode::ENABLE) + ->where('role_id',RoleCode::CHEF) + ->when(!empty($name), function ($query) use ($name) { + $query->where('name', 'like', "%{$name}%"); + }) + ->when($id = $this->request->input('query_chef_id'), function ($query) use ($id) { + $query->where('id', $id); + }) + ->paginate($limit,['chinese_name','id','mobile','status'])->toArray(); + + return $this->return->success('success',$list); + } + + public function chefDetailList(): array + { + $name = $this->request->input('query_chef_name'); + $list = $this + ->chefModel + ->where('is_del',UserCode::IS_NO_DEL) + ->when(!empty($name), function ($query) use ($name) { + $query->where('name', 'like', "%{$name}%"); + }) + ->get(['id','name','avatar_id','user_id','profile','specialties']); + + if (empty($list)) return $this->return->success('success',['list' => []]); + + return $this->return->success('success',['list' => $list->toArray()]); + } + + /** + * 根据id获取厨师信息 + * @return array + */ + public function chefInfo(): array + { + $data = $this->chefModel + ->getInfoById((int)$this->request->input('id')); + if (empty($data)) throw new ErrException('数据不存在'); + + $res = [ + 'id' => $data->id, + 'name' => $data->name, + 'avatar_id' => $data->avatar_id, + 'user_id' => $data->user_id, + 'profile' => $data->profile, + 'specialties' => $data->specialties, + ]; + + return $this->return->success('success', $res); + } + + /** + * 设置厨师信息 + * @return array + */ + public function settingChef(): array + { + $userId = (int)$this->request->input('user_id'); + $name = $this->request->input('name'); + $avatarId = (int)$this->request->input('avatar_id'); + $profile = $this->request->input('profile'); + $specialties = $this->request->input('specialties'); + + $info = $this->chefModel->getInfoByUserId($userId); + + if (!empty($info)) { + $info->name = $name; + $info->profile = $profile; + $info->specialties = $specialties; + $info->avatar_id = $avatarId; + } + + if (!$info->save()) throw new ErrException('设置厨师信息失败'); + + return $this->return->success(); + } + +// /** +// * 删除厨师 +// * @return array +// * @throws Exception +// */ +// public function delete(): array +// { +// $id = (int)$this->request->input('id'); +// +// $info = $this->chefModel->getInfoById($id); +// if (empty($info)) throw new ErrException('数据不存在'); +// +// $info->is_del = UserCode::IS_DEL; +// +// if (!$info->save()) throw new ErrException('删除失败'); +// +// return $this->return->success(); +// } +} \ No newline at end of file diff --git a/app/Service/Admin/User/EmployeeService.php b/app/Service/Admin/User/EmployeeService.php index 725e8e2..bb4b886 100644 --- a/app/Service/Admin/User/EmployeeService.php +++ b/app/Service/Admin/User/EmployeeService.php @@ -17,6 +17,7 @@ use App\Extend\StringUtil; use App\Lib\Crypto\CryptoFactory; use App\Model\AdminRole; use App\Model\AdminUser; +use App\Model\Chef; use App\Model\DriverSequence; use App\Service\Admin\BaseService; use Exception; @@ -109,6 +110,8 @@ class EmployeeService extends BaseService (new DriverSequence)->insert([ 'driver_id' => $model->id, ]), + RoleCode::CHEF => + $this->addChef($model->id), default => true, }; @@ -117,6 +120,13 @@ class EmployeeService extends BaseService return $this->return->success(); } + public function addChef($id): bool + { + $chef = new Chef(); + $chef->user_id = $id; + return $chef->save(); + } + /** * 修改 * @return array