Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.List;

public record GetSharingPageInfoResponse(
boolean isFirst,
int numberOfWriter,
List<String> nameOfWriters
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,20 @@
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
@RequiredArgsConstructor
public class SharingService {

private final GetUser getUser;
private final UpdateUser updateUser;
private final JwtProvider jwtProvider;

public BaseResponse<GetRecommenderCodeResponse> getRecommenderCode(String userEmail){
Expand All @@ -33,12 +37,15 @@ public BaseResponse<GetRecommenderCodeResponse> getRecommenderCode(String userEm
}

public BaseResponse<GetSharingPageInfoResponse> getSharingPageInfo(long userId){
List<String> nameOfWriters = getUser.getNameOfWritersByUserId(userId);
User user = getUser.getUserForSharing(userId);
String recommendedPeopleName = user.getRecommenders();
List<String> 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)
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

@Builder
@Getter
Expand All @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public User getUserById(long userId) {
return userRepository.getUser(repo -> repo.findByUserId(userId));
}

public List<String> getNameOfWritersByUserId(long userId){
return userRepository.getNameOfWriters(repo -> repo.findNameOfWritersByUserId(userId));
public User getUserForSharing(long userId){
return userRepository.getUserForSharing(repo -> repo.findByUserId(userId));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ public interface UserRepository {
User getUser(Function<UserEntityRepository, Optional<UserEntity>> findUserFunction);
void deleteUser(Consumer<UserEntityRepository> findUserConsumer);
void reflectRecommendation(String writer, List<String> recommenderEmails);
List<String> getNameOfWriters(Function<UserEntityRepository, Optional<UserEntity>> findUserFunction);
User getUserForSharing(Function<UserEntityRepository, Optional<UserEntity>> findUserFunction);
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ public User toDomain(UserEntity userEntity){
userEntity.getNickName(),
userEntity.getEmail(),
userEntity.getRole(),
userEntity.getRecommenders()
userEntity.getRecommenders(),
userEntity.isFirstSharing()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -92,14 +92,15 @@ public void reflectRecommendation(String writer, List<String> recommenderEmails)
}

@Override
public List<String> getNameOfWriters(Function<UserEntityRepository, Optional<UserEntity>> findUserFunction) {
public User getUserForSharing(Function<UserEntityRepository, Optional<UserEntity>> 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;
}
}
Loading