Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
ecommerce-maven
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
0
Merge Requests
0
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
ecommerce-maven
Commits
20818a17
Commit
20818a17
authored
May 11, 2021
by
Xiyang Lu
Browse files
Options
Browse Files
Download
Plain Diff
resolve merge conflict when git pull
parents
cb9f4636
1a5114b0
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
135 additions
and
28 deletions
+135
-28
Dockerfile
ecom-service/Dockerfile
+13
-9
pom.xml
ecom-service/pom.xml
+12
-0
SwaggerConfig.java
...main/java/com/nisum/ecomservice/config/SwaggerConfig.java
+39
-0
WebFluxConfig.java
...main/java/com/nisum/ecomservice/config/WebFluxConfig.java
+23
-0
OrdersController.java
...va/com/nisum/ecomservice/controller/OrdersController.java
+8
-0
CartPostDTO.java
.../src/main/java/com/nisum/ecomservice/dto/CartPostDTO.java
+19
-0
OrderRequest.java
...src/main/java/com/nisum/ecomservice/dto/OrderRequest.java
+3
-2
Address.java
...ce/src/main/java/com/nisum/ecomservice/model/Address.java
+2
-4
ProductRef.java
...src/main/java/com/nisum/ecomservice/model/ProductRef.java
+2
-4
User.java
...rvice/src/main/java/com/nisum/ecomservice/model/User.java
+1
-0
OrderService.java
...main/java/com/nisum/ecomservice/service/OrderService.java
+11
-7
ProductService.java
...in/java/com/nisum/ecomservice/service/ProductService.java
+1
-1
config.js
ecom-web/src/config.js
+1
-1
No files found.
ecom-service/Dockerfile
View file @
20818a17
FROM
maven:3.6.0-jdk-11-slim AS build
COPY
src /home/app/src
COPY
pom.xml /home/app
RUN
mvn
-f
/home/app/pom.xml clean package
-DskipTests
FROM
openjdk:11-jre-slim
FROM
openjdk:11-jre-slim
COPY
--from=build /home/app/
target/ecom-service-0.0.1-SNAPSHOT.jar /usr/local/lib/ecomservice.jar
COPY
target/ecom-service-0.0.1-SNAPSHOT.jar /usr/local/lib/ecomservice.jar
EXPOSE
8080
EXPOSE
8080
ENTRYPOINT
["java","-jar","/usr/local/lib/ecomservice.jar"]
ENTRYPOINT
["java","-jar","/usr/local/lib/ecomservice.jar"]
#FROM maven:3.6.0-jdk-11-slim AS build
#COPY src /home/app/src
#COPY pom.xml /home/app
#RUN mvn -f /home/app/pom.xml clean package -DskipTests
#FROM openjdk:11-jre-slim
#COPY --from=build /home/app/target/ecom-service-0.0.1-SNAPSHOT.jar /usr/local/lib/ecomservice.jar
#EXPOSE 8080
#ENTRYPOINT ["java","-jar","/usr/local/lib/ecomservice.jar"]
#FROM openjdk:8-alpine
#VOLUME /tmp
#ADD target/ecom-service-0.0.1-SNAPSHOT.jar
#ENTRYPOINT ["java","-jar","/ecom-service-0.0.1-SNAPSHOT.jar"]
ecom-service/pom.xml
View file @
20818a17
...
@@ -41,6 +41,18 @@
...
@@ -41,6 +41,18 @@
<artifactId>
reactor-test
</artifactId>
<artifactId>
reactor-test
</artifactId>
<scope>
test
</scope>
<scope>
test
</scope>
</dependency>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
3.0.0
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-boot-starter
</artifactId>
<version>
3.0.0
</version>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
ecom-service/src/main/java/com/nisum/ecomservice/config/SwaggerConfig.java
0 → 100644
View file @
20818a17
package
com
.
nisum
.
ecomservice
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
springfox.documentation.builders.ApiInfoBuilder
;
import
springfox.documentation.builders.PathSelectors
;
import
springfox.documentation.builders.RequestHandlerSelectors
;
import
springfox.documentation.service.ApiInfo
;
import
springfox.documentation.spi.DocumentationType
;
import
springfox.documentation.spring.web.plugins.Docket
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
@Configuration
@EnableSwagger2
public
class
SwaggerConfig
{
ApiInfo
apiInfo
()
{
return
new
ApiInfoBuilder
()
.
title
(
"Ecommerce Microservice"
)
.
build
();
}
@Bean
public
Docket
api
()
{
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
useDefaultResponseMessages
(
false
)
.
select
()
.
apis
(
RequestHandlerSelectors
.
any
())
.
paths
(
PathSelectors
.
any
())
.
build
()
.
apiInfo
(
apiInfo
());
}
}
ecom-service/src/main/java/com/nisum/ecomservice/config/WebFluxConfig.java
0 → 100644
View file @
20818a17
package
com
.
nisum
.
ecomservice
.
config
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.reactive.config.EnableWebFlux
;
import
org.springframework.web.reactive.config.ResourceHandlerRegistry
;
import
org.springframework.web.reactive.config.WebFluxConfigurer
;
@Configuration
@EnableWebFlux
public
class
WebFluxConfig
implements
WebFluxConfigurer
{
@Override
public
void
addResourceHandlers
(
ResourceHandlerRegistry
registry
)
{
registry
.
addResourceHandler
(
"/swagger-ui.html**"
)
.
addResourceLocations
(
"classpath:/META-INF/resources/"
);
registry
.
addResourceHandler
(
"/webjars/**"
)
.
addResourceLocations
(
"classpath:/META-INF/resources/webjars/"
);
}
}
\ No newline at end of file
ecom-service/src/main/java/com/nisum/ecomservice/controller/OrdersController.java
View file @
20818a17
package
com
.
nisum
.
ecomservice
.
controller
;
package
com
.
nisum
.
ecomservice
.
controller
;
import
com.nisum.ecomservice.dto.CartDTO
;
import
com.nisum.ecomservice.dto.Order
;
import
com.nisum.ecomservice.dto.Order
;
import
com.nisum.ecomservice.dto.OrderRequest
;
import
com.nisum.ecomservice.dto.OrderRequest
;
import
com.nisum.ecomservice.service.OrderService
;
import
com.nisum.ecomservice.service.OrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
reactor.core.publisher.Mono
;
@RestController
@RestController
...
@@ -18,4 +21,9 @@ public class OrdersController {
...
@@ -18,4 +21,9 @@ public class OrdersController {
private
Mono
<
Order
>
postOrder
(
@RequestBody
OrderRequest
orderRequest
){
private
Mono
<
Order
>
postOrder
(
@RequestBody
OrderRequest
orderRequest
){
return
orderService
.
postOrder
(
orderRequest
);
return
orderService
.
postOrder
(
orderRequest
);
}
}
@GetMapping
(
"/byUser/{userId}"
)
private
ResponseEntity
<
Flux
<
Order
>>
getUserOrderHistory
(
@PathVariable
String
userId
){
return
ResponseEntity
.
ok
(
orderService
.
getOrderFromOmsAPI
(
userId
));
}
}
}
ecom-service/src/main/java/com/nisum/ecomservice/dto/CartPostDTO.java
0 → 100644
View file @
20818a17
package
com
.
nisum
.
ecomservice
.
dto
;
//needed for post route, do not delete / change names
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
java.util.List
;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public
class
CartPostDTO
{
private
String
id
;
private
String
userId
;
private
List
<
CartItemDTO
>
cartItems
;
}
ecom-service/src/main/java/com/nisum/ecomservice/dto/OrderRequest.java
View file @
20818a17
package
com
.
nisum
.
ecomservice
.
dto
;
package
com
.
nisum
.
ecomservice
.
dto
;
import
com.nisum.ecomservice.model.Address
;
import
com.nisum.ecomservice.model.Address
;
import
com.nisum.ecomservice.model.CartEntity
;
import
com.nisum.ecomservice.model.User
;
import
com.nisum.ecomservice.model.User
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.Setter
;
@Getter
@Getter
@Setter
@Setter
@AllArgsConstructor
@AllArgsConstructor
@NoArgsConstructor
public
class
OrderRequest
{
public
class
OrderRequest
{
private
User
user
;
private
User
user
;
private
Address
address
;
private
Address
address
;
private
Cart
Entity
cartEntity
;
private
Cart
PostDTO
cart
;
}
}
ecom-service/src/main/java/com/nisum/ecomservice/model/Address.java
View file @
20818a17
package
com
.
nisum
.
ecomservice
.
model
;
package
com
.
nisum
.
ecomservice
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.*
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Getter
@Setter
@Setter
@AllArgsConstructor
@AllArgsConstructor
@NoArgsConstructor
@ToString
@ToString
public
class
Address
{
public
class
Address
{
...
...
ecom-service/src/main/java/com/nisum/ecomservice/model/ProductRef.java
View file @
20818a17
package
com
.
nisum
.
ecomservice
.
model
;
package
com
.
nisum
.
ecomservice
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.*
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Getter
@Setter
@Setter
@AllArgsConstructor
@AllArgsConstructor
@NoArgsConstructor
@ToString
@ToString
public
class
ProductRef
{
public
class
ProductRef
{
private
String
id
;
private
String
id
;
...
...
ecom-service/src/main/java/com/nisum/ecomservice/model/User.java
View file @
20818a17
...
@@ -9,6 +9,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
...
@@ -9,6 +9,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
@Getter
@Getter
@Setter
@Setter
@AllArgsConstructor
@AllArgsConstructor
@NoArgsConstructor
@ToString
@ToString
public
class
User
{
public
class
User
{
...
...
ecom-service/src/main/java/com/nisum/ecomservice/service/OrderService.java
View file @
20818a17
package
com
.
nisum
.
ecomservice
.
service
;
package
com
.
nisum
.
ecomservice
.
service
;
import
com.nisum.ecomservice.config.AppConfig
;
import
com.nisum.ecomservice.config.AppConfig
;
import
com.nisum.ecomservice.dto.Order
;
import
com.nisum.ecomservice.dto.*
;
import
com.nisum.ecomservice.dto.OrderItem
;
import
com.nisum.ecomservice.dto.OrderRequest
;
import
com.nisum.ecomservice.dto.OrderSubmission
;
import
com.nisum.ecomservice.model.*
;
import
com.nisum.ecomservice.model.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -26,10 +23,10 @@ public class OrderService {
...
@@ -26,10 +23,10 @@ public class OrderService {
//create user object from user object details
//create user object from user object details
User
user
=
orderRequest
.
getUser
();
User
user
=
orderRequest
.
getUser
();
Address
address
=
orderRequest
.
getAddress
();
Address
address
=
orderRequest
.
getAddress
();
Cart
Entity
cartEntity
=
orderRequest
.
getCartEntity
();
Cart
PostDTO
cart
=
orderRequest
.
getCart
();
//for each item grab product details from products API
//for each item grab product details from products API
List
<
Mono
<
Product
>>
productsToOrder
=
cart
Entity
.
getCartItems
().
stream
()
List
<
Mono
<
Product
>>
productsToOrder
=
cart
.
getCartItems
().
stream
()
.
map
(
cartItem
->
cartItem
.
getProductRef
().
getSku
())
.
map
(
cartItem
->
cartItem
.
getProductRef
().
getSku
())
.
map
(
sku
->
productService
.
getProductBySku
(
sku
))
.
map
(
sku
->
productService
.
getProductBySku
(
sku
))
...
@@ -44,7 +41,7 @@ public class OrderService {
...
@@ -44,7 +41,7 @@ public class OrderService {
orderItem
.
setItemSku
(
product
.
getSku
());
orderItem
.
setItemSku
(
product
.
getSku
());
orderItem
.
setItemPrice
(
product
.
getPrice
());
orderItem
.
setItemPrice
(
product
.
getPrice
());
List
<
CartItem
Entity
>
items
=
cartEntity
.
getCartItems
().
stream
().
filter
(
cartItem
->
cartItem
.
getProductRef
().
getSku
()
List
<
CartItem
DTO
>
items
=
cart
.
getCartItems
().
stream
().
filter
(
cartItem
->
cartItem
.
getProductRef
().
getSku
()
.
equals
(
product
.
getSku
()))
.
equals
(
product
.
getSku
()))
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
...
@@ -81,6 +78,13 @@ public class OrderService {
...
@@ -81,6 +78,13 @@ public class OrderService {
.
retrieve
()
.
retrieve
()
.
bodyToMono
(
Order
.
class
);
.
bodyToMono
(
Order
.
class
);
}
}
public
Flux
<
Order
>
getOrderFromOmsAPI
(
String
userId
){
return
WebClient
.
create
(
String
.
format
(
"%s/orders/byCustomer/%s"
,
AppConfig
.
getOrderManagementAPI
(),
userId
))
.
get
()
.
retrieve
()
.
bodyToFlux
(
Order
.
class
);
}
}
}
/*
/*
.map(productMono -> {
.map(productMono -> {
...
...
ecom-service/src/main/java/com/nisum/ecomservice/service/ProductService.java
View file @
20818a17
...
@@ -11,7 +11,7 @@ import reactor.core.publisher.Flux;
...
@@ -11,7 +11,7 @@ import reactor.core.publisher.Flux;
@Service
@Service
public
class
ProductService
{
public
class
ProductService
{
public
Mono
<
Product
>
getProductBySku
(
String
sku
){
public
Mono
<
Product
>
getProductBySku
(
String
sku
){
return
WebClient
.
create
(
String
.
format
(
"http://localhost:808
2
/api/products/%s"
,
sku
))
return
WebClient
.
create
(
String
.
format
(
"http://localhost:808
3
/api/products/%s"
,
sku
))
.
get
()
.
get
()
.
retrieve
()
.
retrieve
()
.
bodyToMono
(
Product
.
class
);
.
bodyToMono
(
Product
.
class
);
...
...
ecom-web/src/config.js
View file @
20818a17
class
Config
{
class
Config
{
static
baseApiUrl
=
"http://localhost:8080/api"
;
//env file
static
baseApiUrl
=
"http://localhost:8080/api"
;
//env file
static
orderHistoryApiUrlMethod
=
(
userId
)
=>
`
${
this
.
baseApiUrl
}
/
users/
${
userId
}
/orders
`
;
static
orderHistoryApiUrlMethod
=
(
userId
)
=>
`
${
this
.
baseApiUrl
}
/
orders/byUser/
${
userId
}
`
;
}
}
...
...
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