#P1442
POST /api/v2/passenger/store
Route Info
| Method | Endpoint | Controller | Middleware | Purpose |
| POST | /api/v2/passenger/store | UserController@storePassenger | authWithJwt | ایجاد یا بروزرسانی رکوردهای مشتری (مسافر) بر اساس ملیت و مدارک. |
منطق عملکرد
- برای هر آیتم در
request->dataبررسی میشود:- اگر ملیت = ایران و کد ملی موجود → جستجو بر اساس
national_code. - اگر ملیت ≠ ایران → جستجو بر اساس
passport_code.
- اگر ملیت = ایران و کد ملی موجود → جستجو بر اساس
- اگر رکورد موجود نباشد → درج جدید در
customersو برگرداندن شناسه. - اگر موجود باشد → در صورت فعال بودن احراز هویت، فیلدهای معتبر (دارای rank >=90) حذف و اطلاعات دیگر بروز میشوند.
- در پایان لاگ
SystemLog(type=StorePassenger)در صف تأخیر ثبت میشود.
پارامترهای ورودی کلیدی
| نام | نوع | ضروری | توضیح |
| branch | integer | بله | شناسه شعبه. |
| data[] | array | بله | آرایهای از مسافران جهت درج. |
| data[].citizenship.id | integer | بله | شناسه کشور. |
| data[].national_code | string | خیر | کد ملی (در صورت ایرانی بودن). |
| data[].pass_code | string | خیر | کد پاسپورت (در صورت خارجی بودن). |
| data[].birthday | string | بله | تاریخ تولد (YYYY-MM-DD). |
| operator | object | بله | از JWT برای ثبت مسئول. |
نمونه خروجی موفق
{
"status": true,
"time": 1732038300,
"data": [
{"passenger_id": 45, "name_fa": "علیرضا", "lastname_fa": "ایرانپور"}
]
}
امنیت
JWT اجباری؛ هر اپراتور فقط به شعبه خود اجازه درج دارد.
وابستگیها
- DB
- Carbon
- Functions::checkDatetime()
- Validator::datetime()
- SystemLog
کارایی
درج مستقیم بدون تراکنش پیچیده، متوسط 2–3ms برای هر مسافر.
مدیریت خطا
- اگر رکورد تکراری → پاسخ با
status=falseو پیام خطا. - اگر احراز هویت معتبر فعال باشد → جلوگیری از ویرایش فیلدهای حساس.
اثرات جانبی
در صورت وجود کش هویت، برخی فیلدها حذف از بروزرسانی خواهند شد.
ردپای حسابرسی
ثبت log با نوع StorePassenger در صف snailJob با تأخیر ۱۰ دقیقه.
پیشنهاد بهبود
- اضافه کردن check برای تداخل کد ملی و پاسپورت در شعب مختلف.
- تبدیل عملیات دستهای به تراکنش DB برای اتمیک بودن.
جمعبندی
این متد پایهی درج و بروزرسانی اولیه دادههای مسافران در سیستم فروش و رزرو است و احراز هویت را به طور هوشمند کنترل میکند.