مسابقه حضوری ۳ آذر حذف شده و این مسابقه تعیین‌کننده‌ی رتبه و جایزه‌ی شما است. اطلاعات بیشتر را می‌توانید در این‌جا کسب کنید.

لینک‌های مفید برای شرکت در مسابقه:

در طول مسابقه، می‌توانید سؤالات خود را از قسمت «سؤال بپرسید» مطرح کنید.

بیمه شهرام بهرام


شهرام و بهرام بعد از تصادف سنگینی که منجر به خسارت بسیار سنگینی که برای آن‌ها شد تصمیم گرفتند تا شرکت بیمه‌ای را تاسیس کنند. این دو با شرکت‌های مختلف بیمه وارد مذاکره شدند و قول همکاری با آن‌ها را گرفته‌اند.

این دو قصد دارند برای شروع API‌هایی را طراحی و در معرض استفاده عموم قرار دهند اما از آن‌جا که این دو نفر هیچ تجربه‌ای در زمینه برنامه‌نویسی ندارند، برای این کار از شما کمک خواسته‌اند.

نیازمندی‌های این دو برای این پروژه عبارت است از:

  1. تعریف شرکت بیمه
  2. تعریف انواع بیمه توسط یک شرکت خاص
  3. دریافت اطلاعات شرکت بیمه
  4. دریافت اطلاعات بیمه

مطابق با این نیازمندی‌ها، وب‌سرویس‌های زیر باید پیاده‌سازی شوند:

عنوان آدرس
تعریف شرکت بیمه 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"
}
JSON

اگر شرکت ذخیره شد باید عبارت 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
}
JSON

اگر بیمه ذخیره شد باید عبارت Insurance saved. و اگر هر خطایی رخ داد، عبارت Insurance saving problem! را با وضعیت BAD_REQUEST برگردانید.

همان‌طور که می‌بینید در مثال بالا بیمه افراد با نام دلخواه برای یک شرکت ایجاد می‌شود. حال فرض کنید قصد دارد تا بیمه وسایل نقلیه را نیز برای این شرکت ایجاد کنیم، برای این کار همین اندپوینت را با اطلاعات زیر صدا می‌زنیم:

{
  "type": "VEHICLE",
  "name": "mashin",
  "price": 220000,
  "company_id": 1,
  "usage": "for car"
}
JSON

بنابراین باید اندپوینت و جداول شما برای انواع بیمه‌ها به‌خوبی پیاده‌سازی شوند.

دریافت اطلاعات شرکت بیمه🔗

برای این قسمت اندپوینتی ایجاد کنید تا بتوان اطلاعات یک شرکت بیمه خاص را دریافت کرد، اطلاعات این اندپوینت باید به‌صورت زیر باشد:

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"
    }
  ]
}
JSON

دریافت اطلاعات بیمه🔗

برای این قسمت اندپوینتی ایجاد کنید تا بتوان اطلاعات یک بیمه خاص را دریافت کرد، اطلاعات این اندپوینت باید به‌صورت زیر باشد:

URL:
"POST /insurances/get/{id}"

Response:
{
  "type": "PERSON",
  "name": "shakhs",
  "price": 200000,
  "company_id": 1,
  "minAge": 20
}
JSON

نکات🔗

  • برای این پروژه از دیتابیس h2 استفاده شده است.
  • شما مجاز به ایجاد هر کلاسی در مسیر org/quera/bime هستید، فقط باید پروژه شما خواسته‌های مسئله را به‌خوبی پیاده‌سازی کرده باشد.

آن‌چه باید آپلود کنید🔗

پس از پیاده‌سازی موارد خواسته‌شده، این پروژه را زیپ کرده و ارسال کنید.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.