تیم انبوهفروشان مشرقزمین قصد دارد سامانهای تحتوب برای مدیریت آسانتر فروشگاهشان راهاندازی کند. آنها تصمیم گرفتهاند تا وبسرویسشان را با استفاده از Spring Boot پیادهسازی کنند. نیازمندیها از قبل بهطور دقیق مشخص شدهاند، اما هنوز برنامهنویسی به تیم آنها اضافه نشده است. از شما میخواهیم تا نسخهی اولیهی این وبسرویس را پیادهسازی کنید.
جزئیات پروژه
پروژهی اولیه را از این لینک دانلود کنید.
- این پروژه از Maven استفاده میکند و وابستگیها در POM تعریف شدهاند. امکان تغییر این وابستگیها وجود ندارد.
- از Liquibase برای مدیریت schema دیتابیس استفاده شده است.
- برای اجرای تستها، از دیتابیس H2 استفاده میشود.
- در این پروژه، وابستگی Project Lombok تعریف شده و قابل استفاده است.
- بستهی
ir.digipay.bulkshop
شامل موجودیتهای JPA برنامه است که مطابق با schema دیتابیس طراحی شدهاند. شناسه (id
) موجودیتها بهصورت خودکار توسط Hibernate تولید میشود.- کلاس
CustomerEntity
: از این کلاس برای نگهداری اطلاعات هر مشتری استفاده میشود. - کلاس
ProductEntity
: از این کلاس برای نگهداری اطلاعات هر محصول استفاده میشود. - کلاس
OrderEntity
: از این کلاس برای نگهداری اطلاعات هر سفارش استفاده میشود.
- کلاس
- بستهی
ir.digipay.bulkshop.api
شامل کلاسهایی برای مدیریت ورودیها و خروجیهای API است. - بستهی
ir.digipay.bulkshop.rest
شامل REST controller های برنامه است. کنترلر مربوط به آدرس/
برای تست برنامه در کلاسIndexRestEnpoint
پیادهسازی شده است. سایر کنترلرها را در این بسته پیادهسازی کنید. - از آنجا که این برنامه اولین نسخهی سامانه است، هر سفارش میتواند شامل یک نوع محصول باشد، اما تعداد آن را میتوان در سفارش تعیین کرد.
سرویسها
تعدادی وبسرویس REST مطابق نیازمندیهای زیر باید پیادهسازی شود:
آدرس | عنوان |
---|---|
GET /api/products |
دریافت اطلاعات محصولات |
POST /api/products |
ایجاد محصول |
GET /api/products/{id} |
دریافت اطلاعات یک محصول |
PUT /api/products |
ویرایش اطلاعات یک محصول |
GET /api/customers |
دریافت اطلاعات مشتریان |
POST /api/customers |
ایجاد مشتری |
GET /api/customers/{id} |
دریافت اطلاعات یک مشتری |
PUT /api/customers |
ویرایش اطلاعات یک مشتری |
GET /api/orders |
دریافت اطلاعات سفارشات |
POST /api/orders |
ایجاد سفارش |
GET /api/orders/{id} |
دریافت اطلاعات یک سفارش |
دریافت اطلاعات محصولات
اطلاعات همهی محصولات در قالب یک آرایه برگردانده میشود:
ایجاد محصول
یک محصول با اطلاعات اولیهی دادهشده ایجاد میشود و شناسهی آن برگردانده میشود:
دریافت اطلاعات یک محصول
شناسهی محصول بهعنوان ورودی داده میشود و اطلاعات محصول برگردانده میشود:
اگر محصولی با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
ویرایش اطلاعات یک محصول
اطلاعات جدید محصول داده میشود و پس از بهروزرسانی اطلاعات محصول، پاسخی با کد 204
برگردانده میشود:
اگر محصولی با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
دریافت اطلاعات مشتریان
اطلاعات همهی مشتریان در قالب یک آرایه برگردانده میشود:
ایجاد مشتری
یک مشتری با اطلاعات اولیهی دادهشده ایجاد میشود و شناسهی آن برگردانده میشود:
اگر مشتریای با نام کاربری دادهشده از قبل موجود باشد، پاسخ باید بهصورت زیر باشد:
دریافت اطلاعات یک مشتری
شناسهی مشتری بهعنوان ورودی داده میشود و اطلاعات مشتری برگردانده میشود:
اگر مشتریای با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
ویرایش اطلاعات یک مشتری
اطلاعات جدید مشتری داده میشود و پس از بهروزرسانی اطلاعات مشتری، پاسخی با کد 204
برگردانده میشود:
اگر مشتریای با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
دریافت اطلاعات سفارشات
اطلاعات همهی محصولات در قالب یک آرایه برگردانده میشود:
ایجاد سفارش
یک سفارش با اطلاعات دادهشده ایجاد میشود، مقدار موجودی محصول به اندازهی تعداد واردشده کم میشود و شناسهی سفارش برگردانده میشود:
اگر مشتری یا محصولی با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
اگر مقدار فیلد count
کوچکتر یا مساوی صفر باشد، پاسخ باید بهصورت زیر باشد:
اگر مقدار count
بزرگتر از موجودی فعلی محصول باشد، پاسخ باید بهصورت زیر باشد:
دریافت اطلاعات یک سفارش
شناسهی سفارش بهعنوان ورودی داده میشود و اطلاعات سفارش برگردانده میشود:
اگر سفارشی با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
نکات
- ممکن است چند درخواست همزمان برای خرید یک محصول به برنامه ارسال شود. این درخواستها باید بهدرستی مدیریت شوند.
- شما تنها مجاز به اعمال تغییرات در بستهی
ir.digipay.bulkshop
هستید.
آنچه باید آپلود کنید
پس از پیادهسازی موارد خواستهشده، پوشهی src
پروژه را زیپ کرده و ارسال کنید. توجه داشته باشید که فقط تغییرات اعمالشده در پوشهی src/main/java/ir.digipay.bulkshop
در نظر گرفته میشوند.
ارسال پاسخ برای این سؤال