Files
portalweb-api/README.md
2025-04-02 18:18:13 -03:00

158 lines
4.6 KiB
Markdown

# 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