From 8ce978e9cb03fa2eb51337d626048afe8403a3d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=91=D0=B0=D0=BA=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D1=81=D0=BA=D0=B0=D1=8F?= Date: Sun, 19 May 2024 22:55:45 +0400 Subject: [PATCH] =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5?= =?UTF-8?q?=D1=82=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F,=20=D1=80=D0=B0=D0=B7=D0=B3=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=20=D0=B4=D0=BE=D1=81=D1=82=D1=83=D0=BF=D0=B0,=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B0=D1=8E=D1=82=D1=81=D1=8F,?= =?UTF-8?q?=20=D1=83=D0=B4=D0=B0=D0=BB=D1=8F=D1=8E=D1=82=D1=81=D1=8F,=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D1=83=D1=8E?= =?UTF-8?q?=D1=82=D1=81=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B0?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D0=B8))=20(=D0=B2=D1=81=D1=91=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/backend/BackendApplication.java | 29 ++++++ .../categories/service/CategorieService.java | 2 +- .../core/errors/NotFoundException.java | 4 +- .../favorites/service/FavoriteService.java | 2 +- .../backend/movies/service/MovieService.java | 2 +- .../backend/users/api/UserController.java | 91 +++++++++++++++--- .../backend/users/service/UserService.java | 11 ++- .../backend/viewed/service/ViewedService.java | 8 +- .../main/resources/templates/categories.html | 2 +- .../src/main/resources/templates/default.html | 8 +- .../src/main/resources/templates/error.html | 2 +- .../main/resources/templates/favorites.html | 2 +- .../src/main/resources/templates/index.html | 76 +++++++++++++++ .../src/main/resources/templates/login.html | 2 +- .../src/main/resources/templates/movies.html | 2 +- .../main/resources/templates/pagination.html | 51 ++++++++++ .../src/main/resources/templates/signup.html | 2 +- .../main/resources/templates/user-edit.html | 36 +++++++ .../src/main/resources/templates/user.html | 56 +++++++++++ data.mv.db | Bin 106496 -> 172032 bytes 20 files changed, 352 insertions(+), 36 deletions(-) create mode 100644 backend/src/main/resources/templates/index.html create mode 100644 backend/src/main/resources/templates/pagination.html create mode 100644 backend/src/main/resources/templates/user-edit.html create mode 100644 backend/src/main/resources/templates/user.html diff --git a/backend/src/main/java/com/example/backend/BackendApplication.java b/backend/src/main/java/com/example/backend/BackendApplication.java index 59b8340..7200524 100644 --- a/backend/src/main/java/com/example/backend/BackendApplication.java +++ b/backend/src/main/java/com/example/backend/BackendApplication.java @@ -29,8 +29,37 @@ public class BackendApplication implements CommandLineRunner { @Override public void run(String... args) throws Exception { final var admin = new UserEntity(null, "elena", "1234"); + final var vasya = new UserEntity(null, "vasya", "1234"); + + final var u1 = new UserEntity(null, "1", "1234"); + final var u2 = new UserEntity(null, "2", "1234"); + final var u3 = new UserEntity(null, "3", "1234"); + final var u4 = new UserEntity(null, "4", "1234"); + final var u5 = new UserEntity(null, "5", "1234"); + final var u6 = new UserEntity(null, "6", "1234"); + final var u7 = new UserEntity(null, "7", "1234"); + admin.setRole(UserRole.ADMIN); + vasya.setRole(UserRole.USER); + + u1.setRole(UserRole.USER); + u2.setRole(UserRole.USER); + u3.setRole(UserRole.USER); + u4.setRole(UserRole.USER); + u5.setRole(UserRole.USER); + u6.setRole(UserRole.USER); + u7.setRole(UserRole.USER); + userService.create(admin); + userService.create(vasya); + userService.create(u1); + userService.create(u2); + userService.create(u3); + userService.create(u4); + userService.create(u5); + userService.create(u6); + userService.create(u7); + _logger.info("Admin user added"); } diff --git a/backend/src/main/java/com/example/backend/categories/service/CategorieService.java b/backend/src/main/java/com/example/backend/categories/service/CategorieService.java index f9cd4e0..436e5b7 100644 --- a/backend/src/main/java/com/example/backend/categories/service/CategorieService.java +++ b/backend/src/main/java/com/example/backend/categories/service/CategorieService.java @@ -34,7 +34,7 @@ public class CategorieService { @Transactional(readOnly = true) public CategorieEntity get(Integer id) { - return repository.findById(id).orElseThrow(() -> new NotFoundException(id)); + return repository.findById(id).orElseThrow(() -> new NotFoundException(CategorieEntity.class, id)); } @Transactional diff --git a/backend/src/main/java/com/example/backend/core/errors/NotFoundException.java b/backend/src/main/java/com/example/backend/core/errors/NotFoundException.java index 5c62ded..12ac375 100644 --- a/backend/src/main/java/com/example/backend/core/errors/NotFoundException.java +++ b/backend/src/main/java/com/example/backend/core/errors/NotFoundException.java @@ -1,7 +1,7 @@ package com.example.backend.core.errors; public class NotFoundException extends RuntimeException { - public NotFoundException(Integer id) { - super(String.format("Сущность с айдишником <[%s]> не найден, либо его не существует", id)); + public NotFoundException(Class clazz, Integer id) { + super(String.format("%s with id [%s] is not found or not exists", clazz.getSimpleName(), id)); } } diff --git a/backend/src/main/java/com/example/backend/favorites/service/FavoriteService.java b/backend/src/main/java/com/example/backend/favorites/service/FavoriteService.java index 70b2282..4058ae6 100644 --- a/backend/src/main/java/com/example/backend/favorites/service/FavoriteService.java +++ b/backend/src/main/java/com/example/backend/favorites/service/FavoriteService.java @@ -28,7 +28,7 @@ public class FavoriteService { @Transactional(readOnly = true) public FavoriteEntity get(Integer id) { - return repository.findById(id).orElseThrow(() -> new NotFoundException(id)); + return repository.findById(id).orElseThrow(() -> new NotFoundException(FavoriteEntity.class, id)); } @Transactional diff --git a/backend/src/main/java/com/example/backend/movies/service/MovieService.java b/backend/src/main/java/com/example/backend/movies/service/MovieService.java index 0e2bb6c..4a0e372 100644 --- a/backend/src/main/java/com/example/backend/movies/service/MovieService.java +++ b/backend/src/main/java/com/example/backend/movies/service/MovieService.java @@ -37,7 +37,7 @@ public class MovieService { @Transactional(readOnly = true) public MovieEntity get(Integer id) { - return repository.findById(id).orElseThrow(() -> new NotFoundException(id)); + return repository.findById(id).orElseThrow(() -> new NotFoundException(MovieEntity.class, id)); } @Transactional diff --git a/backend/src/main/java/com/example/backend/users/api/UserController.java b/backend/src/main/java/com/example/backend/users/api/UserController.java index 608dc0e..d57f9cc 100644 --- a/backend/src/main/java/com/example/backend/users/api/UserController.java +++ b/backend/src/main/java/com/example/backend/users/api/UserController.java @@ -1,28 +1,33 @@ package com.example.backend.users.api; +import java.util.Map; import org.modelmapper.ModelMapper; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import com.example.backend.core.api.PageAttributesMapper; import com.example.backend.core.configurations.Constants; import com.example.backend.users.model.UserEntity; import com.example.backend.users.service.UserService; import jakarta.validation.Valid; -import org.springframework.web.bind.annotation.RequestBody; @Controller -// @RequestMapping(Constants.API_URL + "/user") +@RequestMapping(UserController.URL) public class UserController { - private static final String CATEGORIES_VIEW = "categories"; - private static final String LOGIN_VIEW = "login"; + public static final String URL = Constants.ADMIN_PREFIX + "/user"; + private static final String USER_VIEW = "user"; + private static final String USER_EDIT_VIEW = "user-edit"; + private static final String PAGE_ATTRIBUTE = "page"; private static final String USER_ATTRIBUTE = "user"; private final UserService userService; @@ -41,21 +46,81 @@ public class UserController { return modelMapper.map(entity, UserDTO.class); } + @GetMapping + public String getAll( + @RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + Model model) { + final Map attributes = PageAttributesMapper.toAttributes( + userService.getAll(page, Constants.DEFUALT_PAGE_SIZE), this::toDto); + model.addAllAttributes(attributes); + model.addAttribute(PAGE_ATTRIBUTE, page); + return USER_VIEW; + } + @GetMapping("/edit/") - public String create(Model model) { - model.addAttribute(CATEGORIES_VIEW, new UserDTO()); - return LOGIN_VIEW; + public String create(@RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + Model model) { + model.addAttribute(USER_ATTRIBUTE, new UserDTO()); + model.addAttribute(PAGE_ATTRIBUTE, page); + return USER_EDIT_VIEW; } @PostMapping("/edit/") public String create( - @ModelAttribute(name = USER_ATTRIBUTE) @Valid UserDTO userDTO, + @RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + @ModelAttribute(name = USER_ATTRIBUTE) @Valid UserDTO user, BindingResult bindingResult, - Model model) { + Model model, + RedirectAttributes redirectAttributes) { if (bindingResult.hasErrors()) { - return LOGIN_VIEW + "/login"; + model.addAttribute(PAGE_ATTRIBUTE, page); + return USER_EDIT_VIEW; } - userService.create(toEntity(userDTO)); - return Constants.REDIRECT_VIEW + "/user"; + redirectAttributes.addAttribute(PAGE_ATTRIBUTE, page); + userService.create(toEntity(user)); + return Constants.REDIRECT_VIEW + URL; + } + + @GetMapping("/edit/{id}") + public String update( + @PathVariable(name = "id") Integer id, + @RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + Model model) { + if (id <= 0) { + throw new IllegalArgumentException(); + } + model.addAttribute(USER_ATTRIBUTE, toDto(userService.get(id))); + model.addAttribute(PAGE_ATTRIBUTE, page); + return USER_EDIT_VIEW; + } + + @PostMapping("/edit/{id}") + public String update( + @PathVariable(name = "id") Integer id, + @RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + @ModelAttribute(name = USER_ATTRIBUTE) @Valid UserDTO user, + BindingResult bindingResult, + Model model, + RedirectAttributes redirectAttributes) { + if (bindingResult.hasErrors()) { + model.addAttribute(PAGE_ATTRIBUTE, page); + return USER_EDIT_VIEW; + } + if (id <= 0) { + throw new IllegalArgumentException(); + } + redirectAttributes.addAttribute(PAGE_ATTRIBUTE, page); + userService.update(id, toEntity(user)); + return Constants.REDIRECT_VIEW + URL; + } + + @PostMapping("/delete/{id}") + public String delete( + @PathVariable(name = "id") Integer id, + @RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + RedirectAttributes redirectAttributes) { + redirectAttributes.addAttribute(PAGE_ATTRIBUTE, page); + userService.delete(id); + return Constants.REDIRECT_VIEW + URL; } } diff --git a/backend/src/main/java/com/example/backend/users/service/UserService.java b/backend/src/main/java/com/example/backend/users/service/UserService.java index 60de5f7..ea0a889 100644 --- a/backend/src/main/java/com/example/backend/users/service/UserService.java +++ b/backend/src/main/java/com/example/backend/users/service/UserService.java @@ -3,11 +3,15 @@ package com.example.backend.users.service; import java.util.List; import java.util.Optional; +import org.springframework.data.domain.PageRequest; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Sort; + import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; @@ -43,9 +47,14 @@ public class UserService implements UserDetailsService { return StreamSupport.stream(repository.findAll().spliterator(), false).toList(); } + @Transactional(readOnly = true) + public Page getAll(int page, int size) { + return repository.findAll(PageRequest.of(page, size, Sort.by("id"))); + } + @Transactional(readOnly = true) public UserEntity get(Integer id) { - return repository.findById(id).orElseThrow(() -> new NotFoundException(id)); + return repository.findById(id).orElseThrow(() -> new NotFoundException(UserEntity.class, id)); } @Transactional(readOnly = true) diff --git a/backend/src/main/java/com/example/backend/viewed/service/ViewedService.java b/backend/src/main/java/com/example/backend/viewed/service/ViewedService.java index c7b8f94..51810b3 100644 --- a/backend/src/main/java/com/example/backend/viewed/service/ViewedService.java +++ b/backend/src/main/java/com/example/backend/viewed/service/ViewedService.java @@ -28,7 +28,7 @@ public class ViewedService { @Transactional(readOnly = true) public ViewedEntity get(Integer id) { - return repository.findById(id).orElseThrow(() -> new NotFoundException(id)); + return repository.findById(id).orElseThrow(() -> new NotFoundException(ViewedEntity.class, id)); } @Transactional @@ -50,10 +50,4 @@ public class ViewedService { repository.delete(exisEntity); return exisEntity; } - - // @Transactional - // public Integer countViewed(Integer movieId) { - // return repository.getCountViews(movieId); - // } - } diff --git a/backend/src/main/resources/templates/categories.html b/backend/src/main/resources/templates/categories.html index 3914029..eb7dfff 100644 --- a/backend/src/main/resources/templates/categories.html +++ b/backend/src/main/resources/templates/categories.html @@ -1,5 +1,5 @@ - + Вход diff --git a/backend/src/main/resources/templates/default.html b/backend/src/main/resources/templates/default.html index eefb856..2370585 100644 --- a/backend/src/main/resources/templates/default.html +++ b/backend/src/main/resources/templates/default.html @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/backend/src/main/resources/templates/error.html b/backend/src/main/resources/templates/error.html index faa6b0a..1aeddf3 100644 --- a/backend/src/main/resources/templates/error.html +++ b/backend/src/main/resources/templates/error.html @@ -1,5 +1,5 @@ - + Ошибка diff --git a/backend/src/main/resources/templates/favorites.html b/backend/src/main/resources/templates/favorites.html index 806c9fc..b537184 100644 --- a/backend/src/main/resources/templates/favorites.html +++ b/backend/src/main/resources/templates/favorites.html @@ -1,5 +1,5 @@ - + diff --git a/backend/src/main/resources/templates/index.html b/backend/src/main/resources/templates/index.html new file mode 100644 index 0000000..b2b29de --- /dev/null +++ b/backend/src/main/resources/templates/index.html @@ -0,0 +1,76 @@ + + + + + + + + LiveCinema + + + + + + + + + + + +
+
+
+ Бакальская Е.Д. (@)LiveCinema [[${#dates.year(#dates.createNow())}]]. Все права защищены +
+ + + \ No newline at end of file diff --git a/backend/src/main/resources/templates/login.html b/backend/src/main/resources/templates/login.html index f24caf6..a1e87d0 100644 --- a/backend/src/main/resources/templates/login.html +++ b/backend/src/main/resources/templates/login.html @@ -1,5 +1,5 @@ - + Вход diff --git a/backend/src/main/resources/templates/movies.html b/backend/src/main/resources/templates/movies.html index e1df19f..e5e0b49 100644 --- a/backend/src/main/resources/templates/movies.html +++ b/backend/src/main/resources/templates/movies.html @@ -1,5 +1,5 @@ - + Вход diff --git a/backend/src/main/resources/templates/pagination.html b/backend/src/main/resources/templates/pagination.html new file mode 100644 index 0000000..23fc44c --- /dev/null +++ b/backend/src/main/resources/templates/pagination.html @@ -0,0 +1,51 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/src/main/resources/templates/signup.html b/backend/src/main/resources/templates/signup.html index 6eea683..6e43029 100644 --- a/backend/src/main/resources/templates/signup.html +++ b/backend/src/main/resources/templates/signup.html @@ -1,5 +1,5 @@ - + Регистрация diff --git a/backend/src/main/resources/templates/user-edit.html b/backend/src/main/resources/templates/user-edit.html new file mode 100644 index 0000000..5b33239 --- /dev/null +++ b/backend/src/main/resources/templates/user-edit.html @@ -0,0 +1,36 @@ + + + + + Редакторовать пользователя + + + +
+
+
+ + +
+
+ + +
+
+ +
+ + +
+
+ +
+ + Отмена +
+
+
+ + + \ No newline at end of file diff --git a/backend/src/main/resources/templates/user.html b/backend/src/main/resources/templates/user.html new file mode 100644 index 0000000..af8e6b8 --- /dev/null +++ b/backend/src/main/resources/templates/user.html @@ -0,0 +1,56 @@ + + + + + Пользователи + + + +
+ +

Данные отсутствуют

+ +

Пользователи

+ + + + + + + + + + + + + + + + + + + +
IDИмя пользователя
+
+ + +
+
+
+ + +
+
+
+ + +
+ + + \ No newline at end of file diff --git a/data.mv.db b/data.mv.db index 13a99e6a0d8b78bcdf6242905bfd9017efe1d983..e70e65480691b2049531a1a74951dc79b33e2644 100644 GIT binary patch literal 172032 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