Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Бекенд для приложения онлайн-аптеки

Это групповой проект, выполненный в рамках командной разработки коммерческого REST API для онлайн-аптеки на языке Go.

🌎 Ссылка на репозиторий проекта

Функционал сайта

  • Управление каталогом лекарств, категорий и подкатегорий
  • Работа с корзиной пользователя (с фиксацией цен в момент добавления)
  • Оформление заказов на основе корзины покупателя
  • Гибкая система промокодов (расчет скидок в % и фиксированных суммах)
  • Поэтапная оплата заказов несколькими платежами
  • Система отзывов и оценок к лекарствам с проверкой факта покупки

Запуск проекта

Для запуска проекта локально вам необходимо установить зависимости:

go mod tidy

После настройки конфигурационного файла базы данных PostgreSQL (.env), запустите сервер командой:

go run main.go

Технологии проекта

Github Git PostgresSQL Gin Godotenv Gorm

Команда проекта

В этом проекте я выполнял следующие задачи:

  • Разработка модуля Промокодов: спроектировал логику валидации кодов по датам, активности и лимитам использования, а также перерасчет полей discount_total и final_price заказа.
  • Разработка финансового модуля (Платежи): реализовал поддержку нескольких транзакций для одного заказа, контроль переплаты и автоматическое обновление статуса заказа на paid при полной оплате.
  • Разработка модуля Отзывов: написал функционал добавления/редактирования/удаления отзывов, динамический пересчет среднего рейтинга лекарства (avg_rating) и интеграцию строгой бизнес-валидации.

В рамках своей зоны ответственности я полностью изолировал SQL-запросы на уровне слоя repository для сущностей платежей, промокодов и отзывов, а также подготовил соответствующие DTO-структуры для безопасной записи и обновления данных.

Для выполнения поставленных задач я использовал следующие библиотеки и подходы:

  • Gin Gonic — для построения чистых REST-эндпоинтов, обработки HTTP-статусов и валидации входящего JSON.
  • Интерфейсы в Go — для связывания слоев transport, services и repository, что обеспечивает слабую связанность компонентов.
  • Data Transfer Objects (DTO) — для входящих запросов на создание и частичное обновление (PATCH) сущностей, чтобы защитить таблицы БД от сквозной перезаписи.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages