Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
Spring webflux kafka
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
Kenil Mavani
Spring webflux kafka
Commits
2bc50bbb
Commit
2bc50bbb
authored
Feb 23, 2023
by
Kenil Mavani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adding department model
parent
db8e0602
Changes
17
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
229 additions
and
118 deletions
+229
-118
misc.xml
.idea/misc.xml
+2
-0
modules.xml
.idea/modules.xml
+1
-3
spring-webflux-kafka.iml
.idea/spring-webflux-kafka.iml
+0
-113
DepartmentController.java
...va/com/example/kafka/controller/DepartmentController.java
+84
-0
UserController.java
...ain/java/com/example/kafka/controller/UserController.java
+6
-0
Department.java
src/main/java/com/example/kafka/entity/Department.java
+20
-0
User.java
src/main/java/com/example/kafka/entity/User.java
+2
-0
UserResponse.java
src/main/java/com/example/kafka/entity/UserResponse.java
+25
-0
DepartmentRepository.java
...va/com/example/kafka/repository/DepartmentRepository.java
+8
-0
DepartmentService.java
...ain/java/com/example/kafka/service/DepartmentService.java
+15
-0
DepartmentServiceImpl.java
...java/com/example/kafka/service/DepartmentServiceImpl.java
+38
-0
UserService.java
src/main/java/com/example/kafka/service/UserService.java
+3
-0
UserServiceImpl.java
src/main/java/com/example/kafka/service/UserServiceImpl.java
+25
-2
UserController.class
...classes/com/example/kafka/controller/UserController.class
+0
-0
UserService.class
target/classes/com/example/kafka/service/UserService.class
+0
-0
kafka-0.0.1-SNAPSHOT.jar
target/kafka-0.0.1-SNAPSHOT.jar
+0
-0
kafka-0.0.1-SNAPSHOT.jar.original
target/kafka-0.0.1-SNAPSHOT.jar.original
+0
-0
No files found.
.idea/misc.xml
View file @
2bc50bbb
<?xml version="1.0" encoding="UTF-8"?>
<project
version=
"4"
>
<component
name=
"ExternalStorageConfigurationManager"
enabled=
"true"
/>
<component
name=
"MavenProjectsManager"
>
<option
name=
"originalFiles"
>
<list>
<option
value=
"$PROJECT_DIR$/pom.xml"
/>
<option
value=
"$PROJECT_DIR$/../springMono/pom.xml"
/>
<option
value=
"$USER_HOME$/Downloads/loyalty-events-producer-master/pom.xml"
/>
<option
value=
"$PROJECT_DIR$/../Java8Test/pom.xml"
/>
</list>
</option>
</component>
...
...
.idea/modules.xml
View file @
2bc50bbb
...
...
@@ -2,9 +2,7 @@
<project
version=
"4"
>
<component
name=
"ProjectModuleManager"
>
<modules>
<module
fileurl=
"file://$USER_HOME$/Downloads/loyalty-events-producer-master/loyalty-events-producer.iml"
filepath=
"$USER_HOME$/Downloads/loyalty-events-producer-master/loyalty-events-producer.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/../springMono/mono.iml"
filepath=
"$PROJECT_DIR$/../springMono/mono.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/.idea/spring-webflux-kafka.iml"
filepath=
"$PROJECT_DIR$/.idea/spring-webflux-kafka.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/.idea/modules/Java8Demo.main.iml"
filepath=
"$PROJECT_DIR$/.idea/modules/Java8Demo.main.iml"
/>
</modules>
</component>
</project>
\ No newline at end of file
.idea/spring-webflux-kafka.iml
deleted
100644 → 0
View file @
db8e0602
<?xml version="1.0" encoding="UTF-8"?>
<module
org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=
"true"
type=
"JAVA_MODULE"
version=
"4"
>
<component
name=
"NewModuleRootManager"
LANGUAGE_LEVEL=
"JDK_1_8"
>
<output
url=
"file://$MODULE_DIR$/target/classes"
/>
<output-test
url=
"file://$MODULE_DIR$/target/test-classes"
/>
<content
url=
"file://$MODULE_DIR$"
>
<sourceFolder
url=
"file://$MODULE_DIR$/src/main/java"
isTestSource=
"false"
/>
<sourceFolder
url=
"file://$MODULE_DIR$/src/main/resources"
type=
"java-resource"
/>
<sourceFolder
url=
"file://$MODULE_DIR$/src/test/java"
isTestSource=
"true"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/target"
/>
</content>
<orderEntry
type=
"inheritedJdk"
/>
<orderEntry
type=
"sourceFolder"
forTests=
"false"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-starter-data-mongodb-reactive:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-starter:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-autoconfigure:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-starter-logging:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: ch.qos.logback:logback-classic:1.2.11"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: ch.qos.logback:logback-core:1.2.11"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.logging.log4j:log4j-to-slf4j:2.17.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.logging.log4j:log4j-api:2.17.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.slf4j:jul-to-slf4j:1.7.36"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: jakarta.annotation:jakarta.annotation-api:1.3.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.yaml:snakeyaml:1.30"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.projectreactor:reactor-core:3.4.26"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.reactivestreams:reactive-streams:1.0.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.mongodb:mongodb-driver-reactivestreams:4.6.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.mongodb:bson:4.6.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.mongodb:mongodb-driver-core:4.6.1"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: org.mongodb:bson-record-codec:4.6.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.data:spring-data-mongodb:3.4.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-beans:5.3.24"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-expression:5.3.24"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.data:spring-data-commons:2.7.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-starter-webflux:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-starter-json:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.boot:spring-boot-starter-reactor-netty:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.projectreactor.netty:reactor-netty-http:1.0.26"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-codec-http:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-common:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-buffer:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-transport:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-codec:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-handler:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-codec-http2:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-resolver-dns:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-resolver:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-codec-dns:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-resolver-dns-native-macos:osx-x86_64:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-resolver-dns-classes-macos:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-transport-native-unix-common:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-transport-classes-epoll:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.projectreactor.netty:reactor-netty-core:1.0.26"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-handler-proxy:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.netty:netty-codec-socks:4.1.86.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-web:5.3.24"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-webflux:5.3.24"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.projectlombok:lombok:1.18.24"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-databind:2.13.4.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-core:2.13.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.projectreactor.kafka:reactor-kafka:1.3.15"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.kafka:spring-kafka:2.8.11"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-context:5.3.24"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-aop:5.3.24"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-messaging:5.3.24"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-tx:5.3.24"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.retry:spring-retry:1.3.4"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: com.google.code.findbugs:jsr305:3.0.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.kafka:kafka-clients:3.1.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: com.github.luben:zstd-jni:1.5.0-4"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: org.lz4:lz4-java:1.8.0"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: org.xerial.snappy:snappy-java:1.1.8.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.slf4j:slf4j-api:1.7.36"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.springframework.boot:spring-boot-starter-test:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.springframework.boot:spring-boot-test:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: com.jayway.jsonpath:json-path:2.7.0"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: net.minidev:json-smart:2.4.8"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: net.minidev:accessors-smart:2.4.8"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.ow2.asm:asm:9.1"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: jakarta.activation:jakarta.activation-api:1.2.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.assertj:assertj-core:3.22.0"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.hamcrest:hamcrest:2.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.junit.jupiter:junit-jupiter:5.8.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.junit.jupiter:junit-jupiter-api:5.8.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.opentest4j:opentest4j:1.2.0"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.junit.platform:junit-platform-commons:1.8.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.apiguardian:apiguardian-api:1.1.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.junit.jupiter:junit-jupiter-params:5.8.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.junit.jupiter:junit-jupiter-engine:5.8.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.junit.platform:junit-platform-engine:1.8.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.mockito:mockito-core:4.5.1"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: net.bytebuddy:byte-buddy:1.12.20"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: net.bytebuddy:byte-buddy-agent:1.12.20"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.objenesis:objenesis:3.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.mockito:mockito-junit-jupiter:4.5.1"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.skyscreamer:jsonassert:1.5.1"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-core:5.3.24"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-jcl:5.3.24"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.springframework:spring-test:5.3.24"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.xmlunit:xmlunit-core:2.9.0"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: io.projectreactor:reactor-test:3.4.26"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.google.code.gson:gson:2.10.1"
level=
"project"
/>
</component>
</module>
\ No newline at end of file
src/main/java/com/example/kafka/controller/DepartmentController.java
0 → 100644
View file @
2bc50bbb
package
com
.
example
.
kafka
.
controller
;
import
com.example.kafka.entity.Department
;
import
com.example.kafka.entity.User
;
import
com.example.kafka.entity.UserResponse
;
import
com.example.kafka.service.DepartmentServiceImpl
;
import
com.example.kafka.service.UserServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
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
;
import
java.util.ArrayList
;
import
java.util.List
;
@RestController
@RequestMapping
(
"v1/department"
)
public
class
DepartmentController
{
@Autowired
private
DepartmentServiceImpl
departmentService
;
@Autowired
private
UserServiceImpl
userService
;
/**
* Create user
* @param department The user
* @return The mono of User
*/
@PostMapping
(
"/create"
)
@ResponseStatus
(
HttpStatus
.
ACCEPTED
)
public
Mono
<
Department
>
createDepartment
(
@RequestBody
Department
department
){
return
departmentService
.
createDepartment
(
department
);
}
/**
* Display all users data
* @return The Flux of user
*/
@GetMapping
(
"/all"
)
public
Flux
<
Department
>
getAllDepartments
(){
return
departmentService
.
getAllDepartment
();
}
/**
* Fetch particular user by user id
* @param departmentId The userId
* @return ResponseEntity of user
*/
@GetMapping
(
"/{departmentId}"
)
public
Mono
<
ResponseEntity
<
Department
>>
getDepartmentById
(
@PathVariable
String
departmentId
){
Mono
<
Department
>
department
=
departmentService
.
findById
(
departmentId
);
return
department
.
map
(
ResponseEntity:
:
ok
)
.
defaultIfEmpty
(
ResponseEntity
.
notFound
().
build
());
}
/**
* Update the user data
* @param departmentID The userId
* @param department The user data
* @return ResponseEntity of user
*/
@PutMapping
(
"/{departmentID}"
)
public
Mono
<
ResponseEntity
<
Department
>>
updateDepartmentById
(
@PathVariable
String
departmentID
,
@RequestBody
Department
department
){
return
departmentService
.
updateDepartment
(
departmentID
,
department
)
.
map
(
ResponseEntity:
:
ok
)
.
defaultIfEmpty
(
ResponseEntity
.
badRequest
().
build
());
}
@GetMapping
(
"/fetchAll/{departmentId}"
)
public
Mono
<
UserResponse
>
getDepartmentAndUsersById
(
@PathVariable
String
departmentId
){
Mono
<
Department
>
department
=
departmentService
.
findById
(
departmentId
);
return
department
.
flatMap
(
d
->
userService
.
fetchUserByDepartmentName
(
"d.getName()"
).
collectList
().
map
(
users
->{
UserResponse
userResponse
=
new
UserResponse
();
userResponse
.
setUserList
(
users
);
return
userResponse
;
}));
}
}
src/main/java/com/example/kafka/controller/UserController.java
View file @
2bc50bbb
...
...
@@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.reactive.function.server.ServerResponse
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
...
...
@@ -52,6 +53,11 @@ public class UserController {
.
defaultIfEmpty
(
ResponseEntity
.
notFound
().
build
());
}
@GetMapping
public
Flux
<
User
>
getUserByDepartments
(
@RequestParam
(
value
=
"departmentName"
)
String
departmentName
){
return
userService
.
fetchUserByDepartmentName
(
departmentName
);
}
/**
* Update the user data
* @param userId The userId
...
...
src/main/java/com/example/kafka/entity/Department.java
0 → 100644
View file @
2bc50bbb
package
com
.
example
.
kafka
.
entity
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
lombok.*
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.mongodb.core.mapping.Document
;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@EqualsAndHashCode
(
of
={
"id"
,
"name"
})
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
@Document
(
value
=
"department"
)
public
class
Department
{
@Id
private
String
id
;
private
String
name
;
}
src/main/java/com/example/kafka/entity/User.java
View file @
2bc50bbb
...
...
@@ -35,4 +35,6 @@ public class User {
* User's balance
*/
private
double
balance
;
private
String
departmentName
;
}
src/main/java/com/example/kafka/entity/UserResponse.java
0 → 100644
View file @
2bc50bbb
package
com
.
example
.
kafka
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
java.util.List
;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public
class
UserResponse
{
/**
* User id
*/
private
String
id
;
/**
* User name
*/
private
List
<
User
>
userList
;
}
src/main/java/com/example/kafka/repository/DepartmentRepository.java
0 → 100644
View file @
2bc50bbb
package
com
.
example
.
kafka
.
repository
;
import
com.example.kafka.entity.Department
;
import
org.springframework.data.mongodb.repository.ReactiveMongoRepository
;
public
interface
DepartmentRepository
extends
ReactiveMongoRepository
<
Department
,
String
>
{
}
src/main/java/com/example/kafka/service/DepartmentService.java
0 → 100644
View file @
2bc50bbb
package
com
.
example
.
kafka
.
service
;
import
com.example.kafka.entity.Department
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
public
interface
DepartmentService
{
Mono
<
Department
>
createDepartment
(
Department
department
);
Flux
<
Department
>
getAllDepartment
();
Mono
<
Department
>
findById
(
String
departmentId
);
Mono
<
Department
>
updateDepartment
(
String
departmentId
,
Department
department
);
}
src/main/java/com/example/kafka/service/DepartmentServiceImpl.java
0 → 100644
View file @
2bc50bbb
package
com
.
example
.
kafka
.
service
;
import
com.example.kafka.entity.Department
;
import
com.example.kafka.repository.DepartmentRepository
;
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
DepartmentServiceImpl
implements
DepartmentService
{
@Autowired
private
DepartmentRepository
departmentRepository
;
@Override
public
Mono
<
Department
>
createDepartment
(
Department
department
)
{
return
departmentRepository
.
save
(
department
);
}
@Override
public
Flux
<
Department
>
getAllDepartment
()
{
return
departmentRepository
.
findAll
();
}
@Override
public
Mono
<
Department
>
findById
(
String
departmentId
)
{
return
departmentRepository
.
findById
(
departmentId
);
}
@Override
public
Mono
<
Department
>
updateDepartment
(
String
departmentId
,
Department
department
)
{
return
departmentRepository
.
findById
(
departmentId
).
flatMap
(
DBdepartment
->
{
DBdepartment
.
setName
(
department
.
getName
());
return
departmentRepository
.
save
(
DBdepartment
);
});
}
}
src/main/java/com/example/kafka/service/UserService.java
View file @
2bc50bbb
...
...
@@ -2,6 +2,7 @@ package com.example.kafka.service;
import
com.example.kafka.entity.Order
;
import
com.example.kafka.entity.User
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
...
...
@@ -17,4 +18,6 @@ public interface UserService {
Mono
<
User
>
findById
(
String
userId
);
Mono
<
User
>
updateUser
(
String
userId
,
User
user
);
Flux
<
User
>
fetchUserByDepartmentName
(
String
department
);
}
src/main/java/com/example/kafka/service/UserServiceImpl.java
View file @
2bc50bbb
...
...
@@ -5,8 +5,14 @@ import com.example.kafka.entity.User;
import
com.example.kafka.enumerator.OrderStatus
;
import
com.example.kafka.repository.OrderRepository
;
import
com.example.kafka.repository.UserRepository
;
import
com.mongodb.reactivestreams.client.MongoClients
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.ReactiveMongoOperations
;
import
org.springframework.data.mongodb.core.ReactiveMongoTemplate
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
...
...
@@ -62,9 +68,26 @@ public class UserServiceImpl implements UserService {
@Override
public
Mono
<
User
>
updateUser
(
String
userId
,
User
user
){
return
userRepository
.
findById
(
userId
).
flatMap
(
dbUser
->
{
if
(!
ObjectUtils
.
isEmpty
(
user
.
getAge
())
&&
user
.
getAge
()>
0
)
{
dbUser
.
setAge
(
user
.
getAge
());
}
if
(!
ObjectUtils
.
isEmpty
(
user
.
getBalance
())
&&
user
.
getBalance
()>
0
)
{
dbUser
.
setBalance
(
user
.
getBalance
());
}
if
(!
ObjectUtils
.
isEmpty
(
user
.
getDepartmentName
()))
{
dbUser
.
setDepartmentName
(
user
.
getDepartmentName
());
}
return
userRepository
.
save
(
dbUser
);
});
}
@Override
public
Flux
<
User
>
fetchUserByDepartmentName
(
String
department
)
{
ReactiveMongoOperations
ops
=
new
ReactiveMongoTemplate
(
MongoClients
.
create
(),
"test"
);
Criteria
c
=
Criteria
.
where
(
"departmentName"
).
is
(
department
);
Query
qry
=
new
Query
(
c
);
return
ops
.
find
(
qry
,
User
.
class
);
}
}
target/classes/com/example/kafka/controller/UserController.class
View file @
2bc50bbb
No preview for this file type
target/classes/com/example/kafka/service/UserService.class
View file @
2bc50bbb
No preview for this file type
target/kafka-0.0.1-SNAPSHOT.jar
View file @
2bc50bbb
No preview for this file type
target/kafka-0.0.1-SNAPSHOT.jar.original
View file @
2bc50bbb
No preview for this file type
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