Giter Club home page Giter Club logo

desafio-softexpert's Introduction

Desafio - SoftExpert - Java Pleno

Repositório para desafio técnico da SoftExpert para vaga de desenvolvedor Java Pleno.

Tecnologias Utilizadas:

  • Back-end: Spring Boot, Java 11, Lombok
  • Front-end: Angular 12

Consumo do Serviço - api/v1/food/processarPedido - POST


Exemplo de Body para a requisição (JSON):

{ "valorFrete": 8.0, "desconto": 20.0, "acrescimo": 0, "tipoDesconto": "INTEIRO", "tipoAcrescimo": "INTEIRO", "tipoPagamento": "PIX", "pedidos": [ { "itensPedido": [ { "tituloItem": "Hamburguer", "valorItem": 40.0 }, { "tituloItem": "Sobremesa", "valorItem": 2.0 } ], "nomeSolicitante": "Joao" }, { "itensPedido": [ { "tituloItem": "Sanduiche", "valorItem": 8.0 } ], "nomeSolicitante": "Maria" } ] }

Exemplo de Response (JSON):

[ { "itensPedido": [ { "tituloItem": "Hamburguer", "valorItem": 40.0 }, { "tituloItem": "Sobremesa", "valorItem": 2.0 } ], "nomeSolicitante": "Joao", "valorFinalParaPagar": "31.92", "urlPix": "https://pix.sejaefi.com.br/cob/pagar/{code}" }, { "itensPedido": [ { "tituloItem": "Sanduiche", "valorItem": 8.0 } ], "nomeSolicitante": "Maria", "valorFinalParaPagar": "6.08", "urlPix": "https://pix.sejaefi.com.br/cob/pagar/{code}" } ]

Cobertura de Testes (IDE Intellij IDEA)

Obs: Praticamente todas as classes foram testadas, desde DTO's, classes de apoio (Helpers), Services, Controller e Classes de Exception.

Utilizados nos testes: JUnit, Mockito e AssertJ.

Captura de tela 2024-03-05 162322 Captura de tela 2024-03-05 162017

Documentação da API - Swagger

image

Configuração de CORS

image

Video demonstrativo da requisição através do Front-end

softexpert-gif2

Banco Digital Utilizado

  • O banco digital utilizado nesta aplicação foi o Efí: https://dev.efipay.com.br/. O Serviço retorna um link que exibe uma pagina web contendo tanto o QrCode do PIX, como também a opção de compartilhar o código via WhatsApp.

  • É imprescindível que, durante a requisição ao serviço da Efí, seja informado uma chave PIX válida registrada nesse banco. Outro ponto é que se faz necessário a criação de um certificado na plataforma da Efí, e que deve ser utilizado na sua aplicação back-end para poder assim consumir o serviço.

  • Também é necessário ter em posse as informações de Client ID e Client Secret que também são disponibilizados na plataforma da Efí.

  • A aplicação está preparada para receber descontos e acrescimos tanto em valores inteiros, por exemplo: R$ 20.00, como também em porcentagem. Foram criados ENUM's para esse controle e no front-end existe um input do tipo select onde é possível alterar entre essas opções.

image image

Exemplo dos Links de Pagamentos Gerados

pix1_tarja pix2_tarja

Exemplo de Requisição com mais de duas pessoa (Um dos requisitos do desafio)

  • Obs: O print do exemplo foi executado no Insomnia, mas o front-end também está preparado para executar a requisição com quantas pessoas forem necessárias

image

Informações Adicionais

  • O método de pagamento implementado nessa ocasião foi o de PIX, mas a aplicação está pronta para ser integrada com demais outras através um controlador baseado em ENUM.
    Obs: No print com o trecho de código do 'switch', existe uma opção que está comentada somente para exemplicar como ficaria o código quando houvessem novas formas de pagamento disponível.

image image

  • Foi utilizando a tipagem para os dados numéricos como BigDecimal por se tratar de uma aplicação que resulta em uma operação financeira. O BigDecimal possui vantagens no quisito de precisão, arredondamento e evita erros que podem ocorrer ao se utilizar double, por exemplo.
  • Durante o desenvolvimento do código foram levadas em considerações as convenções de código limpo, como: Nomes intuitivos e precisos para variáveis, métodos e classes; Reaproveitamento de código; Divisão de Responsabilidades, etc.
  • Foi também considerado padrões de qualidade de código (Sonar Lint, SonarQube). Obedecendo por exemplo: Tamanho máximo de linha de código, Remoção de Imports não utilizados, Cobertura de Testes e etc.
  • O projeto do front-end é apenas algo básico somente para afetuar a requisição via browser (assim como descrito no desafio técnico).

desafio-softexpert's People

Contributors

raulcorreia9 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.