Git Product home page Git Product logo

ada_1126_compra_estoque_exemplo's Introduction

Serviço de compra e estoque

Passos para funcionar

Antes de executar o projeto é necessário executar o arquivo docker-compose.yml. Este arquivo contém o recurso necessário para iniciar o banco de dados, como também o RabbitMQ.

Caso não seja possível iniciar o docker é necessário instalar tanto o postgres quanto o RabbitMQ separadamente.

Para isto:

Para o postgres, sem o uso do docker, ainda é necessário criar o banco de dados bem como o usuário da aplicação.

CREATE ROLE estoque LOGIN PASSWORD 'estoque';
CREATE ROLE compra LOGIN PASSWORD 'compra';

CREATE DATABASE estoque;
CREATE DATABASE compra;

ALTER DATABASE estoque OWNER TO estoque;
ALTER DATABASE compra OWNER TO compra;

GRANT ALL ON DATABASE estoque TO "estoque";
GRANT ALL ON DATABASE compra TO "compra";

Iniciando os serviços

RabbitMQ

Com o RabbitMQ funcionado localmente (http://localhost:15672/), caso as filas ainda não tenham sido criadas:

  • remover-itens-estoque
  • retorno-remover-itens-estoque

Microserviços

Os serviços estão disponíveis

Ao rodar o sistema de estoque pela primeira vez será possível notar que ele insere uma série de itens no estoque. Isto é possível através da classe ItemRepositoryLoader

Conhecendo os serviços

Listando aqui os métodos mais utilizados entre os serviços

VendaService

Adicionar ao carrinho

Vai adicionar os itens a um carrinho. Caso o id do carrinho não seja informado, o sistema vai gerar um automaticamente. Para adicionar mais itens ao carrinho já existente é necessário informar o seu identificador.

Como retorno este método retorna o identificador do carrinho, bem como os itens relacionados a ele.

Exemplo:

Requisição:

{
  "skuId": "Z002",
  "valorUnitario": 200,
  "quantidade": 5

}

Resposta:

{
  "id": "1e3b3a9f-f3aa-46e5-8877-d57213735b9b",
  "itens": [
    {
      "skuId": "Z0002",
      "valorUnitario": 200,
      "quantidade": 5
    }
  ],
  "status": "INICIAL"
}

Realizar venda

Vai salvar a venda no banco de dados do sistema, deixando-a com o status de pendente, uma vez que a compra vai ser analisada pelo estoque. Ela recebe um parametro booleano para definir se a comunicação com o serviço de estoque vai ser por meio de REST ou AMQP

Requisição

{
  "cliente": {
    "id": "cb7961ec-7de5-11ee-b962-0242ac120002"
  },
  "carrinho-id": "1e3b3a9f-f3aa-46e5-8877-d57213735b9b"
}

Resposta

{
  "id": "1e3b3a9f-f3aa-46e5-8877-d57213735b9b",
  "itens": [
    {
      "skuId": "Z001",
      "valorUnitario": 200,
      "quantidade": 5
    }
  ],
  "status": "PENDENTE"
}

Cenários de erro:

  • Enviar um item que não existe no estoque
  • Enviar uma quantidade que não existe no estoque

Estoque service

Remover itens

Vai remover os itens de acordo com a quantidade e o sku dos itens informados. Os itens só são removidos se nenhum dos itens contiver erros Requisição:

[
  {
    "skuId": "string",
    "quantidade": 0,
    "compraId": "string"
  }
]

Resposta:

{
  "idRemocao": "string",
  "itemsRemovidos": [
    "string"
  ]
}

Cenários de erro:

  • Enviar um item que não existe no estoque
  • Enviar uma quantidade que não existe no estoque

Listar itens

Método get que lista os itens e as quantidades disponíveis existentes no estoque

[
 {
   "skuId": "string",
   "quantidade": 0,
   "compraId": "string"
 }
]

ada_1126_compra_estoque_exemplo's People

Contributors

masousa 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.