Добавил все новые поля (fullName, jobTitle, departmentId) для пользователей. Добавил логирование для UserController.java
This commit is contained in:
@@ -5,6 +5,10 @@ import com.magistr.app.dto.UserResponse;
|
|||||||
import com.magistr.app.model.Role;
|
import com.magistr.app.model.Role;
|
||||||
import com.magistr.app.model.User;
|
import com.magistr.app.model.User;
|
||||||
import com.magistr.app.repository.UserRepository;
|
import com.magistr.app.repository.UserRepository;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.HttpStatusCode;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
@@ -16,6 +20,7 @@ import java.util.Map;
|
|||||||
@RequestMapping("/api/users")
|
@RequestMapping("/api/users")
|
||||||
public class UserController {
|
public class UserController {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
private final BCryptPasswordEncoder passwordEncoder;
|
private final BCryptPasswordEncoder passwordEncoder;
|
||||||
|
|
||||||
@@ -26,52 +31,125 @@ public class UserController {
|
|||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public List<UserResponse> getAllUsers() {
|
public List<UserResponse> getAllUsers() {
|
||||||
return userRepository.findAll().stream()
|
logger.info("Запрос на получение всех пользователей");
|
||||||
.map(u -> new UserResponse(u.getId(), u.getUsername(), u.getRole().name()))
|
try {
|
||||||
.toList();
|
List<User> users = userRepository.findAll();
|
||||||
|
|
||||||
|
List<UserResponse> response = users.stream()
|
||||||
|
.map(u -> new UserResponse(
|
||||||
|
u.getId(),
|
||||||
|
u.getUsername(),
|
||||||
|
u.getRole().name(),
|
||||||
|
u.getFullName(),
|
||||||
|
u.getJobTitle(),
|
||||||
|
u.getDepartmentId()
|
||||||
|
))
|
||||||
|
.toList();
|
||||||
|
logger.info("Получено {} пользователей", response.size());
|
||||||
|
return response;
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Ошибка при получении списка пользователей: {}", e.getMessage(),e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/teachers")
|
@GetMapping("/teachers")
|
||||||
public List<UserResponse> getTeachers() {
|
public List<UserResponse> getTeachers() {
|
||||||
return userRepository.findByRole(Role.TEACHER).stream()
|
logger.info("Запрос на получение пользователей с ролью 'Преподаватель'");
|
||||||
.map(u -> new UserResponse(u.getId(), u.getUsername(), u.getRole().name()))
|
|
||||||
.toList();
|
try {
|
||||||
|
List<User> users = userRepository.findByRole(Role.TEACHER);
|
||||||
|
|
||||||
|
List<UserResponse> response = users.stream()
|
||||||
|
.map(u -> new UserResponse(
|
||||||
|
u.getId(),
|
||||||
|
u.getUsername(),
|
||||||
|
u.getRole().name(),
|
||||||
|
u.getFullName(),
|
||||||
|
u.getJobTitle(),
|
||||||
|
u.getDepartmentId()
|
||||||
|
))
|
||||||
|
.toList();
|
||||||
|
logger.info("Получено {} преподавателей", response.size());
|
||||||
|
return response;
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Ошибка при получении списка преподавателей: {}", e.getMessage(),e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public ResponseEntity<?> createUser(@RequestBody CreateUserRequest request) {
|
public ResponseEntity<?> createUser(@RequestBody CreateUserRequest request) {
|
||||||
if (request.getUsername() == null || request.getUsername().isBlank()) {
|
logger.info("Получен запрос на создание нового пользователя: username = {}, fullName = {}, jobTitle = {}, departmentId = {}", request.getUsername(), request.getFullName(), request.getJobTitle(), request.getDepartmentId());
|
||||||
return ResponseEntity.badRequest().body(Map.of("message", "Имя пользователя обязательно"));
|
|
||||||
}
|
|
||||||
if (request.getPassword() == null || request.getPassword().length() < 4) {
|
|
||||||
return ResponseEntity.badRequest().body(Map.of("message", "Пароль минимум 4 символа"));
|
|
||||||
}
|
|
||||||
if (userRepository.findByUsername(request.getUsername()).isPresent()) {
|
|
||||||
return ResponseEntity.badRequest().body(Map.of("message", "Пользователь уже существует"));
|
|
||||||
}
|
|
||||||
|
|
||||||
Role role;
|
|
||||||
try {
|
try {
|
||||||
role = Role.valueOf(request.getRole());
|
if (request.getUsername() == null || request.getUsername().isBlank()) {
|
||||||
} catch (Exception e) {
|
String errorMessage = "Имя пользователя обязательно";
|
||||||
return ResponseEntity.badRequest().body(Map.of("message", "Недопустимая роль"));
|
logger.error("Ошибка валидации: {}", errorMessage);
|
||||||
|
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||||
|
}
|
||||||
|
if (request.getPassword() == null || request.getPassword().length() < 4) {
|
||||||
|
String errorMessage = "Пароль минимум 4 символа";
|
||||||
|
logger.error("Ошибка валидации: {}", errorMessage);
|
||||||
|
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||||
|
}
|
||||||
|
if (userRepository.findByUsername(request.getUsername()).isPresent()) {
|
||||||
|
String errorMessage = "Пользователь уже существует";
|
||||||
|
logger.error("Ошибка валидации: {}", errorMessage);
|
||||||
|
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||||
|
}
|
||||||
|
if (request.getFullName() == null || request.getFullName().isBlank()) {
|
||||||
|
String errorMessage = "Имя пользователя обязательно";
|
||||||
|
logger.error("Ошибка валидации: {}", errorMessage);
|
||||||
|
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||||
|
}
|
||||||
|
if (request.getJobTitle() == null || request.getJobTitle().isBlank()) {
|
||||||
|
logger.info("Должность не была указана, установлено значение по умолчанию: 'Не указано'");
|
||||||
|
request.setJobTitle("Не указано");
|
||||||
|
}
|
||||||
|
if (request.getDepartmentId() == null || request.getDepartmentId() == 0) {
|
||||||
|
String errorMessage = "ID кафедры не может быть равен 0 или пустым";
|
||||||
|
logger.error("Ошибка валидации: {}", errorMessage);
|
||||||
|
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||||
|
}
|
||||||
|
|
||||||
|
Role role;
|
||||||
|
try {
|
||||||
|
role = Role.valueOf(request.getRole());
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Ошибка при преобразовании роли: {}", e.getMessage());
|
||||||
|
return ResponseEntity.badRequest().body(Map.of("message", "Недопустимая роль"));
|
||||||
|
}
|
||||||
|
|
||||||
|
User user = new User();
|
||||||
|
user.setUsername(request.getUsername());
|
||||||
|
user.setPassword(passwordEncoder.encode(request.getPassword()));
|
||||||
|
user.setRole(role);
|
||||||
|
user.setFullName(request.getFullName());
|
||||||
|
user.setJobTitle(request.getJobTitle());
|
||||||
|
user.setDepartmentId(request.getDepartmentId());
|
||||||
|
userRepository.save(user);
|
||||||
|
|
||||||
|
logger.info("Пользователь успешно создан с ID: {}", user.getId());
|
||||||
|
|
||||||
|
return ResponseEntity.ok(new UserResponse(user.getId(), user.getUsername(), user.getRole().name(), user.getFullName(), user.getJobTitle(), user.getDepartmentId()));
|
||||||
|
} catch (Exception e ) {
|
||||||
|
logger.error("Ошибка при создании пользователя: {}", e.getMessage(), e);
|
||||||
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||||
|
.body(Map.of("message", "Произошла ошибка при создании пользователя: " + e.getMessage()));
|
||||||
}
|
}
|
||||||
|
|
||||||
User user = new User();
|
|
||||||
user.setUsername(request.getUsername());
|
|
||||||
user.setPassword(passwordEncoder.encode(request.getPassword()));
|
|
||||||
user.setRole(role);
|
|
||||||
userRepository.save(user);
|
|
||||||
|
|
||||||
return ResponseEntity.ok(new UserResponse(user.getId(), user.getUsername(), user.getRole().name()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping("/{id}")
|
@DeleteMapping("/{id}")
|
||||||
public ResponseEntity<?> deleteUser(@PathVariable Long id) {
|
public ResponseEntity<?> deleteUser(@PathVariable Long id) {
|
||||||
|
logger.info("Получен запрос на удаление пользователя с ID: {}", id);
|
||||||
if (!userRepository.existsById(id)) {
|
if (!userRepository.existsById(id)) {
|
||||||
|
logger.info("Пользователь с ID - {} не найден", id);
|
||||||
return ResponseEntity.notFound().build();
|
return ResponseEntity.notFound().build();
|
||||||
}
|
}
|
||||||
userRepository.deleteById(id);
|
userRepository.deleteById(id);
|
||||||
|
logger.info("Пользователь с ID - {} успешно удалён", id);
|
||||||
return ResponseEntity.ok(Map.of("message", "Пользователь удалён"));
|
return ResponseEntity.ok(Map.of("message", "Пользователь удалён"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ public class CreateUserRequest {
|
|||||||
private String username;
|
private String username;
|
||||||
private String password;
|
private String password;
|
||||||
private String role;
|
private String role;
|
||||||
|
private String fullName;
|
||||||
|
private String jobTitle;
|
||||||
|
private Long departmentId;
|
||||||
|
|
||||||
public CreateUserRequest() {
|
public CreateUserRequest() {
|
||||||
}
|
}
|
||||||
@@ -32,4 +35,28 @@ public class CreateUserRequest {
|
|||||||
public void setRole(String role) {
|
public void setRole(String role) {
|
||||||
this.role = role;
|
this.role = role;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getFullName() {
|
||||||
|
return fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFullName(String fullName) {
|
||||||
|
this.fullName = fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getJobTitle() {
|
||||||
|
return jobTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setJobTitle(String jobTitle) {
|
||||||
|
this.jobTitle = jobTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getDepartmentId() {
|
||||||
|
return departmentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepartmentId(Long departmentId) {
|
||||||
|
this.departmentId = departmentId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,14 +5,20 @@ public class UserResponse {
|
|||||||
private Long id;
|
private Long id;
|
||||||
private String username;
|
private String username;
|
||||||
private String role;
|
private String role;
|
||||||
|
private String fullName;
|
||||||
|
private String jobTitle;
|
||||||
|
private Long departmentId;
|
||||||
|
|
||||||
public UserResponse() {
|
public UserResponse() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserResponse(Long id, String username, String role) {
|
public UserResponse(Long id, String username, String role, String fullName, String jobTitle, Long departmentId) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.username = username;
|
this.username = username;
|
||||||
this.role = role;
|
this.role = role;
|
||||||
|
this.fullName = fullName;
|
||||||
|
this.jobTitle = jobTitle;
|
||||||
|
this.departmentId = departmentId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getId() {
|
public Long getId() {
|
||||||
@@ -38,4 +44,28 @@ public class UserResponse {
|
|||||||
public void setRole(String role) {
|
public void setRole(String role) {
|
||||||
this.role = role;
|
this.role = role;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getFullName() {
|
||||||
|
return fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFullName(String fullName) {
|
||||||
|
this.fullName = fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getJobTitle() {
|
||||||
|
return jobTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setJobTitle(String jobTitle) {
|
||||||
|
this.jobTitle = jobTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getDepartmentId() {
|
||||||
|
return departmentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepartmentId(Long departmentId) {
|
||||||
|
this.departmentId = departmentId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,15 @@ public class User {
|
|||||||
@Column(nullable = false, length = 20)
|
@Column(nullable = false, length = 20)
|
||||||
private Role role = Role.STUDENT;
|
private Role role = Role.STUDENT;
|
||||||
|
|
||||||
|
@Column(name = "full_name", nullable = false)
|
||||||
|
private String fullName;
|
||||||
|
|
||||||
|
@Column(name="job_title", nullable = false)
|
||||||
|
private String jobTitle;
|
||||||
|
|
||||||
|
@Column(name="department_id", nullable = false)
|
||||||
|
private Long departmentId;
|
||||||
|
|
||||||
public User() {
|
public User() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,4 +63,28 @@ public class User {
|
|||||||
public void setRole(Role role) {
|
public void setRole(Role role) {
|
||||||
this.role = role;
|
this.role = role;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getFullName() {
|
||||||
|
return fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFullName(String fullName) {
|
||||||
|
this.fullName = fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getJobTitle() {
|
||||||
|
return jobTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setJobTitle(String jobTitle) {
|
||||||
|
this.jobTitle = jobTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getDepartmentId() {
|
||||||
|
return departmentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepartmentId(Long departmentId) {
|
||||||
|
this.departmentId = departmentId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user