Compare commits
3 Commits
develop
...
c667bfc35a
| Author | SHA1 | Date | |
|---|---|---|---|
| c667bfc35a | |||
| f9bbe50bb7 | |||
| d618858629 |
@@ -11,5 +11,5 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Chamar Webhook do Coolify
|
- name: Chamar Webhook do Coolify
|
||||||
run: |
|
run: |
|
||||||
curl -X GET "${{ secrets.DUCK_WEBHOOK }}" \
|
curl -X GET "https://coolify.stackpanel.com.br/webhooks/source/gitea/events/manual" \
|
||||||
-H "Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}"
|
-H "Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}"
|
||||||
13
pom.xml
13
pom.xml
@@ -10,7 +10,7 @@
|
|||||||
</parent>
|
</parent>
|
||||||
<groupId>br.com.stackpanel</groupId>
|
<groupId>br.com.stackpanel</groupId>
|
||||||
<artifactId>duck-api</artifactId>
|
<artifactId>duck-api</artifactId>
|
||||||
<version>0.3.3-BETA</version>
|
<version>0.2.0-BETA</version>
|
||||||
<name/>
|
<name/>
|
||||||
<description/>
|
<description/>
|
||||||
<url/>
|
<url/>
|
||||||
@@ -43,17 +43,6 @@
|
|||||||
<version>1.0.0</version>
|
<version>1.0.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-amqp</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-amqp-test</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
package br.com.stackpanel.duck_api.config;
|
|
||||||
|
|
||||||
import org.springframework.amqp.core.Queue;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
import static br.com.stackpanel.duck_api.entity.enums.QueueNames.QUEUE_NOTIFICATION_CAD;
|
|
||||||
import static br.com.stackpanel.duck_api.entity.enums.QueueNames.QUEUE_NOTIFICATION_ERROR;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public class RabbitConfig {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public Queue queueNotificationError() {
|
|
||||||
return new Queue(QUEUE_NOTIFICATION_ERROR.label, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public Queue queueNotificationCad() {
|
|
||||||
return new Queue(QUEUE_NOTIFICATION_CAD.label, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -35,13 +35,10 @@ public class Product {
|
|||||||
@Column(name = "nomplt")
|
@Column(name = "nomplt")
|
||||||
private String nomePlataforma;
|
private String nomePlataforma;
|
||||||
|
|
||||||
@Column(name = "lnkprd")
|
|
||||||
private String linkProduto;
|
|
||||||
|
|
||||||
public Product() {
|
public Product() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Product(Long codigoProduto, String nomeProduto, String descricaoProdutos, BigDecimal precoProdutoAtualizado, BigDecimal precoProdutoPrecoAnterior, LocalDateTime ultimaDataConsultaProduto, LocalDateTime dataEnvioProduto, String nomePlataforma, String linkProduto) {
|
public Product(Long codigoProduto, String nomeProduto, String descricaoProdutos, BigDecimal precoProdutoAtualizado, BigDecimal precoProdutoPrecoAnterior, LocalDateTime ultimaDataConsultaProduto, LocalDateTime dataEnvioProduto, String nomePlataforma) {
|
||||||
this.codigoProduto = codigoProduto;
|
this.codigoProduto = codigoProduto;
|
||||||
this.nomeProduto = nomeProduto;
|
this.nomeProduto = nomeProduto;
|
||||||
this.descricaoProdutos = descricaoProdutos;
|
this.descricaoProdutos = descricaoProdutos;
|
||||||
@@ -50,15 +47,6 @@ public class Product {
|
|||||||
this.ultimaDataConsultaProduto = ultimaDataConsultaProduto;
|
this.ultimaDataConsultaProduto = ultimaDataConsultaProduto;
|
||||||
this.dataEnvioProduto = dataEnvioProduto;
|
this.dataEnvioProduto = dataEnvioProduto;
|
||||||
this.nomePlataforma = nomePlataforma;
|
this.nomePlataforma = nomePlataforma;
|
||||||
this.linkProduto = linkProduto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLinkProduto() {
|
|
||||||
return linkProduto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLinkProduto(String linkProduto) {
|
|
||||||
this.linkProduto = linkProduto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDescricaoProdutos() {
|
public String getDescricaoProdutos() {
|
||||||
|
|||||||
@@ -26,12 +26,10 @@ public class ProductDTO {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private String nomePlataforma;
|
private String nomePlataforma;
|
||||||
|
|
||||||
private String linkProduto;
|
|
||||||
|
|
||||||
public ProductDTO() {
|
public ProductDTO() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProductDTO(Long codigoProduto, String nomeProduto, String descricaoProduto, BigDecimal precoProdutoAtualizado, BigDecimal precoProdutoPrecoAnterior, LocalDateTime ultimaDataConsultaProduto, LocalDateTime dataEnvioProduto, String nomePlataforma, String linkProduto) {
|
public ProductDTO(Long codigoProduto, String nomeProduto, String descricaoProduto, BigDecimal precoProdutoAtualizado, BigDecimal precoProdutoPrecoAnterior, LocalDateTime ultimaDataConsultaProduto, LocalDateTime dataEnvioProduto, String nomePlataforma) {
|
||||||
this.codigoProduto = codigoProduto;
|
this.codigoProduto = codigoProduto;
|
||||||
this.nomeProduto = nomeProduto;
|
this.nomeProduto = nomeProduto;
|
||||||
this.descricaoProduto = descricaoProduto;
|
this.descricaoProduto = descricaoProduto;
|
||||||
@@ -40,15 +38,6 @@ public class ProductDTO {
|
|||||||
this.ultimaDataConsultaProduto = ultimaDataConsultaProduto;
|
this.ultimaDataConsultaProduto = ultimaDataConsultaProduto;
|
||||||
this.dataEnvioProduto = dataEnvioProduto;
|
this.dataEnvioProduto = dataEnvioProduto;
|
||||||
this.nomePlataforma = nomePlataforma;
|
this.nomePlataforma = nomePlataforma;
|
||||||
this.linkProduto = linkProduto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLinkProduto() {
|
|
||||||
return linkProduto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLinkProduto(String linkProduto) {
|
|
||||||
this.linkProduto = linkProduto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDescricaoProduto() {
|
public String getDescricaoProduto() {
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
package br.com.stackpanel.duck_api.entity.enums;
|
|
||||||
|
|
||||||
public enum QueueNames {
|
|
||||||
|
|
||||||
QUEUE_NOTIFICATION_ERROR("QUEUE_NOTIFICATION_ERROR"),
|
|
||||||
QUEUE_NOTIFICATION_CAD("QUEUE_NOTIFICATION_CAD");
|
|
||||||
|
|
||||||
|
|
||||||
public final String label;
|
|
||||||
|
|
||||||
private QueueNames(String label) {
|
|
||||||
this.label = label;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -21,8 +21,7 @@ public class ProductMapper {
|
|||||||
product.getPrecoProdutoPrecoAnterior(),
|
product.getPrecoProdutoPrecoAnterior(),
|
||||||
product.getUltimaDataConsultaProduto(),
|
product.getUltimaDataConsultaProduto(),
|
||||||
product.getDataEnvioProduto(),
|
product.getDataEnvioProduto(),
|
||||||
product.getNomePlataforma(),
|
product.getNomePlataforma()
|
||||||
product.getLinkProduto()
|
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -40,8 +39,7 @@ public class ProductMapper {
|
|||||||
dto.getPrecoProdutoPrecoAnterior(),
|
dto.getPrecoProdutoPrecoAnterior(),
|
||||||
dto.getUltimaDataConsultaProduto(),
|
dto.getUltimaDataConsultaProduto(),
|
||||||
dto.getDataEnvioProduto(),
|
dto.getDataEnvioProduto(),
|
||||||
dto.getNomePlataforma(),
|
dto.getNomePlataforma()
|
||||||
dto.getLinkProduto()
|
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
package br.com.stackpanel.duck_api.service;
|
|
||||||
|
|
||||||
public interface RabbitPublisherService {
|
|
||||||
|
|
||||||
void sendNotificationCad(String notificationCad);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -67,6 +67,7 @@ public class ProductServiceImpl implements ProductService {
|
|||||||
return productMapper.toProductDTO(produtoExistente);
|
return productMapper.toProductDTO(produtoExistente);
|
||||||
|
|
||||||
} else if (precoNovo.compareTo(precoAtual) < 0) {
|
} else if (precoNovo.compareTo(precoAtual) < 0) {
|
||||||
|
// precoNovo < precoAtual → atualiza (ficou mais barato)
|
||||||
log.info("Produto '{}' ID: '{}' teve preco atualizado: {} -> {}",
|
log.info("Produto '{}' ID: '{}' teve preco atualizado: {} -> {}",
|
||||||
dto.getNomeProduto(), produtoExistente.getCodigoProduto(),precoAtual, precoNovo);
|
dto.getNomeProduto(), produtoExistente.getCodigoProduto(),precoAtual, precoNovo);
|
||||||
|
|
||||||
@@ -77,6 +78,7 @@ public class ProductServiceImpl implements ProductService {
|
|||||||
produto = productRepository.save(productMapper.toProductEntity(dto));
|
produto = productRepository.save(productMapper.toProductEntity(dto));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
// precoNovo > precoAtual → nao atualiza
|
||||||
log.info("Produto '{}' ID: '{}' ja existe com preco menor. Nenhuma alteracao feita.", dto.getNomeProduto(), produtoExistente.getCodigoProduto());
|
log.info("Produto '{}' ID: '{}' ja existe com preco menor. Nenhuma alteracao feita.", dto.getNomeProduto(), produtoExistente.getCodigoProduto());
|
||||||
return productMapper.toProductDTO(produtoExistente);
|
return productMapper.toProductDTO(produtoExistente);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
package br.com.stackpanel.duck_api.service.impl;
|
|
||||||
|
|
||||||
import br.com.stackpanel.duck_api.service.RabbitPublisherService;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
|
||||||
|
|
||||||
import static br.com.stackpanel.duck_api.entity.enums.QueueNames.QUEUE_NOTIFICATION_ERROR;
|
|
||||||
|
|
||||||
public class RabbitPublisherServiceImpl implements RabbitPublisherService {
|
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(RabbitPublisherServiceImpl.class);
|
|
||||||
private final RabbitTemplate rabbitTemplate;
|
|
||||||
|
|
||||||
public RabbitPublisherServiceImpl(RabbitTemplate rabbitTemplate) {
|
|
||||||
this.rabbitTemplate = rabbitTemplate;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void sendNotificationCad(String notificationCad) {
|
|
||||||
log.info("Sending notification Cad: {}", notificationCad);
|
|
||||||
rabbitTemplate.convertAndSend(QUEUE_NOTIFICATION_ERROR.label, notificationCad);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,9 +6,3 @@ spring.datasource.username=${db_user}
|
|||||||
spring.datasource.driver-class-name=org.postgresql.Driver
|
spring.datasource.driver-class-name=org.postgresql.Driver
|
||||||
spring.jpa.hibernate.ddl-auto=update
|
spring.jpa.hibernate.ddl-auto=update
|
||||||
spring.jpa.show-sql=true
|
spring.jpa.show-sql=true
|
||||||
|
|
||||||
|
|
||||||
spring.rabbitmq.host=rabbit.stackpanel.com.br
|
|
||||||
spring.rabbitmq.port=5672
|
|
||||||
spring.rabbitmq.username=${rabbit_username}
|
|
||||||
spring.rabbitmq.password=${rabbit_password}
|
|
||||||
@@ -4,9 +4,3 @@ spring.datasource.url=${db_host:jdbc:postgresql://db.stackpanel.com.br:5432/nexu
|
|||||||
spring.datasource.password=${db_pass}
|
spring.datasource.password=${db_pass}
|
||||||
spring.datasource.username=${db_user}
|
spring.datasource.username=${db_user}
|
||||||
spring.datasource.driver-class-name=org.postgresql.Driver
|
spring.datasource.driver-class-name=org.postgresql.Driver
|
||||||
|
|
||||||
|
|
||||||
spring.rabbitmq.host=rabbit.stackpanel.com.br
|
|
||||||
spring.rabbitmq.port=5672
|
|
||||||
spring.rabbitmq.username=${rabbit_username}
|
|
||||||
spring.rabbitmq.password=${rabbit_password}
|
|
||||||
Reference in New Issue
Block a user