feat(backend): Ajout complet des fonctionnalités Chat, Social, Story et Notifications

Implémentation complète de toutes les fonctionnalités backend :

## Nouvelles Fonctionnalités

### Chat (Messagerie Instantanée)
- Entities : Conversation, Message
- DTOs : ConversationResponseDTO, MessageResponseDTO, SendMessageRequestDTO
- Resources : MessageResource (endpoints REST)
- Services : MessageService (logique métier)
- Repositories : ConversationRepository, MessageRepository
- WebSocket : ChatWebSocket (temps réel)

### Social (Publications Sociales)
- Entities : SocialPost, SocialComment, SocialLike
- DTOs : SocialPostResponseDTO, CreateSocialPostRequestDTO
- Resources : SocialPostResource
- Services : SocialPostService
- Repositories : SocialPostRepository

### Story (Stories temporaires)
- Entities : Story, StoryView
- DTOs : StoryResponseDTO, CreateStoryRequestDTO
- Resources : StoryResource
- Services : StoryService
- Repositories : StoryRepository

### Notifications (Temps Réel)
- Entities : Notification
- DTOs : NotificationResponseDTO
- Resources : NotificationResource
- Services : NotificationService, PresenceService
- Repositories : NotificationRepository
- WebSocket : NotificationWebSocket (temps réel)

## Améliorations

### Users & Friendship
- Mise à jour UserResponseDTO avec nouveaux champs
- Amélioration FriendshipResource avec séparation demandes envoyées/reçues
- FriendSuggestionResponseDTO pour suggestions d'amis
- Optimisations dans UsersService et FriendshipService

### Events
- Améliorations EventsResource et EventService
- Optimisations EventsRepository

### Configuration
- Mise à jour application.properties
- Configuration docker-compose.yml
- Dockerfile pour développement

## Fichiers Modifiés
- .dockerignore, .gitignore
- README.md
- docker-compose.yml
- Configuration Maven wrapper
This commit is contained in:
dahoud
2026-01-10 10:39:58 +00:00
parent fd67140961
commit 093d04c224
60 changed files with 14652 additions and 220 deletions

View File

@@ -486,4 +486,53 @@ public class FriendshipResource {
.build();
}
}
/**
* Récupérer les suggestions d'amis pour un utilisateur.
*
* @param userId ID de l'utilisateur.
* @param limit Nombre maximum de suggestions (optionnel, par défaut 10).
* @return Liste des suggestions d'amis.
*/
@GET
@Path("/suggestions/{userId}")
@Operation(
summary = "Récupérer les suggestions d'amis",
description = "Retourne une liste d'utilisateurs suggérés comme amis potentiels basée sur les amis en commun")
@APIResponses({
@APIResponse(
responseCode = "200",
description = "Suggestions d'amis récupérées",
content =
@Content(
mediaType = MediaType.APPLICATION_JSON,
schema = @Schema(implementation = com.lions.dev.dto.response.users.FriendSuggestionResponseDTO.class))),
@APIResponse(responseCode = "404", description = "Utilisateur non trouvé"),
@APIResponse(
responseCode = "500",
description = "Erreur lors de la récupération des suggestions d'amis")
})
public Response getFriendSuggestions(
@PathParam("userId") UUID userId,
@QueryParam("limit") @DefaultValue("10") int limit) {
logger.info("[LOG] Récupération des suggestions d'amis pour l'utilisateur : " + userId);
try {
List<com.lions.dev.dto.response.users.FriendSuggestionResponseDTO> suggestions =
friendshipService.getFriendSuggestions(userId, limit);
logger.info("[LOG] " + suggestions.size() + " suggestions d'amis récupérées avec succès.");
return Response.ok(suggestions).build();
} catch (UserNotFoundException e) {
logger.error("[ERROR] Utilisateur non trouvé : " + e.getMessage());
return Response.status(Response.Status.NOT_FOUND)
.entity("{\"message\": \"Utilisateur non trouvé.\"}")
.build();
} catch (Exception e) {
logger.error(
"[ERROR] Erreur lors de la récupération des suggestions d'amis : " + e.getMessage(), e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
.entity("{\"message\": \"Erreur lors de la récupération des suggestions d'amis.\"}")
.build();
}
}
}