From 90397f7d8ede8de61f232c39049582bd3ff0b6f2 Mon Sep 17 00:00:00 2001 From: agavrilov Date: Thu, 20 Feb 2025 14:18:18 +0300 Subject: [PATCH] end-point updateUserStatus added, new DTO: UpdateUserStatusDTO --- .../java/org/example/controller/UserController.java | 9 ++++++++- src/main/java/org/example/dto/PassingDTO.java | 1 - .../java/org/example/dto/UpdateUserStatusDTO.java | 8 ++++++++ src/main/java/org/example/dto/UserDTO.java | 1 + src/main/java/org/example/entity/Passing.java | 3 +-- src/main/java/org/example/entity/User.java | 3 +++ .../org/example/repository/PassingRepository.java | 2 -- src/main/java/org/example/service/UserService.java | 3 +++ .../org/example/service/impl/PassingServiceImpl.java | 5 ++--- .../org/example/service/impl/UserServiceImpl.java | 11 +++++++++++ src/main/java/org/example/util/PassingMapper.java | 1 - src/main/java/org/example/util/UserMapper.java | 1 + .../db.changelog/1.0/2025-02-18--0001-user.xml | 3 +++ .../db.changelog/1.0/2025-02-19--0003-passing.xml | 3 --- .../data/csv/2025-02-18--0001-user-data.csv | 10 +++++----- .../data/csv/2025-02-19--0004-passing-data.csv | 10 +++++----- 16 files changed, 51 insertions(+), 23 deletions(-) create mode 100644 src/main/java/org/example/dto/UpdateUserStatusDTO.java diff --git a/src/main/java/org/example/controller/UserController.java b/src/main/java/org/example/controller/UserController.java index 306646f..a5ca56e 100644 --- a/src/main/java/org/example/controller/UserController.java +++ b/src/main/java/org/example/controller/UserController.java @@ -2,6 +2,7 @@ package org.example.controller; import lombok.RequiredArgsConstructor; import org.example.dto.PassingDTO; +import org.example.dto.UpdateUserStatusDTO; import org.example.dto.UserDTO; import org.example.service.PassingService; import org.example.service.UserService; @@ -53,7 +54,7 @@ public class UserController { return ResponseEntity.ok(passingService.getAllPassingPaginated(pageable)); } - @PostMapping("/{username/passing/new") + @PostMapping("/{username}/passing/new") public ResponseEntity createPassing(@RequestBody PassingDTO dto) { return ResponseEntity.status(HttpStatus.CREATED).body(passingService.createPassing(dto)); } @@ -67,4 +68,10 @@ public class UserController { public ResponseEntity login(Authentication authentication){ return ResponseEntity.ok(userService.getUserByUsername(authentication.getName())); } + + @PatchMapping("/{username}") + public ResponseEntity updateUserStatus(@PathVariable String username, @RequestBody UpdateUserStatusDTO dto) { + return ResponseEntity.ok(userService.patchUserStatusByUsername(username, dto)); + + } } diff --git a/src/main/java/org/example/dto/PassingDTO.java b/src/main/java/org/example/dto/PassingDTO.java index db30488..b23e75d 100644 --- a/src/main/java/org/example/dto/PassingDTO.java +++ b/src/main/java/org/example/dto/PassingDTO.java @@ -10,5 +10,4 @@ public class PassingDTO { private String type; private String time; private String code; - private String authority; } diff --git a/src/main/java/org/example/dto/UpdateUserStatusDTO.java b/src/main/java/org/example/dto/UpdateUserStatusDTO.java new file mode 100644 index 0000000..0c2dfe7 --- /dev/null +++ b/src/main/java/org/example/dto/UpdateUserStatusDTO.java @@ -0,0 +1,8 @@ +package org.example.dto; + +import lombok.Data; + +@Data +public class UpdateUserStatusDTO { + private String status; +} diff --git a/src/main/java/org/example/dto/UserDTO.java b/src/main/java/org/example/dto/UserDTO.java index e79e42e..da1c7dd 100644 --- a/src/main/java/org/example/dto/UserDTO.java +++ b/src/main/java/org/example/dto/UserDTO.java @@ -11,4 +11,5 @@ public class UserDTO { private String position; private String authority; private String lastvisit; + private String status; } diff --git a/src/main/java/org/example/entity/Passing.java b/src/main/java/org/example/entity/Passing.java index 568188b..ca2531a 100644 --- a/src/main/java/org/example/entity/Passing.java +++ b/src/main/java/org/example/entity/Passing.java @@ -24,6 +24,5 @@ public class Passing { @Column(name = "code") private String code; - @Column(name = "authorities") - private String authority; + } diff --git a/src/main/java/org/example/entity/User.java b/src/main/java/org/example/entity/User.java index 83a0d9c..0a07913 100644 --- a/src/main/java/org/example/entity/User.java +++ b/src/main/java/org/example/entity/User.java @@ -39,6 +39,9 @@ public class User implements UserDetails{ @Column(name = "lastvisit") private String lastvisit; + @Column(name = "status") + private String status; + @Override public Collection getAuthorities() { return List.of(); diff --git a/src/main/java/org/example/repository/PassingRepository.java b/src/main/java/org/example/repository/PassingRepository.java index ca6a0ee..dabf5cc 100644 --- a/src/main/java/org/example/repository/PassingRepository.java +++ b/src/main/java/org/example/repository/PassingRepository.java @@ -9,8 +9,6 @@ import java.util.List; import java.util.Optional; public interface PassingRepository extends JpaRepository { - Optional findByAuthority(String authority); - List findByUsername(String login); @Override diff --git a/src/main/java/org/example/service/UserService.java b/src/main/java/org/example/service/UserService.java index 82f21fe..1099595 100644 --- a/src/main/java/org/example/service/UserService.java +++ b/src/main/java/org/example/service/UserService.java @@ -1,5 +1,6 @@ package org.example.service; +import org.example.dto.UpdateUserStatusDTO; import org.example.dto.UserDTO; public interface UserService { @@ -9,5 +10,7 @@ public interface UserService { UserDTO patchUserByUsername(String username); + UserDTO patchUserStatusByUsername(String username, UpdateUserStatusDTO dto); + } diff --git a/src/main/java/org/example/service/impl/PassingServiceImpl.java b/src/main/java/org/example/service/impl/PassingServiceImpl.java index d31521d..bcf5350 100644 --- a/src/main/java/org/example/service/impl/PassingServiceImpl.java +++ b/src/main/java/org/example/service/impl/PassingServiceImpl.java @@ -5,7 +5,6 @@ import org.example.dto.PassingDTO; import org.example.entity.Passing; import org.example.entity.User; import org.example.exception.AuthorityNotFoundException; -import org.example.exception.UserNotFoundException; import org.example.repository.PassingRepository; import org.example.repository.UserRepository; import org.example.service.PassingService; @@ -26,8 +25,8 @@ public class PassingServiceImpl implements PassingService { @Override public List getAllPassing(String authority) { - Optional passingOptional = passingRepository.findByAuthority("ROLE_ADMIN"); - if (passingOptional.isEmpty()) { + Optional userOptional = userRepository.findByAuthority("ROLE_ADMIN"); + if (userOptional.isEmpty()) { throw new AuthorityNotFoundException("Ошибка доступа"); } diff --git a/src/main/java/org/example/service/impl/UserServiceImpl.java b/src/main/java/org/example/service/impl/UserServiceImpl.java index 31f387a..2973ec5 100644 --- a/src/main/java/org/example/service/impl/UserServiceImpl.java +++ b/src/main/java/org/example/service/impl/UserServiceImpl.java @@ -1,6 +1,7 @@ package org.example.service.impl; import lombok.RequiredArgsConstructor; +import org.example.dto.UpdateUserStatusDTO; import org.example.dto.UserDTO; import org.example.entity.User; import org.example.exception.UserNotFoundException; @@ -43,4 +44,14 @@ public class UserServiceImpl implements UserService { return UserMapper.convertToDto(optionalUser.get()); } + @Override + public UserDTO patchUserStatusByUsername(String username, UpdateUserStatusDTO dto) { + User user = userRepository.findByUsername(username).orElseThrow(() -> new UserNotFoundException("логина не существует или неверный")); + + user.setStatus(dto.getStatus()); + + return UserMapper.convertToDto(userRepository.save(user)); + + } + } diff --git a/src/main/java/org/example/util/PassingMapper.java b/src/main/java/org/example/util/PassingMapper.java index 16eb588..87187f0 100644 --- a/src/main/java/org/example/util/PassingMapper.java +++ b/src/main/java/org/example/util/PassingMapper.java @@ -13,7 +13,6 @@ public class PassingMapper { dto.setType(passing.getType()); dto.setTime(passing.getTime()); dto.setCode(passing.getCode()); - dto.setAuthority(passing.getAuthority()); return dto; } diff --git a/src/main/java/org/example/util/UserMapper.java b/src/main/java/org/example/util/UserMapper.java index ebbdd11..c02dca6 100644 --- a/src/main/java/org/example/util/UserMapper.java +++ b/src/main/java/org/example/util/UserMapper.java @@ -15,6 +15,7 @@ public class UserMapper { dto.setPosition(user.getPosition()); dto.setAuthority(user.getAuthority()); dto.setLastvisit(user.getLastvisit()); + dto.setStatus(user.getStatus()); return dto; } diff --git a/src/main/resources/db.changelog/1.0/2025-02-18--0001-user.xml b/src/main/resources/db.changelog/1.0/2025-02-18--0001-user.xml index dd57b7a..fe5d17f 100644 --- a/src/main/resources/db.changelog/1.0/2025-02-18--0001-user.xml +++ b/src/main/resources/db.changelog/1.0/2025-02-18--0001-user.xml @@ -32,6 +32,9 @@ + + + diff --git a/src/main/resources/db.changelog/1.0/2025-02-19--0003-passing.xml b/src/main/resources/db.changelog/1.0/2025-02-19--0003-passing.xml index bf78d08..ad75696 100644 --- a/src/main/resources/db.changelog/1.0/2025-02-19--0003-passing.xml +++ b/src/main/resources/db.changelog/1.0/2025-02-19--0003-passing.xml @@ -27,9 +27,6 @@ - - - diff --git a/src/main/resources/db.changelog/data/csv/2025-02-18--0001-user-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-18--0001-user-data.csv index 5d9f2d8..44c5548 100644 --- a/src/main/resources/db.changelog/data/csv/2025-02-18--0001-user-data.csv +++ b/src/main/resources/db.changelog/data/csv/2025-02-18--0001-user-data.csv @@ -1,5 +1,5 @@ -username;password;name;photo;position;authorities;lastVisit -pivanov;$2a$10$eObqG4zk7CbKPPTv0daHm.bcpK6zwyFPpjAVXOeDWrT/3TpVcxpia;Иванов Петр Федорович;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Разработчик;ROLE_ADMIN;2024-02-12T08:30:00 -ipetrov;$2a$10$eObqG4zk7CbKPPTv0daHm.bcpK6zwyFPpjAVXOeDWrT/3TpVcxpia;Петров Иван Константинович;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Аналитик;ROLE_USER;2024-02-30T08:35:00 -asemenov;$2a$10$eObqG4zk7CbKPPTv0daHm.bcpK6zwyFPpjAVXOeDWrT/3TpVcxpia;Семенов Анатолий Анатольевич;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Разработчик;ROLE_USER;2024-02-31T08:31:00 -afedorov;$2a$10$eObqG4zk7CbKPPTv0daHm.bcpK6zwyFPpjAVXOeDWrT/3TpVcxpia;Федоров Александр Сергеевич;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Тестировщик;ROLE_USER;2024-02-30T08:36:00 \ No newline at end of file +username;password;name;photo;position;authorities;lastVisit;status +pivanov;$2a$10$eObqG4zk7CbKPPTv0daHm.bcpK6zwyFPpjAVXOeDWrT/3TpVcxpia;Иванов Петр Федорович;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Разработчик;ROLE_ADMIN;2024-02-12T08:30:00;NoBlock +ipetrov;$2a$10$eObqG4zk7CbKPPTv0daHm.bcpK6zwyFPpjAVXOeDWrT/3TpVcxpia;Петров Иван Константинович;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Аналитик;ROLE_USER;2024-02-30T08:35:00;NoBlock +asemenov;$2a$10$eObqG4zk7CbKPPTv0daHm.bcpK6zwyFPpjAVXOeDWrT/3TpVcxpia;Семенов Анатолий Анатольевич;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Разработчик;ROLE_USER;2024-02-31T08:31:00;NoBlock +afedorov;$2a$10$eObqG4zk7CbKPPTv0daHm.bcpK6zwyFPpjAVXOeDWrT/3TpVcxpia;Федоров Александр Сергеевич;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Тестировщик;ROLE_USER;2024-02-30T08:36:00;NoBlock \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/csv/2025-02-19--0004-passing-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-19--0004-passing-data.csv index e9e9014..c9870a6 100644 --- a/src/main/resources/db.changelog/data/csv/2025-02-19--0004-passing-data.csv +++ b/src/main/resources/db.changelog/data/csv/2025-02-19--0004-passing-data.csv @@ -1,5 +1,5 @@ -username;type;time;code;authorities -pivanov;Карта;12:00;1234567890123456789;ROLE_ADMIN -ipetrov;Вход со смартфона;13:00;9223372036854775807;ROLE_USER -asemenov;Карта;10:00;1234567890123456789;ROLE_USER -pivanov;Вход со смартфона;15:00;1234567890123456789;ROLE_USER +username;type;time;code +pivanov;Карта;2024-02-12T08:30:00;1234567890123456789 +ipetrov;Вход со смартфона;2024-02-12T10:30:00;9223372036854775807 +asemenov;Карта;2024-02-12T09:30:00;1234567890123456789 +pivanov;Вход со смартфона;2024-02-12T08:30:00;1234567890123456789