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 @@ -12,7 +12,6 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public enum BaseResponseMessage {
이미_존재하는_유저입니다("이미 존재하는 유저입니다"),
유저_이름_변경이_완료되었습니다("유저 이름 변경이 완료되었습니다"),
존재하지_않는_유저입니다("존재하지 않는 유저입니다"),
유저_이름의_길이는_1부터_5까지만_가능합니다("유저 이름의 길이는 1부터 5까지만 가능합니다"),
유저_이름의_길이는_1부터_5까지만_가능합니다("유저 이름의 길이는 1부터 5까지만 가능합니다. 쉼표가 포함되면 안됩니다."),
ROLE_필드는_필수입력입니다("ROLE 필드는 필수입력입니다"),
이메일_형식이_올바르지_못합니다("이메일 형식이 올바르지 못합니다"),
유저가_성공적으로_인증되었습니다("유저가 성공적으로 인증되었습니다"),
Expand Down Expand Up @@ -56,7 +56,8 @@ public enum BaseResponseMessage {
뉴스_조회가_실패했습니다("뉴스 조회가 실패했습니다"),

//sharing
추천인_코드_생성이_정상실행_되었습니다("추천인 코드 생성이 정상실행 되었습니다");
추천인_코드_생성이_정상실행_되었습니다("추천인 코드 생성이 정상실행 되었습니다"),
공유하기_페이지_조회가_성공했습니다("공유하기 페이지 조회가 성공했습니다");

private final String message;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ public record CreateLetterRequest (
Boolean readingAlarm,

@NotNull
boolean isPublic
boolean isPublic,

@JsonInclude(JsonInclude.Include.NON_NULL)
String recommenderCode
){
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
Expand Down Expand Up @@ -102,7 +101,8 @@ private BaseResponse<CreateLetterResponse> createGuestLetter(final String nickna
createLetterRequest.targetJob(),
createLetterRequest.addressId(),
createLetterRequest.heroName(),
createLetterRequest.isPublic()
createLetterRequest.isPublic(),
createLetterRequest.recommenderCode()
);

throwIfLetterNotCreate(createdLetterId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,13 @@
import com.neighbors.tohero.common.jwt.JwtProvider;
import com.neighbors.tohero.common.jwt.JwtUserDetails;
import com.neighbors.tohero.domain.domain.user.model.User;
import com.neighbors.tohero.domain.domain.user.service.CreateUser;
import com.neighbors.tohero.domain.domain.login.service.oauth.kakao.RequestKakaoInfo;
import com.neighbors.tohero.domain.domain.user.service.GetUser;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.Optional;

@Slf4j
@Service
@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.neighbors.tohero.application.sharing.dto;

import java.util.List;

public record GetSharingPageInfoResponse(
int numberOfWriter,
List<String> nameOfWriters
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.neighbors.tohero.application.baseResponse.BaseResponseMessage;
import com.neighbors.tohero.application.baseResponse.BaseResponseStatus;
import com.neighbors.tohero.application.sharing.dto.GetRecommenderCodeResponse;
import com.neighbors.tohero.application.sharing.dto.GetSharingPageInfoResponse;
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;
Expand Down Expand Up @@ -31,6 +32,16 @@ public BaseResponse<GetRecommenderCodeResponse> getRecommenderCode(String userEm
);
}

public BaseResponse<GetSharingPageInfoResponse> getSharingPageInfo(long userId){
List<String> nameOfWriters = getUser.getNameOfWritersByUserId(userId);

return new BaseResponse<>(
BaseResponseStatus.OK,
BaseResponseMessage.공유하기_페이지_조회가_성공했습니다.getMessage(),
new GetSharingPageInfoResponse(nameOfWriters.size(), nameOfWriters)
);
}

private String createRecommenderCode(User user){
String recommenderEmailsDividedBySlash = user.getRecommenders();
List<String> recommenderEmails = new java.util.ArrayList<>(List.of(recommenderEmailsDividedBySlash.split("/")));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import org.hibernate.validator.constraints.Length;

public record AuthenticateUserRequest (
Expand All @@ -13,6 +14,7 @@ public record AuthenticateUserRequest (

@NotBlank
@Length(min = 1, max = 5)
@Pattern(regexp = "^[^,]*$")
String nickname,

@JsonInclude(JsonInclude.Include.NON_NULL)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.neighbors.tohero.application.user.dto;

import jakarta.validation.constraints.Pattern;
import org.hibernate.validator.constraints.Length;

public record UpdateUserName(
@Length(min = 1, max = 5)
@Pattern(regexp = "^[^,]*$")
String nickname
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.neighbors.tohero.common.annotaion.DomainService;
import com.neighbors.tohero.common.enums.TargetJob;
import com.neighbors.tohero.common.exception.address.AddressException;
import com.neighbors.tohero.common.jwt.JwtProvider;
import com.neighbors.tohero.domain.domain.address.model.Address;
import com.neighbors.tohero.domain.domain.mainPage.model.Letter;
import com.neighbors.tohero.domain.domain.user.model.User;
Expand All @@ -12,13 +13,16 @@
import com.neighbors.tohero.domain.query.UserRepository;
import lombok.RequiredArgsConstructor;

import java.util.List;

@DomainService
@RequiredArgsConstructor
public class CreateLetter {

private final LetterRepository letterRepository;
private final UserRepository userRepository;
private final AddressRepository addressRepository;
private final JwtProvider jwtProvider;

public long createLetter(long userId, String writer, CreateLetterRequest createLetterRequest){
User user = userRepository.getUser(repo -> repo.findByUserId(userId));
Expand Down Expand Up @@ -49,10 +53,12 @@ public long createLetter(long userId, String writer, CreateLetterRequest createL
}

Letter createdLetter = letterRepository.createLetter(newLetter);
reflectRecommendation(writer, createLetterRequest.recommenderCode());

return createdLetter.getLetterId();
}

public long createGuestLetter(String writer, String content, TargetJob targetJob, Long addressId, String heroName, boolean isPublic){
public long createGuestLetter(String writer, String content, TargetJob targetJob, Long addressId, String heroName, boolean isPublic, String recommenderCode){
Letter newLetter;
if(addressId == null){
newLetter = Letter.builder()
Expand Down Expand Up @@ -81,6 +87,17 @@ public long createGuestLetter(String writer, String content, TargetJob targetJob
}

Letter createdLetter = letterRepository.createLetter(newLetter);
//todo 비회원 편지 작성 공유하기 반영 막으려면 이거 주석처리
reflectRecommendation(writer, recommenderCode);

return createdLetter.getLetterId();
}

private void reflectRecommendation(String writer, String recommenderCode){
if(recommenderCode != null){
String recommenderEmailsDividedBySlash = jwtProvider.getRecommenderEmails(recommenderCode);
List<String> recommenderEmails = List.of(recommenderEmailsDividedBySlash.split("/"));
userRepository.reflectRecommendation(writer, recommenderEmails);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ public class GetNews {
private final NewsRepository newsRepository;

public List<News> getPagedNews(Pageable pageable){
return newsRepository.getNewsList(repo -> repo.findAllByPagable(pageable));
return newsRepository.getNewsList(repo -> repo.findAllByPageable(pageable));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import com.neighbors.tohero.domain.query.UserRepository;
import lombok.RequiredArgsConstructor;

import java.util.List;

@DomainService
@RequiredArgsConstructor
public class GetUser {
Expand All @@ -17,4 +19,8 @@ public User getUserByEmail(String email) {
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));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.neighbors.tohero.infrastructure.entity.UserEntity;
import com.neighbors.tohero.infrastructure.repository.UserEntityRepository;

import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;
Expand All @@ -13,4 +14,6 @@ public interface UserRepository {
User updateUserName(Function<UserEntityRepository, Optional<UserEntity>> findUserFunction, String nickname);
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);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.neighbors.tohero.infrastructure.entity;

import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Table(name = "`Recommend`")
@NoArgsConstructor
public class RecommendEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "recommend_id")
private long recommendId;

@Column(name = "recommendedPeopleName")
@Getter
private String recommendedPeopleName;

@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id", nullable = false)
private UserEntity userEntity;

public RecommendEntity(UserEntity user){
this.userEntity = user;
}

public void addRecommendedPeopleName(String recommendedPeopleName){
//todo 만약 나중에 문제가 될 시, 닉네임 중복은 허용안되게 설정할 것
if(this.recommendedPeopleName != null){
this.recommendedPeopleName += "," +recommendedPeopleName;
return;
}
this.recommendedPeopleName = recommendedPeopleName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@Entity
@Table(name = "`User`")
Expand All @@ -26,9 +27,14 @@ public class UserEntity extends BaseEntity {
@Column(name = "role", nullable = false)
private Role role;

@Setter
@Column(name = "recommenders", nullable = true)
private String recommenders;

@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "recommend_id", nullable = false)
private RecommendEntity recommendEntity;

public UserEntity() {
}

Expand All @@ -47,11 +53,15 @@ 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());
return new UserEntity(user.getUserId(), user.getUserName(), user.getEmail(), user.getRole(),user.getRecommenders(), null);
}

public String getRecommenders() {
if(recommenders == null) return "";
return recommenders;
}

public void setRecommenders(RecommendEntity recommendEntity) {
this.recommendEntity = recommendEntity;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.neighbors.tohero.infrastructure.mapper;

import com.neighbors.tohero.domain.domain.user.model.User;
import com.neighbors.tohero.infrastructure.entity.RecommendEntity;
import com.neighbors.tohero.infrastructure.entity.UserEntity;
import org.springframework.stereotype.Component;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import com.neighbors.tohero.infrastructure.mapper.LetterMapper;
import com.neighbors.tohero.infrastructure.repository.LetterEntityRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
@RequiredArgsConstructor
Expand Down
Loading
Loading