Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
O
Orders
Project
Project
Details
Activity
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Vladimir Trubachoff
Orders
Commits
6a036a07
Commit
6a036a07
authored
Jul 02, 2024
by
Vladimir Trubachoff
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added Lombok and MapStruct
Code refactoring
parent
2a31c172
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
323 additions
and
521 deletions
+323
-521
build.gradle
build.gradle
+7
-0
Goods.java
src/main/java/com/example/testj/domain/Goods.java
+11
-41
Order.java
src/main/java/com/example/testj/domain/Order.java
+9
-69
OrderLine.java
src/main/java/com/example/testj/domain/OrderLine.java
+6
-43
package-info.java
src/main/java/com/example/testj/domain/package-info.java
+0
-2
GoodsService.java
src/main/java/com/example/testj/service/GoodsService.java
+6
-33
OrderLineService.java
...main/java/com/example/testj/service/OrderLineService.java
+5
-44
OrderService.java
src/main/java/com/example/testj/service/OrderService.java
+7
-39
GoodsDto.java
src/main/java/com/example/testj/service/dto/GoodsDto.java
+19
-36
OrderDto.java
src/main/java/com/example/testj/service/dto/OrderDto.java
+19
-52
OrderLineDto.java
...main/java/com/example/testj/service/dto/OrderLineDto.java
+15
-43
OrderLineRequestDto.java
...va/com/example/testj/service/dto/OrderLineRequestDto.java
+5
-24
GoodsServiceImpl.java
...java/com/example/testj/service/impl/GoodsServiceImpl.java
+45
-0
OrderLineServiceImpl.java
.../com/example/testj/service/impl/OrderLineServiceImpl.java
+59
-0
OrderServiceImpl.java
...java/com/example/testj/service/impl/OrderServiceImpl.java
+54
-0
GoodsMapper.java
...in/java/com/example/testj/service/mapper/GoodsMapper.java
+11
-0
OrderLineMapper.java
...ava/com/example/testj/service/mapper/OrderLineMapper.java
+11
-0
OrderMapper.java
...in/java/com/example/testj/service/mapper/OrderMapper.java
+11
-0
package-info.java
src/main/java/com/example/testj/service/package-info.java
+0
-2
MappingUtils.java
src/main/java/com/example/testj/utils/MappingUtils.java
+0
-51
GoodsController.java
...main/java/com/example/testj/web/rest/GoodsController.java
+7
-10
OrderController.java
...main/java/com/example/testj/web/rest/OrderController.java
+8
-11
OrderLineController.java
.../java/com/example/testj/web/rest/OrderLineController.java
+8
-21
No files found.
build.gradle
View file @
6a036a07
...
...
@@ -26,6 +26,13 @@ dependencies {
testImplementation
'org.springframework.boot:spring-boot-starter-test'
testImplementation
'org.mockito:mockito-core:5.12.0'
testRuntimeOnly
'org.junit.platform:junit-platform-launcher'
compileOnly
'org.projectlombok:lombok:1.18.34'
annotationProcessor
'org.projectlombok:lombok:1.18.34'
testCompileOnly
'org.projectlombok:lombok:1.18.34'
testAnnotationProcessor
'org.projectlombok:lombok:1.18.34'
implementation
'org.mapstruct:mapstruct:1.5.5.Final'
annotationProcessor
'org.mapstruct:mapstruct-processor:1.5.5.Final'
annotationProcessor
'org.projectlombok:lombok-mapstruct-binding:0.2.0'
}
tasks
.
named
(
'test'
)
{
...
...
src/main/java/com/example/testj/domain/Goods.java
View file @
6a036a07
package
com
.
example
.
testj
.
domain
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.Table
;
import
jakarta.persistence.*
;
import
jakarta.validation.constraints.NotEmpty
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
lombok.Setter
;
import
java.util.List
;
@Getter
@Setter
@RequiredArgsConstructor
@Entity
@Table
(
name
=
"goods"
)
public
class
Goods
{
...
...
@@ -22,41 +26,7 @@ public class Goods {
@Column
(
name
=
"price"
)
private
double
price
;
public
Goods
()
{
}
public
Goods
(
Long
id
,
String
name
,
Double
price
)
{
this
.
id
=
id
;
this
.
name
=
name
;
this
.
price
=
price
;
}
public
Goods
(
Goods
goods
)
{
this
.
name
=
goods
.
getName
();
this
.
price
=
goods
.
getPrice
();
}
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
Double
getPrice
()
{
return
price
;
}
@OneToMany
(
mappedBy
=
"goods"
,
cascade
=
CascadeType
.
ALL
,
orphanRemoval
=
true
)
private
List
<
OrderLine
>
orderLines
;
public
void
setPrice
(
Double
price
)
{
this
.
price
=
price
;
}
}
src/main/java/com/example/testj/domain/Order.java
View file @
6a036a07
package
com
.
example
.
testj
.
domain
;
import
java.util.List
;
import
jakarta.persistence.*
;
import
jakarta.validation.constraints.NotBlank
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
lombok.Setter
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
jakarta.persistence.CascadeType
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.FetchType
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.OneToMany
;
import
jakarta.persistence.Table
;
import
jakarta.validation.constraints.NotBlank
;
import
java.util.List
;
@Getter
@Setter
@RequiredArgsConstructor
@Entity
@Table
(
name
=
"orders"
)
public
class
Order
{
...
...
@@ -36,62 +34,4 @@ public class Order {
@OneToMany
(
mappedBy
=
"order"
,
fetch
=
FetchType
.
LAZY
,
cascade
=
CascadeType
.
ALL
,
orphanRemoval
=
true
)
List
<
OrderLine
>
orderLines
;
public
Order
()
{
}
public
Order
(
String
client
,
String
date
,
String
address
)
{
this
.
client
=
client
;
this
.
address
=
address
;
this
.
date
=
date
;
}
public
void
addOrderLine
(
OrderLine
orderLine
)
{
orderLines
.
add
(
orderLine
);
orderLine
.
setOrder
(
this
);
}
public
void
removeOrderLine
(
OrderLine
orderLine
)
{
orderLines
.
remove
(
orderLine
);
}
public
List
<
OrderLine
>
getOrderLines
()
{
return
orderLines
;
}
public
void
setOrderLines
(
List
<
OrderLine
>
orderLines
)
{
this
.
orderLines
=
orderLines
;
}
public
String
getDate
()
{
return
date
;
}
public
void
setDate
(
String
date
)
{
this
.
date
=
date
;
}
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
String
getClient
()
{
return
client
;
}
public
void
setClient
(
String
client
)
{
this
.
client
=
client
;
}
public
String
getAddress
()
{
return
address
;
}
public
void
setAddress
(
String
address
)
{
this
.
address
=
address
;
}
}
src/main/java/com/example/testj/domain/OrderLine.java
View file @
6a036a07
package
com
.
example
.
testj
.
domain
;
import
org.springframework.format.annotation.NumberFormat
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.JoinColumn
;
import
jakarta.persistence.ManyToOne
;
import
jakarta.persistence.Table
;
import
jakarta.persistence.*
;
import
jakarta.validation.constraints.Min
;
import
lombok.*
;
import
org.springframework.format.annotation.NumberFormat
;
@Getter
@Setter
@RequiredArgsConstructor
@Entity
@Table
(
name
=
"order_line"
)
public
class
OrderLine
{
...
...
@@ -34,37 +30,4 @@ public class OrderLine {
@NumberFormat
@Min
(
1
)
private
int
count
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
int
getCount
()
{
return
count
;
}
public
void
setCount
(
int
count
)
{
this
.
count
=
count
;
}
public
Goods
getGoods
()
{
return
goods
;
}
public
void
setGoods
(
Goods
goods
)
{
this
.
goods
=
goods
;
}
public
Order
getOrder
()
{
return
order
;
}
public
void
setOrder
(
Order
order
)
{
this
.
order
=
order
;
}
}
src/main/java/com/example/testj/domain/package-info.java
deleted
100644 → 0
View file @
2a31c172
package
com
.
example
.
testj
.
domain
;
\ No newline at end of file
src/main/java/com/example/testj/service/GoodsService.java
View file @
6a036a07
package
com
.
example
.
testj
.
service
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.web.PagedModel
;
import
org.springframework.stereotype.Service
;
import
com.example.testj.domain.Goods
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.repository.GoodsRepository
;
import
com.example.testj.service.dto.GoodsDto
;
import
com.example.testj.utils.MappingUtils
;
@Service
public
class
GoodsService
{
private
final
GoodsRepository
goodsRepository
;
private
final
MappingUtils
mappingUtils
;
public
GoodsService
(
GoodsRepository
goodsRepository
,
MappingUtils
mappingUtils
)
{
this
.
goodsRepository
=
goodsRepository
;
this
.
mappingUtils
=
mappingUtils
;
}
import
org.springframework.data.web.PagedModel
;
public
PagedModel
<
GoodsDto
>
getAllGoods
(
Integer
page
,
Integer
size
,
String
sortBy
,
String
sortDir
)
{
return
new
PagedModel
<>(
goodsRepository
.
findAll
(
PageRequest
.
of
(
page
,
size
,
Sort
.
by
(
Sort
.
Direction
.
fromString
(
sortDir
),
sortBy
)))
.
map
(
mappingUtils:
:
toGoodsDto
));
}
public
interface
GoodsService
{
PagedModel
<
GoodsDto
>
getGoodsPaged
(
Integer
page
,
Integer
size
,
String
sortBy
,
String
sortDir
);
public
GoodsDto
getGoods
(
Long
id
)
{
return
goodsRepository
.
findById
(
id
).
map
(
mappingUtils:
:
toGoodsDto
).
orElse
(
null
);
}
GoodsDto
getGoods
(
Long
id
);
public
GoodsDto
createOrUpdate
(
Goods
goods
)
{
return
mappingUtils
.
toGoodsDto
(
this
.
goodsRepository
.
save
(
goods
));
}
GoodsDto
createOrUpdate
(
Goods
goods
);
public
void
deleteGoods
(
Long
id
)
{
this
.
goodsRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
this
.
goodsRepository
.
deleteById
(
id
);
}
void
deleteGoods
(
Long
id
);
}
src/main/java/com/example/testj/service/OrderLineService.java
View file @
6a036a07
package
com
.
example
.
testj
.
service
;
import
org.springframework.stereotype.Service
;
import
com.example.testj.domain.OrderLine
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.repository.OrderLineRepository
;
import
com.example.testj.service.dto.GoodsDto
;
import
com.example.testj.service.dto.OrderDto
;
import
com.example.testj.service.dto.OrderLineDto
;
import
com.example.testj.service.dto.OrderLineRequestDto
;
import
com.example.testj.utils.MappingUtils
;
@Service
public
class
OrderLineService
{
private
final
MappingUtils
mappingUtils
;
private
final
OrderLineRepository
orderLineRepository
;
private
final
OrderService
orderService
;
private
final
GoodsService
goodsService
;
public
OrderLineService
(
OrderLineRepository
orderLineRepository
,
MappingUtils
mappingUtils
,
OrderService
orderService
,
GoodsService
goodsService
)
{
this
.
orderLineRepository
=
orderLineRepository
;
this
.
mappingUtils
=
mappingUtils
;
this
.
orderService
=
orderService
;
this
.
goodsService
=
goodsService
;
}
public
OrderLineDto
createOrderLine
(
OrderLineRequestDto
orderLineRequest
)
{
OrderDto
order
=
orderService
.
getOrder
(
orderLineRequest
.
getOrderId
());
GoodsDto
goods
=
goodsService
.
getGoods
(
orderLineRequest
.
getGoodsId
());
OrderLine
orderLine
=
new
OrderLine
();
orderLine
.
setOrder
(
mappingUtils
.
toOrder
(
order
));
orderLine
.
setGoods
(
mappingUtils
.
toGoods
(
goods
));
orderLine
.
setCount
(
orderLineRequest
.
getCount
());
return
mappingUtils
.
toOrderLineDto
(
orderLineRepository
.
save
(
orderLine
));
}
public
interface
OrderLineService
{
OrderLineDto
getOrderLine
(
Long
id
)
throws
ResourceNotFoundException
;
public
OrderLineDto
updateOrderLine
(
OrderLine
orderLine
,
Long
id
)
{
OrderLine
updatedOrderLine
=
orderLineRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
updatedOrderLine
.
setCount
(
orderLine
.
getCount
());
return
mappingUtils
.
toOrderLineDto
(
orderLineRepository
.
save
(
updatedOrderLine
));
}
OrderLineDto
createOrderLine
(
OrderLineRequestDto
orderLineRequest
);
public
OrderLineDto
getOrderLine
(
Long
id
)
throws
ResourceNotFoundException
{
return
mappingUtils
.
toOrderLineDto
(
orderLineRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
));
}
OrderLineDto
updateOrderLine
(
OrderLine
orderLine
,
Long
id
);
public
void
deleteOrderLine
(
Long
id
)
{
orderLineRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
orderLineRepository
.
deleteById
(
id
);
}
void
deleteOrderLine
(
Long
id
);
}
src/main/java/com/example/testj/service/OrderService.java
View file @
6a036a07
package
com
.
example
.
testj
.
service
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.web.PagedModel
;
import
org.springframework.stereotype.Service
;
import
com.example.testj.domain.Order
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.repository.OrderRepository
;
import
com.example.testj.service.dto.OrderDto
;
import
com.example.testj.utils.MappingUtils
;
import
com.fasterxml.jackson.databind.JsonMappingException
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
@Service
public
class
OrderService
{
private
final
OrderRepository
orderRepository
;
private
final
MappingUtils
mappingUtils
;
public
OrderService
(
OrderRepository
orderRepository
,
MappingUtils
mappingUtils
)
{
this
.
orderRepository
=
orderRepository
;
this
.
mappingUtils
=
mappingUtils
;
}
import
org.springframework.data.web.PagedModel
;
public
PagedModel
<
OrderDto
>
getOrders
(
Integer
page
,
Integer
size
,
String
sortBy
,
String
sortDir
)
{
return
new
PagedModel
<>(
orderRepository
.
findAll
(
PageRequest
.
of
(
page
,
size
,
Sort
.
by
(
Sort
.
Direction
.
fromString
(
sortDir
),
sortBy
)))
.
map
(
mappingUtils:
:
toOrderDto
));
}
public
interface
OrderService
{
PagedModel
<
OrderDto
>
getOrdersPaged
(
Integer
page
,
Integer
size
,
String
sortBy
,
String
sortDir
);
public
OrderDto
getOrder
(
Long
id
)
throws
ResourceNotFoundException
{
return
mappingUtils
.
toOrderDto
(
orderRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
));
}
OrderDto
getOrder
(
Long
id
)
throws
ResourceNotFoundException
;
public
void
deleteOrder
(
Long
id
)
throws
ResourceNotFoundException
{
orderRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
orderRepository
.
deleteById
(
id
);
}
OrderDto
createOrUpdateOrder
(
Order
order
);
public
OrderDto
createOrUpdateOrder
(
Order
order
)
{
return
mappingUtils
.
toOrderDto
(
orderRepository
.
save
(
order
));
}
OrderDto
patchOrder
(
Long
id
,
JsonNode
patch
)
throws
JsonMappingException
;
public
OrderDto
patchOrder
(
Long
id
,
JsonNode
patch
)
throws
JsonMappingException
{
Order
orderData
=
orderRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
Order
patchedOrder
=
new
ObjectMapper
().
updateValue
(
orderData
,
patch
);
return
mappingUtils
.
toOrderDto
(
orderRepository
.
save
(
patchedOrder
));
}
void
deleteOrder
(
Long
id
)
throws
ResourceNotFoundException
;
}
src/main/java/com/example/testj/service/dto/GoodsDto.java
View file @
6a036a07
package
com
.
example
.
testj
.
service
.
dto
;
import
java.io.Serializable
;
import
jakarta.validation.constraints.Digits
;
import
jakarta.validation.constraints.Min
;
import
jakarta.validation.constraints.NotEmpty
;
import
jakarta.validation.constraints.Positive
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
import
com.example.testj.domain.Goods
;
import
java.io.Serializable
;
/**
* DTO for {@link com.example.testj.domain.Goods}
*/
@AllArgsConstructor
@Getter
@Setter
public
class
GoodsDto
implements
Serializable
{
private
Long
id
;
private
String
name
;
private
double
price
;
public
GoodsDto
()
{
}
public
GoodsDto
(
Goods
goods
)
{
this
.
id
=
goods
.
getId
();
this
.
name
=
goods
.
getName
();
this
.
price
=
goods
.
getPrice
();
}
private
final
Long
id
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
double
getPrice
()
{
return
price
;
}
@NotEmpty
private
String
name
;
public
void
setPrice
(
double
price
)
{
this
.
price
=
price
;
}
@Min
(
0L
)
@Digits
(
integer
=
6
,
fraction
=
2
)
@Positive
private
double
price
;
}
\ No newline at end of file
src/main/java/com/example/testj/service/dto/OrderDto.java
View file @
6a036a07
package
com
.
example
.
testj
.
service
.
dto
;
import
jakarta.validation.constraints.NotBlank
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.io.Serializable
;
import
java.util.List
;
import
com.example.testj.domain.Order
;
import
com.example.testj.domain.OrderLine
;
/**
* DTO for {@link com.example.testj.domain.Order}
*/
@AllArgsConstructor
@Getter
@Setter
public
class
OrderDto
implements
Serializable
{
private
Long
id
;
private
String
client
;
private
String
date
;
private
String
address
;
private
List
<
OrderLine
>
orderLines
;
public
OrderDto
()
{
}
public
OrderDto
(
Order
order
)
{
this
.
id
=
order
.
getId
();
this
.
client
=
order
.
getClient
();
this
.
address
=
order
.
getAddress
();
this
.
date
=
order
.
getDate
();
this
.
orderLines
=
order
.
getOrderLines
();
}
private
final
Long
id
;
public
String
getDate
()
{
return
date
;
}
public
void
setDate
(
String
date
)
{
this
.
date
=
date
;
}
public
String
getAddress
()
{
return
address
;
}
public
void
setAddress
(
String
address
)
{
this
.
address
=
address
;
}
public
String
getClient
()
{
return
client
;
}
public
void
setClient
(
String
client
)
{
this
.
client
=
client
;
}
@NotBlank
private
String
client
;
public
Long
getId
()
{
return
id
;
}
private
String
date
;
public
List
<
OrderLine
>
getOrderLines
()
{
return
orderLines
;
}
@NotBlank
private
String
address
;
public
void
setOrderLines
(
List
<
OrderLine
>
orderLines
)
{
this
.
orderLines
=
orderLines
;
}
private
List
<
OrderLineDto
>
orderLines
;
}
\ No newline at end of file
src/main/java/com/example/testj/service/dto/OrderLineDto.java
View file @
6a036a07
package
com
.
example
.
testj
.
service
.
dto
;
import
java.io.Serializable
;
import
jakarta.validation.constraints.Positive
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
import
com.example.testj.domain.Goods
;
import
com.example.testj.domain.Order
;
import
com.example.testj.domain.OrderLine
;
import
java.io.Serializable
;
/**
* DTO for {@link com.example.testj.domain.OrderLine}
*/
@AllArgsConstructor
@Getter
@Setter
public
class
OrderLineDto
implements
Serializable
{
private
Long
id
;
private
Goods
goods
;
private
Order
order
;
private
int
count
;
public
OrderLineDto
()
{
}
public
OrderLineDto
(
OrderLine
orderLine
)
{
this
.
id
=
orderLine
.
getId
();
this
.
count
=
orderLine
.
getCount
();
this
.
goods
=
orderLine
.
getGoods
();
this
.
order
=
orderLine
.
getOrder
();
}
public
Goods
getGoods
()
{
return
this
.
goods
;
}
public
void
setGoods
(
Goods
goods
)
{
this
.
goods
=
goods
;
}
public
int
getCount
()
{
return
count
;
}
public
void
setCount
(
int
count
)
{
this
.
count
=
count
;
}
private
final
Long
id
;
public
Long
getId
()
{
return
id
;
}
private
final
GoodsDto
goods
;
public
Order
getOrder
()
{
return
order
;
}
@Positive
private
final
int
count
;
}
src/main/java/com/example/testj/service/dto/OrderLineRequestDto.java
View file @
6a036a07
package
com
.
example
.
testj
.
service
.
dto
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
OrderLineRequestDto
{
private
Long
orderId
;
private
Long
goodsId
;
private
int
count
;
public
int
getCount
()
{
return
count
;
}
public
void
setCount
(
int
count
)
{
this
.
count
=
count
;
}
public
Long
getOrderId
()
{
return
orderId
;
}
public
void
setOrderId
(
Long
orderId
)
{
this
.
orderId
=
orderId
;
}
public
Long
getGoodsId
()
{
return
goodsId
;
}
public
void
setGoodsId
(
Long
goodsId
)
{
this
.
goodsId
=
goodsId
;
}
}
src/main/java/com/example/testj/service/impl/GoodsServiceImpl.java
0 → 100644
View file @
6a036a07
package
com
.
example
.
testj
.
service
.
impl
;
import
com.example.testj.service.GoodsService
;
import
com.example.testj.service.mapper.GoodsMapper
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.web.PagedModel
;
import
org.springframework.stereotype.Service
;
import
com.example.testj.domain.Goods
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.repository.GoodsRepository
;
import
com.example.testj.service.dto.GoodsDto
;
@Service
@RequiredArgsConstructor
public
class
GoodsServiceImpl
implements
GoodsService
{
private
final
GoodsRepository
goodsRepository
;
private
final
GoodsMapper
goodsMapper
;
@Override
public
PagedModel
<
GoodsDto
>
getGoodsPaged
(
Integer
page
,
Integer
size
,
String
sortBy
,
String
sortDir
)
{
return
new
PagedModel
<>(
goodsRepository
.
findAll
(
PageRequest
.
of
(
page
,
size
,
Sort
.
by
(
Sort
.
Direction
.
fromString
(
sortDir
),
sortBy
)))
.
map
(
goodsMapper:
:
toDto
));
}
@Override
public
GoodsDto
getGoods
(
Long
id
)
{
return
goodsRepository
.
findById
(
id
).
map
(
goodsMapper:
:
toDto
).
orElse
(
null
);
}
@Override
public
GoodsDto
createOrUpdate
(
Goods
goods
)
{
return
goodsMapper
.
toDto
(
this
.
goodsRepository
.
save
(
goods
));
}
@Override
public
void
deleteGoods
(
Long
id
)
{
this
.
goodsRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
this
.
goodsRepository
.
deleteById
(
id
);
}
}
src/main/java/com/example/testj/service/impl/OrderLineServiceImpl.java
0 → 100644
View file @
6a036a07
package
com
.
example
.
testj
.
service
.
impl
;
import
com.example.testj.service.GoodsService
;
import
com.example.testj.service.OrderLineService
;
import
com.example.testj.service.OrderService
;
import
com.example.testj.service.mapper.GoodsMapper
;
import
com.example.testj.service.mapper.OrderLineMapper
;
import
com.example.testj.service.mapper.OrderMapper
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
com.example.testj.domain.OrderLine
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.repository.OrderLineRepository
;
import
com.example.testj.service.dto.GoodsDto
;
import
com.example.testj.service.dto.OrderDto
;
import
com.example.testj.service.dto.OrderLineDto
;
import
com.example.testj.service.dto.OrderLineRequestDto
;
@Service
@RequiredArgsConstructor
public
class
OrderLineServiceImpl
implements
OrderLineService
{
private
final
OrderLineRepository
orderLineRepository
;
private
final
OrderService
orderService
;
private
final
GoodsService
goodsService
;
private
final
OrderLineMapper
orderLineMapper
;
private
final
OrderMapper
orderMapper
;
private
final
GoodsMapper
goodsMapper
;
@Override
public
OrderLineDto
createOrderLine
(
OrderLineRequestDto
orderLineRequest
)
{
OrderDto
order
=
orderService
.
getOrder
(
orderLineRequest
.
getOrderId
());
GoodsDto
goods
=
goodsService
.
getGoods
(
orderLineRequest
.
getGoodsId
());
OrderLine
orderLine
=
new
OrderLine
();
orderLine
.
setOrder
(
orderMapper
.
toEntity
(
order
));
orderLine
.
setGoods
(
goodsMapper
.
toEntity
(
goods
));
orderLine
.
setCount
(
orderLineRequest
.
getCount
());
return
orderLineMapper
.
toDto
(
orderLineRepository
.
save
(
orderLine
));
}
@Override
public
OrderLineDto
updateOrderLine
(
OrderLine
orderLine
,
Long
id
)
{
OrderLine
updatedOrderLine
=
orderLineRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
updatedOrderLine
.
setCount
(
orderLine
.
getCount
());
return
orderLineMapper
.
toDto
(
orderLineRepository
.
save
(
updatedOrderLine
));
}
@Override
public
OrderLineDto
getOrderLine
(
Long
id
)
throws
ResourceNotFoundException
{
return
orderLineMapper
.
toDto
(
orderLineRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
));
}
@Override
public
void
deleteOrderLine
(
Long
id
)
{
orderLineRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
orderLineRepository
.
deleteById
(
id
);
}
}
src/main/java/com/example/testj/service/impl/OrderServiceImpl.java
0 → 100644
View file @
6a036a07
package
com
.
example
.
testj
.
service
.
impl
;
import
com.example.testj.domain.Order
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.repository.OrderRepository
;
import
com.example.testj.service.OrderService
;
import
com.example.testj.service.dto.OrderDto
;
import
com.example.testj.service.mapper.OrderMapper
;
import
com.fasterxml.jackson.databind.JsonMappingException
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.web.PagedModel
;
import
org.springframework.stereotype.Service
;
@Service
@RequiredArgsConstructor
public
class
OrderServiceImpl
implements
OrderService
{
private
final
OrderRepository
orderRepository
;
private
final
OrderMapper
orderMapper
;
@Override
public
PagedModel
<
OrderDto
>
getOrdersPaged
(
Integer
page
,
Integer
size
,
String
sortBy
,
String
sortDir
)
{
return
new
PagedModel
<>(
orderRepository
.
findAll
(
PageRequest
.
of
(
page
,
size
,
Sort
.
by
(
Sort
.
Direction
.
fromString
(
sortDir
),
sortBy
)))
.
map
(
orderMapper:
:
toDto
));
}
@Override
public
OrderDto
getOrder
(
Long
id
)
throws
ResourceNotFoundException
{
return
orderMapper
.
toDto
(
orderRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
));
}
@Override
public
void
deleteOrder
(
Long
id
)
throws
ResourceNotFoundException
{
orderRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
orderRepository
.
deleteById
(
id
);
}
@Override
public
OrderDto
createOrUpdateOrder
(
Order
order
)
{
return
orderMapper
.
toDto
(
orderRepository
.
save
(
order
));
}
@Override
public
OrderDto
patchOrder
(
Long
id
,
JsonNode
patch
)
throws
JsonMappingException
{
Order
orderData
=
orderRepository
.
findById
(
id
).
orElseThrow
(
ResourceNotFoundException:
:
new
);
Order
patchedOrder
=
new
ObjectMapper
().
updateValue
(
orderData
,
patch
);
return
orderMapper
.
toDto
(
orderRepository
.
save
(
patchedOrder
));
}
}
src/main/java/com/example/testj/service/mapper/GoodsMapper.java
0 → 100644
View file @
6a036a07
package
com
.
example
.
testj
.
service
.
mapper
;
import
com.example.testj.domain.Goods
;
import
com.example.testj.service.dto.GoodsDto
;
import
org.mapstruct.Mapper
;
@Mapper
(
componentModel
=
"spring"
)
public
interface
GoodsMapper
{
GoodsDto
toDto
(
Goods
goods
);
Goods
toEntity
(
GoodsDto
dto
);
}
src/main/java/com/example/testj/service/mapper/OrderLineMapper.java
0 → 100644
View file @
6a036a07
package
com
.
example
.
testj
.
service
.
mapper
;
import
com.example.testj.domain.OrderLine
;
import
com.example.testj.service.dto.OrderLineDto
;
import
org.mapstruct.Mapper
;
@Mapper
(
componentModel
=
"spring"
)
public
interface
OrderLineMapper
{
OrderLineDto
toDto
(
OrderLine
orderLine
);
OrderLine
toEntity
(
OrderLineDto
orderLineDto
);
}
src/main/java/com/example/testj/service/mapper/OrderMapper.java
0 → 100644
View file @
6a036a07
package
com
.
example
.
testj
.
service
.
mapper
;
import
com.example.testj.domain.Order
;
import
com.example.testj.service.dto.OrderDto
;
import
org.mapstruct.Mapper
;
@Mapper
(
componentModel
=
"spring"
)
public
interface
OrderMapper
{
OrderDto
toDto
(
Order
order
);
Order
toEntity
(
OrderDto
orderDto
);
}
src/main/java/com/example/testj/service/package-info.java
deleted
100644 → 0
View file @
2a31c172
package
com
.
example
.
testj
.
service
;
\ No newline at end of file
src/main/java/com/example/testj/utils/MappingUtils.java
deleted
100644 → 0
View file @
2a31c172
package
com
.
example
.
testj
.
utils
;
import
org.springframework.stereotype.Service
;
import
com.example.testj.domain.Goods
;
import
com.example.testj.domain.Order
;
import
com.example.testj.domain.OrderLine
;
import
com.example.testj.service.dto.GoodsDto
;
import
com.example.testj.service.dto.OrderDto
;
import
com.example.testj.service.dto.OrderLineDto
;
@Service
public
class
MappingUtils
{
public
OrderDto
toOrderDto
(
Order
order
)
{
return
new
OrderDto
(
order
);
}
public
Order
toOrder
(
OrderDto
orderDto
)
{
Order
order
=
new
Order
();
order
.
setId
(
orderDto
.
getId
());
order
.
setClient
(
orderDto
.
getClient
());
order
.
setDate
(
orderDto
.
getDate
());
order
.
setAddress
(
orderDto
.
getAddress
());
order
.
setOrderLines
(
orderDto
.
getOrderLines
());
return
order
;
}
public
OrderLineDto
toOrderLineDto
(
OrderLine
orderLine
)
{
return
new
OrderLineDto
(
orderLine
);
}
public
OrderLine
toOrderLine
(
OrderLineDto
orderLineDto
)
{
OrderLine
orderLine
=
new
OrderLine
();
orderLine
.
setGoods
(
orderLineDto
.
getGoods
());
orderLine
.
setOrder
(
orderLineDto
.
getOrder
());
orderLine
.
setCount
(
orderLineDto
.
getCount
());
return
orderLine
;
}
public
GoodsDto
toGoodsDto
(
Goods
goods
)
{
return
new
GoodsDto
(
goods
);
}
public
Goods
toGoods
(
GoodsDto
goodsDto
)
{
Goods
goods
=
new
Goods
();
goods
.
setId
(
goodsDto
.
getId
());
goods
.
setName
(
goodsDto
.
getName
());
goods
.
setPrice
(
goodsDto
.
getPrice
());
return
goods
;
}
}
src/main/java/com/example/testj/web/rest/GoodsController.java
View file @
6a036a07
package
com
.
example
.
testj
.
web
.
rest
;
import
com.example.testj.service.mapper.GoodsMapper
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.data.web.PagedModel
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
...
...
@@ -18,19 +20,14 @@ import org.springframework.web.bind.annotation.RestController;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.service.GoodsService
;
import
com.example.testj.service.dto.GoodsDto
;
import
com.example.testj.utils.MappingUtils
;
@RestController
@RequestMapping
(
"/api/goods"
)
@CrossOrigin
(
origins
=
"http://localhost:4200"
)
@RequiredArgsConstructor
public
class
GoodsController
{
private
final
GoodsService
goodsService
;
private
final
MappingUtils
mappingUtils
;
public
GoodsController
(
GoodsService
goodsService
,
MappingUtils
mappingUtils
)
{
this
.
goodsService
=
goodsService
;
this
.
mappingUtils
=
mappingUtils
;
}
private
final
GoodsMapper
goodsMapper
;
@GetMapping
public
PagedModel
<
GoodsDto
>
goods
(
...
...
@@ -38,7 +35,7 @@ public class GoodsController {
@RequestHeader
(
name
=
"X-Page-Size"
,
defaultValue
=
"10"
)
Integer
size
,
@RequestHeader
(
name
=
"X-Sort-By"
,
defaultValue
=
"id"
)
String
sortBy
,
@RequestHeader
(
name
=
"X-Sort-Direction"
,
defaultValue
=
"ASC"
)
String
sortDir
)
{
return
goodsService
.
get
AllGoods
(
page
,
size
,
sortBy
,
sortDir
);
return
goodsService
.
get
GoodsPaged
(
page
,
size
,
sortBy
,
sortDir
);
}
@GetMapping
(
"/{id}"
)
...
...
@@ -49,7 +46,7 @@ public class GoodsController {
@PostMapping
@ResponseStatus
(
HttpStatus
.
CREATED
)
public
GoodsDto
createGoods
(
@RequestBody
GoodsDto
goods
)
{
return
this
.
goodsService
.
createOrUpdate
(
mappingUtils
.
toGoods
(
goods
));
return
this
.
goodsService
.
createOrUpdate
(
goodsMapper
.
toEntity
(
goods
));
}
@PutMapping
(
"/{id}"
)
...
...
@@ -57,7 +54,7 @@ public class GoodsController {
GoodsDto
updatedGoods
=
goodsService
.
getGoods
(
id
);
updatedGoods
.
setName
(
goods
.
getName
());
updatedGoods
.
setPrice
(
goods
.
getPrice
());
return
this
.
goodsService
.
createOrUpdate
(
mappingUtils
.
toGoods
(
updatedGoods
));
return
this
.
goodsService
.
createOrUpdate
(
goodsMapper
.
toEntity
(
updatedGoods
));
}
@DeleteMapping
(
"/{id}"
)
...
...
src/main/java/com/example/testj/web/rest/OrderController.java
View file @
6a036a07
package
com
.
example
.
testj
.
web
.
rest
;
import
com.example.testj.service.impl.OrderServiceImpl
;
import
com.example.testj.service.mapper.OrderMapper
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.data.web.PagedModel
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
...
...
@@ -18,9 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
import
com.example.testj.domain.Order
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.service.OrderService
;
import
com.example.testj.service.dto.OrderDto
;
import
com.example.testj.utils.MappingUtils
;
import
com.fasterxml.jackson.databind.JsonMappingException
;
import
com.fasterxml.jackson.databind.JsonNode
;
...
...
@@ -29,14 +30,10 @@ import jakarta.validation.Valid;
@RestController
@RequestMapping
(
"/api/orders"
)
@CrossOrigin
(
origins
=
"http://localhost:4200"
)
@RequiredArgsConstructor
public
class
OrderController
{
private
final
OrderService
orderService
;
private
final
MappingUtils
mappingUtils
;
public
OrderController
(
OrderService
orderService
,
MappingUtils
mappingUtils
)
{
this
.
orderService
=
orderService
;
this
.
mappingUtils
=
mappingUtils
;
}
private
final
OrderServiceImpl
orderService
;
private
final
OrderMapper
orderMapper
;
@GetMapping
public
PagedModel
<
OrderDto
>
getOrders
(
...
...
@@ -44,7 +41,7 @@ public class OrderController {
@RequestHeader
(
name
=
"X-Page-Size"
,
defaultValue
=
"10"
)
Integer
size
,
@RequestHeader
(
name
=
"X-Sort-By"
,
defaultValue
=
"id"
)
String
sortBy
,
@RequestHeader
(
name
=
"X-Sort-Direction"
,
defaultValue
=
"ASC"
)
String
sortDir
)
{
return
orderService
.
getOrders
(
page
,
size
,
sortBy
,
sortDir
);
return
orderService
.
getOrders
Paged
(
page
,
size
,
sortBy
,
sortDir
);
}
@GetMapping
(
"/{id}"
)
...
...
@@ -67,7 +64,7 @@ public class OrderController {
updatedOrder
.
setAddress
(
order
.
getAddress
());
updatedOrder
.
setDate
(
order
.
getDate
());
return
orderService
.
createOrUpdateOrder
(
mappingUtils
.
toOrder
(
updatedOrder
));
return
orderService
.
createOrUpdateOrder
(
orderMapper
.
toEntity
(
updatedOrder
));
}
@PatchMapping
(
"/{id}"
)
...
...
src/main/java/com/example/testj/web/rest/OrderLineController.java
View file @
6a036a07
package
com
.
example
.
testj
.
web
.
rest
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.CrossOrigin
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
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.PutMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.example.testj.exception.ResourceNotFoundException
;
import
com.example.testj.service.OrderLineService
;
import
com.example.testj.service.dto.OrderLineDto
;
import
com.example.testj.service.dto.OrderLineRequestDto
;
import
com.example.testj.utils.MappingUtils
;
import
com.example.testj.service.mapper.OrderLineMapper
;
import
jakarta.validation.Valid
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
@RestController
@RequestMapping
(
"/api/order-line"
)
@CrossOrigin
(
origins
=
"http://localhost:4200"
)
@RequiredArgsConstructor
public
class
OrderLineController
{
private
final
OrderLineService
orderLineService
;
private
final
MappingUtils
mappingUtils
;
public
OrderLineController
(
OrderLineService
orderLineService
,
MappingUtils
mappingUtils
)
{
this
.
orderLineService
=
orderLineService
;
this
.
mappingUtils
=
mappingUtils
;
}
private
final
OrderLineMapper
orderLineMapper
;
@GetMapping
(
"/{id}"
)
public
OrderLineDto
get
(
@PathVariable
Long
id
)
{
...
...
@@ -44,7 +31,7 @@ public class OrderLineController {
@PutMapping
(
"/{id}"
)
public
OrderLineDto
updateOrder
(
@PathVariable
Long
id
,
@Valid
@RequestBody
OrderLineDto
orderLine
)
{
return
orderLineService
.
updateOrderLine
(
mappingUtils
.
toOrderLine
(
orderLine
),
id
);
return
orderLineService
.
updateOrderLine
(
orderLineMapper
.
toEntity
(
orderLine
),
id
);
}
@DeleteMapping
(
"/{id}"
)
...
...
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