Архитектура приложения - vsevolodkolmogorov/ads-online-backend GitHub Wiki

Описание приложения

Данный проект представляет собой платформу для перепродажи вещей, где пользователи могут создавать, просматривать и управлять объявлениями. Студенты разрабатывают бэкенд, который взаимодействует с базой данных и реализует функционал для работы с объявлениями, пользователями, комментариями и изображениями.

Основные компоненты архитектуры

1. Сервис работы с объявлениями (AdService)

Этот сервис управляет объявлениями, обеспечивая функционал для их создания, получения, обновления и удаления. Он использует DTO для передачи данных между клиентом и сервером.

Ключевые методы:

  • Преобразование объявления в DTO: getAdDTO(Ad)
  • Получение объявления по ID: getAdById(Integer)
  • Добавление нового объявления: addAd(CreateOrUpdateAdDTO, MultipartFile)
  • Получение всех объявлений: getAllAds()
  • Обновление существующего объявления: updateAd(Integer, CreateOrUpdateAdDTO)
  • Получение объявлений пользователя: getMyAds()
  • Создание объявления на основе DTO: createAdFromDTO(AdDTO)
  • Проверка авторства объявления: isAdAuthor(Integer, String)
  • Удаление объявления: deleteAd(Integer)
  • Обновление изображения объявления: updateAdImage(Integer, MultipartFile)

2. Сервис аутентификации и регистрации пользователей (AuthService)

Этот сервис управляет регистрацией и аутентификацией пользователей.

Ключевые методы:

  • Вход в систему с использованием логина и пароля: login(String, String)
  • Регистрация нового пользователя: register(RegisterDTO)

Методы возвращают булевы значения, которые указывают на успешность операции.

3. Сервис работы с комментариями (CommentService)

Сервис для работы с комментариями, предоставляющий возможности добавления, обновления, удаления и получения комментариев к объявлениям.

Ключевые методы:

  • Преобразование комментария в DTO: getCommentDTO(Comment)
  • Обновление комментария: updateComment(Integer, CreateOrUpdateCommentDTO)
  • Добавление комментария: addComment(Integer, CreateOrUpdateCommentDTO)
  • Получение списка комментариев для объявления: getComments(Integer)
  • Создание комментария на основе DTO: createCommentFromDTO(CommentDTO)
  • Проверка авторства комментария: isCommentAuthor(Integer, String)
  • Удаление комментария: deleteComment(Integer)

4. Сервис работы с изображениями (ImageService)

Сервис для сохранения и получения изображений, включая изображения объявлений и пользователей.

Ключевые методы:

  • Сохранение изображения: saveImage(MultipartFile)
  • Получение байтов изображения: getImageBytes(String)

5. Сервис работы с пользователями (UserService)

Этот сервис управляет профилями пользователей и их изображениями.

Ключевые методы:

  • Преобразование пользователя в DTO: getUserDTO(User)
  • Обновление данных пользователя: updateUser(UpdateUserDTO)
  • Получение текущего пользователя в виде DTO: getCurrentUser()
  • Обновление изображения пользователя: updateUserImage(MultipartFile)
  • Создание пользователя на основе DTO: createUserFromDTO(UserDTO)
  • Получение текущего пользователя как сущности: getCurrentUserEntity()
  • Обновление пароля пользователя: updatePassword(NewPasswordDTO)

Диаграмма деятельности Activity Diagram

jLHTJi9047xlANeE-y8bF829lFbZ0D_seL1GeqQCCV4DC5wW52eLskKACpVocwa9JLYWnXYIfJlzlldccvrkezqvQNMkpyyyGsEojE97Mk0_ePXxbChUU8hnZcY2m8moxdAFGm1ky3pqQUta3GFFk1a6gKP0hIK4nf9Yd-PuBAZW1nxuL232NKe1I6GDm1XZOylj5aFUl-FjuYUOKOea

Диаграмма компонентов приложения

jLR1hj905DttAoRi2NiNXhZm9umBeiI5YWPnPKp0YYPgGanCD2mW_a4fOeVI3hzmve-y9pXvVQ_CAvdqhQ3tpZbpxfrxfks_cGp6axSlNqIl1q-U3vuDLUVX-DLeCXmzxQXtaLAFi8R1mNv39hyf4li1EpxR6N9ex1KqIWRjr7wKrDxE7gleVNH5-43-LFYMC0JOANbn8509RKmE9g25

Диаграмма вариантов использования системы

dPLDRjD05CVtSugdh61HgKcQVh10bJW31x3IK29AWn9tXP2Syh60Iku22HQ8Kd618INrf7MSAxov4V_n49Xf78tLLMpF-_tUVBmtsH_5qJ0-UNaaZdhFOee7DEmVFe_fe3_iTUF-u5Y8g1iFXiGNNF2jFkCClnEM-fIdvdqvVCw_EMV5SrPwh4zrKeOKEX7YLTHz4HtsgC6NTX1aph91