O objetivo desse projeto é simular um ambiente real de processamento de dados de venda. O software pode ser entendido em 3 partes distintas.
Nessa fase, vendas simuladas são adicionadas no banco de dados com a flag Processado = false
. A dinâmica pode ser observada no arquivo Dominio.Modelo.Venda
.
- São criadas de 100 a 500 vendas.
- Os dados de venda são adicionados na tabela
dbo.Venda
.
Cada venda possui:
- Status processado
- Data da venda
- Valor da venda
- ID do vendedor
- Enum da forma de pagamento
Nessa etapa, os dados de venda com Processado = false
são recuperados do banco de dados. Aplica-se a seguinte regra de negócio:
- Vendedores bronze recebem um lucro de 10% no valor de cada venda.
- Vendedores prata recebem um lucro de 20% no valor de cada venda.
- Vendedores ouro recebem um lucro de 30% no valor de cada venda.
O cálculo é realizado no arquivo Utils.Calculos.CalculoLucro(...)
. O teste para esse cálculo está no arquivo TestesUnitarios.TesteCalculoLucro(...)
. Após o cálculo, a flag Processado
é atualizada para true
, indicando que a venda foi processada. A atualização ocorre no banco de dados e está descrita no arquivo ProcessoCalculoLucroVendedor.Servicos.ServicoVenda.Atualizar(...)
.
Após o processamento, uma mensagem é enviada para a fila ProcessoCalculo
contendo informações sobre quantos dados foram processados e o GUID da operação.
Ao finalizar o processo, tudo se repete por recursão, simulando um ambiente de vendas que funciona 24 horas por dia. A recursão está em ProcessoCalculoLucroVendedor.Program.IniciarSimulacao(...)
.
-
Dotnet 7.0.1 SDK
-
IDE - Visual Studio 2022 (sugestão)
-
RabbitMQ
- Erlang: Download Erlang
- RabbitMQ: Download RabbitMQ
-
Instalar dependências declaradas no projeto
- Entity Framework, Entity Design, RabbitMQ client, etc.
Logs no console:
Tabela de lucro:
Tabela de venda:
Tabela de vendedor:
Mensagens no rabbitMq:
-Fila:
-Mensagem: