158 lines
4.6 KiB
Markdown
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
|