Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
ecommerce-maven
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
Ascend
ecommerce-maven
Commits
d99ef97e
Commit
d99ef97e
authored
May 08, 2021
by
Shaphen Pangburn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Ecom Team]: Complete conversion to maven files with integrated master branch from previous repo
parent
2cf4ca5d
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
325 additions
and
15 deletions
+325
-15
.DS_Store
ecom-service/.DS_Store
+0
-0
AppConfig.java
...src/main/java/com/nisum/ecomservice/config/AppConfig.java
+10
-0
OrdersController.java
...va/com/nisum/ecomservice/controller/OrdersController.java
+9
-3
Order.java
...ervice/src/main/java/com/nisum/ecomservice/dto/Order.java
+47
-0
OrderAddressParse.java
...ain/java/com/nisum/ecomservice/dto/OrderAddressParse.java
+29
-0
OrderItem.java
...ce/src/main/java/com/nisum/ecomservice/dto/OrderItem.java
+18
-0
OrderItemParse.java
...c/main/java/com/nisum/ecomservice/dto/OrderItemParse.java
+32
-0
OrderRequest.java
...src/main/java/com/nisum/ecomservice/dto/OrderRequest.java
+17
-0
OrderSubmission.java
.../main/java/com/nisum/ecomservice/dto/OrderSubmission.java
+24
-0
Address.java
...ce/src/main/java/com/nisum/ecomservice/model/Address.java
+2
-0
Cart.java
...rvice/src/main/java/com/nisum/ecomservice/model/Cart.java
+20
-0
CartItem.java
...e/src/main/java/com/nisum/ecomservice/model/CartItem.java
+2
-0
Product.java
...ce/src/main/java/com/nisum/ecomservice/model/Product.java
+4
-5
ProductRef.java
...src/main/java/com/nisum/ecomservice/model/ProductRef.java
+2
-0
User.java
...rvice/src/main/java/com/nisum/ecomservice/model/User.java
+3
-5
OrderService.java
...main/java/com/nisum/ecomservice/service/OrderService.java
+95
-0
ProductService.java
...in/java/com/nisum/ecomservice/service/ProductService.java
+9
-1
application.properties
ecom-service/src/main/resources/application.properties
+2
-1
No files found.
ecom-service/.DS_Store
View file @
d99ef97e
No preview for this file type
ecom-service/src/main/java/com/nisum/ecomservice/config/AppConfig.java
0 → 100644
View file @
d99ef97e
package
com
.
nisum
.
ecomservice
.
config
;
public
class
AppConfig
{
private
static
String
orderManagementAPI
=
"http://localhost:8084/api"
;
public
static
String
getOrderManagementAPI
()
{
return
orderManagementAPI
;
}
}
ecom-service/src/main/java/com/nisum/ecomservice/controller/OrdersController.java
View file @
d99ef97e
package
com
.
nisum
.
ecomservice
.
controller
;
import
com.nisum.ecomservice.dto.Order
;
import
com.nisum.ecomservice.dto.OrderRequest
;
import
com.nisum.ecomservice.service.OrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.CrossOrigin
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
reactor.core.publisher.Mono
;
@RestController
@RequestMapping
(
"/api/orders"
)
...
...
@@ -13,5 +14,10 @@ public class OrdersController {
@Autowired
private
OrderService
orderService
;
@PostMapping
private
Mono
<
Order
>
postOrder
(
@RequestBody
OrderRequest
orderRequest
){
return
orderService
.
postOrder
(
orderRequest
);
}
}
ecom-service/src/main/java/com/nisum/ecomservice/dto/Order.java
0 → 100644
View file @
d99ef97e
package
com
.
nisum
.
ecomservice
.
dto
;
import
com.fasterxml.jackson.annotation.JsonCreator
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.List
;
@Getter
@Setter
public
class
Order
{
@JsonCreator
public
Order
(
@JsonProperty
(
"id"
)
String
id
,
@JsonProperty
(
"customerId"
)
String
customerId
,
@JsonProperty
(
"customerEmailAddress"
)
String
customerEmailAddress
,
@JsonProperty
(
"orderTrackingCode"
)
String
orderTrackingCode
,
@JsonProperty
(
"orderStatus"
)
String
orderStatus
,
@JsonProperty
(
"orderCreatedAt"
)
Double
orderCreatedAt
,
@JsonProperty
(
"orderUpdatedAt"
)
Double
orderUpdatedAt
,
@JsonProperty
(
"orderItems"
)
List
<
OrderItemParse
>
orderItems
,
@JsonProperty
(
"customerAddress"
)
OrderAddressParse
customerAddress
){
this
.
id
=
id
;
this
.
customerAddress
=
customerAddress
;
this
.
customerId
=
customerId
;
this
.
customerEmailAddress
=
customerEmailAddress
;
this
.
orderTrackingCode
=
orderTrackingCode
;
this
.
orderStatus
=
orderStatus
;
this
.
orderCreatedAt
=
orderCreatedAt
;
this
.
orderUpdatedAt
=
orderUpdatedAt
;
this
.
orderItems
=
orderItems
;
}
private
String
id
;
private
String
customerId
;
private
String
customerEmailAddress
;
private
String
orderTrackingCode
;
private
String
orderStatus
;
private
Double
orderCreatedAt
;
private
Double
orderUpdatedAt
;
private
List
<
OrderItemParse
>
orderItems
;
private
OrderAddressParse
customerAddress
;
}
ecom-service/src/main/java/com/nisum/ecomservice/dto/OrderAddressParse.java
0 → 100644
View file @
d99ef97e
package
com
.
nisum
.
ecomservice
.
dto
;
import
com.fasterxml.jackson.annotation.JsonCreator
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
@Setter
@Getter
public
class
OrderAddressParse
{
@JsonCreator
public
OrderAddressParse
(
@JsonProperty
(
"street"
)
String
street
,
@JsonProperty
(
"city"
)
String
city
,
@JsonProperty
(
"state"
)
String
state
,
@JsonProperty
(
"zip"
)
String
zip
)
{
this
.
street
=
street
;
this
.
city
=
city
;
this
.
state
=
state
;
this
.
zip
=
zip
;
}
private
String
street
;
private
String
city
;
private
String
state
;
private
String
zip
;
}
ecom-service/src/main/java/com/nisum/ecomservice/dto/OrderItem.java
0 → 100644
View file @
d99ef97e
package
com
.
nisum
.
ecomservice
.
dto
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@NoArgsConstructor
@ToString
public
class
OrderItem
{
private
String
itemName
;
private
String
itemId
;
private
Integer
itemQuantity
;
private
Float
itemPrice
;
private
String
itemSku
;
}
ecom-service/src/main/java/com/nisum/ecomservice/dto/OrderItemParse.java
0 → 100644
View file @
d99ef97e
package
com
.
nisum
.
ecomservice
.
dto
;
import
com.fasterxml.jackson.annotation.JsonCreator
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
@Setter
@Getter
public
class
OrderItemParse
{
@JsonCreator
public
OrderItemParse
(
@JsonProperty
(
"itemName"
)
String
itemName
,
@JsonProperty
(
"itemId"
)
String
itemId
,
@JsonProperty
(
"itemQuantity"
)
Integer
itemQuantity
,
@JsonProperty
(
"itemPrice"
)
Float
itemPrice
,
@JsonProperty
(
"itemSku"
)
String
itemSku
)
{
this
.
itemName
=
itemName
;
this
.
itemId
=
itemId
;
this
.
itemQuantity
=
itemQuantity
;
this
.
itemPrice
=
itemPrice
;
this
.
itemSku
=
itemSku
;
}
private
String
itemName
;
private
String
itemId
;
private
Integer
itemQuantity
;
private
Float
itemPrice
;
private
String
itemSku
;
}
ecom-service/src/main/java/com/nisum/ecomservice/dto/OrderRequest.java
0 → 100644
View file @
d99ef97e
package
com
.
nisum
.
ecomservice
.
dto
;
import
com.nisum.ecomservice.model.Address
;
import
com.nisum.ecomservice.model.Cart
;
import
com.nisum.ecomservice.model.User
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
@AllArgsConstructor
public
class
OrderRequest
{
private
User
user
;
private
Address
address
;
private
Cart
cart
;
}
ecom-service/src/main/java/com/nisum/ecomservice/dto/OrderSubmission.java
0 → 100644
View file @
d99ef97e
package
com
.
nisum
.
ecomservice
.
dto
;
import
com.nisum.ecomservice.model.Address
;
import
lombok.*
;
import
java.util.List
;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public
class
OrderSubmission
{
private
String
customerId
;
private
String
customerEmailAddress
;
private
List
<
OrderItem
>
orderItems
;
private
Address
customerAddress
;
// private String orderStatus = "order status";
// private long orderCreatedAt = 1;
// private long orderUpdatedAt = 1;
// private String orderTrackingCode = "tracking code";
}
ecom-service/src/main/java/com/nisum/ecomservice/model/Address.java
View file @
d99ef97e
...
...
@@ -3,10 +3,12 @@ package com.nisum.ecomservice.model;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@AllArgsConstructor
@ToString
public
class
Address
{
private
String
street
;
...
...
ecom-service/src/main/java/com/nisum/ecomservice/model/
Order
.java
→
ecom-service/src/main/java/com/nisum/ecomservice/model/
Cart
.java
View file @
d99ef97e
...
...
@@ -3,23 +3,18 @@ package com.nisum.ecomservice.model;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.Date
;
import
java.util.List
;
@Document
(
collection
=
"carts"
)
@Getter
@Setter
@AllArgsConstructor
public
class
Order
{
public
class
Cart
{
@Id
private
String
id
;
private
String
customerId
;
private
String
customerEmailAddress
;
private
String
orderTrackingCode
;
private
String
orderStatus
;
private
Double
orderCreatedAt
;
private
Double
orderUpdatedAt
;
private
List
<
Product
>
orderItems
;
private
Address
customerAddress
;
private
String
userId
;
private
List
<
CartItem
>
cartItems
;
}
ecom-service/src/main/java/com/nisum/ecomservice/model/CartItem.java
View file @
d99ef97e
...
...
@@ -5,10 +5,12 @@ import lombok.AllArgsConstructor;
import
lombok.Data
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@AllArgsConstructor
@ToString
@Data
public
class
CartItem
{
private
ProductRef
productRef
;
...
...
ecom-service/src/main/java/com/nisum/ecomservice/model/Product.java
View file @
d99ef97e
...
...
@@ -2,16 +2,14 @@ package com.nisum.ecomservice.model;
import
com.fasterxml.jackson.annotation.JsonCreator
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
lombok.Setter
;
import
lombok.*
;
import
org.springframework.data.annotation.Id
;
@Getter
@Setter
public
class
Product
{
private
String
id
;
private
String
sku
;
private
String
upc
;
...
...
@@ -36,7 +34,8 @@ public class Product {
@JsonProperty
(
"blockedStock"
)
Integer
blockedStock
,
@JsonProperty
(
"productImageUrl"
)
String
productImageUrl
,
@JsonProperty
(
"brand"
)
String
brand
,
@JsonProperty
(
"category"
)
String
category
)
{
@JsonProperty
(
"category"
)
String
category
){
this
.
id
=
id
;
this
.
sku
=
sku
;
this
.
upc
=
upc
;
...
...
ecom-service/src/main/java/com/nisum/ecomservice/model/ProductRef.java
View file @
d99ef97e
...
...
@@ -3,10 +3,12 @@ package com.nisum.ecomservice.model;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@AllArgsConstructor
@ToString
public
class
ProductRef
{
private
String
id
;
private
String
sku
;
...
...
ecom-service/src/main/java/com/nisum/ecomservice/model/User.java
View file @
d99ef97e
package
com
.
nisum
.
ecomservice
.
model
;
import
com.fasterxml.jackson.annotation.JsonCreator
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.*
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.List
;
@Document
(
collection
=
"users"
)
@Getter
@Setter
@AllArgsConstructor
@ToString
public
class
User
{
@Id
...
...
ecom-service/src/main/java/com/nisum/ecomservice/service/OrderService.java
View file @
d99ef97e
package
com
.
nisum
.
ecomservice
.
service
;
import
com.nisum.ecomservice.config.AppConfig
;
import
com.nisum.ecomservice.dto.Order
;
import
com.nisum.ecomservice.dto.OrderItem
;
import
com.nisum.ecomservice.dto.OrderRequest
;
import
com.nisum.ecomservice.dto.OrderSubmission
;
import
com.nisum.ecomservice.model.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Service
public
class
OrderService
{
@Autowired
ProductService
productService
;
public
Mono
<
Order
>
postOrder
(
OrderRequest
orderRequest
)
{
//create user object from user object details
User
user
=
orderRequest
.
getUser
();
Address
address
=
orderRequest
.
getAddress
();
Cart
cart
=
orderRequest
.
getCart
();
//for each item grab product details from products API
List
<
Mono
<
Product
>>
productsToOrder
=
cart
.
getCartItems
().
stream
()
.
map
(
cartItem
->
cartItem
.
getProductRef
().
getSku
())
.
map
(
sku
->
productService
.
getProductBySku
(
sku
))
.
collect
(
Collectors
.
toList
());
Flux
<
Product
>
productFlux
=
Flux
.
concat
(
productsToOrder
);
Flux
<
OrderItem
>
orderItems
=
productFlux
.
map
(
product
->
{
OrderItem
orderItem
=
new
OrderItem
();
orderItem
.
setItemId
(
product
.
getSku
());
orderItem
.
setItemName
(
product
.
getProductName
());
orderItem
.
setItemSku
(
product
.
getSku
());
orderItem
.
setItemPrice
(
product
.
getPrice
());
List
<
CartItem
>
items
=
cart
.
getCartItems
().
stream
().
filter
(
cartItem
->
cartItem
.
getProductRef
().
getSku
()
.
equals
(
product
.
getSku
()))
.
collect
(
Collectors
.
toList
());
Integer
quantity
=
items
.
get
(
0
).
getQuantity
();
orderItem
.
setItemQuantity
(
quantity
);
return
orderItem
;
});
//
Mono
<
Mono
<
Order
>>
map
=
orderItems
.
collectList
().
map
(
itemList
->
{
OrderSubmission
orderSubmission
=
new
OrderSubmission
();
orderSubmission
.
setOrderItems
(
itemList
);
orderSubmission
.
setCustomerAddress
(
address
);
orderSubmission
.
setCustomerId
(
user
.
getUserId
());
orderSubmission
.
setCustomerEmailAddress
(
user
.
getEmail
());
System
.
out
.
println
(
orderSubmission
);
return
orderSubmission
;
}).
map
(
orderSubmission
->
postOrderToAPI
(
orderSubmission
));
//post order to OMS team
//retrieve their response
return
map
.
flatMap
(
orderMono
->
orderMono
);
}
public
Mono
<
Order
>
postOrderToAPI
(
OrderSubmission
orderSubmission
){
return
WebClient
.
create
(
String
.
format
(
"%s/orders"
,
AppConfig
.
getOrderManagementAPI
()))
.
post
()
.
bodyValue
(
orderSubmission
)
.
retrieve
()
.
bodyToMono
(
Order
.
class
);
}
}
/*
.map(productMono -> {
productMono
.map(product -> {
OrderItem orderItem = new OrderItem();
orderItem.setItemId(product.getSku());
orderItem.setItemName(product.getProductName());
orderItem.setItemSku(product.getSku());
orderItem.setItemPrice(product.getPrice());
List<CartItem> items = user.getCart().stream().filter(cartItem -> cartItem.getProductRef().getSku()
.equals(product.getSku()))
.collect(Collectors.toList());
Integer quantity = items.get(0).getQuantity();
orderItem.setItemQuantity(quantity);
System.out.println(orderItem);
return orderItem;
})
})
*/
\ No newline at end of file
ecom-service/src/main/java/com/nisum/ecomservice/service/ProductService.java
View file @
d99ef97e
package
com
.
nisum
.
ecomservice
.
service
;
import
com.nisum.ecomservice.model.Product
;
import
com.nisum.ecomservice.model.Promotion
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
reactor.core.publisher.Mono
;
import
com.nisum.ecomservice.model.Promotion
;
import
reactor.core.publisher.Flux
;
@Service
public
class
ProductService
{
public
Mono
<
Product
>
getProductBySku
(
String
sku
){
return
WebClient
.
create
(
String
.
format
(
"http://localhost:8082/api/products/%s"
,
sku
))
.
get
()
.
retrieve
()
.
bodyToMono
(
Product
.
class
);
}
public
Flux
<
Product
>
getAllProducts
()
{
return
WebClient
...
...
ecom-service/src/main/resources/application.properties
View file @
d99ef97e
spring.data.mongodb.uri
=
mongodb+srv://ecom:ecom@e-commerce-db-cluster.va815.mongodb.net/e-commerce-db?retryWrites=true&w=majority
spring.data.mongodb.database
=
e-commerce-db
server.port
=
8080
\ No newline at end of file
security.enable-csrf
=
false
server.port
=
8080
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