Архитектура приложения - 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)