2.6 KiB
2.6 KiB
💬 CONCEPT: MESSAGE
📌 Vue d'ensemble
Le concept MESSAGE gère la messagerie interne entre utilisateurs avec catégorisation et priorités.
Importance: ⭐⭐ (Concept utile)
🗂️ Fichiers concernés
Entités JPA
| Fichier | Description |
|---|---|
Message.java |
Entité principale message |
TypeMessage.java |
Enum types (NORMAL, CHANTIER, MAINTENANCE, URGENT, etc.) |
PrioriteMessage.java |
Enum priorités |
Services
| Fichier | Description |
|---|---|
MessageService.java |
Service métier messages |
Resources
| Fichier | Description |
|---|---|
MessageResource.java |
API REST messages |
📊 Modèle de données
@Entity
@Table(name = "messages")
public class Message extends PanacheEntityBase {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private UUID id;
@ManyToOne
@JoinColumn(name = "expediteur_id", nullable = false)
private User expediteur;
@ManyToOne
@JoinColumn(name = "destinataire_id", nullable = false)
private User destinataire;
@Column(name = "sujet", nullable = false)
private String sujet;
@Column(name = "contenu", length = 5000, nullable = false)
private String contenu;
@Enumerated(EnumType.STRING)
@Column(name = "type")
private TypeMessage type;
@Enumerated(EnumType.STRING)
@Column(name = "priorite")
private PrioriteMessage priorite;
@Column(name = "lu")
private Boolean lu = false;
@Column(name = "date_envoi")
private LocalDateTime dateEnvoi;
@Column(name = "date_lecture")
private LocalDateTime dateLecture;
}
🔌 API REST
Endpoints
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /api/v1/messages |
Liste messages |
| GET | /api/v1/messages/{id} |
Détails |
| POST | /api/v1/messages |
Envoyer |
| PUT | /api/v1/messages/{id}/lire |
Marquer comme lu |
| DELETE | /api/v1/messages/{id} |
Supprimer |
| GET | /api/v1/messages/recus |
Messages reçus |
| GET | /api/v1/messages/envoyes |
Messages envoyés |
| GET | /api/v1/messages/non-lus |
Messages non lus |
💻 Exemples
Envoyer un message
curl -X POST http://localhost:8080/api/v1/messages \
-H "Content-Type: application/json" \
-d '{
"destinataireId": "user-uuid",
"sujet": "Livraison matériel",
"contenu": "La livraison de ciment est prévue demain à 9h",
"type": "CHANTIER",
"priorite": "NORMALE"
}'
Dernière mise à jour: 2025-09-30
Version: 1.0