Skip to content

Commit 3334d6e

Browse files
committed
update
1 parent 626b03e commit 3334d6e

File tree

14 files changed

+1114
-20
lines changed

14 files changed

+1114
-20
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.hoangtien2k3.notificationservice.constant;
2+
3+
import lombok.AccessLevel;
4+
import lombok.NoArgsConstructor;
5+
6+
@NoArgsConstructor(access = AccessLevel.PRIVATE)
7+
public abstract class AppConstant {
8+
9+
public static final String LOCAL_DATE_FORMAT = "dd-MM-yyyy";
10+
public static final String LOCAL_DATE_TIME_FORMAT = "dd-MM-yyyy__HH:mm:ss:SSSSSS";
11+
public static final String ZONED_DATE_TIME_FORMAT = "dd-MM-yyyy__HH:mm:ss:SSSSSS";
12+
public static final String INSTANT_FORMAT = "dd-MM-yyyy__HH:mm:ss:SSSSSS";
13+
14+
@NoArgsConstructor(access = AccessLevel.PRIVATE)
15+
public abstract static class DiscoveredDomainsApi {
16+
17+
public static final String USER_SERVICE_HOST = "http://USER-SERVICE/user-service";
18+
// public static final String USER_SERVICE_API_URL = "http://USER-SERVICE/user-service/api/users";
19+
public static final String USER_SERVICE_API_URL = "http://localhost:8088/api/manager";
20+
21+
public static final String PRODUCT_SERVICE_HOST = "http://PRODUCT-SERVICE/product-service";
22+
public static final String PRODUCT_SERVICE_API_URL = "http://PRODUCT-SERVICE/product-service/api/products";
23+
24+
public static final String ORDER_SERVICE_HOST = "http://ORDER-SERVICE/order-service";
25+
public static final String ORDER_SERVICE_API_URL = "http://ORDER-SERVICE/order-service/api/orders";
26+
27+
public static final String FAVOURITE_SERVICE_HOST = "http://FAVOURITE-SERVICE/favourite-service";
28+
public static final String FAVOURITE_SERVICE_API_URL = "http://FAVOURITE-SERVICE/favourite-service/api/favourites";
29+
30+
public static final String PAYMENT_SERVICE_HOST = "http://PAYMENT-SERVICE/payment-service";
31+
public static final String PAYMENT_SERVICE_API_URL = "http://PAYMENT-SERVICE/payment-service/api/payments";
32+
33+
public static final String SHIPPING_SERVICE_HOST = "http://SHIPPING-SERVICE/shipping-service";
34+
public static final String SHIPPING_SERVICE_API_URL = "http://SHIPPING-SERVICE/shipping-service/api/shippings";
35+
36+
}
37+
38+
}

notification-service/src/main/java/com/hoangtien2k3/notificationservice/dto/EmailDetails.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.hoangtien2k3.notificationservice.dto;
22

33
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
45
import lombok.Data;
56
import lombok.NoArgsConstructor;
67

78
@Data
89
@AllArgsConstructor
910
@NoArgsConstructor
11+
@Builder
1012
public class EmailDetails {
1113
private String recipient;
1214
private String msgBody;
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.hoangtien2k3.notificationservice.dto;
2+
3+
import com.fasterxml.jackson.annotation.JsonFormat;
4+
import com.fasterxml.jackson.annotation.JsonInclude;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
7+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
8+
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
9+
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
10+
import com.hoangtien2k3.notificationservice.constant.AppConstant;
11+
import lombok.AllArgsConstructor;
12+
import lombok.Builder;
13+
import lombok.Data;
14+
import lombok.NoArgsConstructor;
15+
import org.springframework.format.annotation.DateTimeFormat;
16+
17+
import java.io.Serial;
18+
import java.io.Serializable;
19+
import java.time.LocalDateTime;
20+
21+
@NoArgsConstructor
22+
@AllArgsConstructor
23+
@Data
24+
@Builder
25+
public class OrderDto implements Serializable {
26+
27+
@Serial
28+
private static final long serialVersionUID = 1L;
29+
30+
private Integer orderId;
31+
32+
@JsonSerialize(using = LocalDateTimeSerializer.class)
33+
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
34+
@JsonFormat(pattern = AppConstant.LOCAL_DATE_TIME_FORMAT, shape = JsonFormat.Shape.STRING)
35+
@DateTimeFormat(pattern = AppConstant.LOCAL_DATE_TIME_FORMAT)
36+
private LocalDateTime orderDate;
37+
38+
private String orderDesc;
39+
private Double orderFee;
40+
private Integer productId;
41+
42+
// @JsonProperty("product")
43+
// @JsonInclude(JsonInclude.Include.NON_NULL)
44+
// private ProductDto productDto;
45+
//
46+
// @JsonProperty("cart")
47+
// @JsonInclude(JsonInclude.Include.NON_NULL)
48+
// private CartDto cartDto;
49+
50+
}

notification-service/src/main/java/com/hoangtien2k3/notificationservice/event/EventConsumer.java

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.hoangtien2k3.notificationservice.constant.KafkaConstant;
55
import com.hoangtien2k3.notificationservice.dto.EmailDetails;
66
import com.hoangtien2k3.notificationservice.dto.PaymentDto;
7+
import com.hoangtien2k3.notificationservice.entity.PaymentStatus;
78
import com.hoangtien2k3.notificationservice.service.EmailService;
89
import com.hoangtien2k3.notificationservice.service.NotificationService;
910
import com.hoangtien2k3.notificationservice.service.PaymentService;
@@ -14,6 +15,10 @@
1415
import reactor.kafka.receiver.ReceiverOptions;
1516
import reactor.kafka.receiver.ReceiverRecord;
1617

18+
import java.sql.Time;
19+
import java.time.LocalDate;
20+
import java.time.LocalDateTime;
21+
import java.time.LocalTime;
1722
import java.util.Collections;
1823
import java.util.function.Consumer;
1924

@@ -32,27 +37,18 @@ public class EventConsumer {
3237
@Autowired
3338
private EventProducer eventProducer;
3439

35-
// public EventConsumer(ReceiverOptions<String, String> receiverOptions) {
36-
// KafkaReceiver.create(receiverOptions.subscription(Collections.singleton(KafkaConstant.PROFILE_ONBOARDING_TOPIC)))
37-
// .receive()
38-
// .subscribe(this::sendEmailKafkaOnboarding);
39-
// }
40-
41-
4240
public EventConsumer(ReceiverOptions<String, String> receiverOptions) {
4341
subscribeToTopic(receiverOptions, KafkaConstant.PROFILE_ONBOARDING_TOPIC, this::sendEmailKafkaOnboarding);
4442
subscribeToTopic(receiverOptions, KafkaConstant.STATUS_PAYMENT_SUCCESSFUL, this::paymentOrderKafkaOnboarding);
45-
4643
}
4744

4845
private void subscribeToTopic(ReceiverOptions<String, String> receiverOptions, String topic, Consumer<ReceiverRecord<String, String>> handler) {
46+
log.info("Subscribed to Kafka topic: {}", topic);
4947
KafkaReceiver.create(receiverOptions.subscription(Collections.singleton(topic)))
5048
.receive()
5149
.subscribe(handler);
52-
log.info("Subscribed to Kafka topic: {}", topic);
5350
}
5451

55-
5652
public void sendEmailKafkaOnboarding(ReceiverRecord<String, String> receiverRecord) {
5753
log.info("USER-SERVICE Onboarding event send email on notification service.");
5854
EmailDetails emailDetails = gson.fromJson(receiverRecord.value(), EmailDetails.class);
@@ -63,17 +59,32 @@ public void sendEmailKafkaOnboarding(ReceiverRecord<String, String> receiverReco
6359
});
6460
}
6561

66-
6762
public void paymentOrderKafkaOnboarding(ReceiverRecord<String, String> receiverRecord) {
68-
log.info("Profile Onboarding event");
63+
log.info("Payment Onboarding event send notification-service payment.");
6964

7065
PaymentDto paymentDto = gson.fromJson(receiverRecord.value(), PaymentDto.class);
7166
paymentService.savePayment(paymentDto).subscribe(res -> {
72-
7367
eventProducer.send(KafkaConstant.PROFILE_ONBOARDED_TOPIC, gson.toJson(paymentDto)).subscribe();
7468
});
7569

70+
EmailDetails emailDetails = EmailDetails.builder()
71+
.recipient("hoangtien2k3dev@gmail.com")
72+
.msgBody(msgBody(paymentDto.getIsPayed(), paymentDto.getPaymentStatus()))
73+
.subject("Payment Successfully in Order with userId: " + paymentDto.getUserId())
74+
.attachment("Please, check the full information in invoice: " + LocalDateTime.now())
75+
.build();
76+
emailService.sendSimpleMail(emailDetails).subscribe(email -> {
77+
eventProducer.send(KafkaConstant.PROFILE_ONBOARDED_TOPIC, gson.toJson(email)).subscribe();
78+
});
79+
7680
}
7781

82+
public String msgBody(Boolean isPayed, PaymentStatus paymentStatus) {
83+
return "Payment in order product cart successfully: \n " +
84+
" + IsPays: " + isPayed +
85+
"\n + PaymentStatus: " + paymentStatus.getStatus() +
86+
"\n\nDate: " + LocalDate.now() +
87+
"\nTime: " + LocalTime.now();
88+
}
7889

7990
}

notification-service/src/main/java/com/hoangtien2k3/notificationservice/service/impl/EmailServiceImpl.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ public Mono<String> sendMail(MultipartFile[] files, String to, String[] cc, Stri
7777
return Mono.fromCallable(() -> {
7878
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
7979
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
80-
8180
mimeMessageHelper.setFrom(fromEmail);
8281
mimeMessageHelper.setTo(to);
8382
mimeMessageHelper.setCc(cc);
@@ -91,7 +90,6 @@ public Mono<String> sendMail(MultipartFile[] files, String to, String[] cc, Stri
9190
}
9291

9392
javaMailSender.send(mimeMessage);
94-
9593
return "Email sent successfully to " + Arrays.toString(cc);
9694
})
9795
.onErrorResume(Exception.class, ex -> {

order-service/src/main/java/com/hoangtien2k3/orderservice/api/OrderController.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,10 @@ public Mono<ResponseEntity<Boolean>> deleteById(@PathVariable("orderId") final S
140140
.defaultIfEmpty(ResponseEntity.status(HttpStatus.NOT_FOUND).body(false));
141141
}
142142

143+
144+
@GetMapping("/existOrderId")
145+
public Boolean existsByOrderId(Integer orderId) {
146+
return orderService.existsByOrderId(orderId);
147+
}
148+
143149
}

order-service/src/main/java/com/hoangtien2k3/orderservice/dto/order/OrderDto.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import lombok.NoArgsConstructor;
1616
import org.springframework.format.annotation.DateTimeFormat;
1717

18-
import javax.persistence.Column;
1918
import java.io.Serial;
2019
import java.io.Serializable;
2120
import java.time.LocalDateTime;

order-service/src/main/java/com/hoangtien2k3/orderservice/service/OrderService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,6 @@ public interface OrderService {
2020
Mono<OrderDto> update(final Integer orderId, final OrderDto orderDto);
2121

2222
Mono<Void> deleteById(final Integer orderId);
23+
24+
Boolean existsByOrderId(Integer orderId);
2325
}

order-service/src/main/java/com/hoangtien2k3/orderservice/service/impl/OrderServiceImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.hoangtien2k3.orderservice.service.impl;
22

33
import com.hoangtien2k3.orderservice.dto.order.OrderDto;
4+
import com.hoangtien2k3.orderservice.entity.Order;
45
import com.hoangtien2k3.orderservice.exception.wrapper.CartNotFoundException;
56
import com.hoangtien2k3.orderservice.exception.wrapper.OrderNotFoundException;
67
import com.hoangtien2k3.orderservice.helper.OrderMappingHelper;
@@ -19,6 +20,7 @@
1920

2021
import javax.transaction.Transactional;
2122
import java.util.List;
23+
import java.util.Optional;
2224

2325
@Transactional
2426
@Slf4j
@@ -103,6 +105,12 @@ public Mono<OrderDto> findById(Integer orderId) {
103105
);
104106
}
105107

108+
// check orderId in exist in database.
109+
@Override
110+
public Boolean existsByOrderId(Integer orderId) {
111+
return orderRepository.findById(orderId).isPresent();
112+
}
113+
106114
@Override
107115
public Mono<OrderDto> save(final OrderDto orderDto) {
108116
log.info("OrderDto, service; save order");

payment-service/src/main/java/com/hoangtien2k3/paymentservice/config/client/ClientConfig.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,8 @@ public RestTemplate restTemplateBean() {
1414
return new RestTemplate();
1515
}
1616

17-
// @LoadBalanced
1817
@Bean
1918
public WebClient.Builder webClientBuilder() {
2019
return WebClient.builder();
2120
}
22-
2321
}

0 commit comments

Comments
 (0)