Skip to content

Commit 3eba34e

Browse files
committed
✨ feat: 사용자 정보 수정
1 parent be0b466 commit 3eba34e

6 files changed

Lines changed: 81 additions & 16 deletions

File tree

src/main/java/com/api/advanced_mobile/domain/member/entity/Member.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.api.advanced_mobile.domain.member.entity.enums.FaceType;
44
import com.api.advanced_mobile.domain.member.entity.enums.SkinType;
55
import com.api.advanced_mobile.domain.member.repository.MemberRepository;
6+
import com.api.advanced_mobile.domain.member.web.dto.MemberModifyReq;
67
import com.api.advanced_mobile.domain.member.web.dto.SignupReq;
78
import com.api.advanced_mobile.global.entity.BaseEntity;
89
import jakarta.persistence.*;
@@ -44,6 +45,18 @@ public class Member extends BaseEntity {
4445
@Builder.Default
4546
private List<MemberTrouble> troubles = new ArrayList<>();
4647

48+
// Trouble 추가
49+
public void addTrouble(Trouble trouble){
50+
MemberTrouble mt = MemberTrouble.of(this, trouble);
51+
this.troubles.add(mt);
52+
}
53+
54+
// Trouble 제거
55+
public void removeTrouble(MemberTrouble mt){
56+
this.troubles.remove(mt);
57+
mt.removeRelation();
58+
}
59+
4760
//생성
4861
public static Member createMember(String hash,SignupReq req){
4962
return Member.builder()
@@ -54,4 +67,10 @@ public static Member createMember(String hash,SignupReq req){
5467
.build();
5568

5669
}
70+
71+
//수정
72+
public void modifyMember(MemberModifyReq req){
73+
this.skinType = req.getSkinType();
74+
this.faceType = req.getFaceType();
75+
}
5776
}

src/main/java/com/api/advanced_mobile/domain/member/entity/MemberTrouble.java

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,15 @@ public class MemberTrouble extends BaseEntity {
2222
@JoinColumn(name="trouble_id")
2323
private Trouble trouble;
2424

25-
public void setMember(Member member) {
26-
this.member = member;
27-
if (!member.getTroubles().contains(this)) {
28-
member.getTroubles().add(this);
29-
}
30-
}
31-
32-
public void setTrouble(Trouble trouble) {
33-
this.trouble = trouble;
34-
if (!trouble.getTroubles().contains(this)) {
35-
trouble.getTroubles().add(this);
36-
}
25+
public void removeRelation(){
26+
this.member = null;
27+
this.trouble = null;
3728
}
3829

3930
public static MemberTrouble of(Member member, Trouble trouble){
4031
MemberTrouble mt = new MemberTrouble();
41-
42-
mt.setMember(member);
43-
mt.setTrouble(trouble);
44-
32+
mt.member = member;
33+
mt.trouble = trouble;
4534
return mt;
4635
}
4736

src/main/java/com/api/advanced_mobile/domain/member/service/MemberService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ public interface MemberService {
1616
FaceRes getFace(Long id);
1717

1818
MemberRes page(Long id);
19+
20+
void modifyPage(Long id, MemberModifyReq req);
1921
}

src/main/java/com/api/advanced_mobile/domain/member/service/MemberServiceImpl.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,35 @@ public MemberRes page(Long id) {
125125
return MemberRes.from(member, troubles);
126126
}
127127

128+
//정보 수정
129+
@Transactional
130+
@Override
131+
public void modifyPage(Long id, MemberModifyReq req) {
132+
Member member = memberRepository.findById(id)
133+
.orElseThrow(NotFoundMemberException::new);
134+
135+
member.modifyMember(req);
136+
137+
updateTrouble(member,req.getTroubles());
138+
139+
}
140+
141+
//트러블 수정
142+
private void updateTrouble(Member member, List<TroubleType> troubles) {
143+
144+
member.getTroubles().clear();
145+
146+
if (troubles == null || troubles.isEmpty()) return;
147+
148+
for (TroubleType type : troubles) {
149+
Trouble trouble = troubleRepository.findByTroubleType(type)
150+
.orElseThrow();
151+
152+
MemberTrouble mt = MemberTrouble.of(member, trouble);
153+
memberTroubleRepository.save(mt);
154+
}
155+
}
156+
128157
//트러블 저장
129158
private void saveTroubles(Member member, List<TroubleType> troubleTypes) {
130159

src/main/java/com/api/advanced_mobile/domain/member/web/controller/MemberController.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,16 @@ public ResponseEntity<SuccessResponse<?>> page(
6464
HttpStatus.OK).body(SuccessResponse.ok(res));
6565
}
6666

67+
//프로필 수정
68+
@PutMapping("/page")
69+
public ResponseEntity<SuccessResponse<?>> modifyPage(
70+
@AuthenticationPrincipal CustomUserDetails member,
71+
@Valid @RequestBody MemberModifyReq req
72+
){
73+
memberService.modifyPage(member.getId(), req);
74+
return ResponseEntity.status(
75+
HttpStatus.OK).body(SuccessResponse.ok("수정 완료"));
76+
77+
}
78+
6779
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.api.advanced_mobile.domain.member.web.dto;
2+
3+
import com.api.advanced_mobile.domain.member.entity.enums.FaceType;
4+
import com.api.advanced_mobile.domain.member.entity.enums.SkinType;
5+
import com.api.advanced_mobile.domain.member.entity.enums.TroubleType;
6+
import lombok.Data;
7+
8+
import java.util.List;
9+
@Data
10+
public class MemberModifyReq {
11+
private SkinType skinType;
12+
private FaceType faceType;
13+
private List<TroubleType> troubles;
14+
}

0 commit comments

Comments
 (0)