Skip to content
Open
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 @@ -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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
2 changes: 1 addition & 1 deletion backend/src/main/java/com/spring/sad/band/domain/Band.java
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long categoryId;
private long id;

private String categoryName;

Expand Down
19 changes: 19 additions & 0 deletions backend/src/main/java/com/spring/sad/band/service/BandService.java
Original file line number Diff line number Diff line change
@@ -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<Band> findById(long bandId) {
return bandRepository.findById(bandId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -73,10 +73,22 @@ public ResponseEntity<MemberLoginResponse> 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<ProfileSettingResponse> getProfiles(long memberId) {
ProfileSettingResponse response = memberService.getProfileSetting(memberId);
public ResponseEntity<ProfileListResponse> 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<Void> setProfiles(@RequestBody ProfileUpdateRequest request) {
memberService.updateProfile(request);
return ResponseEntity.status(HttpStatus.OK).build();
}
}
Original file line number Diff line number Diff line change
@@ -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.*;
Expand All @@ -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();
Expand Down
Original file line number Diff line number Diff line change
@@ -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<BandDetails> 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();
}
}
Original file line number Diff line number Diff line change
@@ -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<ProfileDetails> profileDetailsList = new ArrayList<>();
}

Original file line number Diff line number Diff line change
@@ -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 {
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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<ProfileDetails> profileDetailsList) {
this.memberId = memberId;
this.profileDetailsList = profileDetailsList;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
public class Member extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long memberId;
private long id;

private String name;

Expand Down
10 changes: 10 additions & 0 deletions backend/src/main/java/com/spring/sad/member/domain/MemberBand.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<MemberBand, Long> {

@Query("""
SELECT MemberBand
FROM MemberBand
WHERE member.id = :memberId
AND band.id = :bandId
""")
Optional<MemberBand> findByMember_IdAndBand_Id(
@Param("memberId") final Long memberId,
@Param("bandId") final Long bandId
);

}
Loading