diff --git a/backend/src/main/java/com/spring/sad/album/domain/Album.java b/backend/src/main/java/com/spring/sad/album/domain/Album.java index a7cdb6e..e1a5641 100644 --- a/backend/src/main/java/com/spring/sad/album/domain/Album.java +++ b/backend/src/main/java/com/spring/sad/album/domain/Album.java @@ -16,7 +16,7 @@ public class Album { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long albumId; + private long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "band_id") diff --git a/backend/src/main/java/com/spring/sad/album/domain/AlbumImage.java b/backend/src/main/java/com/spring/sad/album/domain/AlbumImage.java index 5ebe9f6..e18c12b 100644 --- a/backend/src/main/java/com/spring/sad/album/domain/AlbumImage.java +++ b/backend/src/main/java/com/spring/sad/album/domain/AlbumImage.java @@ -13,7 +13,7 @@ public class AlbumImage { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long albumImgId; + private long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "album_id") diff --git a/backend/src/main/java/com/spring/sad/band/domain/Band.java b/backend/src/main/java/com/spring/sad/band/domain/Band.java index 7937a8c..a4de1b1 100644 --- a/backend/src/main/java/com/spring/sad/band/domain/Band.java +++ b/backend/src/main/java/com/spring/sad/band/domain/Band.java @@ -19,7 +19,7 @@ public class Band { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long bandId; + private long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "category_id") diff --git a/backend/src/main/java/com/spring/sad/band/domain/Category.java b/backend/src/main/java/com/spring/sad/band/domain/Category.java index 2284c33..a06da51 100644 --- a/backend/src/main/java/com/spring/sad/band/domain/Category.java +++ b/backend/src/main/java/com/spring/sad/band/domain/Category.java @@ -15,7 +15,7 @@ public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long categoryId; + private long id; private String categoryName; diff --git a/backend/src/main/java/com/spring/sad/band/service/BandService.java b/backend/src/main/java/com/spring/sad/band/service/BandService.java new file mode 100644 index 0000000..cd052ad --- /dev/null +++ b/backend/src/main/java/com/spring/sad/band/service/BandService.java @@ -0,0 +1,19 @@ +package com.spring.sad.band.service; + +import com.spring.sad.band.domain.Band; +import com.spring.sad.band.repository.BandRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Optional; + +@Transactional(readOnly = true) +@RequiredArgsConstructor +@Service +public class BandService { + private final BandRepository bandRepository; + public Optional findById(long bandId) { + return bandRepository.findById(bandId); + } +} diff --git a/backend/src/main/java/com/spring/sad/image/domain/Image.java b/backend/src/main/java/com/spring/sad/image/domain/Image.java index b5816b4..2e8beeb 100644 --- a/backend/src/main/java/com/spring/sad/image/domain/Image.java +++ b/backend/src/main/java/com/spring/sad/image/domain/Image.java @@ -17,7 +17,7 @@ public class Image { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long imgId; + private long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "band_id") diff --git a/backend/src/main/java/com/spring/sad/member/controller/MemberController.java b/backend/src/main/java/com/spring/sad/member/controller/MemberController.java index ab27b56..96da1a6 100644 --- a/backend/src/main/java/com/spring/sad/member/controller/MemberController.java +++ b/backend/src/main/java/com/spring/sad/member/controller/MemberController.java @@ -2,7 +2,7 @@ import com.spring.sad.member.data.dto.request.*; import com.spring.sad.member.data.dto.response.MemberLoginResponse; -import com.spring.sad.member.data.dto.response.ProfileSettingResponse; +import com.spring.sad.member.data.dto.response.ProfileListResponse; import com.spring.sad.member.service.MemberService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -73,10 +73,22 @@ public ResponseEntity login(@RequestBody MemberLoginByPhone @ApiResponse(responseCode = "200", description = "프로필 조회 성공"), @ApiResponse(responseCode = "400", description = "사용자 조회 실패(MEMBER_07)") }) - @Operation(summary = "프로필 조회", description = "프로필 관리 화면에서 프로필을 조회하는 API입니다.") + @Operation(summary = "프로필 조회", description = "프로필 관리 화면에서 프로필을 조회하는 API") @GetMapping("profile/setting") - public ResponseEntity getProfiles(long memberId) { - ProfileSettingResponse response = memberService.getProfileSetting(memberId); + public ResponseEntity getProfiles(long memberId) { + ProfileListResponse response = memberService.getProfileSetting(memberId); return ResponseEntity.ok(response); } + + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "프로필 수정 성공"), + @ApiResponse(responseCode = "400", description = "사용자 조회 실패(MEMBER_07)"), + @ApiResponse(responseCode = "400", description = "MEMBER-BAND 연관관계 불일치(MEMBER-BAND_01)") + }) + @Operation(summary = "프로필 수정", description = "프로필 관리 화면에서 프로필을 수정하는 API") + @PostMapping("profile/setting") + public ResponseEntity setProfiles(@RequestBody ProfileUpdateRequest request) { + memberService.updateProfile(request); + return ResponseEntity.status(HttpStatus.OK).build(); + } } diff --git a/backend/src/main/java/com/spring/sad/member/data/dto/response/ProfileBandDetails.java b/backend/src/main/java/com/spring/sad/member/data/dto/common/BandDetails.java similarity index 61% rename from backend/src/main/java/com/spring/sad/member/data/dto/response/ProfileBandDetails.java rename to backend/src/main/java/com/spring/sad/member/data/dto/common/BandDetails.java index de711a0..4d09d6e 100644 --- a/backend/src/main/java/com/spring/sad/member/data/dto/response/ProfileBandDetails.java +++ b/backend/src/main/java/com/spring/sad/member/data/dto/common/BandDetails.java @@ -1,4 +1,4 @@ -package com.spring.sad.member.data.dto.response; +package com.spring.sad.member.data.dto.common; import com.spring.sad.band.domain.Band; import lombok.*; @@ -7,13 +7,13 @@ @AllArgsConstructor @Builder @Getter -public class ProfileBandDetails { +public class BandDetails { private long bandId; private String bandName; private String bandImg; - public static ProfileBandDetails from(Band band) { - return ProfileBandDetails.builder() - .bandId(band.getBandId()) + public static BandDetails from(Band band) { + return BandDetails.builder() + .bandId(band.getId()) .bandName(band.getBandName()) .bandImg(band.getBandCover()) .build(); diff --git a/backend/src/main/java/com/spring/sad/member/data/dto/common/ProfileDetails.java b/backend/src/main/java/com/spring/sad/member/data/dto/common/ProfileDetails.java new file mode 100644 index 0000000..48afe72 --- /dev/null +++ b/backend/src/main/java/com/spring/sad/member/data/dto/common/ProfileDetails.java @@ -0,0 +1,46 @@ +package com.spring.sad.member.data.dto.common; + +import com.spring.sad.member.domain.Member; +import com.spring.sad.member.domain.MemberBand; +import com.spring.sad.member.domain.Profile; +import lombok.*; + +import java.util.ArrayList; +import java.util.List; + +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +@Builder +@Getter +public class ProfileDetails { + private long profileId; + private String profileName; + private String profileImg; + private boolean isPrimaryProfile; + private List bandDetailsList = new ArrayList<>(); + + public static ProfileDetails from(Profile profile) { + ProfileDetails profileDetails = ProfileDetails.builder() + .profileId(profile.getId()) + .profileName(profile.getProfileName()) + .profileImg(profile.getProfileImg()) + .isPrimaryProfile(profile.isPrimaryProfile()) + .build(); + + profile.getMemberBands().stream() + .map(MemberBand::getBand) + .map(BandDetails::from) + .forEach(profileDetails.bandDetailsList::add); + + return profileDetails; + } + + public Profile toProfile(Member member) { + return Profile.builder() + .member(member) + .profileName(profileName) + .profileImg(profileImg) + .isPrimaryProfile(isPrimaryProfile) + .build(); + } +} diff --git a/backend/src/main/java/com/spring/sad/member/data/dto/common/ProfileListDetails.java b/backend/src/main/java/com/spring/sad/member/data/dto/common/ProfileListDetails.java new file mode 100644 index 0000000..29545cf --- /dev/null +++ b/backend/src/main/java/com/spring/sad/member/data/dto/common/ProfileListDetails.java @@ -0,0 +1,15 @@ +package com.spring.sad.member.data.dto.common; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +@Getter +public abstract class ProfileListDetails { + protected long memberId; + @JsonProperty("profiles") + protected List profileDetailsList = new ArrayList<>(); +} + diff --git a/backend/src/main/java/com/spring/sad/member/data/dto/request/ProfileUpdateRequest.java b/backend/src/main/java/com/spring/sad/member/data/dto/request/ProfileUpdateRequest.java new file mode 100644 index 0000000..90388a8 --- /dev/null +++ b/backend/src/main/java/com/spring/sad/member/data/dto/request/ProfileUpdateRequest.java @@ -0,0 +1,11 @@ +package com.spring.sad.member.data.dto.request; + +import com.spring.sad.member.data.dto.common.ProfileListDetails; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class ProfileUpdateRequest extends ProfileListDetails { +} \ No newline at end of file diff --git a/backend/src/main/java/com/spring/sad/member/data/dto/response/MemberLoginResponse.java b/backend/src/main/java/com/spring/sad/member/data/dto/response/MemberLoginResponse.java index 44a0cea..82a72ae 100644 --- a/backend/src/main/java/com/spring/sad/member/data/dto/response/MemberLoginResponse.java +++ b/backend/src/main/java/com/spring/sad/member/data/dto/response/MemberLoginResponse.java @@ -11,11 +11,11 @@ public class MemberLoginResponse { private long memberId; private String name; private MemberLoginResponse(Member member) { - this.memberId = member.getMemberId(); + this.memberId = member.getId(); this.name = member.getName(); } - public static MemberLoginResponse of(Member member) { + public static MemberLoginResponse toResponse(Member member) { return new MemberLoginResponse(member); } } diff --git a/backend/src/main/java/com/spring/sad/member/data/dto/response/MemberProfileDetails.java b/backend/src/main/java/com/spring/sad/member/data/dto/response/MemberProfileDetails.java deleted file mode 100644 index 0e804c0..0000000 --- a/backend/src/main/java/com/spring/sad/member/data/dto/response/MemberProfileDetails.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.spring.sad.member.data.dto.response; - -import com.spring.sad.member.domain.MemberBand; -import com.spring.sad.member.domain.Profile; -import lombok.*; - -import java.util.ArrayList; -import java.util.List; - -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor -@Builder -@Getter -public class MemberProfileDetails { - private long profileId; - private String profileName; - private String profileImg; - private boolean isPrimaryProfile; - private List profileBandDetailsList = new ArrayList<>(); - - public static MemberProfileDetails from(Profile profile) { - MemberProfileDetails memberProfileDetails = MemberProfileDetails.builder() - .profileId(profile.getId()) - .profileName(profile.getProfileName()) - .profileImg(profile.getProfileImg()) - .isPrimaryProfile(profile.isPrimaryProfile()) - .build(); - - profile.getMemberBands().stream() - .map(MemberBand::getBand) - .map(ProfileBandDetails::from) - .forEach(memberProfileDetails.profileBandDetailsList::add); - - return memberProfileDetails; - } -} diff --git a/backend/src/main/java/com/spring/sad/member/data/dto/response/ProfileListResponse.java b/backend/src/main/java/com/spring/sad/member/data/dto/response/ProfileListResponse.java new file mode 100644 index 0000000..72ae229 --- /dev/null +++ b/backend/src/main/java/com/spring/sad/member/data/dto/response/ProfileListResponse.java @@ -0,0 +1,26 @@ +package com.spring.sad.member.data.dto.response; + +import com.spring.sad.member.data.dto.common.ProfileListDetails; +import com.spring.sad.member.data.dto.common.ProfileDetails; +import com.spring.sad.member.domain.Member; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.List; + +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class ProfileListResponse extends ProfileListDetails { + + public static ProfileListResponse toResponse(Member member) { + return new ProfileListResponse(member.getId(), member.getProfiles().stream() + .map(ProfileDetails::from) + .toList()); + } + + private ProfileListResponse(long memberId, List profileDetailsList) { + this.memberId = memberId; + this.profileDetailsList = profileDetailsList; + } +} \ No newline at end of file diff --git a/backend/src/main/java/com/spring/sad/member/data/dto/response/ProfileSettingResponse.java b/backend/src/main/java/com/spring/sad/member/data/dto/response/ProfileSettingResponse.java deleted file mode 100644 index 777fdd7..0000000 --- a/backend/src/main/java/com/spring/sad/member/data/dto/response/ProfileSettingResponse.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.spring.sad.member.data.dto.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.spring.sad.member.domain.Member; -import lombok.AccessLevel; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import java.util.ArrayList; -import java.util.List; - -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@Getter -public class ProfileSettingResponse { - private long memberId; - @JsonProperty("profiles") - private List memberProfileDetailsList = new ArrayList<>(); - - private ProfileSettingResponse(long memberId) { - this.memberId = memberId; - } - public static ProfileSettingResponse toResponse(Member member) { - ProfileSettingResponse response = new ProfileSettingResponse(member.getMemberId()); - member.getProfiles().stream() - .map(MemberProfileDetails::from) - .forEach(response.memberProfileDetailsList::add); - return response; - } -} - diff --git a/backend/src/main/java/com/spring/sad/member/domain/Member.java b/backend/src/main/java/com/spring/sad/member/domain/Member.java index d1db63e..a3e74f7 100644 --- a/backend/src/main/java/com/spring/sad/member/domain/Member.java +++ b/backend/src/main/java/com/spring/sad/member/domain/Member.java @@ -22,7 +22,7 @@ public class Member extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long memberId; + private long id; private String name; diff --git a/backend/src/main/java/com/spring/sad/member/domain/MemberBand.java b/backend/src/main/java/com/spring/sad/member/domain/MemberBand.java index ae2c134..ba9c9f1 100644 --- a/backend/src/main/java/com/spring/sad/member/domain/MemberBand.java +++ b/backend/src/main/java/com/spring/sad/member/domain/MemberBand.java @@ -48,4 +48,14 @@ private void addRelateProfile(Profile profile) { this.profile = profile; profile.getMemberBands().add(this); } + + private void removeRelateProfile() { + if (this.profile != null) + this.profile.getMemberBands().remove(this); + } + + public void changeProfile(Profile profile) { + removeRelateProfile(); + addRelateProfile(profile); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/spring/sad/member/exception/MemberBandErrorCode.java b/backend/src/main/java/com/spring/sad/member/exception/MemberBandErrorCode.java new file mode 100644 index 0000000..213a8db --- /dev/null +++ b/backend/src/main/java/com/spring/sad/member/exception/MemberBandErrorCode.java @@ -0,0 +1,19 @@ +package com.spring.sad.member.exception; + +import com.spring.sad.global.exception.ErrorCode; +import lombok.Getter; + +@Getter +public enum MemberBandErrorCode implements ErrorCode { + INVALID_MEMBER_BAND_RELATIONSHIP(400, "MEMBER-BAND_01", "Member-Band 연관 관계가 유효하지 않습니다"); + + private final int statusCode; + private final String errorCode; + private final String message; + + MemberBandErrorCode(int statusCode, String errorCode, String message) { + this.statusCode = statusCode; + this.errorCode = errorCode; + this.message = message; + } +} diff --git a/backend/src/main/java/com/spring/sad/member/exception/MemberBandException.java b/backend/src/main/java/com/spring/sad/member/exception/MemberBandException.java new file mode 100644 index 0000000..1888316 --- /dev/null +++ b/backend/src/main/java/com/spring/sad/member/exception/MemberBandException.java @@ -0,0 +1,10 @@ +package com.spring.sad.member.exception; + +import com.spring.sad.global.exception.ErrorCode; +import com.spring.sad.global.exception.GlobalException; + +public class MemberBandException extends GlobalException { + public MemberBandException(ErrorCode errorCode) { + super(errorCode); + } +} diff --git a/backend/src/main/java/com/spring/sad/member/exception/MemberErrorCode.java b/backend/src/main/java/com/spring/sad/member/exception/MemberErrorCode.java index 90bc5b2..9f46059 100644 --- a/backend/src/main/java/com/spring/sad/member/exception/MemberErrorCode.java +++ b/backend/src/main/java/com/spring/sad/member/exception/MemberErrorCode.java @@ -14,7 +14,7 @@ public enum MemberErrorCode implements ErrorCode { LOGIN_FAILED(400, "MEMBER_06", "아이디가 존재하지 않거나 잘못된 비밀 번호 입니다."), - MEMBER_DOES_NOT_EXISTS(400, "MEBER_07", "존재하지 않는 회원입니다."); + MEMBER_DOES_NOT_EXISTS(400, "MEMBER_07", "존재하지 않는 회원입니다."); private final int statusCode; diff --git a/backend/src/main/java/com/spring/sad/member/repository/MemberBandRepository.java b/backend/src/main/java/com/spring/sad/member/repository/MemberBandRepository.java index 82271ea..e41a27c 100644 --- a/backend/src/main/java/com/spring/sad/member/repository/MemberBandRepository.java +++ b/backend/src/main/java/com/spring/sad/member/repository/MemberBandRepository.java @@ -2,6 +2,22 @@ import com.spring.sad.member.domain.MemberBand; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.Optional; public interface MemberBandRepository extends JpaRepository { + + @Query(""" + SELECT MemberBand + FROM MemberBand + WHERE member.id = :memberId + AND band.id = :bandId + """) + Optional findByMember_IdAndBand_Id( + @Param("memberId") final Long memberId, + @Param("bandId") final Long bandId + ); + } diff --git a/backend/src/main/java/com/spring/sad/member/service/MemberService.java b/backend/src/main/java/com/spring/sad/member/service/MemberService.java index 97a087a..e9b808c 100644 --- a/backend/src/main/java/com/spring/sad/member/service/MemberService.java +++ b/backend/src/main/java/com/spring/sad/member/service/MemberService.java @@ -1,25 +1,33 @@ package com.spring.sad.member.service; -import com.spring.sad.member.data.dto.request.MemberLoginByEmailRequest; -import com.spring.sad.member.data.dto.request.MemberLoginByPhoneNumberRequest; -import com.spring.sad.member.data.dto.request.MemberSignupByPhoneNumberRequest; -import com.spring.sad.member.data.dto.request.MemberSignupByEmailRequest; +import com.spring.sad.member.data.dto.common.ProfileDetails; +import com.spring.sad.member.data.dto.common.BandDetails; +import com.spring.sad.member.data.dto.request.*; import com.spring.sad.member.data.dto.response.MemberLoginResponse; -import com.spring.sad.member.data.dto.response.ProfileSettingResponse; +import com.spring.sad.member.data.dto.response.ProfileListResponse; import com.spring.sad.member.domain.Member; +import com.spring.sad.member.domain.MemberBand; import com.spring.sad.member.domain.Profile; +import com.spring.sad.member.exception.MemberBandErrorCode; +import com.spring.sad.member.exception.MemberBandException; import com.spring.sad.member.exception.MemberErrorCode; import com.spring.sad.member.exception.MemberException; +import com.spring.sad.member.repository.MemberBandRepository; import com.spring.sad.member.repository.MemberRepository; +import com.spring.sad.member.repository.ProfileRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Transactional(readOnly = true) @RequiredArgsConstructor @Service public class MemberService { private final MemberRepository memberRepository; + private final MemberBandRepository memberBandRepository; + private final ProfileRepository profileRepository; @Transactional public void signupByCellPhone(MemberSignupByPhoneNumberRequest request) { @@ -58,7 +66,7 @@ public MemberLoginResponse loginByEmail(MemberLoginByEmailRequest request) { if(!requestMember.getPassword().equals(member.getPassword())) throw new MemberException(MemberErrorCode.LOGIN_FAILED); - return MemberLoginResponse.of(member); + return MemberLoginResponse.toResponse(member); } public MemberLoginResponse loginByPhoneNumber(MemberLoginByPhoneNumberRequest request) { @@ -70,13 +78,76 @@ public MemberLoginResponse loginByPhoneNumber(MemberLoginByPhoneNumberRequest re if(!requestMember.getPassword().equals(member.getPassword())) throw new MemberException(MemberErrorCode.LOGIN_FAILED); - return MemberLoginResponse.of(member); + return MemberLoginResponse.toResponse(member); + } + + public ProfileListResponse getProfileSetting(long memberId) { + Member member = getMemberById(memberId); + return ProfileListResponse.toResponse(member); + } + + /** + * 프로필을 업데이트하는 메소드 + * 1. (요청 값으로 받은) MemberId 유효성 확인 + * 2. (요청 값으로 받은) 프로필 리스트 순회 + * 2-1. 기존 프로필 삭제 + * 2-2. 새로운 프로필이 유효한 경우, 저장 및 연관관계 설정 진행 + * + * @param request 요청으로 받은 정보 : 멤버의 프로필 리스트와, 각 프로필을 사용중인 밴드 리스트 + */ + public void updateProfile(ProfileUpdateRequest request) { + Member member = getMemberById(request.getMemberId()); + + for (ProfileDetails profileDetails : request.getProfileDetailsList()) { + deleteExistingProfile(profileDetails); + + if (isValidProfileDetails(profileDetails)) { + Profile profile = profileRepository.save(profileDetails.toProfile(member)); + updateMemberBand(request.getMemberId(), profileDetails.getBandDetailsList(), profile); + } + } + } + + private void deleteExistingProfile(ProfileDetails profileDetails) { + profileRepository.findById(profileDetails.getProfileId()) + .ifPresent(profileRepository::delete); + } + + private Member getMemberById(long memberId) { + return memberRepository.findById(memberId) + .orElseThrow(() -> new MemberException(MemberErrorCode.MEMBER_DOES_NOT_EXISTS)); } - public ProfileSettingResponse getProfileSetting(long memberId) { - Member member = memberRepository.findById(memberId) - .orElseThrow(() -> - new MemberException(MemberErrorCode.MEMBER_DOES_NOT_EXISTS)); - return ProfileSettingResponse.toResponse(member); + /** + * 프로필이 유효한지 검증하는 메소드 + * 프로필이 유효한 경우란? + * 1. 프로필이 대표 프로필인 경우 + * 2. 하나 이상의 밴드에서 사용되는 경우 + * + * @param profileDetails (요청 값으로 받은) 프로필 + * @return (요청 값으로 받은) 프로필이 유효한지 검증한 결과 + */ + private boolean isValidProfileDetails(ProfileDetails profileDetails) { + return !profileDetails.getBandDetailsList().isEmpty() || profileDetails.isPrimaryProfile(); } + + /** + * 밴드가 사용하는 프로필을 저장하는 메소드 + * + * @param memberId 멤버 아이디 + * @param bandDetailsList (요청 값으로 받은) 밴드 리스트 + * @param profile 밴드가 사용할 프로필 + */ + private void updateMemberBand(Long memberId, List bandDetailsList, Profile profile) { + for (BandDetails bandDetails : bandDetailsList) { + MemberBand memberBand = getMemberBand(memberId, bandDetails.getBandId()); + memberBand.changeProfile(profile); + } + } + + private MemberBand getMemberBand(Long memberId, Long bandId) { + return memberBandRepository.findByMember_IdAndBand_Id(memberId, bandId) + .orElseThrow(() -> new MemberBandException(MemberBandErrorCode.INVALID_MEMBER_BAND_RELATIONSHIP)); + } + } diff --git a/backend/src/main/java/com/spring/sad/notification/domain/Notification.java b/backend/src/main/java/com/spring/sad/notification/domain/Notification.java index 65d691a..a562638 100644 --- a/backend/src/main/java/com/spring/sad/notification/domain/Notification.java +++ b/backend/src/main/java/com/spring/sad/notification/domain/Notification.java @@ -12,7 +12,7 @@ public class Notification { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long notificationId; + private long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") diff --git a/backend/src/main/java/com/spring/sad/post/domain/Comment.java b/backend/src/main/java/com/spring/sad/post/domain/Comment.java index 63e920e..4abc1c3 100644 --- a/backend/src/main/java/com/spring/sad/post/domain/Comment.java +++ b/backend/src/main/java/com/spring/sad/post/domain/Comment.java @@ -14,7 +14,7 @@ public class Comment extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long commentId; + private long id; private String commentContent; diff --git a/backend/src/main/java/com/spring/sad/post/domain/Post.java b/backend/src/main/java/com/spring/sad/post/domain/Post.java index 08568b3..7d06c14 100644 --- a/backend/src/main/java/com/spring/sad/post/domain/Post.java +++ b/backend/src/main/java/com/spring/sad/post/domain/Post.java @@ -18,7 +18,7 @@ public class Post extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long postId; + private long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "band_id") diff --git a/backend/src/main/java/com/spring/sad/post/domain/PostImage.java b/backend/src/main/java/com/spring/sad/post/domain/PostImage.java index 56dc2f7..c6c406d 100644 --- a/backend/src/main/java/com/spring/sad/post/domain/PostImage.java +++ b/backend/src/main/java/com/spring/sad/post/domain/PostImage.java @@ -13,7 +13,7 @@ public class PostImage { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long postImageId; + private long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "post_id") diff --git a/backend/src/main/java/com/spring/sad/post/domain/Tag.java b/backend/src/main/java/com/spring/sad/post/domain/Tag.java index fafa6a1..a0e2d6f 100644 --- a/backend/src/main/java/com/spring/sad/post/domain/Tag.java +++ b/backend/src/main/java/com/spring/sad/post/domain/Tag.java @@ -15,7 +15,7 @@ public class Tag { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long tagId; + private long id; private String name;