Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
order-management-backend
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
1
Merge Requests
1
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
order-management-backend
Commits
8284503d
Commit
8284503d
authored
May 05, 2021
by
Vishal Vaddadhi
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
https://gitlab.mynisum.com/ascend/order-management
into vishal_init_kafka
Merging into new branch
parents
542c80a8
1c578ac7
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
207 additions
and
18 deletions
+207
-18
pom.xml
backend/order-management/pom.xml
+6
-0
OrderController.java
...a/com/afp/ordermanagement/controller/OrderController.java
+29
-9
CustomerAddress.java
...n/java/com/afp/ordermanagement/model/CustomerAddress.java
+36
-0
Item.java
...ent/src/main/java/com/afp/ordermanagement/model/Item.java
+37
-0
Order.java
...nt/src/main/java/com/afp/ordermanagement/model/Order.java
+60
-9
OrderRepository.java
...a/com/afp/ordermanagement/repository/OrderRepository.java
+4
-0
OrderService.java
...in/java/com/afp/ordermanagement/service/OrderService.java
+35
-0
No files found.
backend/order-management/pom.xml
View file @
8284503d
...
@@ -25,6 +25,12 @@
...
@@ -25,6 +25,12 @@
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-webflux
</artifactId>
<artifactId>
spring-boot-starter-webflux
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
1.18.20
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
...
...
backend/order-management/src/main/java/com/afp/ordermanagement/controller/OrderController.java
View file @
8284503d
...
@@ -2,23 +2,43 @@ package com.afp.ordermanagement.controller;
...
@@ -2,23 +2,43 @@ package com.afp.ordermanagement.controller;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.repository.OrderRepository
;
import
com.afp.ordermanagement.repository.OrderRepository
;
import
com.afp.ordermanagement.service.OrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.
web.bind.annotation.GetMapping
;
import
org.springframework.
http.HttpStatus
;
import
org.springframework.
web.bind.annotation.RequestMapping
;
import
org.springframework.
http.ResponseEntity
;
import
org.springframework.web.bind.annotation.
RestController
;
import
org.springframework.web.bind.annotation.
*
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
@RestController
@RestController
@RequestMapping
(
"/api"
)
@RequestMapping
(
"/api"
)
public
class
OrderController
{
public
class
OrderController
{
@Autowired
@Autowired
OrderRepository
orderRepository
;
private
OrderService
orderService
;
@GetMapping
(
"/order"
)
@GetMapping
(
"/orders"
)
public
Flux
<
Order
>
getAllManagers
()
{
public
Flux
<
Order
>
getAllOrders
(){
System
.
out
.
println
(
"here"
);
return
orderService
.
getAllOrders
();
Flux
<
Order
>
managerFlux
=
orderRepository
.
findAll
();
return
managerFlux
;
}
}
@GetMapping
(
"/orders/{customerId}"
)
public
Flux
<
Order
>
getAllOrdersByCustomerId
(
@PathVariable
(
"customerId"
)
String
customerId
)
{
return
orderService
.
getAllOrdersByCustomerId
(
customerId
);
}
@PostMapping
(
"/orders"
)
@ResponseStatus
(
HttpStatus
.
CREATED
)
public
Mono
<
Order
>
saveOrder
(
@RequestBody
Order
order
){
return
orderService
.
createOrder
(
order
);
}
@PutMapping
(
"/order/{orderId}"
)
public
Mono
<
ResponseEntity
<
Order
>>
updateOrder
(
@PathVariable
(
value
=
"orderId"
)
String
orderId
,
@RequestBody
Order
order
){
return
orderService
.
updateOrderByOrderId
(
orderId
,
order
)
.
map
(
updatedOrder
->
ResponseEntity
.
ok
(
updatedOrder
))
.
defaultIfEmpty
(
ResponseEntity
.
notFound
().
build
());
}
}
}
backend/order-management/src/main/java/com/afp/ordermanagement/model/CustomerAddress.java
0 → 100644
View file @
8284503d
package
com
.
afp
.
ordermanagement
.
model
;
import
lombok.Data
;
import
java.util.Objects
;
@Data
public
class
CustomerAddress
{
private
String
street
;
private
String
city
;
private
String
state
;
private
String
zip
;
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(!(
o
instanceof
CustomerAddress
))
return
false
;
CustomerAddress
that
=
(
CustomerAddress
)
o
;
return
getStreet
().
equals
(
that
.
getStreet
())
&&
getCity
().
equals
(
that
.
getCity
())
&&
getState
().
equals
(
that
.
getState
())
&&
getZip
().
equals
(
that
.
getZip
());
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
getStreet
(),
getCity
(),
getState
(),
getZip
());
}
@Override
public
String
toString
()
{
return
"CustomerAddress{"
+
"street='"
+
street
+
'\''
+
", city='"
+
city
+
'\''
+
", state='"
+
state
+
'\''
+
", zip='"
+
zip
+
'\''
+
'}'
;
}
}
backend/order-management/src/main/java/com/afp/ordermanagement/model/Item.java
0 → 100644
View file @
8284503d
package
com
.
afp
.
ordermanagement
.
model
;
import
lombok.Data
;
import
java.util.Objects
;
@Data
public
class
Item
{
private
String
itemId
;
private
int
itemQuantity
;
private
double
itemPrice
;
private
int
itemSku
;
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(!(
o
instanceof
Item
))
return
false
;
Item
item
=
(
Item
)
o
;
return
getItemQuantity
()
==
item
.
getItemQuantity
()
&&
Double
.
compare
(
item
.
getItemPrice
(),
getItemPrice
())
==
0
&&
getItemSku
()
==
item
.
getItemSku
()
&&
getItemId
().
equals
(
item
.
getItemId
());
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
getItemId
(),
getItemQuantity
(),
getItemPrice
(),
getItemSku
());
}
@Override
public
String
toString
()
{
return
"Item{"
+
"itemId='"
+
itemId
+
'\''
+
", itemQuantity="
+
itemQuantity
+
", itemPrice="
+
itemPrice
+
", itemSku="
+
itemSku
+
'}'
;
}
}
backend/order-management/src/main/java/com/afp/ordermanagement/model/Order.java
View file @
8284503d
package
com
.
afp
.
ordermanagement
.
model
;
package
com
.
afp
.
ordermanagement
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.List
;
import
java.util.Objects
;
@Data
@Builder
@AllArgsConstructor
@Document
(
collection
=
"orders"
)
@Document
(
collection
=
"orders"
)
public
class
Order
{
public
class
Order
{
@Id
@Id
private
String
id
;
private
String
id
;
private
String
emailAddress
;
public
String
getId
()
{
private
String
customerId
;
return
id
;
private
String
customerEmailAddress
;
@Builder
.
Default
private
String
orderTrackingCode
=
"N/A"
;
private
enum
OrderStatus
{
RECEIVED
,
FULFILLED
,
CANCELLED
};
@Builder
.
Default
private
OrderStatus
orderStatus
=
OrderStatus
.
RECEIVED
;
@Builder
.
Default
private
double
orderCreatedAt
=
System
.
currentTimeMillis
();
@Builder
.
Default
private
double
orderUpdatedAt
=
System
.
currentTimeMillis
();
private
List
<
Item
>
orderItems
;
private
CustomerAddress
customerAddress
;
public
Order
(){
orderStatus
=
OrderStatus
.
RECEIVED
;
orderCreatedAt
=
System
.
currentTimeMillis
();
orderUpdatedAt
=
System
.
currentTimeMillis
();
orderTrackingCode
=
"N/A"
;
}
}
public
void
setId
(
String
id
)
{
@Override
this
.
id
=
id
;
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(!(
o
instanceof
Order
))
return
false
;
Order
order
=
(
Order
)
o
;
return
Double
.
compare
(
order
.
getOrderCreatedAt
(),
getOrderCreatedAt
())
==
0
&&
Double
.
compare
(
order
.
getOrderUpdatedAt
(),
getOrderUpdatedAt
())
==
0
&&
getId
().
equals
(
order
.
getId
())
&&
getCustomerId
().
equals
(
order
.
getCustomerId
())
&&
getCustomerEmailAddress
().
equals
(
order
.
getCustomerEmailAddress
())
&&
Objects
.
equals
(
getOrderTrackingCode
(),
order
.
getOrderTrackingCode
())
&&
getOrderStatus
()
==
order
.
getOrderStatus
()
&&
getOrderItems
().
equals
(
order
.
getOrderItems
())
&&
getCustomerAddress
().
equals
(
order
.
getCustomerAddress
());
}
}
public
String
getEmailAddress
()
{
@Override
return
emailAddress
;
public
int
hashCode
()
{
return
Objects
.
hash
(
getId
(),
getCustomerId
(),
getCustomerEmailAddress
(),
getOrderTrackingCode
(),
getOrderStatus
(),
getOrderCreatedAt
(),
getOrderUpdatedAt
(),
getOrderItems
(),
getCustomerAddress
());
}
}
public
void
setEmailAddress
(
String
emailAddress
)
{
@Override
this
.
emailAddress
=
emailAddress
;
public
String
toString
()
{
return
"Order{"
+
"id='"
+
id
+
'\''
+
", customerId='"
+
customerId
+
'\''
+
", customerEmailAddress='"
+
customerEmailAddress
+
'\''
+
", orderTrackingCode='"
+
orderTrackingCode
+
'\''
+
", orderStatus="
+
orderStatus
+
", orderCreatedAt="
+
orderCreatedAt
+
", orderUpdatedAt="
+
orderUpdatedAt
+
", orderItems="
+
orderItems
+
", customerAddress="
+
customerAddress
+
'}'
;
}
}
}
}
backend/order-management/src/main/java/com/afp/ordermanagement/repository/OrderRepository.java
View file @
8284503d
...
@@ -3,7 +3,11 @@ package com.afp.ordermanagement.repository;
...
@@ -3,7 +3,11 @@ package com.afp.ordermanagement.repository;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.model.Order
;
import
org.springframework.data.mongodb.repository.ReactiveMongoRepository
;
import
org.springframework.data.mongodb.repository.ReactiveMongoRepository
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
reactor.core.publisher.Flux
;
import
java.util.List
;
@Repository
@Repository
public
interface
OrderRepository
extends
ReactiveMongoRepository
<
Order
,
String
>
{
public
interface
OrderRepository
extends
ReactiveMongoRepository
<
Order
,
String
>
{
Flux
<
Order
>
findByCustomerId
(
String
customerId
);
}
}
backend/order-management/src/main/java/com/afp/ordermanagement/service/OrderService.java
View file @
8284503d
package
com
.
afp
.
ordermanagement
.
service
;
package
com
.
afp
.
ordermanagement
.
service
;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.repository.OrderRepository
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
@Service
public
class
OrderService
{
public
class
OrderService
{
@Autowired
OrderRepository
orderRepository
;
public
Mono
<
Order
>
createOrder
(
Order
newOrder
){
return
orderRepository
.
save
(
newOrder
);
}
public
Flux
<
Order
>
getAllOrders
(){
return
orderRepository
.
findAll
();
}
public
Flux
<
Order
>
getAllOrdersByCustomerId
(
String
customerId
){
return
orderRepository
.
findByCustomerId
(
customerId
);
}
public
Mono
<
Order
>
updateOrderByOrderId
(
String
orderId
,
Order
newOrder
){
return
orderRepository
.
findById
(
orderId
)
.
flatMap
(
existingOrder
->
{
existingOrder
.
setCustomerAddress
(
newOrder
.
getCustomerAddress
());
existingOrder
.
setCustomerEmailAddress
(
newOrder
.
getCustomerEmailAddress
());
existingOrder
.
setOrderTrackingCode
(
newOrder
.
getOrderTrackingCode
());
existingOrder
.
setOrderItems
(
newOrder
.
getOrderItems
());
existingOrder
.
setOrderStatus
(
newOrder
.
getOrderStatus
());
return
orderRepository
.
save
(
existingOrder
);
});
}
}
}
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