Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
ec-simple
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
0Tyler
ec-simple
Commits
c5c9b132
Commit
c5c9b132
authored
Jul 15, 2022
by
0Tyler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
checkout api
parent
75175179
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
78 additions
and
17 deletions
+78
-17
src/main/java/edu/prlab/ecsimple/config/DefaultDataBean.java
src/main/java/edu/prlab/ecsimple/config/DefaultDataBean.java
+3
-0
src/main/java/edu/prlab/ecsimple/controller/ProductController.java
...java/edu/prlab/ecsimple/controller/ProductController.java
+21
-11
src/main/java/edu/prlab/ecsimple/domain/Item.java
src/main/java/edu/prlab/ecsimple/domain/Item.java
+2
-2
src/main/java/edu/prlab/ecsimple/model/OrderModel.java
src/main/java/edu/prlab/ecsimple/model/OrderModel.java
+23
-0
src/main/java/edu/prlab/ecsimple/repo/ItemRepo.java
src/main/java/edu/prlab/ecsimple/repo/ItemRepo.java
+1
-1
src/main/java/edu/prlab/ecsimple/service/OrderService.java
src/main/java/edu/prlab/ecsimple/service/OrderService.java
+4
-1
src/main/java/edu/prlab/ecsimple/service/OrderServiceImpl.java
...ain/java/edu/prlab/ecsimple/service/OrderServiceImpl.java
+24
-2
No files found.
src/main/java/edu/prlab/ecsimple/config/DefaultDataBean.java
View file @
c5c9b132
...
...
@@ -6,12 +6,14 @@ import edu.prlab.ecsimple.service.AccountServiceImpl;
import
edu.prlab.ecsimple.service.OrderServiceImpl
;
import
edu.prlab.ecsimple.service.ProductServiceImpl
;
import
lombok.RequiredArgsConstructor
;
import
org.hibernate.id.GUIDGenerator
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationRunner
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.UUID
;
@RequiredArgsConstructor
@Component
...
...
@@ -38,6 +40,7 @@ public class DefaultDataBean implements ApplicationRunner {
.
build
())
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"no order"
));
Item
b
=
orderService
.
create
(
Item
.
builder
()
.
sku
(
UUID
.
randomUUID
().
toString
())
.
quantity
(
1
)
.
build
())
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"no Item"
));
...
...
src/main/java/edu/prlab/ecsimple/controller/ProductController.java
View file @
c5c9b132
package
edu.prlab.ecsimple.controller
;
import
edu.prlab.ecsimple.common.mapper.MapperUtil
;
import
edu.prlab.ecsimple.model.OrderModel
;
import
edu.prlab.ecsimple.model.ResponseModel
;
import
edu.prlab.ecsimple.service.OrderServiceImpl
;
import
edu.prlab.ecsimple.service.ProductService
;
import
edu.prlab.ecsimple.service.ProductServiceImpl
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
@RestController
@RequiredArgsConstructor
public
class
ProductController
{
private
final
ProductServiceImpl
productService
;
private
final
OrderServiceImpl
orderService
;
@GetMapping
(
"/product/{sku}"
)
public
ResponseEntity
<
ResponseModel
>
getProduct
(
@PathVariable
Integer
sku
)
{
...
...
@@ -33,13 +34,22 @@ public class ProductController {
public
ResponseEntity
<
ResponseModel
>
getProducts
()
{
return
ResponseEntity
.
ok
()
.
body
(
ResponseModel
.
builder
()
.
status
(
"status"
)
.
data
(
MapperUtil
.
objectToJsonNode
(
productService
.
getProducts
()))
.
build
());
.
status
(
"status"
)
.
data
(
MapperUtil
.
objectToJsonNode
(
productService
.
getProducts
()))
.
build
());
}
// @PostMapping("/checkout")
// public ResponseEntity<ResponseModel> checkout(){
// return
// }
@PostMapping
(
"/checkout"
)
public
ResponseEntity
<
ResponseModel
>
checkout
(
@RequestBody
OrderModel
orderModel
)
{
return
orderService
.
checkout
(
orderModel
)
.
map
(
MapperUtil:
:
objectToJsonNode
)
.
map
(
it
->
ResponseEntity
.
ok
()
.
body
(
ResponseModel
.
builder
()
.
status
(
"status"
)
.
data
(
it
)
.
build
()))
.
orElseGet
(()
->
ResponseEntity
.
badRequest
().
body
(
ResponseModel
.
builder
()
.
status
(
"status"
)
.
build
()));
}
}
\ No newline at end of file
src/main/java/edu/prlab/ecsimple/domain/Item.java
View file @
c5c9b132
...
...
@@ -15,8 +15,8 @@ import javax.persistence.*;
public
class
Item
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
)
private
Integer
sku
;
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
String
sku
;
@Column
private
Integer
quantity
;
...
...
src/main/java/edu/prlab/ecsimple/model/OrderModel.java
0 → 100644
View file @
c5c9b132
package
edu.prlab.ecsimple.model
;
import
edu.prlab.ecsimple.domain.Item
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.FetchType
;
import
javax.persistence.ManyToMany
;
import
java.util.ArrayList
;
import
java.util.Collection
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
OrderModel
{
@Builder
.
Default
private
Collection
<
Item
>
lineItems
=
new
ArrayList
<>();
private
String
email
;
private
String
creditCard
;
}
src/main/java/edu/prlab/ecsimple/repo/ItemRepo.java
View file @
c5c9b132
...
...
@@ -5,5 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
import
org.springframework.stereotype.Repository
;
@Repository
public
interface
ItemRepo
extends
JpaRepository
<
Item
,
Integer
>
{
public
interface
ItemRepo
extends
JpaRepository
<
Item
,
String
>
{
}
src/main/java/edu/prlab/ecsimple/service/OrderService.java
View file @
c5c9b132
...
...
@@ -2,11 +2,14 @@ package edu.prlab.ecsimple.service;
import
edu.prlab.ecsimple.domain.Item
;
import
edu.prlab.ecsimple.domain.TheOrder
;
import
edu.prlab.ecsimple.model.OrderModel
;
import
java.util.Optional
;
public
interface
OrderService
{
Optional
<
TheOrder
>
create
(
TheOrder
theOrder
);
Optional
<
Item
>
create
(
Item
item
);
void
addItemToOrder
(
Integer
orderId
,
Integer
itemId
);
void
addItemToOrder
(
Integer
orderId
,
String
sku
);
Optional
<
TheOrder
>
checkout
(
OrderModel
orderModel
);
}
src/main/java/edu/prlab/ecsimple/service/OrderServiceImpl.java
View file @
c5c9b132
...
...
@@ -3,13 +3,19 @@ package edu.prlab.ecsimple.service;
import
edu.prlab.ecsimple.common.exception.EntityNotFoundException
;
import
edu.prlab.ecsimple.domain.Item
;
import
edu.prlab.ecsimple.domain.TheOrder
;
import
edu.prlab.ecsimple.model.OrderModel
;
import
edu.prlab.ecsimple.model.ResponseModel
;
import
edu.prlab.ecsimple.repo.ItemRepo
;
import
edu.prlab.ecsimple.repo.OrderRepo
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
@Service
@RequiredArgsConstructor
...
...
@@ -32,13 +38,29 @@ public class OrderServiceImpl implements OrderService {
}
@Override
public
void
addItemToOrder
(
Integer
orderId
,
Integer
itemId
)
{
public
void
addItemToOrder
(
Integer
orderId
,
String
sku
)
{
orderRepo
.
findById
(
orderId
)
.
map
(
order
->
itemRepo
.
findById
(
itemId
)
.
map
(
order
->
itemRepo
.
findById
(
sku
)
.
map
(
item
->
order
.
getItems
().
add
(
item
))
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"No found this order"
)))
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"No found this order"
));
}
@Override
public
Optional
<
TheOrder
>
checkout
(
OrderModel
orderModel
)
{
return
Optional
.
of
(
orderModel
)
.
map
(
it
->
orderRepo
.
save
(
TheOrder
.
builder
()
.
email
(
orderModel
.
getEmail
())
.
state
(
"created"
)
.
checkoutDate
(
LocalDateTime
.
now
().
toString
())
.
build
()))
.
map
(
order
->
{
orderModel
.
getLineItems
().
stream
()
.
map
(
it
->
create
(
it
)
.
orElseThrow
(()
->
new
RuntimeException
(
"save item error"
)))
.
forEach
(
it
->
addItemToOrder
(
order
.
getIid
(),
it
.
getSku
()));
return
order
;
});
}
}
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