/laravel_diploma

:credit_card::computer: Shopping platform app with many sellers, discounts, admin panel, import

Primary LanguagePHP

Дипломная работа PHP разрабочик с 0 до Pro Часть 3

1. Описание проекта


Разработака интернет-магазина, агрегатора товаров различных продавцов. Проект разработан на фреймворке Laravel (Sail). Для построения приложения использовался сервис-репозиторный подход. Проект разрабатывался с 15 августа 2021 года по 7 декабря 2021 года. Все участники выполняли задачи дипломного проекта в условиях полной занятости на основной работе.

Team-lead: mvsvolkov

Команда:

2. Установка приложения


Для запуска приложения необходим docker и docker-compose

Создаём alias для команды sail:

alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

Запускаем контейнер в фоновом режиме:

sail up &

Устанавливаем зависимости composer:

sail composer install

Устанавливаем зависимости npm:

sail npm install

Компилируем скрипты:

sail npm run dev

Также в проекте есть устновочный скрипт, который выполняет описанные комманды:

./install.sh

После установки необходимо выполнить миграции и загрузить демо-данные:

sail artisan migrate
sail artisan db:seed \\Database\\Seeders\\DemoDataSeeders\\DemoDataSeeder

3.1 Модель хранения данных


Первая моя задача - сделать схему хранения данных, по ходу проекта данная схема изменилась:

Alt text

В проекте изначально планировалось создать следующие модели:
  • AdminSettings
  • Banner
  • Category
  • Discount (Полиморфная связь многие ко многим через таблицу discountable, модели: Category, Product)
  • Delivery
  • Feedback
  • Image (Связь один к одному, модели: Seller, User, Category, Banner, Manufacturer; Связь один ко многим и связь один к одному для главного изображения, модель: Product)
  • Order
  • OrderItem
  • Payment
  • Product
  • Review
  • Seller
  • User
  • ViewedProduct
  • Manufacturer

3.2 Cтруктура URL


Вторая задача - создание структуры URL, впоследствии структура была также изменена:
Раздел Страница Описание HTTP метод Route name URL Комментарий
Главная Главная страница Главный баннер и категории товаров GET / banners -
Каталог Перечень товаров Каталог, популярные товары, скидки GET /products/ catalog.index -
Каталог Детальная страница Просмотр страницы товара GET /products/{slug} products.show -
Каталог Детальная страница Форма добавления отзыва GET /products/{slug}/reviews reviews.create -
Каталог Детальная страница Добавление нового отзыва POST /products/{slug}/reviews reviews.store -
Каталог Детальная страница Сравнение товаров GET /products/comparison comparison id сравниваемых товаров добавляются в сессию и выгружаются из неё при сравнении
Страница о продавце Детальная страница Просмотр страницы о продавце GET /sellers/{id} sellers.show -
Страница о скидках Перечень скидок Перечень скидок всех товаров GET /discounts discounts.index -
Страница о скидках Детальная страница Просмотр страницы скидки GET /discounts/{id} discounts.show -
Оформление заказа Детальная страница Редактирование корзины GET /cart carts.edit -
Оформление заказа Детальная страница Обновление корзины PATCH /cart carts.update -
Оформление заказа Детальная страница Удаление корзины DELETE /cart carts.destroy удаление корзины из сессии
Оформление заказа Пошаговая форма заказа Заполнение формы GET /orders orders.create -
Оформление заказа Пошаговая форма заказа Нажатие кнопки "Оплатить" POST /orders orders.store Создание нового заказа, запись корзины в БД в order_items
Оформление заказа Детальная страница оплаты Редактирование формы опалаты(счёт, способ) GET /orders/{id}/checkin payments.create -
Оформление заказа Детальная страница оплаты Нажатие кнопки "Оплатить" POST /orders/{id}/checkin payments.store -
Личный кабинет Детальная страница Просмотр кабинета GET /account account.show -
Личный кабинет Детальная страница Редактирование профиля GET /account/profile account.edit -
Личный кабинет Детальная страница Обновление профиля PATCH /account/profile account.update -
Личный кабинет Детальная страница История просмотров GET /account/viewed-products account.viewed-products -
Личный кабинет Детальная страница История заказов GET /account/orders-history account.order-history -
Контакты Детальная страница Страница с контактами и формой обратной связи GET /feedbacks feedbacks.create -
Контакты Детальная страница Отправка формы обратной связи POST /feedbacks feedbacks.store -
О нас Детальная страница Статичная страница с историей компнаии GET /about about -
Административный раздел Пользователи Управление пользователями: CRUD GET / POST / PATCH / DELETE /admin/users/... admin.users. ... -
Административный раздел Товары Управление товарами: CRUD GET / POST / PATCH / DELETE /admin/products/... admin.products. ... -
Административный раздел Заказы Управление заказами: CRUD GET / POST / PATCH / DELETE /admin/orders/... admin.orders. ... -
Административный раздел Категории Управление категориями: CRUD GET / POST / PATCH / DELETE /admin/categories/... admin.categories. ... -
Административный раздел Отзывы Управление отзывами: CRUD GET / POST / PATCH / DELETE /admin/reviews/... admin.reviews. ... -
Административный раздел Баннеры Управление баннерами: CRUD GET / POST / PATCH / DELETE /admin/banners/... admin.banners. ... -
Административный раздел Скидки Управление скидками: CRUD GET / POST / PATCH / DELETE /admin/discounts/... admin.discounts. ... -
Административный раздел Обращения Просмотр обращений GET /admin/feedbacks admin.feedbacks.index -
Административный раздел Форма проведения импорта Выбор параметорв импорта GET /admin/import admin.import -
Административный раздел Форма проведения импорта Нажатие на кнопку "Запустить импорт" GET /admin/start-import admin/start-import -

3.3 Разработка модели сервисов


Третья моя задача - разработка перечня предполагаемых сервисов и репозиториев, в итоговой версии этот перечень изменился:
Model DB table Services Repository
AdminSettings admin_settings AdminSettingsService AdminSettingsRepository
Banner banners - BannerRepository
Category categories - CategoryRepository
Delivery delivery DeliveryCostService DeliveryRepository
Discount discounts - DiscountRepository
Feedback feedbacks - FeedbackRepository
Image images - ImageRepository
Order orders - OrderRepository
OrderItem order_item AddToCartService
GetCartService
OrderItemRepository
Payment payments PayOrderService PaymentRepository
Product products OfferOfTheDayService
CompareProductsService
ProductDiscountService
ImportProductService
ProductRepository
Review reviews AddReviewService ReviewRepository
Seller sellers ImportSellerService SellerRepository
User users - UserRepository
ViewedProduct viewed_products ViewedProductsService ViewedProductsRepository
Manufacturer manufacturers - ManufacturerRepository

3.4 Работа по остальным задачам в видео-записи защиты диплома


Дипломная работа