думаю на этом всё, осталось сделать реакт

This commit is contained in:
Николай 2023-05-01 18:55:32 +04:00
parent 8f17dd6365
commit 728b166be0
21 changed files with 40 additions and 261 deletions

View File

@ -1,8 +1,8 @@
package com.LabWork.app.MangaStore.configuration;
import com.LabWork.app.MangaStore.user.controller.UserSignupMvcController;
import com.LabWork.app.MangaStore.user.model.UserRole;
import com.LabWork.app.MangaStore.user.service.UserService;
import com.LabWork.app.MangaStore.controller.User.UserSignupMvcController;
import com.LabWork.app.MangaStore.model.Default.UserRole;
import com.LabWork.app.MangaStore.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;

View File

@ -6,7 +6,7 @@ import com.LabWork.app.MangaStore.service.CreatorService;
import com.LabWork.app.MangaStore.service.MangaService;
import javax.validation.Valid;
import com.LabWork.app.MangaStore.user.model.UserRole;
import com.LabWork.app.MangaStore.model.Default.UserRole;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.access.annotation.Secured;
@ -38,7 +38,7 @@ public class CreatorActionMvcController {
creatorService.findAllCreators().stream()
.map(CreatorMangaDto::new)
.toList());
CreatorMangaDto currentCreator = new CreatorMangaDto(creatorService.findCreator(creatorService.findByLogin(user).getId()));
CreatorMangaDto currentCreator = new CreatorMangaDto(creatorService.findByLogin(user));
model.addAttribute("currentCreator", currentCreator);
model.addAttribute("creatorId", currentCreator.getId());
return "creatorAction";

View File

@ -1,48 +0,0 @@
package com.LabWork.app.MangaStore.controller.Creator;
import com.LabWork.app.MangaStore.configuration.WebConfiguration;
import com.LabWork.app.MangaStore.model.Dto.CreatorMangaDto;
import com.LabWork.app.MangaStore.service.CreatorService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(WebConfiguration.REST_API + "/creator")
public class CreatorController {
private final CreatorService creatorService;
public CreatorController(CreatorService creatorService) {
this.creatorService = creatorService;
}
@GetMapping("/{id}")
public CreatorMangaDto getCreator(@PathVariable Long id) {
return new CreatorMangaDto(creatorService.findCreator(id));
}
@GetMapping
public List<CreatorMangaDto> getCreators() {
return creatorService.findAllCreators().stream()
.map(CreatorMangaDto::new)
.toList();
}
@PutMapping("/{id}")
public CreatorMangaDto updateCreator(@PathVariable Long id,
@RequestParam("creatorName") String creatorName,
@RequestParam("password") String password) {
return new CreatorMangaDto(creatorService.updateCreator(id, creatorName, password));
}
@DeleteMapping("/{id}")
public CreatorMangaDto deleteCreator(@PathVariable Long id) {
//creatorService.deleteAllCreators();
return new CreatorMangaDto(creatorService.deleteCreator(id));
}
@DeleteMapping
public void deleteAllCreator() {
creatorService.deleteAllCreators();
}
}

View File

@ -1,57 +0,0 @@
package com.LabWork.app.MangaStore.controller.Manga;
import com.LabWork.app.MangaStore.configuration.WebConfiguration;
import com.LabWork.app.MangaStore.model.Dto.MangaReaderDto;
import com.LabWork.app.MangaStore.model.Dto.ReaderMangaDto;
import com.LabWork.app.MangaStore.model.Dto.SupportDto.MangaDto;
import com.LabWork.app.MangaStore.service.MangaService;
import javax.validation.Valid;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(WebConfiguration.REST_API + "/manga")
public class MangaController {
private final MangaService mangaService;
public MangaController(MangaService mangaService) {
this.mangaService = mangaService;
}
@GetMapping("/{id}")
public MangaReaderDto getManga(@PathVariable Long id) {
return new MangaReaderDto(mangaService.findManga(id), mangaService.getReader(id));
}
@GetMapping
public List<MangaReaderDto> getMangas() {
return mangaService.findAllMangas().stream()
.map(x -> new MangaReaderDto(x, mangaService.getReader(x.getId())))
.toList();
}
@GetMapping("/{id}/readers")
public List<ReaderMangaDto> getReaders(@PathVariable Long id) {
return mangaService.getReader(id).stream()
.map(x -> new ReaderMangaDto(x))
.toList();
}
@DeleteMapping("/{id}")
public MangaDto deleteManga(@PathVariable Long id) {
return new MangaDto(mangaService.deleteManga(id));
}
@PostMapping
public MangaDto createManga(@RequestBody @Valid MangaDto mangaDto) {
return new MangaDto(mangaService.addManga(mangaDto));
}
@PutMapping("/{id}")
public MangaDto updateManga(@RequestBody @Valid MangaDto mangaDto) {
return new MangaDto(mangaService.updateManga(mangaDto));
}
}

View File

@ -1,13 +1,12 @@
package com.LabWork.app.MangaStore.controller.Reader;
import com.LabWork.app.MangaStore.model.Dto.CreatorMangaDto;
import com.LabWork.app.MangaStore.model.Dto.ReaderMangaDto;
import com.LabWork.app.MangaStore.model.Dto.SupportDto.MangaDto;
import com.LabWork.app.MangaStore.service.ReaderService;
import com.LabWork.app.MangaStore.service.MangaService;
import javax.validation.Valid;
import com.LabWork.app.MangaStore.user.model.UserRole;
import com.LabWork.app.MangaStore.model.Default.UserRole;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.access.annotation.Secured;
@ -16,8 +15,6 @@ import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@Controller
@RequestMapping("/readerAction")
@Secured({UserRole.AsString.USER})
@ -37,7 +34,7 @@ public class ReaderActionMvcController {
readerService.findAllReaders().stream()
.map(ReaderMangaDto::new)
.toList());
ReaderMangaDto currentReader = new ReaderMangaDto(readerService.findReader(readerService.findByLogin(user).getId()));
ReaderMangaDto currentReader = new ReaderMangaDto(readerService.findByLogin(user));
model.addAttribute("readerId", currentReader.getId());
model.addAttribute("reader", new ReaderMangaDto(readerService.findReader(currentReader.getId())));
model.addAttribute("MangaDto", new MangaDto());

View File

@ -1,56 +0,0 @@
package com.LabWork.app.MangaStore.controller.Reader;
import com.LabWork.app.MangaStore.configuration.WebConfiguration;
import com.LabWork.app.MangaStore.model.Dto.ReaderMangaDto;
import com.LabWork.app.MangaStore.model.Dto.SupportDto.MangaDto;
import com.LabWork.app.MangaStore.service.ReaderService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(WebConfiguration.REST_API + "/reader")
public class ReaderController {
private final ReaderService readerService;
public ReaderController(ReaderService readerService) {
this.readerService = readerService;
}
@GetMapping("/{id}")
public ReaderMangaDto getReader(@PathVariable Long id) {
return new ReaderMangaDto(readerService.findReader(id));
}
@GetMapping
public List<ReaderMangaDto> getReaders() {
return readerService.findAllReaders().stream()
.map(ReaderMangaDto::new)
.toList();
}
@PutMapping("/{id}")
public ReaderMangaDto updateReader(@PathVariable Long id,
@RequestParam("readerName") String readerName,
@RequestParam("password") String password) {
return new ReaderMangaDto(readerService.updateReader(id, readerName, password));
}
@PutMapping("/{id}/addManga")
public MangaDto addManga(@PathVariable Long id,
@RequestParam("mangaId") Long mangaId) {
return new MangaDto(readerService.addManga(mangaId, id));
}
@PutMapping("/{id}/removeManga")
public MangaDto removeManga(@PathVariable Long id,
@RequestParam("mangaId") Long mangaId) {
return new MangaDto(readerService.removeManga(mangaId, id));
}
@DeleteMapping("/{id}")
public ReaderMangaDto deleteReader(@PathVariable Long id) {
return new ReaderMangaDto(readerService.deleteReader(id));
}
}

View File

@ -1,8 +1,8 @@
package com.LabWork.app.MangaStore.user.controller;
package com.LabWork.app.MangaStore.controller.User;
import com.LabWork.app.MangaStore.user.model.UserDto;
import com.LabWork.app.MangaStore.user.model.UserRole;
import com.LabWork.app.MangaStore.user.service.UserService;
import com.LabWork.app.MangaStore.model.Dto.UserDto;
import com.LabWork.app.MangaStore.model.Default.UserRole;
import com.LabWork.app.MangaStore.service.UserService;
import org.springframework.data.domain.Page;
import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Controller;

View File

@ -1,8 +1,8 @@
package com.LabWork.app.MangaStore.user.controller;
package com.LabWork.app.MangaStore.controller.User;
import com.LabWork.app.MangaStore.user.model.User;
import com.LabWork.app.MangaStore.user.model.UserSignupDto;
import com.LabWork.app.MangaStore.user.service.UserService;
import com.LabWork.app.MangaStore.model.Default.User;
import com.LabWork.app.MangaStore.model.Dto.UserSignupDto;
import com.LabWork.app.MangaStore.service.UserService;
import com.LabWork.app.MangaStore.util.validation.ValidationException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;

View File

@ -1,9 +1,6 @@
package com.LabWork.app.MangaStore.model.Default;
import com.LabWork.app.MangaStore.user.model.User;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;

View File

@ -25,8 +25,6 @@ public class Manga {
@JoinColumn(name="creator_fk")
private Creator creator;
private Long creatorId;
@Lob
private byte[] image;
public Manga() {

View File

@ -2,9 +2,6 @@ package com.LabWork.app.MangaStore.model.Default;
import javax.persistence.*;
import com.LabWork.app.MangaStore.user.model.User;
import org.hibernate.annotations.Cascade;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

View File

@ -1,4 +1,4 @@
package com.LabWork.app.MangaStore.user.model;
package com.LabWork.app.MangaStore.model.Default;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;

View File

@ -1,4 +1,4 @@
package com.LabWork.app.MangaStore.user.model;
package com.LabWork.app.MangaStore.model.Default;
import org.springframework.security.core.GrantedAuthority;

View File

@ -1,4 +1,7 @@
package com.LabWork.app.MangaStore.user.model;
package com.LabWork.app.MangaStore.model.Dto;
import com.LabWork.app.MangaStore.model.Default.User;
import com.LabWork.app.MangaStore.model.Default.UserRole;
public class UserDto {
private final long id;

View File

@ -1,4 +1,6 @@
package com.LabWork.app.MangaStore.user.model;
package com.LabWork.app.MangaStore.model.Dto;
import com.LabWork.app.MangaStore.model.Default.UserRole;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

View File

@ -5,8 +5,8 @@ import com.LabWork.app.MangaStore.model.Default.Manga;
import com.LabWork.app.MangaStore.model.Default.Reader;
import com.LabWork.app.MangaStore.service.Repository.CreatorRepository;
import com.LabWork.app.MangaStore.service.Exception.CreatorNotFoundException;
import com.LabWork.app.MangaStore.user.model.User;
import com.LabWork.app.MangaStore.user.repository.UserRepository;
import com.LabWork.app.MangaStore.model.Default.User;
import com.LabWork.app.MangaStore.service.Repository.UserRepository;
import com.LabWork.app.MangaStore.util.validation.ValidatorUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -36,8 +36,9 @@ public class CreatorService {
final Optional<Creator> creator = creatorRepository.findById(id);
return creator.orElseThrow(() -> new CreatorNotFoundException(id));
}
public User findByLogin(String login) {
return userRepository.findOneByLoginIgnoreCase(login);
public Creator findByLogin(String login) {
return findCreator(userRepository.findOneByLoginIgnoreCase(login).getId());
}
@Transactional(readOnly = true)
public User findUser(Long id) {
@ -54,31 +55,4 @@ public class CreatorService {
validatorUtil.validate(creator);
return creatorRepository.save(creator);
}
@Transactional
public Creator updateCreator(Long id, String creatorName, String password) {
final User currentUser = findUser(id);
currentUser.setLogin(creatorName);
currentUser.setPassword(password);
validatorUtil.validate(currentUser);
return findCreator(id);
}
@Transactional
public Creator deleteCreator(Long id) {
final Creator currentCreator = findCreator(id);
List<Manga> listManga = currentCreator.getMangas();
for (Manga manga : listManga){
for (final Reader reader :mangaService.getReader(manga.getId())){
reader.getMangas().remove(manga);
}
}
creatorRepository.delete(currentCreator);
return currentCreator;
}
@Transactional
public void deleteAllCreators() {
creatorRepository.deleteAll();
}
}

View File

@ -1,6 +1,5 @@
package com.LabWork.app.MangaStore.service;
import com.LabWork.app.MangaStore.model.Default.Creator;
import com.LabWork.app.MangaStore.model.Default.Manga;
import com.LabWork.app.MangaStore.model.Default.Reader;
import com.LabWork.app.MangaStore.service.Exception.CreatorNotFoundException;
@ -8,8 +7,8 @@ import com.LabWork.app.MangaStore.service.Repository.MangaRepository;
import com.LabWork.app.MangaStore.service.Repository.ReaderRepository;
import com.LabWork.app.MangaStore.service.Exception.MangaNotFoundException;
import com.LabWork.app.MangaStore.service.Exception.ReaderNotFoundException;
import com.LabWork.app.MangaStore.user.model.User;
import com.LabWork.app.MangaStore.user.repository.UserRepository;
import com.LabWork.app.MangaStore.model.Default.User;
import com.LabWork.app.MangaStore.service.Repository.UserRepository;
import com.LabWork.app.MangaStore.util.validation.ValidatorUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -40,8 +39,8 @@ public class ReaderService {
return reader.orElseThrow(() -> new ReaderNotFoundException(id));
}
public User findByLogin(String login) {
return userRepository.findOneByLoginIgnoreCase(login);
public Reader findByLogin(String login) {
return findReader(userRepository.findOneByLoginIgnoreCase(login).getId());
}
@Transactional(readOnly = true)
@ -62,28 +61,6 @@ public class ReaderService {
return readerRepository.save(reader);
}
@Transactional
public Reader updateReader(Long id, String creatorName, String password) {
final User currentUser = findUser(id);
currentUser.setLogin(creatorName);
currentUser.setPassword(password);
validatorUtil.validate(currentUser);
return findReader(id);
}
@Transactional
public Reader deleteReader(Long id) {
final Reader currentReader = findReader(id);
currentReader.getMangas().clear();
readerRepository.delete(currentReader);
return currentReader;
}
@Transactional
public void deleteAllReaders() {
readerRepository.deleteAll();
}
@Transactional(readOnly = true)
public Manga findManga(Long id) {
final Optional<Manga> manga = mangaRepository.findById(id);

View File

@ -1,7 +1,6 @@
package com.LabWork.app.MangaStore.service.Repository;
import com.LabWork.app.MangaStore.model.Default.Creator;
import com.LabWork.app.MangaStore.user.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface CreatorRepository extends JpaRepository<Creator, Long> {

View File

@ -1,6 +1,6 @@
package com.LabWork.app.MangaStore.user.repository;
package com.LabWork.app.MangaStore.service.Repository;
import com.LabWork.app.MangaStore.user.model.User;
import com.LabWork.app.MangaStore.model.Default.User;
import org.springframework.data.jpa.repository.JpaRepository;

View File

@ -1,8 +1,8 @@
package com.LabWork.app.MangaStore.user.service;
package com.LabWork.app.MangaStore.service;
import com.LabWork.app.MangaStore.service.CreatorService;
import com.LabWork.app.MangaStore.service.ReaderService;
import com.LabWork.app.MangaStore.user.model.UserRole;
import com.LabWork.app.MangaStore.model.Default.UserRole;
import com.LabWork.app.MangaStore.util.validation.ValidationException;
import com.LabWork.app.MangaStore.util.validation.ValidatorUtil;
import org.springframework.data.domain.Page;
@ -13,8 +13,8 @@ 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 com.LabWork.app.MangaStore.user.model.User;
import com.LabWork.app.MangaStore.user.repository.UserRepository;
import com.LabWork.app.MangaStore.model.Default.User;
import com.LabWork.app.MangaStore.service.Repository.UserRepository;
import java.util.Collections;
import java.util.Objects;
@ -46,10 +46,6 @@ public class UserService implements UserDetailsService {
return userRepository.findOneByLoginIgnoreCase(login);
}
public User createUser(String login, String password, String passwordConfirm) {
return createUser(login, password, passwordConfirm, UserRole.USER);
}
public User createUser(String login, String password, String passwordConfirm, UserRole role) {
if (findByLogin(login) != null) {
throw new ValidationException(String.format("User '%s' already exists", login));

View File

@ -45,7 +45,7 @@
<div>
<div class="pt-3 description mb-3 fs-6 fw-bold">
Имя пользователя:
<a th:href="@{/readerAction/{id}(id=${reader.id})}" th:text="${reader.readerName}"></a>
<a th:href="@{/readerAction/(readerId=${reader.id})}" th:text="${reader.readerName}"></a>
</div>
</div>
</div>