Skip to content

About This class project was developed during the course Java Springboot JPA - Formação Desenvolvedor Moderno by DevSuperior company.

Notifications You must be signed in to change notification settings

Sammy192/classProject_dsCommerce_v2_api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Final - Sistema de Comércio Eletrônico DSCommerce

Projeto JAVA Springboot JPA

image image

Java Spring Postgres JWT

Este repositório contém o projeto final do treinamento Java Spring Professional ministrado pelo professor Nelio Alves, oferecido pela plataforma DevSuperior.

Este projeto visa criar uma API RESTful de comércio eletrônico usando tecnologias Java, Spring Boot, Spring Data JPA, Bean Validation, PostgresSQL como banco de dados, Spring Security e JWT para controle de autenticação.

Visão Geral do Sistema

O sistema desenvolvido neste projeto é uma aplicação completa de comércio eletrônico, abrangendo cadastros de usuários, produtos e categorias. Cada usuário, seja cliente ou administrador, tem sua própria área de interação com o sistema. Os administradores têm acesso à área administrativa para gerenciar usuários, produtos e categorias.

Testes implementados usando JUNI, mockMVC e cobertura de testes com Jacoco Report

Funcionalidades Principais

  • Cadastro e autenticação de usuários com diferentes papéis (cliente, administrador).
  • Catálogo de produtos com capacidade de filtragem por nome.
  • Adição, remoção e alteração de itens no carrinho de compras.
  • Registro de pedidos com status dinâmicos (aguardando pagamento, pago, enviado, entregue, cancelado).
  • Área administrativa para gerenciamento de usuários, produtos e categorias.

Documento de requisitos

Documento de requisitos pode ser acessado aqui -> Documento de Requisitos

Modelo de classes

image

Modelo de camadas

image

image

Como executar este projeto

Pré-requisitos:
Passos:
  1. Clone o repositório
    Abra o terminal e navegue até o diretório onde deseja armazenar o projeto. Clone o reposiório.

  2. Abra o projeto no IntelliJ IDEA ou STS:

  • IntelliJ IDEA: Abra o IntelliJ IDEA e selecione "Open" no menu principal. Navegue até o diretório do projeto e selecione o arquivo pom.xml.
  • Spring Tools Suite: Abra o STS e selecione "Import...​" > "Existing Maven Projects". Navegue até o diretório do projeto e selecione o arquivo pom.xml.
  1. Baixe as dependências do Maven:
    Aguarde até que o IntelliJ ou STS baixe automaticamente as dependências do Maven. Isso pode levar algum tempo, dependendo da conexão com a internet.

  2. Execute o projeto:
    No projeto, navegue até o arquivo src/main/java/br/com/guilchaves/dscommerce/DscommerceApplication.java. Este arquivo contém a classe principal da aplicação Spring Boot.
  • IntelliJ IDEA: Clique com o botão direito do mouse no arquivo DscommerceApplication.java e escolha "Run DscommerceApplication".
  • Spring Tools Suite: Clique com o botão direito do mouse no projeto no navegador de projetos e escolha "Run As" > "Spring Boot App".
  1. Verifique a Execução:
    Após a execução bem-sucedida, abra um navegador da web e acesse http://localhost:8080 (ou a porta configurada, se diferente) para verificar se a aplicação está em execução.
    Acesse http://localhost:8080/h2-console para utilizar o console do H2 database.

Para testar a API no postman:

Para importar e exportar dados no postman, consulte a documentação oficial aqui.
Download da coleção e variáveis de ambiente:

Endpoints da API:

POST /login - Autenticação na API.

GET /categories - Retorna lista de categorias dos produtos.

GET /orders/{id} - Retorna pedido do usuário por id - clientes não podem acessar pedidos de outros clientes (requer privilégio ADMIN ou OPERATOR).

POST /orders - Adiciona novo pedido para cliente logado.

GET /products - Retorna lista de produtos.

GET /products/{id} - Retorna produto por id.

POST /products - Adiciona novo produto (requer privilégio ADMIN).

PUT /products/{id} - Atualiza dados de produto já existente (requer privilégio ADMIN).

DELETE /products/{id} - Remove produto da base de dados (requer privilégio ADMIN).

GET /users/me - Retorna dados do usuário logado (requer privilégio ADMIN ou OPERATOR).

EndPoints corpo:

Realiza o insert de um novo produto POST - http://localhost:8080/products No body:

{
    "name": "Meu novo produto",
    "description": "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Qui ad, adipisci illum ipsam velit et odit eaque reprehenderit ex maxime delectus dolore labore, quisquam quae tempora natus esse aliquam veniam doloremque quam minima culpa alias maiores commodi. Perferendis enim",
    "imgUrl": "https://raw.githubusercontent.com/devsuperior/dscatalog-resources/master/backend/img/1-big.jpg",
    "price": 200.0
}

Autenticação

A API utiliza o Spring Security para controle de autenticação. Os seguintes papéis estão disponíveis:

OPERATOR -> Papel padrão para usuários autenticados.
ADMIN -> Papel de administrador para gerenciar produtos (adicionar, atualiza, remove produtos). 

Para acessar os endpoints protegidos como um usuário ADMIN, forneça as credenciais de autenticação adequadas no cabeçalho da requisição.

Pode ser baixado o projeto e subir localmente após importar o projeto em uma IDE de sua preferência.

Releases

No releases published

Packages

No packages published

Languages