72.2 User service implementation - MapStruct UserMapper (#8)

This commit is contained in:
Art
2021-09-09 14:43:03 +03:00
parent 5688eb6b23
commit 8fd99f43ce
3 changed files with 67 additions and 17 deletions

View File

@ -0,0 +1,18 @@
package net.shyshkin.study.fullstack.supportportal.backend.mapper;
import net.shyshkin.study.fullstack.supportportal.backend.domain.User;
import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import java.time.LocalDateTime;
@Mapper(imports = {LocalDateTime.class})
public interface UserMapper {
@Mapping(target = "isNotLocked", source = "nonLocked")
@Mapping(target = "isActive", source = "active")
@Mapping(target = "joinDate", expression = "java( LocalDateTime.now() )")
User toEntity(UserDto userDto);
}

View File

@ -11,6 +11,7 @@ import net.shyshkin.study.fullstack.supportportal.backend.exception.domain.Email
import net.shyshkin.study.fullstack.supportportal.backend.exception.domain.EmailNotFoundException;
import net.shyshkin.study.fullstack.supportportal.backend.exception.domain.UserNotFoundException;
import net.shyshkin.study.fullstack.supportportal.backend.exception.domain.UsernameExistsException;
import net.shyshkin.study.fullstack.supportportal.backend.mapper.UserMapper;
import net.shyshkin.study.fullstack.supportportal.backend.repository.UserRepository;
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.security.core.userdetails.UserDetails;
@ -40,6 +41,7 @@ public class UserServiceImpl implements UserService {
private final PasswordEncoder passwordEncoder;
private final LoginAttemptService loginAttemptService;
private final EmailService emailService;
private final UserMapper userMapper;
@Override
@Transactional
@ -126,22 +128,14 @@ public class UserServiceImpl implements UserService {
Role role = Role.valueOf(userDto.getRole());
User newUser = User.builder()
.email(email)
.firstName(userDto.getFirstName())
.lastName(userDto.getLastName())
.username(username)
.password(encodedPassword)
.userId(generateUserId())
.isActive(userDto.isActive())
.isNotLocked(userDto.isNonLocked())
.joinDate(LocalDateTime.now())
.profileImageUrl(getTemporaryProfileImageUrl(username))
.lastLoginDate(null)
.lastLoginDateDisplay(null)
.role(role.name())
.authorities(role.getAuthorities())
.build();
User newUser = userMapper.toEntity(userDto);
newUser.setPassword(encodedPassword);
newUser.setUserId(generateUserId());
newUser.setProfileImageUrl(getTemporaryProfileImageUrl(username));
newUser.setRole(role.name());
newUser.setAuthorities(role.getAuthorities());
userRepository.save(newUser);
saveProfileImage(newUser, userDto.getProfileImage());