where('state', UserStatus::OPEN->value) ->firstOrFail(); } /** * 验证项目 */ protected function validateProject(int $projectId): Project { return Project::where('id', $projectId) ->where('state', ProjectStatus::OPEN->value) ->firstOrFail(); } /** * 验证订单类型数据 */ protected function validateOrderTypeData(OrderType $type, array $data): void { match ($type) { OrderType::VISIT => $this->validateVisitOrder($data), OrderType::GRAB => $this->validateGrabOrder($data), OrderType::OVERTIME => $this->validateOvertimeOrder($data), OrderType::SHOP => $this->validateShopOrder($data), OrderType::EMERGENCY => $this->validateEmergencyOrder($data), }; } /** * 验证上门订单 */ private function validateVisitOrder(array $data): void { abort_if(empty($data['coach_id']), 400, '技师ID不能为空'); abort_if(empty($data['address_id']), 400, '地址ID不能为空'); $this->validateCoach($data['coach_id']); $this->validateServiceTime($data['coach_id'], $data['service_time']); } /** * 验证抢单订单 */ private function validateGrabOrder(array $data): void { abort_if(empty($data['address_id']), 400, '地址ID不能为空'); } /** * 验证加钟订单 */ private function validateOvertimeOrder(array $data): void { abort_if(empty($data['order_id']), 400, '原订单ID不能为空'); } /** * 验证到店订单 */ private function validateShopOrder(array $data): void { abort_if(empty($data['shop_id']), 400, '店铺ID不能为空'); } /** * 验证应急订单 */ private function validateEmergencyOrder(array $data): void { abort_if(empty($data['address_id']), 400, '地址ID不能为空'); } }