Skip to content

Commit 7a73bb0

Browse files
authored
feat: 아이템/칭호 장착 기능 추가 (#80)
1 parent 9daadcd commit 7a73bb0

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

backend/src/main/java/com/back/domain/member/controller/ApiV1MemberController.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,40 @@ public ResponseEntity<ApiResponse<MemberDto>> me() {
166166
);
167167
}
168168

169+
@PutMapping("/equip/item/{id}")
170+
@Operation(summary = "아이템 장착", description = "보유한 아이템 장착")
171+
public ResponseEntity<ApiResponse<Void>> equipItem(
172+
@PathVariable String id
173+
) {
174+
Member actor = rq.getActorFromDb();
175+
memberService.modifyItem(actor, Integer.parseInt(id));
176+
177+
return ResponseEntity
178+
.status(HttpStatus.OK)
179+
.body(new ApiResponse<>(
180+
"200",
181+
"[Member] Success: 아이템 장착"
182+
)
183+
);
184+
}
185+
186+
@PutMapping("/equip/title/{id}")
187+
@Operation(summary = "칭호 장착", description = "보유한 칭호 장착")
188+
public ResponseEntity<ApiResponse<Void>> equipTitle(
189+
@PathVariable String id
190+
) {
191+
Member actor = rq.getActorFromDb();
192+
memberService.modifyTitle(actor, Integer.parseInt(id));
193+
194+
return ResponseEntity
195+
.status(HttpStatus.OK)
196+
.body(new ApiResponse<>(
197+
"200",
198+
"[Member] Success: 칭호 장착"
199+
)
200+
);
201+
}
202+
169203
@DeleteMapping("/delete")
170204
@Operation(summary = "회원 탈퇴", description = "회원 탈퇴")
171205
public ResponseEntity<ApiResponse<Void>> delete() {

backend/src/main/java/com/back/domain/member/service/MemberService.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package com.back.domain.member.service;
22

3+
import com.back.domain.item.entity.Item;
4+
import com.back.domain.item.repository.ItemRepository;
35
import com.back.domain.member.entity.Member;
46
import com.back.domain.member.entity.MemberGender;
57
import com.back.domain.member.repository.MemberRepository;
8+
import com.back.domain.title.entity.Title;
9+
import com.back.domain.title.repository.TitleRepository;
610
import com.back.global.exception.CustomException;
711
import com.back.global.exception.ErrorCode;
812
import lombok.RequiredArgsConstructor;
@@ -19,9 +23,11 @@
1923
@RequiredArgsConstructor
2024
@Transactional
2125
public class MemberService {
26+
private final PasswordEncoder passwordEncoder;
2227
private final AuthService authService;
2328
private final MemberRepository memberRepository;
24-
private final PasswordEncoder passwordEncoder;
29+
private final ItemRepository itemRepository;
30+
private final TitleRepository titleRepository;
2531

2632
//가입 (일반)
2733
public Member signup(
@@ -114,6 +120,18 @@ public void modifyStatus(
114120
member.setMoney(money);
115121
}
116122

123+
public void modifyItem(Member member, int id) {
124+
Item item = itemRepository.findById(id)
125+
.orElseThrow(() -> new CustomException(ErrorCode.NOT_FOUND, "[Member] Fail: 존재하지 않는 아이템"));
126+
member.setItem(item);
127+
}
128+
129+
public void modifyTitle(Member member, int id) {
130+
Title title = titleRepository.findById(id)
131+
.orElseThrow(() -> new CustomException(ErrorCode.NOT_FOUND, "[Member] Fail: 존재하지 않는 칭호"));
132+
member.setTitle(title);
133+
}
134+
117135
// *** Find 메서드 ***
118136
public Optional<Member> findById(int id) {
119137
return memberRepository.findById(id);

0 commit comments

Comments
 (0)