User register
This commit is contained in:
		
							parent
							
								
									e7733384ef
								
							
						
					
					
						commit
						a2626980d4
					
				
							
								
								
									
										10
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								pom.xml
									
									
									
									
									
								
							| @ -29,10 +29,7 @@ | |||||||
|             <groupId>org.springframework.boot</groupId> |             <groupId>org.springframework.boot</groupId> | ||||||
|             <artifactId>spring-boot-starter-web</artifactId> |             <artifactId>spring-boot-starter-web</artifactId> | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> | 
 | ||||||
|             <groupId>com.h2database</groupId> |  | ||||||
|             <artifactId>h2</artifactId> |  | ||||||
|         </dependency> |  | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.springframework.boot</groupId> |             <groupId>org.springframework.boot</groupId> | ||||||
|             <artifactId>spring-boot-starter-data-jpa</artifactId> |             <artifactId>spring-boot-starter-data-jpa</artifactId> | ||||||
| @ -52,6 +49,11 @@ | |||||||
|             <artifactId>spring-boot-starter-test</artifactId> |             <artifactId>spring-boot-starter-test</artifactId> | ||||||
|             <scope>test</scope> |             <scope>test</scope> | ||||||
|         </dependency> |         </dependency> | ||||||
|  | 
 | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.postgresql</groupId> | ||||||
|  |             <artifactId>postgresql</artifactId> | ||||||
|  |         </dependency> | ||||||
|     </dependencies> |     </dependencies> | ||||||
| 
 | 
 | ||||||
| </project> | </project> | ||||||
| @ -1,23 +1,26 @@ | |||||||
| package com.example.nto.controller; | package com.example.nto.controller; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | import com.example.nto.dto.EmployeeDTO; | ||||||
|  | import com.example.nto.dto.RegisterDTO; | ||||||
| import com.example.nto.entity.Code; | import com.example.nto.entity.Code; | ||||||
| import com.example.nto.entity.Employee; | import com.example.nto.entity.Employee; | ||||||
| import com.example.nto.service.impl.EmployeeServiceImpl; | import com.example.nto.service.impl.EmployeeServiceImpl; | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
|  | import org.springframework.http.HttpStatus; | ||||||
| import org.springframework.http.ResponseEntity; | import org.springframework.http.ResponseEntity; | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| 
 | 
 | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
| 
 | 
 | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/api/") | @RequestMapping("/api") | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class EmployeeController { | public class EmployeeController { | ||||||
|     private EmployeeServiceImpl service; |     private EmployeeServiceImpl service; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     @GetMapping("{login}/auth") |     @GetMapping("/{login}/auth") | ||||||
|     private ResponseEntity<String> getAuth(@PathVariable("login") String login){ |     private ResponseEntity<String> getAuth(@PathVariable("login") String login){ | ||||||
| 
 | 
 | ||||||
|         if(login==null||login.trim().isEmpty()){ |         if(login==null||login.trim().isEmpty()){ | ||||||
| @ -37,7 +40,7 @@ public class EmployeeController { | |||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @GetMapping("{login}/info") |     @GetMapping("/{login}/info") | ||||||
|     private ResponseEntity<Object> getInfo(@PathVariable("login") String login){ |     private ResponseEntity<Object> getInfo(@PathVariable("login") String login){ | ||||||
|         if(login==null||login.trim().isEmpty()){ |         if(login==null||login.trim().isEmpty()){ | ||||||
|             return ResponseEntity.status(400).body("что-то пошло не так"); |             return ResponseEntity.status(400).body("что-то пошло не так"); | ||||||
| @ -55,7 +58,7 @@ public class EmployeeController { | |||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @PatchMapping("{login}/open") |     @PatchMapping("/{login}/open") | ||||||
|     private ResponseEntity<Object> updateLocalTime(@PathVariable("login") String login, @RequestBody  Code code){ |     private ResponseEntity<Object> updateLocalTime(@PathVariable("login") String login, @RequestBody  Code code){ | ||||||
|         if(login==null||login.trim().isEmpty()){ |         if(login==null||login.trim().isEmpty()){ | ||||||
|             return ResponseEntity.status(400).body("что-то пошло не так"); |             return ResponseEntity.status(400).body("что-то пошло не так"); | ||||||
| @ -66,7 +69,7 @@ public class EmployeeController { | |||||||
| 
 | 
 | ||||||
|         Employee employee = service.findEmployeeByLogin(login); |         Employee employee = service.findEmployeeByLogin(login); | ||||||
|         if(employee!=null){ |         if(employee!=null){ | ||||||
|             employee.setLastVisit(LocalDateTime.now()); |             employee.setLastVisit(LocalDateTime.now().toString()); | ||||||
|             service.updateLocalTime(employee); |             service.updateLocalTime(employee); | ||||||
| 
 | 
 | ||||||
|             return ResponseEntity.status(200).body("дверь открылась"); |             return ResponseEntity.status(200).body("дверь открылась"); | ||||||
| @ -76,5 +79,9 @@ public class EmployeeController { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @PostMapping("/registration") | ||||||
|  |     public ResponseEntity<EmployeeDTO> registerEmployee(@RequestBody RegisterDTO dto) { | ||||||
|  |         return ResponseEntity.status(HttpStatus.OK).body(service.createEmployee(dto)); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								src/main/java/com/example/nto/dto/EmployeeDTO.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/main/java/com/example/nto/dto/EmployeeDTO.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | |||||||
|  | package com.example.nto.dto; | ||||||
|  | 
 | ||||||
|  | import lombok.Data; | ||||||
|  | 
 | ||||||
|  | @Data | ||||||
|  | public class EmployeeDTO { | ||||||
|  | 
 | ||||||
|  |     private long id; | ||||||
|  | 
 | ||||||
|  |     private String username; | ||||||
|  | 
 | ||||||
|  |     private String name; | ||||||
|  | 
 | ||||||
|  |     private String photo; | ||||||
|  | 
 | ||||||
|  |     private String position; | ||||||
|  | 
 | ||||||
|  |     private String lastVisit; | ||||||
|  | 
 | ||||||
|  | } | ||||||
							
								
								
									
										18
									
								
								src/main/java/com/example/nto/dto/RegisterDTO.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/main/java/com/example/nto/dto/RegisterDTO.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | |||||||
|  | package com.example.nto.dto; | ||||||
|  | 
 | ||||||
|  | import lombok.Data; | ||||||
|  | 
 | ||||||
|  | @Data | ||||||
|  | public class RegisterDTO { | ||||||
|  | 
 | ||||||
|  |     private String name; | ||||||
|  | 
 | ||||||
|  |     private String username; | ||||||
|  | 
 | ||||||
|  |     private String password; | ||||||
|  | 
 | ||||||
|  |     private String photo; | ||||||
|  | 
 | ||||||
|  |     private String position; | ||||||
|  | 
 | ||||||
|  | } | ||||||
| @ -16,11 +16,15 @@ import java.time.LocalDateTime; | |||||||
| @Table(name="employee") | @Table(name="employee") | ||||||
| public class Employee { | public class Employee { | ||||||
|     @Id |     @Id | ||||||
|  |     @GeneratedValue(strategy = GenerationType.IDENTITY) | ||||||
|     private long id; |     private long id; | ||||||
| 
 | 
 | ||||||
|     @Column(name = "login") |     @Column(name = "login") | ||||||
|     private String login; |     private String login; | ||||||
| 
 | 
 | ||||||
|  |     @Column(name = "password") | ||||||
|  |     private String password; | ||||||
|  | 
 | ||||||
|     @Column(name="name") |     @Column(name="name") | ||||||
|     private String name; |     private String name; | ||||||
| 
 | 
 | ||||||
| @ -31,5 +35,5 @@ public class Employee { | |||||||
|     private String position; |     private String position; | ||||||
| 
 | 
 | ||||||
|     @Column(name="lastVisit") |     @Column(name="lastVisit") | ||||||
|     private LocalDateTime lastVisit; |     private String lastVisit; | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,7 @@ | |||||||
|  | package com.example.nto.exceptions; | ||||||
|  | 
 | ||||||
|  | public class EmployeeAlreadyExistException extends RuntimeException { | ||||||
|  |     public EmployeeAlreadyExistException(String message) { | ||||||
|  |         super(message); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,7 @@ | |||||||
|  | package com.example.nto.exceptions; | ||||||
|  | 
 | ||||||
|  | public class EmployeeNotFoundException extends RuntimeException { | ||||||
|  |     public EmployeeNotFoundException(String message) { | ||||||
|  |         super(message); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,23 @@ | |||||||
|  | package com.example.nto.exceptions.handler; | ||||||
|  | 
 | ||||||
|  | import com.example.nto.exceptions.EmployeeAlreadyExistException; | ||||||
|  | import com.example.nto.exceptions.EmployeeNotFoundException; | ||||||
|  | import org.springframework.http.HttpStatus; | ||||||
|  | import org.springframework.http.ResponseEntity; | ||||||
|  | import org.springframework.web.bind.annotation.ExceptionHandler; | ||||||
|  | import org.springframework.web.bind.annotation.RestControllerAdvice; | ||||||
|  | 
 | ||||||
|  | @RestControllerAdvice | ||||||
|  | public class GlobalExceptionHandler { | ||||||
|  |     @ExceptionHandler(EmployeeAlreadyExistException.class) | ||||||
|  |     public ResponseEntity<String> employeeAlreadyExistExceptionHandler(EmployeeAlreadyExistException e){ | ||||||
|  |         return ResponseEntity.status(HttpStatus.CONFLICT).body(e.getMessage()); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @ExceptionHandler(EmployeeNotFoundException.class) | ||||||
|  |     public ResponseEntity<String> employeeNotFoundExceptionHandler(EmployeeNotFoundException e){ | ||||||
|  |         return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | } | ||||||
| @ -3,6 +3,8 @@ package com.example.nto.repository; | |||||||
| import com.example.nto.entity.Employee; | import com.example.nto.entity.Employee; | ||||||
| import org.springframework.data.jpa.repository.JpaRepository; | import org.springframework.data.jpa.repository.JpaRepository; | ||||||
| 
 | 
 | ||||||
|  | import java.util.Optional; | ||||||
|  | 
 | ||||||
| public interface EmployeeRepository extends JpaRepository<Employee, Long> { | public interface EmployeeRepository extends JpaRepository<Employee, Long> { | ||||||
|     public Employee findEmployeeByLogin(String login); |     public Optional<Employee> findEmployeeByLogin(String login); | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,5 +1,7 @@ | |||||||
| package com.example.nto.service; | package com.example.nto.service; | ||||||
| 
 | 
 | ||||||
|  | import com.example.nto.dto.EmployeeDTO; | ||||||
|  | import com.example.nto.dto.RegisterDTO; | ||||||
| import com.example.nto.entity.Employee; | import com.example.nto.entity.Employee; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| 
 | 
 | ||||||
| @ -7,4 +9,5 @@ import org.springframework.stereotype.Service; | |||||||
| public interface EmployeeService { | public interface EmployeeService { | ||||||
|     public void updateLocalTime(Employee employee); |     public void updateLocalTime(Employee employee); | ||||||
|     public Employee findEmployeeByLogin(String login); |     public Employee findEmployeeByLogin(String login); | ||||||
|  |     EmployeeDTO createEmployee(RegisterDTO dto); | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,12 +1,17 @@ | |||||||
| package com.example.nto.service.impl; | package com.example.nto.service.impl; | ||||||
| 
 | 
 | ||||||
|  | import com.example.nto.dto.EmployeeDTO; | ||||||
|  | import com.example.nto.dto.RegisterDTO; | ||||||
| import com.example.nto.entity.Employee; | import com.example.nto.entity.Employee; | ||||||
|  | import com.example.nto.exceptions.EmployeeAlreadyExistException; | ||||||
| import com.example.nto.repository.EmployeeRepository; | import com.example.nto.repository.EmployeeRepository; | ||||||
| import com.example.nto.service.EmployeeService; | import com.example.nto.service.EmployeeService; | ||||||
|  | import com.example.nto.util.EmployeeMapper; | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| 
 | 
 | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
|  | import java.util.Optional; | ||||||
| 
 | 
 | ||||||
| @Service | @Service | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| @ -14,13 +19,35 @@ public class EmployeeServiceImpl implements EmployeeService { | |||||||
|     private EmployeeRepository repository; |     private EmployeeRepository repository; | ||||||
|     @Override |     @Override | ||||||
|     public void updateLocalTime(Employee employee) { |     public void updateLocalTime(Employee employee) { | ||||||
|         employee.setLastVisit(LocalDateTime.now()); |         employee.setLastVisit(LocalDateTime.now().toString()); | ||||||
|         repository.save(employee); |         repository.save(employee); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public Employee findEmployeeByLogin(String login) { |     public Employee findEmployeeByLogin(String login) { | ||||||
| 
 | 
 | ||||||
|         return repository.findEmployeeByLogin(login); |         return repository.findEmployeeByLogin(login).get(); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public EmployeeDTO createEmployee(RegisterDTO dto) { | ||||||
|  | 
 | ||||||
|  |         Optional<Employee> optionalEmployee = repository.findEmployeeByLogin(dto.getUsername()); | ||||||
|  |         if(optionalEmployee.isPresent()){ | ||||||
|  |             throw new EmployeeAlreadyExistException("Employee with username " + dto.getUsername() +" already exist"); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         Employee employee = new Employee(); | ||||||
|  |         employee.setName(dto.getName()); | ||||||
|  |         employee.setLogin(dto.getUsername()); | ||||||
|  |         employee.setPassword(dto.getPassword()); | ||||||
|  |         employee.setPhoto(dto.getPhoto()); | ||||||
|  |         employee.setPosition(dto.getPosition()); | ||||||
|  |         employee.setLastVisit(LocalDateTime.now().toString()); | ||||||
|  | 
 | ||||||
|  |         return EmployeeMapper.convertToDTO(repository.save(employee)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | |||||||
							
								
								
									
										24
									
								
								src/main/java/com/example/nto/util/EmployeeMapper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/main/java/com/example/nto/util/EmployeeMapper.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | |||||||
|  | package com.example.nto.util; | ||||||
|  | 
 | ||||||
|  | import com.example.nto.dto.EmployeeDTO; | ||||||
|  | import com.example.nto.entity.Employee; | ||||||
|  | import lombok.experimental.UtilityClass; | ||||||
|  | 
 | ||||||
|  | import java.time.format.DateTimeFormatter; | ||||||
|  | import java.time.format.FormatStyle; | ||||||
|  | 
 | ||||||
|  | @UtilityClass | ||||||
|  | public class EmployeeMapper { | ||||||
|  | 
 | ||||||
|  |     public EmployeeDTO convertToDTO(Employee employee){ | ||||||
|  |         EmployeeDTO dto = new EmployeeDTO(); | ||||||
|  |         dto.setId(employee.getId()); | ||||||
|  |         dto.setUsername(employee.getLogin()); | ||||||
|  |         dto.setName(employee.getName()); | ||||||
|  |         dto.setPhoto(employee.getPhoto()); | ||||||
|  |         dto.setPosition(employee.getPosition()); | ||||||
|  |         dto.setLastVisit(employee.getLastVisit()); | ||||||
|  | 
 | ||||||
|  |         return dto; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -1,20 +1,24 @@ | |||||||
| spring: | spring: | ||||||
| 
 | 
 | ||||||
|   datasource: |   datasource: | ||||||
|     url: jdbc:h2:mem:testdb |     url: jdbc:postgresql://localhost:5432/testdb | ||||||
| 
 | 
 | ||||||
|   h2: |     username: "postgres" | ||||||
|     console: |     password: "MobileDev" | ||||||
|       #enabled: false | 
 | ||||||
|       enabled: true |   driver-class-name: | ||||||
|  |     org.postgresql.Driver | ||||||
| 
 | 
 | ||||||
|   jpa: |   jpa: | ||||||
|     #generate-ddl: false |     #generate-ddl: false | ||||||
|     generate-ddl: true |     generate-ddl: true | ||||||
| 
 | 
 | ||||||
|  |     database-platform: | ||||||
|  |       org.hibernate.dialect.PostgreSQLDialect | ||||||
|  | 
 | ||||||
|     hibernate: |     hibernate: | ||||||
|       #ddl-auto: none |       #ddl-auto: none | ||||||
|       ddl-auto: create-drop |       ddl-auto: create | ||||||
| 
 | 
 | ||||||
|     # Показываем запросы |     # Показываем запросы | ||||||
|     show-sql: true |     show-sql: true | ||||||
|  | |||||||
| @ -1,9 +1,9 @@ | |||||||
| INSERT INTO employee (id, login, name, photo, position, last_visit) | INSERT INTO employee (id, login, password, name, photo, position, last_visit) | ||||||
| VALUES | VALUES | ||||||
| (1, 'pivanov', 'Иванов Петр Федорович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:30'), | (1, 'pivanov', 'employee', 'Иванов Петр Федорович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:30'), | ||||||
| (2, 'ipetrov', 'Петров Иван Константинович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35'), | (2, 'ipetrov', 'employee', 'Петров Иван Константинович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35'), | ||||||
| (3, 'asemenov', 'Семенов Анатолий Анатольевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31'), | (3, 'asemenov', 'employee', 'Семенов Анатолий Анатольевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31'), | ||||||
| (4, 'afedorov', 'Федоров Александр Сергеевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36'); | (4, 'afedorov', 'employee', 'Федоров Александр Сергеевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36'); | ||||||
| 
 | 
 | ||||||
| INSERT INTO code (value) | INSERT INTO code (value) | ||||||
| VALUES | VALUES | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user