diff --git a/src/main/java/com/neighbors/tohero/application/sharing/dto/GetSharingPageInfoResponse.java b/src/main/java/com/neighbors/tohero/application/sharing/dto/GetSharingPageInfoResponse.java index 29af7c9..78cb6c3 100644 --- a/src/main/java/com/neighbors/tohero/application/sharing/dto/GetSharingPageInfoResponse.java +++ b/src/main/java/com/neighbors/tohero/application/sharing/dto/GetSharingPageInfoResponse.java @@ -3,6 +3,7 @@ import java.util.List; public record GetSharingPageInfoResponse( + boolean isFirst, int numberOfWriter, List nameOfWriters ) { diff --git a/src/main/java/com/neighbors/tohero/application/sharing/service/SharingService.java b/src/main/java/com/neighbors/tohero/application/sharing/service/SharingService.java index 72659fe..97d9db8 100644 --- a/src/main/java/com/neighbors/tohero/application/sharing/service/SharingService.java +++ b/src/main/java/com/neighbors/tohero/application/sharing/service/SharingService.java @@ -8,9 +8,12 @@ import com.neighbors.tohero.common.jwt.JwtProvider; import com.neighbors.tohero.domain.domain.user.model.User; import com.neighbors.tohero.domain.domain.user.service.GetUser; +import com.neighbors.tohero.domain.domain.user.service.UpdateUser; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @Service @@ -18,6 +21,7 @@ public class SharingService { private final GetUser getUser; + private final UpdateUser updateUser; private final JwtProvider jwtProvider; public BaseResponse getRecommenderCode(String userEmail){ @@ -33,12 +37,15 @@ public BaseResponse getRecommenderCode(String userEm } public BaseResponse getSharingPageInfo(long userId){ - List nameOfWriters = getUser.getNameOfWritersByUserId(userId); + User user = getUser.getUserForSharing(userId); + String recommendedPeopleName = user.getRecommenders(); + List recommendedPeopleNameList = new ArrayList<>(Arrays.asList(recommendedPeopleName + .split(","))); return new BaseResponse<>( BaseResponseStatus.OK, BaseResponseMessage.공유하기_페이지_조회가_성공했습니다.getMessage(), - new GetSharingPageInfoResponse(nameOfWriters.size(), nameOfWriters) + new GetSharingPageInfoResponse(user.isFirstSharing(), recommendedPeopleNameList.size(), recommendedPeopleNameList) ); } diff --git a/src/main/java/com/neighbors/tohero/domain/domain/user/model/User.java b/src/main/java/com/neighbors/tohero/domain/domain/user/model/User.java index bfe2c5c..35d313c 100644 --- a/src/main/java/com/neighbors/tohero/domain/domain/user/model/User.java +++ b/src/main/java/com/neighbors/tohero/domain/domain/user/model/User.java @@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.Setter; @Builder @Getter @@ -15,9 +16,11 @@ public class User { private String email; private Role role; private String recommenders; + @Setter + private boolean isFirstSharing; - public static User of (Long userId, String userName, String email, Role role, String recommenders) { - return new User(userId, userName, email, role, recommenders); + public static User of (Long userId, String userName, String email, Role role, String recommenders, boolean isFirstSharing) { + return new User(userId, userName, email, role, recommenders, isFirstSharing); } public static User toEntity(AuthenticateUserRequest authenticateUserRequest) { diff --git a/src/main/java/com/neighbors/tohero/domain/domain/user/service/GetUser.java b/src/main/java/com/neighbors/tohero/domain/domain/user/service/GetUser.java index 8613255..3b7e71d 100644 --- a/src/main/java/com/neighbors/tohero/domain/domain/user/service/GetUser.java +++ b/src/main/java/com/neighbors/tohero/domain/domain/user/service/GetUser.java @@ -20,7 +20,7 @@ public User getUserById(long userId) { return userRepository.getUser(repo -> repo.findByUserId(userId)); } - public List getNameOfWritersByUserId(long userId){ - return userRepository.getNameOfWriters(repo -> repo.findNameOfWritersByUserId(userId)); + public User getUserForSharing(long userId){ + return userRepository.getUserForSharing(repo -> repo.findByUserId(userId)); } } diff --git a/src/main/java/com/neighbors/tohero/domain/query/UserRepository.java b/src/main/java/com/neighbors/tohero/domain/query/UserRepository.java index d2408b7..58328a2 100644 --- a/src/main/java/com/neighbors/tohero/domain/query/UserRepository.java +++ b/src/main/java/com/neighbors/tohero/domain/query/UserRepository.java @@ -15,5 +15,5 @@ public interface UserRepository { User getUser(Function> findUserFunction); void deleteUser(Consumer findUserConsumer); void reflectRecommendation(String writer, List recommenderEmails); - List getNameOfWriters(Function> findUserFunction); + User getUserForSharing(Function> findUserFunction); } diff --git a/src/main/java/com/neighbors/tohero/infrastructure/entity/UserEntity.java b/src/main/java/com/neighbors/tohero/infrastructure/entity/UserEntity.java index 487d846..126bbaf 100644 --- a/src/main/java/com/neighbors/tohero/infrastructure/entity/UserEntity.java +++ b/src/main/java/com/neighbors/tohero/infrastructure/entity/UserEntity.java @@ -27,6 +27,10 @@ public class UserEntity extends BaseEntity { @Column(name = "role", nullable = false) private Role role; + @Setter + @Column(name = "isFirstSharing", nullable = false) + private boolean isFirstSharing = true; + @Setter @Column(name = "recommenders", nullable = true) private String recommenders; @@ -53,7 +57,7 @@ public static UserEntity returnNewObjectOf(String nickName, String email, Role r } public static UserEntity from(User user) { - return new UserEntity(user.getUserId(), user.getUserName(), user.getEmail(), user.getRole(),user.getRecommenders(), null); + return new UserEntity(user.getUserId(), user.getUserName(), user.getEmail(), user.getRole(), user.isFirstSharing(), user.getRecommenders(), null); } public String getRecommenders() { diff --git a/src/main/java/com/neighbors/tohero/infrastructure/mapper/UserMapper.java b/src/main/java/com/neighbors/tohero/infrastructure/mapper/UserMapper.java index b8291ff..3f4e9f0 100644 --- a/src/main/java/com/neighbors/tohero/infrastructure/mapper/UserMapper.java +++ b/src/main/java/com/neighbors/tohero/infrastructure/mapper/UserMapper.java @@ -26,7 +26,8 @@ public User toDomain(UserEntity userEntity){ userEntity.getNickName(), userEntity.getEmail(), userEntity.getRole(), - userEntity.getRecommenders() + userEntity.getRecommenders(), + userEntity.isFirstSharing() ); } } diff --git a/src/main/java/com/neighbors/tohero/infrastructure/query/impl/UserRepositoryImpl.java b/src/main/java/com/neighbors/tohero/infrastructure/query/impl/UserRepositoryImpl.java index f493657..5bf52f2 100644 --- a/src/main/java/com/neighbors/tohero/infrastructure/query/impl/UserRepositoryImpl.java +++ b/src/main/java/com/neighbors/tohero/infrastructure/query/impl/UserRepositoryImpl.java @@ -92,14 +92,15 @@ public void reflectRecommendation(String writer, List recommenderEmails) } @Override - public List getNameOfWriters(Function> findUserFunction) { + public User getUserForSharing(Function> findUserFunction) { UserEntity matchedUserEntity = getUserEntity(findUserFunction); - String recommendedPeopleName = matchedUserEntity.getRecommendEntity().getRecommendedPeopleName(); + User user = userMapper.toDomain(matchedUserEntity); + if(matchedUserEntity.isFirstSharing()){ + matchedUserEntity.setFirstSharing(false); + userEntityRepository.save(matchedUserEntity); + } - if(recommendedPeopleName == null) {return new ArrayList<>();} - return Arrays.stream(recommendedPeopleName - .split(",")) - .toList(); + return user; } }