Este proyecto consiste en un microservicio que se encarga de la gestión de la mensajería física de paquetes. Está desarrollado en Java 11 con el framework Spring Boot 2.7.11 y cuenta con conexión a una base de datos MySQL.
El microservicio proporciona diferentes operaciones CRUD para las entidades de Paquete, Cliente Empleado, implementadas utilizando el patrón de diseño DAO para Repository y siguiendo los principios SOLID. Además, se han desarrollado querys personalizados de JPA para mejorar la eficiencia y la velocidad de acceso a la base de datos.
El proyecto también incorpora patrones de diseño como de Chain of Responsibility, Dto, Dao, Template design.
El patrón Chain of Responsibility se utiliza para la validación de entradas, lo que permite pasar solicitudes a través de una cadena de manejadores, asegurando que las entradas sean válidas antes de que se realice cualquier operación de almacenamiento en la base de datos.
En resumen, este microservicio de mensajería física de paquetes es una solución eficiente y escalable para la gestión de la mensajería física de paquetes, con operaciones CRUD, querys personalizados de JPA, patrones de diseño, principios SOLID.
Para acceder a la documentación de la API 💻, haz clic en enlace Swagger
👷 Tecnologias utlizadas
- Java 11
- Spring boot 2.7.11
- Con concexión a la base de datos de MYSQL ( com.mysql:mysql-connector-j:8.0.32)
- Con Data Jpa 2.7.11
- Con Junit 4 version 2.7.11
- Mokito para pruebas unitarias, como interceptor y emulador de base de datos
- Con Swagger 3.0.0
- Queryz personalizados de Jpa
- Spring Security
- Inyección de dependencias
- Maven como gestor de dependencias
- Patrones DTO y Diseño DAO para Repository
Chain of Responsibility es un patrón de diseño de comportamiento que te permite pasar solicitudes a lo largo de una cadena de manejadores validando sus de entradas.
- Customer
- Employeer
- Package
- SendPackage
Entity | EndPoint | HTTP |
---|---|---|
packages | /mensajeria/v1/packages | GET |
packages | /mensajeria/v1/packages/{id} | GET |
packages | /mensajeria/v1/packages | POST |
packages | /mensajeria/v1/packages | PUT |
packages | /mensajeria/v1/packages/{id} | DELETE |
{
"id": 0,
"pesoPaquete": 0,
"typePackage": "GRANDE",
"valorPaquete": 0
}
Entity | EndPoint | HTTP |
---|---|---|
Customer | /mensajeria/v1/customers | GET |
Customer | /mensajeria/v1/customers/{id} | GET |
Customer | /mensajeria/v1/customers | POST |
Customer | /mensajeria/v1/customers | PUT |
Customer | /mensajeria/v1/customers/{id} | DELETE |
{
"nombre": "Juan",
"apellido": "Pérez",
"email": "juan.perez@gmail.com",
"telefono": "555-4321"
}
Entity | EndPoint | HTTP |
---|---|---|
Employee | /mensajeria/v1/employees | GET |
Employee | /mensajeria/v1/employees/{id} | GET |
Employee | /mensajeria/v1/employees | POST |
Employee | /mensajeria/v1/employees | PUT |
Employee | /mensajeria/v1/employees/{id} | DELETE |
{
"cedula": 1212,
"name": "javier enrique",
"lastName": "urgo",
"numeroCelular": 1212121,
"correoElectronico": "pedro@string.com",
"direccionResidencia": "los colores",
"ciudad": "medellin",
"antiguedad": "2022-04-17",
"tipoSangreRH": "o+",
"typeEmpleoyer": "CONTADOR"
}
Entity | EndPoint | HTTP |
---|---|---|
SendPackage | /mensajeria/v1/SendPackage | GET |
SendPackage | /mensajeria/v1/employees/{id} | GET |
SendPackage | /mensajeria/v1/SendPackage | POST |
SendPackage | /mensajeria/v1/SendPackage | PUT |
SendPackage | /mensajeria/v1/SendPackage/{id} | DELETE |
{
"cedulaCliente": 3254330,
"celular": 3099989870,
"ciudadDestino": "Medellin",
"ciudadOrigen": "Bogota",
"direccionDestino": "los andes amedro",
"nombrePersonaRecibe": "san juaquin",
"pesoPaquete": 50,
"valorPaquete": 30000
}