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
a003e5dc
Commit
a003e5dc
authored
May 05, 2021
by
earndt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[AFP-18]
✨
Adds Order GET, POST, PUT endpoints [
@earndt
]
parent
30bafe54
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
92 additions
and
12 deletions
+92
-12
OrderController.java
...a/com/afp/ordermanagement/controller/OrderController.java
+29
-9
Order.java
...nt/src/main/java/com/afp/ordermanagement/model/Order.java
+24
-3
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/src/main/java/com/afp/ordermanagement/controller/OrderController.java
View file @
a003e5dc
...
...
@@ -2,23 +2,43 @@ package com.afp.ordermanagement.controller;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.repository.OrderRepository
;
import
com.afp.ordermanagement.service.OrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.
web.bind.annotation.GetMapping
;
import
org.springframework.
web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.
RestController
;
import
org.springframework.
http.HttpStatus
;
import
org.springframework.
http.ResponseEntity
;
import
org.springframework.web.bind.annotation.
*
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
@RestController
@RequestMapping
(
"/api"
)
public
class
OrderController
{
@Autowired
OrderRepository
orderRepository
;
private
OrderService
orderService
;
@GetMapping
(
"/order"
)
public
Flux
<
Order
>
getAllManagers
()
{
System
.
out
.
println
(
"here"
);
Flux
<
Order
>
managerFlux
=
orderRepository
.
findAll
();
return
managerFlux
;
@GetMapping
(
"/orders"
)
public
Flux
<
Order
>
getAllOrders
(){
return
orderService
.
getAllOrders
();
}
@GetMapping
(
"/orders/{userId}"
)
public
Flux
<
Order
>
getAllOrdersByUserId
(
@PathVariable
(
"userId"
)
String
userId
)
{
return
orderService
.
getAllOrdersByUserId
(
userId
);
}
@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/Order.java
View file @
a003e5dc
package
com
.
afp
.
ordermanagement
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Objects
;
@Data
@Builder
@AllArgsConstructor
@Document
(
collection
=
"orders"
)
public
class
Order
{
...
...
@@ -16,7 +21,9 @@ public class Order {
private
String
userId
;
private
String
emailAddress
;
private
String
trackingCode
;
@Builder
.
Default
private
String
trackingCode
=
"N/A"
;
private
enum
Status
{
UNFULFILLED
,
...
...
@@ -24,11 +31,25 @@ public class Order {
CANCELLED
};
private
double
createdAt
;
private
double
updatedAt
;
@Builder
.
Default
private
Status
status
=
Status
.
UNFULFILLED
;
@Builder
.
Default
private
double
createdAt
=
System
.
currentTimeMillis
();
@Builder
.
Default
private
double
updatedAt
=
System
.
currentTimeMillis
();
private
List
<
Item
>
items
;
private
Address
address
;
public
Order
(){
status
=
Status
.
UNFULFILLED
;
createdAt
=
System
.
currentTimeMillis
();
updatedAt
=
System
.
currentTimeMillis
();
trackingCode
=
"N/A"
;
}
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
...
...
backend/order-management/src/main/java/com/afp/ordermanagement/repository/OrderRepository.java
View file @
a003e5dc
...
...
@@ -3,7 +3,11 @@ package com.afp.ordermanagement.repository;
import
com.afp.ordermanagement.model.Order
;
import
org.springframework.data.mongodb.repository.ReactiveMongoRepository
;
import
org.springframework.stereotype.Repository
;
import
reactor.core.publisher.Flux
;
import
java.util.List
;
@Repository
public
interface
OrderRepository
extends
ReactiveMongoRepository
<
Order
,
String
>
{
Flux
<
Order
>
findByUserId
(
String
userId
);
}
backend/order-management/src/main/java/com/afp/ordermanagement/service/OrderService.java
View file @
a003e5dc
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
{
@Autowired
OrderRepository
orderRepository
;
public
Mono
<
Order
>
createOrder
(
Order
newOrder
){
return
orderRepository
.
save
(
newOrder
);
}
public
Flux
<
Order
>
getAllOrders
(){
return
orderRepository
.
findAll
();
}
public
Flux
<
Order
>
getAllOrdersByUserId
(
String
userId
){
return
orderRepository
.
findByUserId
(
userId
);
}
public
Mono
<
Order
>
updateOrderByOrderId
(
String
orderId
,
Order
newOrder
){
return
orderRepository
.
findById
(
orderId
)
.
flatMap
(
existingOrder
->
{
existingOrder
.
setAddress
(
newOrder
.
getAddress
());
existingOrder
.
setEmailAddress
(
newOrder
.
getEmailAddress
());
existingOrder
.
setTrackingCode
(
newOrder
.
getTrackingCode
());
existingOrder
.
setItems
(
newOrder
.
getItems
());
existingOrder
.
setStatus
(
newOrder
.
getStatus
());
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