Skip to content

Commit 5042ac7

Browse files
authored
Merge pull request #25 from Neighbors-dev/develop
[FEAT] 공유하기 페이지 조회 및 추천인 코드 발급 API 구현
2 parents f8dd3a7 + 29ab60a commit 5042ac7

File tree

25 files changed

+171
-19
lines changed

25 files changed

+171
-19
lines changed

src/main/java/com/neighbors/tohero/application/address/service/AddressService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import lombok.RequiredArgsConstructor;
1313
import org.springframework.stereotype.Service;
1414

15-
import java.util.ArrayList;
1615
import java.util.List;
1716
import java.util.stream.Collectors;
1817
import java.util.stream.Stream;

src/main/java/com/neighbors/tohero/application/baseResponse/BaseResponseMessage.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public enum BaseResponseMessage {
2020
이미_존재하는_유저입니다("이미 존재하는 유저입니다"),
2121
유저_이름_변경이_완료되었습니다("유저 이름 변경이 완료되었습니다"),
2222
존재하지_않는_유저입니다("존재하지 않는 유저입니다"),
23-
유저_이름의_길이는_1부터_5까지만_가능합니다("유저 이름의 길이는 1부터 5까지만 가능합니다"),
23+
유저_이름의_길이는_1부터_5까지만_가능합니다("유저 이름의 길이는 1부터 5까지만 가능합니다. 쉼표가 포함되면 안됩니다."),
2424
ROLE_필드는_필수입력입니다("ROLE 필드는 필수입력입니다"),
2525
이메일_형식이_올바르지_못합니다("이메일 형식이 올바르지 못합니다"),
2626
유저가_성공적으로_인증되었습니다("유저가 성공적으로 인증되었습니다"),
@@ -56,7 +56,8 @@ public enum BaseResponseMessage {
5656
뉴스_조회가_실패했습니다("뉴스 조회가 실패했습니다"),
5757

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

6162
private final String message;
6263

src/main/java/com/neighbors/tohero/application/letter/dto/CreateLetterRequest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ public record CreateLetterRequest (
2525
Boolean readingAlarm,
2626

2727
@NotNull
28-
boolean isPublic
28+
boolean isPublic,
29+
30+
@JsonInclude(JsonInclude.Include.NON_NULL)
31+
String recommenderCode
2932
){
3033
}

src/main/java/com/neighbors/tohero/application/letter/service/LetterService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import lombok.RequiredArgsConstructor;
1919
import org.springframework.stereotype.Service;
2020

21-
import java.util.ArrayList;
2221
import java.util.List;
2322

2423
@Service
@@ -102,7 +101,8 @@ private BaseResponse<CreateLetterResponse> createGuestLetter(final String nickna
102101
createLetterRequest.targetJob(),
103102
createLetterRequest.addressId(),
104103
createLetterRequest.heroName(),
105-
createLetterRequest.isPublic()
104+
createLetterRequest.isPublic(),
105+
createLetterRequest.recommenderCode()
106106
);
107107

108108
throwIfLetterNotCreate(createdLetterId);

src/main/java/com/neighbors/tohero/application/login/service/OAuthService.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,13 @@
1010
import com.neighbors.tohero.common.jwt.JwtProvider;
1111
import com.neighbors.tohero.common.jwt.JwtUserDetails;
1212
import com.neighbors.tohero.domain.domain.user.model.User;
13-
import com.neighbors.tohero.domain.domain.user.service.CreateUser;
1413
import com.neighbors.tohero.domain.domain.login.service.oauth.kakao.RequestKakaoInfo;
1514
import com.neighbors.tohero.domain.domain.user.service.GetUser;
1615
import lombok.RequiredArgsConstructor;
1716
import lombok.extern.slf4j.Slf4j;
1817
import org.springframework.beans.factory.annotation.Value;
1918
import org.springframework.stereotype.Service;
2019

21-
import java.util.Optional;
22-
2320
@Slf4j
2421
@Service
2522
@RequiredArgsConstructor
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.neighbors.tohero.application.sharing.dto;
2+
3+
import java.util.List;
4+
5+
public record GetSharingPageInfoResponse(
6+
int numberOfWriter,
7+
List<String> nameOfWriters
8+
) {
9+
}

src/main/java/com/neighbors/tohero/application/sharing/service/SharingService.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.neighbors.tohero.application.baseResponse.BaseResponseMessage;
55
import com.neighbors.tohero.application.baseResponse.BaseResponseStatus;
66
import com.neighbors.tohero.application.sharing.dto.GetRecommenderCodeResponse;
7+
import com.neighbors.tohero.application.sharing.dto.GetSharingPageInfoResponse;
78
import com.neighbors.tohero.common.jwt.JwtProvider;
89
import com.neighbors.tohero.domain.domain.user.model.User;
910
import com.neighbors.tohero.domain.domain.user.service.GetUser;
@@ -31,6 +32,16 @@ public BaseResponse<GetRecommenderCodeResponse> getRecommenderCode(String userEm
3132
);
3233
}
3334

35+
public BaseResponse<GetSharingPageInfoResponse> getSharingPageInfo(long userId){
36+
List<String> nameOfWriters = getUser.getNameOfWritersByUserId(userId);
37+
38+
return new BaseResponse<>(
39+
BaseResponseStatus.OK,
40+
BaseResponseMessage.공유하기_페이지_조회가_성공했습니다.getMessage(),
41+
new GetSharingPageInfoResponse(nameOfWriters.size(), nameOfWriters)
42+
);
43+
}
44+
3445
private String createRecommenderCode(User user){
3546
String recommenderEmailsDividedBySlash = user.getRecommenders();
3647
List<String> recommenderEmails = new java.util.ArrayList<>(List.of(recommenderEmailsDividedBySlash.split("/")));

src/main/java/com/neighbors/tohero/application/user/dto/AuthenticateUserRequest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import jakarta.validation.constraints.Email;
66
import jakarta.validation.constraints.NotBlank;
77
import jakarta.validation.constraints.NotNull;
8+
import jakarta.validation.constraints.Pattern;
89
import org.hibernate.validator.constraints.Length;
910

1011
public record AuthenticateUserRequest (
@@ -13,6 +14,7 @@ public record AuthenticateUserRequest (
1314

1415
@NotBlank
1516
@Length(min = 1, max = 5)
17+
@Pattern(regexp = "^[^,]*$")
1618
String nickname,
1719

1820
@JsonInclude(JsonInclude.Include.NON_NULL)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.neighbors.tohero.application.user.dto;
22

3+
import jakarta.validation.constraints.Pattern;
34
import org.hibernate.validator.constraints.Length;
45

56
public record UpdateUserName(
67
@Length(min = 1, max = 5)
8+
@Pattern(regexp = "^[^,]*$")
79
String nickname
810
) {
911
}

src/main/java/com/neighbors/tohero/domain/domain/letter/service/CreateLetter.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.neighbors.tohero.common.annotaion.DomainService;
55
import com.neighbors.tohero.common.enums.TargetJob;
66
import com.neighbors.tohero.common.exception.address.AddressException;
7+
import com.neighbors.tohero.common.jwt.JwtProvider;
78
import com.neighbors.tohero.domain.domain.address.model.Address;
89
import com.neighbors.tohero.domain.domain.mainPage.model.Letter;
910
import com.neighbors.tohero.domain.domain.user.model.User;
@@ -12,13 +13,16 @@
1213
import com.neighbors.tohero.domain.query.UserRepository;
1314
import lombok.RequiredArgsConstructor;
1415

16+
import java.util.List;
17+
1518
@DomainService
1619
@RequiredArgsConstructor
1720
public class CreateLetter {
1821

1922
private final LetterRepository letterRepository;
2023
private final UserRepository userRepository;
2124
private final AddressRepository addressRepository;
25+
private final JwtProvider jwtProvider;
2226

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

5155
Letter createdLetter = letterRepository.createLetter(newLetter);
56+
reflectRecommendation(writer, createLetterRequest.recommenderCode());
57+
5258
return createdLetter.getLetterId();
5359
}
5460

55-
public long createGuestLetter(String writer, String content, TargetJob targetJob, Long addressId, String heroName, boolean isPublic){
61+
public long createGuestLetter(String writer, String content, TargetJob targetJob, Long addressId, String heroName, boolean isPublic, String recommenderCode){
5662
Letter newLetter;
5763
if(addressId == null){
5864
newLetter = Letter.builder()
@@ -81,6 +87,17 @@ public long createGuestLetter(String writer, String content, TargetJob targetJob
8187
}
8288

8389
Letter createdLetter = letterRepository.createLetter(newLetter);
90+
//todo 비회원 편지 작성 공유하기 반영 막으려면 이거 주석처리
91+
reflectRecommendation(writer, recommenderCode);
92+
8493
return createdLetter.getLetterId();
8594
}
95+
96+
private void reflectRecommendation(String writer, String recommenderCode){
97+
if(recommenderCode != null){
98+
String recommenderEmailsDividedBySlash = jwtProvider.getRecommenderEmails(recommenderCode);
99+
List<String> recommenderEmails = List.of(recommenderEmailsDividedBySlash.split("/"));
100+
userRepository.reflectRecommendation(writer, recommenderEmails);
101+
}
102+
}
86103
}

0 commit comments

Comments
 (0)