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
75175179
Commit
75175179
authored
Jul 14, 2022
by
0Tyler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
checkout api
parent
d3a4013d
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
321 additions
and
10 deletions
+321
-10
src/main/java/edu/prlab/ecsimple/common/mapper/MapperUtil.java
...ain/java/edu/prlab/ecsimple/common/mapper/MapperUtil.java
+11
-0
src/main/java/edu/prlab/ecsimple/config/DefaultBean.java
src/main/java/edu/prlab/ecsimple/config/DefaultBean.java
+0
-1
src/main/java/edu/prlab/ecsimple/config/DefaultDataBean.java
src/main/java/edu/prlab/ecsimple/config/DefaultDataBean.java
+24
-2
src/main/java/edu/prlab/ecsimple/config/SecurityConfig.java
src/main/java/edu/prlab/ecsimple/config/SecurityConfig.java
+6
-7
src/main/java/edu/prlab/ecsimple/controller/ProductController.java
...java/edu/prlab/ecsimple/controller/ProductController.java
+45
-0
src/main/java/edu/prlab/ecsimple/domain/Item.java
src/main/java/edu/prlab/ecsimple/domain/Item.java
+23
-0
src/main/java/edu/prlab/ecsimple/domain/Product.java
src/main/java/edu/prlab/ecsimple/domain/Product.java
+30
-0
src/main/java/edu/prlab/ecsimple/domain/TheOrder.java
src/main/java/edu/prlab/ecsimple/domain/TheOrder.java
+38
-0
src/main/java/edu/prlab/ecsimple/model/ResponseModel.java
src/main/java/edu/prlab/ecsimple/model/ResponseModel.java
+16
-0
src/main/java/edu/prlab/ecsimple/repo/ItemRepo.java
src/main/java/edu/prlab/ecsimple/repo/ItemRepo.java
+9
-0
src/main/java/edu/prlab/ecsimple/repo/OrderRepo.java
src/main/java/edu/prlab/ecsimple/repo/OrderRepo.java
+9
-0
src/main/java/edu/prlab/ecsimple/repo/ProductRepo.java
src/main/java/edu/prlab/ecsimple/repo/ProductRepo.java
+12
-0
src/main/java/edu/prlab/ecsimple/service/OrderService.java
src/main/java/edu/prlab/ecsimple/service/OrderService.java
+12
-0
src/main/java/edu/prlab/ecsimple/service/OrderServiceImpl.java
...ain/java/edu/prlab/ecsimple/service/OrderServiceImpl.java
+44
-0
src/main/java/edu/prlab/ecsimple/service/ProductService.java
src/main/java/edu/prlab/ecsimple/service/ProductService.java
+12
-0
src/main/java/edu/prlab/ecsimple/service/ProductServiceImpl.java
...n/java/edu/prlab/ecsimple/service/ProductServiceImpl.java
+30
-0
No files found.
src/main/java/edu/prlab/ecsimple/common/mapper/MapperUtil.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.common.mapper
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
public
class
MapperUtil
{
private
final
static
ObjectMapper
mapper
=
new
ObjectMapper
();
public
static
JsonNode
objectToJsonNode
(
Object
obj
)
{
return
mapper
.
valueToTree
(
obj
);
}
}
src/main/java/edu/prlab/ecsimple/config/DefaultBean.java
View file @
75175179
...
...
@@ -9,7 +9,6 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@Configuration
public
class
DefaultBean
{
@Bean
public
BCryptPasswordEncoder
passwordEncoder
()
{
return
new
BCryptPasswordEncoder
();
...
...
src/main/java/edu/prlab/ecsimple/config/DefaultDataBean.java
View file @
75175179
package
edu.prlab.ecsimple.config
;
import
edu.prlab.ecsimple.
domain.Account
;
import
edu.prlab.ecsimple.domain.
Role
;
import
edu.prlab.ecsimple.
common.exception.EntityNotFoundException
;
import
edu.prlab.ecsimple.domain.
*
;
import
edu.prlab.ecsimple.service.AccountServiceImpl
;
import
edu.prlab.ecsimple.service.OrderServiceImpl
;
import
edu.prlab.ecsimple.service.ProductServiceImpl
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationRunner
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.Optional
;
@RequiredArgsConstructor
@Component
public
class
DefaultDataBean
implements
ApplicationRunner
{
private
final
AccountServiceImpl
userService
;
private
final
ProductServiceImpl
productService
;
private
final
OrderServiceImpl
orderService
;
@Override
public
void
run
(
ApplicationArguments
args
)
{
...
...
@@ -20,5 +27,20 @@ public class DefaultDataBean implements ApplicationRunner {
userService
.
create
(
Account
.
builder
().
username
(
"user1"
).
password
(
"1234"
).
build
());
userService
.
addRoleToAccount
(
"user1"
,
"ADMIN"
);
userService
.
addRoleToAccount
(
"user1"
,
"USER"
);
productService
.
create
(
Product
.
builder
()
.
name
(
"test"
)
.
tags
(
List
.
of
(
"test"
))
.
build
());
TheOrder
a
=
orderService
.
create
(
TheOrder
.
builder
()
.
email
(
"email"
)
.
state
(
"state"
)
.
checkoutDate
(
"2020-07-14 00:00:00"
)
.
build
())
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"no order"
));
Item
b
=
orderService
.
create
(
Item
.
builder
()
.
quantity
(
1
)
.
build
())
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"no Item"
));
orderService
.
addItemToOrder
(
a
.
getIid
(),
b
.
getSku
());
}
}
src/main/java/edu/prlab/ecsimple/config/SecurityConfig.java
View file @
75175179
package
edu.prlab.ecsimple.config
;
import
edu.prlab.ecsimple.filter.CustomAuthenticationManager
;
import
edu.prlab.ecsimple.filter.JwtAuthenticationFilter
;
import
edu.prlab.ecsimple.filter.JwtConfig
;
import
edu.prlab.ecsimple.filter.JwtTokenProvider
;
import
edu.prlab.ecsimple.filter.*
;
import
edu.prlab.ecsimple.service.AccountServiceImpl
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.context.annotation.Bean
;
...
...
@@ -57,10 +54,12 @@ public class SecurityConfig {
.
sessionManagement
()
.
sessionCreationPolicy
(
SessionCreationPolicy
.
STATELESS
)
.
and
()
.
addFilterBefore
(
new
JwtAuthenticationFilter
(
authenticationManager
,
jwtTokenProvider
,
jwtConfig
),
UsernamePasswordAuthenticationFilter
.
class
)
.
authorizeRequests
()
.
anyRequest
().
authenticated
();
.
antMatchers
(
"/h2**"
).
permitAll
()
// .addFilterBefore(new JwtAuthenticationFilter(authenticationManager, jwtTokenProvider, jwtConfig), UsernamePasswordAuthenticationFilter.class)
// .addFilter(new JwtAuthorizationFilter(authenticationManager, jwtTokenProvider))
.
anyRequest
().
permitAll
();
http
.
headers
().
frameOptions
().
disable
();
return
http
.
build
();
}
...
...
src/main/java/edu/prlab/ecsimple/controller/ProductController.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.controller
;
import
edu.prlab.ecsimple.common.mapper.MapperUtil
;
import
edu.prlab.ecsimple.model.ResponseModel
;
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
;
@RestController
@RequiredArgsConstructor
public
class
ProductController
{
private
final
ProductServiceImpl
productService
;
@GetMapping
(
"/product/{sku}"
)
public
ResponseEntity
<
ResponseModel
>
getProduct
(
@PathVariable
Integer
sku
)
{
return
productService
.
getProduct
(
sku
)
.
map
(
MapperUtil:
:
objectToJsonNode
)
.
map
(
it
->
ResponseEntity
.
ok
()
.
body
(
ResponseModel
.
builder
()
.
status
(
"status"
)
.
data
(
it
)
.
build
()))
.
orElseGet
(()
->
ResponseEntity
.
notFound
().
build
());
}
@GetMapping
(
"/product"
)
public
ResponseEntity
<
ResponseModel
>
getProducts
()
{
return
ResponseEntity
.
ok
()
.
body
(
ResponseModel
.
builder
()
.
status
(
"status"
)
.
data
(
MapperUtil
.
objectToJsonNode
(
productService
.
getProducts
()))
.
build
());
}
// @PostMapping("/checkout")
// public ResponseEntity<ResponseModel> checkout(){
// return
// }
}
\ No newline at end of file
src/main/java/edu/prlab/ecsimple/domain/Item.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.domain
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.*
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
public
class
Item
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
)
private
Integer
sku
;
@Column
private
Integer
quantity
;
}
src/main/java/edu/prlab/ecsimple/domain/Product.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.domain
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.*
;
import
java.util.ArrayList
;
import
java.util.List
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
public
class
Product
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
)
private
Integer
iid
;
@Column
private
String
name
;
@Builder
.
Default
@ElementCollection
(
fetch
=
FetchType
.
EAGER
)
private
List
<
String
>
tags
=
new
ArrayList
<>();
}
src/main/java/edu/prlab/ecsimple/domain/TheOrder.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.domain
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.*
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
// Order在H2是保留字
public
class
TheOrder
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
)
private
Integer
iid
;
@Builder
.
Default
@ManyToMany
(
fetch
=
FetchType
.
EAGER
)
private
Collection
<
Item
>
items
=
new
ArrayList
<>();
@Column
private
String
email
;
@Column
private
String
checkoutDate
;
@Column
private
String
state
;
}
src/main/java/edu/prlab/ecsimple/model/ResponseModel.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.model
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.springframework.boot.configurationprocessor.json.JSONObject
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
ResponseModel
{
private
String
status
;
private
JsonNode
data
;
}
src/main/java/edu/prlab/ecsimple/repo/ItemRepo.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.repo
;
import
edu.prlab.ecsimple.domain.Item
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
@Repository
public
interface
ItemRepo
extends
JpaRepository
<
Item
,
Integer
>
{
}
src/main/java/edu/prlab/ecsimple/repo/OrderRepo.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.repo
;
import
edu.prlab.ecsimple.domain.TheOrder
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
@Repository
public
interface
OrderRepo
extends
JpaRepository
<
TheOrder
,
Integer
>
{
}
src/main/java/edu/prlab/ecsimple/repo/ProductRepo.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.repo
;
import
edu.prlab.ecsimple.domain.Product
;
import
edu.prlab.ecsimple.domain.Role
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.Optional
;
@Repository
public
interface
ProductRepo
extends
JpaRepository
<
Product
,
Integer
>
{
}
src/main/java/edu/prlab/ecsimple/service/OrderService.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.service
;
import
edu.prlab.ecsimple.domain.Item
;
import
edu.prlab.ecsimple.domain.TheOrder
;
import
java.util.Optional
;
public
interface
OrderService
{
Optional
<
TheOrder
>
create
(
TheOrder
theOrder
);
Optional
<
Item
>
create
(
Item
item
);
void
addItemToOrder
(
Integer
orderId
,
Integer
itemId
);
}
src/main/java/edu/prlab/ecsimple/service/OrderServiceImpl.java
0 → 100644
View file @
75175179
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.repo.ItemRepo
;
import
edu.prlab.ecsimple.repo.OrderRepo
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Optional
;
@Service
@RequiredArgsConstructor
@Transactional
public
class
OrderServiceImpl
implements
OrderService
{
private
final
OrderRepo
orderRepo
;
private
final
ItemRepo
itemRepo
;
@Override
public
Optional
<
TheOrder
>
create
(
TheOrder
theOrder
)
{
return
Optional
.
of
(
theOrder
)
.
map
(
it
->
orderRepo
.
save
(
theOrder
));
}
@Override
public
Optional
<
Item
>
create
(
Item
item
)
{
return
Optional
.
of
(
item
)
.
map
(
it
->
itemRepo
.
save
(
item
));
}
@Override
public
void
addItemToOrder
(
Integer
orderId
,
Integer
itemId
)
{
orderRepo
.
findById
(
orderId
)
.
map
(
order
->
itemRepo
.
findById
(
itemId
)
.
map
(
item
->
order
.
getItems
().
add
(
item
))
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"No found this order"
)))
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"No found this order"
));
}
}
src/main/java/edu/prlab/ecsimple/service/ProductService.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.service
;
import
edu.prlab.ecsimple.domain.Product
;
import
java.util.List
;
import
java.util.Optional
;
public
interface
ProductService
{
Optional
<
Product
>
create
(
Product
product
);
Optional
<
Product
>
getProduct
(
Integer
id
);
List
<
Product
>
getProducts
();
}
src/main/java/edu/prlab/ecsimple/service/ProductServiceImpl.java
0 → 100644
View file @
75175179
package
edu.prlab.ecsimple.service
;
import
edu.prlab.ecsimple.domain.Product
;
import
edu.prlab.ecsimple.repo.ProductRepo
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Optional
;
@RequiredArgsConstructor
@Service
public
class
ProductServiceImpl
implements
ProductService
{
private
final
ProductRepo
productRepo
;
@Override
public
Optional
<
Product
>
create
(
Product
product
){
return
Optional
.
of
(
product
).
map
(
productRepo:
:
save
);
}
@Override
public
Optional
<
Product
>
getProduct
(
Integer
id
)
{
return
productRepo
.
findById
(
id
);
}
@Override
public
List
<
Product
>
getProducts
()
{
return
productRepo
.
findAll
();
}
}
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