Skip to content

Commit

Permalink
Merge pull request #122 from studio-recoding/dev
Browse files Browse the repository at this point in the history
[🚀feat] 15차 배포
  • Loading branch information
JeonHaeseung committed Jun 25, 2024
2 parents e9bd27c + 780be63 commit 0b1511b
Show file tree
Hide file tree
Showing 10 changed files with 112 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public OAuth2User loadUser(OAuth2UserRequest oAuth2UserRequest) throws OAuth2Aut
/*이메일로 회원 가입 여부 확인*/
if (!memberRepository.existsByEmail(email) && !Objects.equals(password, DEFAULT_STRING)) {
// 이메일 알림 기능은 디폴트로 false
memberService.createMember(email, password, picture, nickname, name, false);
memberService.createMember(email, password, picture, nickname, name, false, false);
}
member = memberRepository.findMemberByEmail(email);

Expand Down
8 changes: 5 additions & 3 deletions src/main/java/Ness/Backend/domain/member/MemberService.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ public void deleteMember(Member member) {
memberRepository.save(member);
}

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

profileRepository.save(profile);
Expand Down Expand Up @@ -71,7 +73,7 @@ public void createMember(String email, String password, String picture, String n
//핑크
Category restCategory = Category.builder()
.member(member)
.name("\uD83D\uDEDF여가")
.name("✨여가")
.color("#FF75C8")
.build();

Expand Down
15 changes: 15 additions & 0 deletions src/main/java/Ness/Backend/domain/profile/ProfileController.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import Ness.Backend.domain.member.entity.Member;
import Ness.Backend.domain.profile.dto.request.PatchPersonaDto;
import Ness.Backend.domain.profile.dto.request.PutProfileDto;
import Ness.Backend.domain.profile.dto.response.GetOnBoardingDto;
import Ness.Backend.domain.profile.dto.response.GetProfileDto;
import Ness.Backend.global.auth.AuthUser;
import io.swagger.v3.oas.annotations.Operation;
Expand Down Expand Up @@ -39,4 +40,18 @@ public ResponseEntity<Long> patchPersona(@AuthUser Member member, @RequestBody P
Long profileId = profileService.updatePersona(member.getId(), patchPersonaDto.getPersona());
return new ResponseEntity<>(profileId, HttpStatusCode.valueOf(200));
}

@GetMapping("/onboarding")
@Operation(summary = "온보딩 여부 확인 API", description = "온보딩 여부를 알 수 있는 API 입니다.")
public ResponseEntity<GetOnBoardingDto> getOnBoarding(@AuthUser Member member) {
GetOnBoardingDto getOnBoardingDto = profileService.getOnBoarding(member.getId());
return new ResponseEntity<>(getOnBoardingDto, HttpStatusCode.valueOf(200));
}

@PatchMapping("/onboarding")
@Operation(summary = "온보딩 여부 수정 API", description = "온보딩 여부를 수정할 수 있는 API 입니다.")
public ResponseEntity<?> updateOnBoarding(@AuthUser Member member, @RequestParam Boolean isOnBoarded) {
profileService.updateOnBoarding(member.getId(), isOnBoarded);
return new ResponseEntity<>(HttpStatusCode.valueOf(200));
}
}
15 changes: 15 additions & 0 deletions src/main/java/Ness/Backend/domain/profile/ProfileService.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package Ness.Backend.domain.profile;

import Ness.Backend.domain.profile.dto.request.PutProfileDto;
import Ness.Backend.domain.profile.dto.response.GetOnBoardingDto;
import Ness.Backend.domain.profile.dto.response.GetProfileDto;
import Ness.Backend.domain.profile.entity.PersonaType;
import Ness.Backend.domain.profile.entity.Profile;
Expand Down Expand Up @@ -36,6 +37,19 @@ public Long updatePersona(Long memberId, PersonaType personaType) {
return profile.getId();
}

public GetOnBoardingDto getOnBoarding(Long memberId){
Profile profile = profileRepository.findProfileByMember_Id(memberId);

return GetOnBoardingDto.builder()
.onBoarding(profile.getOnBoarding())
.build();
}

public void updateOnBoarding(Long memberId, boolean isOnBoarded){
Profile profile = profileRepository.findProfileByMember_Id(memberId);
profile.updateOnBoarding(isOnBoarded);
}

@Transactional(readOnly = true)
public GetProfileDto getProfile(Long memberId, String email) {
Profile profile = profileRepository.findProfileByMember_Id(memberId);
Expand All @@ -47,6 +61,7 @@ public GetProfileDto getProfile(Long memberId, String email) {
.isEmailActive(profile.getIsEmailActive())
.email(email)
.persona(profile.getPersonaType())
.onBoarding(profile.getOnBoarding())
.build();

return getProfileDto;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package Ness.Backend.domain.profile.dto.response;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
public class GetOnBoardingDto {
@Schema(description = "사용자의 온보딩 여부", example = "false")
@JsonProperty("onBoarding")
private boolean onBoarding;
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,20 @@ public class GetProfileDto {
@JsonProperty("email")
private String email;

@Schema(description = "사용자의 온보딩 여부", example = "false")
@JsonProperty("onBoarding")
private boolean onBoarding;

@Builder
public GetProfileDto(Long id, String pictureUrl, String nickname, String name, PersonaType persona, boolean isEmailActive, String email){
public GetProfileDto(Long id, String pictureUrl, String nickname, String name,
PersonaType persona, boolean isEmailActive, String email, boolean onBoarding){
this.id = id;
this.pictureUrl = pictureUrl;
this.nickname = nickname;
this.name = name;
this.persona = persona;
this.isEmailActive = isEmailActive;
this.email = email;
this.onBoarding = onBoarding;
}
}
10 changes: 9 additions & 1 deletion src/main/java/Ness/Backend/domain/profile/entity/Profile.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ public class Profile {

private Boolean isEmailActive;

private Boolean onBoarding;

//유저 페르소나를 구분해주는 타입 값
@Enumerated(EnumType.STRING)
private PersonaType personaType;
Expand All @@ -44,17 +46,23 @@ public void updateMailActive(Boolean isEmailActive){
this.isEmailActive = isEmailActive;
}

public void updateOnBoarding(Boolean onBoarding){
this.onBoarding = onBoarding;
}

public void updatePersona(PersonaType personaType){
this.personaType = personaType;
}

@Builder
public Profile(String pictureUrl, String nickname, String name, Member member, Boolean isEmailActive, PersonaType personaType){
public Profile(String pictureUrl, String nickname, String name, Member member,
Boolean isEmailActive, PersonaType personaType, Boolean onBoarding){
this.pictureUrl = pictureUrl;
this.nickname = nickname;
this.name = name;
this.member = member;
this.isEmailActive = isEmailActive;
this.personaType = personaType;
this.onBoarding = onBoarding;
}
}
48 changes: 28 additions & 20 deletions src/main/java/Ness/Backend/domain/schedule/ScheduleService.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import Ness.Backend.domain.schedule.dto.response.GetScheduleDto;
import Ness.Backend.domain.schedule.dto.response.GetScheduleListDto;
import Ness.Backend.domain.schedule.entity.Schedule;
import Ness.Backend.global.error.exception.NotFoundCategoryException;
import Ness.Backend.global.fastApi.FastApiDeleteScheduleApi;
import Ness.Backend.global.fastApi.FastApiPostScheduleApi;
import Ness.Backend.global.fastApi.FastApiPutScheduleApi;
Expand Down Expand Up @@ -137,25 +138,30 @@ public GetChatListDto postAiScheduleAccept(Long memberId, Boolean idAccepted, Lo
Member member = memberRepository.findMemberById(memberId);
Category category = categoryRepository.findCategoryById(postScheduleDto.getCategoryNum());

/* 사용자가 Accept 했으면 스케쥴 생성하기 */
if(idAccepted){
/* 사용자가 Accept 했으면 스케쥴 생성하기 */
Chat chat = chatRepository.findChatById(chatId);

Schedule newSchedule = Schedule.builder()
.info(postScheduleDto.getInfo())
.location(postScheduleDto.getLocation())
.person(postScheduleDto.getPerson())
.startTime(postScheduleDto.getStartTime())
.endTime(postScheduleDto.getEndTime())
.member(member)
.category(category)
.chat(chat)
.build();

scheduleRepository.save(newSchedule);

chatService.createNewChat("일정을 추가해드렸습니다:)", ChatType.AI, 1, member);

/* 카테고리 연견관계가 정상적인 경우*/
if(category != null){
Chat chat = chatRepository.findChatById(chatId);

Schedule newSchedule = Schedule.builder()
.info(postScheduleDto.getInfo())
.location(postScheduleDto.getLocation())
.person(postScheduleDto.getPerson())
.startTime(postScheduleDto.getStartTime())
.endTime(postScheduleDto.getEndTime())
.member(member)
.category(category)
.chat(chat)
.build();

scheduleRepository.save(newSchedule);

chatService.createNewChat("일정을 추가해드렸습니다:)", ChatType.AI, 1, member);
}
else{
throw new NotFoundCategoryException();
}
} else {
chatService.createNewChat("일정 추가를 취소했습니다.\n더 필요한 것이 있으시면 알려주세요!", ChatType.AI, 1, member);
}
Expand Down Expand Up @@ -204,16 +210,18 @@ public void postNewAiSchedule(String info, String location, String person,
ZonedDateTime startTime, ZonedDateTime endTime,
String category, Long category_id, Long memberId, Long scheduleId){

// null 값은 전달되서는 안됨
if(endTime == null){
endTime = startTime;
}

// 서울 시간대로 VectorDB에 저장
PostFastApiScheduleDto dto = PostFastApiScheduleDto.builder()
.info(info)
.location(location)
.person(person)
.startTime(startTime)
.endTime(endTime)
.startTime(startTime.withZoneSameInstant(ZoneId.of("Asia/Seoul")))
.endTime(endTime.withZoneSameInstant(ZoneId.of("Asia/Seoul")))
.category(category)
.category_id(category_id)
.member_id(memberId)
Expand Down
1 change: 1 addition & 0 deletions src/main/java/Ness/Backend/global/error/ErrorCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public enum ErrorCode {
/* 카테고리 관련 */
INVALID_CATEGORY_NAME(CONFLICT, "CATE001", "해당 카테고리명이 이미 존재합니다. 카테고리명은 중복될 수 없습니다."),
INVALID_CATEGORY_DELETE(BAD_REQUEST, "CATE002", "미분류 카테고리는 삭제 불가능합니다."),
NOTFOUND_CATEGORY(BAD_REQUEST, "CATE003", "해당 카테고리가 해당 맴버에게 존재하지 않습니다."),

/* 리포트 관련 */
MISMATCH_REPORT_RECOMMEND(BAD_REQUEST, "RPT001", "한 줄 추천이 존재하지 않습니다.");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package Ness.Backend.global.error.exception;

import Ness.Backend.global.error.ErrorCode;
import lombok.Getter;
@Getter
public class NotFoundCategoryException extends BaseException {
public NotFoundCategoryException() {
super(ErrorCode.NOTFOUND_CATEGORY, ErrorCode.NOTFOUND_CATEGORY.getMessage());
}
public NotFoundCategoryException(String message) {
super(ErrorCode.NOTFOUND_CATEGORY, message);
}
public NotFoundCategoryException(ErrorCode errorCode) {
super(errorCode, errorCode.getMessage());
}
}

0 comments on commit 0b1511b

Please sign in to comment.