diff --git a/src/main/java/cmf/commitField/domain/noti/noti/controller/ApiV1NotiController.java b/src/main/java/cmf/commitField/domain/noti/noti/controller/ApiV1NotiController.java index 8b90f39..dfcaad5 100644 --- a/src/main/java/cmf/commitField/domain/noti/noti/controller/ApiV1NotiController.java +++ b/src/main/java/cmf/commitField/domain/noti/noti/controller/ApiV1NotiController.java @@ -32,7 +32,6 @@ public class ApiV1NotiController { private final NotiService notiService; private final UserService userService; - @GetMapping("") public GlobalResponse> getNoti(@AuthenticationPrincipal OAuth2User oAuth2User) { String username = oAuth2User.getName(); diff --git a/src/main/java/cmf/commitField/domain/pet/controller/PetController.java b/src/main/java/cmf/commitField/domain/pet/controller/PetController.java index dcf649a..adc14c2 100644 --- a/src/main/java/cmf/commitField/domain/pet/controller/PetController.java +++ b/src/main/java/cmf/commitField/domain/pet/controller/PetController.java @@ -21,6 +21,15 @@ public class PetController { private final CustomOAuth2UserService userService; private final PetService petService; + // 현재 펫 경험치 상승 및 상승 시 레벨업 처리 + @GetMapping("/getall") + public ResponseEntity> getUserPets(@AuthenticationPrincipal CustomOAuth2User oAuth2User){ + String username = oAuth2User.getName(); // CustomOAuth2User의 getName()은 user.getUsername()을 반환 + + List userPetDto = petService.getAllPets(username); + return ResponseEntity.ok(userPetDto); + } + // 현재 펫 경험치 상승 및 상승 시 레벨업 처리 @GetMapping("/exp") public ResponseEntity getPetExp(@AuthenticationPrincipal CustomOAuth2User oAuth2User){ @@ -31,13 +40,6 @@ public ResponseEntity getPetExp(@AuthenticationPrincipal CustomOAuth return ResponseEntity.ok(userPetDto); } - @GetMapping("/getall") - public ResponseEntity> getUserAllPets(@AuthenticationPrincipal CustomOAuth2User oAuth2User){ - String username = oAuth2User.getName(); - List userPetDto = petService.getAllPets(username); - return ResponseEntity.ok(userPetDto); - } - // ************************************* // TODO : 아래는 확장 기능, 추가 시 개선 필요 // ************************************* @@ -54,11 +56,6 @@ public ResponseEntity createPet(@AuthenticationPrincipal CustomOAuth2User o return ResponseEntity.ok(pet); } - // 모든 펫 조회 - @GetMapping - public List getAllPets() { - return petService.getAllPets(); - } // 특정 펫 조회 @GetMapping("/{petId}") diff --git a/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java b/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java index d8f56f2..3714d17 100644 --- a/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java +++ b/src/main/java/cmf/commitField/domain/pet/controller/UserPetController.java @@ -1,22 +1,20 @@ package cmf.commitField.domain.pet.controller; -import cmf.commitField.domain.pet.entity.Pet; +import cmf.commitField.domain.pet.dto.UserPetListDto; import cmf.commitField.domain.pet.service.PetService; import cmf.commitField.domain.pet.service.UserPetService; -import cmf.commitField.domain.user.entity.User; +import cmf.commitField.domain.user.entity.CustomOAuth2User; import cmf.commitField.domain.user.service.CustomOAuth2UserService; -import cmf.commitField.global.globalDto.GlobalResponse; import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - @RestController -@RequestMapping("/user-pets") +@RequestMapping("/api/user/") @RequiredArgsConstructor public class UserPetController { @@ -24,11 +22,11 @@ public class UserPetController { private final CustomOAuth2UserService customOAuth2UserService; private final PetService petService; - // TODO: 기능 확장시 추가 예정 // 유저의 도감 조회 (보유한 펫 목록) - @GetMapping("/collection/{userId}") - public GlobalResponse> getUserPetCollection(@PathVariable Long userId) { - User user = customOAuth2UserService.getUserById(userId).orElse(null); - return GlobalResponse.success(userPetService.getUserPetCollection(user)); + @GetMapping("/collection") + public ResponseEntity getUserPetCollection(@AuthenticationPrincipal CustomOAuth2User oAuth2User) { + String username = oAuth2User.getName(); + UserPetListDto userPetListDto = petService.getUserCollection(username); + return ResponseEntity.ok(userPetListDto); } } \ No newline at end of file diff --git a/src/main/java/cmf/commitField/domain/pet/dto/UserPetDto.java b/src/main/java/cmf/commitField/domain/pet/dto/UserPetDto.java index 55c456b..42481f3 100644 --- a/src/main/java/cmf/commitField/domain/pet/dto/UserPetDto.java +++ b/src/main/java/cmf/commitField/domain/pet/dto/UserPetDto.java @@ -14,5 +14,6 @@ public class UserPetDto { private long petId; private String petName; private String grow; + private int type; private long exp; } diff --git a/src/main/java/cmf/commitField/domain/pet/dto/UserPetListDto.java b/src/main/java/cmf/commitField/domain/pet/dto/UserPetListDto.java new file mode 100644 index 0000000..e724a50 --- /dev/null +++ b/src/main/java/cmf/commitField/domain/pet/dto/UserPetListDto.java @@ -0,0 +1,17 @@ +package cmf.commitField.domain.pet.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.Map; + +@Builder +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class UserPetListDto { + private String username; + private Map petList; // 아이디, 소유 갯수 +} \ No newline at end of file diff --git a/src/main/java/cmf/commitField/domain/pet/service/PetService.java b/src/main/java/cmf/commitField/domain/pet/service/PetService.java index de1cc6f..e1fb2d0 100644 --- a/src/main/java/cmf/commitField/domain/pet/service/PetService.java +++ b/src/main/java/cmf/commitField/domain/pet/service/PetService.java @@ -2,6 +2,7 @@ import cmf.commitField.domain.pet.dto.PetsDto; import cmf.commitField.domain.pet.dto.UserPetDto; +import cmf.commitField.domain.pet.dto.UserPetListDto; import cmf.commitField.domain.pet.entity.Pet; import cmf.commitField.domain.pet.entity.PetGrow; import cmf.commitField.domain.pet.repository.PetRepository; @@ -13,10 +14,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Random; +import java.util.*; @Service @RequiredArgsConstructor @@ -37,9 +35,26 @@ public Pet createPet(String petname, String username) throws IOException { return petRepository.save(newPet); } - // 모든 펫 조회 - public List getAllPets() { - return petRepository.findAll(); + // 유저가 소유한 펫 도감 조회 + public UserPetListDto getUserCollection(String username) { + List pets = petRepository.findByUserUsername(username); + int[] petsNum = new int[100]; //FIXME: 차후 갯수 수정 필요 + int max = 0; + Map petList = new HashMap<>(); + for(Pet pet : pets){ + int type = pet.getType(); + petsNum[type]++; + if(max