شهرام و بهرام بعد از تصادف سنگینی که منجر به خسارت بسیار سنگینی که برای آنها شد تصمیم گرفتند تا شرکت بیمهای را تاسیس کنند. این دو با شرکتهای مختلف بیمه وارد مذاکره شدند و قول همکاری با آنها را گرفتهاند.
این دو قصد دارند برای شروع APIهایی را طراحی و در معرض استفاده عموم قرار دهند اما از آنجا که این دو نفر هیچ تجربهای در زمینه برنامهنویسی ندارند، برای این کار از شما کمک خواستهاند.
نیازمندیهای این دو برای این پروژه عبارت است از:
- تعریف شرکت بیمه
- تعریف انواع بیمه توسط یک شرکت خاص
- دریافت اطلاعات شرکت بیمه
- دریافت اطلاعات بیمه
مطابق با این نیازمندیها، وبسرویسهای زیر باید پیادهسازی شوند:
عنوان | آدرس |
---|---|
تعریف شرکت بیمه | POST /companies/save |
تعریف انواع بیمه توسط یک شرکت خاص | POST /insurances/save |
دریافت اطلاعات شرکت بیمه | GET /companies/get/{id} |
دریافت اطلاعات بیمه | GET /insurances/get/{id} |
جزئیات پروژه
ابتدا پروژهی اولیه و خام اسپرینگ بوتی را از این لینک دانلود کنید. سپس شما باید به پیادهسازی نیازمندیهای ذکر شده بپردازید.
تعریف شرکت بیمه
در برنامه شما باید بتوان شرکت جدیدی ثبت کرد. شرکتها باید در جدولی به نام companies
ذخیره شوند و اطلاعات این جدول بهصورت زیر است:
نام ستون | نوع |
---|---|
name | String |
همچنین این شرکت میتواند چندین بیمه (insurances) ایجاد کند.
برای ایجاد شرکت بیمه شما باید اندپوینتی با اطلاعات زیر ایجاد کنید:
URL:
"POST /companies/save"
Request:
content-type: "application/json"
{
"name": "shahram"
}
اگر شرکت ذخیره شد باید عبارت Company saved.
و اگر هر خطایی رخ داد، عبارت Company saving problem!
را با وضعیت BAD_REQUEST
برگردانید.
تعریف انواع بیمه توسط یک شرکت خاص
در برنامه شما باید بتوان برای هر شرکت تعدادی بیمه ثبت کرد. برای شروع برنامه شما باید از دو نوع بیمه افراد و وسایل نقلیه پشتیبانی کند. بیمهها باید در جدولی به نام insurances
ذخیره شوند و اطلاعات این جدول بهصورت زیر است:
نام ستون | نوع |
---|---|
type | ENUM |
name | String |
price | Double |
created_at | LocalDateTime |
همچنین این جدول به شرکتی (company) که آن را ایجاد کرده، مرتبط است و ستون created_at
زمان درج ردیف را نگه میدارد و type
هم ENUM ای است که میتواند PERSON
یا VEHICLE
باشد.
جدولهای vehicles_insurance
و persons_insurance
نیز باید در پروژه شما وجود داشته باشند که اطلاعات تکمیلی بیمهها را در خود نگه میدارند تا اگر شرکتی این نوع بیمهها را ثبت کرد، اطلاعات تکمیلی در این جداول ذخیره شود.
ساختار جدول vehicles_insurance
:
نام ستون | نوع |
---|---|
usage | String |
ساختار جدول persons_insurance
:
نام ستون | نوع |
---|---|
min_age | int |
برای ایجاد بیمهها شما باید اندپوینتی با اطلاعات زیر ایجاد کنید:
URL:
"POST /insurances/save"
Request:
content-type: "application/json"
{
"type": "PERSON",
"name": "shakhs",
"price": 300000,
"company_id": 1,
"minAge": 20
}
اگر بیمه ذخیره شد باید عبارت Insurance saved.
و اگر هر خطایی رخ داد، عبارت Insurance saving problem!
را با وضعیت BAD_REQUEST
برگردانید.
همانطور که میبینید در مثال بالا بیمه افراد با نام دلخواه برای یک شرکت ایجاد میشود. حال فرض کنید قصد دارد تا بیمه وسایل نقلیه را نیز برای این شرکت ایجاد کنیم، برای این کار همین اندپوینت را با اطلاعات زیر صدا میزنیم:
{
"type": "VEHICLE",
"name": "mashin",
"price": 220000,
"company_id": 1,
"usage": "for car"
}
بنابراین باید اندپوینت و جداول شما برای انواع بیمهها بهخوبی پیادهسازی شوند.
دریافت اطلاعات شرکت بیمه
برای این قسمت اندپوینتی ایجاد کنید تا بتوان اطلاعات یک شرکت بیمه خاص را دریافت کرد، اطلاعات این اندپوینت باید بهصورت زیر باشد:
URL:
"POST /companies/get/{id}"
Response:
{
"name": "shahram",
"insurances": [
{
"type": "PERSON",
"name": "shakhs",
"price": 200000,
"company_id": 1,
"minAge": 20
},
{
"type": "VEHICLE",
"name": "mashin",
"price": 220000,
"company_id": 1,
"usage": "for car"
}
]
}
دریافت اطلاعات بیمه
برای این قسمت اندپوینتی ایجاد کنید تا بتوان اطلاعات یک بیمه خاص را دریافت کرد، اطلاعات این اندپوینت باید بهصورت زیر باشد:
URL:
"POST /insurances/get/{id}"
Response:
{
"type": "PERSON",
"name": "shakhs",
"price": 200000,
"company_id": 1,
"minAge": 20
}
نکات
- برای این پروژه از دیتابیس
h2
استفاده شده است. - شما مجاز به ایجاد هر کلاسی در مسیر
org/quera/bime
هستید، فقط باید پروژه شما خواستههای مسئله را بهخوبی پیادهسازی کرده باشد.
آنچه باید آپلود کنید
پس از پیادهسازی موارد خواستهشده، این پروژه را زیپ کرده و ارسال کنید.
ارسال پاسخ برای این سؤال