diff --git a/app/Controller/Admin/WarehouseKeeperController.php b/app/Controller/Admin/WarehouseKeeperController.php new file mode 100644 index 0000000..0cc0bf2 --- /dev/null +++ b/app/Controller/Admin/WarehouseKeeperController.php @@ -0,0 +1,45 @@ +warehouseList(); + } + + /** + * 设置仓管数据 + * @param WarehouseKeeperRequest $request + * @return array + */ + #[RequestMapping(path: "setting_warehouse_keeper", methods: "POST")] + #[Scene(scene: "setting_warehouse_keeper")] + public function settingWarehouseKeeper(WarehouseKeeperRequest $request) + { + return (new WarehouseService())->settingWarehouse(); + } +} \ No newline at end of file diff --git a/app/Model/WarehouseKeeper.php b/app/Model/WarehouseKeeper.php new file mode 100644 index 0000000..51ac7ed --- /dev/null +++ b/app/Model/WarehouseKeeper.php @@ -0,0 +1,48 @@ + 'integer', 'user_id' => 'integer', 'kitchen_id' => 'integer', 'is_del' => 'integer']; + + const string CREATED_AT = 'create_time'; + + const string UPDATED_AT = 'update_time'; + + /** + * @param int $userId + * @return Builder|\Hyperf\Database\Model\Model|null + */ + public function getInfoByUserId(int $userId): \Hyperf\Database\Model\Model|Builder|null + { + return $this->where('is_del',UserCode::IS_NO_DEL)->where('user_id', $userId)->first(); + } +} diff --git a/app/Request/Admin/ChefRequest.php b/app/Request/Admin/ChefRequest.php index 0c29ab6..d985e32 100644 --- a/app/Request/Admin/ChefRequest.php +++ b/app/Request/Admin/ChefRequest.php @@ -29,6 +29,7 @@ class ChefRequest extends FormRequest 'user_id' =>'required|integer|exists:chef,user_id', 'profile' =>'sometimes', 'specialties' =>'sometimes', + 'query_city_id' => 'sometimes|integer|exists:system_city,id', ]; } @@ -39,7 +40,9 @@ class ChefRequest extends FormRequest 'query_chef_id' ], 'chef_detail_list' => [ - 'chef_id', + 'limit', + 'query_city_id', + 'query_chef_name' ], 'setting_chef' => [ 'user_id', diff --git a/app/Request/Admin/WarehouseKeeperRequest.php b/app/Request/Admin/WarehouseKeeperRequest.php new file mode 100644 index 0000000..1734000 --- /dev/null +++ b/app/Request/Admin/WarehouseKeeperRequest.php @@ -0,0 +1,44 @@ + 'required|integer', + 'query_name' =>'sometimes|string', + 'query_city_id' =>'sometimes|integer|exists:system_city,id', + 'user_id' =>'required|integer|exists:warehouse_keeper,user_id', + 'kitchen_id' =>'integer|exists:kitchen,id', + ]; + } + + protected array $scenes = [ + 'warehouse_list' => [ + 'limit', + 'query_city_id', + 'query_name' + ], + 'setting_warehouse' => [ + 'user_id', + 'kitchen_id', + ], + ]; +} diff --git a/app/Service/Admin/System/WarehouseService.php b/app/Service/Admin/System/WarehouseService.php new file mode 100644 index 0000000..78e0d19 --- /dev/null +++ b/app/Service/Admin/System/WarehouseService.php @@ -0,0 +1,75 @@ +request->input('limit', 10); + $cityId = (int)$this->request->input('query_city_id'); + $name = $this->request->input('query_name'); + + $list = $this + ->warehouseKeeperModel + ->leftJoin('admin_user', 'admin_user.id', '=', 'warehouse_keeper.user_id') + ->where('admin_user.is_del',UserCode::IS_NO_DEL) + ->where('admin_user.status',UserCode::ENABLE) + ->where('admin_user.role_id',RoleCode::WAREHOUSE) + ->when(!empty($cityId), function ($query) use ($cityId) { + $query->where('admin_user.city_id', $cityId); + }) + ->when(!empty($name), function ($query) use ($name) { + $query->where('admin_user.chinese_name', 'like', "$name%"); + }) + ->paginate($limit,['warehouse_keeper.id','admin_user.avatar','admin_user.chinese_name','warehouse_keeper.kitchen_id'])->toArray(); + + if (empty($list)) return $this->return->success('success',['list' => []]); + + return $this->return->success('success',['list' => $list]); + } + + public function settingWarehouse(): array + { + $userId = (int)$this->request->input('user_id'); + $kitchenId = (int)$this->request->input('kitchen_id'); + $info = $this->warehouseKeeperModel->getInfoByUserId($userId); + + if (!empty($info)) { + if(!empty($kitchenId)) + $info->kitchen_id = $kitchenId; + } else { + throw new ErrException('设置厨师信息失败'); + } + 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 0e50594..683008f 100644 --- a/app/Service/Admin/User/EmployeeService.php +++ b/app/Service/Admin/User/EmployeeService.php @@ -19,6 +19,7 @@ use App\Model\AdminRole; use App\Model\AdminUser; use App\Model\Chef; use App\Model\DriverSequence; +use App\Model\WarehouseKeeper; use App\Service\Admin\BaseService; use Exception; use Hyperf\Di\Annotation\Inject; @@ -112,6 +113,7 @@ class EmployeeService extends BaseService ]), RoleCode::CHEF => $this->addChef($model->id), + RoleCode::WAREHOUSE => $this->addWarehouseKeeper($model->id), default => true, }; @@ -126,6 +128,12 @@ class EmployeeService extends BaseService $chef->user_id = $id; return $chef->save(); } + public function addWarehouseKeeper($id): bool + { + $warehouseKeeper = new WarehouseKeeper(); + $warehouseKeeper->user_id = $id; + return $warehouseKeeper->save(); + } /** * 修改 @@ -152,6 +160,7 @@ class EmployeeService extends BaseService $del = match ($info->role_id) { RoleCode::DRIVER => (new DriverSequence)->where('driver_id', $info->id)->delete(), RoleCode::CHEF => (new Chef)->where('user_id', $info->id)->delete(), + RoleCode::WAREHOUSE => (new WarehouseKeeper)->where('user_id', $info->id)->delete(), default => true, }; @@ -160,6 +169,7 @@ class EmployeeService extends BaseService 'driver_id' => $info->id, ]), RoleCode::CHEF => $this->addChef($info->id), + RoleCode::WAREHOUSE => $this->addWarehouseKeeper($info->id), default => true, }; @@ -199,6 +209,7 @@ class EmployeeService extends BaseService $del = match ($info->role_id) { RoleCode::DRIVER => (new DriverSequence)->where('driver_id', $info->id)->update(['is_del' => UserCode::IS_DEL]), RoleCode::CHEF => (new Chef)->where('user_id', $info->id)->update(['is_del' => UserCode::IS_DEL]), + RoleCode::WAREHOUSE => (new WarehouseKeeper)->where('user_id', $info->id)->update(['is_del' => UserCode::IS_DEL]), default => true, };