# Portal Juru API API para gerenciamento de pedidos, pagamentos e consultas de dados do sistema Portal Juru. ## 🚀 Tecnologias - [NestJS](https://nestjs.com/) - Framework Node.js - [TypeORM](https://typeorm.io/) - ORM para banco de dados - [Swagger](https://swagger.io/) - Documentação da API - [Oracle Database](https://www.oracle.com/database/) - Banco de dados - [Redis](https://redis.io/) - Cache em memória ## 📋 Pré-requisitos - Node.js (v16 ou superior) - Oracle Database - Redis - npm ou yarn ## 🔧 Instalação 1. Clone o repositório: ```bash git clone https://github.com/seu-usuario/portaljuru-api.git cd portaljuru-api ``` 2. Instale as dependências: ```bash npm install # ou yarn install ``` 3. Configure as variáveis de ambiente: ```bash cp .env.example .env # Edite o arquivo .env com suas configurações ``` 4. Inicie o servidor: ```bash npm run start:dev # ou yarn start:dev ``` ## 📚 Documentação da API A documentação completa da API está disponível em `/api` quando o servidor estiver rodando. ### Endpoints Principais #### Consulta de Dados - `GET /api/v1/data-consult/stores` - Lista todas as lojas - `GET /api/v1/data-consult/sellers` - Lista todos os vendedores - `GET /api/v1/data-consult/billings` - Retorna informações de faturamento - `GET /api/v1/data-consult/customers/:filter` - Filtra clientes - `GET /api/v1/data-consult/products/:filter` - Busca produtos filtrados #### Pedidos e Pagamentos - `GET /api/v1/orders-payment/orders/:id` - Lista pedidos de uma loja - `GET /api/v1/orders-payment/orders/:id/:orderId` - Busca pedido específico - `GET /api/v1/orders-payment/payments/:id` - Lista pagamentos de um pedido - `POST /api/v1/orders-payment/payments/create` - Cria novo pagamento - `POST /api/v1/orders-payment/invoice/create` - Cria nova fatura ## 🛠️ Estrutura do Projeto ``` src/ ├── core/ # Configurações e utilitários core │ ├── configs/ # Configurações do projeto │ ├── database/ # Configuração do banco de dados │ └── constants/ # Constantes do sistema ├── data-consult/ # Módulo de consulta de dados │ ├── dto/ # Data Transfer Objects │ ├── controllers/ # Controladores │ └── services/ # Serviços ├── orders-payment/ # Módulo de pedidos e pagamentos │ ├── dto/ # Data Transfer Objects │ ├── controllers/ # Controladores │ └── services/ # Serviços └── orders/ # Módulo de pedidos ├── modules/ # Módulos ├── controllers/ # Controladores ├── services/ # Serviços └── repositories/ # Repositórios ``` ## 🔐 Autenticação A API utiliza autenticação JWT. Para acessar os endpoints protegidos, inclua o token no header: ``` Authorization: Bearer seu-token-jwt ``` ## 📦 DTOs (Data Transfer Objects) ### OrderDto ```typescript { createDate: Date; // Data de criação do pedido storeId: string; // ID da loja orderId: number; // ID do pedido customerId: string; // ID do cliente customerName: string; // Nome do cliente sellerId: string; // ID do vendedor sellerName: string; // Nome do vendedor billingId: string; // ID da forma de pagamento billingName: string; // Nome da forma de pagamento planId: string; // ID do plano de pagamento planName: string; // Nome do plano de pagamento amount: number; // Valor total do pedido installments: number; // Número de parcelas amountPaid: number; // Valor total pago } ``` ### PaymentDto ```typescript { orderId: number; // ID do pedido payDate: Date; // Data do pagamento card: string; // Número do cartão installments: number; // Número de parcelas flagName: string; // Nome da bandeira type: string; // Tipo de pagamento amount: number; // Valor do pagamento userId: string; // ID do usuário nsu: string; // NSU da transação auth: string; // Código de autorização } ``` ## 🧪 Testes Para executar os testes: ```bash npm run test # ou yarn test ``` ## 📝 Licença Este projeto está sob a licença MIT. Veja o arquivo [LICENSE](LICENSE) para mais detalhes. ## 🤝 Contribuição 1. Faça o fork do projeto 2. Crie uma branch para sua feature (`git checkout -b feature/AmazingFeature`) 3. Commit suas mudanças (`git commit -m 'Add some AmazingFeature'`) 4. Push para a branch (`git push origin feature/AmazingFeature`) 5. Abra um Pull Request