Skip to content

Commit 420ab80

Browse files
committed
feat: 유저 펫 조회 api 추가
1 parent d79764e commit 420ab80

File tree

5 files changed

+49
-25
lines changed

5 files changed

+49
-25
lines changed

src/main/java/cmf/commitField/domain/noti/noti/controller/ApiV1NotiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
public class ApiV1NotiController {
3131
private final NotiService notiService;
3232
private final UserRepository userRepository;
33-
private final NotiWebSocketHandler notiWebSocketHandler;
33+
// private final NotiWebSocketHandler notiWebSocketHandler;
3434
private final ApplicationEventPublisher eventPublisher;
3535

3636
@GetMapping("")

src/main/java/cmf/commitField/domain/pet/controller/PetController.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
import org.springframework.web.bind.annotation.*;
1414
import org.springframework.web.multipart.MultipartFile;
1515

16-
import java.util.List;
17-
1816
@RestController
1917
@RequiredArgsConstructor
2018
@RequestMapping("/api/pets")
@@ -47,11 +45,6 @@ public Pet createPet(
4745
return petService.createPet(name, imageFile, user);
4846
}
4947

50-
// 모든 펫 조회
51-
@GetMapping
52-
public List<Pet> getAllPets() {
53-
return petService.getAllPets();
54-
}
5548

5649
// 특정 펫 조회
5750
@GetMapping("/{petId}")
Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
11
package cmf.commitField.domain.pet.controller;
22

33

4-
import cmf.commitField.domain.pet.entity.Pet;
4+
import cmf.commitField.domain.pet.dto.UserPetListDto;
55
import cmf.commitField.domain.pet.service.PetService;
66
import cmf.commitField.domain.pet.service.UserPetService;
7-
import cmf.commitField.domain.user.entity.User;
7+
import cmf.commitField.domain.user.entity.CustomOAuth2User;
88
import cmf.commitField.domain.user.service.CustomOAuth2UserService;
9-
import cmf.commitField.global.globalDto.GlobalResponse;
109
import lombok.RequiredArgsConstructor;
10+
import org.springframework.http.ResponseEntity;
11+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
1112
import org.springframework.web.bind.annotation.GetMapping;
12-
import org.springframework.web.bind.annotation.PathVariable;
1313
import org.springframework.web.bind.annotation.RequestMapping;
1414
import org.springframework.web.bind.annotation.RestController;
1515

16-
import java.util.List;
17-
1816
@RestController
1917
@RequestMapping("/user-pets")
2018
@RequiredArgsConstructor
@@ -24,11 +22,11 @@ public class UserPetController {
2422
private final CustomOAuth2UserService customOAuth2UserService;
2523
private final PetService petService;
2624

27-
// TODO: 기능 확장시 추가 예정
2825
// 유저의 도감 조회 (보유한 펫 목록)
29-
@GetMapping("/collection/{userId}")
30-
public GlobalResponse<List<Pet>> getUserPetCollection(@PathVariable Long userId) {
31-
User user = customOAuth2UserService.getUserById(userId).orElse(null);
32-
return GlobalResponse.success(userPetService.getUserPetCollection(user));
26+
@GetMapping("/collection")
27+
public ResponseEntity<UserPetListDto> getUserPetCollection(@AuthenticationPrincipal CustomOAuth2User oAuth2User) {
28+
String username = oAuth2User.getName();
29+
UserPetListDto userPetListDto = petService.getAllPets(username);
30+
return ResponseEntity.ok(userPetListDto);
3331
}
3432
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package cmf.commitField.domain.pet.dto;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
8+
import java.util.Map;
9+
10+
@Builder
11+
@Getter
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
public class UserPetListDto {
15+
private String username;
16+
private Map<Integer, Integer> petList; // 아이디, 소유 갯수
17+
}

src/main/java/cmf/commitField/domain/pet/service/PetService.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cmf.commitField.domain.pet.service;
22

33
import cmf.commitField.domain.pet.dto.UserPetDto;
4+
import cmf.commitField.domain.pet.dto.UserPetListDto;
45
import cmf.commitField.domain.pet.entity.Pet;
56
import cmf.commitField.domain.pet.entity.PetGrow;
67
import cmf.commitField.domain.pet.repository.PetRepository;
@@ -13,9 +14,7 @@
1314
import org.springframework.web.multipart.MultipartFile;
1415

1516
import java.io.IOException;
16-
import java.util.List;
17-
import java.util.Optional;
18-
import java.util.Random;
17+
import java.util.*;
1918

2019
@Service
2120
@RequiredArgsConstructor
@@ -37,9 +36,26 @@ public Pet createPet(String name, MultipartFile imageFile, User user) throws IOE
3736
return petRepository.save(pet);
3837
}
3938

40-
// 모든 펫 조회
41-
public List<Pet> getAllPets() {
42-
return petRepository.findAll();
39+
// 유저가 소유한 펫 조회
40+
public UserPetListDto getAllPets(String username) {
41+
List<Pet> pets = petRepository.findByUserUsername(username);
42+
int[] petsNum = new int[100]; //FIXME: 차후 갯수 수정 필요
43+
int max = 0;
44+
Map<Integer, Integer> petList = new HashMap<>();
45+
for(Pet pet : pets){
46+
int type = pet.getType();
47+
petsNum[type]++;
48+
if(max<type) max = type;
49+
}
50+
51+
for(int i=0;i<=max;i++){
52+
petList.put(i, petsNum[i]);
53+
}
54+
55+
return UserPetListDto.builder().
56+
username(username).
57+
petList(petList).
58+
build();
4359
}
4460

4561
// 특정 펫 조회

0 commit comments

Comments
 (0)