123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <?php
- namespace App\Services\Client\Traits;
- use App\Enums\OrderType;
- use App\Enums\ProjectStatus;
- use App\Enums\UserStatus;
- use App\Models\MemberUser;
- use App\Models\Project;
- trait ValidatesOrders
- {
- /**
- * 验证用户
- */
- protected function validateUser(int $userId): MemberUser
- {
- return MemberUser::where('id', $userId)
- ->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不能为空');
- }
- }
|