#P1788
GET /b2c/v1/base/accommodations/list
Search Accommodations & Cities
این اندپوینت برای "Autocomplete" یا جستجوی اولیه در بخش هتل استفاده میشود.
ورودی کاربر را گرفته و به صورت همزمان در لیست شهرها و اقامتگاهها (هتل، آپارتمان و...) جستجو میکند.
Get Accommodation List
URL:
/b2c/v1/base/accommodations/listMethod: GET
Controller: V1BaseController@accommodationList
Auth: Optional (Public)
Query Parameters (پارامترهای ورودی)
| Parameter | Type | Required | Description |
|---|---|---|---|
| search | String | No | عبارت مورد نظر برای جستجو. در نام شهر، نام هتل، آدرس، نام استان و نام کشور (فارسی و انگلیسی) جستجو میشود. |
Business Logic (منطق تجاری)
- جستجوی شهرها (Cities Search):
- جدول
citiesبا جداولstatesوcountriesجوین میشود. - اگر
searchارسال شده باشد، در نامهای فارسی و انگلیسی (شهر، استان، کشور) جستجو میکند. - نتایج بر اساس
priorityمرتب شده و حداکثر ۳۰ مورد بازگردانده میشود.
- جدول
- جستجوی اقامتگاهها (Accommodations Search):
- شرط اجرا: تنها در صورتی اجرا میشود که پارامتر
searchخالی نباشد. - فیلتر: فقط اقامتگاههای فعال (
status=1). - دامنه جستجو: عنوان (فارسی/انگلیسی)، آدرس، و نام مکانهای جغرافیایی مرتبط.
- بهینهسازی (Redis): ابتدا شناسه (ID) هتلها پیدا میشود. سپس سیستم چک میکند آیا اطلاعات کامل هتل در Redis (کلید:
accommodations:{id}) وجود دارد یا خیر.- اگر در کش نباشد: تابع
StaticController::getAccommodationفراخوانی شده و نتیجه در Redis ذخیره میشود. - اگر در کش باشد: اطلاعات از Redis خوانده میشود.
- اگر در کش نباشد: تابع
- ترجمه نوع: نوع اقامتگاه (مثلا hotel) توسط تابع
getTitleTypeبه فارسی (هتل) تبدیل میشود.
- شرط اجرا: تنها در صورتی اجرا میشود که پارامتر
Response Structure
{
"status": true,
"time": 1702123456,
"data": {
"cities": [ ...Array of Cities OR false... ],
"accommodation": [ ...Array of Hotels OR false... ]
}
}
1. ساختار آبجکت شهر (Inside `cities` array)
{
"id": 10,
"title": {
"fa": "تهران",
"en": "Tehran"
},
"country": {
"fa": "ایران",
"en": "Iran"
},
"state": {
"fa": "تهران",
"en": "Tehran"
},
"category": {
"title": "شهر",
"subtitle": false
}
}
2. ساختار آبجکت اقامتگاه (Inside `accommodation` array)
{
"id": 505,
"en_title": "Espinas Palace",
"fa_title": "هتل اسپیناس پالاس",
"type": "هتل", // Translated value
"category": {
"title": "هتل",
"subtitle": false
},
"order": 1,
// ... سایر فیلدهای بازگردانده شده از Redis/StaticController ...
}
Accommodation Types Mapping
مقادیر فیلد type در خروجی اقامتگاهها به صورت خودکار به فارسی ترجمه میشوند:
| Database Value (key) | Output Value (fa) |
|---|---|
| hotel | هتل |
| apartment | آپارتمان |
| suite | سویت |
| house | خانه |
| villa | ویلا |
| traditional | بومگردی |
| motel | موتل |
| guesthouse | میهمانسرا |