Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
orders-monitoring-dashboard
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ramakanth Dhane
orders-monitoring-dashboard
Commits
7cf48a6e
Commit
7cf48a6e
authored
Apr 27, 2020
by
Ramakanth Dhane
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'omd-notification-feature-branch' into 'master'
OMD notification feature branch See merge request
!8
parents
c9f374b7
dd823838
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
960 additions
and
66 deletions
+960
-66
pom.xml
omd-checkout-service/pom.xml
+75
-65
OrderGenerator.java
...t-service/src/main/java/com/nisum/omd/OrderGenerator.java
+6
-0
OmdProducerConfig.java
...src/main/java/com/nisum/omd/config/OmdProducerConfig.java
+39
-0
OmdProducerService.java
...c/main/java/com/nisum/omd/service/OmdProducerService.java
+41
-0
application.properties
...heckout-service/src/main/resources/application.properties
+5
-0
pom.xml
omd-notifications/pom.xml
+21
-1
OmdConsumerConfig.java
...src/main/java/com/nisum/omd/config/OmdConsumerConfig.java
+57
-0
BillingTo.java
...cations/src/main/java/com/nisum/omd/domain/BillingTo.java
+98
-0
LineItem.java
...ications/src/main/java/com/nisum/omd/domain/LineItem.java
+91
-0
Order.java
...tifications/src/main/java/com/nisum/omd/domain/Order.java
+158
-0
OrderCharges.java
...ions/src/main/java/com/nisum/omd/domain/OrderCharges.java
+35
-0
OrderTaxes.java
...ations/src/main/java/com/nisum/omd/domain/OrderTaxes.java
+54
-0
PaymentMethod.java
...ons/src/main/java/com/nisum/omd/domain/PaymentMethod.java
+49
-0
Promotions.java
...ations/src/main/java/com/nisum/omd/domain/Promotions.java
+15
-0
ShipTo.java
...ifications/src/main/java/com/nisum/omd/domain/ShipTo.java
+99
-0
ShippingInfo.java
...ions/src/main/java/com/nisum/omd/domain/ShippingInfo.java
+29
-0
OmdConsumerListener.java
...main/java/com/nisum/omd/listener/OmdConsumerListener.java
+55
-0
OMD_Notification_Kafka_Setup_Details
...s/src/main/resources/OMD_Notification_Kafka_Setup_Details
+17
-0
application.properties
omd-notifications/src/main/resources/application.properties
+16
-0
No files found.
omd-checkout-service/pom.xml
View file @
7cf48a6e
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<parent>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
2.2.6.RELEASE
</version>
<version>
2.2.6.RELEASE
</version>
<relativePath/>
<!-- lookup parent from repository -->
<relativePath/>
<!-- lookup parent from repository -->
</parent>
</parent>
<groupId>
com.nisum.omd
</groupId>
<groupId>
com.nisum.omd
</groupId>
<artifactId>
omd-checkout-service
</artifactId>
<artifactId>
omd-checkout-service
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<version>
0.0.1-SNAPSHOT
</version>
<name>
omd-checkout-service
</name>
<name>
omd-checkout-service
</name>
<description>
Demo project for Spring Boot
</description>
<description>
Demo project for Spring Boot
</description>
<properties>
<properties>
<java.version>
1.8
</java.version>
<java.version>
1.8
</java.version>
<maven-jar-plugin.version>
3.1.1
</maven-jar-plugin.version>
<maven-jar-plugin.version>
3.1.1
</maven-jar-plugin.version>
</properties>
</properties>
<dependencies>
<dependencies>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-databind
</artifactId>
<artifactId>
jackson-databind
</artifactId>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.kafka
</groupId>
<artifactId>
spring-boot-devtools
</artifactId>
<artifactId>
spring-kafka
</artifactId>
<scope>
runtime
</scope>
</dependency>
<optional>
true
</optional>
<dependency>
</dependency>
<groupId>
org.slf4j
</groupId>
<dependency>
<artifactId>
slf4j-simple
</artifactId>
<groupId>
com.h2database
</groupId>
<version>
1.7.30
</version>
<artifactId>
h2
</artifactId>
<scope>
test
</scope>
<scope>
runtime
</scope>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
com.github.javafaker
</groupId>
<artifactId>
spring-boot-devtools
</artifactId>
<artifactId>
javafaker
</artifactId>
<scope>
runtime
</scope>
<version>
1.0.2
</version>
<optional>
true
</optional>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
com.h2database
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<artifactId>
h2
</artifactId>
<scope>
test
</scope>
<scope>
runtime
</scope>
<exclusions>
</dependency>
<exclusion>
<dependency>
<groupId>
org.junit.vintage
</groupId>
<groupId>
com.github.javafaker
</groupId>
<artifactId>
junit-vintage-engine
</artifactId>
<artifactId>
javafaker
</artifactId>
</exclusion>
<version>
1.0.2
</version>
</exclusions>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<artifactId>
spring-boot-configuration-processor
</artifactId>
<scope>
test
</scope>
<optional>
true
</optional>
<exclusions>
</dependency>
<exclusion>
</dependencies>
<groupId>
org.junit.vintage
</groupId>
<artifactId>
junit-vintage-engine
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-configuration-processor
</artifactId>
<optional>
true
</optional>
</dependency>
</dependencies>
<build>
<build>
<plugins>
<plugins>
<plugin>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugin>
</plugins>
</plugins>
</build>
</build>
</project>
</project>
omd-checkout-service/src/main/java/com/nisum/omd/OrderGenerator.java
View file @
7cf48a6e
...
@@ -2,6 +2,7 @@ package com.nisum.omd;
...
@@ -2,6 +2,7 @@ package com.nisum.omd;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
com.nisum.omd.service.OmdProducerService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -19,6 +20,10 @@ public class OrderGenerator implements CommandLineRunner{
...
@@ -19,6 +20,10 @@ public class OrderGenerator implements CommandLineRunner{
RandomDataGeneratorImpl
rdg
;
RandomDataGeneratorImpl
rdg
;
@Autowired
@Autowired
Order
order
;
Order
order
;
@Autowired
OmdProducerService
omdProducerService
;
Boolean
orderGenerateFlag
=
true
;
Boolean
orderGenerateFlag
=
true
;
public
Boolean
getOrderGenerateFlag
()
{
public
Boolean
getOrderGenerateFlag
()
{
...
@@ -33,6 +38,7 @@ public class OrderGenerator implements CommandLineRunner{
...
@@ -33,6 +38,7 @@ public class OrderGenerator implements CommandLineRunner{
while
(
orderGenerateFlag
){
while
(
orderGenerateFlag
){
order
=
getObjectData
(
order
);
order
=
getObjectData
(
order
);
omdProducerService
.
sendMessage
(
order
);
ObjectMapper
objectMapper
=
new
ObjectMapper
();
ObjectMapper
objectMapper
=
new
ObjectMapper
();
objectMapper
.
registerModule
(
new
JavaTimeModule
());
objectMapper
.
registerModule
(
new
JavaTimeModule
());
objectMapper
.
disable
(
SerializationFeature
.
WRITE_DATES_AS_TIMESTAMPS
);
objectMapper
.
disable
(
SerializationFeature
.
WRITE_DATES_AS_TIMESTAMPS
);
...
...
omd-checkout-service/src/main/java/com/nisum/omd/config/OmdProducerConfig.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
config
;
import
com.nisum.omd.domain.Order
;
import
org.apache.kafka.clients.producer.ProducerConfig
;
import
org.apache.kafka.common.serialization.StringSerializer
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.kafka.core.DefaultKafkaProducerFactory
;
import
org.springframework.kafka.core.KafkaTemplate
;
import
org.springframework.kafka.core.ProducerFactory
;
import
org.springframework.kafka.support.serializer.JsonSerializer
;
import
java.util.HashMap
;
import
java.util.Map
;
@Configuration
public
class
OmdProducerConfig
{
@Value
(
"${bootstrap-server}"
)
private
String
bootstrapServer
;
@Bean
public
ProducerFactory
<
String
,
Order
>
producerFactory
(){
Map
<
String
,
Object
>
config
=
new
HashMap
<>();
config
.
put
(
ProducerConfig
.
BOOTSTRAP_SERVERS_CONFIG
,
bootstrapServer
);
config
.
put
(
ProducerConfig
.
KEY_SERIALIZER_CLASS_CONFIG
,
StringSerializer
.
class
);
config
.
put
(
ProducerConfig
.
VALUE_SERIALIZER_CLASS_CONFIG
,
JsonSerializer
.
class
);
return
new
DefaultKafkaProducerFactory
<>(
config
);
}
@Bean
public
KafkaTemplate
<
String
,
Order
>
kafkaTemplate
(){
return
new
KafkaTemplate
<>(
producerFactory
());
}
}
omd-checkout-service/src/main/java/com/nisum/omd/service/OmdProducerService.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
service
;
import
com.nisum.omd.domain.Order
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.kafka.core.KafkaTemplate
;
import
org.springframework.kafka.support.SendResult
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.concurrent.ListenableFuture
;
import
org.springframework.util.concurrent.ListenableFutureCallback
;
@Service
public
class
OmdProducerService
{
@Autowired
private
KafkaTemplate
<
String
,
Order
>
kafkaTemplate
;
@Value
(
"${topic-name}"
)
private
String
topic
;
Logger
logger
=
LoggerFactory
.
getLogger
(
OmdProducerService
.
class
);
public
void
sendMessage
(
Order
order
)
{
ListenableFuture
<
SendResult
<
String
,
Order
>>
future
=
kafkaTemplate
.
send
(
topic
,
order
);
future
.
addCallback
(
new
ListenableFutureCallback
<
SendResult
<
String
,
Order
>>()
{
@Override
public
void
onSuccess
(
SendResult
<
String
,
Order
>
result
)
{
logger
.
info
(
" Published Order Data with Order Number :"
+
order
.
getOrderNum
()
+
" In Topic :"
+
result
.
getRecordMetadata
().
topic
());
}
@Override
public
void
onFailure
(
Throwable
ex
)
{
logger
.
error
(
"Unable to Publish the Order Data, Due to: "
,
ex
.
getMessage
());
}
});
}
}
omd-checkout-service/src/main/resources/application.properties
View file @
7cf48a6e
...
@@ -67,3 +67,8 @@ app.paymentMethod.paymentStatus=AUTH
...
@@ -67,3 +67,8 @@ app.paymentMethod.paymentStatus=AUTH
app.paymentMethod.paymentDetail.TransactionId
=
021361475199
app.paymentMethod.paymentDetail.TransactionId
=
021361475199
app.paymentMethod.paymentDetail.ProcessedAmount
=
1000.00
app.paymentMethod.paymentDetail.ProcessedAmount
=
1000.00
app.paymentMethod.paymentDetail.RequestAmount
=
1000.00
app.paymentMethod.paymentDetail.RequestAmount
=
1000.00
#Kafka Properties
bootstrap-server
=
localhost:9092
topic-name
=
TOPIC_OMD_ORDER_DATA
\ No newline at end of file
omd-notifications/pom.xml
View file @
7cf48a6e
...
@@ -23,7 +23,27 @@
...
@@ -23,7 +23,27 @@
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.kafka
</groupId>
<artifactId>
spring-kafka
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-mail
</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-databind
</artifactId>
<version>
2.10.0
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-simple
</artifactId>
<version>
1.7.30
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<artifactId>
spring-boot-starter-test
</artifactId>
...
...
omd-notifications/src/main/java/com/nisum/omd/config/OmdConsumerConfig.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
config
;
import
com.nisum.omd.domain.Order
;
import
org.apache.kafka.clients.consumer.ConsumerConfig
;
import
org.apache.kafka.common.serialization.StringDeserializer
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.kafka.annotation.EnableKafka
;
import
org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory
;
import
org.springframework.kafka.core.ConsumerFactory
;
import
org.springframework.kafka.core.DefaultKafkaConsumerFactory
;
import
org.springframework.kafka.support.serializer.JsonDeserializer
;
import
java.util.HashMap
;
import
java.util.Map
;
@EnableKafka
@Configuration
public
class
OmdConsumerConfig
{
@Value
(
"${bootstrap-server}"
)
private
String
bootstrapserver
;
@Value
(
"${group-id}"
)
private
String
groupId
;
@Value
(
"${auto-offset-reset-config}"
)
private
String
offset
;
@Bean
public
ConsumerFactory
<
String
,
Order
>
orderConsumerFactory
(){
Map
<
String
,
Object
>
config
=
new
HashMap
<>();
config
.
put
(
ConsumerConfig
.
BOOTSTRAP_SERVERS_CONFIG
,
bootstrapserver
);
config
.
put
(
ConsumerConfig
.
GROUP_ID_CONFIG
,
groupId
);
config
.
put
(
ConsumerConfig
.
KEY_DESERIALIZER_CLASS_CONFIG
,
StringDeserializer
.
class
);
config
.
put
(
ConsumerConfig
.
VALUE_DESERIALIZER_CLASS_CONFIG
,
JsonDeserializer
.
class
);
config
.
put
(
ConsumerConfig
.
AUTO_OFFSET_RESET_CONFIG
,
offset
);
final
JsonDeserializer
<
Order
>
jsonDeserializer
=
new
JsonDeserializer
<>();
jsonDeserializer
.
addTrustedPackages
(
"*"
);
return
new
DefaultKafkaConsumerFactory
<>(
config
,
new
StringDeserializer
(),
jsonDeserializer
);
}
@Bean
public
ConcurrentKafkaListenerContainerFactory
<
String
,
Order
>
orderKafkaListenerContainerFactory
(){
ConcurrentKafkaListenerContainerFactory
<
String
,
Order
>
factory
=
new
ConcurrentKafkaListenerContainerFactory
<>();
factory
.
setConsumerFactory
(
orderConsumerFactory
());
return
factory
;
}
}
omd-notifications/src/main/java/com/nisum/omd/domain/BillingTo.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
domain
;
public
class
BillingTo
{
private
String
firstName
;
private
String
lastName
;
private
String
addressLine1
;
private
String
city
;
private
String
state
;
private
String
zipCode
;
private
String
country
;
private
int
mobileNum
;
private
String
eMailID
;
private
boolean
residentialAddr
;
public
String
getFirstName
()
{
return
firstName
;
}
public
void
setFirstName
(
String
firstName
)
{
this
.
firstName
=
firstName
;
}
public
String
getLastName
()
{
return
lastName
;
}
public
void
setLastName
(
String
lastName
)
{
this
.
lastName
=
lastName
;
}
public
String
getAddressLine1
()
{
return
addressLine1
;
}
public
void
setAddressLine1
(
String
addressLine1
)
{
this
.
addressLine1
=
addressLine1
;
}
public
String
getCity
()
{
return
city
;
}
public
void
setCity
(
String
city
)
{
this
.
city
=
city
;
}
public
String
getState
()
{
return
state
;
}
public
void
setState
(
String
state
)
{
this
.
state
=
state
;
}
public
String
getZipCode
()
{
return
zipCode
;
}
public
void
setZipCode
(
String
zipCode
)
{
this
.
zipCode
=
zipCode
;
}
public
String
getCountry
()
{
return
country
;
}
public
void
setCountry
(
String
country
)
{
this
.
country
=
country
;
}
public
int
getMobileNum
()
{
return
mobileNum
;
}
public
void
setMobileNum
(
int
mobileNum
)
{
this
.
mobileNum
=
mobileNum
;
}
public
String
geteMailID
()
{
return
eMailID
;
}
public
void
seteMailID
(
String
eMailID
)
{
this
.
eMailID
=
eMailID
;
}
public
boolean
isResidentialAddr
()
{
return
residentialAddr
;
}
public
void
setResidentialAddr
(
boolean
residentialAddr
)
{
this
.
residentialAddr
=
residentialAddr
;
}
}
omd-notifications/src/main/java/com/nisum/omd/domain/LineItem.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
domain
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.util.Map
;
@Component
public
class
LineItem
{
private
String
lineItemNumber
;
private
String
skuNumber
;
private
String
itemColorDesc
;
private
String
size
;
private
String
orderedQty
;
private
String
productName
;
private
String
itemType
;
private
boolean
shipChrgApplInd
;
private
LocalDateTime
estimatedShipDate
;
private
Map
<
String
,
Object
>
linePriceInfo
;
private
Map
<
String
,
Object
>
lineTax
;
public
String
getLineItemNumber
()
{
return
lineItemNumber
;
}
public
void
setLineItemNumber
(
String
lineItemNumber
)
{
this
.
lineItemNumber
=
lineItemNumber
;
}
public
String
getSkuNumber
()
{
return
skuNumber
;
}
public
void
setSkuNumber
(
String
skuNumber
)
{
this
.
skuNumber
=
skuNumber
;
}
public
String
getItemColorDesc
()
{
return
itemColorDesc
;
}
public
void
setItemColorDesc
(
String
itemColorDesc
)
{
this
.
itemColorDesc
=
itemColorDesc
;
}
public
String
getSize
()
{
return
size
;
}
public
void
setSize
(
String
size
)
{
this
.
size
=
size
;
}
public
String
getOrderedQty
()
{
return
orderedQty
;
}
public
void
setOrderedQty
(
String
orderedQty
)
{
this
.
orderedQty
=
orderedQty
;
}
public
String
getProductName
()
{
return
productName
;
}
public
void
setProductName
(
String
productName
)
{
this
.
productName
=
productName
;
}
public
String
getItemType
()
{
return
itemType
;
}
public
void
setItemType
(
String
itemType
)
{
this
.
itemType
=
itemType
;
}
public
boolean
isShipChrgApplInd
()
{
return
shipChrgApplInd
;
}
public
void
setShipChrgApplInd
(
boolean
shipChrgApplInd
)
{
this
.
shipChrgApplInd
=
shipChrgApplInd
;
}
public
LocalDateTime
getEstimatedShipDate
()
{
return
estimatedShipDate
;
}
public
void
setEstimatedShipDate
(
LocalDateTime
estimatedShipDate
)
{
this
.
estimatedShipDate
=
estimatedShipDate
;
}
public
Map
<
String
,
Object
>
getLinePriceInfo
()
{
return
linePriceInfo
;
}
public
void
setLinePriceInfo
(
Map
<
String
,
Object
>
linePriceInfo
)
{
this
.
linePriceInfo
=
linePriceInfo
;
}
public
Map
<
String
,
Object
>
getLineTax
()
{
return
lineTax
;
}
public
void
setLineTax
(
Map
<
String
,
Object
>
lineTax
)
{
this
.
lineTax
=
lineTax
;
}
}
omd-notifications/src/main/java/com/nisum/omd/domain/Order.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
domain
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
@Component
@ConfigurationProperties
(
"app"
)
public
class
Order
{
private
String
orderNum
;
private
LocalDateTime
orderDate
;
private
String
currency
;
private
String
shipMethod
;
private
String
customerId
;
private
String
customerType
;
private
String
gift
;
private
Promotions
promotions
;
private
LineItem
lineItem
;
private
BillingTo
billingTo
;
private
OrderCharges
orderCharges
;
private
OrderTaxes
orderTaxes
;
private
ShippingInfo
shippingInfo
;
private
ShipTo
shipTo
;
private
PaymentMethod
paymentMethod
;
public
String
getCustomerId
()
{
return
customerId
;
}
public
void
setCustomerId
(
String
customerId
)
{
this
.
customerId
=
customerId
;
}
public
String
getOrderNum
()
{
return
orderNum
;
}
public
void
setOrderNum
(
String
orderNum
)
{
this
.
orderNum
=
orderNum
;
}
public
LocalDateTime
getOrderDate
()
{
return
orderDate
;
}
public
void
setOrderDate
(
LocalDateTime
orderDate
)
{
this
.
orderDate
=
orderDate
;
}
public
String
getCurrency
()
{
return
currency
;
}
public
void
setCurrency
(
String
currency
)
{
this
.
currency
=
currency
;
}
public
String
getShipMethod
()
{
return
shipMethod
;
}
public
void
setShipMethod
(
String
shipMethod
)
{
this
.
shipMethod
=
shipMethod
;
}
public
String
getCustomerType
()
{
return
customerType
;
}
public
void
setCustomerType
(
String
customerType
)
{
this
.
customerType
=
customerType
;
}
public
String
getGift
()
{
return
gift
;
}
public
void
setGift
(
String
gift
)
{
this
.
gift
=
gift
;
}
public
Promotions
getPromotions
()
{
return
promotions
;
}
public
void
setPromotions
(
Promotions
promotions
)
{
this
.
promotions
=
promotions
;
}
public
LineItem
getLineItem
()
{
return
lineItem
;
}
public
void
setLineItem
(
LineItem
lineItem
)
{
this
.
lineItem
=
lineItem
;
}
public
BillingTo
getBillingTo
()
{
return
billingTo
;
}
public
void
setBillingTo
(
BillingTo
billingTo
)
{
this
.
billingTo
=
billingTo
;
}
public
OrderCharges
getOrderCharges
()
{
return
orderCharges
;
}
public
void
setOrderCharges
(
OrderCharges
orderCharges
)
{
this
.
orderCharges
=
orderCharges
;
}
public
OrderTaxes
getOrderTaxes
()
{
return
orderTaxes
;
}
public
void
setOrderTaxes
(
OrderTaxes
orderTaxes
)
{
this
.
orderTaxes
=
orderTaxes
;
}
public
ShippingInfo
getShippingInfo
()
{
return
shippingInfo
;
}
public
void
setShippingInfo
(
ShippingInfo
shippingInfo
)
{
this
.
shippingInfo
=
shippingInfo
;
}
public
ShipTo
getShipTo
()
{
return
shipTo
;
}
public
void
setShipTo
(
ShipTo
shipTo
)
{
this
.
shipTo
=
shipTo
;
}
public
PaymentMethod
getPaymentMethod
()
{
return
paymentMethod
;
}
public
void
setPaymentMethod
(
PaymentMethod
paymentMethod
)
{
this
.
paymentMethod
=
paymentMethod
;
}
}
omd-notifications/src/main/java/com/nisum/omd/domain/OrderCharges.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
domain
;
public
class
OrderCharges
{
private
float
chargeAmount
;
private
String
chargeCategory
;
private
String
chargeName
;
public
float
getChargeAmount
()
{
return
chargeAmount
;
}
public
void
setChargeAmount
(
float
chargeAmount
)
{
this
.
chargeAmount
=
chargeAmount
;
}
public
String
getChargeCategory
()
{
return
chargeCategory
;
}
public
void
setChargeCategory
(
String
chargeCategory
)
{
this
.
chargeCategory
=
chargeCategory
;
}
public
String
getChargeName
()
{
return
chargeName
;
}
public
void
setChargeName
(
String
chargeName
)
{
this
.
chargeName
=
chargeName
;
}
}
omd-notifications/src/main/java/com/nisum/omd/domain/OrderTaxes.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
domain
;
public
class
OrderTaxes
{
private
String
chargeCategory
;
private
String
taxName
;
private
float
tax
;
private
String
taxCode
;
private
int
taxPercentage
;
public
String
getChargeCategory
()
{
return
chargeCategory
;
}
public
void
setChargeCategory
(
String
chargeCategory
)
{
this
.
chargeCategory
=
chargeCategory
;
}
public
String
getTaxName
()
{
return
taxName
;
}
public
void
setTaxName
(
String
taxName
)
{
this
.
taxName
=
taxName
;
}
public
float
getTax
()
{
return
tax
;
}
public
void
setTax
(
float
tax
)
{
this
.
tax
=
tax
;
}
public
String
getTaxCode
()
{
return
taxCode
;
}
public
void
setTaxCode
(
String
taxCode
)
{
this
.
taxCode
=
taxCode
;
}
public
int
getTaxPercentage
()
{
return
taxPercentage
;
}
public
void
setTaxPercentage
(
int
taxPercentage
)
{
this
.
taxPercentage
=
taxPercentage
;
}
}
omd-notifications/src/main/java/com/nisum/omd/domain/PaymentMethod.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
domain
;
import
java.util.Map
;
public
class
PaymentMethod
{
private
String
paymentMethod
;
private
String
creditCardNo
;
private
String
creditCardType
;
private
String
displayCreditCardNo
;
private
String
paymentStatus
;
private
Map
<
String
,
Object
>
paymentDetail
;
public
String
getPaymentMethod
()
{
return
paymentMethod
;
}
public
void
setPaymentMethod
(
String
paymentMethod
)
{
this
.
paymentMethod
=
paymentMethod
;
}
public
String
getCreditCardNo
()
{
return
creditCardNo
;
}
public
void
setCreditCardNo
(
String
creditCardNo
)
{
this
.
creditCardNo
=
creditCardNo
;
}
public
String
getCreditCardType
()
{
return
creditCardType
;
}
public
void
setCreditCardType
(
String
creditCardType
)
{
this
.
creditCardType
=
creditCardType
;
}
public
String
getDisplayCreditCardNo
()
{
return
displayCreditCardNo
;
}
public
void
setDisplayCreditCardNo
(
String
displayCreditCardNo
)
{
this
.
displayCreditCardNo
=
displayCreditCardNo
;
}
public
String
getPaymentStatus
()
{
return
paymentStatus
;
}
public
void
setPaymentStatus
(
String
paymentStatus
)
{
this
.
paymentStatus
=
paymentStatus
;
}
public
Map
<
String
,
Object
>
getPaymentDetail
()
{
return
paymentDetail
;
}
public
void
setPaymentDetail
(
Map
<
String
,
Object
>
paymentDetail
)
{
this
.
paymentDetail
=
paymentDetail
;
}
}
omd-notifications/src/main/java/com/nisum/omd/domain/Promotions.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
domain
;
import
java.util.Map
;
public
class
Promotions
{
private
Map
<
String
,
Object
>
PromotionDetails
;
public
Map
<
String
,
Object
>
getPromotionDetails
()
{
return
PromotionDetails
;
}
public
void
setPromotionDetails
(
Map
<
String
,
Object
>
promotionDetails
)
{
PromotionDetails
=
promotionDetails
;
}
}
omd-notifications/src/main/java/com/nisum/omd/domain/ShipTo.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
domain
;
public
class
ShipTo
{
private
String
firstName
;
private
String
lastName
;
private
String
addressLine1
;
private
String
city
;
private
String
state
;
private
String
zipCode
;
private
String
country
;
private
int
mobileNum
;
private
String
eMailID
;
private
boolean
residentialAddr
;
public
String
getFirstName
()
{
return
firstName
;
}
public
void
setFirstName
(
String
firstName
)
{
this
.
firstName
=
firstName
;
}
public
String
getLastName
()
{
return
lastName
;
}
public
void
setLastName
(
String
lastName
)
{
this
.
lastName
=
lastName
;
}
public
String
getAddressLine1
()
{
return
addressLine1
;
}
public
void
setAddressLine1
(
String
addressLine1
)
{
this
.
addressLine1
=
addressLine1
;
}
public
String
getCity
()
{
return
city
;
}
public
void
setCity
(
String
city
)
{
this
.
city
=
city
;
}
public
String
getState
()
{
return
state
;
}
public
void
setState
(
String
state
)
{
this
.
state
=
state
;
}
public
String
getZipCode
()
{
return
zipCode
;
}
public
void
setZipCode
(
String
zipCode
)
{
this
.
zipCode
=
zipCode
;
}
public
String
getCountry
()
{
return
country
;
}
public
void
setCountry
(
String
country
)
{
this
.
country
=
country
;
}
public
int
getMobileNum
()
{
return
mobileNum
;
}
public
void
setMobileNum
(
int
mobileNum
)
{
this
.
mobileNum
=
mobileNum
;
}
public
String
geteMailID
()
{
return
eMailID
;
}
public
void
seteMailID
(
String
eMailID
)
{
this
.
eMailID
=
eMailID
;
}
public
boolean
isResidentialAddr
()
{
return
residentialAddr
;
}
public
void
setResidentialAddr
(
boolean
residentialAddr
)
{
this
.
residentialAddr
=
residentialAddr
;
}
}
omd-notifications/src/main/java/com/nisum/omd/domain/ShippingInfo.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
domain
;
public
class
ShippingInfo
{
private
Boolean
vaildShipTo
;
private
int
maxDaysToDeliver
;
private
int
minDaysToDeliver
;
public
Boolean
getVaildShipTo
()
{
return
vaildShipTo
;
}
public
void
setVaildShipTo
(
Boolean
vaildShipTo
)
{
this
.
vaildShipTo
=
vaildShipTo
;
}
public
int
getMaxDaysToDeliver
()
{
return
maxDaysToDeliver
;
}
public
void
setMaxDaysToDeliver
(
int
maxDaysToDeliver
)
{
this
.
maxDaysToDeliver
=
maxDaysToDeliver
;
}
public
int
getMinDaysToDeliver
()
{
return
minDaysToDeliver
;
}
public
void
setMinDaysToDeliver
(
int
minDaysToDeliver
)
{
this
.
minDaysToDeliver
=
minDaysToDeliver
;
}
}
omd-notifications/src/main/java/com/nisum/omd/listener/OmdConsumerListener.java
0 → 100644
View file @
7cf48a6e
package
com
.
nisum
.
omd
.
listener
;
import
com.nisum.omd.domain.Order
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.kafka.annotation.KafkaListener
;
import
org.springframework.mail.javamail.JavaMailSender
;
import
org.springframework.mail.javamail.MimeMessageHelper
;
import
org.springframework.stereotype.Service
;
import
javax.mail.internet.MimeMessage
;
@Service
public
class
OmdConsumerListener
{
@Autowired
private
JavaMailSender
sender
;
Logger
logger
=
LoggerFactory
.
getLogger
(
OmdConsumerListener
.
class
);
public
static
final
String
TOPIC
=
"TOPIC_OMD_ORDER_DATA"
;
public
static
final
String
GROUP_ID
=
"OMD_ORDER_DATA_GROUP"
;
@KafkaListener
(
topics
=
TOPIC
,
groupId
=
GROUP_ID
,
containerFactory
=
"orderKafkaListenerContainerFactory"
)
public
void
consumeMessage
(
Order
order
)
{
validateOrder
(
order
);
logger
.
info
(
"Consumed Order Data with Order Number: "
+
order
.
getOrderNum
());
/*try {
sendEmail();
logger.info("Email Sent Successfully!");
} catch (Exception ex) {
logger.error("Exception while sending the mail!" + ex.getMessage());
}*/
}
private
void
sendEmail
()
throws
Exception
{
MimeMessage
message
=
sender
.
createMimeMessage
();
MimeMessageHelper
helper
=
new
MimeMessageHelper
(
message
);
helper
.
setTo
(
"reciever@gmail.com"
);
helper
.
setText
(
"Your Order Placed Successfully !!"
);
helper
.
setSubject
(
"Order Confirmation"
);
sender
.
send
(
message
);
}
private
void
validateOrder
(
Order
order
){
if
(
order
.
getOrderNum
()
!=
null
&&
order
.
getCustomerId
()
!=
null
){
logger
.
info
(
"Your Order is Validated Successfully"
);
}
else
{
throw
new
RuntimeException
(
"Your Order is Invalid: Please check again"
);
}
}
}
omd-notifications/src/main/resources/OMD_Notification_Kafka_Setup_Details
View file @
7cf48a6e
...
@@ -51,3 +51,20 @@ OMD-Notification-Kafka-Configuration-Details:
...
@@ -51,3 +51,20 @@ OMD-Notification-Kafka-Configuration-Details:
--> kafka-topics --bootstrap-server localhost:9092 --topic TOPIC_OMD_ORDER_DATA --create --partitions 3 --replication-factor 1
--> kafka-topics --bootstrap-server localhost:9092 --topic TOPIC_OMD_ORDER_DATA --create --partitions 3 --replication-factor 1
—> To Check the details of Topic and Partitions :
—> To Check the details of Topic and Partitions :
kafka-topics --bootstrap-server localhost:9092 --topic TOPIC_OMD_ORDER_DATA --describe
kafka-topics --bootstrap-server localhost:9092 --topic TOPIC_OMD_ORDER_DATA --describe
3. You Need to start omd-checkout-service first as the Producer is configured as part od omd-checkout-service module.
4. Modify the application.properties file in omd-notifications:
--> spring.mail.username = with Sender Email Id
--> spring.mail.password = with Sender Email Password
5. Modify the OmdConsumerListener.java with Recipient Email Id at line no.39.
6. You need to modify the gmail settings to recieve the mail notifications.
--> You can do this for testing in your local machine.
--> Login with Sender Mail Id
--> Go to Manage your Google Account
--> Security Tab
--> Turn on Lass Seccured Apps Access option .
--> Do the same for Reciepient Mail Id also.
7. Then run the omd-notifications app for Consumer and Mail Notifcations on Successful validation of Orders.
\ No newline at end of file
omd-notifications/src/main/resources/application.properties
View file @
7cf48a6e
server.port
=
8089
bootstrap-server
=
localhost:9092
group-id
=
my-order-json-data-group
auto-offset-reset-config
=
earliest
topic
=
TOPIC_OMD_ORDER_DATA
spring.mail.host
=
smtp.gmail.com
spring.mail.port
=
587
spring.mail.username
=
username
spring.mail.password
=
password
spring.mail.properties.mail.smtp.starttls.enable
=
true
spring.mail.properties.mail.smtp.starttls.required
=
true
spring.mail.properties.mail.smtp.auth
=
true
spring.mail.properties.mail.smtp.connectiontimeout
=
5000
spring.mail.properties.mail.smtp.timeout
=
5000
spring.mail.properties.mail.smtp.writetimeout
=
5000
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment