Skip to content

Commit 0b1511b

Browse files
authored
Merge pull request #122 from studio-recoding/dev
[🚀feat] 15차 배포
2 parents e9bd27c + 780be63 commit 0b1511b

File tree

10 files changed

+112
-26
lines changed

10 files changed

+112
-26
lines changed

src/main/java/Ness/Backend/domain/auth/oAuth/OAuth2CustomUserService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public OAuth2User loadUser(OAuth2UserRequest oAuth2UserRequest) throws OAuth2Aut
8282
/*이메일로 회원 가입 여부 확인*/
8383
if (!memberRepository.existsByEmail(email) && !Objects.equals(password, DEFAULT_STRING)) {
8484
// 이메일 알림 기능은 디폴트로 false
85-
memberService.createMember(email, password, picture, nickname, name, false);
85+
memberService.createMember(email, password, picture, nickname, name, false, false);
8686
}
8787
member = memberRepository.findMemberByEmail(email);
8888

src/main/java/Ness/Backend/domain/member/MemberService.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ public void deleteMember(Member member) {
2626
memberRepository.save(member);
2727
}
2828

29-
public void createMember(String email, String password, String picture, String nickname, String name, Boolean isEmailActive) {
29+
public void createMember(String email, String password, String picture, String nickname,
30+
String name, Boolean isEmailActive, Boolean isOnBoarded) {
3031
Member member = Member.builder()
3132
.email(email)
3233
.password(bCryptPasswordEncoder.encode(password)) //비밀번호는 해싱해서 DB에 저장
@@ -39,8 +40,9 @@ public void createMember(String email, String password, String picture, String n
3940
.nickname(nickname)
4041
.name(name)
4142
.member(member)
42-
.isEmailActive(isEmailActive)
43+
.isEmailActive(isEmailActive) // 디폴트로 false, 온보딩 마치면 true 변환
4344
.personaType(PersonaType.NESS) //디폴트로 NESS를 저장해줌, 나중에 개인 페이지에서 변경 가능
45+
.onBoarding(isOnBoarded)
4446
.build();
4547

4648
profileRepository.save(profile);
@@ -71,7 +73,7 @@ public void createMember(String email, String password, String picture, String n
7173
//핑크
7274
Category restCategory = Category.builder()
7375
.member(member)
74-
.name("\uD83D\uDEDF여가")
76+
.name("✨여가")
7577
.color("#FF75C8")
7678
.build();
7779

src/main/java/Ness/Backend/domain/profile/ProfileController.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import Ness.Backend.domain.member.entity.Member;
55
import Ness.Backend.domain.profile.dto.request.PatchPersonaDto;
66
import Ness.Backend.domain.profile.dto.request.PutProfileDto;
7+
import Ness.Backend.domain.profile.dto.response.GetOnBoardingDto;
78
import Ness.Backend.domain.profile.dto.response.GetProfileDto;
89
import Ness.Backend.global.auth.AuthUser;
910
import io.swagger.v3.oas.annotations.Operation;
@@ -39,4 +40,18 @@ public ResponseEntity<Long> patchPersona(@AuthUser Member member, @RequestBody P
3940
Long profileId = profileService.updatePersona(member.getId(), patchPersonaDto.getPersona());
4041
return new ResponseEntity<>(profileId, HttpStatusCode.valueOf(200));
4142
}
43+
44+
@GetMapping("/onboarding")
45+
@Operation(summary = "온보딩 여부 확인 API", description = "온보딩 여부를 알 수 있는 API 입니다.")
46+
public ResponseEntity<GetOnBoardingDto> getOnBoarding(@AuthUser Member member) {
47+
GetOnBoardingDto getOnBoardingDto = profileService.getOnBoarding(member.getId());
48+
return new ResponseEntity<>(getOnBoardingDto, HttpStatusCode.valueOf(200));
49+
}
50+
51+
@PatchMapping("/onboarding")
52+
@Operation(summary = "온보딩 여부 수정 API", description = "온보딩 여부를 수정할 수 있는 API 입니다.")
53+
public ResponseEntity<?> updateOnBoarding(@AuthUser Member member, @RequestParam Boolean isOnBoarded) {
54+
profileService.updateOnBoarding(member.getId(), isOnBoarded);
55+
return new ResponseEntity<>(HttpStatusCode.valueOf(200));
56+
}
4257
}

src/main/java/Ness/Backend/domain/profile/ProfileService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package Ness.Backend.domain.profile;
22

33
import Ness.Backend.domain.profile.dto.request.PutProfileDto;
4+
import Ness.Backend.domain.profile.dto.response.GetOnBoardingDto;
45
import Ness.Backend.domain.profile.dto.response.GetProfileDto;
56
import Ness.Backend.domain.profile.entity.PersonaType;
67
import Ness.Backend.domain.profile.entity.Profile;
@@ -36,6 +37,19 @@ public Long updatePersona(Long memberId, PersonaType personaType) {
3637
return profile.getId();
3738
}
3839

40+
public GetOnBoardingDto getOnBoarding(Long memberId){
41+
Profile profile = profileRepository.findProfileByMember_Id(memberId);
42+
43+
return GetOnBoardingDto.builder()
44+
.onBoarding(profile.getOnBoarding())
45+
.build();
46+
}
47+
48+
public void updateOnBoarding(Long memberId, boolean isOnBoarded){
49+
Profile profile = profileRepository.findProfileByMember_Id(memberId);
50+
profile.updateOnBoarding(isOnBoarded);
51+
}
52+
3953
@Transactional(readOnly = true)
4054
public GetProfileDto getProfile(Long memberId, String email) {
4155
Profile profile = profileRepository.findProfileByMember_Id(memberId);
@@ -47,6 +61,7 @@ public GetProfileDto getProfile(Long memberId, String email) {
4761
.isEmailActive(profile.getIsEmailActive())
4862
.email(email)
4963
.persona(profile.getPersonaType())
64+
.onBoarding(profile.getOnBoarding())
5065
.build();
5166

5267
return getProfileDto;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package Ness.Backend.domain.profile.dto.response;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
9+
@Data
10+
@Builder
11+
public class GetOnBoardingDto {
12+
@Schema(description = "사용자의 온보딩 여부", example = "false")
13+
@JsonProperty("onBoarding")
14+
private boolean onBoarding;
15+
}

src/main/java/Ness/Backend/domain/profile/dto/response/GetProfileDto.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,20 @@ public class GetProfileDto {
3737
@JsonProperty("email")
3838
private String email;
3939

40+
@Schema(description = "사용자의 온보딩 여부", example = "false")
41+
@JsonProperty("onBoarding")
42+
private boolean onBoarding;
43+
4044
@Builder
41-
public GetProfileDto(Long id, String pictureUrl, String nickname, String name, PersonaType persona, boolean isEmailActive, String email){
45+
public GetProfileDto(Long id, String pictureUrl, String nickname, String name,
46+
PersonaType persona, boolean isEmailActive, String email, boolean onBoarding){
4247
this.id = id;
4348
this.pictureUrl = pictureUrl;
4449
this.nickname = nickname;
4550
this.name = name;
4651
this.persona = persona;
4752
this.isEmailActive = isEmailActive;
4853
this.email = email;
54+
this.onBoarding = onBoarding;
4955
}
5056
}

src/main/java/Ness/Backend/domain/profile/entity/Profile.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ public class Profile {
2525

2626
private Boolean isEmailActive;
2727

28+
private Boolean onBoarding;
29+
2830
//유저 페르소나를 구분해주는 타입 값
2931
@Enumerated(EnumType.STRING)
3032
private PersonaType personaType;
@@ -44,17 +46,23 @@ public void updateMailActive(Boolean isEmailActive){
4446
this.isEmailActive = isEmailActive;
4547
}
4648

49+
public void updateOnBoarding(Boolean onBoarding){
50+
this.onBoarding = onBoarding;
51+
}
52+
4753
public void updatePersona(PersonaType personaType){
4854
this.personaType = personaType;
4955
}
5056

5157
@Builder
52-
public Profile(String pictureUrl, String nickname, String name, Member member, Boolean isEmailActive, PersonaType personaType){
58+
public Profile(String pictureUrl, String nickname, String name, Member member,
59+
Boolean isEmailActive, PersonaType personaType, Boolean onBoarding){
5360
this.pictureUrl = pictureUrl;
5461
this.nickname = nickname;
5562
this.name = name;
5663
this.member = member;
5764
this.isEmailActive = isEmailActive;
5865
this.personaType = personaType;
66+
this.onBoarding = onBoarding;
5967
}
6068
}

src/main/java/Ness/Backend/domain/schedule/ScheduleService.java

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import Ness.Backend.domain.schedule.dto.response.GetScheduleDto;
1515
import Ness.Backend.domain.schedule.dto.response.GetScheduleListDto;
1616
import Ness.Backend.domain.schedule.entity.Schedule;
17+
import Ness.Backend.global.error.exception.NotFoundCategoryException;
1718
import Ness.Backend.global.fastApi.FastApiDeleteScheduleApi;
1819
import Ness.Backend.global.fastApi.FastApiPostScheduleApi;
1920
import Ness.Backend.global.fastApi.FastApiPutScheduleApi;
@@ -137,25 +138,30 @@ public GetChatListDto postAiScheduleAccept(Long memberId, Boolean idAccepted, Lo
137138
Member member = memberRepository.findMemberById(memberId);
138139
Category category = categoryRepository.findCategoryById(postScheduleDto.getCategoryNum());
139140

141+
/* 사용자가 Accept 했으면 스케쥴 생성하기 */
140142
if(idAccepted){
141-
/* 사용자가 Accept 했으면 스케쥴 생성하기 */
142-
Chat chat = chatRepository.findChatById(chatId);
143-
144-
Schedule newSchedule = Schedule.builder()
145-
.info(postScheduleDto.getInfo())
146-
.location(postScheduleDto.getLocation())
147-
.person(postScheduleDto.getPerson())
148-
.startTime(postScheduleDto.getStartTime())
149-
.endTime(postScheduleDto.getEndTime())
150-
.member(member)
151-
.category(category)
152-
.chat(chat)
153-
.build();
154-
155-
scheduleRepository.save(newSchedule);
156-
157-
chatService.createNewChat("일정을 추가해드렸습니다:)", ChatType.AI, 1, member);
158-
143+
/* 카테고리 연견관계가 정상적인 경우*/
144+
if(category != null){
145+
Chat chat = chatRepository.findChatById(chatId);
146+
147+
Schedule newSchedule = Schedule.builder()
148+
.info(postScheduleDto.getInfo())
149+
.location(postScheduleDto.getLocation())
150+
.person(postScheduleDto.getPerson())
151+
.startTime(postScheduleDto.getStartTime())
152+
.endTime(postScheduleDto.getEndTime())
153+
.member(member)
154+
.category(category)
155+
.chat(chat)
156+
.build();
157+
158+
scheduleRepository.save(newSchedule);
159+
160+
chatService.createNewChat("일정을 추가해드렸습니다:)", ChatType.AI, 1, member);
161+
}
162+
else{
163+
throw new NotFoundCategoryException();
164+
}
159165
} else {
160166
chatService.createNewChat("일정 추가를 취소했습니다.\n더 필요한 것이 있으시면 알려주세요!", ChatType.AI, 1, member);
161167
}
@@ -204,16 +210,18 @@ public void postNewAiSchedule(String info, String location, String person,
204210
ZonedDateTime startTime, ZonedDateTime endTime,
205211
String category, Long category_id, Long memberId, Long scheduleId){
206212

213+
// null 값은 전달되서는 안됨
207214
if(endTime == null){
208215
endTime = startTime;
209216
}
210217

218+
// 서울 시간대로 VectorDB에 저장
211219
PostFastApiScheduleDto dto = PostFastApiScheduleDto.builder()
212220
.info(info)
213221
.location(location)
214222
.person(person)
215-
.startTime(startTime)
216-
.endTime(endTime)
223+
.startTime(startTime.withZoneSameInstant(ZoneId.of("Asia/Seoul")))
224+
.endTime(endTime.withZoneSameInstant(ZoneId.of("Asia/Seoul")))
217225
.category(category)
218226
.category_id(category_id)
219227
.member_id(memberId)

src/main/java/Ness/Backend/global/error/ErrorCode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public enum ErrorCode {
3535
/* 카테고리 관련 */
3636
INVALID_CATEGORY_NAME(CONFLICT, "CATE001", "해당 카테고리명이 이미 존재합니다. 카테고리명은 중복될 수 없습니다."),
3737
INVALID_CATEGORY_DELETE(BAD_REQUEST, "CATE002", "미분류 카테고리는 삭제 불가능합니다."),
38+
NOTFOUND_CATEGORY(BAD_REQUEST, "CATE003", "해당 카테고리가 해당 맴버에게 존재하지 않습니다."),
3839

3940
/* 리포트 관련 */
4041
MISMATCH_REPORT_RECOMMEND(BAD_REQUEST, "RPT001", "한 줄 추천이 존재하지 않습니다.");
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package Ness.Backend.global.error.exception;
2+
3+
import Ness.Backend.global.error.ErrorCode;
4+
import lombok.Getter;
5+
@Getter
6+
public class NotFoundCategoryException extends BaseException {
7+
public NotFoundCategoryException() {
8+
super(ErrorCode.NOTFOUND_CATEGORY, ErrorCode.NOTFOUND_CATEGORY.getMessage());
9+
}
10+
public NotFoundCategoryException(String message) {
11+
super(ErrorCode.NOTFOUND_CATEGORY, message);
12+
}
13+
public NotFoundCategoryException(ErrorCode errorCode) {
14+
super(errorCode, errorCode.getMessage());
15+
}
16+
}

0 commit comments

Comments
 (0)